@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,270 @@
1
+ {
2
+ "metadata": {
3
+ "captured_at": "2025-11-21T12:08:01.438Z",
4
+ "source": "https://uikit.developers.rio.cloud/#components/tooltip",
5
+ "category": "Components",
6
+ "section": "Misc",
7
+ "slug": "components/tooltip",
8
+ "version": "v1.13.2",
9
+ "hash_algorithm": "sha256",
10
+ "hash": "87df7686078a14e6f47c159846d45179ff07df10dc0edc9336c529bc8cffec33"
11
+ },
12
+ "title": "Tooltips",
13
+ "lead": "In order to use a Tooltip on an element, wrap it with the OverlayTrigger component or use the SimpleTooltip component.",
14
+ "content": [
15
+ {
16
+ "heading": "Tooltips",
17
+ "body": "> Note: By default Tooltips are not rendered on touch devices. This might lead to issues for test environments where the check for mobile evaluate to true simply because the required class name is not set on the document element. To fix that, simply set the class in your test as follows:document.documentElement.classList.add('ua-desktop');",
18
+ "examples": [
19
+ {
20
+ "caption": "Example 1",
21
+ "rendered_html": "<div class=\"playground-content bg-white padding-20 padding-bottom-25\" style=\"width: 100%;\"><div class=\"display-grid grid-cols-1 grid-cols-2-sm gap-20\"><div class=\"padding-15\"><div class=\"display-flex justify-content-between gap-10 center-block height-50\"><button type=\"button\" class=\"btn btn-primary btn-component\" tabindex=\"0\">Hover</button><button type=\"button\" class=\"btn btn-primary btn-component\" tabindex=\"0\">Hover</button><button type=\"button\" class=\"btn btn-primary btn-component\" tabindex=\"0\">Hover</button></div><div class=\"display-flex justify-content-between gap-10 center-block height-50\"><button type=\"button\" class=\"btn btn-primary btn-component\" tabindex=\"0\">Hover</button><button type=\"button\" class=\"btn btn-primary btn-component\" tabindex=\"0\">Hover</button></div><div class=\"display-flex justify-content-between gap-10 center-block height-50\"><button type=\"button\" class=\"btn btn-primary btn-component\" tabindex=\"0\">Hover</button><button type=\"button\" class=\"btn btn-primary btn-component\" tabindex=\"0\">Hover</button><button type=\"button\" class=\"btn btn-primary btn-component\" tabindex=\"0\">Hover</button></div></div><div class=\"padding-15\"><div class=\"display-flex justify-content-between gap-10 center-block height-50\"><button type=\"button\" class=\"btn btn-primary btn-component\" tabindex=\"0\">Click</button><button type=\"button\" class=\"btn btn-primary btn-component\" tabindex=\"0\">Click</button><button type=\"button\" class=\"btn btn-primary btn-component\" tabindex=\"0\">Click</button></div><div class=\"display-flex justify-content-between gap-10 center-block height-50\"><button type=\"button\" class=\"btn btn-primary btn-component\" tabindex=\"0\">Click</button><button type=\"button\" class=\"btn btn-primary btn-component\" tabindex=\"0\">Click</button></div><div class=\"display-flex justify-content-between gap-10 center-block height-50\"><button type=\"button\" class=\"btn btn-primary btn-component\" tabindex=\"0\">Click</button><button type=\"button\" class=\"btn btn-primary btn-component\" tabindex=\"0\">Click</button><button type=\"button\" class=\"btn btn-primary btn-component\" tabindex=\"0\">Click</button></div></div></div><hr><div class=\"display-grid grid-cols-2\"><div class=\"display-flex justify-content-between gap-10 center-block\"><div class=\"display-flex align-items-center justify-content-center\" data-test=\"info-overlay\"><span class=\"rioglyph rioglyph-info-sign text-color-info text-size-18\"></span></div><div class=\"display-flex align-items-center justify-content-center\" data-test=\"info-overlay\"><span class=\"rioglyph rioglyph-info-sign text-color-info text-size-18\"></span></div><div class=\"display-flex align-items-center justify-content-center\" data-test=\"info-overlay\"><span class=\"rioglyph rioglyph-info-sign text-color-info text-size-18\"></span></div></div><div class=\"display-flex justify-content-between gap-10 center-block\"><div class=\"display-flex align-items-center justify-content-center\" data-test=\"info-overlay\"><span class=\"rioglyph rioglyph-info-sign text-color-info text-size-18\"></span></div><div class=\"display-flex align-items-center justify-content-center\" data-test=\"info-overlay\"><span class=\"rioglyph rioglyph-info-sign text-color-info text-size-18\"></span></div><div class=\"display-flex align-items-center justify-content-center\" data-test=\"info-overlay\"><span class=\"rioglyph rioglyph-info-sign text-color-info text-size-18\"></span></div></div></div></div>",
22
+ "tabs": [
23
+ {
24
+ "label": "React",
25
+ "language": "tsx",
26
+ "code": "import Button from '@rio-cloud/rio-uikit/Button';\nimport Tooltip from '@rio-cloud/rio-uikit/Tooltip';\nimport OverlayTrigger from '@rio-cloud/rio-uikit/OverlayTrigger';\nimport type { Placement } from '@rio-cloud/rio-uikit/values/Placement';\n\nimport { getNames } from '../../../utils/mapUtils';\n\nconst tip = <span>Tooltip</span>;\n\nconst tooltipPlacements = {\n top: [\n {\n name: 'top-start',\n },\n {\n name: 'top',\n },\n {\n name: 'top-end',\n },\n ],\n middle: [\n {\n name: 'left',\n },\n {\n name: 'right',\n },\n ],\n bottom: [\n {\n name: 'bottom-start',\n },\n {\n name: 'bottom',\n },\n {\n name: 'bottom-end',\n },\n ],\n};\n\nconst eachPlacementTop = getNames(tooltipPlacements.top);\nconst eachPlacementMiddle = getNames(tooltipPlacements.middle);\nconst eachPlacementBottom = getNames(tooltipPlacements.bottom);\n\nexport default () => (\n <>\n <div className='display-grid grid-cols-1 grid-cols-2-sm gap-20'>\n <div className='padding-15'>\n <div className='display-flex justify-content-between gap-10 center-block height-50'>\n {eachPlacementTop.map((placement: Placement) => (\n <OverlayTrigger\n key={crypto.randomUUID()}\n placement={placement}\n overlay={\n <Tooltip id='tooltip' allowOnTouch>\n {tip}\n </Tooltip>\n }\n >\n <Button bsStyle='primary'>Hover</Button>\n </OverlayTrigger>\n ))}\n </div>\n <div className='display-flex justify-content-between gap-10 center-block height-50'>\n {eachPlacementMiddle.map((placement: Placement) => (\n <OverlayTrigger\n key={crypto.randomUUID()}\n placement={placement}\n overlay={\n <Tooltip id='tooltip' allowOnTouch>\n {tip}\n </Tooltip>\n }\n >\n <Button bsStyle='primary'>Hover</Button>\n </OverlayTrigger>\n ))}\n </div>\n <div className='display-flex justify-content-between gap-10 center-block height-50'>\n {eachPlacementBottom.map((placement: Placement) => (\n <OverlayTrigger\n key={crypto.randomUUID()}\n placement={placement}\n overlay={\n <Tooltip id='tooltip' allowOnTouch>\n {tip}\n </Tooltip>\n }\n >\n <Button bsStyle='primary'>Hover</Button>\n </OverlayTrigger>\n ))}\n </div>\n </div>\n <div className='padding-15'>\n <div className='display-flex justify-content-between gap-10 center-block height-50'>\n {eachPlacementTop.map((placement: Placement) => (\n <OverlayTrigger\n key={crypto.randomUUID()}\n placement={placement}\n trigger='click'\n overlay={\n <Tooltip id='tooltip' allowOnTouch>\n {tip}\n </Tooltip>\n }\n >\n <Button bsStyle='primary'>Click</Button>\n </OverlayTrigger>\n ))}\n </div>\n <div className='display-flex justify-content-between gap-10 center-block height-50'>\n {eachPlacementMiddle.map((placement: Placement) => (\n <OverlayTrigger\n key={crypto.randomUUID()}\n placement={placement}\n trigger='click'\n overlay={\n <Tooltip id='tooltip' allowOnTouch>\n {tip}\n </Tooltip>\n }\n >\n <Button bsStyle='primary'>Click</Button>\n </OverlayTrigger>\n ))}\n </div>\n <div className='display-flex justify-content-between gap-10 center-block height-50'>\n {eachPlacementBottom.map((placement: Placement) => (\n <OverlayTrigger\n key={crypto.randomUUID()}\n placement={placement}\n trigger='click'\n overlay={\n <Tooltip id='tooltip' allowOnTouch>\n {tip}\n </Tooltip>\n }\n >\n <Button bsStyle='primary'>Click</Button>\n </OverlayTrigger>\n ))}\n </div>\n </div>\n </div>\n <hr />\n <div className='display-grid grid-cols-2'>\n <div className='display-flex justify-content-between gap-10 center-block'>\n {eachPlacementTop.map((placement: Placement) => (\n <OverlayTrigger\n key={crypto.randomUUID()}\n placement={placement}\n delay={200}\n overlay={\n <Tooltip id='tooltip' allowOnTouch>\n {tip}\n </Tooltip>\n }\n >\n <div\n className='display-flex align-items-center justify-content-center'\n data-test='info-overlay'\n >\n <span className='rioglyph rioglyph-info-sign text-color-info text-size-18' />\n </div>\n </OverlayTrigger>\n ))}\n </div>\n <div className='display-flex justify-content-between gap-10 center-block'>\n {eachPlacementBottom.map((placement: Placement) => (\n <OverlayTrigger\n key={crypto.randomUUID()}\n placement={placement}\n delay={{ show: 1000, hide: 500 }}\n overlay={\n <Tooltip id='tooltip' allowOnTouch>\n {tip}\n </Tooltip>\n }\n >\n <div\n className='display-flex align-items-center justify-content-center'\n data-test='info-overlay'\n >\n <span className='rioglyph rioglyph-info-sign text-color-info text-size-18' />\n </div>\n </OverlayTrigger>\n ))}\n </div>\n </div>\n </>\n);"
27
+ },
28
+ {
29
+ "label": "HTML",
30
+ "language": "html",
31
+ "code": "<div class=\"display-grid grid-cols-1 grid-cols-2-sm gap-20\">\n <div class=\"padding-15\">\n <div class=\"display-flex justify-content-between gap-10 center-block height-50\">\n <button type=\"button\" class=\"btn btn-primary btn-component\" tabindex=\"0\">Hover</button>\n <button type=\"button\" class=\"btn btn-primary btn-component\" tabindex=\"0\">Hover</button>\n <button type=\"button\" class=\"btn btn-primary btn-component\" tabindex=\"0\">Hover</button>\n </div>\n <div class=\"display-flex justify-content-between gap-10 center-block height-50\">\n <button type=\"button\" class=\"btn btn-primary btn-component\" tabindex=\"0\">Hover</button>\n <button type=\"button\" class=\"btn btn-primary btn-component\" tabindex=\"0\">Hover</button>\n </div>\n <div class=\"display-flex justify-content-between gap-10 center-block height-50\">\n <button type=\"button\" class=\"btn btn-primary btn-component\" tabindex=\"0\">Hover</button>\n <button type=\"button\" class=\"btn btn-primary btn-component\" tabindex=\"0\">Hover</button>\n <button type=\"button\" class=\"btn btn-primary btn-component\" tabindex=\"0\">Hover</button>\n </div>\n </div>\n <div class=\"padding-15\">\n <div class=\"display-flex justify-content-between gap-10 center-block height-50\">\n <button type=\"button\" class=\"btn btn-primary btn-component\" tabindex=\"0\">Click</button>\n <button type=\"button\" class=\"btn btn-primary btn-component\" tabindex=\"0\">Click</button>\n <button type=\"button\" class=\"btn btn-primary btn-component\" tabindex=\"0\">Click</button>\n </div>\n <div class=\"display-flex justify-content-between gap-10 center-block height-50\">\n <button type=\"button\" class=\"btn btn-primary btn-component\" tabindex=\"0\">Click</button>\n <button type=\"button\" class=\"btn btn-primary btn-component\" tabindex=\"0\">Click</button>\n </div>\n <div class=\"display-flex justify-content-between gap-10 center-block height-50\">\n <button type=\"button\" class=\"btn btn-primary btn-component\" tabindex=\"0\">Click</button>\n <button type=\"button\" class=\"btn btn-primary btn-component\" tabindex=\"0\">Click</button>\n <button type=\"button\" class=\"btn btn-primary btn-component\" tabindex=\"0\">Click</button>\n </div>\n </div>\n</div>\n<hr>\n<div class=\"display-grid grid-cols-2\">\n <div class=\"display-flex justify-content-between gap-10 center-block\">\n <div class=\"display-flex align-items-center justify-content-center\" data-test=\"info-overlay\">\n <span class=\"rioglyph rioglyph-info-sign text-color-info text-size-18\">\n </span>\n </div>\n <div class=\"display-flex align-items-center justify-content-center\" data-test=\"info-overlay\">\n <span class=\"rioglyph rioglyph-info-sign text-color-info text-size-18\">\n </span>\n </div>\n <div class=\"display-flex align-items-center justify-content-center\" data-test=\"info-overlay\">\n <span class=\"rioglyph rioglyph-info-sign text-color-info text-size-18\">\n </span>\n </div>\n </div>\n <div class=\"display-flex justify-content-between gap-10 center-block\">\n <div class=\"display-flex align-items-center justify-content-center\" data-test=\"info-overlay\">\n <span class=\"rioglyph rioglyph-info-sign text-color-info text-size-18\">\n </span>\n </div>\n <div class=\"display-flex align-items-center justify-content-center\" data-test=\"info-overlay\">\n <span class=\"rioglyph rioglyph-info-sign text-color-info text-size-18\">\n </span>\n </div>\n <div class=\"display-flex align-items-center justify-content-center\" data-test=\"info-overlay\">\n <span class=\"rioglyph rioglyph-info-sign text-color-info text-size-18\">\n </span>\n </div>\n </div>\n</div>"
32
+ },
33
+ {
34
+ "label": "Props",
35
+ "language": "json",
36
+ "code": null,
37
+ "props": [
38
+ {
39
+ "heading": "Tooltip",
40
+ "rows": [
41
+ {
42
+ "name": "id",
43
+ "type": "String / Number",
44
+ "default": "",
45
+ "description": "An HTML id attribute, necessary for accessibility."
46
+ },
47
+ {
48
+ "name": "placement",
49
+ "type": "String",
50
+ "default": "",
51
+ "description": "Sets the direction the Tooltip is positioned towards. This is generally provided by the OverlayTrigger component positioning the tooltip. Possible values are: auto-start, auto, auto-end, top-start, top, top-end, bottom-start, bottom, bottom-end, right-start, right, right-end, left-start, left or left-end"
52
+ },
53
+ {
54
+ "name": "tooltipStyle",
55
+ "type": "String",
56
+ "default": "default",
57
+ "description": "Defines the look of the tooltip. Possible values are: default, onboarding"
58
+ },
59
+ {
60
+ "name": "textAlignment",
61
+ "type": "String",
62
+ "default": "center",
63
+ "description": "Defines the position of the text content. Possible values are: left, right, center"
64
+ },
65
+ {
66
+ "name": "width",
67
+ "type": "String",
68
+ "default": "",
69
+ "description": "Defines the width of the tooltip. Possible values are: auto, 100, 150, 200, 250, 300, 350, 400, 450, 500"
70
+ },
71
+ {
72
+ "name": "allowOnTouch",
73
+ "type": "bool",
74
+ "default": "false",
75
+ "description": "Render Tooltips on mobile devices."
76
+ },
77
+ {
78
+ "name": "className",
79
+ "type": "String",
80
+ "default": "",
81
+ "description": "Additional classes to be set on the wrapper element."
82
+ },
83
+ {
84
+ "name": "innerClassName",
85
+ "type": "String",
86
+ "default": "",
87
+ "description": "Additional classes to be set on the inner element."
88
+ },
89
+ {
90
+ "name": "children",
91
+ "type": "any",
92
+ "default": "",
93
+ "description": "Any element to be rendered inside the tooltip."
94
+ }
95
+ ]
96
+ },
97
+ {
98
+ "heading": "OverlayTrigger",
99
+ "rows": [
100
+ {
101
+ "name": "trigger",
102
+ "type": "'click' | 'hover' | 'focus'",
103
+ "default": "hover",
104
+ "description": "Specify which action or actions trigger Overlay visibility. Possible values are: OverlayTrigger.TRIGGER_CLICK , OverlayTrigger.TRIGGER_HOVER, OverlayTrigger.TRIGGER_HOVER or 'click', 'hover', 'focus'"
105
+ },
106
+ {
107
+ "name": "delay",
108
+ "type": "Number / Object",
109
+ "default": "",
110
+ "description": "A millisecond delay amount to show and hide the Overlay once triggered."
111
+ },
112
+ {
113
+ "name": "└show",
114
+ "type": "Number",
115
+ "default": "",
116
+ "description": "A millisecond delay amount before showing the Overlay once triggered."
117
+ },
118
+ {
119
+ "name": "└hide",
120
+ "type": "Number",
121
+ "default": "",
122
+ "description": "A millisecond delay amount before hiding the Overlay once triggered."
123
+ },
124
+ {
125
+ "name": "defaultShow",
126
+ "type": "Boolean",
127
+ "default": "",
128
+ "description": "The initial visibility state of the Overlay. For more nuanced visibility control, consider using the Overlay component directly."
129
+ },
130
+ {
131
+ "name": "overlay",
132
+ "type": "Node",
133
+ "default": "",
134
+ "description": "An element or text to overlay next to the target."
135
+ },
136
+ {
137
+ "name": "placement",
138
+ "type": "String",
139
+ "default": "",
140
+ "description": "Sets the direction the overlay is positioned towards. Possible values are: auto-start, auto, auto-end, top-start, top, top-end, bottom-start, bottom, bottom-end, right-start, right, right-end, left-start, left or left-end"
141
+ },
142
+ {
143
+ "name": "popperConfig",
144
+ "type": "Object",
145
+ "default": "",
146
+ "description": "A Popper.js config object passed to the the underlying popper instance."
147
+ }
148
+ ]
149
+ }
150
+ ]
151
+ }
152
+ ]
153
+ }
154
+ ]
155
+ },
156
+ {
157
+ "heading": "SimpleTooltip",
158
+ "body": "",
159
+ "examples": [
160
+ {
161
+ "caption": "Example 2",
162
+ "rendered_html": "<div class=\"playground-content bg-white padding-20 padding-bottom-25\" style=\"width: 100%;\"><div><label>Simple tooltip with auto placement:</label><div class=\"margin-bottom-25 display-flex gap-25\"><button type=\"button\" class=\"btn btn-default btn-component\" tabindex=\"0\">Hover me</button></div><label>Simple tooltip with bottom placement:</label><div class=\"margin-bottom-25 display-flex gap-25\"><div class=\"tag\"><div class=\"tag-inner\">Hover me</div></div><div class=\"uikit-switch\"><label class=\"switch-label label-position-right\"><input type=\"checkbox\" class=\"switch-input\"><div class=\"switch-content\" style=\"color: var(--brand-primary); min-width: 40px;\"><div class=\"switch-handle\"></div></div>Hover me</label></div></div><label>Simple tooltip within text:</label><div>Lorem ipsum dolor sit amet, <a href=\"#\">consectetur adipiscing</a> 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. <a href=\"#\">Fusce ac ligula bibendum</a>, rutrum libero quis, viverra sem. Interdum etmalesuada 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><hr><span class=\"rioglyph rioglyph-info-sign text-color-info text-size-18\"></span></div></div>",
163
+ "tabs": [
164
+ {
165
+ "label": "React",
166
+ "language": "tsx",
167
+ "code": "import SimpleTooltip from '@rio-cloud/rio-uikit/SimpleTooltip';\nimport Button from '@rio-cloud/rio-uikit/Button';\nimport Tag from '@rio-cloud/rio-uikit/Tag';\nimport Switch from '@rio-cloud/rio-uikit/Switch';\n\nconst content = <span>Lorem ipsum dolor sit amet, consetetur sadipscing elitr.</span>;\n\nexport default () => (\n <div>\n <label>Simple tooltip with auto placement:</label>\n <div className='margin-bottom-25 display-flex gap-25'>\n <SimpleTooltip content={content}>\n <Button>Hover me</Button>\n </SimpleTooltip>\n </div>\n <label>Simple tooltip with bottom placement:</label>\n <div className='margin-bottom-25 display-flex gap-25'>\n <SimpleTooltip content={content} placement='bottom'>\n <Tag>Hover me</Tag>\n </SimpleTooltip>\n <SimpleTooltip content={content} placement='bottom'>\n <Switch>Hover me</Switch>\n </SimpleTooltip>\n </div>\n <label>Simple tooltip within text:</label>\n <div>\n Lorem ipsum dolor sit amet,{' '}\n <SimpleTooltip content={content} placement='top'>\n <a href='#'>consectetur adipiscing</a>\n </SimpleTooltip>{' '}\n elit. In pharetra dui eget massa efficitur aliquam condimentum in felis. Integer eget metus vel nunc\n efficitur iaculis. Vivamus elementum ante et est sagittis semper. Ut consectetur enim nec tortor scelerisque\n tincidunt.{' '}\n <SimpleTooltip content={content} placement='top'>\n <a href='#'>Fusce ac ligula bibendum</a>\n </SimpleTooltip>\n , rutrum libero quis, viverra sem. Interdum etmalesuada fames ac ante ipsum primis in faucibus. Duis ut\n hendrerit massa, in molestie elit. Sed vitae orci ac purus volutpat posuere ac ut neque. Mauris ante orci,\n semper finibus lorem in, fringilla pretium velit.\n </div>\n <hr />\n <SimpleTooltip placement='bottom-start' content={<span>Hello</span>} width={100}>\n <span className='rioglyph rioglyph-info-sign text-color-info text-size-18' />\n </SimpleTooltip>\n </div>\n);"
168
+ },
169
+ {
170
+ "label": "HTML",
171
+ "language": "html",
172
+ "code": "<div>\n <label>Simple tooltip with auto placement:</label>\n <div class=\"margin-bottom-25 display-flex gap-25\">\n <button type=\"button\" class=\"btn btn-default btn-component\" tabindex=\"0\">Hover me</button>\n </div>\n <label>Simple tooltip with bottom placement:</label>\n <div class=\"margin-bottom-25 display-flex gap-25\">\n <div class=\"tag\">\n <div class=\"tag-inner\">Hover me</div>\n </div>\n <div class=\"uikit-switch\">\n <label class=\"switch-label label-position-right\">\n <input type=\"checkbox\" class=\"switch-input\">\n <div class=\"switch-content\" style=\"color: var(--brand-primary); min-width: 40px;\">\n <div class=\"switch-handle\">\n </div>\n </div>Hover me\n </label>\n </div>\n </div>\n <label>Simple tooltip within text:</label>\n <div>Lorem ipsum dolor sit amet, <a href=\"#\">consectetur adipiscing</a> 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. <a href=\"#\">Fusce ac ligula bibendum</a>, rutrum libero quis, viverra sem. Interdum etmalesuada 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 <hr>\n <span class=\"rioglyph rioglyph-info-sign text-color-info text-size-18\">\n </span>\n</div>"
173
+ },
174
+ {
175
+ "label": "Props",
176
+ "language": "json",
177
+ "code": null,
178
+ "props": [
179
+ {
180
+ "heading": "SimpleTooltip",
181
+ "rows": [
182
+ {
183
+ "name": "trigger",
184
+ "type": "String",
185
+ "default": "hover",
186
+ "description": "Specify which action or actions trigger Overlay visibility. Possible values are: 'click', 'hover', 'focus'"
187
+ },
188
+ {
189
+ "name": "placement",
190
+ "type": "String",
191
+ "default": "AUTO",
192
+ "description": "Sets the direction the Tooltip is positioned towards. This is generally provided by the OverlayTrigger component positioning the tooltip. Possible values are: auto-start, auto, auto-end, top-start, top, top-end, bottom-start, bottom, bottom-end, right-start, right, right-end, left-start, left or left-end"
193
+ },
194
+ {
195
+ "name": "content",
196
+ "type": "String / Node",
197
+ "default": "",
198
+ "description": "The tooltip content."
199
+ },
200
+ {
201
+ "name": "targetRef",
202
+ "type": "Ref",
203
+ "default": "",
204
+ "description": "The react ref object assigned to the target of the tooltip."
205
+ },
206
+ {
207
+ "name": "delay",
208
+ "type": "Number / Object",
209
+ "default": "",
210
+ "description": "A millisecond delay amount to show the Overlay once triggered."
211
+ },
212
+ {
213
+ "name": "└show",
214
+ "type": "Number",
215
+ "default": "",
216
+ "description": "A millisecond delay amount before showing the Overlay once triggered."
217
+ },
218
+ {
219
+ "name": "└hide",
220
+ "type": "Number",
221
+ "default": "",
222
+ "description": "A millisecond delay amount before hiding the Overlay once triggered."
223
+ },
224
+ {
225
+ "name": "textAlignment",
226
+ "type": "String",
227
+ "default": "center",
228
+ "description": "Defines the position of the text content. Possible values are: left, right, center"
229
+ },
230
+ {
231
+ "name": "width",
232
+ "type": "String",
233
+ "default": "",
234
+ "description": "Defines the width of the tooltip. Possible values are: auto, 100, 150, 200, 250, 300, 350, 400, 450, 500"
235
+ },
236
+ {
237
+ "name": "className",
238
+ "type": "String",
239
+ "default": "",
240
+ "description": "Additional classes to be set on the wrapper element."
241
+ },
242
+ {
243
+ "name": "innerClassName",
244
+ "type": "String",
245
+ "default": "",
246
+ "description": "Additional classes to be set on the inner element."
247
+ },
248
+ {
249
+ "name": "popperConfig",
250
+ "type": "Object",
251
+ "default": "",
252
+ "description": "A Popper.js config object passed to the the underlying popper instance."
253
+ },
254
+ {
255
+ "name": "children",
256
+ "type": "Node",
257
+ "default": "",
258
+ "description": "The target node."
259
+ }
260
+ ]
261
+ }
262
+ ]
263
+ }
264
+ ]
265
+ }
266
+ ]
267
+ }
268
+ ],
269
+ "see_also": []
270
+ }
@@ -0,0 +1,175 @@
1
+ {
2
+ "metadata": {
3
+ "captured_at": "2025-11-21T12:07:47.173Z",
4
+ "source": "https://uikit.developers.rio.cloud/#components/virtualList",
5
+ "category": "Components",
6
+ "section": "Content",
7
+ "slug": "components/virtuallist",
8
+ "version": "v1.13.2",
9
+ "hash_algorithm": "sha256",
10
+ "hash": "2d601fb47c834c8b282e44d07d64a30f072c1a3ba8f95d8b651e9a0d4c4ea479"
11
+ },
12
+ "title": "VirtualList",
13
+ "lead": "The VirtualList component is designed for efficiently rendering large lists of items by only displaying the visible portion of the list, also known as windowing.",
14
+ "content": [
15
+ {
16
+ "heading": "VirtualList",
17
+ "body": "It allows a specified number of items outside the viewport for smoother scrolling. It optimizes performance by minimizing DOM updates and provides a customizable rendering function for each item, making it ideal for applications that require dynamic and responsive list displays.",
18
+ "examples": [
19
+ {
20
+ "caption": "Example 1",
21
+ "rendered_html": "<div class=\"playground-content bg-lighter padding-20 padding-bottom-25\" style=\"width: 100%;\"><div class=\"max-width-600 padding-y-20\"><label class=\"padding-left-10\">Virtual list with 100 items</label><div class=\"VirtualList overflow-y-auto max-height-400 padding-x-10\" style=\"height: 100%; position: relative; overflow: auto;\"><div class=\"position-relative\" style=\"height: 7000px;\"><div class=\"VirtualListItemContainer \"><div class=\"VirtualListItemWrapper \" data-index=\"0\" style=\"position: absolute; transform: translateY(0px); width: 100%; will-change: transform;\"><div class=\"margin-bottom-10 padding-y-10 padding-x-15 bg-white rounded shadow-accent text-color-darker\"><div class=\"text-medium\" data-test-ignore=\"text\">Item 1</div><div class=\"word-break\" data-test-ignore=\"text\">Bibendum, semper orci velit. consectetur eget ipsum ac sagittis massa ac sem.</div></div></div><div class=\"VirtualListItemWrapper \" data-index=\"1\" style=\"position: absolute; transform: translateY(70px); width: 100%; will-change: transform;\"><div class=\"margin-bottom-10 padding-y-10 padding-x-15 bg-white rounded shadow-accent text-color-darker\"><div class=\"text-medium\" data-test-ignore=\"text\">Item 2</div><div class=\"word-break\" data-test-ignore=\"text\">\nLorem sem. eget et in ut faucibus. adipiscing in, fames libero ac eget Fusce vel</div></div></div><div class=\"VirtualListItemWrapper \" data-index=\"2\" style=\"position: absolute; transform: translateY(140px); width: 100%; will-change: transform;\"><div class=\"margin-bottom-10 padding-y-10 padding-x-15 bg-white rounded shadow-accent text-color-darker\"><div class=\"text-medium\" data-test-ignore=\"text\">Item 3</div><div class=\"word-break\" data-test-ignore=\"text\">Eget ac Vivamus in viverra ut Duis Mauris pretium ac elit.</div></div></div><div class=\"VirtualListItemWrapper \" data-index=\"3\" style=\"position: absolute; transform: translateY(210px); width: 100%; will-change: transform;\"><div class=\"margin-bottom-10 padding-y-10 padding-x-15 bg-white rounded shadow-accent text-color-darker\"><div class=\"text-medium\" data-test-ignore=\"text\">Item 4</div><div class=\"word-break\" data-test-ignore=\"text\">Bibendum, volutpat ac ac pretium in, fringilla ante ipsum orci malesuada amet, libero enim</div></div></div><div class=\"VirtualListItemWrapper \" data-index=\"4\" style=\"position: absolute; transform: translateY(280px); width: 100%; will-change: transform;\"><div class=\"margin-bottom-10 padding-y-10 padding-x-15 bg-white rounded shadow-accent text-color-darker\"><div class=\"text-medium\" data-test-ignore=\"text\">Item 5</div><div class=\"word-break\" data-test-ignore=\"text\">Consectetur In condimentum semper amet, \nLorem nec libero in efficitur</div></div></div><div class=\"VirtualListItemWrapper \" data-index=\"5\" style=\"position: absolute; transform: translateY(350px); width: 100%; will-change: transform;\"><div class=\"margin-bottom-10 padding-y-10 padding-x-15 bg-white rounded shadow-accent text-color-darker\"><div class=\"text-medium\" data-test-ignore=\"text\">Item 6</div><div class=\"word-break\" data-test-ignore=\"text\">Ut hendrerit elementum primis in Duis posuere enim in, ac hendrerit dolor Ut est eget</div></div></div><div class=\"VirtualListItemWrapper \" data-index=\"6\" style=\"position: absolute; transform: translateY(420px); width: 100%; will-change: transform;\"><div class=\"margin-bottom-10 padding-y-10 padding-x-15 bg-white rounded shadow-accent text-color-darker\"><div class=\"text-medium\" data-test-ignore=\"text\">Item 7</div><div class=\"word-break\" data-test-ignore=\"text\">In ante eget in pretium elementum lorem ac consectetur in,</div></div></div><div class=\"VirtualListItemWrapper \" data-index=\"7\" style=\"position: absolute; transform: translateY(490px); width: 100%; will-change: transform;\"><div class=\"margin-bottom-10 padding-y-10 padding-x-15 bg-white rounded shadow-accent text-color-darker\"><div class=\"text-medium\" data-test-ignore=\"text\">Item 8</div><div class=\"word-break\" data-test-ignore=\"text\">Felis. ut semper. eget Fusce Sed et orci,</div></div></div><div class=\"VirtualListItemWrapper \" data-index=\"8\" style=\"position: absolute; transform: translateY(560px); width: 100%; will-change: transform;\"><div class=\"margin-bottom-10 padding-y-10 padding-x-15 bg-white rounded shadow-accent text-color-darker\"><div class=\"text-medium\" data-test-ignore=\"text\">Item 9</div><div class=\"word-break\" data-test-ignore=\"text\">Ante Integer quis, volutpat Integer \nLorem velit. In</div></div></div><div class=\"VirtualListItemWrapper \" data-index=\"9\" style=\"position: absolute; transform: translateY(630px); width: 100%; will-change: transform;\"><div class=\"margin-bottom-10 padding-y-10 padding-x-15 bg-white rounded shadow-accent text-color-darker\"><div class=\"text-medium\" data-test-ignore=\"text\">Item 10</div><div class=\"word-break\" data-test-ignore=\"text\">Ut et posuere Sed in</div></div></div></div></div></div></div></div>",
22
+ "tabs": [
23
+ {
24
+ "label": "React",
25
+ "language": "tsx",
26
+ "code": "import VirtualList from '@rio-cloud/rio-uikit/VirtualList';\n\nimport { generateDummyText } from '../../../utils/data';\n\nconst ITEM_COUNT = 100;\n\nexport default () => {\n const items = Array.from({ length: ITEM_COUNT }, (_, index) => ({\n title: `Item ${index + 1}`,\n description: generateDummyText(),\n }));\n\n return (\n <div className='max-width-600 padding-y-20'>\n <label className='padding-left-10'>Virtual list with {ITEM_COUNT} items</label>\n <VirtualList\n items={items}\n renderItem={(item, index) => (\n <div\n key={index}\n className='margin-bottom-10 padding-y-10 padding-x-15 bg-white rounded shadow-accent text-color-darker'\n >\n <div className='text-medium' data-test-ignore='text'>\n {item.title}\n </div>\n <div className='word-break' data-test-ignore='text'>\n {item.description}\n </div>\n </div>\n )}\n className='max-height-400 padding-x-10'\n />\n </div>\n );\n};"
27
+ },
28
+ {
29
+ "label": "HTML",
30
+ "language": "html",
31
+ "code": "<div class=\"max-width-600 padding-y-20\">\n <label class=\"padding-left-10\">Virtual list with 100 items</label>\n <div class=\"VirtualList overflow-y-auto max-height-400 padding-x-10\" style=\"height: 100%; position: relative; overflow: auto;\">\n <div class=\"position-relative\" style=\"height: 7000px;\">\n <div class=\"VirtualListItemContainer \">\n <div class=\"VirtualListItemWrapper \" data-index=\"0\" style=\"position: absolute; transform: translateY(0px); width: 100%; will-change: transform;\">\n <div class=\"margin-bottom-10 padding-y-10 padding-x-15 bg-white rounded shadow-accent text-color-darker\">\n <div class=\"text-medium\" data-test-ignore=\"text\">Item 1</div>\n <div class=\"word-break\" data-test-ignore=\"text\">Bibendum, semper orci velit. consectetur eget ipsum ac sagittis massa ac sem.</div>\n </div>\n </div>\n <div class=\"VirtualListItemWrapper \" data-index=\"1\" style=\"position: absolute; transform: translateY(70px); width: 100%; will-change: transform;\">\n <div class=\"margin-bottom-10 padding-y-10 padding-x-15 bg-white rounded shadow-accent text-color-darker\">\n <div class=\"text-medium\" data-test-ignore=\"text\">Item 2</div>\n <div class=\"word-break\" data-test-ignore=\"text\">\n Lorem sem. eget et in ut faucibus. adipiscing in, fames libero ac eget Fusce vel</div>\n </div>\n </div>\n <div class=\"VirtualListItemWrapper \" data-index=\"2\" style=\"position: absolute; transform: translateY(140px); width: 100%; will-change: transform;\">\n <div class=\"margin-bottom-10 padding-y-10 padding-x-15 bg-white rounded shadow-accent text-color-darker\">\n <div class=\"text-medium\" data-test-ignore=\"text\">Item 3</div>\n <div class=\"word-break\" data-test-ignore=\"text\">Eget ac Vivamus in viverra ut Duis Mauris pretium ac elit.</div>\n </div>\n </div>\n <div class=\"VirtualListItemWrapper \" data-index=\"3\" style=\"position: absolute; transform: translateY(210px); width: 100%; will-change: transform;\">\n <div class=\"margin-bottom-10 padding-y-10 padding-x-15 bg-white rounded shadow-accent text-color-darker\">\n <div class=\"text-medium\" data-test-ignore=\"text\">Item 4</div>\n <div class=\"word-break\" data-test-ignore=\"text\">Bibendum, volutpat ac ac pretium in, fringilla ante ipsum orci malesuada amet, libero enim</div>\n </div>\n </div>\n <div class=\"VirtualListItemWrapper \" data-index=\"4\" style=\"position: absolute; transform: translateY(280px); width: 100%; will-change: transform;\">\n <div class=\"margin-bottom-10 padding-y-10 padding-x-15 bg-white rounded shadow-accent text-color-darker\">\n <div class=\"text-medium\" data-test-ignore=\"text\">Item 5</div>\n <div class=\"word-break\" data-test-ignore=\"text\">Consectetur In condimentum semper amet,\n Lorem nec libero in efficitur</div>\n </div>\n </div>\n <div class=\"VirtualListItemWrapper \" data-index=\"5\" style=\"position: absolute; transform: translateY(350px); width: 100%; will-change: transform;\">\n <div class=\"margin-bottom-10 padding-y-10 padding-x-15 bg-white rounded shadow-accent text-color-darker\">\n <div class=\"text-medium\" data-test-ignore=\"text\">Item 6</div>\n <div class=\"word-break\" data-test-ignore=\"text\">Ut hendrerit elementum primis in Duis posuere enim in, ac hendrerit dolor Ut est eget</div>\n </div>\n </div>\n <div class=\"VirtualListItemWrapper \" data-index=\"6\" style=\"position: absolute; transform: translateY(420px); width: 100%; will-change: transform;\">\n <div class=\"margin-bottom-10 padding-y-10 padding-x-15 bg-white rounded shadow-accent text-color-darker\">\n <div class=\"text-medium\" data-test-ignore=\"text\">Item 7</div>\n <div class=\"word-break\" data-test-ignore=\"text\">In ante eget in pretium elementum lorem ac consectetur in,</div>\n </div>\n </div>\n <div class=\"VirtualListItemWrapper \" data-index=\"7\" style=\"position: absolute; transform: translateY(490px); width: 100%; will-change: transform;\">\n <div class=\"margin-bottom-10 padding-y-10 padding-x-15 bg-white rounded shadow-accent text-color-darker\">\n <div class=\"text-medium\" data-test-ignore=\"text\">Item 8</div>\n <div class=\"word-break\" data-test-ignore=\"text\">Felis. ut semper. eget Fusce Sed et orci,</div>\n </div>\n </div>\n <div class=\"VirtualListItemWrapper \" data-index=\"8\" style=\"position: absolute; transform: translateY(560px); width: 100%; will-change: transform;\">\n <div class=\"margin-bottom-10 padding-y-10 padding-x-15 bg-white rounded shadow-accent text-color-darker\">\n <div class=\"text-medium\" data-test-ignore=\"text\">Item 9</div>\n <div class=\"word-break\" data-test-ignore=\"text\">Ante Integer quis, volutpat Integer\n Lorem velit. In</div>\n </div>\n </div>\n <div class=\"VirtualListItemWrapper \" data-index=\"9\" style=\"position: absolute; transform: translateY(630px); width: 100%; will-change: transform;\">\n <div class=\"margin-bottom-10 padding-y-10 padding-x-15 bg-white rounded shadow-accent text-color-darker\">\n <div class=\"text-medium\" data-test-ignore=\"text\">Item 10</div>\n <div class=\"word-break\" data-test-ignore=\"text\">Ut et posuere Sed in</div>\n </div>\n </div>\n </div>\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": "items",
43
+ "type": "T[]",
44
+ "default": "",
45
+ "description": "The array of items to be rendered in the list."
46
+ },
47
+ {
48
+ "name": "renderItem",
49
+ "type": "(item: T, index: number) => React.ReactElement",
50
+ "default": "",
51
+ "description": "A function that renders an item given its data and index."
52
+ },
53
+ {
54
+ "name": "overscanCount",
55
+ "type": "number",
56
+ "default": "3",
57
+ "description": "The number of items to render outside the visible area for smoother scrolling."
58
+ },
59
+ {
60
+ "name": "defaultHeight",
61
+ "type": "number",
62
+ "default": "50",
63
+ "description": "The default height for items if their height cannot be determined."
64
+ },
65
+ {
66
+ "name": "scrollContainerRef",
67
+ "type": "React.RefObject<HTMLElement>",
68
+ "default": "",
69
+ "description": "Optional ref to an external scroll container. Use this when VirtualList is inside a scrollable container."
70
+ },
71
+ {
72
+ "name": "containerClassName",
73
+ "type": "string",
74
+ "default": "",
75
+ "description": "Additional classNames for the container of the list items."
76
+ },
77
+ {
78
+ "name": "listItemWrapperClassName",
79
+ "type": "string",
80
+ "default": "",
81
+ "description": "Additional classNames for each individual list item wrapper. This wrapper is required for proper positioning each item in the list using an absolute top value."
82
+ },
83
+ {
84
+ "name": "className",
85
+ "type": "string",
86
+ "default": "",
87
+ "description": "Additional classNames for the outer list container."
88
+ }
89
+ ]
90
+ }
91
+ ]
92
+ }
93
+ ]
94
+ },
95
+ {
96
+ "caption": "Example 2",
97
+ "rendered_html": "<div class=\"playground-content bg-white padding-20 padding-bottom-25\" style=\"width: 100%;\"><div class=\"padding-20\"><label>Virtual list with 5000 items</label><div class=\"max-width-600 max-height-400 overflow-y-auto\"><div class=\"VirtualList overflow-y-auto border rounded\" style=\"height: 360000px; position: relative; overflow: visible;\"><div class=\"position-relative\" style=\"height: auto;\"><div class=\"VirtualListItemContainer list-group\"><div class=\"VirtualListItemWrapper list-group-item padding-y-15\" data-index=\"0\" style=\"position: absolute; transform: translateY(0px); width: 100%; will-change: transform;\"><div class=\"display-flex gap-15 align-items-center\"><div class=\"Avatar bg-lightest\" style=\"height: 40px;\"><span class=\"Avatar-icon rioglyph rioglyph-truck \"></span></div><div><div class=\"text-medium\" data-test-ignore=\"text\">Vehicle 1</div><div class=\"word-break\" data-test-ignore=\"text\">Elementum finibus Integer lorem malesuada pretium fames in</div></div></div></div><div class=\"VirtualListItemWrapper list-group-item padding-y-15\" data-index=\"1\" style=\"position: absolute; transform: translateY(69px); width: 100%; will-change: transform;\"><div class=\"display-flex gap-15 align-items-center\"><div class=\"Avatar bg-lightest\" style=\"height: 40px;\"><span class=\"Avatar-icon rioglyph rioglyph-truck \"></span></div><div><div class=\"text-medium\" data-test-ignore=\"text\">Vehicle 2</div><div class=\"word-break\" data-test-ignore=\"text\">Tortor in semper. massa Duis eget nunc sem. malesuada</div></div></div></div><div class=\"VirtualListItemWrapper list-group-item padding-y-15\" data-index=\"2\" style=\"position: absolute; transform: translateY(139px); width: 100%; will-change: transform;\"><div class=\"display-flex gap-15 align-items-center\"><div class=\"Avatar bg-lightest\" style=\"height: 40px;\"><span class=\"Avatar-icon rioglyph rioglyph-truck \"></span></div><div><div class=\"text-medium\" data-test-ignore=\"text\">Vehicle 3</div><div class=\"word-break\" data-test-ignore=\"text\">Pharetra ac iaculis. pharetra in, finibus pharetra felis. Sed ligula quis, semper. vel</div></div></div></div><div class=\"VirtualListItemWrapper list-group-item padding-y-15\" data-index=\"3\" style=\"position: absolute; transform: translateY(209px); width: 100%; will-change: transform;\"><div class=\"display-flex gap-15 align-items-center\"><div class=\"Avatar bg-lightest\" style=\"height: 40px;\"><span class=\"Avatar-icon rioglyph rioglyph-truck \"></span></div><div><div class=\"text-medium\" data-test-ignore=\"text\">Vehicle 4</div><div class=\"word-break\" data-test-ignore=\"text\">Efficitur semper. sem. neque. aliquam orci nec ante in, In</div></div></div></div><div class=\"VirtualListItemWrapper list-group-item padding-y-15\" data-index=\"4\" style=\"position: absolute; transform: translateY(279px); width: 100%; will-change: transform;\"><div class=\"display-flex gap-15 align-items-center\"><div class=\"Avatar bg-lightest\" style=\"height: 40px;\"><span class=\"Avatar-icon rioglyph rioglyph-truck \"></span></div><div><div class=\"text-medium\" data-test-ignore=\"text\">Vehicle 5</div><div class=\"word-break\" data-test-ignore=\"text\">Vel dui Interdum amet, Vivamus in ipsum</div></div></div></div><div class=\"VirtualListItemWrapper list-group-item padding-y-15\" data-index=\"5\" style=\"position: absolute; transform: translateY(349px); width: 100%; will-change: transform;\"><div class=\"display-flex gap-15 align-items-center\"><div class=\"Avatar bg-lightest\" style=\"height: 40px;\"><span class=\"Avatar-icon rioglyph rioglyph-truck \"></span></div><div><div class=\"text-medium\" data-test-ignore=\"text\">Vehicle 6</div><div class=\"word-break\" data-test-ignore=\"text\">Felis. purus consectetur dolor efficitur ut libero neque. massa, efficitur dui consectetur fringilla molestie posuere</div></div></div></div><div class=\"VirtualListItemWrapper list-group-item padding-y-15\" data-index=\"6\" style=\"position: absolute; transform: translateY(439px); width: 100%; will-change: transform;\"><div class=\"display-flex gap-15 align-items-center\"><div class=\"Avatar bg-lightest\" style=\"height: 40px;\"><span class=\"Avatar-icon rioglyph rioglyph-truck \"></span></div><div><div class=\"text-medium\" data-test-ignore=\"text\">Vehicle 7</div><div class=\"word-break\" data-test-ignore=\"text\">Condimentum ante bibendum, orci, adipiscing sem. vel eget malesuada quis,</div></div></div></div><div class=\"VirtualListItemWrapper list-group-item padding-y-15\" data-index=\"7\" style=\"position: absolute; transform: translateY(509px); width: 100%; will-change: transform;\"><div class=\"display-flex gap-15 align-items-center\"><div class=\"Avatar bg-lightest\" style=\"height: 40px;\"><span class=\"Avatar-icon rioglyph rioglyph-truck \"></span></div><div><div class=\"text-medium\" data-test-ignore=\"text\">Vehicle 8</div><div class=\"word-break\" data-test-ignore=\"text\">Iaculis. Mauris ut semper. bibendum, est finibus</div></div></div></div><div class=\"VirtualListItemWrapper list-group-item padding-y-15\" data-index=\"8\" style=\"position: absolute; transform: translateY(579px); width: 100%; will-change: transform;\"><div class=\"display-flex gap-15 align-items-center\"><div class=\"Avatar bg-lightest\" style=\"height: 40px;\"><span class=\"Avatar-icon rioglyph rioglyph-truck \"></span></div><div><div class=\"text-medium\" data-test-ignore=\"text\">Vehicle 9</div><div class=\"word-break\" data-test-ignore=\"text\">Massa Interdum ligula iaculis. vel fringilla pretium</div></div></div></div><div class=\"VirtualListItemWrapper list-group-item padding-y-15\" data-index=\"9\" style=\"position: absolute; transform: translateY(649px); width: 100%; will-change: transform;\"><div class=\"display-flex gap-15 align-items-center\"><div class=\"Avatar bg-lightest\" style=\"height: 40px;\"><span class=\"Avatar-icon rioglyph rioglyph-truck \"></span></div><div><div class=\"text-medium\" data-test-ignore=\"text\">Vehicle 10</div><div class=\"word-break\" data-test-ignore=\"text\">Enim consectetur in molestie Integer Interdum</div></div></div></div></div></div></div></div></div></div>",
98
+ "tabs": [
99
+ {
100
+ "label": "React",
101
+ "language": "tsx",
102
+ "code": "import { useRef } from 'react';\n\nimport Avatar from '@rio-cloud/rio-uikit/Avatar';\nimport VirtualList from '@rio-cloud/rio-uikit/VirtualList';\n\nimport { generateDummyText } from '../../../utils/data';\n\nconst DemoItem = ({ title, description }: { title: string; description: string }) => (\n <div className='display-flex gap-15 align-items-center'>\n <Avatar iconName='truck' backgroundColor='bg-lightest' />\n <div>\n <div className='text-medium' data-test-ignore='text'>\n {title}\n </div>\n <div className='word-break' data-test-ignore='text'>\n {description}\n </div>\n </div>\n </div>\n);\n\nconst ITEM_COUNT = 5_000;\n\n// This demo includes:\n// - A custom item component\n// - List group styling for the inner container and the items wrapper\n// - The max height is defined outside on the parent of the VirtualList using a scrollContainerRef\n// - A custom overscan count, means more items are loaded outside the visible window\n\nexport default () => {\n const items = Array.from({ length: ITEM_COUNT }, (_, index) => ({\n title: `Vehicle ${index + 1}`,\n description: generateDummyText(),\n }));\n\n const scrollContainerRef = useRef<HTMLDivElement>(null);\n\n return (\n <div className='padding-20'>\n <label>Virtual list with {ITEM_COUNT} items</label>\n <div ref={scrollContainerRef} className='max-width-600 max-height-400 overflow-y-auto'>\n <VirtualList\n items={items}\n renderItem={(item, index) => (\n <DemoItem key={index} title={item.title} description={item.description} />\n )}\n className='border rounded'\n containerClassName='list-group'\n listItemWrapperClassName='list-group-item padding-y-15'\n defaultHeight={71}\n overscanCount={5}\n scrollContainerRef={scrollContainerRef}\n />\n </div>\n </div>\n );\n};"
103
+ },
104
+ {
105
+ "label": "HTML",
106
+ "language": "html",
107
+ "code": "<div class=\"padding-20\">\n <label>Virtual list with 5000 items</label>\n <div class=\"max-width-600 max-height-400 overflow-y-auto\">\n <div class=\"VirtualList overflow-y-auto border rounded\" style=\"height: 360000px; position: relative; overflow: visible;\">\n <div class=\"position-relative\" style=\"height: auto;\">\n <div class=\"VirtualListItemContainer list-group\">\n <div class=\"VirtualListItemWrapper list-group-item padding-y-15\" data-index=\"0\" style=\"position: absolute; transform: translateY(0px); width: 100%; will-change: transform;\">\n <div class=\"display-flex gap-15 align-items-center\">\n <div class=\"Avatar bg-lightest\" style=\"height: 40px;\">\n <span class=\"Avatar-icon rioglyph rioglyph-truck \">\n </span>\n </div>\n <div>\n <div class=\"text-medium\" data-test-ignore=\"text\">Vehicle 1</div>\n <div class=\"word-break\" data-test-ignore=\"text\">Elementum finibus Integer lorem malesuada pretium fames in</div>\n </div>\n </div>\n </div>\n <div class=\"VirtualListItemWrapper list-group-item padding-y-15\" data-index=\"1\" style=\"position: absolute; transform: translateY(69px); width: 100%; will-change: transform;\">\n <div class=\"display-flex gap-15 align-items-center\">\n <div class=\"Avatar bg-lightest\" style=\"height: 40px;\">\n <span class=\"Avatar-icon rioglyph rioglyph-truck \">\n </span>\n </div>\n <div>\n <div class=\"text-medium\" data-test-ignore=\"text\">Vehicle 2</div>\n <div class=\"word-break\" data-test-ignore=\"text\">Tortor in semper. massa Duis eget nunc sem. malesuada</div>\n </div>\n </div>\n </div>\n <div class=\"VirtualListItemWrapper list-group-item padding-y-15\" data-index=\"2\" style=\"position: absolute; transform: translateY(139px); width: 100%; will-change: transform;\">\n <div class=\"display-flex gap-15 align-items-center\">\n <div class=\"Avatar bg-lightest\" style=\"height: 40px;\">\n <span class=\"Avatar-icon rioglyph rioglyph-truck \">\n </span>\n </div>\n <div>\n <div class=\"text-medium\" data-test-ignore=\"text\">Vehicle 3</div>\n <div class=\"word-break\" data-test-ignore=\"text\">Pharetra ac iaculis. pharetra in, finibus pharetra felis. Sed ligula quis, semper. vel</div>\n </div>\n </div>\n </div>\n <div class=\"VirtualListItemWrapper list-group-item padding-y-15\" data-index=\"3\" style=\"position: absolute; transform: translateY(209px); width: 100%; will-change: transform;\">\n <div class=\"display-flex gap-15 align-items-center\">\n <div class=\"Avatar bg-lightest\" style=\"height: 40px;\">\n <span class=\"Avatar-icon rioglyph rioglyph-truck \">\n </span>\n </div>\n <div>\n <div class=\"text-medium\" data-test-ignore=\"text\">Vehicle 4</div>\n <div class=\"word-break\" data-test-ignore=\"text\">Efficitur semper. sem. neque. aliquam orci nec ante in, In</div>\n </div>\n </div>\n </div>\n <div class=\"VirtualListItemWrapper list-group-item padding-y-15\" data-index=\"4\" style=\"position: absolute; transform: translateY(279px); width: 100%; will-change: transform;\">\n <div class=\"display-flex gap-15 align-items-center\">\n <div class=\"Avatar bg-lightest\" style=\"height: 40px;\">\n <span class=\"Avatar-icon rioglyph rioglyph-truck \">\n </span>\n </div>\n <div>\n <div class=\"text-medium\" data-test-ignore=\"text\">Vehicle 5</div>\n <div class=\"word-break\" data-test-ignore=\"text\">Vel dui Interdum amet, Vivamus in ipsum</div>\n </div>\n </div>\n </div>\n <div class=\"VirtualListItemWrapper list-group-item padding-y-15\" data-index=\"5\" style=\"position: absolute; transform: translateY(349px); width: 100%; will-change: transform;\">\n <div class=\"display-flex gap-15 align-items-center\">\n <div class=\"Avatar bg-lightest\" style=\"height: 40px;\">\n <span class=\"Avatar-icon rioglyph rioglyph-truck \">\n </span>\n </div>\n <div>\n <div class=\"text-medium\" data-test-ignore=\"text\">Vehicle 6</div>\n <div class=\"word-break\" data-test-ignore=\"text\">Felis. purus consectetur dolor efficitur ut libero neque. massa, efficitur dui consectetur fringilla molestie posuere</div>\n </div>\n </div>\n </div>\n <div class=\"VirtualListItemWrapper list-group-item padding-y-15\" data-index=\"6\" style=\"position: absolute; transform: translateY(439px); width: 100%; will-change: transform;\">\n <div class=\"display-flex gap-15 align-items-center\">\n <div class=\"Avatar bg-lightest\" style=\"height: 40px;\">\n <span class=\"Avatar-icon rioglyph rioglyph-truck \">\n </span>\n </div>\n <div>\n <div class=\"text-medium\" data-test-ignore=\"text\">Vehicle 7</div>\n <div class=\"word-break\" data-test-ignore=\"text\">Condimentum ante bibendum, orci, adipiscing sem. vel eget malesuada quis,</div>\n </div>\n </div>\n </div>\n <div class=\"VirtualListItemWrapper list-group-item padding-y-15\" data-index=\"7\" style=\"position: absolute; transform: translateY(509px); width: 100%; will-change: transform;\">\n <div class=\"display-flex gap-15 align-items-center\">\n <div class=\"Avatar bg-lightest\" style=\"height: 40px;\">\n <span class=\"Avatar-icon rioglyph rioglyph-truck \">\n </span>\n </div>\n <div>\n <div class=\"text-medium\" data-test-ignore=\"text\">Vehicle 8</div>\n <div class=\"word-break\" data-test-ignore=\"text\">Iaculis. Mauris ut semper. bibendum, est finibus</div>\n </div>\n </div>\n </div>\n <div class=\"VirtualListItemWrapper list-group-item padding-y-15\" data-index=\"8\" style=\"position: absolute; transform: translateY(579px); width: 100%; will-change: transform;\">\n <div class=\"display-flex gap-15 align-items-center\">\n <div class=\"Avatar bg-lightest\" style=\"height: 40px;\">\n <span class=\"Avatar-icon rioglyph rioglyph-truck \">\n </span>\n </div>\n <div>\n <div class=\"text-medium\" data-test-ignore=\"text\">Vehicle 9</div>\n <div class=\"word-break\" data-test-ignore=\"text\">Massa Interdum ligula iaculis. vel fringilla pretium</div>\n </div>\n </div>\n </div>\n <div class=\"VirtualListItemWrapper list-group-item padding-y-15\" data-index=\"9\" style=\"position: absolute; transform: translateY(649px); width: 100%; will-change: transform;\">\n <div class=\"display-flex gap-15 align-items-center\">\n <div class=\"Avatar bg-lightest\" style=\"height: 40px;\">\n <span class=\"Avatar-icon rioglyph rioglyph-truck \">\n </span>\n </div>\n <div>\n <div class=\"text-medium\" data-test-ignore=\"text\">Vehicle 10</div>\n <div class=\"word-break\" data-test-ignore=\"text\">Enim consectetur in molestie Integer Interdum</div>\n </div>\n </div>\n </div>\n </div>\n </div>\n </div>\n </div>\n</div>"
108
+ },
109
+ {
110
+ "label": "Props",
111
+ "language": "json",
112
+ "code": null,
113
+ "props": [
114
+ {
115
+ "heading": null,
116
+ "rows": [
117
+ {
118
+ "name": "items",
119
+ "type": "T[]",
120
+ "default": "",
121
+ "description": "The array of items to be rendered in the list."
122
+ },
123
+ {
124
+ "name": "renderItem",
125
+ "type": "(item: T, index: number) => React.ReactElement",
126
+ "default": "",
127
+ "description": "A function that renders an item given its data and index."
128
+ },
129
+ {
130
+ "name": "overscanCount",
131
+ "type": "number",
132
+ "default": "3",
133
+ "description": "The number of items to render outside the visible area for smoother scrolling."
134
+ },
135
+ {
136
+ "name": "defaultHeight",
137
+ "type": "number",
138
+ "default": "50",
139
+ "description": "The default height for items if their height cannot be determined."
140
+ },
141
+ {
142
+ "name": "scrollContainerRef",
143
+ "type": "React.RefObject<HTMLElement>",
144
+ "default": "",
145
+ "description": "Optional ref to an external scroll container. Use this when VirtualList is inside a scrollable container."
146
+ },
147
+ {
148
+ "name": "containerClassName",
149
+ "type": "string",
150
+ "default": "",
151
+ "description": "Additional classNames for the container of the list items."
152
+ },
153
+ {
154
+ "name": "listItemWrapperClassName",
155
+ "type": "string",
156
+ "default": "",
157
+ "description": "Additional classNames for each individual list item wrapper. This wrapper is required for proper positioning each item in the list using an absolute top value."
158
+ },
159
+ {
160
+ "name": "className",
161
+ "type": "string",
162
+ "default": "",
163
+ "description": "Additional classNames for the outer list container."
164
+ }
165
+ ]
166
+ }
167
+ ]
168
+ }
169
+ ]
170
+ }
171
+ ]
172
+ }
173
+ ],
174
+ "see_also": []
175
+ }