@rio-cloud/uikit-mcp 1.0.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 (198) hide show
  1. package/LICENSE +202 -0
  2. package/README.md +91 -0
  3. package/bin/uikit-mcp.mjs +23 -0
  4. package/data/pages/Components/components/accentbar.json +207 -0
  5. package/data/pages/Components/components/activity.json +87 -0
  6. package/data/pages/Components/components/animatednumber.json +99 -0
  7. package/data/pages/Components/components/animations.json +87 -0
  8. package/data/pages/Components/components/appheader.json +291 -0
  9. package/data/pages/Components/components/applayout.json +1198 -0
  10. package/data/pages/Components/components/appnavigationbar.json +327 -0
  11. package/data/pages/Components/components/areacharts.json +563 -0
  12. package/data/pages/Components/components/aspectratioplaceholder.json +75 -0
  13. package/data/pages/Components/components/assettree.json +3080 -0
  14. package/data/pages/Components/components/autosuggests.json +710 -0
  15. package/data/pages/Components/components/avatar.json +157 -0
  16. package/data/pages/Components/components/banner.json +599 -0
  17. package/data/pages/Components/components/barcharts.json +1507 -0
  18. package/data/pages/Components/components/barlist.json +223 -0
  19. package/data/pages/Components/components/basicmap.json +68 -0
  20. package/data/pages/Components/components/bottomsheet.json +601 -0
  21. package/data/pages/Components/components/button.json +583 -0
  22. package/data/pages/Components/components/buttontoolbar.json +63 -0
  23. package/data/pages/Components/components/calendarstripe.json +235 -0
  24. package/data/pages/Components/components/card.json +69 -0
  25. package/data/pages/Components/components/carousel.json +39 -0
  26. package/data/pages/Components/components/chartcolors.json +34 -0
  27. package/data/pages/Components/components/chartsgettingstarted.json +32 -0
  28. package/data/pages/Components/components/chat.json +39 -0
  29. package/data/pages/Components/components/checkbox.json +847 -0
  30. package/data/pages/Components/components/clearableinput.json +789 -0
  31. package/data/pages/Components/components/collapse.json +175 -0
  32. package/data/pages/Components/components/composedcharts.json +159 -0
  33. package/data/pages/Components/components/contentloader.json +233 -0
  34. package/data/pages/Components/components/datatabs.json +680 -0
  35. package/data/pages/Components/components/datepickers.json +287 -0
  36. package/data/pages/Components/components/dialogs.json +1492 -0
  37. package/data/pages/Components/components/divider.json +93 -0
  38. package/data/pages/Components/components/dropdowns.json +936 -0
  39. package/data/pages/Components/components/editablecontent.json +1117 -0
  40. package/data/pages/Components/components/expander.json +377 -0
  41. package/data/pages/Components/components/fade.json +403 -0
  42. package/data/pages/Components/components/fadeexpander.json +75 -0
  43. package/data/pages/Components/components/fadeup.json +127 -0
  44. package/data/pages/Components/components/feedback.json +269 -0
  45. package/data/pages/Components/components/filepickers.json +269 -0
  46. package/data/pages/Components/components/formlabel.json +115 -0
  47. package/data/pages/Components/components/fullscreenmap.json +22 -0
  48. package/data/pages/Components/components/groupeditemlist.json +323 -0
  49. package/data/pages/Components/components/iconlist.json +45 -0
  50. package/data/pages/Components/components/imagepreloader.json +81 -0
  51. package/data/pages/Components/components/labeledelement.json +75 -0
  52. package/data/pages/Components/components/licenseplate.json +69 -0
  53. package/data/pages/Components/components/linecharts.json +987 -0
  54. package/data/pages/Components/components/listmenu.json +313 -0
  55. package/data/pages/Components/components/loadmore.json +175 -0
  56. package/data/pages/Components/components/mainnavigation.json +39 -0
  57. package/data/pages/Components/components/mapcircle.json +34 -0
  58. package/data/pages/Components/components/mapcluster.json +51 -0
  59. package/data/pages/Components/components/mapcontext.json +105 -0
  60. package/data/pages/Components/components/mapdraggablemarker.json +34 -0
  61. package/data/pages/Components/components/mapgettingstarted.json +27 -0
  62. package/data/pages/Components/components/mapgroup.json +1198 -0
  63. package/data/pages/Components/components/mapinfobubble.json +34 -0
  64. package/data/pages/Components/components/maplayergroup.json +34 -0
  65. package/data/pages/Components/components/mapmarker.json +700 -0
  66. package/data/pages/Components/components/mappolygon.json +45 -0
  67. package/data/pages/Components/components/maproute.json +623 -0
  68. package/data/pages/Components/components/maproutegenerator.json +16 -0
  69. package/data/pages/Components/components/mapsettings.json +51 -0
  70. package/data/pages/Components/components/maputils.json +34 -0
  71. package/data/pages/Components/components/multiselects.json +1451 -0
  72. package/data/pages/Components/components/nodata.json +139 -0
  73. package/data/pages/Components/components/notifications.json +65 -0
  74. package/data/pages/Components/components/numbercontrol.json +301 -0
  75. package/data/pages/Components/components/onboarding.json +302 -0
  76. package/data/pages/Components/components/page.json +197 -0
  77. package/data/pages/Components/components/pager.json +93 -0
  78. package/data/pages/Components/components/piecharts.json +731 -0
  79. package/data/pages/Components/components/popover.json +251 -0
  80. package/data/pages/Components/components/position.json +69 -0
  81. package/data/pages/Components/components/radialbarcharts.json +1304 -0
  82. package/data/pages/Components/components/radiobutton.json +1105 -0
  83. package/data/pages/Components/components/releasenotes.json +44 -0
  84. package/data/pages/Components/components/resizer.json +93 -0
  85. package/data/pages/Components/components/responsivecolumnstripe.json +123 -0
  86. package/data/pages/Components/components/responsivevideo.json +75 -0
  87. package/data/pages/Components/components/rioglyph.json +93 -0
  88. package/data/pages/Components/components/rules.json +410 -0
  89. package/data/pages/Components/components/saveableinput.json +703 -0
  90. package/data/pages/Components/components/selects.json +701 -0
  91. package/data/pages/Components/components/sidebar.json +243 -0
  92. package/data/pages/Components/components/sliders.json +235 -0
  93. package/data/pages/Components/components/smoothscrollbars.json +335 -0
  94. package/data/pages/Components/components/spinners.json +343 -0
  95. package/data/pages/Components/components/states.json +1705 -0
  96. package/data/pages/Components/components/statswidgets.json +314 -0
  97. package/data/pages/Components/components/statusbar.json +177 -0
  98. package/data/pages/Components/components/stepbutton.json +57 -0
  99. package/data/pages/Components/components/steppedprogressbars.json +417 -0
  100. package/data/pages/Components/components/subnavigation.json +107 -0
  101. package/data/pages/Components/components/supportmarker.json +45 -0
  102. package/data/pages/Components/components/svgimage.json +81 -0
  103. package/data/pages/Components/components/switch.json +111 -0
  104. package/data/pages/Components/components/tables.json +144 -0
  105. package/data/pages/Components/components/tagmanager.json +86 -0
  106. package/data/pages/Components/components/tags.json +146 -0
  107. package/data/pages/Components/components/teaser.json +188 -0
  108. package/data/pages/Components/components/timeline.json +45 -0
  109. package/data/pages/Components/components/timepicker.json +163 -0
  110. package/data/pages/Components/components/togglebutton.json +247 -0
  111. package/data/pages/Components/components/tooltip.json +270 -0
  112. package/data/pages/Components/components/virtuallist.json +175 -0
  113. package/data/pages/Foundations/foundations.json +2475 -0
  114. package/data/pages/Getting-started/start/changelog.json +22 -0
  115. package/data/pages/Getting-started/start/goodtoknow.json +32 -0
  116. package/data/pages/Getting-started/start/guidelines/color-combinations.json +58 -0
  117. package/data/pages/Getting-started/start/guidelines/custom-css.json +27 -0
  118. package/data/pages/Getting-started/start/guidelines/custom-rioglyph.json +22 -0
  119. package/data/pages/Getting-started/start/guidelines/formatting.json +97 -0
  120. package/data/pages/Getting-started/start/guidelines/iframe.json +93 -0
  121. package/data/pages/Getting-started/start/guidelines/obfuscate-data.json +22 -0
  122. package/data/pages/Getting-started/start/guidelines/print-css.json +37 -0
  123. package/data/pages/Getting-started/start/guidelines/spinner.json +144 -0
  124. package/data/pages/Getting-started/start/guidelines/supported-browsers.json +22 -0
  125. package/data/pages/Getting-started/start/guidelines/writing.json +242 -0
  126. package/data/pages/Getting-started/start/howto.json +72 -0
  127. package/data/pages/Getting-started/start/intro.json +37 -0
  128. package/data/pages/Getting-started/start/responsiveness.json +52 -0
  129. package/data/pages/Templates/templates/common-table.json +39 -0
  130. package/data/pages/Templates/templates/detail-views.json +71 -0
  131. package/data/pages/Templates/templates/expandable-details.json +39 -0
  132. package/data/pages/Templates/templates/feature-cards.json +103 -0
  133. package/data/pages/Templates/templates/form-summary.json +39 -0
  134. package/data/pages/Templates/templates/form-toggle.json +39 -0
  135. package/data/pages/Templates/templates/list-blocks.json +119 -0
  136. package/data/pages/Templates/templates/loading-progress.json +39 -0
  137. package/data/pages/Templates/templates/options-panel.json +39 -0
  138. package/data/pages/Templates/templates/panel-variants.json +39 -0
  139. package/data/pages/Templates/templates/progress-cards.json +71 -0
  140. package/data/pages/Templates/templates/progress-success.json +39 -0
  141. package/data/pages/Templates/templates/settings-form.json +39 -0
  142. package/data/pages/Templates/templates/stats-blocks.json +135 -0
  143. package/data/pages/Templates/templates/table-panel.json +39 -0
  144. package/data/pages/Templates/templates/table-row-animation.json +39 -0
  145. package/data/pages/Templates/templates/usage-cards.json +39 -0
  146. package/data/pages/Utilities/utilities/deviceutils.json +39 -0
  147. package/data/pages/Utilities/utilities/featuretoggles.json +42 -0
  148. package/data/pages/Utilities/utilities/fueltypeutils.json +118 -0
  149. package/data/pages/Utilities/utilities/routeutils.json +34 -0
  150. package/data/pages/Utilities/utilities/useaftermount.json +63 -0
  151. package/data/pages/Utilities/utilities/useaverage.json +86 -0
  152. package/data/pages/Utilities/utilities/useclickoutside.json +69 -0
  153. package/data/pages/Utilities/utilities/useclipboard.json +57 -0
  154. package/data/pages/Utilities/utilities/usecount.json +92 -0
  155. package/data/pages/Utilities/utilities/usedarkmode.json +50 -0
  156. package/data/pages/Utilities/utilities/usedebuginfo.json +63 -0
  157. package/data/pages/Utilities/utilities/useeffectonce.json +57 -0
  158. package/data/pages/Utilities/utilities/useelapsedtime.json +57 -0
  159. package/data/pages/Utilities/utilities/useelementsize.json +63 -0
  160. package/data/pages/Utilities/utilities/useesc.json +57 -0
  161. package/data/pages/Utilities/utilities/useevent.json +75 -0
  162. package/data/pages/Utilities/utilities/usefocustrap.json +57 -0
  163. package/data/pages/Utilities/utilities/usefullscreen.json +197 -0
  164. package/data/pages/Utilities/utilities/usehover.json +57 -0
  165. package/data/pages/Utilities/utilities/useinterval.json +63 -0
  166. package/data/pages/Utilities/utilities/useisfocuswithin.json +75 -0
  167. package/data/pages/Utilities/utilities/usekey.json +75 -0
  168. package/data/pages/Utilities/utilities/uselocalstorage.json +69 -0
  169. package/data/pages/Utilities/utilities/uselocationsuggestions.json +110 -0
  170. package/data/pages/Utilities/utilities/usemax.json +86 -0
  171. package/data/pages/Utilities/utilities/usemin.json +86 -0
  172. package/data/pages/Utilities/utilities/usemutationobserver.json +69 -0
  173. package/data/pages/Utilities/utilities/useonlinestatus.json +39 -0
  174. package/data/pages/Utilities/utilities/useonscreen.json +63 -0
  175. package/data/pages/Utilities/utilities/usepostmessage.json +80 -0
  176. package/data/pages/Utilities/utilities/useprevious.json +63 -0
  177. package/data/pages/Utilities/utilities/useresizeobserver.json +65 -0
  178. package/data/pages/Utilities/utilities/usescrollposition.json +103 -0
  179. package/data/pages/Utilities/utilities/usesearch.json +197 -0
  180. package/data/pages/Utilities/utilities/usesorting.json +139 -0
  181. package/data/pages/Utilities/utilities/usestatewithvalidation.json +69 -0
  182. package/data/pages/Utilities/utilities/usesum.json +86 -0
  183. package/data/pages/Utilities/utilities/usetableexport.json +87 -0
  184. package/data/pages/Utilities/utilities/usetableselection.json +311 -0
  185. package/data/pages/Utilities/utilities/usetimeout.json +63 -0
  186. package/data/pages/Utilities/utilities/usetoggle.json +75 -0
  187. package/data/pages/Utilities/utilities/usewindowresize.json +63 -0
  188. package/data/version.json +4 -0
  189. package/docs/content-schema.md +147 -0
  190. package/docs/navigation-inventory.json +1310 -0
  191. package/docs/search-synonyms.json +43 -0
  192. package/package.json +38 -0
  193. package/server/index.mjs +268 -0
  194. package/server/lib/load-docs.mjs +48 -0
  195. package/server/lib/normalise-doc.mjs +220 -0
  196. package/server/lib/render-markdown.mjs +82 -0
  197. package/server/lib/search-index.mjs +49 -0
  198. package/server/lib/types.js +99 -0
@@ -0,0 +1,87 @@
1
+ {
2
+ "metadata": {
3
+ "captured_at": "2025-11-21T12:07:46.757Z",
4
+ "source": "https://uikit.developers.rio.cloud/#components/activity",
5
+ "category": "Components",
6
+ "section": "Misc",
7
+ "slug": "components/activity",
8
+ "version": "v1.13.2",
9
+ "hash_algorithm": "sha256",
10
+ "hash": "b5b1a1375c8f26a53370e1d61c2c7599b764e70ec8cb8f5c13f5333b50327ce9"
11
+ },
12
+ "title": "Activity",
13
+ "lead": null,
14
+ "content": [
15
+ {
16
+ "heading": "Activity",
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><label>Small size:</label><div class=\"display-flex flex-wrap gap-5 margin-bottom-25\"><div class=\"activity activity-available activity-sm\"><span class=\"activity-icon\"><span class=\"rioglyph rioglyph-status-available\"></span></span><span class=\"activity-text\">0:24 h</span></div><div class=\"activity activity-driving activity-sm\"><span class=\"activity-icon\"><span class=\"rioglyph rioglyph-status-driving\"></span></span><span class=\"activity-text\">0:24 h</span></div><div class=\"activity activity-resting activity-sm\"><span class=\"activity-icon\"><span class=\"rioglyph rioglyph-status-resting\"></span></span><span class=\"activity-text\">0:24 h</span></div><div class=\"activity activity-working activity-sm\"><span class=\"activity-icon\"><span class=\"rioglyph rioglyph-status-working\"></span></span><span class=\"activity-text\">0:24 h</span></div><span class=\"badge padding-y-4 badge-danger\">1</span><span class=\"badge padding-y-4 badge-warning\">3</span></div><label>Default size:</label><div class=\"display-flex flex-wrap gap-5 margin-bottom-25\"><div class=\"activity activity-available\"><span class=\"activity-icon\"><span class=\"rioglyph rioglyph-status-available\"></span></span><span class=\"activity-text\">0:24 h</span></div><div class=\"activity activity-driving\"><span class=\"activity-icon\"><span class=\"rioglyph rioglyph-status-driving\"></span></span><span class=\"activity-text\">0:24 h</span></div><div class=\"activity activity-resting\"><span class=\"activity-icon\"><span class=\"rioglyph rioglyph-status-resting\"></span></span><span class=\"activity-text\">0:24 h</span></div><div class=\"activity activity-working\"><span class=\"activity-icon\"><span class=\"rioglyph rioglyph-status-working\"></span></span><span class=\"activity-text\">0:24 h</span></div></div><label>Default size without duration:</label><div class=\"display-flex flex-wrap gap-5 margin-bottom-25\"><div class=\"activity activity-available\"><span class=\"activity-icon\"><span class=\"rioglyph rioglyph-status-available\"></span></span></div><div class=\"activity activity-driving\"><span class=\"activity-icon\"><span class=\"rioglyph rioglyph-status-driving\"></span></span></div><div class=\"activity activity-resting\"><span class=\"activity-icon\"><span class=\"rioglyph rioglyph-status-resting\"></span></span></div><div class=\"activity activity-working\"><span class=\"activity-icon\"><span class=\"rioglyph rioglyph-status-working\"></span></span></div></div><label>Outdated activities:</label><div class=\"display-flex flex-wrap gap-5 margin-bottom-25\"><div class=\"activity activity-available opacity-50\"><span class=\"activity-icon\"><span class=\"rioglyph rioglyph-status-available\"></span></span><span class=\"activity-text\">0:24 h</span></div><div class=\"activity activity-driving opacity-50\"><span class=\"activity-icon\"><span class=\"rioglyph rioglyph-status-driving\"></span></span><span class=\"activity-text\">0:24 h</span></div><div class=\"activity activity-resting opacity-50\"><span class=\"activity-icon\"><span class=\"rioglyph rioglyph-status-resting\"></span></span><span class=\"activity-text\">0:24 h</span></div><div class=\"activity activity-working opacity-50\"><span class=\"activity-icon\"><span class=\"rioglyph rioglyph-status-working\"></span></span><span class=\"activity-text\">0:24 h</span></div></div><label>Large size:</label><div class=\"display-flex flex-wrap gap-5 margin-bottom-25\"><div class=\"activity activity-available activity-lg\"><span class=\"activity-icon\"><span class=\"rioglyph rioglyph-status-available\"></span></span><span class=\"activity-text\">0:24 h</span></div><div class=\"activity activity-driving activity-lg\"><span class=\"activity-icon\"><span class=\"rioglyph rioglyph-status-driving\"></span></span><span class=\"activity-text\">0:24 h</span></div><div class=\"activity activity-resting activity-lg\"><span class=\"activity-icon\"><span class=\"rioglyph rioglyph-status-resting\"></span></span><span class=\"activity-text\">0:24 h</span></div><div class=\"activity activity-working activity-lg\"><span class=\"activity-icon\"><span class=\"rioglyph rioglyph-status-working\"></span></span><span class=\"activity-text\">0:24 h</span></div></div><label>Extra large size:</label><div class=\"display-flex flex-wrap gap-5 margin-bottom-25\"><div class=\"activity activity-available activity-xl\"><span class=\"activity-icon\"><span class=\"rioglyph rioglyph-status-available\"></span></span><span class=\"activity-text\">0:24 h</span></div><div class=\"activity activity-driving activity-xl\"><span class=\"activity-icon\"><span class=\"rioglyph rioglyph-status-driving\"></span></span><span class=\"activity-text\">0:24 h</span></div><div class=\"activity activity-resting activity-xl\"><span class=\"activity-icon\"><span class=\"rioglyph rioglyph-status-resting\"></span></span><span class=\"activity-text\">0:24 h</span></div><div class=\"activity activity-working activity-xl\"><span class=\"activity-icon\"><span class=\"rioglyph rioglyph-status-working\"></span></span><span class=\"activity-text\">0:24 h</span></div></div></div></div>",
22
+ "tabs": [
23
+ {
24
+ "label": "React",
25
+ "language": "tsx",
26
+ "code": "import React from 'react';\n\nimport Activity from '@rio-cloud/rio-uikit/Activity';\n\nconst duration = '0:24 h';\n\nexport default () => (\n <div>\n <label>Small size:</label>\n <div className='display-flex flex-wrap gap-5 margin-bottom-25'>\n <Activity activity={Activity.AVAILABLE} duration={duration} bsSize={Activity.SIZE_SM} />\n <Activity activity={Activity.DRIVING} duration={duration} bsSize={Activity.SIZE_SM} />\n <Activity activity={Activity.RESTING} duration={duration} bsSize={Activity.SIZE_SM} />\n <Activity activity={Activity.WORKING} duration={duration} bsSize={Activity.SIZE_SM} />\n <span className='badge padding-y-4 badge-danger'>1</span>\n <span className='badge padding-y-4 badge-warning'>3</span>\n </div>\n\n <label>Default size:</label>\n <div className='display-flex flex-wrap gap-5 margin-bottom-25'>\n <Activity activity={Activity.AVAILABLE} duration={duration} />\n <Activity activity={Activity.DRIVING} duration={duration} />\n <Activity activity={Activity.RESTING} duration={duration} />\n <Activity activity={Activity.WORKING} duration={duration} />\n </div>\n\n <label>Default size without duration:</label>\n <div className='display-flex flex-wrap gap-5 margin-bottom-25'>\n <Activity activity={Activity.AVAILABLE} />\n <Activity activity={Activity.DRIVING} />\n <Activity activity={Activity.RESTING} />\n <Activity activity={Activity.WORKING} />\n </div>\n\n <label>Outdated activities:</label>\n <div className='display-flex flex-wrap gap-5 margin-bottom-25'>\n <Activity activity={Activity.AVAILABLE} duration={duration} isOutdated />\n <Activity activity={Activity.DRIVING} duration={duration} isOutdated />\n <Activity activity={Activity.RESTING} duration={duration} isOutdated />\n <Activity activity={Activity.WORKING} duration={duration} isOutdated />\n </div>\n\n <label>Large size:</label>\n <div className='display-flex flex-wrap gap-5 margin-bottom-25'>\n <Activity activity={Activity.AVAILABLE} duration={duration} bsSize={Activity.SIZE_LG} />\n <Activity activity={Activity.DRIVING} duration={duration} bsSize={Activity.SIZE_LG} />\n <Activity activity={Activity.RESTING} duration={duration} bsSize={Activity.SIZE_LG} />\n <Activity activity={Activity.WORKING} duration={duration} bsSize={Activity.SIZE_LG} />\n </div>\n\n <label>Extra large size:</label>\n <div className='display-flex flex-wrap gap-5 margin-bottom-25'>\n <Activity activity={Activity.AVAILABLE} duration={duration} bsSize={Activity.SIZE_XL} />\n <Activity activity={Activity.DRIVING} duration={duration} bsSize={Activity.SIZE_XL} />\n <Activity activity={Activity.RESTING} duration={duration} bsSize={Activity.SIZE_XL} />\n <Activity activity={Activity.WORKING} duration={duration} bsSize={Activity.SIZE_XL} />\n </div>\n </div>\n);"
27
+ },
28
+ {
29
+ "label": "HTML",
30
+ "language": "html",
31
+ "code": "<div>\n <label>Small size:</label>\n <div class=\"display-flex flex-wrap gap-5 margin-bottom-25\">\n <div class=\"activity activity-available activity-sm\">\n <span class=\"activity-icon\">\n <span class=\"rioglyph rioglyph-status-available\">\n </span>\n </span>\n <span class=\"activity-text\">0:24 h</span>\n </div>\n <div class=\"activity activity-driving activity-sm\">\n <span class=\"activity-icon\">\n <span class=\"rioglyph rioglyph-status-driving\">\n </span>\n </span>\n <span class=\"activity-text\">0:24 h</span>\n </div>\n <div class=\"activity activity-resting activity-sm\">\n <span class=\"activity-icon\">\n <span class=\"rioglyph rioglyph-status-resting\">\n </span>\n </span>\n <span class=\"activity-text\">0:24 h</span>\n </div>\n <div class=\"activity activity-working activity-sm\">\n <span class=\"activity-icon\">\n <span class=\"rioglyph rioglyph-status-working\">\n </span>\n </span>\n <span class=\"activity-text\">0:24 h</span>\n </div>\n <span class=\"badge padding-y-4 badge-danger\">1</span>\n <span class=\"badge padding-y-4 badge-warning\">3</span>\n </div>\n <label>Default size:</label>\n <div class=\"display-flex flex-wrap gap-5 margin-bottom-25\">\n <div class=\"activity activity-available\">\n <span class=\"activity-icon\">\n <span class=\"rioglyph rioglyph-status-available\">\n </span>\n </span>\n <span class=\"activity-text\">0:24 h</span>\n </div>\n <div class=\"activity activity-driving\">\n <span class=\"activity-icon\">\n <span class=\"rioglyph rioglyph-status-driving\">\n </span>\n </span>\n <span class=\"activity-text\">0:24 h</span>\n </div>\n <div class=\"activity activity-resting\">\n <span class=\"activity-icon\">\n <span class=\"rioglyph rioglyph-status-resting\">\n </span>\n </span>\n <span class=\"activity-text\">0:24 h</span>\n </div>\n <div class=\"activity activity-working\">\n <span class=\"activity-icon\">\n <span class=\"rioglyph rioglyph-status-working\">\n </span>\n </span>\n <span class=\"activity-text\">0:24 h</span>\n </div>\n </div>\n <label>Default size without duration:</label>\n <div class=\"display-flex flex-wrap gap-5 margin-bottom-25\">\n <div class=\"activity activity-available\">\n <span class=\"activity-icon\">\n <span class=\"rioglyph rioglyph-status-available\">\n </span>\n </span>\n </div>\n <div class=\"activity activity-driving\">\n <span class=\"activity-icon\">\n <span class=\"rioglyph rioglyph-status-driving\">\n </span>\n </span>\n </div>\n <div class=\"activity activity-resting\">\n <span class=\"activity-icon\">\n <span class=\"rioglyph rioglyph-status-resting\">\n </span>\n </span>\n </div>\n <div class=\"activity activity-working\">\n <span class=\"activity-icon\">\n <span class=\"rioglyph rioglyph-status-working\">\n </span>\n </span>\n </div>\n </div>\n <label>Outdated activities:</label>\n <div class=\"display-flex flex-wrap gap-5 margin-bottom-25\">\n <div class=\"activity activity-available opacity-50\">\n <span class=\"activity-icon\">\n <span class=\"rioglyph rioglyph-status-available\">\n </span>\n </span>\n <span class=\"activity-text\">0:24 h</span>\n </div>\n <div class=\"activity activity-driving opacity-50\">\n <span class=\"activity-icon\">\n <span class=\"rioglyph rioglyph-status-driving\">\n </span>\n </span>\n <span class=\"activity-text\">0:24 h</span>\n </div>\n <div class=\"activity activity-resting opacity-50\">\n <span class=\"activity-icon\">\n <span class=\"rioglyph rioglyph-status-resting\">\n </span>\n </span>\n <span class=\"activity-text\">0:24 h</span>\n </div>\n <div class=\"activity activity-working opacity-50\">\n <span class=\"activity-icon\">\n <span class=\"rioglyph rioglyph-status-working\">\n </span>\n </span>\n <span class=\"activity-text\">0:24 h</span>\n </div>\n </div>\n <label>Large size:</label>\n <div class=\"display-flex flex-wrap gap-5 margin-bottom-25\">\n <div class=\"activity activity-available activity-lg\">\n <span class=\"activity-icon\">\n <span class=\"rioglyph rioglyph-status-available\">\n </span>\n </span>\n <span class=\"activity-text\">0:24 h</span>\n </div>\n <div class=\"activity activity-driving activity-lg\">\n <span class=\"activity-icon\">\n <span class=\"rioglyph rioglyph-status-driving\">\n </span>\n </span>\n <span class=\"activity-text\">0:24 h</span>\n </div>\n <div class=\"activity activity-resting activity-lg\">\n <span class=\"activity-icon\">\n <span class=\"rioglyph rioglyph-status-resting\">\n </span>\n </span>\n <span class=\"activity-text\">0:24 h</span>\n </div>\n <div class=\"activity activity-working activity-lg\">\n <span class=\"activity-icon\">\n <span class=\"rioglyph rioglyph-status-working\">\n </span>\n </span>\n <span class=\"activity-text\">0:24 h</span>\n </div>\n </div>\n <label>Extra large size:</label>\n <div class=\"display-flex flex-wrap gap-5 margin-bottom-25\">\n <div class=\"activity activity-available activity-xl\">\n <span class=\"activity-icon\">\n <span class=\"rioglyph rioglyph-status-available\">\n </span>\n </span>\n <span class=\"activity-text\">0:24 h</span>\n </div>\n <div class=\"activity activity-driving activity-xl\">\n <span class=\"activity-icon\">\n <span class=\"rioglyph rioglyph-status-driving\">\n </span>\n </span>\n <span class=\"activity-text\">0:24 h</span>\n </div>\n <div class=\"activity activity-resting activity-xl\">\n <span class=\"activity-icon\">\n <span class=\"rioglyph rioglyph-status-resting\">\n </span>\n </span>\n <span class=\"activity-text\">0:24 h</span>\n </div>\n <div class=\"activity activity-working activity-xl\">\n <span class=\"activity-icon\">\n <span class=\"rioglyph rioglyph-status-working\">\n </span>\n </span>\n <span class=\"activity-text\">0:24 h</span>\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": "activity",
43
+ "type": "String",
44
+ "default": "",
45
+ "description": "Defines the type of activity. Possible values are: Activity.AVAILABLE, Activity.DRIVING, Activity.RESTING or Activity.WORKING."
46
+ },
47
+ {
48
+ "name": "duration",
49
+ "type": "String / Node",
50
+ "default": "",
51
+ "description": "The actual duration value to be shown."
52
+ },
53
+ {
54
+ "name": "isOutdated",
55
+ "type": "Boolean",
56
+ "default": "false",
57
+ "description": "Indicated whether the activity is outdated."
58
+ },
59
+ {
60
+ "name": "bsSize",
61
+ "type": "String",
62
+ "default": "",
63
+ "description": "Define how large the component should be rendered. Possible values are: Activity.SIZE_SM, Activity.SIZE_LG or Activity.SIZE_XL."
64
+ },
65
+ {
66
+ "name": "onClick",
67
+ "type": "Function",
68
+ "default": "() => {}",
69
+ "description": "Callback function for when the component is clicked."
70
+ },
71
+ {
72
+ "name": "className",
73
+ "type": "String",
74
+ "default": "",
75
+ "description": "Additional classes for the wrapper element."
76
+ }
77
+ ]
78
+ }
79
+ ]
80
+ }
81
+ ]
82
+ }
83
+ ]
84
+ }
85
+ ],
86
+ "see_also": []
87
+ }
@@ -0,0 +1,99 @@
1
+ {
2
+ "metadata": {
3
+ "captured_at": "2025-11-21T12:07:32.241Z",
4
+ "source": "https://uikit.developers.rio.cloud/#components/animatedNumber",
5
+ "category": "Components",
6
+ "section": "Content",
7
+ "slug": "components/animatednumber",
8
+ "version": "v1.13.2",
9
+ "hash_algorithm": "sha256",
10
+ "hash": "b4b2ab874685109b180f4bc11c4a86d4fe1686360e07b3ea9dbc9eccab0da001"
11
+ },
12
+ "title": "AnimatedNumber",
13
+ "lead": null,
14
+ "content": [
15
+ {
16
+ "heading": "AnimatedNumber",
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><label>Default AnimatedNumber</label><div class=\"width-60 margin-bottom-20 text-right text-size-h1 text-color-info\"><span class=\"\">0</span></div><label>AnimatedNumber with prefix and unit</label><div class=\"width-100 margin-bottom-20 text-right text-size-h1 text-color-primary\"><span class=\"\">+0%</span></div><label>AnimatedNumber as simple timer</label><div class=\"text-color-danger\"><span class=\"margin-right-3\">Hurry up! Only</span><span class=\"\">60s</span><span class=\"margin-left-3\">remaining.</span></div></div></div>",
22
+ "tabs": [
23
+ {
24
+ "label": "React",
25
+ "language": "tsx",
26
+ "code": "import React from 'react';\n\nimport AnimatedNumber from '@rio-cloud/rio-uikit/AnimatedNumber';\n\nexport default () => (\n <div>\n <label>Default AnimatedNumber</label>\n <div className='width-60 margin-bottom-20 text-right text-size-h1 text-color-info'>\n <AnimatedNumber start={0} end={100} />\n </div>\n\n <label>AnimatedNumber with prefix and unit</label>\n <div className='width-100 margin-bottom-20 text-right text-size-h1 text-color-primary'>\n <AnimatedNumber start={0} end={100} unit='%' prefix='+' speed={50} />\n </div>\n\n <label>AnimatedNumber as simple timer</label>\n <div className='text-color-danger'>\n <span className='margin-right-3'>Hurry up! Only</span>\n <AnimatedNumber\n start={60}\n end={0}\n decreasing\n unit='s'\n speed={1000}\n onEnd={() => console.log('Time is up')}\n />\n <span className='margin-left-3'>remaining.</span>\n </div>\n </div>\n);"
27
+ },
28
+ {
29
+ "label": "HTML",
30
+ "language": "html",
31
+ "code": "<div>\n <label>Default AnimatedNumber</label>\n <div class=\"width-60 margin-bottom-20 text-right text-size-h1 text-color-info\">\n <span class=\"\">23</span>\n </div>\n <label>AnimatedNumber with prefix and unit</label>\n <div class=\"width-100 margin-bottom-20 text-right text-size-h1 text-color-primary\">\n <span class=\"\">+5%</span>\n </div>\n <label>AnimatedNumber as simple timer</label>\n <div class=\"text-color-danger\">\n <span class=\"margin-right-3\">Hurry up! Only</span>\n <span class=\"\">60s</span>\n <span class=\"margin-left-3\">remaining.</span>\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": "start",
43
+ "type": "Number",
44
+ "default": "",
45
+ "description": "The start value."
46
+ },
47
+ {
48
+ "name": "end",
49
+ "type": "Number",
50
+ "default": "",
51
+ "description": "The end value."
52
+ },
53
+ {
54
+ "name": "prefix",
55
+ "type": "String",
56
+ "default": "",
57
+ "description": "A prefix to be added to the final string."
58
+ },
59
+ {
60
+ "name": "unit",
61
+ "type": "String",
62
+ "default": "",
63
+ "description": "A unit suffix to be added to the final string."
64
+ },
65
+ {
66
+ "name": "speed",
67
+ "type": "Number",
68
+ "default": "10",
69
+ "description": "The speed in milliseconds to count up or down."
70
+ },
71
+ {
72
+ "name": "decreasing",
73
+ "type": "Boolean",
74
+ "default": "false",
75
+ "description": "Enables to count backwards."
76
+ },
77
+ {
78
+ "name": "onEnd",
79
+ "type": "Function",
80
+ "default": "",
81
+ "description": "Callback function to be invoked when the end value is reached."
82
+ },
83
+ {
84
+ "name": "className",
85
+ "type": "String",
86
+ "default": "",
87
+ "description": "Additional classes to be set on the wrapping element."
88
+ }
89
+ ]
90
+ }
91
+ ]
92
+ }
93
+ ]
94
+ }
95
+ ]
96
+ }
97
+ ],
98
+ "see_also": []
99
+ }
@@ -0,0 +1,87 @@
1
+ {
2
+ "metadata": {
3
+ "captured_at": "2025-11-21T12:07:33.340Z",
4
+ "source": "https://uikit.developers.rio.cloud/#components/animations",
5
+ "category": "Components",
6
+ "section": "Content",
7
+ "slug": "components/animations",
8
+ "version": "v1.13.2",
9
+ "hash_algorithm": "sha256",
10
+ "hash": "bd99dbe57b8592fa85354f1d2a37c06c0e84130a5de435e73bd24cf6e3824d78"
11
+ },
12
+ "title": "Animations",
13
+ "lead": "The UIKIT uses the famous animation library Framer Motion. To allow services to use Framer Motion without adding it as a depemdency to their project, the UIKIT re-exports all framer-motioncomponents.",
14
+ "content": [
15
+ {
16
+ "heading": "Animations",
17
+ "body": "The official documentation can be found here www.framer.com/motion",
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 style=\"opacity: 0.999644;\"><div class=\"margin-10\"><label>Some Data</label><div>\nLorem ipsum dolor sit amet, consectetur adipiscing elit. In pharetra dui eget massa efficitur aliquam condimentum in felis. Integer eget metus vel nunc efficitur iaculis. Vivamus elementum ante et est sagittis semper. Ut consectetur enim nec tortor scelerisque tincidunt. Fusce ac ligula bibendum, rutrum libero quis, viverra sem. Interdum et malesuada fames ac ante ipsum primis in faucibus. Duis ut hendrerit massa, in molestie elit. Sed vitae orci ac purus volutpat posuere ac ut neque. Mauris ante orci, semper finibus lorem in, fringilla pretium velit.</div></div></div></div>",
22
+ "tabs": [
23
+ {
24
+ "label": "React",
25
+ "language": "tsx",
26
+ "code": "import { motion } from '@rio-cloud/rio-uikit/framer-motion';\n\nimport { dummyText } from '../../../utils/data';\n\nexport default () => {\n return (\n <motion.div\n animate={{ opacity: [1, 0, 1] }}\n transition={{\n // Keyframes that match to the keyframes of the opacity settings above\n times: [0, 0.5, 1],\n repeat: Infinity,\n ease: 'easeInOut',\n duration: 2.5,\n repeatDelay: 2,\n }}\n >\n <div className='margin-10'>\n <label>Some Data</label>\n <div>{dummyText}</div>\n </div>\n </motion.div>\n );\n};"
27
+ },
28
+ {
29
+ "label": "HTML",
30
+ "language": "html",
31
+ "code": "<div style=\"opacity: 0.857835;\">\n <div class=\"margin-10\">\n <label>Some Data</label>\n <div>\n Lorem ipsum dolor sit amet, consectetur adipiscing elit. In pharetra dui eget massa efficitur aliquam condimentum in felis. Integer eget metus vel nunc efficitur iaculis. Vivamus elementum ante et est sagittis semper. Ut consectetur enim nec tortor scelerisque tincidunt. Fusce ac ligula bibendum, rutrum libero quis, viverra sem. Interdum et malesuada fames ac ante ipsum primis in faucibus. Duis ut hendrerit massa, in molestie elit. Sed vitae orci ac purus volutpat posuere ac ut neque. Mauris ante orci, semper finibus lorem in, fringilla pretium velit.</div>\n </div>\n</div>"
32
+ }
33
+ ]
34
+ },
35
+ {
36
+ "caption": "Example 2",
37
+ "rendered_html": "<div class=\"playground-content bg-white padding-20 padding-bottom-25\" style=\"width: 100%;\"><div class=\"display-flex gap-20 text-color-darker\" style=\"opacity: 0.0555556;\"><div style=\"opacity: 0.0555556;\"><svg width=\"50\" height=\"50\" class=\"w-6 h-6\" fill=\"none\" stroke=\"currentColor\" viewBox=\"0 0 24 24\" xmlns=\"http://www.w3.org/2000/svg\"><path stroke-linecap=\"round\" stroke-linejoin=\"round\" stroke-width=\"2\" d=\"M14 5l7 7m0 0l-7 7m7-7H3\" stroke-dashoffset=\"0px\" stroke-dasharray=\"0px 37.798988342285156px\"></path></svg></div><div style=\"opacity: 0;\"><svg width=\"50\" height=\"50\" class=\"w-6 h-6\" fill=\"none\" stroke=\"currentColor\" viewBox=\"0 0 24 24\" xmlns=\"http://www.w3.org/2000/svg\"><path stroke-linecap=\"round\" stroke-linejoin=\"round\" stroke-width=\"2\" d=\"M5 13l4 4L19 7\" stroke-dashoffset=\"0px\" stroke-dasharray=\"0px 19.79899024963379px\"></path></svg></div><div style=\"opacity: 0;\"><svg width=\"50\" height=\"50\" class=\"w-6 h-6\" fill=\"none\" stroke=\"currentColor\" viewBox=\"0 0 24 24\" xmlns=\"http://www.w3.org/2000/svg\"><path stroke-linecap=\"round\" stroke-linejoin=\"round\" stroke-width=\"2\" d=\"M10 6H6a2 2 0 00-2 2v10a2 2 0 002 2h10a2 2 0 002-2v-4M14 4h6m0 0v6m0-6L10 14\" stroke-dashoffset=\"0px\" stroke-dasharray=\"0px 63.5682487487793px\"></path></svg></div></div></div>",
38
+ "tabs": [
39
+ {
40
+ "label": "React",
41
+ "language": "tsx",
42
+ "code": "import { AnimatePresence, motion } from '@rio-cloud/rio-uikit/framer-motion';\n\nconst icons = {\n check: {\n d: 'M5 13l4 4L19 7',\n },\n arrowRight: {\n d: 'M14 5l7 7m0 0l-7 7m7-7H3',\n },\n externalLink: {\n d: 'M10 6H6a2 2 0 00-2 2v10a2 2 0 002 2h10a2 2 0 002-2v-4M14 4h6m0 0v6m0-6L10 14',\n },\n};\n\nconst AnimatedIcon = props => {\n const { icon = 'check', delay = 0.2, ...remainingProps } = props;\n return (\n <svg\n {...remainingProps}\n className='w-6 h-6'\n fill='none'\n stroke='currentColor'\n viewBox='0 0 24 24'\n xmlns='http://www.w3.org/2000/svg'\n >\n <motion.path\n key={icon}\n initial={{ pathLength: 0 }}\n animate={{ pathLength: 1 }}\n transition={{ duration: 0.5, delay, type: 'tween', ease: 'easeOut' }}\n strokeLinecap='round'\n strokeLinejoin='round'\n strokeWidth='2'\n {...icons[icon]}\n />\n </svg>\n );\n};\n\nconst container = {\n hidden: { opacity: 0 },\n show: {\n opacity: 1,\n transition: {\n staggerChildren: 0.2,\n },\n },\n};\n\nconst item = {\n hidden: { opacity: 0 },\n show: { opacity: 1 },\n};\n\nexport default () => (\n <>\n <motion.div\n variants={container}\n initial='hidden'\n animate='show'\n className='display-flex gap-20 text-color-darker'\n >\n <motion.div key='1' variants={item}>\n <AnimatedIcon key='arrowRight' delay={0.2} icon='arrowRight' width='50' height='50' />\n </motion.div>\n <motion.div key='2' variants={item}>\n <AnimatedIcon key='check' delay={0.4} icon='check' width='50' height='50' />\n </motion.div>\n <motion.div key='3' variants={item}>\n <AnimatedIcon key='externalLink' delay={0.8} icon='externalLink' width='50' height='50' />\n </motion.div>\n </motion.div>\n </>\n);"
43
+ },
44
+ {
45
+ "label": "HTML",
46
+ "language": "html",
47
+ "code": "<div class=\"display-flex gap-20 text-color-darker\" style=\"opacity: 1;\">\n <div style=\"opacity: 1;\">\n <svg width=\"50\" height=\"50\" class=\"w-6 h-6\" fill=\"none\" stroke=\"currentColor\" viewBox=\"0 0 24 24\" xmlns=\"http://www.w3.org/2000/svg\">\n <path stroke-linecap=\"round\" stroke-linejoin=\"round\" stroke-width=\"2\" d=\"M14 5l7 7m0 0l-7 7m7-7H3\" stroke-dashoffset=\"0px\" stroke-dasharray=\"37.798988342285156px 37.798988342285156px\">\n </path>\n </svg>\n </div>\n <div style=\"opacity: 1;\">\n <svg width=\"50\" height=\"50\" class=\"w-6 h-6\" fill=\"none\" stroke=\"currentColor\" viewBox=\"0 0 24 24\" xmlns=\"http://www.w3.org/2000/svg\">\n <path stroke-linecap=\"round\" stroke-linejoin=\"round\" stroke-width=\"2\" d=\"M5 13l4 4L19 7\" stroke-dashoffset=\"0px\" stroke-dasharray=\"18.389653773926696px 19.79899024963379px\">\n </path>\n </svg>\n </div>\n <div style=\"opacity: 1;\">\n <svg width=\"50\" height=\"50\" class=\"w-6 h-6\" fill=\"none\" stroke=\"currentColor\" viewBox=\"0 0 24 24\" xmlns=\"http://www.w3.org/2000/svg\">\n <path stroke-linecap=\"round\" stroke-linejoin=\"round\" stroke-width=\"2\" d=\"M10 6H6a2 2 0 00-2 2v10a2 2 0 002 2h10a2 2 0 002-2v-4M14 4h6m0 0v6m0-6L10 14\" stroke-dashoffset=\"0px\" stroke-dasharray=\"0px 63.5682487487793px\">\n </path>\n </svg>\n </div>\n</div>"
48
+ }
49
+ ]
50
+ },
51
+ {
52
+ "caption": "Example 3",
53
+ "rendered_html": "<div class=\"playground-content bg-white padding-20 padding-bottom-25\" style=\"width: 100%;\"><div><button type=\"button\" class=\"btn btn-default btn-component\" tabindex=\"0\">Add Item</button><div class=\"border rounded bg-white padding-15 margin-top-25 overflow-hidden\"><div style=\"height: 3.2796px;\"><div style=\"opacity: 0.0555556;\"><div class=\"display-flex justify-content-between align-items-center padding-x-15 padding-y-10 border border-bottom-only\"><div>Item T8IQ5N3PGI</div><button type=\"button\" class=\"btn btn-muted btn-sm btn-icon-only btn-component\" tabindex=\"0\"><span class=\"rioglyph rioglyph-remove text-size-14\"></span></button></div></div></div><div style=\"height: 3.2796px;\"><div style=\"opacity: 0.0555556;\"><div class=\"display-flex justify-content-between align-items-center padding-x-15 padding-y-10 border border-bottom-only\"><div>Item QUEP70WQ4J</div><button type=\"button\" class=\"btn btn-muted btn-sm btn-icon-only btn-component\" tabindex=\"0\"><span class=\"rioglyph rioglyph-remove text-size-14\"></span></button></div></div></div><div style=\"height: 3.2796px;\"><div style=\"opacity: 0.0555556;\"><div class=\"display-flex justify-content-between align-items-center padding-x-15 padding-y-10 border border-bottom-only\"><div>Item U3LH1YBJI2</div><button type=\"button\" class=\"btn btn-muted btn-sm btn-icon-only btn-component\" tabindex=\"0\"><span class=\"rioglyph rioglyph-remove text-size-14\"></span></button></div></div></div></div><div class=\"margin-top-15\">\nLorem ipsum dolor sit amet, consectetur adipiscing elit. In pharetra dui eget massa efficitur aliquam condimentum in felis. Integer eget metus vel nunc efficitur iaculis. Vivamus elementum ante et est sagittis semper. Ut consectetur enim nec tortor scelerisque tincidunt. Fusce ac ligula bibendum, rutrum libero quis, viverra sem. Interdum et malesuada fames ac ante ipsum primis in faucibus. Duis ut hendrerit massa, in molestie elit. Sed vitae orci ac purus volutpat posuere ac ut neque. Mauris ante orci, semper finibus lorem in, fringilla pretium velit.</div></div></div>",
54
+ "tabs": [
55
+ {
56
+ "label": "React",
57
+ "language": "tsx",
58
+ "code": "import { useState } from 'react';\n\nimport { AnimatePresence, motion } from '@rio-cloud/rio-uikit/framer-motion';\nimport Button from '@rio-cloud/rio-uikit/Button';\n\nimport { dummyText } from '../../../utils/data';\n\nconst getRandomString = () => (Math.random() + 1).toString(36).toUpperCase().substring(2);\nconst generateItems = length => Array.from({ length }, () => getRandomString());\n\nexport default () => {\n const [items, setItems] = useState([...generateItems(3)]);\n\n const handleAddItem = () => setItems(items => [...items, getRandomString()]);\n const handleRemoveItem = item => setItems(items => items.filter(i => i !== item));\n\n return (\n <div>\n <Button onClick={handleAddItem}>Add Item</Button>\n <div className='border rounded bg-white padding-15 margin-top-25 overflow-hidden'>\n <AnimatePresence>\n {items.map(item => (\n <motion.div\n key={item}\n initial={{ height: 0 }}\n animate={{ height: 'auto' }}\n exit={{ height: 0 }}\n >\n <motion.div\n initial={{ opacity: 0 }}\n animate={{ opacity: 1 }}\n exit={{ opacity: 0 }}\n transition={{\n opacity: { duration: 0.1 },\n }}\n >\n <div className='display-flex justify-content-between align-items-center padding-x-15 padding-y-10 border border-bottom-only'>\n <div>Item {item}</div>\n <Button onClick={() => handleRemoveItem(item)} bsStyle='muted' bsSize='sm' iconOnly>\n <span className='rioglyph rioglyph-remove text-size-14' />\n </Button>\n </div>\n </motion.div>\n </motion.div>\n ))}\n </AnimatePresence>\n </div>\n <div className='margin-top-15'>{dummyText}</div>\n </div>\n );\n};"
59
+ },
60
+ {
61
+ "label": "HTML",
62
+ "language": "html",
63
+ "code": "<div>\n <button type=\"button\" class=\"btn btn-default btn-component\" tabindex=\"0\">Add Item</button>\n <div class=\"border rounded bg-white padding-15 margin-top-25 overflow-hidden\">\n <div style=\"height: auto;\">\n <div style=\"opacity: 1;\">\n <div class=\"display-flex justify-content-between align-items-center padding-x-15 padding-y-10 border border-bottom-only\">\n <div>Item T8IQ5N3PGI</div>\n <button type=\"button\" class=\"btn btn-muted btn-sm btn-icon-only btn-component\" tabindex=\"0\">\n <span class=\"rioglyph rioglyph-remove text-size-14\">\n </span>\n </button>\n </div>\n </div>\n </div>\n <div style=\"height: auto;\">\n <div style=\"opacity: 1;\">\n <div class=\"display-flex justify-content-between align-items-center padding-x-15 padding-y-10 border border-bottom-only\">\n <div>Item QUEP70WQ4J</div>\n <button type=\"button\" class=\"btn btn-muted btn-sm btn-icon-only btn-component\" tabindex=\"0\">\n <span class=\"rioglyph rioglyph-remove text-size-14\">\n </span>\n </button>\n </div>\n </div>\n </div>\n <div style=\"height: auto;\">\n <div style=\"opacity: 1;\">\n <div class=\"display-flex justify-content-between align-items-center padding-x-15 padding-y-10 border border-bottom-only\">\n <div>Item U3LH1YBJI2</div>\n <button type=\"button\" class=\"btn btn-muted btn-sm btn-icon-only btn-component\" tabindex=\"0\">\n <span class=\"rioglyph rioglyph-remove text-size-14\">\n </span>\n </button>\n </div>\n </div>\n </div>\n </div>\n <div class=\"margin-top-15\">\n Lorem ipsum dolor sit amet, consectetur adipiscing elit. In pharetra dui eget massa efficitur aliquam condimentum in felis. Integer eget metus vel nunc efficitur iaculis. Vivamus elementum ante et est sagittis semper. Ut consectetur enim nec tortor scelerisque tincidunt. Fusce ac ligula bibendum, rutrum libero quis, viverra sem. Interdum et malesuada fames ac ante ipsum primis in faucibus. Duis ut hendrerit massa, in molestie elit. Sed vitae orci ac purus volutpat posuere ac ut neque. Mauris ante orci, semper finibus lorem in, fringilla pretium velit.</div>\n</div>"
64
+ }
65
+ ]
66
+ },
67
+ {
68
+ "caption": "Example 4",
69
+ "rendered_html": "<div class=\"playground-content bg-white padding-20 padding-bottom-25\" style=\"width: 100%;\"><div><button type=\"button\" class=\"btn btn-default btn-component\" tabindex=\"0\">Load Items</button><ul class=\"list-group margin-top-25 width-300\"><li style=\"opacity: 1; transform: none;\"><label class=\"checkbox list-group-item margin-bottom-10\" tabindex=\"0\"><input type=\"checkbox\" class=\"list-group-item margin-bottom-10\"><span class=\"checkbox-text\"><span><div class=\"display-flex gap-5\"><span>Item TZ5V6W1OYD</span></div></span></span></label></li><li style=\"opacity: 1; transform: none;\"><label class=\"checkbox list-group-item margin-bottom-10\" tabindex=\"0\"><input type=\"checkbox\" class=\"list-group-item margin-bottom-10\"><span class=\"checkbox-text\"><span><div class=\"display-flex gap-5\"><span>Item 9KUDIUKG57</span></div></span></span></label></li><li style=\"opacity: 1; transform: none;\"><label class=\"checkbox list-group-item margin-bottom-10\" tabindex=\"0\"><input type=\"checkbox\" class=\"list-group-item margin-bottom-10\"><span class=\"checkbox-text\"><span><div class=\"display-flex gap-5\"><span>Item XN40M4M8Y8</span></div></span></span></label></li><li style=\"opacity: 1; transform: none;\"><label class=\"checkbox list-group-item margin-bottom-10\" tabindex=\"0\"><input type=\"checkbox\" class=\"list-group-item margin-bottom-10\"><span class=\"checkbox-text\"><span><div class=\"display-flex gap-5\"><span>Item IA501W1S8L</span></div></span></span></label></li><li style=\"opacity: 1; transform: none;\"><label class=\"checkbox list-group-item margin-bottom-10\" tabindex=\"0\"><input type=\"checkbox\" class=\"list-group-item margin-bottom-10\"><span class=\"checkbox-text\"><span><div class=\"display-flex gap-5\"><span>Item 9GBYWQUU6R</span></div></span></span></label></li><li style=\"opacity: 1; transform: none;\"><label class=\"checkbox list-group-item margin-bottom-10\" tabindex=\"0\"><input type=\"checkbox\" class=\"list-group-item margin-bottom-10\"><span class=\"checkbox-text\"><span><div class=\"display-flex gap-5\"><span>Item 9TP2B7VZUJ</span></div></span></span></label></li></ul></div></div>",
70
+ "tabs": [
71
+ {
72
+ "label": "React",
73
+ "language": "tsx",
74
+ "code": "import { useState } from 'react';\n\nimport { AnimatePresence, motion } from '@rio-cloud/rio-uikit/framer-motion';\nimport Button from '@rio-cloud/rio-uikit/Button';\nimport Checkbox from '@rio-cloud/rio-uikit/Checkbox';\n\nconst getRandomString = () => (Math.random() + 1).toString(36).toUpperCase().substring(2);\nconst generateItems = () => Array.from({ length: 6 }, () => getRandomString());\n\nexport default () => {\n const [items, setItems] = useState([...generateItems()]);\n\n const handleGenerateItem = () => setItems(generateItems());\n\n return (\n <div>\n <Button onClick={handleGenerateItem}>Load Items</Button>\n <ul className='list-group margin-top-25 width-300'>\n <AnimatePresence initial={false}>\n {items.map((item, index) => (\n <motion.li\n key={item}\n variants={{\n hidden: { opacity: 0, y: -50 },\n visible: index => ({\n opacity: 1,\n y: 0,\n transition: {\n delay: index * 0.1,\n },\n }),\n }}\n initial='hidden'\n animate='visible'\n custom={index}\n >\n <Checkbox className='list-group-item margin-bottom-10'>\n <div className='display-flex gap-5'>\n <span>Item {item}</span>\n </div>\n </Checkbox>\n </motion.li>\n ))}\n </AnimatePresence>\n </ul>\n </div>\n );\n};"
75
+ },
76
+ {
77
+ "label": "HTML",
78
+ "language": "html",
79
+ "code": "<div>\n <button type=\"button\" class=\"btn btn-default btn-component\" tabindex=\"0\">Load Items</button>\n <ul class=\"list-group margin-top-25 width-300\">\n <li style=\"opacity: 1; transform: none;\">\n <label class=\"checkbox list-group-item margin-bottom-10\" tabindex=\"0\">\n <input type=\"checkbox\" class=\"list-group-item margin-bottom-10\">\n <span class=\"checkbox-text\">\n <span>\n <div class=\"display-flex gap-5\">\n <span>Item TZ5V6W1OYD</span>\n </div>\n </span>\n </span>\n </label>\n </li>\n <li style=\"opacity: 1; transform: none;\">\n <label class=\"checkbox list-group-item margin-bottom-10\" tabindex=\"0\">\n <input type=\"checkbox\" class=\"list-group-item margin-bottom-10\">\n <span class=\"checkbox-text\">\n <span>\n <div class=\"display-flex gap-5\">\n <span>Item 9KUDIUKG57</span>\n </div>\n </span>\n </span>\n </label>\n </li>\n <li style=\"opacity: 1; transform: none;\">\n <label class=\"checkbox list-group-item margin-bottom-10\" tabindex=\"0\">\n <input type=\"checkbox\" class=\"list-group-item margin-bottom-10\">\n <span class=\"checkbox-text\">\n <span>\n <div class=\"display-flex gap-5\">\n <span>Item XN40M4M8Y8</span>\n </div>\n </span>\n </span>\n </label>\n </li>\n <li style=\"opacity: 1; transform: none;\">\n <label class=\"checkbox list-group-item margin-bottom-10\" tabindex=\"0\">\n <input type=\"checkbox\" class=\"list-group-item margin-bottom-10\">\n <span class=\"checkbox-text\">\n <span>\n <div class=\"display-flex gap-5\">\n <span>Item IA501W1S8L</span>\n </div>\n </span>\n </span>\n </label>\n </li>\n <li style=\"opacity: 1; transform: none;\">\n <label class=\"checkbox list-group-item margin-bottom-10\" tabindex=\"0\">\n <input type=\"checkbox\" class=\"list-group-item margin-bottom-10\">\n <span class=\"checkbox-text\">\n <span>\n <div class=\"display-flex gap-5\">\n <span>Item 9GBYWQUU6R</span>\n </div>\n </span>\n </span>\n </label>\n </li>\n <li style=\"opacity: 1; transform: none;\">\n <label class=\"checkbox list-group-item margin-bottom-10\" tabindex=\"0\">\n <input type=\"checkbox\" class=\"list-group-item margin-bottom-10\">\n <span class=\"checkbox-text\">\n <span>\n <div class=\"display-flex gap-5\">\n <span>Item 9TP2B7VZUJ</span>\n </div>\n </span>\n </span>\n </label>\n </li>\n </ul>\n</div>"
80
+ }
81
+ ]
82
+ }
83
+ ]
84
+ }
85
+ ],
86
+ "see_also": []
87
+ }