@rio-cloud/uikit-mcp 1.1.9 → 1.1.10

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 (209) hide show
  1. package/dist/doc-metadata.json +325 -85
  2. package/dist/docs/components/accentBar.md +110 -116
  3. package/dist/docs/components/activity.md +1 -1
  4. package/dist/docs/components/analyticsAnalysisOverlay.md +628 -0
  5. package/dist/docs/components/animatedNumber.md +2 -2
  6. package/dist/docs/components/animatedTextReveal.md +53 -55
  7. package/dist/docs/components/animations.md +22 -22
  8. package/dist/docs/components/appHeader.md +27 -38
  9. package/dist/docs/components/appLayout.md +38 -42
  10. package/dist/docs/components/appNavigationBar.md +1 -1
  11. package/dist/docs/components/areaCharts.md +57 -63
  12. package/dist/docs/components/aspectRatioPlaceholder.md +1 -1
  13. package/dist/docs/components/assetTree.md +200 -167
  14. package/dist/docs/components/autosuggests.md +1 -1
  15. package/dist/docs/components/avatar.md +1 -1
  16. package/dist/docs/components/banner.md +2 -2
  17. package/dist/docs/components/barCharts.md +531 -417
  18. package/dist/docs/components/barList.md +9 -9
  19. package/dist/docs/components/basicMap.md +60 -39
  20. package/dist/docs/components/bottomSheet.md +2 -2
  21. package/dist/docs/components/button.md +8 -2
  22. package/dist/docs/components/buttonToolbar.md +1 -1
  23. package/dist/docs/components/calendarStripe.md +57 -65
  24. package/dist/docs/components/card.md +1 -1
  25. package/dist/docs/components/carousel.md +1 -1
  26. package/dist/docs/components/chartColors.md +1 -3
  27. package/dist/docs/components/chartsGettingStarted.md +1 -3
  28. package/dist/docs/components/chat.md +2 -2
  29. package/dist/docs/components/checkbox.md +15 -12
  30. package/dist/docs/components/circularProgress.md +8 -8
  31. package/dist/docs/components/clearableInput.md +1 -1
  32. package/dist/docs/components/collapse.md +2 -4
  33. package/dist/docs/components/composedCharts.md +63 -53
  34. package/dist/docs/components/contentLoader.md +1 -1
  35. package/dist/docs/components/dataTabs.md +33 -33
  36. package/dist/docs/components/datepickers.md +693 -687
  37. package/dist/docs/components/dayPicker.md +5574 -0
  38. package/dist/docs/components/dayPickerCalendar.md +5269 -0
  39. package/dist/docs/components/dialogs.md +17 -19
  40. package/dist/docs/components/divider.md +1 -1
  41. package/dist/docs/components/dropdowns.md +3252 -3276
  42. package/dist/docs/components/editableContent.md +91 -91
  43. package/dist/docs/components/expander.md +4 -1
  44. package/dist/docs/components/fade.md +1 -1
  45. package/dist/docs/components/fadeExpander.md +1 -1
  46. package/dist/docs/components/fadeUp.md +32 -36
  47. package/dist/docs/components/feedback.md +1 -1
  48. package/dist/docs/components/filePickers.md +1 -1
  49. package/dist/docs/components/formLabel.md +29 -31
  50. package/dist/docs/components/groupedItemList.md +3 -7
  51. package/dist/docs/components/htmlTable.md +5074 -0
  52. package/dist/docs/components/iconList.md +4 -4
  53. package/dist/docs/components/imagePreloader.md +1 -1
  54. package/dist/docs/components/labeledElement.md +1 -1
  55. package/dist/docs/components/licensePlate.md +1 -1
  56. package/dist/docs/components/lineCharts.md +172 -172
  57. package/dist/docs/components/listMenu.md +15 -12
  58. package/dist/docs/components/loadMore.md +4 -2
  59. package/dist/docs/components/mainNavigation.md +1 -1
  60. package/dist/docs/components/mapCircle.md +10 -1
  61. package/dist/docs/components/mapCluster.md +23 -1
  62. package/dist/docs/components/mapContext.md +12 -4
  63. package/dist/docs/components/mapDraggableMarker.md +12 -1
  64. package/dist/docs/components/mapGettingStarted.md +1 -1
  65. package/dist/docs/components/mapInfoBubble.md +129 -2
  66. package/dist/docs/components/mapLayerGroup.md +10 -1
  67. package/dist/docs/components/mapMarker.md +10 -3
  68. package/dist/docs/components/mapPolygon.md +288 -85
  69. package/dist/docs/components/mapRoute.md +262 -172
  70. package/dist/docs/components/mapRouteGenerator.md +1 -1
  71. package/dist/docs/components/mapSettings.md +23 -1
  72. package/dist/docs/components/mapUtils.md +1 -1
  73. package/dist/docs/components/multiselects.md +211 -18
  74. package/dist/docs/components/noData.md +1 -1
  75. package/dist/docs/components/notifications.md +2 -2
  76. package/dist/docs/components/numbercontrol.md +15 -15
  77. package/dist/docs/components/onboarding.md +1 -1
  78. package/dist/docs/components/page.md +1 -1
  79. package/dist/docs/components/pager.md +1 -1
  80. package/dist/docs/components/pieCharts.md +237 -213
  81. package/dist/docs/components/popover.md +1 -1
  82. package/dist/docs/components/position.md +1 -1
  83. package/dist/docs/components/radialBarCharts.md +446 -400
  84. package/dist/docs/components/radioCardGroup.md +1 -1
  85. package/dist/docs/components/radiobutton.md +96 -98
  86. package/dist/docs/components/releaseNotes.md +1 -1
  87. package/dist/docs/components/resizer.md +1 -3
  88. package/dist/docs/components/responsiveColumnStripe.md +1 -3
  89. package/dist/docs/components/responsiveVideo.md +1 -1
  90. package/dist/docs/components/rioglyph.md +1 -1
  91. package/dist/docs/components/rules.md +41 -47
  92. package/dist/docs/components/saveableInput.md +252 -252
  93. package/dist/docs/components/selects.md +165 -111
  94. package/dist/docs/components/sidebar.md +1 -1
  95. package/dist/docs/components/sliders.md +1 -1
  96. package/dist/docs/components/smoothScrollbars.md +19 -15
  97. package/dist/docs/components/spinners.md +1 -1
  98. package/dist/docs/components/states.md +1 -1
  99. package/dist/docs/components/statsWidgets.md +1 -1
  100. package/dist/docs/components/statusBar.md +1 -1
  101. package/dist/docs/components/stepButton.md +1 -1
  102. package/dist/docs/components/steppedProgressBars.md +9 -11
  103. package/dist/docs/components/subNavigation.md +1 -1
  104. package/dist/docs/components/supportMarker.md +1 -1
  105. package/dist/docs/components/svgImage.md +1 -1
  106. package/dist/docs/components/switch.md +3 -1
  107. package/dist/docs/components/table.md +19584 -0
  108. package/dist/docs/components/tableControls.md +982 -0
  109. package/dist/docs/components/tagManager.md +1 -1
  110. package/dist/docs/components/tags.md +1 -1
  111. package/dist/docs/components/teaser.md +1 -3
  112. package/dist/docs/components/textTruncateMiddle.md +1 -1
  113. package/dist/docs/components/timeline.md +1 -1
  114. package/dist/docs/components/timepicker.md +1 -1
  115. package/dist/docs/components/toggleButton.md +3 -1
  116. package/dist/docs/components/tooltip.md +4 -2
  117. package/dist/docs/components/tracker.md +1 -1
  118. package/dist/docs/components/virtualList.md +56 -56
  119. package/dist/docs/foundations.md +640 -3122
  120. package/dist/docs/start/changelog.md +53 -3
  121. package/dist/docs/start/goodtoknow.md +2 -4
  122. package/dist/docs/start/guidelines/color-combinations.md +1 -1
  123. package/dist/docs/start/guidelines/custom-css.md +1 -1
  124. package/dist/docs/start/guidelines/custom-rioglyph.md +1 -1
  125. package/dist/docs/start/guidelines/formatting.md +1 -3
  126. package/dist/docs/start/guidelines/iframe.md +17 -19
  127. package/dist/docs/start/guidelines/obfuscate-data.md +2 -4
  128. package/dist/docs/start/guidelines/print-css.md +1 -1
  129. package/dist/docs/start/guidelines/spinner.md +1 -1
  130. package/dist/docs/start/guidelines/state-in-url.md +1 -1
  131. package/dist/docs/start/guidelines/supported-browsers.md +1 -1
  132. package/dist/docs/start/guidelines/writing.md +1 -1
  133. package/dist/docs/start/howto.md +12 -20
  134. package/dist/docs/start/intro.md +1 -1
  135. package/dist/docs/start/responsiveness.md +1 -3
  136. package/dist/docs/templates/ai-assistant.md +311 -0
  137. package/dist/docs/templates/common-table.md +814 -0
  138. package/dist/docs/templates/detail-views.md +846 -0
  139. package/dist/docs/templates/expandable-details.md +214 -0
  140. package/dist/docs/templates/feature-cards.md +479 -0
  141. package/dist/docs/templates/form-summary.md +179 -0
  142. package/dist/docs/templates/form-toggle.md +329 -0
  143. package/dist/docs/templates/list-blocks.md +872 -0
  144. package/dist/docs/templates/loading-progress.md +100 -0
  145. package/dist/docs/templates/options-panel.md +132 -0
  146. package/dist/docs/templates/panel-variants.md +137 -0
  147. package/dist/docs/templates/progress-cards.md +541 -0
  148. package/dist/docs/templates/progress-success.md +125 -0
  149. package/dist/docs/templates/settings-form.md +401 -0
  150. package/dist/docs/templates/stats-blocks.md +1245 -0
  151. package/dist/docs/templates/table-panel.md +310 -0
  152. package/dist/docs/templates/usage-cards.md +199 -0
  153. package/dist/docs/utilities/classNames.md +1 -1
  154. package/dist/docs/utilities/deviceUtils.md +2 -2
  155. package/dist/docs/utilities/featureToggles.md +1 -1
  156. package/dist/docs/utilities/fuelTypeUtils.md +27 -29
  157. package/dist/docs/utilities/getTrackingAttributes.md +277 -0
  158. package/dist/docs/utilities/routeUtils.md +2 -2
  159. package/dist/docs/utilities/useAfterMount.md +1 -1
  160. package/dist/docs/utilities/useAutoAnimate.md +1 -1
  161. package/dist/docs/utilities/useAverage.md +1 -1
  162. package/dist/docs/utilities/useClickOutside.md +1 -1
  163. package/dist/docs/utilities/useClipboard.md +2 -2
  164. package/dist/docs/utilities/useCookies.md +1 -1
  165. package/dist/docs/utilities/useCount.md +1 -1
  166. package/dist/docs/utilities/useDarkMode.md +5 -4
  167. package/dist/docs/utilities/useDebugInfo.md +3 -3
  168. package/dist/docs/utilities/useDraggableElement.md +281 -0
  169. package/dist/docs/utilities/useEffectOnce.md +1 -1
  170. package/dist/docs/utilities/useElapsedTime.md +1 -1
  171. package/dist/docs/utilities/useElementSize.md +1 -1
  172. package/dist/docs/utilities/useEsc.md +1 -1
  173. package/dist/docs/utilities/useEvent.md +1 -1
  174. package/dist/docs/utilities/useFocusTrap.md +1 -1
  175. package/dist/docs/utilities/useFullscreen.md +1 -1
  176. package/dist/docs/utilities/useHover.md +1 -1
  177. package/dist/docs/utilities/useIncomingPostMessages.md +1 -1
  178. package/dist/docs/utilities/useInterval.md +1 -1
  179. package/dist/docs/utilities/useIsFocusWithin.md +1 -1
  180. package/dist/docs/utilities/useKey.md +8 -10
  181. package/dist/docs/utilities/useLocalStorage.md +1 -1
  182. package/dist/docs/utilities/useLocationSuggestions.md +1 -1
  183. package/dist/docs/utilities/useMax.md +1 -1
  184. package/dist/docs/utilities/useMin.md +1 -1
  185. package/dist/docs/utilities/useMutationObserver.md +1 -1
  186. package/dist/docs/utilities/useOnScreen.md +1 -1
  187. package/dist/docs/utilities/useOnlineStatus.md +1 -1
  188. package/dist/docs/utilities/usePostMessage.md +2 -2
  189. package/dist/docs/utilities/usePostMessageSender.md +1 -1
  190. package/dist/docs/utilities/usePrevious.md +2 -4
  191. package/dist/docs/utilities/useResizeObserver.md +35 -15
  192. package/dist/docs/utilities/useRioCookieConsent.md +1 -1
  193. package/dist/docs/utilities/useScrollPosition.md +3 -6
  194. package/dist/docs/utilities/useSearch.md +1 -3
  195. package/dist/docs/utilities/useSearchHighlight.md +1 -1
  196. package/dist/docs/utilities/useSorting.md +370 -239
  197. package/dist/docs/utilities/useStateWithValidation.md +1 -1
  198. package/dist/docs/utilities/useSum.md +1 -1
  199. package/dist/docs/utilities/useTableExport.md +364 -288
  200. package/dist/docs/utilities/useTableSelection.md +88 -92
  201. package/dist/docs/utilities/useTimeout.md +1 -1
  202. package/dist/docs/utilities/useToggle.md +1 -1
  203. package/dist/docs/utilities/useUrlState.md +1 -1
  204. package/dist/docs/utilities/useWindowResize.md +1 -1
  205. package/dist/index.mjs +1 -1
  206. package/dist/search-synonyms.json +2 -2
  207. package/dist/version.json +2 -2
  208. package/package.json +2 -2
  209. package/dist/docs/components/tables.md +0 -8
@@ -0,0 +1,1245 @@
1
+ # Stats blocks
2
+
3
+ *Category:* Templates
4
+ *Section:* Content
5
+ *Source:* https://uikit.developers.rio.cloud/#/templates/stats-blocks
6
+ *Captured:* 2026-04-20T12:55:47.031Z
7
+
8
+ ## Stats blocks
9
+
10
+ ### Example: Total inventory
11
+
12
+ Stats page
13
+ Overview of your supply chain operations
14
+
15
+ Total inventory
16
+ 1353 units
17
+
18
+ 12% from last month
19
+
20
+ Open orders
21
+ 70
22
+
23
+ 5% from last month
24
+
25
+ In transit
26
+ 18
27
+
28
+ -3% from last month
29
+
30
+ Issues
31
+ 0
32
+
33
+ #### React (tsx)
34
+
35
+ ```tsx
36
+ import { faker } from '@faker-js/faker';
37
+ import StatsWidgets from '@rio-cloud/rio-uikit/StatsWidgets';
38
+ import StatsWidget from '@rio-cloud/rio-uikit/StatsWidget';
39
+
40
+ export default () => {
41
+ const data = {
42
+ inventory: faker.number.int({ min: 800, max: 1600 }),
43
+ inventoryChange: 12,
44
+ orders: faker.number.int({ min: 20, max: 80 }),
45
+ ordersChange: 5,
46
+ inTransit: faker.number.int({ min: 5, max: 25 }),
47
+ inTransitChange: -3,
48
+ issues: faker.number.int({ min: 0, max: 10 }),
49
+ };
50
+
51
+ return (
52
+ <div className='margin-25-md'>
53
+ <div className='text-size-h2 text-bold text-color-darkest'>Stats page</div>
54
+ <p className='text-color-darker margin-top-0'>Overview of your supply chain operations</p>
55
+
56
+ <StatsWidgets className='display-grid grid-auto-fit-250'>
57
+ <StatsWidget className='shadow-default display-flex flex-column'>
58
+ <div className='flex-1-1 display-flex gap-15 padding-20'>
59
+ <div className='height-50 aspect-ratio-1 bg-lightest rounded display-grid place-items-center text-size-14'>
60
+ <span className='rioglyph rioglyph-parcel text-size-200pct text-color-darker' />
61
+ </div>
62
+ <div>
63
+ <div className='text-color-dark'>Total inventory</div>
64
+ <div className='text-size-h3 text-color-darkest line-height-125rel'>
65
+ {data.inventory} units
66
+ </div>
67
+ </div>
68
+ </div>
69
+ <div className='text-size-12 padding-x-20 padding-y-10 bg-lightest rounded-bottom display-flex gap-5'>
70
+ <span className='text-medium text-color-success display-flex gap-2 align-items-center'>
71
+ <span className='rioglyph rioglyph-arrow-up' />
72
+ {data.inventoryChange}%
73
+ </span>
74
+ <span className='text-color-dark'>from last month</span>
75
+ </div>
76
+ </StatsWidget>
77
+
78
+ <StatsWidget className='shadow-default display-flex flex-column'>
79
+ <div className='flex-1-1 display-flex gap-15 padding-20'>
80
+ <div className='height-50 aspect-ratio-1 bg-lightest rounded display-grid place-items-center text-size-14'>
81
+ <span className='rioglyph rioglyph-order text-size-200pct text-color-darker' />
82
+ </div>
83
+ <div>
84
+ <div className='text-color-dark'>Open orders</div>
85
+ <div className='text-size-h3 text-color-darkest line-height-125rel'>{data.orders}</div>
86
+ </div>
87
+ </div>
88
+ <div className='text-size-12 padding-x-20 padding-y-10 bg-lightest rounded-bottom display-flex gap-5'>
89
+ <span className='text-medium text-color-success display-flex gap-2 align-items-center'>
90
+ <span className='rioglyph rioglyph-arrow-up' />
91
+ {data.ordersChange}%
92
+ </span>
93
+ <span className='text-color-dark'>from last month</span>
94
+ </div>
95
+ </StatsWidget>
96
+
97
+ <StatsWidget className='shadow-default display-flex flex-column'>
98
+ <div className='flex-1-1 display-flex gap-15 padding-20'>
99
+ <div className='height-50 aspect-ratio-1 bg-lightest rounded display-grid place-items-center text-size-14'>
100
+ <span className='rioglyph rioglyph-delivery text-size-200pct text-color-darker' />
101
+ </div>
102
+ <div>
103
+ <div className='text-color-dark'>In transit</div>
104
+ <div className='text-size-h3 text-color-darkest line-height-125rel'>{data.inTransit}</div>
105
+ </div>
106
+ </div>
107
+ <div className='text-size-12 padding-x-20 padding-y-10 bg-lightest rounded-bottom display-flex gap-5'>
108
+ <span className='text-medium text-color-danger display-flex gap-2 align-items-center'>
109
+ <span className='rioglyph rioglyph-arrow-down' />
110
+ {data.inTransitChange}%
111
+ </span>
112
+ <span className='text-color-dark'>from last month</span>
113
+ </div>
114
+ </StatsWidget>
115
+
116
+ <StatsWidget className='shadow-default display-flex flex-column'>
117
+ <div className='flex-1-1 display-flex gap-15 padding-20'>
118
+ <div className='height-50 aspect-ratio-1 bg-lightest rounded display-grid place-items-center text-size-14'>
119
+ <span className='rioglyph rioglyph-warning-sign text-size-200pct text-color-warning' />
120
+ </div>
121
+ <div>
122
+ <div className='text-color-dark'>Issues</div>
123
+ <div className='text-size-h3 text-color-darkest line-height-125rel'>{data.issues}</div>
124
+ </div>
125
+ </div>
126
+ </StatsWidget>
127
+ </StatsWidgets>
128
+ </div>
129
+ );
130
+ };
131
+ ```
132
+
133
+ #### HTML (html)
134
+
135
+ ```html
136
+ <div class="margin-25-md">
137
+ <div class="text-size-h2 text-bold text-color-darkest">Stats page</div>
138
+ <p class="text-color-darker margin-top-0">Overview of your supply chain operations</p>
139
+ <div class="StatsWidget-wrapper display-grid grid-auto-fit-250">
140
+ <div class="StatsWidget shadow-default display-flex flex-column">
141
+ <div class="flex-1-1 display-flex gap-15 padding-20">
142
+ <div class="height-50 aspect-ratio-1 bg-lightest rounded display-grid place-items-center text-size-14">
143
+ <span class="rioglyph rioglyph-parcel text-size-200pct text-color-darker">
144
+ </span>
145
+ </div>
146
+ <div>
147
+ <div class="text-color-dark">Total inventory</div>
148
+ <div class="text-size-h3 text-color-darkest line-height-125rel">1353 units</div>
149
+ </div>
150
+ </div>
151
+ <div class="text-size-12 padding-x-20 padding-y-10 bg-lightest rounded-bottom display-flex gap-5">
152
+ <span class="text-medium text-color-success display-flex gap-2 align-items-center">
153
+ <span class="rioglyph rioglyph-arrow-up">
154
+ </span>12%</span>
155
+ <span class="text-color-dark">from last month</span>
156
+ </div>
157
+ </div>
158
+ <div class="StatsWidget shadow-default display-flex flex-column">
159
+ <div class="flex-1-1 display-flex gap-15 padding-20">
160
+ <div class="height-50 aspect-ratio-1 bg-lightest rounded display-grid place-items-center text-size-14">
161
+ <span class="rioglyph rioglyph-order text-size-200pct text-color-darker">
162
+ </span>
163
+ </div>
164
+ <div>
165
+ <div class="text-color-dark">Open orders</div>
166
+ <div class="text-size-h3 text-color-darkest line-height-125rel">70</div>
167
+ </div>
168
+ </div>
169
+ <div class="text-size-12 padding-x-20 padding-y-10 bg-lightest rounded-bottom display-flex gap-5">
170
+ <span class="text-medium text-color-success display-flex gap-2 align-items-center">
171
+ <span class="rioglyph rioglyph-arrow-up">
172
+ </span>5%</span>
173
+ <span class="text-color-dark">from last month</span>
174
+ </div>
175
+ </div>
176
+ <div class="StatsWidget shadow-default display-flex flex-column">
177
+ <div class="flex-1-1 display-flex gap-15 padding-20">
178
+ <div class="height-50 aspect-ratio-1 bg-lightest rounded display-grid place-items-center text-size-14">
179
+ <span class="rioglyph rioglyph-delivery text-size-200pct text-color-darker">
180
+ </span>
181
+ </div>
182
+ <div>
183
+ <div class="text-color-dark">In transit</div>
184
+ <div class="text-size-h3 text-color-darkest line-height-125rel">18</div>
185
+ </div>
186
+ </div>
187
+ <div class="text-size-12 padding-x-20 padding-y-10 bg-lightest rounded-bottom display-flex gap-5">
188
+ <span class="text-medium text-color-danger display-flex gap-2 align-items-center">
189
+ <span class="rioglyph rioglyph-arrow-down">
190
+ </span>-3%</span>
191
+ <span class="text-color-dark">from last month</span>
192
+ </div>
193
+ </div>
194
+ <div class="StatsWidget shadow-default display-flex flex-column">
195
+ <div class="flex-1-1 display-flex gap-15 padding-20">
196
+ <div class="height-50 aspect-ratio-1 bg-lightest rounded display-grid place-items-center text-size-14">
197
+ <span class="rioglyph rioglyph-warning-sign text-size-200pct text-color-warning">
198
+ </span>
199
+ </div>
200
+ <div>
201
+ <div class="text-color-dark">Issues</div>
202
+ <div class="text-size-h3 text-color-darkest line-height-125rel">0</div>
203
+ </div>
204
+ </div>
205
+ </div>
206
+ </div>
207
+ </div>
208
+ ```
209
+
210
+ ### Example: Orders delivered
211
+
212
+ 25M +
213
+ Orders delivered
214
+
215
+ 99.99%
216
+ Total uptime
217
+
218
+ 4.8
219
+ Customer score
220
+
221
+ #### React (tsx)
222
+
223
+ ```tsx
224
+ import { FormattedNumber } from 'react-intl';
225
+
226
+ import StatsWidgets from '@rio-cloud/rio-uikit/StatsWidgets';
227
+ import StatsWidget from '@rio-cloud/rio-uikit/StatsWidget';
228
+
229
+ export default () => (
230
+ <div className='margin-25-md'>
231
+ <StatsWidgets className='display-grid grid-auto-fit-150'>
232
+ <StatsWidget className='padding-20'>
233
+ <div className='text-size-h2 line-height-h2 text-medium text-color-darkest'>25M +</div>
234
+ <div className='text-color-dark padding-top-5'>Orders delivered</div>
235
+ </StatsWidget>
236
+ <StatsWidget className='padding-20'>
237
+ <div className='text-size-h2 line-height-h2 text-medium text-color-darkest'>
238
+ <FormattedNumber value={99.99} style='unit' unit='percent' />
239
+ </div>
240
+ <div className='text-color-dark padding-top-5'>Total uptime</div>
241
+ </StatsWidget>
242
+ <StatsWidget className='padding-20'>
243
+ <div className='text-size-h2 line-height-h2 text-medium text-color-darkest'>
244
+ <FormattedNumber value={4.8} />
245
+ </div>
246
+ <div className='text-color-dark padding-top-5'>Customer score</div>
247
+ </StatsWidget>
248
+ </StatsWidgets>
249
+ </div>
250
+ );
251
+ ```
252
+
253
+ #### HTML (html)
254
+
255
+ ```html
256
+ <div class="margin-25-md">
257
+ <div class="StatsWidget-wrapper display-grid grid-auto-fit-150">
258
+ <div class="StatsWidget padding-20">
259
+ <div class="text-size-h2 line-height-h2 text-medium text-color-darkest">25M +</div>
260
+ <div class="text-color-dark padding-top-5">Orders delivered</div>
261
+ </div>
262
+ <div class="StatsWidget padding-20">
263
+ <div class="text-size-h2 line-height-h2 text-medium text-color-darkest">99.99%</div>
264
+ <div class="text-color-dark padding-top-5">Total uptime</div>
265
+ </div>
266
+ <div class="StatsWidget padding-20">
267
+ <div class="text-size-h2 line-height-h2 text-medium text-color-darkest">4.8</div>
268
+ <div class="text-color-dark padding-top-5">Customer score</div>
269
+ </div>
270
+ </div>
271
+ </div>
272
+ ```
273
+
274
+ ### Example: Total uptime
275
+
276
+ 25M +
277
+ Orders delivered
278
+
279
+ 99.99%
280
+ Total uptime
281
+
282
+ 4.8
283
+ Customer score
284
+
285
+ #### React (tsx)
286
+
287
+ ```tsx
288
+ import { FormattedNumber } from 'react-intl';
289
+
290
+ import StatsWidgets from '@rio-cloud/rio-uikit/StatsWidgets';
291
+ import Divider from '@rio-cloud/rio-uikit/Divider';
292
+
293
+ export default () => (
294
+ <div className='margin-25-md margin-auto'>
295
+ <StatsWidgets>
296
+ <div className='padding-20'>
297
+ <div className='text-size-h2 line-height-h2 text-medium text-color-darkest'>25M +</div>
298
+ <div className='text-color-dar padding-y-5'>Orders delivered</div>
299
+ </div>
300
+ <Divider vertical className='hidden-xs' />
301
+ <div className='padding-20'>
302
+ <div className='text-size-h2 line-height-h2 text-medium text-color-darkest'>
303
+ <FormattedNumber value={99.99} style='unit' unit='percent' />
304
+ </div>
305
+ <div className='text-color-dark padding-y-5'>Total uptime</div>
306
+ </div>
307
+ <Divider vertical className='hidden-xs' />
308
+ <div className='padding-20'>
309
+ <div className='text-size-h2 line-height-h2 text-medium text-color-darkest'>
310
+ <FormattedNumber value={4.8} />
311
+ </div>
312
+ <div className='text-color-dark padding-y-5'>Customer score</div>
313
+ </div>
314
+ </StatsWidgets>
315
+ </div>
316
+ );
317
+ ```
318
+
319
+ #### HTML (html)
320
+
321
+ ```html
322
+ <div class="margin-25-md margin-auto">
323
+ <div class="StatsWidget-wrapper">
324
+ <div class="padding-20">
325
+ <div class="text-size-h2 line-height-h2 text-medium text-color-darkest">25M +</div>
326
+ <div class="text-color-dar padding-y-5">Orders delivered</div>
327
+ </div>
328
+ <div class="Divider position-relative hidden-xs" style="padding-left: 15px; padding-right: 15px;">
329
+ <div class="divider-line bg-light" style="width: 1px; height: 100%;">
330
+ </div>
331
+ </div>
332
+ <div class="padding-20">
333
+ <div class="text-size-h2 line-height-h2 text-medium text-color-darkest">99.99%</div>
334
+ <div class="text-color-dark padding-y-5">Total uptime</div>
335
+ </div>
336
+ <div class="Divider position-relative hidden-xs" style="padding-left: 15px; padding-right: 15px;">
337
+ <div class="divider-line bg-light" style="width: 1px; height: 100%;">
338
+ </div>
339
+ </div>
340
+ <div class="padding-20">
341
+ <div class="text-size-h2 line-height-h2 text-medium text-color-darkest">4.8</div>
342
+ <div class="text-color-dark padding-y-5">Customer score</div>
343
+ </div>
344
+ </div>
345
+ </div>
346
+ ```
347
+
348
+ ### Example: Orders delivered
349
+
350
+ Orders delivered
351
+ 25M +
352
+
353
+ Total uptime
354
+ 99.99%
355
+
356
+ Customer score
357
+ 4.8
358
+
359
+ #### React (tsx)
360
+
361
+ ```tsx
362
+ import { FormattedNumber } from 'react-intl';
363
+
364
+ import StatsWidgets from '@rio-cloud/rio-uikit/StatsWidgets';
365
+ import StatsWidget from '@rio-cloud/rio-uikit/StatsWidget';
366
+
367
+ export default () => (
368
+ <div className='margin-25-md'>
369
+ <StatsWidgets className='border rounded bg-white flex-nowrap gap-5 gap-10-ls gap-20-sm'>
370
+ <StatsWidget className='padding-10 padding-15-ls padding-20-sm bg-none rounded-none border-right-only'>
371
+ <div className='text-color-dark padding-bottom-5'>Orders delivered</div>
372
+ <div className='text-size-h2 line-height-h2 text-medium text-color-darkest'>25M +</div>
373
+ </StatsWidget>
374
+ <StatsWidget className='padding-10 padding-15-ls padding-20-sm bg-none rounded-none border-right-only'>
375
+ <div className='text-color-dark padding-bottom-5'>Total uptime</div>
376
+ <div className='text-size-h2 line-height-h2 text-medium text-color-darkest'>
377
+ <FormattedNumber value={99.99} style='unit' unit='percent' />
378
+ </div>
379
+ </StatsWidget>
380
+ <StatsWidget className='padding-10 padding-15-ls padding-20-sm bg-none rounded-none border-none'>
381
+ <div className='text-color-dark padding-bottom-5'>Customer score</div>
382
+ <div className='text-size-h2 line-height-h2 text-medium text-color-darkest'>
383
+ <FormattedNumber value={4.8} />
384
+ </div>
385
+ </StatsWidget>
386
+ </StatsWidgets>
387
+ </div>
388
+ );
389
+ ```
390
+
391
+ #### HTML (html)
392
+
393
+ ```html
394
+ <div class="margin-25-md">
395
+ <div class="StatsWidget-wrapper border rounded bg-white flex-nowrap gap-5 gap-10-ls gap-20-sm">
396
+ <div class="StatsWidget padding-10 padding-15-ls padding-20-sm bg-none rounded-none border-right-only">
397
+ <div class="text-color-dark padding-bottom-5">Orders delivered</div>
398
+ <div class="text-size-h2 line-height-h2 text-medium text-color-darkest">25M +</div>
399
+ </div>
400
+ <div class="StatsWidget padding-10 padding-15-ls padding-20-sm bg-none rounded-none border-right-only">
401
+ <div class="text-color-dark padding-bottom-5">Total uptime</div>
402
+ <div class="text-size-h2 line-height-h2 text-medium text-color-darkest">99.99%</div>
403
+ </div>
404
+ <div class="StatsWidget padding-10 padding-15-ls padding-20-sm bg-none rounded-none border-none">
405
+ <div class="text-color-dark padding-bottom-5">Customer score</div>
406
+ <div class="text-size-h2 line-height-h2 text-medium text-color-darkest">4.8</div>
407
+ </div>
408
+ </div>
409
+ </div>
410
+ ```
411
+
412
+ ### Example: from 68,345
413
+
414
+ Orders processed
415
+ 72,678
416
+ from 68,345
417
+
418
+ 11.5%
419
+
420
+ Open rate
421
+ 43.6
422
+ from 41.6
423
+
424
+ 3.1%
425
+
426
+ Error rate
427
+ 3.6
428
+ from 2.4
429
+
430
+ 2.01%
431
+
432
+ #### React (tsx)
433
+
434
+ ```tsx
435
+ import { FormattedNumber } from 'react-intl';
436
+
437
+ import StatsWidgets from '@rio-cloud/rio-uikit/StatsWidgets';
438
+ import StatsWidget from '@rio-cloud/rio-uikit/StatsWidget';
439
+
440
+ export default () => {
441
+ // Workaround to create a inner border that is also visible when items wrap onto the next line
442
+ const widgetBorderStyle = {
443
+ boxShadow: '1px 0 0 0 var(--gray-light), 0 1px 0 0 var(--gray-light)',
444
+ };
445
+
446
+ return (
447
+ <div className='margin-25-md'>
448
+ <div className='bg-white border rounded overflow-hidden'>
449
+ <StatsWidgets className='display-grid grid-auto-fit-250 gap-1'>
450
+ <StatsWidget className='padding-20 bg-white rounded-none border-none' style={widgetBorderStyle}>
451
+ <div className='text-size-16 text-color-darkest padding-bottom-5'>Orders processed</div>
452
+ <div className='display-flex align-items-end justify-content-between gap-10 flex-wrap'>
453
+ <div className='display-flex align-items-end gap-10'>
454
+ <div className='text-size-h2 line-height-h2 text-medium text-color-primary'>
455
+ <FormattedNumber value={72_678} />
456
+ </div>
457
+ <div className='text-size-16 text-color-dark'>
458
+ from <FormattedNumber value={68_345} />
459
+ </div>
460
+ </div>
461
+ <div className='label label-success padding-x-5'>
462
+ <span className='rioglyph rioglyph-arrow-up' />
463
+ <FormattedNumber value={11.5} style='unit' unit='percent' />
464
+ </div>
465
+ </div>
466
+ </StatsWidget>
467
+ <StatsWidget className='padding-20 bg-white rounded-none border-none' style={widgetBorderStyle}>
468
+ <div className='text-size-16 text-color-darkest padding-bottom-5'>Open rate</div>
469
+ <div className='display-flex align-items-end justify-content-between gap-10 flex-wrap'>
470
+ <div className='display-flex align-items-end gap-10'>
471
+ <div className='text-size-h2 line-height-h2 text-medium text-color-primary'>
472
+ <FormattedNumber value={43.6} />
473
+ </div>
474
+ <div className='text-size-16 text-color-dark'>
475
+ from <FormattedNumber value={41.6} />
476
+ </div>
477
+ </div>
478
+ <div className='label label-success padding-x-5'>
479
+ <span className='rioglyph rioglyph-arrow-up' />
480
+ <FormattedNumber value={3.1} style='unit' unit='percent' />
481
+ </div>
482
+ </div>
483
+ </StatsWidget>
484
+ <StatsWidget className='padding-20 bg-white rounded-none border-none' style={widgetBorderStyle}>
485
+ <div className='text-size-16 text-color-darkest padding-bottom-5'>Error rate</div>
486
+ <div className='display-flex align-items-end justify-content-between gap-10 flex-wrap'>
487
+ <div className='display-flex align-items-end gap-10'>
488
+ <div className='text-size-h2 line-height-h2 text-medium text-color-primary'>
489
+ <FormattedNumber value={3.6} />
490
+ </div>
491
+ <div className='text-size-16 text-color-dark'>
492
+ from <FormattedNumber value={2.4} />
493
+ </div>
494
+ </div>
495
+ <div className='label label-danger padding-x-5'>
496
+ <span className='rioglyph rioglyph-arrow-up' />
497
+ <FormattedNumber value={2.01} style='unit' unit='percent' />
498
+ </div>
499
+ </div>
500
+ </StatsWidget>
501
+ </StatsWidgets>
502
+ </div>
503
+ </div>
504
+ );
505
+ };
506
+ ```
507
+
508
+ #### HTML (html)
509
+
510
+ ```html
511
+ <div class="margin-25-md">
512
+ <div class="bg-white border rounded overflow-hidden">
513
+ <div class="StatsWidget-wrapper display-grid grid-auto-fit-250 gap-1">
514
+ <div class="StatsWidget padding-20 bg-white rounded-none border-none" style="box-shadow: 1px 0 0 0 var(--gray-light), 0 1px 0 0 var(--gray-light);">
515
+ <div class="text-size-16 text-color-darkest padding-bottom-5">Orders processed</div>
516
+ <div class="display-flex align-items-end justify-content-between gap-10 flex-wrap">
517
+ <div class="display-flex align-items-end gap-10">
518
+ <div class="text-size-h2 line-height-h2 text-medium text-color-primary">72,678</div>
519
+ <div class="text-size-16 text-color-dark">from 68,345</div>
520
+ </div>
521
+ <div class="label label-success padding-x-5">
522
+ <span class="rioglyph rioglyph-arrow-up">
523
+ </span>11.5%
524
+ </div>
525
+ </div>
526
+ </div>
527
+ <div class="StatsWidget padding-20 bg-white rounded-none border-none" style="box-shadow: 1px 0 0 0 var(--gray-light), 0 1px 0 0 var(--gray-light);">
528
+ <div class="text-size-16 text-color-darkest padding-bottom-5">Open rate</div>
529
+ <div class="display-flex align-items-end justify-content-between gap-10 flex-wrap">
530
+ <div class="display-flex align-items-end gap-10">
531
+ <div class="text-size-h2 line-height-h2 text-medium text-color-primary">43.6</div>
532
+ <div class="text-size-16 text-color-dark">from 41.6</div>
533
+ </div>
534
+ <div class="label label-success padding-x-5">
535
+ <span class="rioglyph rioglyph-arrow-up">
536
+ </span>3.1%
537
+ </div>
538
+ </div>
539
+ </div>
540
+ <div class="StatsWidget padding-20 bg-white rounded-none border-none" style="box-shadow: 1px 0 0 0 var(--gray-light), 0 1px 0 0 var(--gray-light);">
541
+ <div class="text-size-16 text-color-darkest padding-bottom-5">Error rate</div>
542
+ <div class="display-flex align-items-end justify-content-between gap-10 flex-wrap">
543
+ <div class="display-flex align-items-end gap-10">
544
+ <div class="text-size-h2 line-height-h2 text-medium text-color-primary">3.6</div>
545
+ <div class="text-size-16 text-color-dark">from 2.4</div>
546
+ </div>
547
+ <div class="label label-danger padding-x-5">
548
+ <span class="rioglyph rioglyph-arrow-up">
549
+ </span>2.01%
550
+ </div>
551
+ </div>
552
+ </div>
553
+ </div>
554
+ </div>
555
+ </div>
556
+ ```
557
+
558
+ ### Example: Number of data brokers removal requests have been sent to.
559
+
560
+ September, 2025
561
+ Requests sent
562
+ 185
563
+
564
+ Number of data brokers removal requests have been sent to.
565
+
566
+ Requests in progress
567
+ 185
568
+
569
+ Number of data brokers that have started processing our removal requests.
570
+
571
+ Requests completed
572
+ 0
573
+
574
+ Number of data brokers that checked and confirmed that they are now not holding your data.
575
+
576
+ #### React (tsx)
577
+
578
+ ```tsx
579
+ import Divider from '@rio-cloud/rio-uikit/Divider';
580
+ import Card from '@rio-cloud/rio-uikit/Card';
581
+
582
+ export default () => (
583
+ <div className='margin-25-md'>
584
+ <div className='padding-20 cq-container'>
585
+ <h2 className='margin-top-0 margin-bottom-25'>September, 2025</h2>
586
+ <div className='display-grid grid-cols-1 cq-400:grid-cols-2 cq-700:grid-cols-3 gap-25'>
587
+ <Card className='padding-20'>
588
+ <div className='text-color-darker text-size-18 text-medium margin-bottom-5'>Requests sent</div>
589
+ <div className='text-size-h1 text-bold text-color-darkest'>185</div>
590
+ <Divider dividerColor='lighter' />
591
+ <div className='text-color-dark text-size-12'>
592
+ Number of data brokers removal requests have been sent to.
593
+ </div>
594
+ </Card>
595
+
596
+ <Card className='padding-20'>
597
+ <div className='text-color-darker text-size-18 text-medium margin-bottom-5'>
598
+ Requests in progress
599
+ </div>
600
+ <div className='text-size-h1 text-bold text-color-darkest'>185</div>
601
+ <Divider dividerColor='lighter' />
602
+ <div className='text-color-dark text-size-12'>
603
+ Number of data brokers that have started processing our removal requests.
604
+ </div>
605
+ </Card>
606
+
607
+ <Card className='padding-20'>
608
+ <div className='text-color-darker text-size-18 text-medium margin-bottom-5'>Requests completed</div>
609
+ <div className='text-size-h1 text-bold text-color-darkest'>0</div>
610
+ <Divider dividerColor='lighter' />
611
+ <div className='text-color-dark text-size-12'>
612
+ Number of data brokers that checked and confirmed that they are now not holding your data.
613
+ </div>
614
+ </Card>
615
+ </div>
616
+ </div>
617
+ </div>
618
+ );
619
+ ```
620
+
621
+ #### HTML (html)
622
+
623
+ ```html
624
+ <div class="margin-25-md">
625
+ <div class="padding-20 cq-container">
626
+ <h2 class="margin-top-0 margin-bottom-25">September, 2025</h2>
627
+ <div class="display-grid grid-cols-1 cq-400:grid-cols-2 cq-700:grid-cols-3 gap-25">
628
+ <div class="bg-white rounded border shadow-default padding-15 padding-20">
629
+ <div class="text-color-darker text-size-18 text-medium margin-bottom-5">Requests sent</div>
630
+ <div class="text-size-h1 text-bold text-color-darkest">185</div>
631
+ <div class="Divider position-relative width-100pct" style="padding-top: 15px; padding-bottom: 15px;">
632
+ <div class="divider-line bg-lighter" style="width: 100%; height: 1px;">
633
+ </div>
634
+ </div>
635
+ <div class="text-color-dark text-size-12">Number of data brokers removal requests have been sent to.</div>
636
+ </div>
637
+ <div class="bg-white rounded border shadow-default padding-15 padding-20">
638
+ <div class="text-color-darker text-size-18 text-medium margin-bottom-5">Requests in progress</div>
639
+ <div class="text-size-h1 text-bold text-color-darkest">185</div>
640
+ <div class="Divider position-relative width-100pct" style="padding-top: 15px; padding-bottom: 15px;">
641
+ <div class="divider-line bg-lighter" style="width: 100%; height: 1px;">
642
+ </div>
643
+ </div>
644
+ <div class="text-color-dark text-size-12">Number of data brokers that have started processing our removal requests.</div>
645
+ </div>
646
+ <div class="bg-white rounded border shadow-default padding-15 padding-20">
647
+ <div class="text-color-darker text-size-18 text-medium margin-bottom-5">Requests completed</div>
648
+ <div class="text-size-h1 text-bold text-color-darkest">0</div>
649
+ <div class="Divider position-relative width-100pct" style="padding-top: 15px; padding-bottom: 15px;">
650
+ <div class="divider-line bg-lighter" style="width: 100%; height: 1px;">
651
+ </div>
652
+ </div>
653
+ <div class="text-color-dark text-size-12">Number of data brokers that checked and confirmed that they are now not holding your data.</div>
654
+ </div>
655
+ </div>
656
+ </div>
657
+ </div>
658
+ ```
659
+
660
+ ### Example:
661
+
662
+ Lorem ipsum dolor
663
+
664
+ January February March April May June
665
+
666
+ Lorem ipsum dolor
667
+
668
+ Status Location ETA
669
+
670
+ In transit
671
+ Hamburg, DE 2024-02-02
672
+
673
+ Delivered
674
+ Rotterdam, NL 2024-01-29
675
+
676
+ Awaiting pickup
677
+ Warsaw, PL 2024-02-05
678
+
679
+ Customs clearance
680
+ Antwerp, BE 2024-02-03
681
+
682
+ Transport ipsum dolor
683
+
684
+ On-time delivery
685
+
686
+ Warehouse efficiency
687
+
688
+ Truck utilization
689
+
690
+ Freight cost/km
691
+
692
+ Fuel consumption index
693
+
694
+ 92%
695
+
696
+ 84%
697
+
698
+ 78%
699
+
700
+ 65%
701
+
702
+ 15%
703
+
704
+ #### React (tsx)
705
+
706
+ ```tsx
707
+ import Bar from '@rio-cloud/rio-uikit/Bar';
708
+ import BarChart from '@rio-cloud/rio-uikit/BarChart';
709
+ import ButtonDropdown from '@rio-cloud/rio-uikit/ButtonDropdown';
710
+ import AccentBar from '@rio-cloud/rio-uikit/AccentBar';
711
+ import SimpleTooltip from '@rio-cloud/rio-uikit/SimpleTooltip';
712
+ import BarList from '@rio-cloud/rio-uikit/BarList';
713
+
714
+ export default () => {
715
+ const optionsButton = (
716
+ <ButtonDropdown
717
+ bsStyle='muted'
718
+ title={<span className='rioglyph rioglyph-option-horizontal' aria-hidden='true' />}
719
+ items={[
720
+ {
721
+ value: 'Edit',
722
+ },
723
+ {
724
+ value: 'Share',
725
+ },
726
+ {
727
+ value: 'Report issue',
728
+ },
729
+ ]}
730
+ iconOnly
731
+ pullRight
732
+ />
733
+ );
734
+
735
+ return (
736
+ <div className='margin-25-md'>
737
+ <div className='display-grid grid-cols-1 grid-cols-2-sm gap-25'>
738
+ <div className='panel panel-default shadow-default min-width-200'>
739
+ <div className='panel-heading display-flex align-items-center justify-content-between padding-left-20'>
740
+ <div className='text-medium text-size-16'>Lorem ipsum dolor</div>
741
+ <div>{optionsButton}</div>
742
+ </div>
743
+ <div className='panel-body padding-15 padding-25-sm height-300 overflow-auto'>
744
+ <BarChart
745
+ data={data}
746
+ dataKey='label'
747
+ xAxisOptions={{ dataKey: 'label' }}
748
+ showYAxis={false}
749
+ margin={{ bottom: 15 }}
750
+ bars={[
751
+ <Bar
752
+ key='myBar'
753
+ dataKey='costs'
754
+ unit='€'
755
+ color='brand-primary'
756
+ radius={[3, 3, 0, 0]}
757
+ label={{
758
+ position: 'top',
759
+ formatter: (value: number) => `${value} €`,
760
+ }}
761
+ />,
762
+ ]}
763
+ />
764
+ </div>
765
+ </div>
766
+
767
+ <div className='panel panel-default shadow-default min-width-200'>
768
+ <div className='panel-heading display-flex align-items-center justify-content-between padding-left-20'>
769
+ <div className='text-medium text-size-16 display-flex gap-5 align-items-center'>
770
+ <span>Lorem ipsum dolor</span>
771
+ <SimpleTooltip content='Some helper text' placement='top'>
772
+ <span className='rioglyph rioglyph-question-sign text-color-dark cursor-pointer' />
773
+ </SimpleTooltip>
774
+ </div>
775
+ <div>{optionsButton}</div>
776
+ </div>
777
+ <div className='panel-body padding-15 padding-25-sm overflow-auto'>
778
+ <table className='table'>
779
+ <thead>
780
+ <tr>
781
+ <th>Status</th>
782
+ <th>Location</th>
783
+ <th>ETA</th>
784
+ </tr>
785
+ </thead>
786
+ <tbody>
787
+ {tableData.map(row => (
788
+ <tr key={row.id}>
789
+ <td>
790
+ <AccentBar color={getStatusColor(row.status)}>{row.status}</AccentBar>
791
+ </td>
792
+ <td>{row.location}</td>
793
+ <td>{row.eta}</td>
794
+ </tr>
795
+ ))}
796
+ </tbody>
797
+ </table>
798
+ </div>
799
+ </div>
800
+
801
+ <div className='panel panel-default shadow-default min-width-200'>
802
+ <div className='panel-heading display-flex align-items-center justify-content-between padding-left-20'>
803
+ <div className='text-medium text-size-16 display-flex gap-5 align-items-center'>
804
+ <span>Transport ipsum dolor</span>
805
+ </div>
806
+ <div>{optionsButton}</div>
807
+ </div>
808
+ <div className='panel-body padding-15 padding-25-sm overflow-auto'>
809
+ <BarList
810
+ data={barListData}
811
+ valueFormatter={value => `${value}%`}
812
+ referenceValue={100}
813
+ showAnimation
814
+ />
815
+ </div>
816
+ </div>
817
+ </div>
818
+ </div>
819
+ );
820
+ };
821
+
822
+ const data = [
823
+ {
824
+ label: 'January',
825
+ costs: 46.8,
826
+ },
827
+ {
828
+ label: 'February',
829
+ costs: 22.0,
830
+ },
831
+ {
832
+ label: 'March',
833
+ costs: 12.4,
834
+ },
835
+ {
836
+ label: 'April',
837
+ costs: 3.88,
838
+ },
839
+ {
840
+ label: 'May',
841
+ costs: 3.23,
842
+ },
843
+ {
844
+ label: 'June',
845
+ costs: 4.67,
846
+ },
847
+ ];
848
+
849
+ const tableData = [
850
+ { id: 1, status: 'In transit', location: 'Hamburg, DE', eta: '2024-02-02' },
851
+ { id: 2, status: 'Delivered', location: 'Rotterdam, NL', eta: '2024-01-29' },
852
+ { id: 3, status: 'Awaiting pickup', location: 'Warsaw, PL', eta: '2024-02-05' },
853
+ { id: 4, status: 'Customs clearance', location: 'Antwerp, BE', eta: '2024-02-03' },
854
+ ];
855
+
856
+ const barListData = [
857
+ {
858
+ key: 'truck_utilization',
859
+ name: 'Truck utilization',
860
+ value: 78,
861
+ },
862
+ {
863
+ key: 'on_time_delivery',
864
+ name: 'On-time delivery',
865
+ value: 92,
866
+ },
867
+ {
868
+ key: 'freight_cost_per_km',
869
+ name: 'Freight cost/km',
870
+ value: 65,
871
+ },
872
+ {
873
+ key: 'warehouse_efficiency',
874
+ name: 'Warehouse efficiency',
875
+ value: 84,
876
+ },
877
+ {
878
+ key: 'fuel_consumption',
879
+ name: 'Fuel consumption index',
880
+ value: 15,
881
+ },
882
+ ];
883
+
884
+ const getStatusColor = (status: string) => {
885
+ switch (status) {
886
+ case 'In transit':
887
+ return 'bg-warning';
888
+ case 'Delivered':
889
+ return 'bg-success';
890
+ case 'Awaiting pickup':
891
+ return 'bg-info';
892
+ case 'Customs clearance':
893
+ return 'bg-danger';
894
+ default:
895
+ return 'bg-primary';
896
+ }
897
+ };
898
+ ```
899
+
900
+ #### HTML (html)
901
+
902
+ ```html
903
+ <div class="margin-25-md">
904
+ <div class="display-grid grid-cols-1 grid-cols-2-sm gap-25">
905
+ <div class="panel panel-default shadow-default min-width-200">
906
+ <div class="panel-heading display-flex align-items-center justify-content-between padding-left-20">
907
+ <div class="text-medium text-size-16">Lorem ipsum dolor</div>
908
+ <div>
909
+ <div class="dropdown btn-group">
910
+ <button type="button" id="11wezc6jasrn" class="btn btn-muted btn-md btn-icon-only btn-component dropdown-toggle" tabindex="0">
911
+ <span class="rioglyph rioglyph-option-horizontal" aria-hidden="true">
912
+ </span>
913
+ </button>
914
+ </div>
915
+ </div>
916
+ </div>
917
+ <div class="panel-body padding-15 padding-25-sm height-300 overflow-auto">
918
+ <div class="recharts-responsive-container" style="width: 100%; height: 100%; min-width: 100px; min-height: 100px;">
919
+ <div style="width: 0px; height: 0px; overflow: visible;">
920
+ <div width="365" height="250" class="recharts-wrapper" style="position: relative; cursor: default; width: 365px; height: 250px;">
921
+ <div xmlns="http://www.w3.org/1999/xhtml" tabindex="-1" class="recharts-tooltip-wrapper" style="visibility: hidden; pointer-events: none; position: absolute; top: 0px; left: 0px;">
922
+ <div class="recharts-default-tooltip" role="status" aria-live="assertive" style="margin: 0px; padding: 10px; background-color: rgb(255, 255, 255); border: 1px solid rgb(204, 204, 204); white-space: nowrap;">
923
+ <p class="recharts-tooltip-label" style="margin: 0px;">
924
+ </p>
925
+ </div>
926
+ </div>
927
+ <svg role="application" tabindex="0" class="recharts-surface" width="365" height="250" viewBox="0 0 365 250" style="width: 100%; height: 100%; display: block;">
928
+ <title>
929
+ </title>
930
+ <desc>
931
+ </desc>
932
+ <g tabindex="-1" class="recharts-zIndex-layer_-100">
933
+ </g>
934
+ <g tabindex="-1" class="recharts-zIndex-layer_-50">
935
+ </g>
936
+ <defs>
937
+ <clipPath id="recharts1-clip">
938
+ <rect x="0" y="0" height="205" width="365">
939
+ </rect>
940
+ </clipPath>
941
+ </defs>
942
+ <g tabindex="-1" class="recharts-zIndex-layer_100">
943
+ </g>
944
+ <g tabindex="-1" class="recharts-zIndex-layer_200">
945
+ </g>
946
+ <g tabindex="-1" class="recharts-zIndex-layer_300">
947
+ <g class="recharts-layer recharts-bar" id="recharts-bar-:r0:">
948
+ <g class="recharts-layer recharts-bar-rectangles">
949
+ <g class="recharts-layer">
950
+ <g class="recharts-layer recharts-bar-rectangle">
951
+ <g class="recharts-layer recharts-inactive-bar">
952
+ <path fill="#30b4c0 " name="undefined" x="6.0833" y="45.1" width="48" height="159.9" class="recharts-rectangle" d="M6.0833,48.1A 3,3,0,0,1,9.0833,45.1L 51.0833,45.1A 3,3,0,0,1,
953
+ 54.0833,48.1L 54.0833,205L 6.0833,205Z">
954
+ </path>
955
+ </g>
956
+ </g>
957
+ <g class="recharts-layer recharts-bar-rectangle">
958
+ <g class="recharts-layer recharts-inactive-bar">
959
+ <path fill="#30b4c0 " name="undefined" x="66.9167" y="129.8333" width="48" height="75.1667" class="recharts-rectangle" d="M66.9167,132.8333A 3,3,0,0,1,69.9167,129.8333L 111.9167,129.8333A 3,3,0,0,1,
960
+ 114.9167,132.8333L 114.9167,205L 66.9167,205Z">
961
+ </path>
962
+ </g>
963
+ </g>
964
+ <g class="recharts-layer recharts-bar-rectangle">
965
+ <g class="recharts-layer recharts-inactive-bar">
966
+ <path fill="#30b4c0 " name="undefined" x="127.75" y="162.6333" width="48" height="42.3667" class="recharts-rectangle" d="M127.75,165.6333A 3,3,0,0,1,130.75,162.6333L 172.75,162.6333A 3,3,0,0,1,
967
+ 175.75,165.6333L 175.75,205L 127.75,205Z">
968
+ </path>
969
+ </g>
970
+ </g>
971
+ <g class="recharts-layer recharts-bar-rectangle">
972
+ <g class="recharts-layer recharts-inactive-bar">
973
+ <path fill="#30b4c0 " name="undefined" x="188.5833" y="191.7433" width="48" height="13.2567" class="recharts-rectangle" d="M188.5833,194.7433A 3,3,0,0,1,191.5833,191.7433L 233.5833,191.7433A 3,3,0,0,1,
974
+ 236.5833,194.7433L 236.5833,205L 188.5833,205Z">
975
+ </path>
976
+ </g>
977
+ </g>
978
+ <g class="recharts-layer recharts-bar-rectangle">
979
+ <g class="recharts-layer recharts-inactive-bar">
980
+ <path fill="#30b4c0 " name="undefined" x="249.4167" y="193.9642" width="48" height="11.0358" class="recharts-rectangle" d="M249.4167,196.9642A 3,3,0,0,1,252.4167,193.9642L 294.4167,193.9642A 3,3,0,0,1,
981
+ 297.4167,196.9642L 297.4167,205L 249.4167,205Z">
982
+ </path>
983
+ </g>
984
+ </g>
985
+ <g class="recharts-layer recharts-bar-rectangle">
986
+ <g class="recharts-layer recharts-inactive-bar">
987
+ <path fill="#30b4c0 " name="undefined" x="310.25" y="189.0442" width="48" height="15.9558" class="recharts-rectangle" d="M310.25,192.0442A 3,3,0,0,1,313.25,189.0442L 355.25,189.0442A 3,3,0,0,1,
988
+ 358.25,192.0442L 358.25,205L 310.25,205Z">
989
+ </path>
990
+ </g>
991
+ </g>
992
+ </g>
993
+ </g>
994
+ </g>
995
+ </g>
996
+ <g tabindex="-1" class="recharts-zIndex-layer_400">
997
+ </g>
998
+ <g tabindex="-1" class="recharts-zIndex-layer_500">
999
+ <g class="recharts-layer recharts-cartesian-axis recharts-xAxis xAxis">
1000
+ <line angle="0" height="30" orientation="bottom" x="0" y="205" width="365" class="recharts-cartesian-axis-line" stroke="#666" fill="none" x1="0" y1="205" x2="365" y2="205">
1001
+ </line>
1002
+ <g class="recharts-cartesian-axis-ticks recharts-xAxis-ticks">
1003
+ <g class="recharts-cartesian-axis-tick-lines recharts-xAxis-tick-lines">
1004
+ <g class="recharts-layer recharts-cartesian-axis-tick">
1005
+ <line angle="0" height="30" orientation="bottom" x="0" y="205" width="365" class="recharts-cartesian-axis-tick-line" stroke="#666" fill="none" x1="30.416666666666668" y1="211" x2="30.416666666666668" y2="205">
1006
+ </line>
1007
+ </g>
1008
+ <g class="recharts-layer recharts-cartesian-axis-tick">
1009
+ <line angle="0" height="30" orientation="bottom" x="0" y="205" width="365" class="recharts-cartesian-axis-tick-line" stroke="#666" fill="none" x1="91.25" y1="211" x2="91.25" y2="205">
1010
+ </line>
1011
+ </g>
1012
+ <g class="recharts-layer recharts-cartesian-axis-tick">
1013
+ <line angle="0" height="30" orientation="bottom" x="0" y="205" width="365" class="recharts-cartesian-axis-tick-line" stroke="#666" fill="none" x1="152.08333333333334" y1="211" x2="152.08333333333334" y2="205">
1014
+ </line>
1015
+ </g>
1016
+ <g class="recharts-layer recharts-cartesian-axis-tick">
1017
+ <line angle="0" height="30" orientation="bottom" x="0" y="205" width="365" class="recharts-cartesian-axis-tick-line" stroke="#666" fill="none" x1="212.91666666666666" y1="211" x2="212.91666666666666" y2="205">
1018
+ </line>
1019
+ </g>
1020
+ <g class="recharts-layer recharts-cartesian-axis-tick">
1021
+ <line angle="0" height="30" orientation="bottom" x="0" y="205" width="365" class="recharts-cartesian-axis-tick-line" stroke="#666" fill="none" x1="273.75" y1="211" x2="273.75" y2="205">
1022
+ </line>
1023
+ </g>
1024
+ <g class="recharts-layer recharts-cartesian-axis-tick">
1025
+ <line angle="0" height="30" orientation="bottom" x="0" y="205" width="365" class="recharts-cartesian-axis-tick-line" stroke="#666" fill="none" x1="334.58333333333337" y1="211" x2="334.58333333333337" y2="205">
1026
+ </line>
1027
+ </g>
1028
+ </g>
1029
+ </g>
1030
+ </g>
1031
+ </g>
1032
+ <g tabindex="-1" class="recharts-zIndex-layer_600">
1033
+ </g>
1034
+ <g tabindex="-1" class="recharts-zIndex-layer_1000">
1035
+ </g>
1036
+ <g tabindex="-1" class="recharts-zIndex-layer_1100">
1037
+ </g>
1038
+ <g tabindex="-1" class="recharts-zIndex-layer_1200">
1039
+ </g>
1040
+ <g tabindex="-1" class="recharts-zIndex-layer_2000">
1041
+ <g class="recharts-cartesian-axis-tick-labels recharts-xAxis-tick-labels">
1042
+ <g class="recharts-layer recharts-cartesian-axis-tick-label">
1043
+ <text height="30" orientation="bottom" width="365" stroke="none" x="30.416666666666668" y="213" class="recharts-text recharts-cartesian-axis-tick-value" text-anchor="middle" fill="#666">
1044
+ <tspan x="30.416666666666668" dy="0.71em">January</tspan>
1045
+ </text>
1046
+ </g>
1047
+ <g class="recharts-layer recharts-cartesian-axis-tick-label">
1048
+ <text height="30" orientation="bottom" width="365" stroke="none" x="91.25" y="213" class="recharts-text recharts-cartesian-axis-tick-value" text-anchor="middle" fill="#666">
1049
+ <tspan x="91.25" dy="0.71em">February</tspan>
1050
+ </text>
1051
+ </g>
1052
+ <g class="recharts-layer recharts-cartesian-axis-tick-label">
1053
+ <text height="30" orientation="bottom" width="365" stroke="none" x="152.08333333333334" y="213" class="recharts-text recharts-cartesian-axis-tick-value" text-anchor="middle" fill="#666">
1054
+ <tspan x="152.08333333333334" dy="0.71em">March</tspan>
1055
+ </text>
1056
+ </g>
1057
+ <g class="recharts-layer recharts-cartesian-axis-tick-label">
1058
+ <text height="30" orientation="bottom" width="365" stroke="none" x="212.91666666666666" y="213" class="recharts-text recharts-cartesian-axis-tick-value" text-anchor="middle" fill="#666">
1059
+ <tspan x="212.91666666666666" dy="0.71em">April</tspan>
1060
+ </text>
1061
+ </g>
1062
+ <g class="recharts-layer recharts-cartesian-axis-tick-label">
1063
+ <text height="30" orientation="bottom" width="365" stroke="none" x="273.75" y="213" class="recharts-text recharts-cartesian-axis-tick-value" text-anchor="middle" fill="#666">
1064
+ <tspan x="273.75" dy="0.71em">May</tspan>
1065
+ </text>
1066
+ </g>
1067
+ <g class="recharts-layer recharts-cartesian-axis-tick-label">
1068
+ <text height="30" orientation="bottom" width="365" stroke="none" x="334.58333333333337" y="213" class="recharts-text recharts-cartesian-axis-tick-value" text-anchor="middle" fill="#666">
1069
+ <tspan x="334.58333333333337" dy="0.71em">June</tspan>
1070
+ </text>
1071
+ </g>
1072
+ </g>
1073
+ <g class="recharts-layer recharts-label-list">
1074
+ <text width="48" height="45.100000000000016" offset="5" x="30.083333333333336" y="40.100000000000016" class="recharts-text recharts-label" text-anchor="middle" fill="#808080">
1075
+ <tspan x="30.083333333333336" dy="0em">46.8 €</tspan>
1076
+ </text>
1077
+ <text width="48" height="129.83333333333331" offset="5" x="90.91666666666667" y="124.83333333333331" class="recharts-text recharts-label" text-anchor="middle" fill="#808080">
1078
+ <tspan x="90.91666666666667" dy="0em">22 €</tspan>
1079
+ </text>
1080
+ <text width="48" height="162.63333333333333" offset="5" x="151.75" y="157.63333333333333" class="recharts-text recharts-label" text-anchor="middle" fill="#808080">
1081
+ <tspan x="151.75" dy="0em">12.4 €</tspan>
1082
+ </text>
1083
+ <text width="48" height="191.74333333333334" offset="5" x="212.58333333333334" y="186.74333333333334" class="recharts-text recharts-label" text-anchor="middle" fill="#808080">
1084
+ <tspan x="212.58333333333334" dy="0em">3.88 €</tspan>
1085
+ </text>
1086
+ <text width="48" height="193.96416666666667" offset="5" x="273.4166666666667" y="188.96416666666667" class="recharts-text recharts-label" text-anchor="middle" fill="#808080">
1087
+ <tspan x="273.4166666666667" dy="0em">3.23 €</tspan>
1088
+ </text>
1089
+ <text width="48" height="189.04416666666668" offset="5" x="334.25" y="184.04416666666668" class="recharts-text recharts-label" text-anchor="middle" fill="#808080">
1090
+ <tspan x="334.25" dy="0em">4.67 €</tspan>
1091
+ </text>
1092
+ </g>
1093
+ </g>
1094
+ </svg>
1095
+ </div>
1096
+ </div>
1097
+ </div>
1098
+ </div>
1099
+ </div>
1100
+ <div class="panel panel-default shadow-default min-width-200">
1101
+ <div class="panel-heading display-flex align-items-center justify-content-between padding-left-20">
1102
+ <div class="text-medium text-size-16 display-flex gap-5 align-items-center">
1103
+ <span>Lorem ipsum dolor</span>
1104
+ <span class="rioglyph rioglyph-question-sign text-color-dark cursor-pointer">
1105
+ </span>
1106
+ </div>
1107
+ <div>
1108
+ <div class="dropdown btn-group">
1109
+ <button type="button" id="fkf6pwsnp6h" class="btn btn-muted btn-md btn-icon-only btn-component dropdown-toggle" tabindex="0">
1110
+ <span class="rioglyph rioglyph-option-horizontal" aria-hidden="true">
1111
+ </span>
1112
+ </button>
1113
+ </div>
1114
+ </div>
1115
+ </div>
1116
+ <div class="panel-body padding-15 padding-25-sm overflow-auto">
1117
+ <table class="table">
1118
+ <thead>
1119
+ <tr>
1120
+ <th>Status</th>
1121
+ <th>Location</th>
1122
+ <th>ETA</th>
1123
+ </tr>
1124
+ </thead>
1125
+ <tbody>
1126
+ <tr>
1127
+ <td>
1128
+ <div class="display-flex align-items-stretch">
1129
+ <div class="AccentBar bg-warning">
1130
+ </div>In transit
1131
+ </div>
1132
+ </td>
1133
+ <td>Hamburg, DE</td>
1134
+ <td>2024-02-02</td>
1135
+ </tr>
1136
+ <tr>
1137
+ <td>
1138
+ <div class="display-flex align-items-stretch">
1139
+ <div class="AccentBar bg-success">
1140
+ </div>Delivered
1141
+ </div>
1142
+ </td>
1143
+ <td>Rotterdam, NL</td>
1144
+ <td>2024-01-29</td>
1145
+ </tr>
1146
+ <tr>
1147
+ <td>
1148
+ <div class="display-flex align-items-stretch">
1149
+ <div class="AccentBar bg-info">
1150
+ </div>Awaiting pickup
1151
+ </div>
1152
+ </td>
1153
+ <td>Warsaw, PL</td>
1154
+ <td>2024-02-05</td>
1155
+ </tr>
1156
+ <tr>
1157
+ <td>
1158
+ <div class="display-flex align-items-stretch">
1159
+ <div class="AccentBar bg-danger">
1160
+ </div>Customs clearance
1161
+ </div>
1162
+ </td>
1163
+ <td>Antwerp, BE</td>
1164
+ <td>2024-02-03</td>
1165
+ </tr>
1166
+ </tbody>
1167
+ </table>
1168
+ </div>
1169
+ </div>
1170
+ <div class="panel panel-default shadow-default min-width-200">
1171
+ <div class="panel-heading display-flex align-items-center justify-content-between padding-left-20">
1172
+ <div class="text-medium text-size-16 display-flex gap-5 align-items-center">
1173
+ <span>Transport ipsum dolor</span>
1174
+ </div>
1175
+ <div>
1176
+ <div class="dropdown btn-group">
1177
+ <button type="button" id="nkrh7m5h1j" class="btn btn-muted btn-md btn-icon-only btn-component dropdown-toggle" tabindex="0">
1178
+ <span class="rioglyph rioglyph-option-horizontal" aria-hidden="true">
1179
+ </span>
1180
+ </button>
1181
+ </div>
1182
+ </div>
1183
+ </div>
1184
+ <div class="panel-body padding-15 padding-25-sm overflow-auto">
1185
+ <div class="display-flex justify-content-between gap-15">
1186
+ <div class="width-100pct space-y-5">
1187
+ <div class="position-relative width-100pct rounded-small transition-all transition-ease-in-out transition-duration-01 bg-transparent">
1188
+ <div class="display-flex align-items-center rounded-small transition-all transition-ease-in-out transition-duration-01 bg-highlight-light" role="presentation" style="height: 25px; opacity: 0.5; width: 92%;">
1189
+ </div>
1190
+ <div class="position-absolute left-0 top-50pct translate-y-50pct display-flex width-100pct padding-left-10">
1191
+ <div class="text-color-darker">On-time delivery</div>
1192
+ </div>
1193
+ </div>
1194
+ <div class="position-relative width-100pct rounded-small transition-all transition-ease-in-out transition-duration-01 bg-transparent">
1195
+ <div class="display-flex align-items-center rounded-small transition-all transition-ease-in-out transition-duration-01 bg-highlight-light" role="presentation" style="height: 25px; opacity: 0.5; width: 84%;">
1196
+ </div>
1197
+ <div class="position-absolute left-0 top-50pct translate-y-50pct display-flex width-100pct padding-left-10">
1198
+ <div class="text-color-darker">Warehouse efficiency</div>
1199
+ </div>
1200
+ </div>
1201
+ <div class="position-relative width-100pct rounded-small transition-all transition-ease-in-out transition-duration-01 bg-transparent">
1202
+ <div class="display-flex align-items-center rounded-small transition-all transition-ease-in-out transition-duration-01 bg-highlight-light" role="presentation" style="height: 25px; opacity: 0.5; width: 78%;">
1203
+ </div>
1204
+ <div class="position-absolute left-0 top-50pct translate-y-50pct display-flex width-100pct padding-left-10">
1205
+ <div class="text-color-darker">Truck utilization</div>
1206
+ </div>
1207
+ </div>
1208
+ <div class="position-relative width-100pct rounded-small transition-all transition-ease-in-out transition-duration-01 bg-transparent">
1209
+ <div class="display-flex align-items-center rounded-small transition-all transition-ease-in-out transition-duration-01 bg-highlight-light" role="presentation" style="height: 25px; opacity: 0.5; width: 65%;">
1210
+ </div>
1211
+ <div class="position-absolute left-0 top-50pct translate-y-50pct display-flex width-100pct padding-left-10">
1212
+ <div class="text-color-darker">Freight cost/km</div>
1213
+ </div>
1214
+ </div>
1215
+ <div class="position-relative width-100pct rounded-small transition-all transition-ease-in-out transition-duration-01 bg-transparent">
1216
+ <div class="display-flex align-items-center rounded-small transition-all transition-ease-in-out transition-duration-01 bg-highlight-light" role="presentation" style="height: 25px; opacity: 0.5; width: 15%;">
1217
+ </div>
1218
+ <div class="position-absolute left-0 top-50pct translate-y-50pct display-flex width-100pct padding-left-10">
1219
+ <div class="text-color-darker">Fuel consumption index</div>
1220
+ </div>
1221
+ </div>
1222
+ </div>
1223
+ <div class="space-y-5">
1224
+ <div class="display-flex align-items-center justify-content-end" style="height: 25px;">
1225
+ <div class="text-color-darkest">92%</div>
1226
+ </div>
1227
+ <div class="display-flex align-items-center justify-content-end" style="height: 25px;">
1228
+ <div class="text-color-darkest">84%</div>
1229
+ </div>
1230
+ <div class="display-flex align-items-center justify-content-end" style="height: 25px;">
1231
+ <div class="text-color-darkest">78%</div>
1232
+ </div>
1233
+ <div class="display-flex align-items-center justify-content-end" style="height: 25px;">
1234
+ <div class="text-color-darkest">65%</div>
1235
+ </div>
1236
+ <div class="display-flex align-items-center justify-content-end" style="height: 25px;">
1237
+ <div class="text-color-darkest">15%</div>
1238
+ </div>
1239
+ </div>
1240
+ </div>
1241
+ </div>
1242
+ </div>
1243
+ </div>
1244
+ </div>
1245
+ ```