@cere/cere-design-system 0.1.0 → 0.2.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 (165) hide show
  1. package/README.md +76 -0
  2. package/dist/buttons.d.mts +27 -22
  3. package/dist/buttons.d.ts +27 -22
  4. package/dist/buttons.js +5 -5
  5. package/dist/buttons.mjs +4 -4
  6. package/dist/charts.d.mts +1 -23
  7. package/dist/charts.d.ts +1 -23
  8. package/dist/charts.js +2 -9
  9. package/dist/charts.js.map +1 -1
  10. package/dist/charts.mjs +1 -8
  11. package/dist/{chunk-THQKYTQE.js → chunk-2KDN37PQ.js} +28 -32
  12. package/dist/chunk-2KDN37PQ.js.map +1 -0
  13. package/dist/{chunk-3WCMINE5.mjs → chunk-34LFXT6C.mjs} +25 -29
  14. package/dist/chunk-34LFXT6C.mjs.map +1 -0
  15. package/dist/chunk-3KCXCVOX.mjs +411 -0
  16. package/dist/chunk-3KCXCVOX.mjs.map +1 -0
  17. package/dist/{chunk-NXTVJ6PY.js → chunk-4OKTICU5.js} +10 -10
  18. package/dist/chunk-4OKTICU5.js.map +1 -0
  19. package/dist/{chunk-FN5YL4BK.js → chunk-72TQ56EP.js} +47 -45
  20. package/dist/chunk-72TQ56EP.js.map +1 -0
  21. package/dist/{chunk-QYYQYZHV.js → chunk-7KXKK2RE.js} +3 -5
  22. package/dist/chunk-7KXKK2RE.js.map +1 -0
  23. package/dist/{chunk-CCN6M4LI.js → chunk-ARSCL4ZZ.js} +18 -10
  24. package/dist/chunk-ARSCL4ZZ.js.map +1 -0
  25. package/dist/chunk-AWVNEU6R.mjs +1478 -0
  26. package/dist/chunk-AWVNEU6R.mjs.map +1 -0
  27. package/dist/{chunk-CUCKULYC.mjs → chunk-BH4FNZKK.mjs} +74 -1260
  28. package/dist/chunk-BH4FNZKK.mjs.map +1 -0
  29. package/dist/{chunk-FFZ5S7PQ.mjs → chunk-BOQPWZIB.mjs} +6 -5
  30. package/dist/chunk-BOQPWZIB.mjs.map +1 -0
  31. package/dist/chunk-BT7XUTT5.mjs +392 -0
  32. package/dist/chunk-BT7XUTT5.mjs.map +1 -0
  33. package/dist/{chunk-ATIFLPH6.mjs → chunk-D7D25O6E.mjs} +4 -2
  34. package/dist/{chunk-ATIFLPH6.mjs.map → chunk-D7D25O6E.mjs.map} +1 -1
  35. package/dist/{chunk-JS4IB5IU.mjs → chunk-DRGMEIPT.mjs} +2 -2
  36. package/dist/chunk-DRGMEIPT.mjs.map +1 -0
  37. package/dist/{chunk-KF2Y7HO3.js → chunk-DZXNYLVG.js} +43 -246
  38. package/dist/chunk-DZXNYLVG.js.map +1 -0
  39. package/dist/{chunk-IE6GCHDI.mjs → chunk-GR52ENYI.mjs} +26 -29
  40. package/dist/chunk-GR52ENYI.mjs.map +1 -0
  41. package/dist/chunk-GTBKQXXI.js +1472 -0
  42. package/dist/chunk-GTBKQXXI.js.map +1 -0
  43. package/dist/{chunk-463SRKKD.js → chunk-HJ24WKU4.js} +14 -5
  44. package/dist/chunk-HJ24WKU4.js.map +1 -0
  45. package/dist/{chunk-EOF3QNPF.js → chunk-KKIKOIMP.js} +140 -1028
  46. package/dist/chunk-KKIKOIMP.js.map +1 -0
  47. package/dist/{chunk-MNM6HE72.js → chunk-LVJSKRX3.js} +16 -15
  48. package/dist/chunk-LVJSKRX3.js.map +1 -0
  49. package/dist/{chunk-KPDYKK3V.js → chunk-PFZZJZ64.js} +8 -8
  50. package/dist/{chunk-KPDYKK3V.js.map → chunk-PFZZJZ64.js.map} +1 -1
  51. package/dist/{chunk-KVBMZNWT.mjs → chunk-POCAW2G4.mjs} +18 -10
  52. package/dist/chunk-POCAW2G4.mjs.map +1 -0
  53. package/dist/{chunk-L2TIGA7I.js → chunk-QCFLZ7X3.js} +39 -42
  54. package/dist/chunk-QCFLZ7X3.js.map +1 -0
  55. package/dist/{chunk-6EUAU67C.mjs → chunk-SG2TD7FQ.mjs} +8 -8
  56. package/dist/chunk-SG2TD7FQ.mjs.map +1 -0
  57. package/dist/{chunk-QY65OUAC.mjs → chunk-SSFALO6S.mjs} +13 -4
  58. package/dist/chunk-SSFALO6S.mjs.map +1 -0
  59. package/dist/{chunk-PWF2NJDB.mjs → chunk-WC2TCWXK.mjs} +82 -14
  60. package/dist/chunk-WC2TCWXK.mjs.map +1 -0
  61. package/dist/{chunk-ZGCN5WCG.js → chunk-XZZZ4MZV.js} +83 -15
  62. package/dist/chunk-XZZZ4MZV.js.map +1 -0
  63. package/dist/chunk-YCDCQSYH.js +411 -0
  64. package/dist/chunk-YCDCQSYH.js.map +1 -0
  65. package/dist/{chunk-CWJ4OU6W.mjs → chunk-ZDAZYIXB.mjs} +2 -4
  66. package/dist/chunk-ZDAZYIXB.mjs.map +1 -0
  67. package/dist/feedback.d.mts +20 -8
  68. package/dist/feedback.d.ts +20 -8
  69. package/dist/feedback.js +5 -5
  70. package/dist/feedback.mjs +4 -4
  71. package/dist/fonts/HumanSans-BlackOblique.otf +0 -0
  72. package/dist/fonts/HumanSans-Thin.otf +0 -0
  73. package/dist/fonts/HumanSans-ThinOblique.otf +0 -0
  74. package/dist/fonts/human-sans-font.css +88 -0
  75. package/dist/fonts/human-sans.css +3 -0
  76. package/dist/fonts/inter.css +3 -0
  77. package/dist/icons.d.mts +2 -3
  78. package/dist/icons.d.ts +2 -3
  79. package/dist/icons.js +2 -2
  80. package/dist/icons.mjs +1 -1
  81. package/dist/index.d.mts +37 -8
  82. package/dist/index.d.ts +37 -8
  83. package/dist/index.js +23 -90
  84. package/dist/index.js.map +1 -1
  85. package/dist/index.mjs +46 -113
  86. package/dist/index.mjs.map +1 -1
  87. package/dist/inputs.d.mts +23 -3
  88. package/dist/inputs.d.ts +23 -3
  89. package/dist/inputs.js +5 -5
  90. package/dist/inputs.js.map +1 -1
  91. package/dist/inputs.mjs +15 -15
  92. package/dist/layout.d.mts +37 -283
  93. package/dist/layout.d.ts +37 -283
  94. package/dist/layout.js +8 -32
  95. package/dist/layout.js.map +1 -1
  96. package/dist/layout.mjs +16 -40
  97. package/dist/navigation.d.mts +9 -114
  98. package/dist/navigation.d.ts +9 -114
  99. package/dist/navigation.js +5 -9
  100. package/dist/navigation.js.map +1 -1
  101. package/dist/navigation.mjs +6 -10
  102. package/dist/third-party.d.mts +3 -527
  103. package/dist/third-party.d.ts +3 -527
  104. package/dist/third-party.js +2 -40
  105. package/dist/third-party.js.map +1 -1
  106. package/dist/third-party.mjs +3 -41
  107. package/dist/tokens.css +45 -71
  108. package/dist/utilities.js +2 -4
  109. package/dist/utilities.js.map +1 -1
  110. package/dist/utilities.mjs +2 -4
  111. package/package.json +23 -9
  112. package/dist/WorkflowNode-BnxXO6t_.d.mts +0 -46
  113. package/dist/WorkflowNode-BnxXO6t_.d.ts +0 -46
  114. package/dist/chunk-27JEWSWA.mjs +0 -233
  115. package/dist/chunk-27JEWSWA.mjs.map +0 -1
  116. package/dist/chunk-3WCMINE5.mjs.map +0 -1
  117. package/dist/chunk-463SRKKD.js.map +0 -1
  118. package/dist/chunk-6EUAU67C.mjs.map +0 -1
  119. package/dist/chunk-AIY6222Q.js +0 -11
  120. package/dist/chunk-AIY6222Q.js.map +0 -1
  121. package/dist/chunk-AJBM7IE6.mjs +0 -2366
  122. package/dist/chunk-AJBM7IE6.mjs.map +0 -1
  123. package/dist/chunk-CCN6M4LI.js.map +0 -1
  124. package/dist/chunk-CUCKULYC.mjs.map +0 -1
  125. package/dist/chunk-CWJ4OU6W.mjs.map +0 -1
  126. package/dist/chunk-EOF3QNPF.js.map +0 -1
  127. package/dist/chunk-FFZ5S7PQ.mjs.map +0 -1
  128. package/dist/chunk-FN5YL4BK.js.map +0 -1
  129. package/dist/chunk-HLH2VWXL.js +0 -2658
  130. package/dist/chunk-HLH2VWXL.js.map +0 -1
  131. package/dist/chunk-IE6GCHDI.mjs.map +0 -1
  132. package/dist/chunk-JS4IB5IU.mjs.map +0 -1
  133. package/dist/chunk-KF2Y7HO3.js.map +0 -1
  134. package/dist/chunk-KVBMZNWT.mjs.map +0 -1
  135. package/dist/chunk-L2TIGA7I.js.map +0 -1
  136. package/dist/chunk-MNM6HE72.js.map +0 -1
  137. package/dist/chunk-NXTVJ6PY.js.map +0 -1
  138. package/dist/chunk-PWF2NJDB.mjs.map +0 -1
  139. package/dist/chunk-QD6RLAO2.mjs +0 -11
  140. package/dist/chunk-QD6RLAO2.mjs.map +0 -1
  141. package/dist/chunk-QY65OUAC.mjs.map +0 -1
  142. package/dist/chunk-QYYQYZHV.js.map +0 -1
  143. package/dist/chunk-T7LPABOL.mjs +0 -595
  144. package/dist/chunk-T7LPABOL.mjs.map +0 -1
  145. package/dist/chunk-THQKYTQE.js.map +0 -1
  146. package/dist/chunk-X7E6GMFL.js +0 -233
  147. package/dist/chunk-X7E6GMFL.js.map +0 -1
  148. package/dist/chunk-XF66WQZE.mjs +0 -1535
  149. package/dist/chunk-XF66WQZE.mjs.map +0 -1
  150. package/dist/chunk-YQOZPLTY.js +0 -1535
  151. package/dist/chunk-YQOZPLTY.js.map +0 -1
  152. package/dist/chunk-ZGCN5WCG.js.map +0 -1
  153. package/dist/index.css +0 -79
  154. package/dist/index.css.map +0 -1
  155. /package/dist/{HumanSans-Black-C4YJONK7.otf → fonts/HumanSans-Black.otf} +0 -0
  156. /package/dist/{HumanSans-Bold-4EAJ3L3T.otf → fonts/HumanSans-Bold.otf} +0 -0
  157. /package/dist/{HumanSans-BoldOblique-4D325T4F.otf → fonts/HumanSans-BoldOblique.otf} +0 -0
  158. /package/dist/{HumanSans-ExtraLight-VL7DEKQ4.otf → fonts/HumanSans-ExtraLight.otf} +0 -0
  159. /package/dist/{HumanSans-ExtraLightOblique-VK2JTUXF.otf → fonts/HumanSans-ExtraLightOblique.otf} +0 -0
  160. /package/dist/{HumanSans-Light-YV7AFKRB.otf → fonts/HumanSans-Light.otf} +0 -0
  161. /package/dist/{HumanSans-LightOblique-VIXV7QA6.otf → fonts/HumanSans-LightOblique.otf} +0 -0
  162. /package/dist/{HumanSans-Medium-UULJ3PIR.otf → fonts/HumanSans-Medium.otf} +0 -0
  163. /package/dist/{HumanSans-MediumOblique-M7FHDZRS.otf → fonts/HumanSans-MediumOblique.otf} +0 -0
  164. /package/dist/{HumanSans-Regular-QMFEP3F6.otf → fonts/HumanSans-Regular.otf} +0 -0
  165. /package/dist/{HumanSans-RegularOblique-YPKQJAAM.otf → fonts/HumanSans-RegularOblique.otf} +0 -0
@@ -1,17 +1,13 @@
1
- "use strict";Object.defineProperty(exports, "__esModule", {value: true}); function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } function _nullishCoalesce(lhs, rhsFn) { if (lhs != null) { return lhs; } else { return rhsFn(); } } function _optionalChain(ops) { let lastAccessLHS = undefined; let value = ops[0]; let i = 1; while (i < ops.length) { const op = ops[i]; const fn = ops[i + 1]; i += 2; if ((op === 'optionalAccess' || op === 'optionalCall') && value == null) { return undefined; } if (op === 'access' || op === 'optionalAccess') { lastAccessLHS = value; value = fn(value); } else if (op === 'call' || op === 'optionalCall') { value = fn((...args) => value.call(lastAccessLHS, ...args)); lastAccessLHS = undefined; } } return value; }
2
-
3
- var _chunkAIY6222Qjs = require('./chunk-AIY6222Q.js');
4
-
5
-
6
- var _chunkFN5YL4BKjs = require('./chunk-FN5YL4BK.js');
7
-
8
- // src/components/charts/ChartWidget/ChartWidget.tsx
9
- var _material = require('@mui/material');
1
+ "use strict";Object.defineProperty(exports, "__esModule", {value: true}); function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } function _nullishCoalesce(lhs, rhsFn) { if (lhs != null) { return lhs; } else { return rhsFn(); } } function _optionalChain(ops) { let lastAccessLHS = undefined; let value = ops[0]; let i = 1; while (i < ops.length) { const op = ops[i]; const fn = ops[i + 1]; i += 2; if ((op === 'optionalAccess' || op === 'optionalCall') && value == null) { return undefined; } if (op === 'access' || op === 'optionalAccess') { lastAccessLHS = value; value = fn(value); } else if (op === 'call' || op === 'optionalCall') { value = fn((...args) => value.call(lastAccessLHS, ...args)); lastAccessLHS = undefined; } } return value; }// src/components/charts/ChartWidget/ChartWidget.tsx
2
+ var _Box = require('@mui/material/Box'); var _Box2 = _interopRequireDefault(_Box);
3
+ var _Stack = require('@mui/material/Stack'); var _Stack2 = _interopRequireDefault(_Stack);
4
+ var _Typography = require('@mui/material/Typography'); var _Typography2 = _interopRequireDefault(_Typography);
5
+ var _styles = require('@mui/material/styles');
10
6
  var _xcharts = require('@mui/x-charts');
11
7
  var _bytesize = require('byte-size'); var _bytesize2 = _interopRequireDefault(_bytesize);
12
8
  var _datefns = require('date-fns');
13
9
  var _jsxruntime = require('react/jsx-runtime');
14
- var Chart = _material.styled.call(void 0, (0, _material.Box))(() => ({
10
+ var Chart = _styles.styled.call(void 0, (0, _Box2.default))(() => ({
15
11
  height: 200
16
12
  }));
17
13
  var ChartWidget = ({
@@ -20,10 +16,10 @@ var ChartWidget = ({
20
16
  history,
21
17
  formatValue = (value2) => _bytesize2.default.call(void 0, value2 || 0).toString()
22
18
  }) => {
23
- const theme = _material.useTheme.call(void 0, );
24
- return /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, _material.Stack, { spacing: 1, children: [
25
- /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _material.Typography, { variant: "caption", color: "text.secondary", children: title }),
26
- /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _material.Typography, { fontWeight: "bold", children: value }),
19
+ const theme = _styles.useTheme.call(void 0, );
20
+ return /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, _Stack2.default, { spacing: 1, children: [
21
+ /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _Typography2.default, { variant: "caption", color: "text.secondary", children: title }),
22
+ /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _Typography2.default, { fontWeight: "bold", children: value }),
27
23
  /* @__PURE__ */ _jsxruntime.jsx.call(void 0, Chart, { children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
28
24
  _xcharts.LineChart,
29
25
  {
@@ -78,213 +74,14 @@ var ChartWidget = ({
78
74
  ] });
79
75
  };
80
76
 
81
- // src/components/charts/MetricsChart/MetricsChart.tsx
82
-
83
-
84
- var _hooks = require('@mui/x-charts/hooks');
85
-
86
-
87
- // src/components/charts/MetricsChart/PeriodSelect.tsx
88
-
89
-
90
- var options = [
91
- /**
92
- * TODO: Enable the options below when the backend supports them
93
- */
94
- // { value: 'hour', label: 'Last hour' },
95
- // { value: 'day', label: '24 hours' },
96
- { value: "week", label: "1 week" },
97
- { value: "month", label: "1 month" }
98
- ];
99
- var PeriodSelect = ({ value, onChange }) => /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
100
- _material.TextField,
101
- {
102
- select: true,
103
- size: "small",
104
- value,
105
- defaultValue: options[0].value,
106
- onChange: (e) => _optionalChain([onChange, 'optionalCall', _4 => _4(e.target.value)]),
107
- children: options.map(({ value: value2, label }) => /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _material.MenuItem, { value: value2, children: label }, value2))
108
- }
109
- );
110
-
111
- // src/components/charts/MetricsChart/MetricsChart.tsx
112
- var _react = require('react');
113
-
114
- var mapPeriodToFromDate = (period = "month") => {
115
- const date = /* @__PURE__ */ new Date();
116
- if (period === "hour") {
117
- return _datefns.subHours.call(void 0, date, 1);
118
- }
119
- if (period === "day") {
120
- return _datefns.subHours.call(void 0, date, 24);
121
- }
122
- if (period === "week") {
123
- return _datefns.startOfDay.call(void 0, _datefns.subWeeks.call(void 0, date, 1));
124
- }
125
- return _datefns.startOfDay.call(void 0, _datefns.subMonths.call(void 0, date, 1));
126
- };
127
- var Chart2 = _material.styled.call(void 0, (0, _xcharts.LineChart))({
128
- height: 320,
129
- marginBottom: 16
130
- });
131
- var NoDataRect = _material.styled.call(void 0, "rect")({
132
- fill: _chunkFN5YL4BKjs.deploymentSurfaceTokens.highlightBg
133
- });
134
- var LoadingText = _material.styled.call(void 0, "text")(({ theme }) => ({
135
- stroke: "none",
136
- fill: theme.palette.text.primary,
137
- shapeRendering: "crispEdges",
138
- textAnchor: "middle",
139
- dominantBaseline: "middle"
140
- }));
141
- var MetricsChart = ({ history = [] }) => {
142
- const theme = _material.useTheme.call(void 0, );
143
- const [period, setPeriod] = _react.useState.call(void 0, "week");
144
- const periodFrom = _react.useMemo.call(void 0, () => mapPeriodToFromDate(period), [period]);
145
- const periodHistory = _react.useMemo.call(void 0,
146
- () => history.filter((record) => record.recordTime > periodFrom),
147
- [history, periodFrom]
148
- );
149
- const total = _react.useMemo.call(void 0,
150
- () => periodHistory.reduce(
151
- (acc, record) => ({
152
- gets: acc.gets + record.gets,
153
- puts: acc.puts + record.puts,
154
- storedBytes: acc.storedBytes + record.storedBytes,
155
- transferredBytes: acc.transferredBytes + record.transferredBytes
156
- }),
157
- { gets: 0, puts: 0, storedBytes: 0, transferredBytes: 0 }
158
- ),
159
- [periodHistory]
160
- );
161
- const NoDataOverlay = () => {
162
- const yScale = _hooks.useYScale.call(void 0, );
163
- const { left, width, height } = _hooks.useDrawingArea.call(void 0, );
164
- const [, top] = yScale.range();
165
- const padding = { top: 8, bottom: 8, left: 20, right: 20 };
166
- const text = "No data for selected period";
167
- const textWidth = 211;
168
- const textHeight = 24;
169
- const backgroundWidth = textWidth + padding.left + padding.right;
170
- const backgroundHeight = textHeight + padding.top + padding.bottom;
171
- const rectX = left + (width - backgroundWidth) / 2;
172
- const rectY = top + (height - backgroundHeight) / 2;
173
- return /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "g", { children: [
174
- /* @__PURE__ */ _jsxruntime.jsx.call(void 0, NoDataRect, { x: rectX, y: rectY, width: backgroundWidth, height: backgroundHeight }),
175
- /* @__PURE__ */ _jsxruntime.jsx.call(void 0, LoadingText, { style: { ...theme.typography.subtitle1 }, x: left + width / 2, y: top + height / 2, children: text })
176
- ] });
177
- };
178
- return /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, _material.Card, { children: [
179
- /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _material.CardHeader, { title: "GET / PUT Requests", action: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, PeriodSelect, { value: period, onChange: setPeriod }) }),
180
- /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, _material.CardMedia, { children: [
181
- /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
182
- Chart2,
183
- {
184
- skipAnimation: true,
185
- dataset: periodHistory || [],
186
- axisHighlight: { x: "none", y: "none" },
187
- grid: { horizontal: true, vertical: false },
188
- margin: { top: 10, right: 20, bottom: 40, left: 40 },
189
- colors: [theme.palette.primary.main, theme.palette.success.main],
190
- slots: {
191
- noDataOverlay: NoDataOverlay
192
- },
193
- slotProps: {
194
- noDataOverlay: {
195
- style: {
196
- ...theme.typography.h4
197
- }
198
- }
199
- },
200
- yAxis: periodHistory.length ? [
201
- {
202
- min: periodHistory.length ? void 0 : 0,
203
- max: periodHistory.length ? void 0 : 100,
204
- tickNumber: periodHistory.length ? void 0 : 5,
205
- disableLine: true,
206
- disableTicks: true,
207
- tickLabelStyle: {
208
- fontSize: 10
209
- }
210
- }
211
- ] : [],
212
- xAxis: [
213
- {
214
- dataKey: "recordTime",
215
- min: periodFrom,
216
- max: /* @__PURE__ */ new Date(),
217
- disableLine: false,
218
- disableTicks: false,
219
- valueFormatter: (date) => _datefns.format.call(void 0, date, "do MMM"),
220
- tickMinStep: 3600 * 1e3 * 24,
221
- // min step: 24h
222
- tickLabelStyle: {
223
- fontSize: 10,
224
- transform: "translate(-16px, 16px) rotate(-30deg)"
225
- }
226
- }
227
- ],
228
- series: [
229
- {
230
- curve: "linear",
231
- dataKey: "gets",
232
- showMark: false
233
- },
234
- {
235
- curve: "linear",
236
- dataKey: "puts",
237
- showMark: false
238
- }
239
- ]
240
- }
241
- ),
242
- periodHistory.length > 0 && /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, _material.Stack, { direction: "row", spacing: 2, marginY: 3, justifyContent: "center", children: [
243
- /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, _material.Stack, { direction: "row", spacing: 1, alignItems: "center", children: [
244
- /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _material.Box, { sx: { width: 14, height: 14, borderRadius: "4px", backgroundColor: theme.palette.primary.main } }),
245
- /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _material.Typography, { variant: "body2", children: "Get" })
246
- ] }),
247
- /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, _material.Stack, { direction: "row", spacing: 1, alignItems: "center", children: [
248
- /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _material.Box, { sx: { width: 14, height: 14, borderRadius: "4px", backgroundColor: theme.palette.success.main } }),
249
- /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _material.Typography, { variant: "body2", children: "Put" })
250
- ] })
251
- ] })
252
- ] }),
253
- /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, _material.CardMedia, { children: [
254
- /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _material.Divider, { flexItem: true }),
255
- /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, _material.Stack, { direction: "row", spacing: 2, padding: 2, children: [
256
- /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, _material.Stack, { direction: "row", alignItems: "center", spacing: 1, children: [
257
- /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _material.Typography, { variant: "body2", color: "secondary", children: "GET Requests per account" }),
258
- /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _material.Typography, { variant: "h3", children: total.gets })
259
- ] }),
260
- /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, _material.Stack, { direction: "row", alignItems: "center", spacing: 1, children: [
261
- /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _material.Typography, { variant: "body2", color: "secondary", children: "PUT Requests per account" }),
262
- /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _material.Typography, { variant: "h3", children: total.puts })
263
- ] }),
264
- /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, _material.Stack, { direction: "row", alignItems: "center", spacing: 1, children: [
265
- /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _material.Typography, { variant: "body2", color: "secondary", children: "Total Consumed per account" }),
266
- /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _material.Typography, { variant: "h3", children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkAIY6222Qjs.BytesSize, { bytes: total.transferredBytes }) })
267
- ] }),
268
- /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, _material.Stack, { direction: "row", alignItems: "center", spacing: 1, children: [
269
- /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _material.Typography, { variant: "body2", color: "secondary", children: "Total Stored per account" }),
270
- /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _material.Typography, { variant: "h3", children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkAIY6222Qjs.BytesSize, { bytes: total.storedBytes }) })
271
- ] })
272
- ] })
273
- ] })
274
- ] });
275
- };
276
-
277
77
  // src/components/charts/TimeSeriesGraph/TimeSeriesGraph.tsx
78
+ var _react = require('react');
278
79
 
279
-
280
-
281
-
282
-
283
-
284
-
285
-
286
-
287
-
80
+ var _Card = require('@mui/material/Card'); var _Card2 = _interopRequireDefault(_Card);
81
+ var _CardHeader = require('@mui/material/CardHeader'); var _CardHeader2 = _interopRequireDefault(_CardHeader);
82
+ var _CardMedia = require('@mui/material/CardMedia'); var _CardMedia2 = _interopRequireDefault(_CardMedia);
83
+ var _CircularProgress = require('@mui/material/CircularProgress'); var _CircularProgress2 = _interopRequireDefault(_CircularProgress);
84
+ var _Divider = require('@mui/material/Divider'); var _Divider2 = _interopRequireDefault(_Divider);
288
85
 
289
86
 
290
87
 
@@ -292,24 +89,26 @@ var MetricsChart = ({ history = [] }) => {
292
89
 
293
90
 
294
91
  // src/components/charts/TimeSeriesGraph/TimeRangeSelect.tsx
92
+ var _MenuItem = require('@mui/material/MenuItem'); var _MenuItem2 = _interopRequireDefault(_MenuItem);
93
+ var _TextField = require('@mui/material/TextField'); var _TextField2 = _interopRequireDefault(_TextField);
295
94
 
296
-
297
- var TimeRangeSelect = ({ options: options2, value, onChange }) => /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
298
- _material.TextField,
95
+ var TimeRangeSelect = ({ options, value, onChange }) => /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
96
+ _TextField2.default,
299
97
  {
300
98
  select: true,
301
99
  size: "small",
302
- value: _nullishCoalesce(value, () => ( (options2.length > 0 ? options2[0].value : ""))),
303
- onChange: (e) => _optionalChain([onChange, 'optionalCall', _5 => _5(e.target.value)]),
100
+ value: _nullishCoalesce(value, () => ( (options.length > 0 ? options[0].value : ""))),
101
+ onChange: (e) => _optionalChain([onChange, 'optionalCall', _4 => _4(e.target.value)]),
304
102
  "aria-label": "Time range selector",
305
103
  sx: { minWidth: 120 },
306
- children: options2.map((option) => /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _material.MenuItem, { value: option.value, children: option.label }, option.value))
104
+ children: options.map((option) => /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _MenuItem2.default, { value: option.value, children: option.label }, option.value))
307
105
  }
308
106
  );
309
107
 
310
108
  // src/components/charts/TimeSeriesGraph/SummaryStats.tsx
311
109
 
312
110
 
111
+
313
112
  var formatSummaryValue = (value, unit) => {
314
113
  const displayValue = typeof value === "number" ? value.toLocaleString() : value;
315
114
  return unit ? `${displayValue} ${unit}` : displayValue;
@@ -319,7 +118,7 @@ var SummaryStats = ({ items }) => {
319
118
  return null;
320
119
  }
321
120
  return /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
322
- _material.Stack,
121
+ _Stack2.default,
323
122
  {
324
123
  direction: "row",
325
124
  spacing: 3,
@@ -329,15 +128,15 @@ var SummaryStats = ({ items }) => {
329
128
  role: "list",
330
129
  "aria-label": "Summary statistics",
331
130
  children: items.map((item) => /* @__PURE__ */ _jsxruntime.jsxs.call(void 0,
332
- _material.Stack,
131
+ _Stack2.default,
333
132
  {
334
133
  direction: "row",
335
134
  alignItems: "center",
336
135
  spacing: 1,
337
136
  role: "listitem",
338
137
  children: [
339
- /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _material.Typography, { variant: "body2", color: "text.secondary", children: item.label }),
340
- /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _material.Typography, { variant: "h5", fontWeight: 600, children: formatSummaryValue(item.value, item.unit) })
138
+ /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _Typography2.default, { variant: "body2", color: "text.secondary", children: item.label }),
139
+ /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _Typography2.default, { variant: "h5", fontWeight: 600, children: formatSummaryValue(item.value, item.unit) })
341
140
  ]
342
141
  },
343
142
  item.label
@@ -348,11 +147,11 @@ var SummaryStats = ({ items }) => {
348
147
 
349
148
  // src/components/charts/TimeSeriesGraph/TimeSeriesGraph.tsx
350
149
 
351
- var ChartContainer = _material.styled.call(void 0, (0, _material.Box))({
150
+ var ChartContainer = _styles.styled.call(void 0, (0, _Box2.default))({
352
151
  position: "relative",
353
152
  height: 320
354
153
  });
355
- var LoadingOverlay = _material.styled.call(void 0, (0, _material.Box))(({ theme }) => ({
154
+ var LoadingOverlay = _styles.styled.call(void 0, (0, _Box2.default))(({ theme }) => ({
356
155
  position: "absolute",
357
156
  inset: 0,
358
157
  display: "flex",
@@ -362,7 +161,7 @@ var LoadingOverlay = _material.styled.call(void 0, (0, _material.Box))(({ theme
362
161
  zIndex: 1,
363
162
  borderRadius: theme.shape.borderRadius
364
163
  }));
365
- var LegendDot = _material.styled.call(void 0, _material.Box, {
164
+ var LegendDot = _styles.styled.call(void 0, _Box2.default, {
366
165
  shouldForwardProp: (prop) => prop !== "dotColor"
367
166
  })(({ dotColor }) => ({
368
167
  width: 14,
@@ -418,7 +217,7 @@ var TimeSeriesGraph = ({
418
217
  loading = false,
419
218
  xAxisFormat
420
219
  }) => {
421
- const theme = _material.useTheme.call(void 0, );
220
+ const theme = _styles.useTheme.call(void 0, );
422
221
  const [hiddenSeries, setHiddenSeries] = _react.useState.call(void 0, /* @__PURE__ */ new Set());
423
222
  const dataset = _react.useMemo.call(void 0, () => buildDataset(series, hiddenSeries), [series, hiddenSeries]);
424
223
  const visibleSeries = _react.useMemo.call(void 0,
@@ -451,7 +250,7 @@ var TimeSeriesGraph = ({
451
250
  );
452
251
  const hasData = dataset.length > 0;
453
252
  const shouldShowSummary = showSummary && summaryItems && summaryItems.length > 0;
454
- const headerActionElement = /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, _material.Stack, { direction: "row", spacing: 1, alignItems: "center", children: [
253
+ const headerActionElement = /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, _Stack2.default, { direction: "row", spacing: 1, alignItems: "center", children: [
455
254
  headerAction,
456
255
  timeRangeOptions && timeRangeOptions.length > 0 && /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
457
256
  TimeRangeSelect,
@@ -464,13 +263,13 @@ var TimeSeriesGraph = ({
464
263
  ] });
465
264
  const showHeader = !!title || !!headerAction || timeRangeOptions && timeRangeOptions.length > 0;
466
265
  return /* @__PURE__ */ _jsxruntime.jsxs.call(void 0,
467
- _material.Card,
266
+ _Card2.default,
468
267
  {
469
268
  "aria-label": title ? `Line chart showing ${title}` : "Line chart",
470
269
  role: "figure",
471
270
  children: [
472
271
  showHeader && /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
473
- _material.CardHeader,
272
+ _CardHeader2.default,
474
273
  {
475
274
  title,
476
275
  titleTypographyProps: {
@@ -480,9 +279,9 @@ var TimeSeriesGraph = ({
480
279
  action: headerActionElement
481
280
  }
482
281
  ),
483
- /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, _material.CardMedia, { children: [
282
+ /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, _CardMedia2.default, { children: [
484
283
  /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, ChartContainer, { children: [
485
- loading && /* @__PURE__ */ _jsxruntime.jsx.call(void 0, LoadingOverlay, { role: "status", "aria-label": "Loading chart data", children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _material.CircularProgress, { size: 40 }) }),
284
+ loading && /* @__PURE__ */ _jsxruntime.jsx.call(void 0, LoadingOverlay, { role: "status", "aria-label": "Loading chart data", children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _CircularProgress2.default, { size: 40 }) }),
486
285
  /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
487
286
  _xcharts.LineChart,
488
287
  {
@@ -536,7 +335,7 @@ var TimeSeriesGraph = ({
536
335
  )
537
336
  ] }),
538
337
  series.length > 0 && /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
539
- _material.Stack,
338
+ _Stack2.default,
540
339
  {
541
340
  direction: "row",
542
341
  spacing: 2,
@@ -549,7 +348,7 @@ var TimeSeriesGraph = ({
549
348
  children: series.map((s) => {
550
349
  const isHidden = hiddenSeries.has(s.name);
551
350
  return /* @__PURE__ */ _jsxruntime.jsxs.call(void 0,
552
- _material.Stack,
351
+ _Stack2.default,
553
352
  {
554
353
  direction: "row",
555
354
  spacing: 1,
@@ -566,7 +365,7 @@ var TimeSeriesGraph = ({
566
365
  "aria-label": `Toggle ${s.name} visibility`,
567
366
  children: [
568
367
  /* @__PURE__ */ _jsxruntime.jsx.call(void 0, LegendDot, { dotColor: s.color }),
569
- /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _material.Typography, { variant: "body2", children: s.name })
368
+ /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _Typography2.default, { variant: "body2", children: s.name })
570
369
  ]
571
370
  },
572
371
  s.name
@@ -576,7 +375,7 @@ var TimeSeriesGraph = ({
576
375
  )
577
376
  ] }),
578
377
  shouldShowSummary && /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, _jsxruntime.Fragment, { children: [
579
- /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _material.Divider, {}),
378
+ /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _Divider2.default, {}),
580
379
  /* @__PURE__ */ _jsxruntime.jsx.call(void 0, SummaryStats, { items: summaryItems })
581
380
  ] })
582
381
  ]
@@ -589,7 +388,5 @@ var TimeSeriesGraph = ({
589
388
 
590
389
 
591
390
 
592
-
593
-
594
- exports.ChartWidget = ChartWidget; exports.PeriodSelect = PeriodSelect; exports.MetricsChart = MetricsChart; exports.TimeRangeSelect = TimeRangeSelect; exports.SummaryStats = SummaryStats; exports.TimeSeriesGraph = TimeSeriesGraph;
595
- //# sourceMappingURL=chunk-KF2Y7HO3.js.map
391
+ exports.ChartWidget = ChartWidget; exports.TimeRangeSelect = TimeRangeSelect; exports.SummaryStats = SummaryStats; exports.TimeSeriesGraph = TimeSeriesGraph;
392
+ //# sourceMappingURL=chunk-DZXNYLVG.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["/home/runner/work/cere-design-system/cere-design-system/dist/chunk-DZXNYLVG.js","../src/components/charts/ChartWidget/ChartWidget.tsx","../src/components/charts/TimeSeriesGraph/TimeSeriesGraph.tsx","../src/components/charts/TimeSeriesGraph/TimeRangeSelect.tsx","../src/components/charts/TimeSeriesGraph/SummaryStats.tsx"],"names":["value","jsx","Stack","styled","useTheme","LineChart"],"mappings":"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","file":"/home/runner/work/cere-design-system/cere-design-system/dist/chunk-DZXNYLVG.js","sourcesContent":[null,"import { ReactNode } from 'react';\nimport Box from '@mui/material/Box';\nimport Stack from '@mui/material/Stack';\nimport Typography from '@mui/material/Typography';\nimport { styled, useTheme } from '@mui/material/styles';\nimport { LineChart } from '@mui/x-charts';\nimport size from 'byte-size';\nimport { format } from 'date-fns';\n\ntype ChartWidgetHistoryRecord = {\n date: Date;\n value: number;\n};\n\nexport type ChartWidgetProps = {\n title: string;\n value?: ReactNode;\n history?: ChartWidgetHistoryRecord[];\n formatValue?: (value: number) => string;\n};\n\nconst Chart = styled(Box)(() => ({\n height: 200,\n}));\n\nexport const ChartWidget = ({\n title,\n value,\n history,\n formatValue = (value) => size(value || 0).toString(),\n}: ChartWidgetProps) => {\n const theme = useTheme();\n\n return (\n <Stack spacing={1}>\n <Typography variant=\"caption\" color=\"text.secondary\">\n {title}\n </Typography>\n <Typography fontWeight=\"bold\">{value}</Typography>\n\n <Chart>\n <LineChart\n dataset={history || []}\n axisHighlight={{ x: 'none', y: 'none' }}\n grid={{ horizontal: true, vertical: false }}\n margin={{ top: 10, right: 20, bottom: 40, left: 40 }}\n colors={[theme.palette.primary.main]}\n slots={{\n noDataOverlay: () => null,\n }}\n yAxis={[\n {\n dataKey: 'value',\n disableLine: true,\n disableTicks: true,\n min: history?.length ? undefined : 0,\n max: history?.length ? undefined : 100,\n tickNumber: history?.length ? undefined : 5,\n valueFormatter: (value) => formatValue(value || 0),\n tickLabelStyle: {\n fontSize: 10,\n },\n },\n ]}\n xAxis={[\n {\n dataKey: 'date',\n min: history && Math.min(...history.map((record) => +record.date)),\n max: history && Math.max(...history.map((record) => +record.date)),\n disableLine: true,\n disableTicks: true,\n valueFormatter: (date) => format(date, 'do MMM'),\n tickPlacement: 'end',\n tickNumber: 1,\n\n tickLabelStyle: {\n fontSize: 10,\n transform: 'translate(-16px, 16px) rotate(-30deg)',\n },\n },\n ]}\n series={[\n {\n curve: 'linear',\n dataKey: 'value',\n showMark: false,\n valueFormatter: (value) => formatValue(value || 0),\n },\n ]}\n />\n </Chart>\n </Stack>\n );\n};\n","import { ReactNode, useCallback, useMemo, useState } from 'react';\nimport Box from '@mui/material/Box';\nimport Card from '@mui/material/Card';\nimport CardHeader from '@mui/material/CardHeader';\nimport CardMedia from '@mui/material/CardMedia';\nimport CircularProgress from '@mui/material/CircularProgress';\nimport Divider from '@mui/material/Divider';\nimport Stack from '@mui/material/Stack';\nimport Typography from '@mui/material/Typography';\nimport { styled, useTheme } from '@mui/material/styles';\nimport { LineChart } from '@mui/x-charts';\nimport { format } from 'date-fns';\n\nimport { TimeRangeSelect, type TimeRangeOption } from './TimeRangeSelect';\nimport { SummaryStats, type SummaryItem } from './SummaryStats';\n\n// ---------------------------------------------------------------------------\n// Public types\n// ---------------------------------------------------------------------------\n\n/**\n * A single data point in a time series.\n * Use `null` for the value to represent missing/gap data — the line will break.\n */\nexport interface DataPoint {\n /** Timestamp of the observation */\n timestamp: Date;\n /** Numeric value, or `null` to indicate a gap in the data */\n value: number | null;\n}\n\n/**\n * Represents one line on the graph (a named data series).\n */\nexport interface DataSeries {\n /** Unique display name for this series (shown in legend) */\n name: string;\n /** CSS color string for the line and legend indicator */\n color: string;\n /** Ordered array of data points */\n data: DataPoint[];\n}\n\nexport interface TimeSeriesGraphProps {\n /** Optional title displayed at the top-left of the graph card */\n title?: string;\n /**\n * Array of data series to render. Each series becomes one line on the graph.\n * There is no hardcoded limit on the number of series.\n */\n series: DataSeries[];\n /**\n * Configurable time range options for the dropdown selector.\n * When omitted, the time range dropdown is not rendered.\n */\n timeRangeOptions?: TimeRangeOption[];\n /** Currently selected time range value (controlled) */\n selectedTimeRange?: string;\n /** Callback invoked when the user picks a different time range */\n onTimeRangeChange?: (value: string) => void;\n /**\n * Optional array of summary statistics displayed below the graph.\n * When omitted or empty, the summary section is hidden.\n */\n summaryItems?: SummaryItem[];\n /**\n * Whether to show the summary statistics section.\n * Defaults to `true`. Set to `false` to explicitly hide, even when `summaryItems` are provided.\n */\n showSummary?: boolean;\n /**\n * Optional header action element rendered to the right of the title\n * (e.g., a secondary dropdown or filter control).\n */\n headerAction?: ReactNode;\n /**\n * When `true`, shows a loading overlay (spinner) over the graph area\n * while the header remains visible and interactive.\n */\n loading?: boolean;\n /**\n * Override the x-axis date format string (date-fns format tokens).\n * When omitted, the format is auto-detected from the data's time span:\n * - <= 24 hours → `'HH:mm'`\n * - > 24 hours → `'do MMM'`\n */\n xAxisFormat?: string;\n}\n\n// ---------------------------------------------------------------------------\n// Styled helpers\n// ---------------------------------------------------------------------------\n\nconst ChartContainer = styled(Box)({\n position: 'relative',\n height: 320,\n});\n\nconst LoadingOverlay = styled(Box)(({ theme }) => ({\n position: 'absolute',\n inset: 0,\n display: 'flex',\n alignItems: 'center',\n justifyContent: 'center',\n backgroundColor: 'rgba(255, 255, 255, 0.7)',\n zIndex: 1,\n borderRadius: theme.shape.borderRadius,\n}));\n\nconst LegendDot = styled(Box, {\n shouldForwardProp: (prop) => prop !== 'dotColor',\n})<{ dotColor: string }>(({ dotColor }) => ({\n width: 14,\n height: 14,\n borderRadius: 4,\n backgroundColor: dotColor,\n flexShrink: 0,\n}));\n\n// ---------------------------------------------------------------------------\n// Utility functions\n// ---------------------------------------------------------------------------\n\n/**\n * Formats large Y-axis values into shorthand notation.\n * 1,000 → 1K, 1,000,000 → 1M, 1,000,000,000 → 1B\n */\nconst formatYAxisValue = (value: number): string => {\n const absValue = Math.abs(value);\n if (absValue >= 1_000_000_000) {\n return `${(value / 1_000_000_000).toFixed(absValue % 1_000_000_000 === 0 ? 0 : 1)}B`;\n }\n if (absValue >= 1_000_000) {\n return `${(value / 1_000_000).toFixed(absValue % 1_000_000 === 0 ? 0 : 1)}M`;\n }\n if (absValue >= 1_000) {\n return `${(value / 1_000).toFixed(absValue % 1_000 === 0 ? 0 : 1)}K`;\n }\n return String(value);\n};\n\nconst TWENTY_FOUR_HOURS_MS = 24 * 60 * 60 * 1000;\n\n/**\n * Infers the appropriate x-axis date format string based on the time span of the data.\n * - Span <= 24 hours → `'HH:mm'` (e.g., \"14:30\")\n * - Span > 24 hours → `'do MMM'` (e.g., \"2nd Jan\")\n */\nexport const inferXAxisFormat = (\n min: Date | undefined,\n max: Date | undefined,\n): string => {\n if (!min || !max) return 'do MMM';\n const spanMs = max.getTime() - min.getTime();\n return spanMs <= TWENTY_FOUR_HOURS_MS ? 'HH:mm' : 'do MMM';\n};\n\n/** A single row in the chart dataset — timestamp plus one field per series. */\ntype DatasetRow = Record<string, string | number | Date | null | undefined>;\n\n/**\n * Builds the unified dataset array that MUI X-Charts expects.\n * Each row is keyed by timestamp with one field per series.\n */\nconst buildDataset = (\n series: DataSeries[],\n hiddenSeries: Set<string>,\n): DatasetRow[] => {\n // Collect all unique timestamps across all visible series\n const timestampMap = new Map<number, DatasetRow>();\n\n series.forEach((s) => {\n if (hiddenSeries.has(s.name)) return;\n s.data.forEach((dp) => {\n const ts = dp.timestamp.getTime();\n if (!timestampMap.has(ts)) {\n timestampMap.set(ts, { timestamp: dp.timestamp } as DatasetRow);\n }\n timestampMap.get(ts)![s.name] = dp.value;\n });\n });\n\n // Sort by timestamp ascending\n return Array.from(timestampMap.values()).sort(\n (a, b) => (a.timestamp as Date).getTime() - (b.timestamp as Date).getTime(),\n );\n};\n\n// ---------------------------------------------------------------------------\n// Component\n// ---------------------------------------------------------------------------\n\n/**\n * A reusable time series graph component that displays one or more data lines\n * over a shared time axis. Supports configurable time range selection,\n * optional summary statistics, interactive legend toggling, crosshair tooltips,\n * and a loading state.\n *\n * Built on `@mui/x-charts` LineChart and the Cere Design System theme.\n *\n * @example\n * ```tsx\n * <TimeSeriesGraph\n * title=\"Engagement over time\"\n * series={[\n * { name: 'Engagements', color: '#6750A4', data: engagementData },\n * { name: 'Unique Streams', color: '#4caf50', data: streamData },\n * ]}\n * timeRangeOptions={[\n * { label: 'Last hour', value: 'hour' },\n * { label: '24 hours', value: 'day' },\n * { label: '1 week', value: 'week' },\n * { label: '1 month', value: 'month' },\n * ]}\n * selectedTimeRange=\"week\"\n * onTimeRangeChange={(range) => fetchData(range)}\n * summaryItems={[\n * { label: 'Total Engagements', value: 11372 },\n * { label: 'Daily Engagements', value: 156 },\n * ]}\n * />\n * ```\n *\n * Figma reference: [ROB Design - Node 162:1172](https://www.figma.com/design/xky11VbkkFcgZLwZE8BdCN/ROB?node-id=162-1172&m=dev)\n */\nexport const TimeSeriesGraph = ({\n title,\n series,\n timeRangeOptions,\n selectedTimeRange,\n onTimeRangeChange,\n summaryItems,\n showSummary = true,\n headerAction,\n loading = false,\n xAxisFormat,\n}: TimeSeriesGraphProps) => {\n const theme = useTheme();\n const [hiddenSeries, setHiddenSeries] = useState<Set<string>>(new Set());\n\n // Build the MUI X-Charts dataset from visible series\n const dataset = useMemo(() => buildDataset(series, hiddenSeries), [series, hiddenSeries]);\n\n // Visible series (exclude hidden)\n const visibleSeries = useMemo(\n () => series.filter((s) => !hiddenSeries.has(s.name)),\n [series, hiddenSeries],\n );\n\n // Colors array matching the order of visible series\n const chartColors = useMemo(() => visibleSeries.map((s) => s.color), [visibleSeries]);\n\n // Toggle a series' visibility\n const handleLegendToggle = useCallback((seriesName: string) => {\n setHiddenSeries((prev) => {\n const next = new Set(prev);\n if (next.has(seriesName)) {\n next.delete(seriesName);\n } else {\n next.add(seriesName);\n }\n return next;\n });\n }, []);\n\n // Compute time bounds for the X-axis from visible data\n const timeBounds = useMemo(() => {\n if (dataset.length === 0) return { min: undefined, max: undefined };\n const timestamps = dataset.map((row) => (row.timestamp as Date).getTime());\n return {\n min: new Date(Math.min(...timestamps)),\n max: new Date(Math.max(...timestamps)),\n };\n }, [dataset]);\n\n // Resolve the x-axis date format: explicit prop wins, otherwise auto-detect\n const resolvedXAxisFormat = useMemo(\n () => xAxisFormat ?? inferXAxisFormat(timeBounds.min, timeBounds.max),\n [xAxisFormat, timeBounds.min, timeBounds.max],\n );\n\n // Determine whether we have data to display\n const hasData = dataset.length > 0;\n\n // Whether to render the summary section\n const shouldShowSummary = showSummary && summaryItems && summaryItems.length > 0;\n\n // Build the header action area (time range + optional custom action)\n const headerActionElement = (\n <Stack direction=\"row\" spacing={1} alignItems=\"center\">\n {headerAction}\n {timeRangeOptions && timeRangeOptions.length > 0 && (\n <TimeRangeSelect\n options={timeRangeOptions}\n value={selectedTimeRange}\n onChange={onTimeRangeChange}\n />\n )}\n </Stack>\n );\n\n // Determine whether to show the header at all\n const showHeader = !!title || !!headerAction || (timeRangeOptions && timeRangeOptions.length > 0);\n\n return (\n <Card\n aria-label={title ? `Line chart showing ${title}` : 'Line chart'}\n role=\"figure\"\n >\n {showHeader && (\n <CardHeader\n title={title}\n titleTypographyProps={{\n variant: 'subtitle1',\n fontWeight: 500,\n }}\n action={headerActionElement}\n />\n )}\n\n <CardMedia>\n <ChartContainer>\n {loading && (\n <LoadingOverlay role=\"status\" aria-label=\"Loading chart data\">\n <CircularProgress size={40} />\n </LoadingOverlay>\n )}\n\n <LineChart\n dataset={dataset}\n axisHighlight={{ x: 'line', y: 'none' }}\n grid={{ horizontal: true, vertical: false }}\n margin={{ top: 10, right: 20, bottom: 40, left: 50 }}\n colors={chartColors.length > 0 ? chartColors : [theme.palette.primary.main]}\n slots={{\n noDataOverlay: () => null,\n }}\n tooltip={{ trigger: hasData ? 'axis' : 'none' }}\n yAxis={[\n {\n disableLine: true,\n disableTicks: true,\n min: hasData ? undefined : 0,\n max: hasData ? undefined : 100,\n tickNumber: hasData ? undefined : 5,\n valueFormatter: (value: number) => formatYAxisValue(value || 0),\n tickLabelStyle: {\n fontSize: 10,\n },\n },\n ]}\n xAxis={[\n {\n dataKey: 'timestamp',\n scaleType: 'time',\n min: timeBounds.min,\n max: timeBounds.max,\n disableLine: true,\n disableTicks: true,\n valueFormatter: (date: Date) => format(date, resolvedXAxisFormat),\n tickLabelStyle: {\n fontSize: 10,\n },\n },\n ]}\n series={visibleSeries.map((s) => ({\n curve: 'linear' as const,\n dataKey: s.name,\n label: s.name,\n showMark: false,\n connectNulls: false,\n }))}\n // Hide the built-in legend — we render a custom one below\n slotProps={{\n legend: { hidden: true },\n }}\n />\n </ChartContainer>\n\n {/* Custom interactive legend */}\n {series.length > 0 && (\n <Stack\n direction=\"row\"\n spacing={2}\n justifyContent=\"center\"\n paddingY={1}\n flexWrap=\"wrap\"\n useFlexGap\n role=\"list\"\n aria-label=\"Chart legend\"\n >\n {series.map((s) => {\n const isHidden = hiddenSeries.has(s.name);\n return (\n <Stack\n key={s.name}\n direction=\"row\"\n spacing={1}\n alignItems=\"center\"\n role=\"listitem\"\n onClick={() => handleLegendToggle(s.name)}\n sx={{\n cursor: 'pointer',\n opacity: isHidden ? 0.4 : 1,\n transition: 'opacity 0.2s ease',\n userSelect: 'none',\n }}\n aria-pressed={!isHidden}\n aria-label={`Toggle ${s.name} visibility`}\n >\n <LegendDot dotColor={s.color} />\n <Typography variant=\"body2\">{s.name}</Typography>\n </Stack>\n );\n })}\n </Stack>\n )}\n </CardMedia>\n\n {/* Summary statistics */}\n {shouldShowSummary && (\n <>\n <Divider />\n <SummaryStats items={summaryItems!} />\n </>\n )}\n </Card>\n );\n};\n","import MenuItem from '@mui/material/MenuItem';\nimport TextField from '@mui/material/TextField';\n\n/**\n * Represents a single time range option in the dropdown.\n */\nexport interface TimeRangeOption {\n /** Display label shown in the dropdown (e.g., \"1 week\") */\n label: string;\n /** Value identifier passed to the callback on selection */\n value: string;\n}\n\nexport interface TimeRangeSelectProps {\n /** Available time range options */\n options: TimeRangeOption[];\n /** Currently selected time range value */\n value?: string;\n /** Callback invoked when user selects a different time range */\n onChange?: (value: string) => void;\n}\n\n/**\n * Configurable time range dropdown selector.\n * Renders a compact select field with the provided time range options.\n *\n * @example\n * ```tsx\n * <TimeRangeSelect\n * options={[\n * { label: 'Last hour', value: 'hour' },\n * { label: '24 hours', value: 'day' },\n * { label: '1 week', value: 'week' },\n * ]}\n * value=\"week\"\n * onChange={(value) => console.log(value)}\n * />\n * ```\n */\nexport const TimeRangeSelect = ({ options, value, onChange }: TimeRangeSelectProps) => (\n <TextField\n select\n size=\"small\"\n value={value ?? (options.length > 0 ? options[0].value : '')}\n onChange={(e) => onChange?.(e.target.value)}\n aria-label=\"Time range selector\"\n sx={{ minWidth: 120 }}\n >\n {options.map((option) => (\n <MenuItem key={option.value} value={option.value}>\n {option.label}\n </MenuItem>\n ))}\n </TextField>\n);\n","import Stack from '@mui/material/Stack';\nimport Typography from '@mui/material/Typography';\n\n/**\n * Represents a single summary statistic item displayed below the graph.\n */\nexport interface SummaryItem {\n /** Descriptive label (e.g., \"Total Engagements\") */\n label: string;\n /** Numeric or string value (e.g., \"13.72\" or 11372) */\n value: string | number;\n /** Optional unit suffix (e.g., \"K\", \"GB\", \"%\") */\n unit?: string;\n}\n\nexport interface SummaryStatsProps {\n /** Array of summary items to display */\n items: SummaryItem[];\n}\n\n/**\n * Formats a summary value with its optional unit.\n */\nconst formatSummaryValue = (value: string | number, unit?: string): string => {\n const displayValue = typeof value === 'number' ? value.toLocaleString() : value;\n return unit ? `${displayValue} ${unit}` : displayValue;\n};\n\n/**\n * Renders a horizontal row of summary statistics below the graph.\n * Each item shows a label with its corresponding value and optional unit.\n *\n * Matches the Figma design layout with label in secondary text color\n * and value in bold heading typography.\n *\n * @example\n * ```tsx\n * <SummaryStats\n * items={[\n * { label: 'Total Engagements', value: 11372 },\n * { label: 'Total Consumed', value: '156.91', unit: 'GB' },\n * ]}\n * />\n * ```\n */\nexport const SummaryStats = ({ items }: SummaryStatsProps) => {\n if (items.length === 0) {\n return null;\n }\n\n return (\n <Stack\n direction=\"row\"\n spacing={3}\n padding={2}\n flexWrap=\"wrap\"\n useFlexGap\n role=\"list\"\n aria-label=\"Summary statistics\"\n >\n {items.map((item) => (\n <Stack\n key={item.label}\n direction=\"row\"\n alignItems=\"center\"\n spacing={1}\n role=\"listitem\"\n >\n <Typography variant=\"body2\" color=\"text.secondary\">\n {item.label}\n </Typography>\n <Typography variant=\"h5\" fontWeight={600}>\n {formatSummaryValue(item.value, item.unit)}\n </Typography>\n </Stack>\n ))}\n </Stack>\n );\n};\n"]}
@@ -1,6 +1,6 @@
1
1
  import {
2
2
  fontFamilyMono
3
- } from "./chunk-PWF2NJDB.mjs";
3
+ } from "./chunk-WC2TCWXK.mjs";
4
4
 
5
5
  // src/components/feedback/Chip.tsx
6
6
  import React from "react";
@@ -78,8 +78,9 @@ var StyledChip = styled(MuiChip, {
78
78
  "&:hover": { backgroundColor: hoverBackgroundColor }
79
79
  };
80
80
  });
81
- var Chip = React.forwardRef(function Chip2({ variant = "default", tone = "default", ...props }, ref) {
82
- return /* @__PURE__ */ jsx(StyledChip, { ref, dsVariant: variant, dsTone: tone, ...props });
81
+ var Chip = React.forwardRef(function Chip2({ variant, tone = "default", ...props }, ref) {
82
+ const resolvedVariant = tone === "onGradient" ? "default" : variant ?? "default";
83
+ return /* @__PURE__ */ jsx(StyledChip, { ref, dsVariant: resolvedVariant, dsTone: tone, ...props });
83
84
  });
84
85
 
85
86
  // src/components/feedback/StatusDot.tsx
@@ -258,11 +259,9 @@ var Tooltip2 = React5.forwardRef(function Tooltip3(props, ref) {
258
259
  });
259
260
 
260
261
  // src/components/feedback/Progress.tsx
261
- import {
262
- LinearProgress,
263
- CircularProgress,
264
- styled as styled4
265
- } from "@mui/material";
262
+ import LinearProgress from "@mui/material/LinearProgress";
263
+ import CircularProgress from "@mui/material/CircularProgress";
264
+ import { styled as styled4 } from "@mui/material/styles";
266
265
  import { jsx as jsx6 } from "react/jsx-runtime";
267
266
  var StyledLinearProgress = styled4(LinearProgress)(({ theme }) => ({
268
267
  height: 4,
@@ -297,7 +296,7 @@ var Progress = ({
297
296
  // src/components/feedback/Alert.tsx
298
297
  import React6 from "react";
299
298
  import MuiAlert from "@mui/material/Alert";
300
- import { AlertTitle as MuiAlertTitle } from "@mui/material";
299
+ import MuiAlertTitle from "@mui/material/AlertTitle";
301
300
  import MuiSnackbar from "@mui/material/Snackbar";
302
301
  import { styled as styled5 } from "@mui/material/styles";
303
302
  import { jsx as jsx7, jsxs as jsxs3 } from "react/jsx-runtime";
@@ -314,18 +313,13 @@ var Alert = React6.forwardRef(function Alert2({ severity = "info", title, childr
314
313
  ] });
315
314
  });
316
315
  var StyledSnackbar = styled5(MuiSnackbar)({});
317
- var StableFadeTransition = React6.forwardRef(
318
- (props, ref) => {
319
- return React6.cloneElement(props.children, {
320
- ref,
321
- style: {
322
- ...props.children.props.style,
323
- transition: "opacity 0.3s ease-in-out"
324
- }
325
- });
326
- }
327
- );
328
- StableFadeTransition.displayName = "StableFadeTransition";
316
+ var StableNoTransition = React6.forwardRef(({ in: inProp, onExited, children }, ref) => {
317
+ React6.useEffect(() => {
318
+ if (inProp === false) onExited?.(null);
319
+ }, [inProp, onExited]);
320
+ return React6.cloneElement(children, { ref });
321
+ });
322
+ StableNoTransition.displayName = "StableNoTransition";
329
323
  var Snackbar = React6.forwardRef(function Snackbar2({
330
324
  message,
331
325
  severity = "info",
@@ -370,7 +364,7 @@ var Snackbar = React6.forwardRef(function Snackbar2({
370
364
  }
371
365
  // Prevent scroll issues
372
366
  },
373
- TransitionComponent: StableFadeTransition,
367
+ TransitionComponent: StableNoTransition,
374
368
  ...props,
375
369
  children: content
376
370
  }
@@ -379,7 +373,8 @@ var Snackbar = React6.forwardRef(function Snackbar2({
379
373
 
380
374
  // src/components/feedback/EmptyState.tsx
381
375
  import React7 from "react";
382
- import { Box as Box3, Typography as Typography2 } from "@mui/material";
376
+ import Box3 from "@mui/material/Box";
377
+ import Typography2 from "@mui/material/Typography";
383
378
  import { jsx as jsx8, jsxs as jsxs4 } from "react/jsx-runtime";
384
379
  var EmptyState = React7.forwardRef(function EmptyState2({ title = "No items found", description, icon, action }, ref) {
385
380
  return /* @__PURE__ */ jsxs4(
@@ -417,7 +412,9 @@ var EmptyState = React7.forwardRef(function EmptyState2({ title = "No items foun
417
412
 
418
413
  // src/components/feedback/Loading.tsx
419
414
  import React8 from "react";
420
- import { Box as Box4, CircularProgress as CircularProgress2, Typography as Typography3 } from "@mui/material";
415
+ import Box4 from "@mui/material/Box";
416
+ import CircularProgress2 from "@mui/material/CircularProgress";
417
+ import Typography3 from "@mui/material/Typography";
421
418
  import { jsx as jsx9, jsxs as jsxs5 } from "react/jsx-runtime";
422
419
  var Loading = React8.forwardRef(function Loading2({ message = "Loading...", size = 40, fullScreen = false }, ref) {
423
420
  const content = /* @__PURE__ */ jsxs5(
@@ -453,7 +450,9 @@ var Loading = React8.forwardRef(function Loading2({ message = "Loading...", size
453
450
  });
454
451
 
455
452
  // src/components/feedback/AppLoading.tsx
456
- import { Box as Box5, CircularProgress as CircularProgress3, Typography as Typography4 } from "@mui/material";
453
+ import Box5 from "@mui/material/Box";
454
+ import CircularProgress3 from "@mui/material/CircularProgress";
455
+ import Typography4 from "@mui/material/Typography";
457
456
  import { jsx as jsx10, jsxs as jsxs6 } from "react/jsx-runtime";
458
457
  var AppLoading = ({
459
458
  message = "Loading...",
@@ -502,9 +501,7 @@ var AppLoading = ({
502
501
 
503
502
  // src/components/feedback/CircularProgress.tsx
504
503
  import React9 from "react";
505
- import {
506
- CircularProgress as MuiCircularProgress
507
- } from "@mui/material";
504
+ import MuiCircularProgress from "@mui/material/CircularProgress";
508
505
  import { jsx as jsx11 } from "react/jsx-runtime";
509
506
  var CircularProgress4 = React9.forwardRef(
510
507
  function CircularProgress5({ size = 40, thickness = 4, ...props }, ref) {
@@ -527,4 +524,4 @@ export {
527
524
  AppLoading,
528
525
  CircularProgress4 as CircularProgress
529
526
  };
530
- //# sourceMappingURL=chunk-IE6GCHDI.mjs.map
527
+ //# sourceMappingURL=chunk-GR52ENYI.mjs.map