@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,35 @@
1
+ # Custom RIOglyph icon
2
+
3
+ *Category:* Getting started
4
+ *Section:* Guidelines
5
+ *Source:* https://uikit.developers.rio.cloud/#start/guidelines/custom-rioglyph
6
+ *Captured:* 2025-12-12T14:20:04.635Z
7
+
8
+ To use a custom Rioglyph icon, there are two different approaches:
9
+
10
+ ## Custom RIOglyph icon
11
+
12
+ 1. Use an inline style with a CSS variable
13
+ 2. Define a CSS class that applies an SVG as a mask-image
14
+
15
+ Below is an example of both approaches:
16
+
17
+ **Approach 1: Inline style**
18
+
19
+ ```html
20
+ <span class="rioglyph" style="--i: url(https://cdn.rio.cloud/images/uikit/react_logo.svg);"></span>
21
+ ```
22
+
23
+ **Approach 2: Custom CSS class**
24
+
25
+ ```html
26
+ <style>
27
+ .rioglyph-custom-xxx {
28
+ --i: url('https://cdn.rio.cloud/images/uikit/react_logo.svg');
29
+ }
30
+ </style>
31
+ ```
32
+
33
+ ```html
34
+ <span class="rioglyph rioglyph-custom"></span>
35
+ ```
@@ -0,0 +1,587 @@
1
+ # Formatting guide
2
+
3
+ *Category:* Getting started
4
+ *Section:* Guidelines
5
+ *Source:* https://uikit.developers.rio.cloud/#start/guidelines/formatting
6
+ *Captured:* 2025-12-12T14:20:06.278Z
7
+
8
+ Having a common date formatting guide is crucial to ensure consistency, clarity, and accuracy in documentation, making it easier to understand and interpret dates correctly across different contexts.
9
+
10
+ ## Formatting guide
11
+
12
+ ## Here's what you will find in the formatting guide
13
+
14
+ - Date formats
15
+ - Date formats overview If nothing else is specified use the default date format: YYYY-MM-DD Avoid the American date format: MM/DD/YYYY Use the Intl.DateTimeFormat to format dates for all locales Date and time format Format durations Formatting dates for headlines and sections Relative date and time Time format including timezones
16
+ - Number formats
17
+ - Number formats overview Omit unused or meaningless decimals Formatting numbers with units
18
+
19
+ - Date formats overview
20
+ - If nothing else is specified use the default date format: YYYY-MM-DD
21
+ - Avoid the American date format: MM/DD/YYYY
22
+ - Use the Intl.DateTimeFormat to format dates for all locales
23
+ - Date and time format
24
+ - Format durations
25
+ - Formatting dates for headlines and sections
26
+ - Relative date and time
27
+ - Time format including timezones
28
+
29
+ - Number formats overview
30
+ - Omit unused or meaningless decimals
31
+ - Formatting numbers with units
32
+
33
+ ## Date formats
34
+
35
+ ## Date formats overview
36
+
37
+ This is a list of all supported langues and their respective date format showcasing also similar locales sharing the same format.
38
+
39
+ ## If nothing else is specified use the default date format: YYYY-MM-DD
40
+
41
+ This format is defined in the ISO 8601 standard, which is maintained by the International Organization for Standardization (ISO). It's widely used for data exchange and communication because it:
42
+
43
+ - Sorts chronologically: Dates appear in order when sorted alphabetically (e.g., 2023-12-31 comes before 2024-01-01).
44
+ - Avoids ambiguity: The clear separation between year, month, and day eliminates confusion, especially when dealing with different cultural date order preferences.
45
+
46
+ While some countries have their own preferred date formats for everyday use, YYYY-MM-DD is often the chosen format for:
47
+
48
+ - International communication
49
+ - Data storage and exchange
50
+ - Software applications
51
+
52
+ In the table above, Swedish (sv-SE) is the only locale listed that uses YYYY-MM-DD as the standard format. However, the international nature of the internet and technology has made YYYY-MM-DD increasingly familiar in many regions.
53
+
54
+ If nothing else is specified use the default date format otherwise use the date format according the selected locale.
55
+
56
+ ## Avoid the American date format: MM/DD/YYYY
57
+
58
+ While there's nothing inherently wrong with the American date format (MM/DD/YYYY), it's recommended to avoid it as the default for the following reasons:
59
+
60
+ - Non-standard: It's not the international standard format defined by ISO 8601 (YYYY-MM-DD). This can lead to confusion and potential errors when exchanging data or collaborating with international teams.
61
+ - Ambiguity: MM/DD/YYYY can be misinterpreted, especially when dealing with unfamiliar dates. For example, 05/07/2024 could be May 7th or July 5th.
62
+ - Sorting Issues: Dates in MM/DD/YYYY format don't sort chronologically by default. This can be problematic when handling lists or data sets involving dates.
63
+ - Limited Reach: The American date format is primarily used in the United States, Canada, and a few other countries. Using a more widely recognized format like YYYY-MM-DD promotes better international understanding.
64
+
65
+ **Hint for Date Pickers**
66
+
67
+ Be aware that some date picker components might default to the American format (MM/DD/YYYY) if no locale is explicitly defined. Double-check your date picker's settings to ensure it aligns with these guidelines.
68
+
69
+ ## Use the Intl.DateTimeFormat to format dates for all locales
70
+
71
+ When formatting dates in React applications, you have two choices:
72
+
73
+ - Vanilla Intl.DateTimeFormat: Use the standard function.
74
+ - ReactIntl (recommended): Utilize ReactIntl's formatDate function or the FormattedDate component for a more convenient and potentially reusable approach.
75
+
76
+ Regardless of the chosen method (direct function or ReactIntl), you'll have access to the same set of formatting options for customizing the date output with Intl.DateTimeFormat.
77
+
78
+ The default date and time format for the default locale "en-GB" looks like this: 27/05/2024
79
+
80
+ ```jsx
81
+ <FormattedDate value={new Date()} year='numeric' month='2-digit' day='2-digit' />
82
+ ```
83
+
84
+ ```javascript
85
+ const formatDate = (date, locale) => {
86
+ const options = {
87
+ year: 'numeric',
88
+ month: '2-digit',
89
+ day: '2-digit'
90
+ };
91
+
92
+ const formatter = new Intl.DateTimeFormat(locale, options);
93
+ return formatter.format(date);
94
+ }
95
+
96
+ const locales = [
97
+ 'bg-BG', 'cs-CZ', 'da-DK', 'el-GR', 'es-ES', 'et-EE', 'fi-FI', 'fr-FR',
98
+ 'hr-HR', 'hu-HU', 'it-IT', 'lt-LT', 'lv-LV', 'nb-NO', 'nl-NL', 'pl-PL',
99
+ 'pt-PT', 'ro-RO', 'sk-SK', 'sl-SI', 'sv-SE', 'de-DE', 'pt-BR', 'en-GB'
100
+ ];
101
+
102
+ const today = new Date();
103
+
104
+ locales.forEach(locale => {
105
+ const formattedDate = formatDate(today, locale);
106
+ console.log(`Locale: ${locale}, Formatted date: ${formattedDate}`);
107
+ });
108
+ ```
109
+
110
+ **Formatting a date range**
111
+
112
+ For formatting a time range use the ReactIntl FormattedDateTimeRange component. Note that for dates in headlines or in sections, there is a dedicated format rule listed below.
113
+
114
+ ```jsx
115
+ () => {
116
+ const yesterday = new Date();
117
+ yesterday.setDate(new Date().getDate() - 1);
118
+
119
+ return <FormattedDateTimeRange from={yesterday} to={new Date()} />;
120
+ })
121
+ ```
122
+
123
+ ## Date and time format
124
+
125
+ None of the mentioned locales use a 12-hour format by default according to common usage. Here's a breakdown:
126
+
127
+ - All the listed locales (including en-GB) typically use the 24-hour format for displaying time.
128
+ - While some countries might use a 12-hour format in informal contexts, the 24-hour format is generally preferred for official communication and technical applications.
129
+
130
+ The default date and time format looks like this: 27/05/2024, 11:17
131
+
132
+ ```jsx
133
+ <FormattedDate value={new Date()} year='numeric' month='2-digit' day='2-digit' hour='2-digit' minute='2-digit' />
134
+ ```
135
+
136
+ ```javascript
137
+ const formatDateTime = (date, locale) => {
138
+ const options = {
139
+ year: 'numeric',
140
+ month: '2-digit',
141
+ day: '2-digit',
142
+ hour: '2-digit',
143
+ minute: '2-digit'
144
+ };
145
+
146
+ const dateTimeFormatter = new Intl.DateTimeFormat(locale, options);
147
+ return dateTimeFormatter.format(date);
148
+ }
149
+
150
+ const locales = [
151
+ 'bg-BG', 'cs-CZ', 'da-DK', 'el-GR', 'es-ES', 'et-EE', 'fi-FI', 'fr-FR',
152
+ 'hr-HR', 'hu-HU', 'it-IT', 'lt-LT', 'lv-LV', 'nb-NO', 'nl-NL', 'pl-PL',
153
+ 'pt-PT', 'ro-RO', 'sk-SK', 'sl-SI', 'sv-SE', 'de-DE', 'pt-BR', 'en-GB'
154
+ ];
155
+
156
+ const today = new Date();
157
+
158
+ locales.forEach(locale => {
159
+ const formattedDateTime = formatDateTime(today, locale);
160
+ console.log(`Locale: ${locale}, Formatted date time: ${formattedDateTime}`);
161
+ });
162
+ ```
163
+
164
+ ## Formatting dates for headlines and sections
165
+
166
+ When formatting a date or a date range for a headline or a section, use the following format including the weekday if it's not today. If the date is today, add the word "today" instead of the weekday.
167
+
168
+ - Today, 24 May 2024
169
+ - Thursday, 23 May 2024
170
+ - 12 Feb - 16 Feb 2024
171
+
172
+ ```jsx
173
+ () => {
174
+ const yesterday = new Date();
175
+ yesterday.setDate(new Date().getDate() - 1);
176
+
177
+ return (
178
+ <>
179
+ {'Today, '}
180
+ <FormattedDate value={new Date()} year='numeric' month='short' day='numeric' />
181
+ <br />
182
+ <FormattedDate value={yesterday} year='numeric' month='short' day='numeric' weekday='long' />
183
+ </>
184
+ );
185
+ })
186
+ ```
187
+
188
+ ```javascript
189
+ function formatDateWithWeekday(date) {
190
+ const today = new Date();
191
+ const isToday =
192
+ today.getDate() === date.getDate() &&
193
+ today.getMonth() === date.getMonth() &&
194
+ today.getFullYear() === date.getFullYear();
195
+
196
+ const options = {
197
+ day: 'numeric',
198
+ month: 'short',
199
+ year: 'numeric',
200
+ weekday: isToday ? undefined : 'long',
201
+ };
202
+
203
+ const dateTimeFormatter = new Intl.DateTimeFormat('en-GB', options);
204
+ return isToday ? `Today, ${dateTimeFormatter.format(date)}` : dateTimeFormatter.format(date);
205
+ }
206
+
207
+ // Example for today
208
+ const today = new Date();
209
+ const formattedDate = formatDateWithWeekday(today);
210
+ console.log(formattedDate);
211
+
212
+ // Example for yesterday
213
+ const yesterday = new Date();
214
+ yesterday.setDate(today.getDate() - 1); // Subtract 1 day from today
215
+ const formattedDateYesterday = formatDateWithWeekday(yesterday);
216
+ console.log(formattedDateYesterday);
217
+ ```
218
+
219
+ **Formatting a date range for headlines**
220
+
221
+ When the date rage has the same year for both dates, omit the year for the first date so it looks like this: 27 May - 28 May 2024
222
+
223
+ ```jsx
224
+ () => {
225
+ const yesterday = new Date();
226
+ yesterday.setDate(new Date().getDate() - 1);
227
+
228
+ return (
229
+ <>
230
+ <FormattedDate value={yesterday} month='short' day='numeric' />
231
+ {' - '}
232
+ <FormattedDate value={new Date()} year='numeric' month='short' day='numeric' />
233
+ </>
234
+ );
235
+ })
236
+ ```
237
+
238
+ ```javascript
239
+ function formatDateRange(startDate, endDate) {
240
+ if (!(startDate instanceof Date) || !(endDate instanceof Date)) {
241
+ throw new Error("Invalid input. Please provide valid Date objects.");
242
+ }
243
+
244
+ const startDateFormatter = new Intl.DateTimeFormat('en-GB', {
245
+ day: 'numeric',
246
+ month: 'short'
247
+ });
248
+
249
+ const endDateFormatter = new Intl.DateTimeFormat('en-GB', {
250
+ day: 'numeric',
251
+ month: 'short',
252
+ year: 'numeric'
253
+ });
254
+
255
+ const formattedStartDate = startDateFormatter.format(startDate);
256
+ const formattedEndDate = endDateFormatter.format(endDate);
257
+
258
+ return `${formattedStartDate} - ${formattedEndDate}`;
259
+ }
260
+
261
+ // Example usage
262
+ const startDate = new Date(2024, 1, 12); // Feb 12, 2024
263
+ const endDate = new Date(2024, 1, 16); // Feb 16, 2024
264
+
265
+ const formattedRange = formatDateRange(startDate, endDate);
266
+ console.log("Formatted Date Range:", formattedRange);
267
+ ```
268
+
269
+ ## Format durations
270
+
271
+ Use relative date and time formatting to help the understand quickly when an event happened or when a message has been sent:
272
+
273
+ - 3 days
274
+ - 2h 32min
275
+ - 45min
276
+
277
+ Best for: Short durations where hours and minutes are the most relevant unit.
278
+
279
+ - 3d
280
+ - 3m 20s
281
+ - 10s
282
+
283
+ Best for: When space is limited, and clarity is still maintained. Example: In a compact playlist view displaying track lengths.
284
+
285
+ ```jsx
286
+ <FormattedNumber value={2} />h <FormattedNumber value={45} />min
287
+ ```
288
+
289
+ ## Relative date and time
290
+
291
+ - "5 minutes ago"
292
+ - "1 month ago"
293
+ - "7 days ago"
294
+ - "In 2 hours"
295
+ - "Now" or "Just now" (for events within the last minute)
296
+
297
+ - Displaying when a notification arrived or a message was sent
298
+ - Counting down to an upcoming event
299
+ - Indicating how recently an item was updated
300
+ - Benefits
301
+ - Clear and concise for recent events Easy for users to understand the time difference
302
+
303
+ - Clear and concise for recent events
304
+ - Easy for users to understand the time difference
305
+
306
+ Using a relative time is simple by using the ReactIntl FormattedRelativeTime component.
307
+
308
+ Example: now
309
+
310
+ ```jsx
311
+ <FormattedRelativeTime value={0} numeric='auto' updateIntervalInSeconds={1} />
312
+ ```
313
+
314
+ - "Yesterday"
315
+ - "Yesterday, 10:39"
316
+ - "Today, 12:17"
317
+ - "Tomorrow"
318
+ - "Last week"
319
+ - "Next Friday"
320
+ - "In 3 days"
321
+
322
+ - Displaying upcoming or past calendar events
323
+ - Highlighting recent activity within a timeframe (e.g., "Top posts from the past week")
324
+ - Providing deadlines or due dates in a user-friendly way
325
+ - Benefits
326
+ - Intuitive understanding for users familiar with common timeframes Reduces mental calculations for interpreting absolute dates
327
+
328
+ - Intuitive understanding for users familiar with common timeframes
329
+ - Reduces mental calculations for interpreting absolute dates
330
+
331
+ The choice between relative and absolute formats depends on the context and desired level of precision:
332
+
333
+ - Use relative formats: When the time difference or date proximity is more important than the exact timestamp. Example: "Your flight departs in 2 hours" is more relevant than "Your flight departs at 14:30".
334
+ - Use absolute formats: When precise timestamps are crucial, or for long time spans where relative terms become ambiguous.
335
+
336
+ Example for an upcoming event using ReactIntl: In 3 Days
337
+
338
+ ```jsx
339
+ <FormattedRelativeTime value={0} numeric='auto' updateIntervalInSeconds={1} />
340
+ ```
341
+
342
+ - Locale and cultural context: Relative terms like "yesterday" or "next week" might vary across languages and cultures. Consider user locale when implementing these formats.
343
+ - Level of detail: You might need to adjust the granularity of relative formats. For example, "3 weeks ago" might be more appropriate than "21 days ago" depending on the context.
344
+
345
+ ## Time format including timezones
346
+
347
+ **Understanding time zones can be challenging**
348
+
349
+ While time zones are essential for global coordination, navigating them can be complex. Most users naturally think and schedule their activities in their local time zone. Concepts like Coordinated Universal Time (UTC) and daylight saving time (DST) can add layers of complexity.
350
+
351
+ This table lists the main timezones used across Europe, including their standard times and any daylight saving times. Note that some regions do not observe daylight saving time.
352
+
353
+ Studies show that users think in their local time - users often don’t think about UTC at all. Nor do they understand time zones, or the difference between UTC and GMT, or when and where daylight saving times are. But GMT is a more familiar time standard than UTC (even though UTC is the correct time standard). Since the UTC and GMT have the same offset and is widely more common in user interfaces, it is recommended to show GTM to the user instead of UTC.
354
+
355
+ For optimal clarity and consistency, it's best to display time zone offsets like GMT+1:00 without a blank space before the "+" symbol.
356
+
357
+ **Prioritize the user's local time**
358
+
359
+ To simplify the user's experience, we prioritize displaying times in your local time zone. This eliminates the need for manual conversions or deciphering time zone differences.
360
+
361
+ **Time zone transparency**
362
+
363
+ While we present times in the user's local time zone by default, we understand the importance of transparency. If needed, you can display information regarding the corresponding GMT time.
364
+
365
+ - Primary display: Show times in the user's local timezone for ease of use
366
+ - Secondary display: Include the GMT offset in smaller text or tooltips to provide additional context
367
+
368
+ **Total duration matters**
369
+
370
+ For situations with multiple locations and time zones, providing a clear "total travel time" or "duration" alongside the individual departure and arrival times is incredibly helpful. This provides a comprehensive picture of the overall journey, just like the best travel itineraries do.
371
+
372
+ **Event-Based timezones**
373
+
374
+ For events, show both the local time and the event's original timezone. For example, "Meeting scheduled for 15:00 (CEST) / 16:00 (EEST)
375
+
376
+ **Localizing time displays for various European countries**
377
+
378
+ When localizing time displays for German-speaking users, remember to append the term "Uhr" (with a blank separator) after the hour when displaying times in a 24-hour format to ensure accurate and culturally appropriate representation.
379
+
380
+ This table provides a comprehensive overview of how to handle time display formats across various European countries, ensuring localized and accurate time representations.
381
+
382
+ - Constitution Day 23/05/2024, 3 days ago
383
+ - Assumption Day 15/08/2024, in 64 days
384
+
385
+ ## Number formats
386
+
387
+ ## Number formats overview
388
+
389
+ This is a list of all supported langues and their respective country, decimal separator, thousand separator, and an example of a formatted number.
390
+
391
+ **Best practices for number formatting**
392
+
393
+ - Locale awareness Always format numbers based on the user’s locale settings to ensure familiarity and reduce errors
394
+ - Consistent use of delimiters Ensure the consistent use of decimal and thousand separators as per the locale’s conventions
395
+ - Handling edge cases Be aware of edge cases like negative numbers, very large numbers, and numbers with many decimal places
396
+ - Use libraries Utilize libraries like ReactIntl to handle number formatting, which provides built-in support for multiple locales and ensures correctness
397
+
398
+ ```jsx
399
+ const NumberFormattingExample = () => {
400
+ const number = 1234567.89;
401
+
402
+ return (
403
+ <IntlProvider locale="de-DE">
404
+ <FormattedNumber value={number} />
405
+ </IntlProvider>
406
+ );
407
+ };
408
+ ```
409
+
410
+ In this example, the number 1234567.89 will be formatted as 1.234.567,89 in the German locale.
411
+
412
+ ## Omit unused or meaningless decimals
413
+
414
+ When displaying numbers with units, it's often more readable and professional to omit unnecessary trailing zeros in decimal places. For instance, displaying "123 km" instead of "123.0 km" when the value is a whole number.
415
+
416
+ Additionally, decimals should be omitted in cases where they do not add meaningful information, such as in a fuel level "74,87 %".
417
+
418
+ ```jsx
419
+ <FormattedNumber
420
+ value={123.0}
421
+ minimumFractionDigits={0}
422
+ maximumFractionDigits={2}
423
+ style='unit'
424
+ unit='kilometer'
425
+ />
426
+ ```
427
+
428
+ > 123 km 1,234 km Fuel level: 75%
429
+
430
+ > 123.0 km 1234.0 km Fuel level: 74,87 %
431
+
432
+ ## Formatting numbers with units
433
+
434
+ ReactIntl also supports formatting units like currency, percentages, and other measurements. Here are some examples on how to format numbers with units.
435
+
436
+ * Note: kilowatt-hour and megawatt-hour are not yet supported byIntl.NumberFormat(). Please append the unit manually. For more details, see here
437
+
438
+ ```jsx
439
+ const NumberExample = () => {
440
+ const value = 1234.56;
441
+ return (
442
+ <table className='table table-condensed'>
443
+ <tbody>
444
+ <tr>
445
+ <td>Kilograms</td>
446
+ <td>
447
+ <FormattedNumber value={value} style='unit' unit='kilogram' />
448
+ </td>
449
+ </tr>
450
+ <tr>
451
+ <td>Kilometer</td>
452
+ <td>
453
+ <FormattedNumber value={value} style='unit' unit='kilometer' />
454
+ </td>
455
+ </tr>
456
+ <tr>
457
+ <td>Kilometer (long)</td>
458
+ <td>
459
+ <FormattedNumber value={value} style='unit' unit='kilometer' unitDisplay='long' />
460
+ </td>
461
+ </tr>
462
+ <tr>
463
+ <td>Meters</td>
464
+ <td>
465
+ <FormattedNumber value={value} style='unit' unit='meter' />
466
+ </td>
467
+ </tr>
468
+ <tr>
469
+ <td>Seconds (long)</td>
470
+ <td>
471
+ <FormattedNumber value={45} style='unit' unit='second' unitDisplay='long' />
472
+ </td>
473
+ </tr>
474
+ <tr>
475
+ <td>Minutes (long)</td>
476
+ <td>
477
+ <FormattedNumber value={12} style='unit' unit='minute' unitDisplay='long' />
478
+ </td>
479
+ </tr>
480
+ <tr>
481
+ <td>Centimeters</td>
482
+ <td>
483
+ <FormattedNumber value={34} style='unit' unit='centimeter' />
484
+ </td>
485
+ </tr>
486
+ <tr>
487
+ <td>Percent</td>
488
+ <td>
489
+ <FormattedNumber value={0.1234} style='percent' />
490
+ </td>
491
+ </tr>
492
+ <tr>
493
+ <td>Euro</td>
494
+ <td>
495
+ <FormattedNumber value={value} style='currency' currency='EUR' />
496
+ </td>
497
+ </tr>
498
+ <tr>
499
+ <td>Kilobyte</td>
500
+ <td>
501
+ <FormattedNumber value={1000} style='unit' unit='kilobyte' unitDisplay='narrow' />
502
+ </td>
503
+ </tr>
504
+ <tr>
505
+ <td>Celsius</td>
506
+ <td>
507
+ <FormattedNumber value={27} style='unit' unit='celsius' unitDisplay='narrow' />
508
+ </td>
509
+ </tr>
510
+ <tr>
511
+ <td>Duration</td>
512
+ <td>
513
+ <FormattedNumber value={2} />h <FormattedNumber value={45} />
514
+ min
515
+ </td>
516
+ </tr>
517
+ </tbody>
518
+ </table>
519
+ )
520
+ };
521
+ ```
522
+
523
+ In Germany, the correct unit format for kilogram is "kg" with a lowercase "k" and "g". It follows the international standard for unit symbols defined by the International System of Units (SI).
524
+
525
+ Here's an example of the correct usage:
526
+
527
+ - Correct: 1.234,56 kg
528
+ - Incorrect: 1.234,56 Kg
529
+
530
+ The unit symbol should always be in lowercase and a space should be used between the number and the unit symbol
531
+
532
+ > Note: When formatting durations in a short format, ReactIntl does not follow the more common style defined in the section "Format durations" especially for locales like de-DE. In this case we need to combine the FormattedNumber with a custom unit.
533
+
534
+ ```jsx
535
+ <FormattedNumber value={2} />h <FormattedNumber value={45} />min
536
+ ```
537
+
538
+ ```tsx
539
+ type FormattedDuration = {
540
+ hours?: number,
541
+ minutes?: number,
542
+ seconds?: number,
543
+ };
544
+
545
+ const FormattedDuration = ({ hours, minutes, seconds }) => {
546
+ const hasHours = hours > 0;
547
+ const hasMinutes = minutes > 0;
548
+ const hasSeconds = seconds > 0;
549
+
550
+ return (
551
+ <div>
552
+ {hasHours && (
553
+ <>
554
+ <FormattedNumber value={hours} />h
555
+ {hasMinutes && ' '}
556
+ </>
557
+ )}
558
+ {hasMinutes && (
559
+ <>
560
+ <FormattedNumber value={minutes} />min
561
+ {hasSeconds && ' '}
562
+ </>
563
+ )}
564
+ {hasSeconds && (
565
+ <>
566
+ <FormattedNumber value={seconds} />s
567
+ </>
568
+ )}
569
+ </div>
570
+ );
571
+ };
572
+
573
+ // Example Usage
574
+ const App = () => {
575
+ const duration1 = { hours: 8, minutes: 45 };
576
+ const duration2 = { hours: 0, minutes: 56 };
577
+ const duration3 = { hours: 1, minutes: 23 };
578
+
579
+ return (
580
+ <div>
581
+ <FormattedDuration {...duration1} />
582
+ <FormattedDuration {...duration2} />
583
+ <FormattedDuration {...duration3} />
584
+ </div>
585
+ );
586
+ };
587
+ ```