@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,410 @@
1
+ {
2
+ "metadata": {
3
+ "captured_at": "2025-11-21T12:07:57.190Z",
4
+ "source": "https://uikit.developers.rio.cloud/#components/rules",
5
+ "category": "Components",
6
+ "section": "Misc",
7
+ "slug": "components/rules",
8
+ "version": "v1.13.2",
9
+ "hash_algorithm": "sha256",
10
+ "hash": "e8e04bae09ac41cfc1391a6661e7e10a814c7c382ddbf2b2fcba00e7de9b22ad"
11
+ },
12
+ "title": "RulesWrapper, RuleContainer and RuleConnector",
13
+ "lead": null,
14
+ "content": [
15
+ {
16
+ "heading": "RulesWrapper, RuleContainer and RuleConnector",
17
+ "body": "",
18
+ "examples": [
19
+ {
20
+ "caption": "Example 1",
21
+ "rendered_html": "<div class=\"playground-content bg-white padding-20 padding-bottom-25\" style=\"width: 100%;\"><div><label>Default Example (interactive)</label><div><div><div class=\"RuleContainer\"><div class=\"RuleContainerBox position-relative rounded padding-20 bg-lightest border border-width border-style-dashed \" data-testid=\"ruleContainerBox\"><div style=\"opacity: 0.0555556;\"><div class=\"display-flex flex-column align-items-center\"><div class=\"display-flex flex-column align-items-center gap-15\"><div class=\"text-center\">Why should the rule be triggered?</div><div class=\"taglist taglist-autowidth\"><div class=\"tag clickable\"><div class=\"tag-inner\">Mileage</div></div><div class=\"tag clickable\"><div class=\"tag-inner\">Speed</div></div><div class=\"tag clickable\"><div class=\"tag-inner\">Engine Speed</div></div></div></div></div></div></div><div data-testid=\"ruleConnector\" class=\"RuleConnector height-20 display-flex justify-content-center align-items-center position-relative opacity-0\"><div class=\"margin-right--10 width-20 height-20 rounded-circle position-relative z-index-2 box-sizing-content-box bg-white\"><div class=\"right-50pct position-relative width-20 height-20 bg-white\"></div></div><span class=\"padding-left-20 padding-right-20 z-index-1 bg-lightest\"><span class=\"text-color-light\"><span class=\"rioglyph rioglyph-plus\" data-testid=\"ruleConnectorIcon\"></span></span></span><div class=\"margin-left--10 width-20 height-20 rounded-circle position-relative z-index-2 box-sizing-content-box bg-white\"><div class=\"left-50pct position-relative width-20 height-20 bg-white\"></div></div></div></div></div></div><div><div><div class=\"RuleContainer\"><div class=\"RuleContainerBox position-relative rounded padding-20 bg-lightest border border-width border-style-dashed \" data-testid=\"ruleContainerBox\"><div style=\"opacity: 0.0555556;\"><div class=\"display-flex flex-column align-items-center gap-15\"><div class=\"text-center\">When should the rule be triggered?</div><div class=\"taglist taglist-autowidth\"><div class=\"tag active clickable rioglyph rioglyph-ok\"><div class=\"tag-inner\">Immediately</div></div><div class=\"tag clickable\"><div class=\"tag-inner\">When all conditions apply for at least</div></div></div></div></div></div><div data-testid=\"ruleConnector\" class=\"RuleConnector height-20 display-flex justify-content-center align-items-center position-relative opacity-0\"><div class=\"margin-right--10 width-20 height-20 rounded-circle position-relative z-index-2 box-sizing-content-box bg-white\"><div class=\"right-50pct position-relative width-20 height-20 bg-white\"></div></div><span class=\"padding-left-20 padding-right-20 z-index-1 bg-lightest\"><span class=\"text-color-light\"><span class=\"rioglyph rioglyph-plus\" data-testid=\"ruleConnectorIcon\"></span></span></span><div class=\"margin-left--10 width-20 height-20 rounded-circle position-relative z-index-2 box-sizing-content-box bg-white\"><div class=\"left-50pct position-relative width-20 height-20 bg-white\"></div></div></div></div></div></div></div></div>",
22
+ "tabs": [
23
+ {
24
+ "label": "React",
25
+ "language": "tsx",
26
+ "code": "import { useEffect, useState, type JSX } from 'react';\nimport isEmpty from 'lodash/fp/isEmpty';\nimport pull from 'lodash/fp/pull';\nimport size from 'lodash/fp/size';\n\nimport RulesWrapper from '@rio-cloud/rio-uikit/RulesWrapper';\nimport RuleContainer from '@rio-cloud/rio-uikit/RuleContainer';\nimport Button from '@rio-cloud/rio-uikit/Button';\nimport Tag from '@rio-cloud/rio-uikit/Tag';\nimport TagList from '@rio-cloud/rio-uikit/TagList';\n\nconst firstRuleSetLabel = 'Why should the rule be triggered?';\n\ntype Condition = {\n id: string;\n label: string;\n enabled: boolean;\n formElements: JSX.Element;\n};\n\nconst firstRuleSet: Condition[] = [\n {\n id: 'Mileage',\n label: 'Mileage is greater than',\n enabled: true,\n formElements: (\n <div className='width-100pct margin-bottom-0'>\n <div className='input-group min-width-100'>\n <input className='form-control' type='text' name='value' />\n <div className='input-group-addon'>km</div>\n </div>\n </div>\n ),\n },\n {\n id: 'Speed',\n label: 'Speed is greater than',\n enabled: true,\n formElements: (\n <div className='width-100pct margin-bottom-0'>\n <div className='input-group min-width-100'>\n <input className='form-control' type='text' name='value' />\n <div className='input-group-addon'>km</div>\n </div>\n </div>\n ),\n },\n {\n id: 'Engine Speed',\n label: 'Engine speed is greater than',\n enabled: true,\n formElements: (\n <div className='width-100pct margin-bottom-0'>\n <div className='input-group min-width-100'>\n <input className='form-control' type='text' name='value' />\n <div className='input-group-addon'>rpm</div>\n </div>\n </div>\n ),\n },\n];\n\nexport default () => {\n const [firstConditionsSelected, setFirstConditionsSelected] = useState<string[]>([]);\n\n const handleSelectFirstCondition = (conditionId: string) =>\n setFirstConditionsSelected([...firstConditionsSelected, conditionId]);\n\n const handleRemoveFirstCondition = (conditionId: string) =>\n setFirstConditionsSelected(pull(conditionId)(firstConditionsSelected));\n\n const availableFirstConditions: Condition[] = firstRuleSet.filter(condition => condition.enabled);\n\n const hasMoreFirstConditions = size(firstConditionsSelected) !== size(firstRuleSet);\n\n const allConditionsSelected = size(firstConditionsSelected) === size(availableFirstConditions);\n\n const [secondRuleSelected, setSecondRuleSelected] = useState(false);\n\n return (\n <div>\n <label>Default Example (interactive)</label>\n {/* First rule set */}\n <RulesWrapper>\n <RuleContainer key='AllRuleTags' show={isEmpty(firstConditionsSelected)} unchecked>\n <ConditionsList\n label={firstRuleSetLabel}\n conditions={firstRuleSet}\n selectedConditions={firstConditionsSelected}\n onConditionSelected={handleSelectFirstCondition}\n />\n </RuleContainer>\n {firstConditionsSelected.map((selectedCondition, index) => {\n const isLastCondition = index === size(firstConditionsSelected) - 1;\n return (\n <RuleContainer\n key={selectedCondition}\n show={!isEmpty(firstConditionsSelected)}\n hideConnector={isLastCondition && allConditionsSelected}\n >\n <ConditionEditor\n condition={\n availableFirstConditions.find(condition => condition.id === selectedCondition)!\n }\n onDelete={handleRemoveFirstCondition}\n />\n </RuleContainer>\n );\n })}\n <RuleContainer\n key='AddMore'\n show={!isEmpty(firstConditionsSelected) && hasMoreFirstConditions}\n hideConnector\n >\n <ConditionsList\n showMoreOption={hasMoreFirstConditions}\n label={firstRuleSetLabel}\n conditions={firstRuleSet}\n selectedConditions={firstConditionsSelected}\n onConditionSelected={handleSelectFirstCondition}\n />\n </RuleContainer>\n </RulesWrapper>\n\n {/* Second rule set */}\n <RulesWrapper>\n <RuleContainer key='secondRuleSet' unchecked={!secondRuleSelected} hideConnector={secondRuleSelected}>\n {secondRuleSelected ? (\n <ConditionEditorTwo onDelete={() => setSecondRuleSelected(false)} />\n ) : (\n <ConditionsTwo onRuleSelect={() => setSecondRuleSelected(true)} />\n )}\n </RuleContainer>\n </RulesWrapper>\n </div>\n );\n};\n\n// Custom components to fill the rules container - this usually is service logic and are service specific components\n\ntype ConditionsListProps = {\n showMoreOption?: boolean;\n label: string;\n conditions: Condition[];\n selectedConditions: string[];\n onConditionSelected: (id: string) => void;\n};\n\nconst ConditionsList = ({\n showMoreOption = false,\n label,\n conditions = [],\n selectedConditions = [],\n onConditionSelected,\n}: ConditionsListProps) => {\n const [showMore, setShowMore] = useState(showMoreOption);\n useEffect(() => setShowMore(showMoreOption), [showMoreOption]);\n\n const handleSelectOption = (conditionId: string) => {\n setShowMore(true);\n onConditionSelected(conditionId);\n };\n\n return (\n <div className='display-flex flex-column align-items-center'>\n {showMore && (\n <div\n key='moreButton'\n className='text-center text-color-primary hover-text-color-highlight-dark cursor-pointer'\n onClick={() => setShowMore(false)}\n >\n Which additional conditions should count for this rule?\n </div>\n )}\n {!showMore && (\n <div key='tagList' className='display-flex flex-column align-items-center gap-15'>\n <div className='text-center'>{label}</div>\n <TagList>\n {conditions.map(condition => {\n if (selectedConditions.includes(condition.id)) {\n return null;\n }\n return (\n <Tag\n key={condition.id}\n clickable={condition.enabled}\n disabled={!condition.enabled}\n onClick={() => handleSelectOption(condition.id)}\n >\n {condition.id}\n </Tag>\n );\n })}\n </TagList>\n </div>\n )}\n </div>\n );\n};\n\ntype ConditionEditorProps = { condition: Condition; onDelete: (id: string) => void };\n\nconst ConditionEditor = ({ condition, onDelete }: ConditionEditorProps) => {\n return (\n <form>\n <div className='display-flex align-items-center gap-10 flex-1-1 flex-wrap'>\n <div className='flex-1-1-0 line-height-125rel'>{condition.label}</div>\n <div className='flex-1-1-0 display-flex gap-10'>\n {condition.formElements}\n <Button bsStyle={Button.MUTED} iconOnly onClick={() => onDelete(condition.id)}>\n <span className='rioglyph rioglyph-trash' />\n </Button>\n </div>\n </div>\n </form>\n );\n};\n\ntype ConditionsTwoProps = { onRuleSelect: VoidFunction };\n\nconst ConditionsTwo = ({ onRuleSelect }: ConditionsTwoProps) => {\n return (\n <div className='display-flex flex-column align-items-center gap-15'>\n <div className='text-center'>When should the rule be triggered?</div>\n <TagList>\n <Tag active clickable={false}>\n Immediately\n </Tag>\n <Tag clickable onClick={onRuleSelect}>\n When all conditions apply for at least\n </Tag>\n </TagList>\n </div>\n );\n};\n\ntype ConditionEditorTwpProps = { onDelete: VoidFunction };\n\nconst ConditionEditorTwo = ({ onDelete }: ConditionEditorTwpProps) => {\n return (\n <form>\n <div className='display-flex align-items-center gap-10 flex-1-1 flex-wrap'>\n <div className='flex-1-1-0 line-height-125rel'>When all conditions apply for at least</div>\n <div className='flex-1-1-0 display-flex gap-10'>\n <div className='width-100pct margin-bottom-0'>\n <div className='input-group min-width-100'>\n <input className='form-control' type='text' name='value' />\n <div className='input-group-addon'>minutes</div>\n </div>\n </div>\n <Button bsStyle={Button.MUTED} iconOnly onClick={onDelete}>\n <span className='rioglyph rioglyph-trash' />\n </Button>\n </div>\n </div>\n </form>\n );\n};"
27
+ },
28
+ {
29
+ "label": "HTML",
30
+ "language": "html",
31
+ "code": "<div>\n <label>Default Example (interactive)</label>\n <div>\n <div>\n <div class=\"RuleContainer\">\n <div class=\"RuleContainerBox position-relative rounded padding-20 bg-lightest border border-width border-style-dashed \" data-testid=\"ruleContainerBox\">\n <div style=\"opacity: 1;\">\n <div class=\"display-flex flex-column align-items-center\">\n <div class=\"display-flex flex-column align-items-center gap-15\">\n <div class=\"text-center\">Why should the rule be triggered?</div>\n <div class=\"taglist taglist-autowidth\">\n <div class=\"tag clickable\">\n <div class=\"tag-inner\">Mileage</div>\n </div>\n <div class=\"tag clickable\">\n <div class=\"tag-inner\">Speed</div>\n </div>\n <div class=\"tag clickable\">\n <div class=\"tag-inner\">Engine Speed</div>\n </div>\n </div>\n </div>\n </div>\n </div>\n </div>\n <div data-testid=\"ruleConnector\" class=\"RuleConnector height-20 display-flex justify-content-center align-items-center position-relative opacity-0\">\n <div class=\"margin-right--10 width-20 height-20 rounded-circle position-relative z-index-2 box-sizing-content-box bg-white\">\n <div class=\"right-50pct position-relative width-20 height-20 bg-white\">\n </div>\n </div>\n <span class=\"padding-left-20 padding-right-20 z-index-1 bg-lightest\">\n <span class=\"text-color-light\">\n <span class=\"rioglyph rioglyph-plus\" data-testid=\"ruleConnectorIcon\">\n </span>\n </span>\n </span>\n <div class=\"margin-left--10 width-20 height-20 rounded-circle position-relative z-index-2 box-sizing-content-box bg-white\">\n <div class=\"left-50pct position-relative width-20 height-20 bg-white\">\n </div>\n </div>\n </div>\n </div>\n </div>\n </div>\n <div>\n <div>\n <div class=\"RuleContainer\">\n <div class=\"RuleContainerBox position-relative rounded padding-20 bg-lightest border border-width border-style-dashed \" data-testid=\"ruleContainerBox\">\n <div style=\"opacity: 1;\">\n <div class=\"display-flex flex-column align-items-center gap-15\">\n <div class=\"text-center\">When should the rule be triggered?</div>\n <div class=\"taglist taglist-autowidth\">\n <div class=\"tag active clickable rioglyph rioglyph-ok\">\n <div class=\"tag-inner\">Immediately</div>\n </div>\n <div class=\"tag clickable\">\n <div class=\"tag-inner\">When all conditions apply for at least</div>\n </div>\n </div>\n </div>\n </div>\n </div>\n <div data-testid=\"ruleConnector\" class=\"RuleConnector height-20 display-flex justify-content-center align-items-center position-relative opacity-0\">\n <div class=\"margin-right--10 width-20 height-20 rounded-circle position-relative z-index-2 box-sizing-content-box bg-white\">\n <div class=\"right-50pct position-relative width-20 height-20 bg-white\">\n </div>\n </div>\n <span class=\"padding-left-20 padding-right-20 z-index-1 bg-lightest\">\n <span class=\"text-color-light\">\n <span class=\"rioglyph rioglyph-plus\" data-testid=\"ruleConnectorIcon\">\n </span>\n </span>\n </span>\n <div class=\"margin-left--10 width-20 height-20 rounded-circle position-relative z-index-2 box-sizing-content-box bg-white\">\n <div class=\"left-50pct position-relative width-20 height-20 bg-white\">\n </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": "RuleContainer",
40
+ "rows": [
41
+ {
42
+ "name": "show",
43
+ "type": "Boolean",
44
+ "default": "true",
45
+ "description": "Defines whether the container is shown."
46
+ },
47
+ {
48
+ "name": "unchecked",
49
+ "type": "Boolean",
50
+ "default": "false",
51
+ "description": "Determines the container style for when no rule option is selected. It also hides the connector in this case."
52
+ },
53
+ {
54
+ "name": "background",
55
+ "type": "String",
56
+ "default": "bg-lightest",
57
+ "description": "The box background class name."
58
+ },
59
+ {
60
+ "name": "borderColor",
61
+ "type": "String",
62
+ "default": "",
63
+ "description": "The border color class name."
64
+ },
65
+ {
66
+ "name": "hideConnector",
67
+ "type": "Boolean",
68
+ "default": "false",
69
+ "description": "Defines whether the connector is shown."
70
+ },
71
+ {
72
+ "name": "customConnector",
73
+ "type": "String | Node",
74
+ "default": "",
75
+ "description": "Overwrites the default connector."
76
+ },
77
+ {
78
+ "name": "className",
79
+ "type": "String",
80
+ "default": "",
81
+ "description": "Additional classes for the wrapper element."
82
+ }
83
+ ]
84
+ },
85
+ {
86
+ "heading": "RuleConnector",
87
+ "rows": [
88
+ {
89
+ "name": "placement",
90
+ "type": "String",
91
+ "default": "center",
92
+ "description": "The placement for the connector. Possible values are \"start\", \"center\" and \"end\"."
93
+ },
94
+ {
95
+ "name": "icon",
96
+ "type": "String",
97
+ "default": "rioglyph-plus",
98
+ "description": "The rioglyph icon name."
99
+ },
100
+ {
101
+ "name": "hidden",
102
+ "type": "Boolean",
103
+ "default": "false",
104
+ "description": "Defines whether the connector is shown."
105
+ },
106
+ {
107
+ "name": "background",
108
+ "type": "String",
109
+ "default": "bg-lightest",
110
+ "description": "Background color of the connector itself."
111
+ },
112
+ {
113
+ "name": "pageBackground",
114
+ "type": "String",
115
+ "default": "bg-white",
116
+ "description": "Background color of the surrounding area where the rule containers are placed."
117
+ },
118
+ {
119
+ "name": "contentClassName",
120
+ "type": "String",
121
+ "default": "text-color-light",
122
+ "description": "Classes to be set on the connector content."
123
+ },
124
+ {
125
+ "name": "hasBorder",
126
+ "type": "Boolean",
127
+ "default": "false",
128
+ "description": "Defines whether the connector has a border."
129
+ },
130
+ {
131
+ "name": "borderColor",
132
+ "type": "String",
133
+ "default": "",
134
+ "description": "The border color class name."
135
+ },
136
+ {
137
+ "name": "className",
138
+ "type": "String",
139
+ "default": "",
140
+ "description": "Additional classes for the wrapper element."
141
+ }
142
+ ]
143
+ }
144
+ ]
145
+ }
146
+ ]
147
+ },
148
+ {
149
+ "caption": "Example 2",
150
+ "rendered_html": "<div class=\"playground-content bg-white padding-20 padding-bottom-25\" style=\"width: 100%;\"><div><label>Default Example with morde conditions - (static)</label><div><div><div class=\"RuleContainer\"><div class=\"RuleContainerBox position-relative rounded padding-20 bg-lightest\" data-testid=\"ruleContainerBox\"><div style=\"opacity: 0.0555556;\"><form><div class=\"display-flex align-items-center gap-10 flex-1-1 flex-wrap\"><div class=\"flex-1-1-0 line-height-125rel\">Mileage is greater than</div><div class=\"flex-1-1-0 display-flex gap-10\"><div class=\"width-100pct margin-bottom-0\"><div class=\"input-group min-width-100\"><input class=\"form-control\" type=\"text\" name=\"value\"><div class=\"input-group-addon\">km</div></div></div><button type=\"button\" class=\"btn btn-muted btn-icon-only btn-component\" tabindex=\"0\"><span class=\"rioglyph rioglyph-trash\"></span></button></div></div></form></div></div><div data-testid=\"ruleConnector\" class=\"RuleConnector height-20 display-flex justify-content-center align-items-center position-relative\"><div class=\"margin-right--10 width-20 height-20 rounded-circle position-relative z-index-2 box-sizing-content-box bg-white\"><div class=\"right-50pct position-relative width-20 height-20 bg-white\"></div></div><span class=\"padding-left-20 padding-right-20 z-index-1 bg-lightest\"><span class=\"text-color-light\"><span class=\"rioglyph rioglyph-plus\" data-testid=\"ruleConnectorIcon\"></span></span></span><div class=\"margin-left--10 width-20 height-20 rounded-circle position-relative z-index-2 box-sizing-content-box bg-white\"><div class=\"left-50pct position-relative width-20 height-20 bg-white\"></div></div></div></div><div class=\"RuleContainer\"><div class=\"RuleContainerBox position-relative rounded padding-20 bg-lightest\" data-testid=\"ruleContainerBox\"><div style=\"opacity: 0.0555556;\"><div class=\"text-center\"><div class=\"text-center text-color-primary hover-text-color-highlight-dark cursor-pointer\">Which additional conditions should count for this rule?</div></div></div></div><div data-testid=\"ruleConnector\" class=\"RuleConnector height-20 display-flex justify-content-center align-items-center position-relative opacity-0\"><div class=\"margin-right--10 width-20 height-20 rounded-circle position-relative z-index-2 box-sizing-content-box bg-white\"><div class=\"right-50pct position-relative width-20 height-20 bg-white\"></div></div><span class=\"padding-left-20 padding-right-20 z-index-1 bg-lightest\"><span class=\"text-color-light\"><span class=\"rioglyph rioglyph-plus\" data-testid=\"ruleConnectorIcon\"></span></span></span><div class=\"margin-left--10 width-20 height-20 rounded-circle position-relative z-index-2 box-sizing-content-box bg-white\"><div class=\"left-50pct position-relative width-20 height-20 bg-white\"></div></div></div></div><div class=\"RuleContainer\"><div class=\"RuleContainerBox position-relative rounded padding-20 bg-lightest border border-width border-style-dashed \" data-testid=\"ruleContainerBox\"><div style=\"opacity: 0.0555556;\"><span class=\"display-flex align-items-center justify-content-center\"><span data-testid=\"AddCondition-message\">Why should the rule be triggered?</span></span></div><div style=\"opacity: 0.0555556;\"><div class=\"display-flex flex-wrap gap-20 margin-top-20\"><div class=\"flex-1-1-0\"><legend>Category A</legend><div class=\"taglist taglist-autowidth\"><div class=\"tag clickable\"><div class=\"tag-inner\">Mileage</div></div><div class=\"tag clickable\"><div class=\"tag-inner\">Fuel Level</div></div><div class=\"tag clickable\"><div class=\"tag-inner\">Engine speed</div></div><div class=\"tag clickable\"><div class=\"tag-inner\">Driving/standing</div></div></div></div><div class=\"flex-1-1-0\"><legend>Category B</legend><div class=\"taglist taglist-autowidth\"><div class=\"tag clickable\"><div class=\"tag-inner\">Remaining daily driving time</div></div><div class=\"tag clickable\"><div class=\"tag-inner\">Remaining weekly driving time</div></div><div class=\"tag clickable\"><div class=\"tag-inner\">Daily driving time</div></div><div class=\"tag clickable\"><div class=\"tag-inner\">Weekly driving time</div></div></div></div><div class=\"flex-1-1-0\"><legend>Category C</legend><div class=\"taglist taglist-autowidth\"><div class=\"tag clickable\"><div class=\"tag-inner\">Driver Card</div></div><div class=\"tag clickable\"><div class=\"tag-inner\">Power take-off</div></div><div class=\"tag clickable\"><div class=\"tag-inner\">Inside/Outside geofence</div></div><div class=\"tag clickable\"><div class=\"tag-inner\">Inside/Outside Country</div></div></div></div></div></div></div><div data-testid=\"ruleConnector\" class=\"RuleConnector height-20 display-flex justify-content-center align-items-center position-relative opacity-0\"><div class=\"margin-right--10 width-20 height-20 rounded-circle position-relative z-index-2 box-sizing-content-box bg-white\"><div class=\"right-50pct position-relative width-20 height-20 bg-white\"></div></div><span class=\"padding-left-20 padding-right-20 z-index-1 bg-lightest\"><span class=\"text-color-light\"><span class=\"rioglyph rioglyph-plus\" data-testid=\"ruleConnectorIcon\"></span></span></span><div class=\"margin-left--10 width-20 height-20 rounded-circle position-relative z-index-2 box-sizing-content-box bg-white\"><div class=\"left-50pct position-relative width-20 height-20 bg-white\"></div></div></div></div><div class=\"RuleContainer\"><div class=\"RuleContainerBox position-relative rounded padding-20 bg-lightest border border-width border-style-dashed \" data-testid=\"ruleContainerBox\"><div style=\"opacity: 0.0555556;\"><div class=\"display-flex flex-column align-items-center gap-15\"><span>When should the rule be triggered?</span><div class=\"taglist taglist-autowidth\"><div class=\"tag active clickable rioglyph rioglyph-ok\"><div class=\"tag-inner\">Immediately</div></div><div class=\"tag clickable\"><div class=\"tag-inner\">When all conditions apply for at least</div></div></div></div></div></div><div data-testid=\"ruleConnector\" class=\"RuleConnector height-20 display-flex justify-content-center align-items-center position-relative opacity-0\"><div class=\"margin-right--10 width-20 height-20 rounded-circle position-relative z-index-2 box-sizing-content-box bg-white\"><div class=\"right-50pct position-relative width-20 height-20 bg-white\"></div></div><span class=\"padding-left-20 padding-right-20 z-index-1 bg-lightest\"><span class=\"text-color-light\"><span class=\"rioglyph rioglyph-plus\" data-testid=\"ruleConnectorIcon\"></span></span></span><div class=\"margin-left--10 width-20 height-20 rounded-circle position-relative z-index-2 box-sizing-content-box bg-white\"><div class=\"left-50pct position-relative width-20 height-20 bg-white\"></div></div></div></div></div></div></div></div>",
151
+ "tabs": [
152
+ {
153
+ "label": "React",
154
+ "language": "tsx",
155
+ "code": "import RuleContainer from '@rio-cloud/rio-uikit/RuleContainer';\nimport Button from '@rio-cloud/rio-uikit/Button';\nimport TagList from '@rio-cloud/rio-uikit/TagList';\nimport Tag from '@rio-cloud/rio-uikit/Tag';\nimport RulesWrapper from '@rio-cloud/rio-uikit/components/rules/RulesWrapper';\n\nexport default () => (\n <div>\n <label>Default Example with morde conditions - (static)</label>\n <RulesWrapper>\n <RuleContainer>\n <form>\n <div className='display-flex align-items-center gap-10 flex-1-1 flex-wrap'>\n <div className='flex-1-1-0 line-height-125rel'>Mileage is greater than</div>\n <div className='flex-1-1-0 display-flex gap-10'>\n <div className='width-100pct margin-bottom-0'>\n <div className='input-group min-width-100'>\n <input className='form-control' type='text' name='value' />\n <div className='input-group-addon'>km</div>\n </div>\n </div>\n <Button bsStyle={Button.MUTED} iconOnly>\n <span className='rioglyph rioglyph-trash' />\n </Button>\n </div>\n </div>\n </form>\n </RuleContainer>\n\n <RuleContainer hideConnector>\n <div className='text-center'>\n <div className='text-center text-color-primary hover-text-color-highlight-dark cursor-pointer'>\n Which additional conditions should count for this rule?\n </div>\n </div>\n </RuleContainer>\n\n <RuleContainer unchecked hideConnector>\n <span className='display-flex align-items-center justify-content-center'>\n <span data-testid='AddCondition-message'>Why should the rule be triggered?</span>\n </span>\n\n <div className='display-flex flex-wrap gap-20 margin-top-20'>\n <div className='flex-1-1-0'>\n <legend>Category A</legend>\n <TagList>\n <Tag clickable>Mileage</Tag>\n <Tag clickable>Fuel Level</Tag>\n <Tag clickable>Engine speed</Tag>\n <Tag clickable>Driving/standing</Tag>\n </TagList>\n </div>\n <div className='flex-1-1-0'>\n <legend>Category B</legend>\n <TagList>\n <Tag clickable>Remaining daily driving time</Tag>\n <Tag clickable>Remaining weekly driving time</Tag>\n <Tag clickable>Daily driving time</Tag>\n <Tag clickable>Weekly driving time</Tag>\n </TagList>\n </div>\n <div className='flex-1-1-0'>\n <legend>Category C</legend>\n <TagList>\n <Tag clickable>Driver Card</Tag>\n <Tag clickable>Power take-off</Tag>\n <Tag clickable>Inside/Outside geofence</Tag>\n <Tag clickable>Inside/Outside Country</Tag>\n </TagList>\n </div>\n </div>\n </RuleContainer>\n\n <RuleContainer unchecked>\n <div className='display-flex flex-column align-items-center gap-15'>\n <span>When should the rule be triggered?</span>\n\n <TagList>\n <Tag active clickable={false}>\n Immediately\n </Tag>\n <Tag clickable>When all conditions apply for at least</Tag>\n </TagList>\n </div>\n </RuleContainer>\n </RulesWrapper>\n </div>\n);"
156
+ },
157
+ {
158
+ "label": "HTML",
159
+ "language": "html",
160
+ "code": "<div>\n <label>Default Example with morde conditions - (static)</label>\n <div>\n <div>\n <div class=\"RuleContainer\">\n <div class=\"RuleContainerBox position-relative rounded padding-20 bg-lightest\" data-testid=\"ruleContainerBox\">\n <div style=\"opacity: 1;\">\n <form>\n <div class=\"display-flex align-items-center gap-10 flex-1-1 flex-wrap\">\n <div class=\"flex-1-1-0 line-height-125rel\">Mileage is greater than</div>\n <div class=\"flex-1-1-0 display-flex gap-10\">\n <div class=\"width-100pct margin-bottom-0\">\n <div class=\"input-group min-width-100\">\n <input class=\"form-control\" type=\"text\" name=\"value\">\n <div class=\"input-group-addon\">km</div>\n </div>\n </div>\n <button type=\"button\" class=\"btn btn-muted btn-icon-only btn-component\" tabindex=\"0\">\n <span class=\"rioglyph rioglyph-trash\">\n </span>\n </button>\n </div>\n </div>\n </form>\n </div>\n </div>\n <div data-testid=\"ruleConnector\" class=\"RuleConnector height-20 display-flex justify-content-center align-items-center position-relative\">\n <div class=\"margin-right--10 width-20 height-20 rounded-circle position-relative z-index-2 box-sizing-content-box bg-white\">\n <div class=\"right-50pct position-relative width-20 height-20 bg-white\">\n </div>\n </div>\n <span class=\"padding-left-20 padding-right-20 z-index-1 bg-lightest\">\n <span class=\"text-color-light\">\n <span class=\"rioglyph rioglyph-plus\" data-testid=\"ruleConnectorIcon\">\n </span>\n </span>\n </span>\n <div class=\"margin-left--10 width-20 height-20 rounded-circle position-relative z-index-2 box-sizing-content-box bg-white\">\n <div class=\"left-50pct position-relative width-20 height-20 bg-white\">\n </div>\n </div>\n </div>\n </div>\n <div class=\"RuleContainer\">\n <div class=\"RuleContainerBox position-relative rounded padding-20 bg-lightest\" data-testid=\"ruleContainerBox\">\n <div style=\"opacity: 1;\">\n <div class=\"text-center\">\n <div class=\"text-center text-color-primary hover-text-color-highlight-dark cursor-pointer\">Which additional conditions should count for this rule?</div>\n </div>\n </div>\n </div>\n <div data-testid=\"ruleConnector\" class=\"RuleConnector height-20 display-flex justify-content-center align-items-center position-relative opacity-0\">\n <div class=\"margin-right--10 width-20 height-20 rounded-circle position-relative z-index-2 box-sizing-content-box bg-white\">\n <div class=\"right-50pct position-relative width-20 height-20 bg-white\">\n </div>\n </div>\n <span class=\"padding-left-20 padding-right-20 z-index-1 bg-lightest\">\n <span class=\"text-color-light\">\n <span class=\"rioglyph rioglyph-plus\" data-testid=\"ruleConnectorIcon\">\n </span>\n </span>\n </span>\n <div class=\"margin-left--10 width-20 height-20 rounded-circle position-relative z-index-2 box-sizing-content-box bg-white\">\n <div class=\"left-50pct position-relative width-20 height-20 bg-white\">\n </div>\n </div>\n </div>\n </div>\n <div class=\"RuleContainer\">\n <div class=\"RuleContainerBox position-relative rounded padding-20 bg-lightest border border-width border-style-dashed \" data-testid=\"ruleContainerBox\">\n <div style=\"opacity: 1;\">\n <span class=\"display-flex align-items-center justify-content-center\">\n <span data-testid=\"AddCondition-message\">Why should the rule be triggered?</span>\n </span>\n </div>\n <div style=\"opacity: 1;\">\n <div class=\"display-flex flex-wrap gap-20 margin-top-20\">\n <div class=\"flex-1-1-0\">\n <legend>Category A</legend>\n <div class=\"taglist taglist-autowidth\">\n <div class=\"tag clickable\">\n <div class=\"tag-inner\">Mileage</div>\n </div>\n <div class=\"tag clickable\">\n <div class=\"tag-inner\">Fuel Level</div>\n </div>\n <div class=\"tag clickable\">\n <div class=\"tag-inner\">Engine speed</div>\n </div>\n <div class=\"tag clickable\">\n <div class=\"tag-inner\">Driving/standing</div>\n </div>\n </div>\n </div>\n <div class=\"flex-1-1-0\">\n <legend>Category B</legend>\n <div class=\"taglist taglist-autowidth\">\n <div class=\"tag clickable\">\n <div class=\"tag-inner\">Remaining daily driving time</div>\n </div>\n <div class=\"tag clickable\">\n <div class=\"tag-inner\">Remaining weekly driving time</div>\n </div>\n <div class=\"tag clickable\">\n <div class=\"tag-inner\">Daily driving time</div>\n </div>\n <div class=\"tag clickable\">\n <div class=\"tag-inner\">Weekly driving time</div>\n </div>\n </div>\n </div>\n <div class=\"flex-1-1-0\">\n <legend>Category C</legend>\n <div class=\"taglist taglist-autowidth\">\n <div class=\"tag clickable\">\n <div class=\"tag-inner\">Driver Card</div>\n </div>\n <div class=\"tag clickable\">\n <div class=\"tag-inner\">Power take-off</div>\n </div>\n <div class=\"tag clickable\">\n <div class=\"tag-inner\">Inside/Outside geofence</div>\n </div>\n <div class=\"tag clickable\">\n <div class=\"tag-inner\">Inside/Outside Country</div>\n </div>\n </div>\n </div>\n </div>\n </div>\n </div>\n <div data-testid=\"ruleConnector\" class=\"RuleConnector height-20 display-flex justify-content-center align-items-center position-relative opacity-0\">\n <div class=\"margin-right--10 width-20 height-20 rounded-circle position-relative z-index-2 box-sizing-content-box bg-white\">\n <div class=\"right-50pct position-relative width-20 height-20 bg-white\">\n </div>\n </div>\n <span class=\"padding-left-20 padding-right-20 z-index-1 bg-lightest\">\n <span class=\"text-color-light\">\n <span class=\"rioglyph rioglyph-plus\" data-testid=\"ruleConnectorIcon\">\n </span>\n </span>\n </span>\n <div class=\"margin-left--10 width-20 height-20 rounded-circle position-relative z-index-2 box-sizing-content-box bg-white\">\n <div class=\"left-50pct position-relative width-20 height-20 bg-white\">\n </div>\n </div>\n </div>\n </div>\n <div class=\"RuleContainer\">\n <div class=\"RuleContainerBox position-relative rounded padding-20 bg-lightest border border-width border-style-dashed \" data-testid=\"ruleContainerBox\">\n <div style=\"opacity: 1;\">\n <div class=\"display-flex flex-column align-items-center gap-15\">\n <span>When should the rule be triggered?</span>\n <div class=\"taglist taglist-autowidth\">\n <div class=\"tag active clickable rioglyph rioglyph-ok\">\n <div class=\"tag-inner\">Immediately</div>\n </div>\n <div class=\"tag clickable\">\n <div class=\"tag-inner\">When all conditions apply for at least</div>\n </div>\n </div>\n </div>\n </div>\n </div>\n <div data-testid=\"ruleConnector\" class=\"RuleConnector height-20 display-flex justify-content-center align-items-center position-relative opacity-0\">\n <div class=\"margin-right--10 width-20 height-20 rounded-circle position-relative z-index-2 box-sizing-content-box bg-white\">\n <div class=\"right-50pct position-relative width-20 height-20 bg-white\">\n </div>\n </div>\n <span class=\"padding-left-20 padding-right-20 z-index-1 bg-lightest\">\n <span class=\"text-color-light\">\n <span class=\"rioglyph rioglyph-plus\" data-testid=\"ruleConnectorIcon\">\n </span>\n </span>\n </span>\n <div class=\"margin-left--10 width-20 height-20 rounded-circle position-relative z-index-2 box-sizing-content-box bg-white\">\n <div class=\"left-50pct position-relative width-20 height-20 bg-white\">\n </div>\n </div>\n </div>\n </div>\n </div>\n </div>\n</div>"
161
+ },
162
+ {
163
+ "label": "Props",
164
+ "language": "json",
165
+ "code": null,
166
+ "props": [
167
+ {
168
+ "heading": "RuleContainer",
169
+ "rows": [
170
+ {
171
+ "name": "show",
172
+ "type": "Boolean",
173
+ "default": "true",
174
+ "description": "Defines whether the container is shown."
175
+ },
176
+ {
177
+ "name": "unchecked",
178
+ "type": "Boolean",
179
+ "default": "false",
180
+ "description": "Determines the container style for when no rule option is selected. It also hides the connector in this case."
181
+ },
182
+ {
183
+ "name": "background",
184
+ "type": "String",
185
+ "default": "bg-lightest",
186
+ "description": "The box background class name."
187
+ },
188
+ {
189
+ "name": "borderColor",
190
+ "type": "String",
191
+ "default": "",
192
+ "description": "The border color class name."
193
+ },
194
+ {
195
+ "name": "hideConnector",
196
+ "type": "Boolean",
197
+ "default": "false",
198
+ "description": "Defines whether the connector is shown."
199
+ },
200
+ {
201
+ "name": "customConnector",
202
+ "type": "String | Node",
203
+ "default": "",
204
+ "description": "Overwrites the default connector."
205
+ },
206
+ {
207
+ "name": "className",
208
+ "type": "String",
209
+ "default": "",
210
+ "description": "Additional classes for the wrapper element."
211
+ }
212
+ ]
213
+ },
214
+ {
215
+ "heading": "RuleConnector",
216
+ "rows": [
217
+ {
218
+ "name": "placement",
219
+ "type": "String",
220
+ "default": "center",
221
+ "description": "The placement for the connector. Possible values are \"start\", \"center\" and \"end\"."
222
+ },
223
+ {
224
+ "name": "icon",
225
+ "type": "String",
226
+ "default": "rioglyph-plus",
227
+ "description": "The rioglyph icon name."
228
+ },
229
+ {
230
+ "name": "hidden",
231
+ "type": "Boolean",
232
+ "default": "false",
233
+ "description": "Defines whether the connector is shown."
234
+ },
235
+ {
236
+ "name": "background",
237
+ "type": "String",
238
+ "default": "bg-lightest",
239
+ "description": "Background color of the connector itself."
240
+ },
241
+ {
242
+ "name": "pageBackground",
243
+ "type": "String",
244
+ "default": "bg-white",
245
+ "description": "Background color of the surrounding area where the rule containers are placed."
246
+ },
247
+ {
248
+ "name": "contentClassName",
249
+ "type": "String",
250
+ "default": "text-color-light",
251
+ "description": "Classes to be set on the connector content."
252
+ },
253
+ {
254
+ "name": "hasBorder",
255
+ "type": "Boolean",
256
+ "default": "false",
257
+ "description": "Defines whether the connector has a border."
258
+ },
259
+ {
260
+ "name": "borderColor",
261
+ "type": "String",
262
+ "default": "",
263
+ "description": "The border color class name."
264
+ },
265
+ {
266
+ "name": "className",
267
+ "type": "String",
268
+ "default": "",
269
+ "description": "Additional classes for the wrapper element."
270
+ }
271
+ ]
272
+ }
273
+ ]
274
+ }
275
+ ]
276
+ },
277
+ {
278
+ "caption": "AND",
279
+ "rendered_html": "<div class=\"playground-content bg-lightest padding-20 padding-bottom-25\" style=\"width: 100%;\"><div><label>Custom Example</label><div class=\"RuleContainer\"><div class=\"RuleContainerBox position-relative rounded padding-20 bg-white border\" data-testid=\"ruleContainerBox\"><div style=\"opacity: 0.0555556;\">\nLorem ipsum dolor sit amet, consectetur adipiscing elit. In pharetra dui eget massa efficitur aliquam condimentum in felis. Integer eget metus vel nunc efficitur iaculis.</div></div><div data-testid=\"ruleConnector\" class=\"RuleConnector height-20 display-flex justify-content-start align-items-center position-relative\"><div class=\"margin-right--10 width-20 height-20 rounded-circle position-relative z-index-2 box-sizing-content-box bg-lightest border border-color-light\"><div class=\"right-50pct position-relative width-20 height-20 bg-lightest\"></div></div><span class=\"padding-left-20 padding-right-20 z-index-1 bg-white border border-color-white\"><span class=\"text-color-light\"><span class=\"text-color-dark text-size-12\">AND</span></span></span><div class=\"margin-left--10 width-20 height-20 rounded-circle position-relative z-index-2 box-sizing-content-box bg-lightest border border-color-light\"><div class=\"left-50pct position-relative width-20 height-20 bg-lightest\"></div></div></div></div><div class=\"RuleContainer\"><div class=\"RuleContainerBox position-relative rounded padding-20 bg-white border\" data-testid=\"ruleContainerBox\"><div style=\"opacity: 0.0555556;\">\nLorem ipsum dolor sit amet, consectetur adipiscing elit. In pharetra dui eget massa efficitur aliquam condimentum in felis. Integer eget metus vel nunc efficitur iaculis.</div></div><div data-testid=\"ruleConnector\" class=\"RuleConnector height-20 display-flex justify-content-start align-items-center position-relative\"><div class=\"margin-right--10 width-20 height-20 rounded-circle position-relative z-index-2 box-sizing-content-box bg-lightest border border-color-light\"><div class=\"right-50pct position-relative width-20 height-20 bg-lightest\"></div></div><span class=\"padding-left-20 padding-right-20 z-index-1 bg-white border border-color-white\"><span class=\"text-color-light\"><span class=\"text-color-dark text-size-12\">OR</span></span></span><div class=\"margin-left--10 width-20 height-20 rounded-circle position-relative z-index-2 box-sizing-content-box bg-lightest border border-color-light\"><div class=\"left-50pct position-relative width-20 height-20 bg-lightest\"></div></div></div></div><div class=\"RuleContainer\"><div class=\"RuleContainerBox position-relative rounded padding-20 bg-white border\" data-testid=\"ruleContainerBox\"><div style=\"opacity: 0.0555556;\">\nLorem ipsum dolor sit amet, consectetur adipiscing elit. In pharetra dui eget massa efficitur aliquam condimentum in felis. Integer eget metus vel nunc efficitur iaculis.</div></div><div data-testid=\"ruleConnector\" class=\"RuleConnector height-20 display-flex justify-content-center align-items-center position-relative opacity-0\"><div class=\"margin-right--10 width-20 height-20 rounded-circle position-relative z-index-2 box-sizing-content-box bg-white\"><div class=\"right-50pct position-relative width-20 height-20 bg-white\"></div></div><span class=\"padding-left-20 padding-right-20 z-index-1 bg-lightest\"><span class=\"text-color-light\"><span class=\"rioglyph rioglyph-plus\" data-testid=\"ruleConnectorIcon\"></span></span></span><div class=\"margin-left--10 width-20 height-20 rounded-circle position-relative z-index-2 box-sizing-content-box bg-white\"><div class=\"left-50pct position-relative width-20 height-20 bg-white\"></div></div></div></div></div></div>",
280
+ "tabs": [
281
+ {
282
+ "label": "React",
283
+ "language": "tsx",
284
+ "code": "import RuleContainer from '@rio-cloud/rio-uikit/RuleContainer';\nimport RuleConnector from '@rio-cloud/rio-uikit/RuleConnector';\nimport { dummyTextExtraShort } from '../../../utils/data';\n\nconst background = 'bg-white';\n\nexport default () => (\n <div>\n <label>Custom Example</label>\n <RuleContainer className='border' background={background} customConnector={<CustomConnector value='AND' />}>\n {dummyTextExtraShort}\n </RuleContainer>\n\n <RuleContainer className='border' background={background} customConnector={<CustomConnector value='OR' />}>\n {dummyTextExtraShort}\n </RuleContainer>\n\n <RuleContainer className='border' background={background} hideConnector>\n {dummyTextExtraShort}\n </RuleContainer>\n </div>\n);\n\nconst CustomConnector = ({ value }: { value: string }) => (\n <RuleConnector\n background={background}\n pageBackground='bg-lightest'\n placement='start'\n hasBorder\n borderColor='border-color-light'\n >\n <span className='text-color-dark text-size-12'>{value}</span>\n </RuleConnector>\n);"
285
+ },
286
+ {
287
+ "label": "HTML",
288
+ "language": "html",
289
+ "code": "<div>\n <label>Custom Example</label>\n <div class=\"RuleContainer\">\n <div class=\"RuleContainerBox position-relative rounded padding-20 bg-white border\" data-testid=\"ruleContainerBox\">\n <div style=\"opacity: 1;\">\n Lorem ipsum dolor sit amet, consectetur adipiscing elit. In pharetra dui eget massa efficitur aliquam condimentum in felis. Integer eget metus vel nunc efficitur iaculis.</div>\n </div>\n <div data-testid=\"ruleConnector\" class=\"RuleConnector height-20 display-flex justify-content-start align-items-center position-relative\">\n <div class=\"margin-right--10 width-20 height-20 rounded-circle position-relative z-index-2 box-sizing-content-box bg-lightest border border-color-light\">\n <div class=\"right-50pct position-relative width-20 height-20 bg-lightest\">\n </div>\n </div>\n <span class=\"padding-left-20 padding-right-20 z-index-1 bg-white border border-color-white\">\n <span class=\"text-color-light\">\n <span class=\"text-color-dark text-size-12\">AND</span>\n </span>\n </span>\n <div class=\"margin-left--10 width-20 height-20 rounded-circle position-relative z-index-2 box-sizing-content-box bg-lightest border border-color-light\">\n <div class=\"left-50pct position-relative width-20 height-20 bg-lightest\">\n </div>\n </div>\n </div>\n </div>\n <div class=\"RuleContainer\">\n <div class=\"RuleContainerBox position-relative rounded padding-20 bg-white border\" data-testid=\"ruleContainerBox\">\n <div style=\"opacity: 1;\">\n Lorem ipsum dolor sit amet, consectetur adipiscing elit. In pharetra dui eget massa efficitur aliquam condimentum in felis. Integer eget metus vel nunc efficitur iaculis.</div>\n </div>\n <div data-testid=\"ruleConnector\" class=\"RuleConnector height-20 display-flex justify-content-start align-items-center position-relative\">\n <div class=\"margin-right--10 width-20 height-20 rounded-circle position-relative z-index-2 box-sizing-content-box bg-lightest border border-color-light\">\n <div class=\"right-50pct position-relative width-20 height-20 bg-lightest\">\n </div>\n </div>\n <span class=\"padding-left-20 padding-right-20 z-index-1 bg-white border border-color-white\">\n <span class=\"text-color-light\">\n <span class=\"text-color-dark text-size-12\">OR</span>\n </span>\n </span>\n <div class=\"margin-left--10 width-20 height-20 rounded-circle position-relative z-index-2 box-sizing-content-box bg-lightest border border-color-light\">\n <div class=\"left-50pct position-relative width-20 height-20 bg-lightest\">\n </div>\n </div>\n </div>\n </div>\n <div class=\"RuleContainer\">\n <div class=\"RuleContainerBox position-relative rounded padding-20 bg-white border\" data-testid=\"ruleContainerBox\">\n <div style=\"opacity: 1;\">\n Lorem ipsum dolor sit amet, consectetur adipiscing elit. In pharetra dui eget massa efficitur aliquam condimentum in felis. Integer eget metus vel nunc efficitur iaculis.</div>\n </div>\n <div data-testid=\"ruleConnector\" class=\"RuleConnector height-20 display-flex justify-content-center align-items-center position-relative opacity-0\">\n <div class=\"margin-right--10 width-20 height-20 rounded-circle position-relative z-index-2 box-sizing-content-box bg-white\">\n <div class=\"right-50pct position-relative width-20 height-20 bg-white\">\n </div>\n </div>\n <span class=\"padding-left-20 padding-right-20 z-index-1 bg-lightest\">\n <span class=\"text-color-light\">\n <span class=\"rioglyph rioglyph-plus\" data-testid=\"ruleConnectorIcon\">\n </span>\n </span>\n </span>\n <div class=\"margin-left--10 width-20 height-20 rounded-circle position-relative z-index-2 box-sizing-content-box bg-white\">\n <div class=\"left-50pct position-relative width-20 height-20 bg-white\">\n </div>\n </div>\n </div>\n </div>\n</div>"
290
+ },
291
+ {
292
+ "label": "Props",
293
+ "language": "json",
294
+ "code": null,
295
+ "props": [
296
+ {
297
+ "heading": "RuleContainer",
298
+ "rows": [
299
+ {
300
+ "name": "show",
301
+ "type": "Boolean",
302
+ "default": "true",
303
+ "description": "Defines whether the container is shown."
304
+ },
305
+ {
306
+ "name": "unchecked",
307
+ "type": "Boolean",
308
+ "default": "false",
309
+ "description": "Determines the container style for when no rule option is selected. It also hides the connector in this case."
310
+ },
311
+ {
312
+ "name": "background",
313
+ "type": "String",
314
+ "default": "bg-lightest",
315
+ "description": "The box background class name."
316
+ },
317
+ {
318
+ "name": "borderColor",
319
+ "type": "String",
320
+ "default": "",
321
+ "description": "The border color class name."
322
+ },
323
+ {
324
+ "name": "hideConnector",
325
+ "type": "Boolean",
326
+ "default": "false",
327
+ "description": "Defines whether the connector is shown."
328
+ },
329
+ {
330
+ "name": "customConnector",
331
+ "type": "String | Node",
332
+ "default": "",
333
+ "description": "Overwrites the default connector."
334
+ },
335
+ {
336
+ "name": "className",
337
+ "type": "String",
338
+ "default": "",
339
+ "description": "Additional classes for the wrapper element."
340
+ }
341
+ ]
342
+ },
343
+ {
344
+ "heading": "RuleConnector",
345
+ "rows": [
346
+ {
347
+ "name": "placement",
348
+ "type": "String",
349
+ "default": "center",
350
+ "description": "The placement for the connector. Possible values are \"start\", \"center\" and \"end\"."
351
+ },
352
+ {
353
+ "name": "icon",
354
+ "type": "String",
355
+ "default": "rioglyph-plus",
356
+ "description": "The rioglyph icon name."
357
+ },
358
+ {
359
+ "name": "hidden",
360
+ "type": "Boolean",
361
+ "default": "false",
362
+ "description": "Defines whether the connector is shown."
363
+ },
364
+ {
365
+ "name": "background",
366
+ "type": "String",
367
+ "default": "bg-lightest",
368
+ "description": "Background color of the connector itself."
369
+ },
370
+ {
371
+ "name": "pageBackground",
372
+ "type": "String",
373
+ "default": "bg-white",
374
+ "description": "Background color of the surrounding area where the rule containers are placed."
375
+ },
376
+ {
377
+ "name": "contentClassName",
378
+ "type": "String",
379
+ "default": "text-color-light",
380
+ "description": "Classes to be set on the connector content."
381
+ },
382
+ {
383
+ "name": "hasBorder",
384
+ "type": "Boolean",
385
+ "default": "false",
386
+ "description": "Defines whether the connector has a border."
387
+ },
388
+ {
389
+ "name": "borderColor",
390
+ "type": "String",
391
+ "default": "",
392
+ "description": "The border color class name."
393
+ },
394
+ {
395
+ "name": "className",
396
+ "type": "String",
397
+ "default": "",
398
+ "description": "Additional classes for the wrapper element."
399
+ }
400
+ ]
401
+ }
402
+ ]
403
+ }
404
+ ]
405
+ }
406
+ ]
407
+ }
408
+ ],
409
+ "see_also": []
410
+ }