@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,269 @@
1
+ {
2
+ "metadata": {
3
+ "captured_at": "2025-11-21T12:07:51.559Z",
4
+ "source": "https://uikit.developers.rio.cloud/#components/feedback",
5
+ "category": "Components",
6
+ "section": "Misc",
7
+ "slug": "components/feedback",
8
+ "version": "v1.13.2",
9
+ "hash_algorithm": "sha256",
10
+ "hash": "d7bb1380a5cd9c708c7579ed7849eafe0d4dbafaf58a8c8a35778c29ca5db2d7"
11
+ },
12
+ "title": "FeedbackRating",
13
+ "lead": null,
14
+ "content": [
15
+ {
16
+ "heading": "FeedbackRating",
17
+ "body": "",
18
+ "examples": [
19
+ {
20
+ "caption": "Extremely dissatisfied",
21
+ "rendered_html": "<div class=\"playground-content bg-white padding-20 padding-bottom-25\" style=\"width: 100%;\"><div><div class=\"FeedbackRating\"><div class=\"text-medium text-size-16 margin-bottom-10\">How do you feel about this feature</div><div class=\"display-flex gap-10 align-items-start text-size-14 margin-bottom-25\"><div><div class=\"display-flex flex-wrap gap-10\"><button type=\"button\" class=\"btn btn-default btn-toggle btn-component rounded-circle aspect-ratio-1 \" tabindex=\"0\">1</button><button type=\"button\" class=\"btn btn-default btn-toggle btn-component rounded-circle aspect-ratio-1 \" tabindex=\"0\">2</button><button type=\"button\" class=\"btn btn-default btn-toggle btn-component rounded-circle aspect-ratio-1 \" tabindex=\"0\">3</button><button type=\"button\" class=\"btn btn-default btn-toggle btn-component rounded-circle aspect-ratio-1 \" tabindex=\"0\">4</button><button type=\"button\" class=\"btn btn-default btn-toggle btn-component rounded-circle aspect-ratio-1 \" tabindex=\"0\">5</button><button type=\"button\" class=\"btn btn-default btn-toggle btn-component rounded-circle aspect-ratio-1 \" tabindex=\"0\">6</button><button type=\"button\" class=\"btn btn-default btn-toggle btn-component rounded-circle aspect-ratio-1 \" tabindex=\"0\">7</button><button type=\"button\" class=\"btn btn-default btn-toggle btn-component rounded-circle aspect-ratio-1 \" tabindex=\"0\">8</button><button type=\"button\" class=\"btn btn-default btn-toggle btn-component rounded-circle aspect-ratio-1 \" tabindex=\"0\">9</button><button type=\"button\" class=\"btn btn-default btn-toggle btn-component rounded-circle aspect-ratio-1 \" tabindex=\"0\">10</button></div><div class=\"display-flex justify-content-between margin-top-5 gap-25\"><label class=\"word-wrap text-color-dark\">Extremely dissatisfied</label><label class=\"word-wrap text-color-dark\">Extremely satisfied</label></div></div></div></div><div class=\"Divider position-relative width-100pct\" style=\"padding-top: 15px; padding-bottom: 15px;\"><div class=\"divider-line bg-light\" style=\"width: 100%; height: 1px;\"></div></div><div class=\"FeedbackRating\"><div class=\"text-medium text-size-16 margin-bottom-10\">Rate your experience with this feature</div><div class=\"display-flex gap-10 align-items-center text-size-14 margin-bottom-25\"><div class=\"display-flex align-items-center text-size-200pct\"><span class=\"text-color-gray rioglyph rioglyph-thumbs-down\"></span></div><div><div class=\"display-flex flex-wrap gap-10\"><button type=\"button\" class=\"btn btn-default btn-toggle btn-component \" tabindex=\"0\">1</button><button type=\"button\" class=\"btn btn-default btn-toggle btn-component \" tabindex=\"0\">2</button><button type=\"button\" class=\"btn btn-default btn-toggle btn-component \" tabindex=\"0\">3</button><button type=\"button\" class=\"btn btn-default btn-toggle btn-component \" tabindex=\"0\">4</button><button type=\"button\" class=\"btn btn-default btn-toggle btn-component \" tabindex=\"0\">5</button></div></div><div class=\"display-flex align-items-center text-size-200pct\"><span class=\"text-color-gray rioglyph rioglyph-thumbs-up\"></span></div></div></div><div class=\"Divider position-relative width-100pct\" style=\"padding-top: 15px; padding-bottom: 15px;\"><div class=\"divider-line bg-light\" style=\"width: 100%; height: 1px;\"></div></div><div class=\"FeedbackRating\"><div class=\"text-medium text-size-16 margin-bottom-10\">Give us feedback</div><div class=\"display-flex gap-10 align-items-center text-size-14 margin-bottom-25\"><div><div class=\"display-flex flex-wrap gap-10\"><button type=\"button\" class=\"btn btn-default btn-toggle btn-component btn-icon-only border-none \" tabindex=\"0\"><span class=\"rioglyph rioglyph-face-frown\"></span></button><button type=\"button\" class=\"btn btn-default btn-toggle btn-component btn-icon-only border-none \" tabindex=\"0\"><span class=\"rioglyph rioglyph-face-neutral\"></span></button><button type=\"button\" class=\"btn btn-default btn-toggle btn-component btn-icon-only border-none \" tabindex=\"0\"><span class=\"rioglyph rioglyph-face-smile\"></span></button><button type=\"button\" class=\"btn btn-default btn-toggle btn-component btn-icon-only border-none \" tabindex=\"0\"><span class=\"rioglyph rioglyph-heart\"></span></button></div></div></div></div><div class=\"Divider position-relative width-100pct\" style=\"padding-top: 15px; padding-bottom: 15px;\"><div class=\"divider-line bg-light\" style=\"width: 100%; height: 1px;\"></div></div><div class=\"FeedbackRating\"><div class=\"text-medium text-size-16 margin-bottom-10\">Rate your experience with our product</div><div class=\"display-flex gap-10 align-items-center text-size-14 margin-bottom-25\"><div><div class=\"display-flex flex-wrap gap-10\"><button type=\"button\" class=\"btn btn-default btn-toggle btn-component \" tabindex=\"0\">1</button><button type=\"button\" class=\"btn btn-default btn-toggle btn-component \" tabindex=\"0\">2</button><button type=\"button\" class=\"btn btn-default btn-toggle btn-component \" tabindex=\"0\">3</button><button type=\"button\" class=\"btn btn-default btn-toggle btn-component \" tabindex=\"0\">4</button><button type=\"button\" class=\"btn btn-default btn-toggle btn-component \" tabindex=\"0\">5</button></div></div><div class=\"display-flex align-items-center text-size-200pct\"><div class=\"display-flex align-items-center gap-5 margin-left-5 text-size-16\"><span class=\"text-color-success rioglyph rioglyph-star\"></span><span class=\"text-color-darker\">Stars</span></div></div></div></div><div class=\"Divider position-relative width-100pct\" style=\"padding-top: 15px; padding-bottom: 15px;\"><div class=\"divider-line bg-light\" style=\"width: 100%; height: 1px;\"></div></div><div class=\"FeedbackRating\"><div class=\"text-medium text-size-16 margin-bottom-10\">How likely is it that you would recommend us to a friend or colleague?</div><div class=\"display-flex gap-10 align-items-start text-size-14 margin-bottom-25\"><div><div class=\"display-flex flex-wrap gap-10\"><button type=\"button\" class=\"btn btn-danger btn-toggle btn-component rounded-circle aspect-ratio-1 btn-outline btn-sm \" tabindex=\"0\">1</button><button type=\"button\" class=\"btn btn-danger btn-toggle btn-component rounded-circle aspect-ratio-1 btn-outline btn-sm \" tabindex=\"0\">2</button><button type=\"button\" class=\"btn btn-danger btn-toggle btn-component rounded-circle aspect-ratio-1 btn-outline btn-sm \" tabindex=\"0\">3</button><button type=\"button\" class=\"btn btn-danger btn-toggle btn-component rounded-circle aspect-ratio-1 btn-outline btn-sm \" tabindex=\"0\">4</button><button type=\"button\" class=\"btn btn-danger btn-toggle btn-component rounded-circle aspect-ratio-1 btn-outline btn-sm \" tabindex=\"0\">5</button><button type=\"button\" class=\"btn btn-danger btn-toggle btn-component rounded-circle aspect-ratio-1 btn-outline btn-sm \" tabindex=\"0\">6</button><button type=\"button\" class=\"btn btn-warning btn-toggle btn-component rounded-circle aspect-ratio-1 btn-outline btn-sm \" tabindex=\"0\">7</button><button type=\"button\" class=\"btn btn-warning btn-toggle btn-component rounded-circle aspect-ratio-1 btn-outline btn-sm \" tabindex=\"0\">8</button><button type=\"button\" class=\"btn btn-success btn-toggle btn-component rounded-circle aspect-ratio-1 btn-outline btn-sm \" tabindex=\"0\">9</button><button type=\"button\" class=\"btn btn-success btn-toggle btn-component rounded-circle aspect-ratio-1 btn-outline btn-sm \" tabindex=\"0\">10</button></div><div class=\"display-flex justify-content-between margin-top-5 gap-25\"><label class=\"word-wrap text-color-dark\">Not likely at all</label><label class=\"word-wrap text-color-dark\">Very likely</label></div></div></div></div></div></div>",
22
+ "tabs": [
23
+ {
24
+ "label": "React",
25
+ "language": "tsx",
26
+ "code": "import Divider from '@rio-cloud/rio-uikit/Divider';\nimport FeedbackRating from '@rio-cloud/rio-uikit/FeedbackRating';\n\nexport default () => {\n const handleRatingChanged = (value: number | undefined) => {\n console.log(value);\n };\n\n return (\n <div>\n <FeedbackRating\n count={10}\n headline='How do you feel about this feature'\n leftLabel='Extremely dissatisfied'\n rightLabel='Extremely satisfied'\n circleButtons\n onRatingChanged={handleRatingChanged}\n />\n <Divider />\n <FeedbackRating\n count={5}\n headline='Rate your experience with this feature'\n leadingIcon={<span className='text-color-gray rioglyph rioglyph-thumbs-down' />}\n trailingIcon={<span className='text-color-gray rioglyph rioglyph-thumbs-up' />}\n onRatingChanged={handleRatingChanged}\n />\n <Divider />\n <FeedbackRating\n count={4}\n headline='Give us feedback'\n buttonClassName='btn-icon-only border-none'\n buttonLabels={[\n <span key='face-frown' className='rioglyph rioglyph-face-frown' />,\n <span key='face-neutral' className='rioglyph rioglyph-face-neutral' />,\n <span key='face-smile' className='rioglyph rioglyph-face-smile' />,\n <span key='face-smile' className='rioglyph rioglyph-heart' />,\n ]}\n onRatingChanged={handleRatingChanged}\n />\n <Divider />\n <FeedbackRating\n count={5}\n headline='Rate your experience with our product'\n trailingIcon={\n <div className='display-flex align-items-center gap-5 margin-left-5 text-size-16'>\n <span className='text-color-success rioglyph rioglyph-star' />\n <span className='text-color-darker'>Stars</span>\n </div>\n }\n onRatingChanged={handleRatingChanged}\n />\n <Divider />\n <FeedbackRating\n count={10}\n headline='How likely is it that you would recommend us to a friend or colleague?'\n leftLabel='Not likely at all'\n rightLabel='Very likely'\n circleButtons\n buttonClassName='btn-outline btn-sm'\n buttonStyles={[\n {\n bsStyle: 'danger',\n },\n {\n bsStyle: 'danger',\n },\n {\n bsStyle: 'danger',\n },\n {\n bsStyle: 'danger',\n },\n {\n bsStyle: 'danger',\n },\n {\n bsStyle: 'danger',\n },\n {\n bsStyle: 'warning',\n },\n {\n bsStyle: 'warning',\n },\n {\n bsStyle: 'success',\n },\n {\n bsStyle: 'success',\n },\n ]}\n onRatingChanged={handleRatingChanged}\n />\n </div>\n );\n};"
27
+ },
28
+ {
29
+ "label": "HTML",
30
+ "language": "html",
31
+ "code": "<div>\n <div class=\"FeedbackRating\">\n <div class=\"text-medium text-size-16 margin-bottom-10\">How do you feel about this feature</div>\n <div class=\"display-flex gap-10 align-items-start text-size-14 margin-bottom-25\">\n <div>\n <div class=\"display-flex flex-wrap gap-10\">\n <button type=\"button\" class=\"btn btn-default btn-toggle btn-component rounded-circle aspect-ratio-1 \" tabindex=\"0\">1</button>\n <button type=\"button\" class=\"btn btn-default btn-toggle btn-component rounded-circle aspect-ratio-1 \" tabindex=\"0\">2</button>\n <button type=\"button\" class=\"btn btn-default btn-toggle btn-component rounded-circle aspect-ratio-1 \" tabindex=\"0\">3</button>\n <button type=\"button\" class=\"btn btn-default btn-toggle btn-component rounded-circle aspect-ratio-1 \" tabindex=\"0\">4</button>\n <button type=\"button\" class=\"btn btn-default btn-toggle btn-component rounded-circle aspect-ratio-1 \" tabindex=\"0\">5</button>\n <button type=\"button\" class=\"btn btn-default btn-toggle btn-component rounded-circle aspect-ratio-1 \" tabindex=\"0\">6</button>\n <button type=\"button\" class=\"btn btn-default btn-toggle btn-component rounded-circle aspect-ratio-1 \" tabindex=\"0\">7</button>\n <button type=\"button\" class=\"btn btn-default btn-toggle btn-component rounded-circle aspect-ratio-1 \" tabindex=\"0\">8</button>\n <button type=\"button\" class=\"btn btn-default btn-toggle btn-component rounded-circle aspect-ratio-1 \" tabindex=\"0\">9</button>\n <button type=\"button\" class=\"btn btn-default btn-toggle btn-component rounded-circle aspect-ratio-1 \" tabindex=\"0\">10</button>\n </div>\n <div class=\"display-flex justify-content-between margin-top-5 gap-25\">\n <label class=\"word-wrap text-color-dark\">Extremely dissatisfied</label>\n <label class=\"word-wrap text-color-dark\">Extremely satisfied</label>\n </div>\n </div>\n </div>\n </div>\n <div class=\"Divider position-relative width-100pct\" style=\"padding-top: 15px; padding-bottom: 15px;\">\n <div class=\"divider-line bg-light\" style=\"width: 100%; height: 1px;\">\n </div>\n </div>\n <div class=\"FeedbackRating\">\n <div class=\"text-medium text-size-16 margin-bottom-10\">Rate your experience with this feature</div>\n <div class=\"display-flex gap-10 align-items-center text-size-14 margin-bottom-25\">\n <div class=\"display-flex align-items-center text-size-200pct\">\n <span class=\"text-color-gray rioglyph rioglyph-thumbs-down\">\n </span>\n </div>\n <div>\n <div class=\"display-flex flex-wrap gap-10\">\n <button type=\"button\" class=\"btn btn-default btn-toggle btn-component \" tabindex=\"0\">1</button>\n <button type=\"button\" class=\"btn btn-default btn-toggle btn-component \" tabindex=\"0\">2</button>\n <button type=\"button\" class=\"btn btn-default btn-toggle btn-component \" tabindex=\"0\">3</button>\n <button type=\"button\" class=\"btn btn-default btn-toggle btn-component \" tabindex=\"0\">4</button>\n <button type=\"button\" class=\"btn btn-default btn-toggle btn-component \" tabindex=\"0\">5</button>\n </div>\n </div>\n <div class=\"display-flex align-items-center text-size-200pct\">\n <span class=\"text-color-gray rioglyph rioglyph-thumbs-up\">\n </span>\n </div>\n </div>\n </div>\n <div class=\"Divider position-relative width-100pct\" style=\"padding-top: 15px; padding-bottom: 15px;\">\n <div class=\"divider-line bg-light\" style=\"width: 100%; height: 1px;\">\n </div>\n </div>\n <div class=\"FeedbackRating\">\n <div class=\"text-medium text-size-16 margin-bottom-10\">Give us feedback</div>\n <div class=\"display-flex gap-10 align-items-center text-size-14 margin-bottom-25\">\n <div>\n <div class=\"display-flex flex-wrap gap-10\">\n <button type=\"button\" class=\"btn btn-default btn-toggle btn-component btn-icon-only border-none \" tabindex=\"0\">\n <span class=\"rioglyph rioglyph-face-frown\">\n </span>\n </button>\n <button type=\"button\" class=\"btn btn-default btn-toggle btn-component btn-icon-only border-none \" tabindex=\"0\">\n <span class=\"rioglyph rioglyph-face-neutral\">\n </span>\n </button>\n <button type=\"button\" class=\"btn btn-default btn-toggle btn-component btn-icon-only border-none \" tabindex=\"0\">\n <span class=\"rioglyph rioglyph-face-smile\">\n </span>\n </button>\n <button type=\"button\" class=\"btn btn-default btn-toggle btn-component btn-icon-only border-none \" tabindex=\"0\">\n <span class=\"rioglyph rioglyph-heart\">\n </span>\n </button>\n </div>\n </div>\n </div>\n </div>\n <div class=\"Divider position-relative width-100pct\" style=\"padding-top: 15px; padding-bottom: 15px;\">\n <div class=\"divider-line bg-light\" style=\"width: 100%; height: 1px;\">\n </div>\n </div>\n <div class=\"FeedbackRating\">\n <div class=\"text-medium text-size-16 margin-bottom-10\">Rate your experience with our product</div>\n <div class=\"display-flex gap-10 align-items-center text-size-14 margin-bottom-25\">\n <div>\n <div class=\"display-flex flex-wrap gap-10\">\n <button type=\"button\" class=\"btn btn-default btn-toggle btn-component \" tabindex=\"0\">1</button>\n <button type=\"button\" class=\"btn btn-default btn-toggle btn-component \" tabindex=\"0\">2</button>\n <button type=\"button\" class=\"btn btn-default btn-toggle btn-component \" tabindex=\"0\">3</button>\n <button type=\"button\" class=\"btn btn-default btn-toggle btn-component \" tabindex=\"0\">4</button>\n <button type=\"button\" class=\"btn btn-default btn-toggle btn-component \" tabindex=\"0\">5</button>\n </div>\n </div>\n <div class=\"display-flex align-items-center text-size-200pct\">\n <div class=\"display-flex align-items-center gap-5 margin-left-5 text-size-16\">\n <span class=\"text-color-success rioglyph rioglyph-star\">\n </span>\n <span class=\"text-color-darker\">Stars</span>\n </div>\n </div>\n </div>\n </div>\n <div class=\"Divider position-relative width-100pct\" style=\"padding-top: 15px; padding-bottom: 15px;\">\n <div class=\"divider-line bg-light\" style=\"width: 100%; height: 1px;\">\n </div>\n </div>\n <div class=\"FeedbackRating\">\n <div class=\"text-medium text-size-16 margin-bottom-10\">How likely is it that you would recommend us to a friend or colleague?</div>\n <div class=\"display-flex gap-10 align-items-start text-size-14 margin-bottom-25\">\n <div>\n <div class=\"display-flex flex-wrap gap-10\">\n <button type=\"button\" class=\"btn btn-danger btn-toggle btn-component rounded-circle aspect-ratio-1 btn-outline btn-sm \" tabindex=\"0\">1</button>\n <button type=\"button\" class=\"btn btn-danger btn-toggle btn-component rounded-circle aspect-ratio-1 btn-outline btn-sm \" tabindex=\"0\">2</button>\n <button type=\"button\" class=\"btn btn-danger btn-toggle btn-component rounded-circle aspect-ratio-1 btn-outline btn-sm \" tabindex=\"0\">3</button>\n <button type=\"button\" class=\"btn btn-danger btn-toggle btn-component rounded-circle aspect-ratio-1 btn-outline btn-sm \" tabindex=\"0\">4</button>\n <button type=\"button\" class=\"btn btn-danger btn-toggle btn-component rounded-circle aspect-ratio-1 btn-outline btn-sm \" tabindex=\"0\">5</button>\n <button type=\"button\" class=\"btn btn-danger btn-toggle btn-component rounded-circle aspect-ratio-1 btn-outline btn-sm \" tabindex=\"0\">6</button>\n <button type=\"button\" class=\"btn btn-warning btn-toggle btn-component rounded-circle aspect-ratio-1 btn-outline btn-sm \" tabindex=\"0\">7</button>\n <button type=\"button\" class=\"btn btn-warning btn-toggle btn-component rounded-circle aspect-ratio-1 btn-outline btn-sm \" tabindex=\"0\">8</button>\n <button type=\"button\" class=\"btn btn-success btn-toggle btn-component rounded-circle aspect-ratio-1 btn-outline btn-sm \" tabindex=\"0\">9</button>\n <button type=\"button\" class=\"btn btn-success btn-toggle btn-component rounded-circle aspect-ratio-1 btn-outline btn-sm \" tabindex=\"0\">10</button>\n </div>\n <div class=\"display-flex justify-content-between margin-top-5 gap-25\">\n <label class=\"word-wrap text-color-dark\">Not likely at all</label>\n <label class=\"word-wrap text-color-dark\">Very likely</label>\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": "headline",
43
+ "type": "ReactNode",
44
+ "default": "",
45
+ "description": "Optional headline"
46
+ },
47
+ {
48
+ "name": "circleButtons",
49
+ "type": "Boolean",
50
+ "default": "false",
51
+ "description": "Defines whether the buttons are round."
52
+ },
53
+ {
54
+ "name": "buttonClassName",
55
+ "type": "String",
56
+ "default": "",
57
+ "description": "Optional class names applied to the individual buttons."
58
+ },
59
+ {
60
+ "name": "buttonLabels",
61
+ "type": "ReactNode[]",
62
+ "default": "",
63
+ "description": "Array of button labels that will be used instead of the index. There needs to be a label for each button defined."
64
+ },
65
+ {
66
+ "name": "buttonStyles",
67
+ "type": "{ bsSize?: BUTTON_SIZE; bsStyle?: BUTTON_STYLE; variant?: BUTTON_VARIANT, className?: string }[]",
68
+ "default": "",
69
+ "description": "Array of button styles to individually define the button size, style and variant. There needs to be a item for each button defined. See Button component."
70
+ },
71
+ {
72
+ "name": "leftLabel",
73
+ "type": "ReactNode",
74
+ "default": "",
75
+ "description": "Left aligned label to name the lowest rating option."
76
+ },
77
+ {
78
+ "name": "rightLabel",
79
+ "type": "ReactNode",
80
+ "default": "",
81
+ "description": "Right aligned label to name the highest rating option."
82
+ },
83
+ {
84
+ "name": "leadingIcon",
85
+ "type": "ReactNode",
86
+ "default": "",
87
+ "description": "Additional icon placed in front of the rating buttons."
88
+ },
89
+ {
90
+ "name": "trailingIcon",
91
+ "type": "ReactNode",
92
+ "default": "",
93
+ "description": "Additional icon placed after the rating buttons."
94
+ },
95
+ {
96
+ "name": "onRatingChanged",
97
+ "type": "(rating: number | undefined) => void",
98
+ "default": "",
99
+ "description": "Callback triggered when the rating changes."
100
+ }
101
+ ]
102
+ }
103
+ ]
104
+ }
105
+ ]
106
+ }
107
+ ]
108
+ },
109
+ {
110
+ "heading": "FeedbackInlineButtons",
111
+ "body": "",
112
+ "examples": [
113
+ {
114
+ "caption": "Was this helpful?",
115
+ "rendered_html": "<div class=\"playground-content bg-white padding-20 padding-bottom-25\" style=\"width: 100%;\"><div><h5 class=\"margin-bottom-20\">Subtle request for usefulness</h5><div class=\"height-40 display-flex align-items-center\"><div style=\"opacity: 1; transform: none;\"><div class=\"display-flex flex-wrap align-items-center column-gap-15 row-gap-5 user-select-none\"><div class=\"text-color-dark\">Was this helpful?</div><div class=\"btn-toolbar gap-5\"><button type=\"button\" class=\"btn btn-muted btn-sm btn-component\" tabindex=\"0\"><span class=\"rioglyph rioglyph-face-frown text-color-danger\"></span><span>Not really</span></button><button type=\"button\" class=\"btn btn-muted btn-sm btn-component\" tabindex=\"0\"><span class=\"rioglyph rioglyph-face-neutral text-color-warning\"></span><span>Kind of</span></button><button type=\"button\" class=\"btn btn-muted btn-sm btn-component\" tabindex=\"0\"><span class=\"rioglyph rioglyph-face-smile text-color-success\"></span><span>Yes, it was</span></button></div></div></div></div><button type=\"button\" class=\"btn btn-default btn-sm btn-component margin-top-25\" tabindex=\"0\">Reset</button><div class=\"Divider position-relative width-100pct\" style=\"padding-top: 15px; padding-bottom: 15px;\"><div class=\"divider-line bg-light\" style=\"width: 100%; height: 1px;\"></div></div><h5 class=\"margin-bottom-20\">Another variation of inline request for usefulness</h5><div class=\"height-40 display-flex align-items-center\"><div style=\"opacity: 1; transform: none;\"><div class=\"display-flex flex-wrap align-items-center column-gap-15 row-gap-5 user-select-none\"><div class=\"btn-toolbar gap-5\"><div class=\"height-30 display-flex align-items-center rounded text-color-dark hover-text-color-darker cursor-pointer \"><div class=\"height-25 aspect-ratio-1 bg-lightest rounded-circle display-flex justify-content-center align-items-center\"><span class=\"rioglyph rioglyph-thumbs-up text-size-20 text-color-dark\"></span></div><span class=\"padding-x-5\">Helpful</span></div><div class=\"height-30 display-flex align-items-center rounded text-color-dark hover-text-color-darker cursor-pointer margin-left-10\"><div class=\"height-25 aspect-ratio-1 bg-lightest rounded-circle display-flex justify-content-center align-items-center\"><span class=\"rioglyph rioglyph-thumbs-down text-size-20 text-color-dark\"></span></div><span class=\"padding-x-5\">Not helpful</span></div></div></div></div></div><button type=\"button\" class=\"btn btn-default btn-sm btn-component margin-top-25\" tabindex=\"0\">Reset</button></div></div>",
116
+ "tabs": [
117
+ {
118
+ "label": "React",
119
+ "language": "tsx",
120
+ "code": "import { useRef, useState } from 'react';\n\nimport { motion } from '@rio-cloud/rio-uikit/framer-motion';\nimport Button from '@rio-cloud/rio-uikit/Button';\nimport Fade from '@rio-cloud/rio-uikit/Fade';\nimport FeedbackInlineButtons from '@rio-cloud/rio-uikit/FeedbackInlineButtons';\nimport Divider from '@rio-cloud/rio-uikit/Divider';\nimport useHover from '@rio-cloud/rio-uikit/useHover';\n\nexport default () => {\n const [hasVoted, setHasVoted] = useState(false);\n const [hasVoted2, setHasVoted2] = useState(false);\n\n const handleVote = () => setHasVoted(true);\n const handleVote2 = () => setHasVoted2(true);\n\n return (\n <div>\n <h5 className='margin-bottom-20'>Subtle request for usefulness</h5>\n <div className='height-40 display-flex align-items-center'>\n <Fade>\n {hasVoted ? (\n <motion.div\n initial={{ opacity: 0, x: 20 }}\n animate={{ opacity: 1, x: 0 }}\n className='display-flex gap-5 align-items-center'\n >\n <div className='text-color-success text-size-18 line-height-20'>\n <span className='rioglyph rioglyph-ok-sign' />\n </div>\n <div className='text-color-dark'>Thank you for your feedback</div>\n </motion.div>\n ) : (\n <FeedbackInlineButtons\n headline='Was this helpful?'\n buttons={[\n <Button key='no' bsStyle='muted' bsSize='sm' onClick={handleVote}>\n <span className='rioglyph rioglyph-face-frown text-color-danger' />\n <span>Not really</span>\n </Button>,\n <Button key='kinda' bsStyle='muted' bsSize='sm' onClick={handleVote}>\n <span className='rioglyph rioglyph-face-neutral text-color-warning' />\n <span>Kind of</span>\n </Button>,\n <Button key='yes' bsStyle='muted' bsSize='sm' onClick={handleVote}>\n <span className='rioglyph rioglyph-face-smile text-color-success' />\n <span>Yes, it was</span>\n </Button>,\n ]}\n />\n )}\n </Fade>\n </div>\n <Button bsSize='sm' className='margin-top-25' onClick={() => setHasVoted(false)}>\n Reset\n </Button>\n <Divider />\n <h5 className='margin-bottom-20'>Another variation of inline request for usefulness</h5>\n <div className='height-40 display-flex align-items-center'>\n <Fade>\n {hasVoted2 ? (\n <motion.div\n initial={{ opacity: 0, x: 20 }}\n animate={{ opacity: 1, x: 0 }}\n className='display-flex gap-5 align-items-center'\n >\n <div className='text-color-success text-size-18 line-height-20'>\n <span className='rioglyph rioglyph-ok-sign' />\n </div>\n <div className='text-color-dark'>Thank you for your feedback</div>\n </motion.div>\n ) : (\n <FeedbackInlineButtons\n buttons={[\n <CustomInlineButton\n key='1'\n onClick={handleVote2}\n icon='rioglyph-thumbs-up'\n text='Helpful'\n />,\n <CustomInlineButton\n key='2'\n onClick={handleVote2}\n icon='rioglyph-thumbs-down'\n text='Not helpful'\n className='margin-left-10'\n />,\n ]}\n />\n )}\n </Fade>\n </div>\n <Button bsSize='sm' className='margin-top-25' onClick={() => setHasVoted2(false)}>\n Reset\n </Button>\n </div>\n );\n};\n\ntype CustomInlineButtonProps = {\n onClick: VoidFunction;\n icon: string;\n text: string;\n className?: string;\n};\n\nconst CustomInlineButton = (props: CustomInlineButtonProps) => {\n const { onClick, icon, text, className = '' } = props;\n\n const ref = useRef<HTMLDivElement>(null);\n const isHover = useHover(ref);\n return (\n <div\n ref={ref}\n className={`height-30 display-flex align-items-center rounded text-color-dark hover-text-color-darker cursor-pointer ${className}`}\n onClick={onClick}\n >\n <div className='height-25 aspect-ratio-1 bg-lightest rounded-circle display-flex justify-content-center align-items-center'>\n <span\n className={`rioglyph ${icon} text-size-20 ${isHover ? 'text-color-darker' : 'text-color-dark'}`}\n />\n </div>\n <span className='padding-x-5'>{text}</span>\n </div>\n );\n};"
121
+ },
122
+ {
123
+ "label": "HTML",
124
+ "language": "html",
125
+ "code": "<div>\n <h5 class=\"margin-bottom-20\">Subtle request for usefulness</h5>\n <div class=\"height-40 display-flex align-items-center\">\n <div style=\"opacity: 1; transform: none;\">\n <div class=\"display-flex flex-wrap align-items-center column-gap-15 row-gap-5 user-select-none\">\n <div class=\"text-color-dark\">Was this helpful?</div>\n <div class=\"btn-toolbar gap-5\">\n <button type=\"button\" class=\"btn btn-muted btn-sm btn-component\" tabindex=\"0\">\n <span class=\"rioglyph rioglyph-face-frown text-color-danger\">\n </span>\n <span>Not really</span>\n </button>\n <button type=\"button\" class=\"btn btn-muted btn-sm btn-component\" tabindex=\"0\">\n <span class=\"rioglyph rioglyph-face-neutral text-color-warning\">\n </span>\n <span>Kind of</span>\n </button>\n <button type=\"button\" class=\"btn btn-muted btn-sm btn-component\" tabindex=\"0\">\n <span class=\"rioglyph rioglyph-face-smile text-color-success\">\n </span>\n <span>Yes, it was</span>\n </button>\n </div>\n </div>\n </div>\n </div>\n <button type=\"button\" class=\"btn btn-default btn-sm btn-component margin-top-25\" tabindex=\"0\">Reset</button>\n <div class=\"Divider position-relative width-100pct\" style=\"padding-top: 15px; padding-bottom: 15px;\">\n <div class=\"divider-line bg-light\" style=\"width: 100%; height: 1px;\">\n </div>\n </div>\n <h5 class=\"margin-bottom-20\">Another variation of inline request for usefulness</h5>\n <div class=\"height-40 display-flex align-items-center\">\n <div style=\"opacity: 1; transform: none;\">\n <div class=\"display-flex flex-wrap align-items-center column-gap-15 row-gap-5 user-select-none\">\n <div class=\"btn-toolbar gap-5\">\n <div class=\"height-30 display-flex align-items-center rounded text-color-dark hover-text-color-darker cursor-pointer \">\n <div class=\"height-25 aspect-ratio-1 bg-lightest rounded-circle display-flex justify-content-center align-items-center\">\n <span class=\"rioglyph rioglyph-thumbs-up text-size-20 text-color-dark\">\n </span>\n </div>\n <span class=\"padding-x-5\">Helpful</span>\n </div>\n <div class=\"height-30 display-flex align-items-center rounded text-color-dark hover-text-color-darker cursor-pointer margin-left-10\">\n <div class=\"height-25 aspect-ratio-1 bg-lightest rounded-circle display-flex justify-content-center align-items-center\">\n <span class=\"rioglyph rioglyph-thumbs-down text-size-20 text-color-dark\">\n </span>\n </div>\n <span class=\"padding-x-5\">Not helpful</span>\n </div>\n </div>\n </div>\n </div>\n </div>\n <button type=\"button\" class=\"btn btn-default btn-sm btn-component margin-top-25\" tabindex=\"0\">Reset</button>\n</div>"
126
+ },
127
+ {
128
+ "label": "Props",
129
+ "language": "json",
130
+ "code": null,
131
+ "props": [
132
+ {
133
+ "heading": null,
134
+ "rows": [
135
+ {
136
+ "name": "headline",
137
+ "type": "ReactNode",
138
+ "default": "",
139
+ "description": "Optional headline"
140
+ },
141
+ {
142
+ "name": "buttons",
143
+ "type": "ReactNode[]",
144
+ "default": "",
145
+ "description": "List of buttons to be shown."
146
+ }
147
+ ]
148
+ }
149
+ ]
150
+ }
151
+ ]
152
+ }
153
+ ]
154
+ },
155
+ {
156
+ "heading": "FeedbackReactions",
157
+ "body": "",
158
+ "examples": [
159
+ {
160
+ "caption": "Example 3",
161
+ "rendered_html": "<div class=\"playground-content bg-white padding-20 padding-bottom-25\" style=\"width: 100%;\"><div><label>Simple reaction without labels</label><div class=\"max-width-400 padding-15\"><div class=\"display-flex gap-15 padding-top-5 user-select-none\"><div class=\"display-flex gap-10 flex-column align-items-center text-center cursor-pointer\"><div class=\"width-50 aspect-ratio-1 border rounded-circle bg-lightest border-color-lightest display-grid place-items-center text-size-14\"><span class=\"rioglyph rioglyph-thumbs-down text-size-200pct\" style=\"transform: none;\"></span></div><div class=\"text-wrap-balance line-height-125rel text-medium text-color-darker\"></div></div><div class=\"display-flex gap-10 flex-column align-items-center text-center cursor-pointer\"><div class=\"width-50 aspect-ratio-1 border rounded-circle bg-lightest border-color-lightest display-grid place-items-center text-size-14\"><span class=\"rioglyph rioglyph-thumbs-up text-size-200pct\" style=\"transform: none;\"></span></div><div class=\"text-wrap-balance line-height-125rel text-medium text-color-darker\"></div></div></div></div><div class=\"Divider position-relative width-100pct\" style=\"padding-top: 15px; padding-bottom: 15px;\"><div class=\"divider-line bg-light\" style=\"width: 100%; height: 1px;\"></div></div><label>Simple reaction without labels and hover colors</label><div class=\"max-width-400 padding-15\"><div class=\"display-flex gap-15 padding-top-5 user-select-none\"><div class=\"display-flex gap-10 flex-column align-items-center text-center cursor-pointer\"><div class=\"width-50 aspect-ratio-1 border rounded-circle bg-lightest border-color-lightest display-grid place-items-center text-size-14\"><span class=\"rioglyph rioglyph-thumbs-down text-size-200pct\" style=\"transform: none;\"></span></div><div class=\"text-wrap-balance line-height-125rel text-medium text-color-darker\"></div></div><div class=\"display-flex gap-10 flex-column align-items-center text-center cursor-pointer\"><div class=\"width-50 aspect-ratio-1 border rounded-circle bg-lightest border-color-lightest display-grid place-items-center text-size-14\"><span class=\"rioglyph rioglyph-thumbs-up text-size-200pct\" style=\"transform: none;\"></span></div><div class=\"text-wrap-balance line-height-125rel text-medium text-color-darker\"></div></div></div></div><div class=\"Divider position-relative width-100pct\" style=\"padding-top: 15px; padding-bottom: 15px;\"><div class=\"divider-line bg-light\" style=\"width: 100%; height: 1px;\"></div></div><label>Small filled reaction with labels right</label><div class=\"max-width-300 padding-15\"><div class=\"display-grid grid-cols-2 gap-15 padding-top-5 user-select-none\"><div class=\"display-flex gap-10 align-items-center text-center cursor-pointer hover-bg-lightest rounded padding-5\"><div class=\"width-40 aspect-ratio-1 border rounded-circle bg-warning text-color-white border-color-lightest display-grid place-items-center text-size-14\"><span class=\"rioglyph rioglyph-thumbs-down text-size-200pct\" style=\"transform: none;\"></span></div><div class=\"text-wrap-balance line-height-125rel text-medium text-color-darker\"><span class=\"text-color-darker\">Bad</span></div></div><div class=\"display-flex gap-10 align-items-center text-center cursor-pointer hover-bg-lightest rounded padding-5\"><div class=\"width-40 aspect-ratio-1 border rounded-circle bg-success text-color-white border-color-lightest display-grid place-items-center text-size-14\"><span class=\"rioglyph rioglyph-thumbs-up text-size-200pct\" style=\"transform: none;\"></span></div><div class=\"text-wrap-balance line-height-125rel text-medium text-color-darker\"><span class=\"text-color-darker\">Good</span></div></div></div></div><div class=\"Divider position-relative width-100pct\" style=\"padding-top: 15px; padding-bottom: 15px;\"><div class=\"divider-line bg-light\" style=\"width: 100%; height: 1px;\"></div></div><label>Animated reaction with labels</label><div class=\"max-width-300 padding-15\"><div class=\"display-grid grid-cols-2 gap-15 padding-top-5 user-select-none\"><div class=\"display-flex gap-10 flex-column align-items-center text-center cursor-pointer\"><div class=\"width-50 aspect-ratio-1 border rounded-circle bg-lightest border-color-lightest display-grid place-items-center text-size-14\"><span class=\"rioglyph rioglyph-thumbs-down text-size-200pct\" style=\"transform: none;\"></span></div><div class=\"text-wrap-balance line-height-125rel text-medium text-color-darker\">Nicht interessant für mich</div></div><div class=\"display-flex gap-10 flex-column align-items-center text-center cursor-pointer\"><div class=\"width-50 aspect-ratio-1 border rounded-circle bg-lightest border-color-lightest display-grid place-items-center text-size-14\"><span class=\"rioglyph rioglyph-thumbs-up text-size-200pct\" style=\"transform: none;\"></span></div><div class=\"text-wrap-balance line-height-125rel text-medium text-color-darker\">Ich möchte mehr erfahren</div></div></div></div></div></div>",
162
+ "tabs": [
163
+ {
164
+ "label": "React",
165
+ "language": "tsx",
166
+ "code": "import { useState } from 'react';\n\nimport Divider from '@rio-cloud/rio-uikit/Divider';\nimport FeedbackReactions from '@rio-cloud/rio-uikit/FeedbackReactions';\n\nexport default () => {\n const [hasVoted, setHasVoted] = useState(false);\n\n const handleVote = () => {\n setHasVoted(true);\n };\n\n return (\n <div>\n <label>Simple reaction without labels</label>\n <div className='max-width-400 padding-15'>\n <FeedbackReactions\n onVoteUp={() => console.log('Voted up')}\n onVoteDown={() => console.log('Voted down')}\n />\n </div>\n <Divider />\n <label>Simple reaction without labels and hover colors</label>\n <div className='max-width-400 padding-15'>\n <FeedbackReactions\n onVoteUp={() => console.log('Voted up')}\n onVoteDown={() => console.log('Voted down')}\n colorHoverUp='success'\n colorHoverDown='warning'\n />\n </div>\n <Divider />\n <label>Small filled reaction with labels right</label>\n <div className='max-width-300 padding-15'>\n <FeedbackReactions\n onVoteUp={() => console.log('Voted up')}\n onVoteDown={() => console.log('Voted down')}\n labelPosition='right'\n colorFillUp='success'\n colorFillDown='warning'\n colorHoverUp='white'\n colorHoverDown='white'\n labelUp={<span className='text-color-darker'>Good</span>}\n labelDown={<span className='text-color-darker'>Bad</span>}\n itemClassName='hover-bg-lightest rounded padding-5'\n size='sm'\n />\n </div>\n <Divider />\n <label>Animated reaction with labels</label>\n <div className='max-width-300 padding-15'>\n <FeedbackReactions\n onVoteUp={() => console.log('Voted up')}\n onVoteDown={() => console.log('Voted down')}\n labelUp='Ich möchte mehr erfahren'\n labelDown='Nicht interessant für mich'\n animated\n />\n </div>\n </div>\n );\n};"
167
+ },
168
+ {
169
+ "label": "HTML",
170
+ "language": "html",
171
+ "code": "<div>\n <label>Simple reaction without labels</label>\n <div class=\"max-width-400 padding-15\">\n <div class=\"display-flex gap-15 padding-top-5 user-select-none\">\n <div class=\"display-flex gap-10 flex-column align-items-center text-center cursor-pointer\">\n <div class=\"width-50 aspect-ratio-1 border rounded-circle bg-lightest border-color-lightest display-grid place-items-center text-size-14\">\n <span class=\"rioglyph rioglyph-thumbs-down text-size-200pct\" style=\"transform: none;\">\n </span>\n </div>\n <div class=\"text-wrap-balance line-height-125rel text-medium text-color-darker\">\n </div>\n </div>\n <div class=\"display-flex gap-10 flex-column align-items-center text-center cursor-pointer\">\n <div class=\"width-50 aspect-ratio-1 border rounded-circle bg-lightest border-color-lightest display-grid place-items-center text-size-14\">\n <span class=\"rioglyph rioglyph-thumbs-up text-size-200pct\" style=\"transform: none;\">\n </span>\n </div>\n <div class=\"text-wrap-balance line-height-125rel text-medium text-color-darker\">\n </div>\n </div>\n </div>\n </div>\n <div class=\"Divider position-relative width-100pct\" style=\"padding-top: 15px; padding-bottom: 15px;\">\n <div class=\"divider-line bg-light\" style=\"width: 100%; height: 1px;\">\n </div>\n </div>\n <label>Simple reaction without labels and hover colors</label>\n <div class=\"max-width-400 padding-15\">\n <div class=\"display-flex gap-15 padding-top-5 user-select-none\">\n <div class=\"display-flex gap-10 flex-column align-items-center text-center cursor-pointer\">\n <div class=\"width-50 aspect-ratio-1 border rounded-circle bg-lightest border-color-lightest display-grid place-items-center text-size-14\">\n <span class=\"rioglyph rioglyph-thumbs-down text-size-200pct\" style=\"transform: none;\">\n </span>\n </div>\n <div class=\"text-wrap-balance line-height-125rel text-medium text-color-darker\">\n </div>\n </div>\n <div class=\"display-flex gap-10 flex-column align-items-center text-center cursor-pointer\">\n <div class=\"width-50 aspect-ratio-1 border rounded-circle bg-lightest border-color-lightest display-grid place-items-center text-size-14\">\n <span class=\"rioglyph rioglyph-thumbs-up text-size-200pct\" style=\"transform: none;\">\n </span>\n </div>\n <div class=\"text-wrap-balance line-height-125rel text-medium text-color-darker\">\n </div>\n </div>\n </div>\n </div>\n <div class=\"Divider position-relative width-100pct\" style=\"padding-top: 15px; padding-bottom: 15px;\">\n <div class=\"divider-line bg-light\" style=\"width: 100%; height: 1px;\">\n </div>\n </div>\n <label>Small filled reaction with labels right</label>\n <div class=\"max-width-300 padding-15\">\n <div class=\"display-grid grid-cols-2 gap-15 padding-top-5 user-select-none\">\n <div class=\"display-flex gap-10 align-items-center text-center cursor-pointer hover-bg-lightest rounded padding-5\">\n <div class=\"width-40 aspect-ratio-1 border rounded-circle bg-warning text-color-white border-color-lightest display-grid place-items-center text-size-14\">\n <span class=\"rioglyph rioglyph-thumbs-down text-size-200pct\" style=\"transform: none;\">\n </span>\n </div>\n <div class=\"text-wrap-balance line-height-125rel text-medium text-color-darker\">\n <span class=\"text-color-darker\">Bad</span>\n </div>\n </div>\n <div class=\"display-flex gap-10 align-items-center text-center cursor-pointer hover-bg-lightest rounded padding-5\">\n <div class=\"width-40 aspect-ratio-1 border rounded-circle bg-success text-color-white border-color-lightest display-grid place-items-center text-size-14\">\n <span class=\"rioglyph rioglyph-thumbs-up text-size-200pct\" style=\"transform: none;\">\n </span>\n </div>\n <div class=\"text-wrap-balance line-height-125rel text-medium text-color-darker\">\n <span class=\"text-color-darker\">Good</span>\n </div>\n </div>\n </div>\n </div>\n <div class=\"Divider position-relative width-100pct\" style=\"padding-top: 15px; padding-bottom: 15px;\">\n <div class=\"divider-line bg-light\" style=\"width: 100%; height: 1px;\">\n </div>\n </div>\n <label>Animated reaction with labels</label>\n <div class=\"max-width-300 padding-15\">\n <div class=\"display-grid grid-cols-2 gap-15 padding-top-5 user-select-none\">\n <div class=\"display-flex gap-10 flex-column align-items-center text-center cursor-pointer\">\n <div class=\"width-50 aspect-ratio-1 border rounded-circle bg-lightest border-color-lightest display-grid place-items-center text-size-14\">\n <span class=\"rioglyph rioglyph-thumbs-down text-size-200pct\" style=\"transform: none;\">\n </span>\n </div>\n <div class=\"text-wrap-balance line-height-125rel text-medium text-color-darker\">Nicht interessant für mich</div>\n </div>\n <div class=\"display-flex gap-10 flex-column align-items-center text-center cursor-pointer\">\n <div class=\"width-50 aspect-ratio-1 border rounded-circle bg-lightest border-color-lightest display-grid place-items-center text-size-14\">\n <span class=\"rioglyph rioglyph-thumbs-up text-size-200pct\" style=\"transform: none;\">\n </span>\n </div>\n <div class=\"text-wrap-balance line-height-125rel text-medium text-color-darker\">Ich möchte mehr erfahren</div>\n </div>\n </div>\n </div>\n</div>"
172
+ },
173
+ {
174
+ "label": "Props",
175
+ "language": "json",
176
+ "code": null,
177
+ "props": [
178
+ {
179
+ "heading": null,
180
+ "rows": [
181
+ {
182
+ "name": "headline",
183
+ "type": "ReactNode",
184
+ "default": "",
185
+ "description": "Optional headline"
186
+ },
187
+ {
188
+ "name": "size",
189
+ "type": "\"sm\" | \"md\"",
190
+ "default": "",
191
+ "description": "Size of the reaction buttons."
192
+ },
193
+ {
194
+ "name": "labelPosition",
195
+ "type": "\"bottom\" | \"right\"",
196
+ "default": "bottom",
197
+ "description": "Position of the reaction button labels."
198
+ },
199
+ {
200
+ "name": "labelUp",
201
+ "type": "ReactNode",
202
+ "default": "",
203
+ "description": "Label for the up button."
204
+ },
205
+ {
206
+ "name": "labelDown",
207
+ "type": "ReactNode",
208
+ "default": "",
209
+ "description": "Label for the down button."
210
+ },
211
+ {
212
+ "name": "colorFillUp",
213
+ "type": "string",
214
+ "default": "bg-lightest",
215
+ "description": "Custom fill color for the up button."
216
+ },
217
+ {
218
+ "name": "colorFillDown",
219
+ "type": "string",
220
+ "default": "bg-lightest",
221
+ "description": "Custom fill color for the down button."
222
+ },
223
+ {
224
+ "name": "colorHoverUp",
225
+ "type": "string",
226
+ "default": "primary",
227
+ "description": "Custom hover color for the up button."
228
+ },
229
+ {
230
+ "name": "colorHoverDown",
231
+ "type": "string",
232
+ "default": "primary",
233
+ "description": "Custom hover color for the down button."
234
+ },
235
+ {
236
+ "name": "onVoteUp",
237
+ "type": "VoidFunction",
238
+ "default": "",
239
+ "description": "Callback function triggered on up vote."
240
+ },
241
+ {
242
+ "name": "onVoteDown",
243
+ "type": "VoidFunction",
244
+ "default": "",
245
+ "description": "Callback function triggered on down vote."
246
+ },
247
+ {
248
+ "name": "itemClassName",
249
+ "type": "string",
250
+ "default": "",
251
+ "description": "Additional classes applied to the individual reaction item (button and label)."
252
+ },
253
+ {
254
+ "name": "animated",
255
+ "type": "boolean",
256
+ "default": "false",
257
+ "description": "Defines whether the reaction icon is animated."
258
+ }
259
+ ]
260
+ }
261
+ ]
262
+ }
263
+ ]
264
+ }
265
+ ]
266
+ }
267
+ ],
268
+ "see_also": []
269
+ }