@cere/cere-design-system 0.0.45 → 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 (164) hide show
  1. package/README.md +76 -0
  2. package/dist/buttons.d.mts +119 -0
  3. package/dist/buttons.d.ts +119 -0
  4. package/dist/buttons.js +19 -0
  5. package/dist/buttons.js.map +1 -0
  6. package/dist/buttons.mjs +19 -0
  7. package/dist/buttons.mjs.map +1 -0
  8. package/dist/carousel.d.mts +51 -0
  9. package/dist/carousel.d.ts +51 -0
  10. package/dist/carousel.js +185 -0
  11. package/dist/carousel.js.map +1 -0
  12. package/dist/carousel.mjs +185 -0
  13. package/dist/carousel.mjs.map +1 -0
  14. package/dist/charts.d.mts +187 -0
  15. package/dist/charts.d.ts +187 -0
  16. package/dist/charts.js +13 -0
  17. package/dist/charts.js.map +1 -0
  18. package/dist/charts.mjs +13 -0
  19. package/dist/charts.mjs.map +1 -0
  20. package/dist/chunk-2EBCST6X.js +25 -0
  21. package/dist/chunk-2EBCST6X.js.map +1 -0
  22. package/dist/chunk-2KDN37PQ.js +486 -0
  23. package/dist/chunk-2KDN37PQ.js.map +1 -0
  24. package/dist/chunk-34LFXT6C.mjs +486 -0
  25. package/dist/chunk-34LFXT6C.mjs.map +1 -0
  26. package/dist/chunk-3KCXCVOX.mjs +411 -0
  27. package/dist/chunk-3KCXCVOX.mjs.map +1 -0
  28. package/dist/chunk-4OKTICU5.js +374 -0
  29. package/dist/chunk-4OKTICU5.js.map +1 -0
  30. package/dist/chunk-5ASG6G6U.mjs +40 -0
  31. package/dist/chunk-5ASG6G6U.mjs.map +1 -0
  32. package/dist/chunk-72TQ56EP.js +280 -0
  33. package/dist/chunk-72TQ56EP.js.map +1 -0
  34. package/dist/chunk-7KXKK2RE.js +43 -0
  35. package/dist/chunk-7KXKK2RE.js.map +1 -0
  36. package/dist/chunk-ARSCL4ZZ.js +111 -0
  37. package/dist/chunk-ARSCL4ZZ.js.map +1 -0
  38. package/dist/chunk-AWVNEU6R.mjs +1478 -0
  39. package/dist/chunk-AWVNEU6R.mjs.map +1 -0
  40. package/dist/chunk-BH4FNZKK.mjs +1472 -0
  41. package/dist/chunk-BH4FNZKK.mjs.map +1 -0
  42. package/dist/chunk-BIZK6FUD.js +37 -0
  43. package/dist/chunk-BIZK6FUD.js.map +1 -0
  44. package/dist/chunk-BOQPWZIB.mjs +147 -0
  45. package/dist/chunk-BOQPWZIB.mjs.map +1 -0
  46. package/dist/chunk-BT7XUTT5.mjs +392 -0
  47. package/dist/chunk-BT7XUTT5.mjs.map +1 -0
  48. package/dist/chunk-D7D25O6E.mjs +280 -0
  49. package/dist/chunk-D7D25O6E.mjs.map +1 -0
  50. package/dist/chunk-DRGMEIPT.mjs +162 -0
  51. package/dist/chunk-DRGMEIPT.mjs.map +1 -0
  52. package/dist/chunk-DZXNYLVG.js +392 -0
  53. package/dist/chunk-DZXNYLVG.js.map +1 -0
  54. package/dist/chunk-GR52ENYI.mjs +527 -0
  55. package/dist/chunk-GR52ENYI.mjs.map +1 -0
  56. package/dist/chunk-GTBKQXXI.js +1472 -0
  57. package/dist/chunk-GTBKQXXI.js.map +1 -0
  58. package/dist/chunk-HJ24WKU4.js +120 -0
  59. package/dist/chunk-HJ24WKU4.js.map +1 -0
  60. package/dist/chunk-JBHRAAN3.js +31 -0
  61. package/dist/chunk-JBHRAAN3.js.map +1 -0
  62. package/dist/chunk-KKIKOIMP.js +1478 -0
  63. package/dist/chunk-KKIKOIMP.js.map +1 -0
  64. package/dist/chunk-LVJSKRX3.js +147 -0
  65. package/dist/chunk-LVJSKRX3.js.map +1 -0
  66. package/dist/chunk-OWWDNDF4.js +40 -0
  67. package/dist/chunk-OWWDNDF4.js.map +1 -0
  68. package/dist/chunk-PFZZJZ64.js +162 -0
  69. package/dist/chunk-PFZZJZ64.js.map +1 -0
  70. package/dist/chunk-PHMNZK2R.mjs +18 -0
  71. package/dist/chunk-PHMNZK2R.mjs.map +1 -0
  72. package/dist/chunk-POCAW2G4.mjs +111 -0
  73. package/dist/chunk-POCAW2G4.mjs.map +1 -0
  74. package/dist/chunk-QBCRH7YF.mjs +37 -0
  75. package/dist/chunk-QBCRH7YF.mjs.map +1 -0
  76. package/dist/chunk-QCFLZ7X3.js +527 -0
  77. package/dist/chunk-QCFLZ7X3.js.map +1 -0
  78. package/dist/chunk-SG2TD7FQ.mjs +374 -0
  79. package/dist/chunk-SG2TD7FQ.mjs.map +1 -0
  80. package/dist/chunk-SSFALO6S.mjs +120 -0
  81. package/dist/chunk-SSFALO6S.mjs.map +1 -0
  82. package/dist/chunk-U2QHFISG.js +18 -0
  83. package/dist/chunk-U2QHFISG.js.map +1 -0
  84. package/dist/chunk-UPGFBPFX.mjs +25 -0
  85. package/dist/chunk-UPGFBPFX.mjs.map +1 -0
  86. package/dist/chunk-WC2TCWXK.mjs +445 -0
  87. package/dist/chunk-WC2TCWXK.mjs.map +1 -0
  88. package/dist/chunk-XZZZ4MZV.js +445 -0
  89. package/dist/chunk-XZZZ4MZV.js.map +1 -0
  90. package/dist/chunk-YCDCQSYH.js +411 -0
  91. package/dist/chunk-YCDCQSYH.js.map +1 -0
  92. package/dist/chunk-ZDAZYIXB.mjs +43 -0
  93. package/dist/chunk-ZDAZYIXB.mjs.map +1 -0
  94. package/dist/chunk-ZP26PGMS.mjs +31 -0
  95. package/dist/chunk-ZP26PGMS.mjs.map +1 -0
  96. package/dist/feedback.d.mts +368 -0
  97. package/dist/feedback.d.ts +368 -0
  98. package/dist/feedback.js +43 -0
  99. package/dist/feedback.js.map +1 -0
  100. package/dist/feedback.mjs +43 -0
  101. package/dist/feedback.mjs.map +1 -0
  102. package/dist/fonts/HumanSans-BlackOblique.otf +0 -0
  103. package/dist/fonts/HumanSans-Thin.otf +0 -0
  104. package/dist/fonts/HumanSans-ThinOblique.otf +0 -0
  105. package/dist/fonts/human-sans-font.css +88 -0
  106. package/dist/fonts/human-sans.css +3 -0
  107. package/dist/fonts/inter.css +3 -0
  108. package/dist/icons.d.mts +21 -0
  109. package/dist/icons.d.ts +21 -0
  110. package/dist/icons.js +23 -0
  111. package/dist/icons.js.map +1 -0
  112. package/dist/icons.mjs +23 -0
  113. package/dist/icons.mjs.map +1 -0
  114. package/dist/index.d.mts +196 -3082
  115. package/dist/index.d.ts +196 -3082
  116. package/dist/index.js +253 -10082
  117. package/dist/index.js.map +1 -1
  118. package/dist/index.mjs +229 -10017
  119. package/dist/index.mjs.map +1 -1
  120. package/dist/inputs.d.mts +129 -0
  121. package/dist/inputs.d.ts +129 -0
  122. package/dist/inputs.js +43 -0
  123. package/dist/inputs.js.map +1 -0
  124. package/dist/inputs.mjs +43 -0
  125. package/dist/inputs.mjs.map +1 -0
  126. package/dist/layout.d.mts +681 -0
  127. package/dist/layout.d.ts +681 -0
  128. package/dist/layout.js +98 -0
  129. package/dist/layout.js.map +1 -0
  130. package/dist/layout.mjs +98 -0
  131. package/dist/layout.mjs.map +1 -0
  132. package/dist/navigation.d.mts +611 -0
  133. package/dist/navigation.d.ts +611 -0
  134. package/dist/navigation.js +54 -0
  135. package/dist/navigation.js.map +1 -0
  136. package/dist/navigation.mjs +54 -0
  137. package/dist/navigation.mjs.map +1 -0
  138. package/dist/third-party.d.mts +113 -0
  139. package/dist/third-party.d.ts +113 -0
  140. package/dist/third-party.js +7 -0
  141. package/dist/third-party.js.map +1 -0
  142. package/dist/third-party.mjs +7 -0
  143. package/dist/third-party.mjs.map +1 -0
  144. package/dist/tokens.css +45 -71
  145. package/dist/utilities.d.mts +39 -0
  146. package/dist/utilities.d.ts +39 -0
  147. package/dist/utilities.js +17 -0
  148. package/dist/utilities.js.map +1 -0
  149. package/dist/utilities.mjs +17 -0
  150. package/dist/utilities.mjs.map +1 -0
  151. package/package.json +76 -8
  152. package/dist/index.css +0 -79
  153. package/dist/index.css.map +0 -1
  154. /package/dist/{HumanSans-Black-C4YJONK7.otf → fonts/HumanSans-Black.otf} +0 -0
  155. /package/dist/{HumanSans-Bold-4EAJ3L3T.otf → fonts/HumanSans-Bold.otf} +0 -0
  156. /package/dist/{HumanSans-BoldOblique-4D325T4F.otf → fonts/HumanSans-BoldOblique.otf} +0 -0
  157. /package/dist/{HumanSans-ExtraLight-VL7DEKQ4.otf → fonts/HumanSans-ExtraLight.otf} +0 -0
  158. /package/dist/{HumanSans-ExtraLightOblique-VK2JTUXF.otf → fonts/HumanSans-ExtraLightOblique.otf} +0 -0
  159. /package/dist/{HumanSans-Light-YV7AFKRB.otf → fonts/HumanSans-Light.otf} +0 -0
  160. /package/dist/{HumanSans-LightOblique-VIXV7QA6.otf → fonts/HumanSans-LightOblique.otf} +0 -0
  161. /package/dist/{HumanSans-Medium-UULJ3PIR.otf → fonts/HumanSans-Medium.otf} +0 -0
  162. /package/dist/{HumanSans-MediumOblique-M7FHDZRS.otf → fonts/HumanSans-MediumOblique.otf} +0 -0
  163. /package/dist/{HumanSans-Regular-QMFEP3F6.otf → fonts/HumanSans-Regular.otf} +0 -0
  164. /package/dist/{HumanSans-RegularOblique-YPKQJAAM.otf → fonts/HumanSans-RegularOblique.otf} +0 -0
@@ -0,0 +1,1472 @@
1
+ "use strict";Object.defineProperty(exports, "__esModule", {value: true}); function _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } else { var newObj = {}; if (obj != null) { for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) { newObj[key] = obj[key]; } } } newObj.default = obj; return newObj; } } 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
+
4
+ var _chunkPFZZJZ64js = require('./chunk-PFZZJZ64.js');
5
+
6
+
7
+ var _chunk2EBCST6Xjs = require('./chunk-2EBCST6X.js');
8
+
9
+
10
+ var _chunkLVJSKRX3js = require('./chunk-LVJSKRX3.js');
11
+
12
+
13
+ var _chunk72TQ56EPjs = require('./chunk-72TQ56EP.js');
14
+
15
+
16
+
17
+ var _chunkXZZZ4MZVjs = require('./chunk-XZZZ4MZV.js');
18
+
19
+ // src/components/layout/Logo.tsx
20
+ var _Stack = require('@mui/material/Stack'); var _Stack2 = _interopRequireDefault(_Stack);
21
+ var _styles = require('@mui/material/styles');
22
+ var _SvgIcon = require('@mui/material/SvgIcon');
23
+ var _jsxruntime = require('react/jsx-runtime');
24
+ var sizesMap = {
25
+ large: 38,
26
+ medium: 32,
27
+ small: 24
28
+ };
29
+ var Container = _styles.styled.call(void 0, (0, _Stack2.default))({
30
+ [`& .${_SvgIcon.svgIconClasses.root}`]: {
31
+ fontSize: "inherit"
32
+ }
33
+ });
34
+ var Logo = ({ children, size = "medium", icon = /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunk2EBCST6Xjs.CereIcon, { color: "primary" }) }) => /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, Container, { direction: "row", alignItems: "center", spacing: 2, fontSize: sizesMap[size], children: [
35
+ icon,
36
+ children && /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _Stack2.default, { children })
37
+ ] });
38
+
39
+ // src/components/layout/Dialog.tsx
40
+ var _Dialog = require('@mui/material/Dialog'); var _Dialog2 = _interopRequireDefault(_Dialog);
41
+ var _DialogTitle = require('@mui/material/DialogTitle'); var _DialogTitle2 = _interopRequireDefault(_DialogTitle);
42
+ var _DialogContent = require('@mui/material/DialogContent'); var _DialogContent2 = _interopRequireDefault(_DialogContent);
43
+ var _DialogActions = require('@mui/material/DialogActions'); var _DialogActions2 = _interopRequireDefault(_DialogActions);
44
+ var _Button = require('@mui/material/Button'); var _Button2 = _interopRequireDefault(_Button);
45
+ var _IconButton = require('@mui/material/IconButton'); var _IconButton2 = _interopRequireDefault(_IconButton);
46
+ var _Box = require('@mui/material/Box'); var _Box2 = _interopRequireDefault(_Box);
47
+ var _Typography = require('@mui/material/Typography'); var _Typography2 = _interopRequireDefault(_Typography);
48
+ var _Divider = require('@mui/material/Divider'); var _Divider2 = _interopRequireDefault(_Divider);
49
+ var _CircularProgress = require('@mui/material/CircularProgress'); var _CircularProgress2 = _interopRequireDefault(_CircularProgress);
50
+ var _Close = require('@mui/icons-material/Close'); var _Close2 = _interopRequireDefault(_Close);
51
+
52
+ var Dialog = ({
53
+ open,
54
+ title,
55
+ onClose,
56
+ onSubmit,
57
+ submitLabel = "Save",
58
+ cancelLabel = "Cancel",
59
+ isLoading = false,
60
+ disableSubmit = false,
61
+ showActions = true,
62
+ headerAction,
63
+ fullWidth = true,
64
+ maxWidth = "md",
65
+ children,
66
+ dividers = true,
67
+ confirmBeforeClose = false,
68
+ customActions,
69
+ ...dialogProps
70
+ }) => {
71
+ const handleCloseAttempt = (e) => {
72
+ if (e) e.stopPropagation();
73
+ onClose();
74
+ };
75
+ return /* @__PURE__ */ _jsxruntime.jsxs.call(void 0,
76
+ _Dialog2.default,
77
+ {
78
+ open,
79
+ onClose: (_, reason) => {
80
+ if (confirmBeforeClose) return;
81
+ if (reason === "backdropClick" || reason === "escapeKeyDown") {
82
+ onClose();
83
+ }
84
+ },
85
+ fullWidth,
86
+ maxWidth,
87
+ ...dialogProps,
88
+ PaperProps: {
89
+ sx: { minHeight: dialogProps.fullScreen ? void 0 : "auto" },
90
+ ...dialogProps.PaperProps
91
+ },
92
+ children: [
93
+ /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, _DialogTitle2.default, { sx: { display: "flex", justifyContent: "space-between", alignItems: "center", p: 2 }, children: [
94
+ /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _Box2.default, { sx: { display: "flex", alignItems: "center" }, children: typeof title === "string" ? /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _Typography2.default, { variant: "h6", children: title }) : title }),
95
+ /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, _Box2.default, { sx: { display: "flex", alignItems: "center" }, children: [
96
+ headerAction,
97
+ /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
98
+ _IconButton2.default,
99
+ {
100
+ edge: "end",
101
+ color: "inherit",
102
+ onClick: handleCloseAttempt,
103
+ "aria-label": "close",
104
+ children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _Close2.default, {})
105
+ }
106
+ )
107
+ ] })
108
+ ] }),
109
+ dividers && /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _Divider2.default, {}),
110
+ /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _DialogContent2.default, { dividers, children }),
111
+ (showActions || customActions) && /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, _jsxruntime.Fragment, { children: [
112
+ dividers && /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _Divider2.default, {}),
113
+ /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _DialogActions2.default, { children: customActions || /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, _jsxruntime.Fragment, { children: [
114
+ /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
115
+ _Button2.default,
116
+ {
117
+ onClick: handleCloseAttempt,
118
+ disabled: isLoading,
119
+ children: cancelLabel
120
+ }
121
+ ),
122
+ onSubmit && /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
123
+ _Button2.default,
124
+ {
125
+ variant: "contained",
126
+ color: "primary",
127
+ onClick: onSubmit,
128
+ disabled: disableSubmit || isLoading,
129
+ startIcon: isLoading ? /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _CircularProgress2.default, { size: 20 }) : void 0,
130
+ children: submitLabel
131
+ }
132
+ )
133
+ ] }) })
134
+ ] })
135
+ ]
136
+ }
137
+ );
138
+ };
139
+
140
+ // src/components/layout/KpiCard.tsx
141
+ var _react = require('react'); var React = _interopRequireWildcard(_react); var React2 = _interopRequireWildcard(_react); var React3 = _interopRequireWildcard(_react);
142
+
143
+
144
+
145
+ var toneColor = (tone, theme) => {
146
+ switch (tone) {
147
+ case "violet":
148
+ return theme.palette.primary.main;
149
+ case "blue":
150
+ return theme.palette.info.main;
151
+ case "green":
152
+ return theme.palette.success.main;
153
+ case "orange":
154
+ return theme.palette.warning.main;
155
+ case "pink":
156
+ return _nullishCoalesce(_optionalChain([theme, 'access', _2 => _2.palette, 'access', _3 => _3.secondary, 'optionalAccess', _4 => _4.main]), () => ( theme.palette.primary.main));
157
+ case "neutral":
158
+ default:
159
+ return theme.palette.grey[300];
160
+ }
161
+ };
162
+ var KpiCard = React.forwardRef(
163
+ function KpiCard2({ icon, label, value, sub, tone = "neutral", ...rest }, ref) {
164
+ return /* @__PURE__ */ _jsxruntime.jsxs.call(void 0,
165
+ _Box2.default,
166
+ {
167
+ ref,
168
+ "data-tone": tone,
169
+ ...rest,
170
+ sx: (theme) => ({
171
+ position: "relative",
172
+ display: "flex",
173
+ flexDirection: "column",
174
+ gap: 0.5,
175
+ padding: 2,
176
+ paddingLeft: 2.5,
177
+ borderRadius: 1.5,
178
+ backgroundColor: theme.palette.background.paper,
179
+ border: `1px solid ${theme.palette.divider}`,
180
+ overflow: "hidden",
181
+ "&::before": {
182
+ content: '""',
183
+ position: "absolute",
184
+ left: 0,
185
+ top: 0,
186
+ bottom: 0,
187
+ width: 4,
188
+ backgroundColor: toneColor(tone, theme)
189
+ }
190
+ }),
191
+ children: [
192
+ /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, _Box2.default, { sx: { display: "flex", alignItems: "center", gap: 0.75 }, children: [
193
+ icon && /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _Box2.default, { sx: { display: "inline-flex", color: "text.secondary" }, children: icon }),
194
+ /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _Typography2.default, { variant: "eyebrow", component: "span", children: label })
195
+ ] }),
196
+ /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _Typography2.default, { variant: "panelTitle", component: "div", children: value }),
197
+ sub && /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _Typography2.default, { variant: "body2", sx: { color: "text.secondary" }, children: sub })
198
+ ]
199
+ }
200
+ );
201
+ }
202
+ );
203
+
204
+ // src/components/layout/AgentAvatar.tsx
205
+
206
+
207
+
208
+ var hashSeed = (seed) => {
209
+ let h = 5381;
210
+ for (let i = 0; i < seed.length; i += 1) {
211
+ h = (h << 5) + h + seed.charCodeAt(i) & 4294967295;
212
+ }
213
+ return Math.abs(h);
214
+ };
215
+ var palette = (theme) => [
216
+ theme.palette.primary.main,
217
+ theme.palette.primary.dark,
218
+ _nullishCoalesce(_optionalChain([theme, 'access', _5 => _5.palette, 'access', _6 => _6.secondary, 'optionalAccess', _7 => _7.main]), () => ( theme.palette.primary.main))
219
+ ];
220
+ var AgentAvatar = React2.forwardRef(
221
+ function AgentAvatar2({ seed, name, size = 40, shadow = false, iconUrl, ariaLabel, ...rest }, ref) {
222
+ const initial = (_nullishCoalesce(_optionalChain([name, 'optionalAccess', _8 => _8.trim, 'call', _9 => _9(), 'optionalAccess', _10 => _10[0]]), () => ( "?"))).toUpperCase();
223
+ const radius = Math.round(size * 0.28);
224
+ return /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
225
+ _Box2.default,
226
+ {
227
+ ref,
228
+ role: "img",
229
+ "aria-label": _nullishCoalesce(ariaLabel, () => ( name)),
230
+ ...rest,
231
+ sx: (theme) => {
232
+ const colors = palette(theme);
233
+ const paletteIndex = hashSeed(seed) % colors.length;
234
+ return {
235
+ width: size,
236
+ height: size,
237
+ borderRadius: `${radius}px`,
238
+ backgroundColor: colors[paletteIndex],
239
+ color: theme.palette.common.white,
240
+ display: "inline-flex",
241
+ alignItems: "center",
242
+ justifyContent: "center",
243
+ fontWeight: 700,
244
+ fontSize: Math.round(size * 0.42),
245
+ lineHeight: 1,
246
+ overflow: "hidden",
247
+ flexShrink: 0,
248
+ boxShadow: shadow ? theme.shadows[3] : "inset 0 1px 0 rgba(255,255,255,0.2)",
249
+ userSelect: "none"
250
+ };
251
+ },
252
+ children: iconUrl ? /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
253
+ _Box2.default,
254
+ {
255
+ component: "img",
256
+ src: iconUrl,
257
+ alt: "",
258
+ sx: { width: "100%", height: "100%", objectFit: "cover" }
259
+ }
260
+ ) : /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "span", { "aria-hidden": "true", children: initial })
261
+ }
262
+ );
263
+ }
264
+ );
265
+
266
+ // src/components/layout/NumberedList.tsx
267
+
268
+
269
+
270
+
271
+ var toneColors = (tone, theme) => {
272
+ switch (tone) {
273
+ case "blue":
274
+ return { bg: theme.palette.info.light, fg: theme.palette.info.dark };
275
+ case "green":
276
+ return { bg: theme.palette.success.light, fg: theme.palette.success.dark };
277
+ case "orange":
278
+ return { bg: theme.palette.warning.light, fg: theme.palette.warning.dark };
279
+ case "pink":
280
+ return {
281
+ bg: _nullishCoalesce(_optionalChain([theme, 'access', _11 => _11.palette, 'access', _12 => _12.secondary, 'optionalAccess', _13 => _13.light]), () => ( theme.palette.primary.light)),
282
+ fg: _nullishCoalesce(_optionalChain([theme, 'access', _14 => _14.palette, 'access', _15 => _15.secondary, 'optionalAccess', _16 => _16.main]), () => ( theme.palette.primary.main))
283
+ };
284
+ case "neutral":
285
+ return { bg: theme.palette.grey[100], fg: theme.palette.text.primary };
286
+ case "violet":
287
+ default:
288
+ return { bg: theme.palette.primary.light, fg: theme.palette.primary.main };
289
+ }
290
+ };
291
+ var NumberedList = React3.forwardRef(
292
+ function NumberedList2({ items, tone = "violet", startAt = 1, ...rest }, ref) {
293
+ return /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
294
+ _Box2.default,
295
+ {
296
+ ref,
297
+ component: "ol",
298
+ "data-tone": tone,
299
+ ...rest,
300
+ sx: (theme) => {
301
+ const { bg, fg } = toneColors(tone, theme);
302
+ return {
303
+ listStyle: "none",
304
+ margin: 0,
305
+ padding: 0,
306
+ display: "flex",
307
+ flexDirection: "column",
308
+ gap: 1.5,
309
+ "--numbered-list-bg": bg,
310
+ "--numbered-list-fg": fg
311
+ };
312
+ },
313
+ children: items.map((item, idx) => /* @__PURE__ */ _jsxruntime.jsxs.call(void 0,
314
+ _Box2.default,
315
+ {
316
+ component: "li",
317
+ sx: { display: "flex", alignItems: "flex-start", gap: 1.5 },
318
+ children: [
319
+ /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
320
+ _Box2.default,
321
+ {
322
+ "aria-hidden": "true",
323
+ sx: {
324
+ flexShrink: 0,
325
+ width: 28,
326
+ height: 28,
327
+ borderRadius: "50%",
328
+ display: "inline-flex",
329
+ alignItems: "center",
330
+ justifyContent: "center",
331
+ fontWeight: 700,
332
+ fontSize: 13,
333
+ backgroundColor: "var(--numbered-list-bg)",
334
+ color: "var(--numbered-list-fg)"
335
+ },
336
+ children: startAt + idx
337
+ }
338
+ ),
339
+ /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, _Box2.default, { sx: { flex: 1, minWidth: 0 }, children: [
340
+ /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _Typography2.default, { variant: "subtitle1", component: "div", children: item.title }),
341
+ item.detail && /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
342
+ _Typography2.default,
343
+ {
344
+ variant: "body2",
345
+ component: "div",
346
+ sx: { color: "text.secondary", mt: 0.25 },
347
+ children: item.detail
348
+ }
349
+ )
350
+ ] }),
351
+ item.cta && /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _Box2.default, { sx: { flexShrink: 0 }, children: item.cta })
352
+ ]
353
+ },
354
+ `${idx}-${item.title}`
355
+ ))
356
+ }
357
+ );
358
+ }
359
+ );
360
+
361
+ // src/components/layout/Drawer.tsx
362
+
363
+ var _Drawer = require('@mui/material/Drawer'); var _Drawer2 = _interopRequireDefault(_Drawer);
364
+
365
+
366
+
367
+
368
+
369
+ var _Tabs = require('@mui/material/Tabs'); var _Tabs2 = _interopRequireDefault(_Tabs);
370
+ var _Tab = require('@mui/material/Tab'); var _Tab2 = _interopRequireDefault(_Tab);
371
+
372
+
373
+ // src/components/layout/drawerWidth.ts
374
+ function resolveDrawerWidth(width, theme, defaultWidth) {
375
+ if (width === void 0) {
376
+ return { width: defaultWidth };
377
+ }
378
+ if (typeof width === "number" || typeof width === "string") {
379
+ return { width };
380
+ }
381
+ const base = _nullishCoalesce(width.xs, () => ( defaultWidth));
382
+ const css = { width: base };
383
+ ["sm", "md", "lg", "xl"].forEach((bp) => {
384
+ const value = width[bp];
385
+ if (value !== void 0) {
386
+ css[theme.breakpoints.up(bp)] = { width: value };
387
+ }
388
+ });
389
+ return css;
390
+ }
391
+
392
+ // src/components/layout/Drawer.tsx
393
+
394
+ var StyledDrawer = _styles.styled.call(void 0, _Drawer2.default, {
395
+ shouldForwardProp: (prop) => prop !== "width" && prop !== "miniWidth" && prop !== "collapsed" && prop !== "topOffset"
396
+ })(({ theme, width, miniWidth = 72, collapsed, topOffset = 0 }) => {
397
+ const widthCss = collapsed ? { width: miniWidth } : resolveDrawerWidth(width, theme, 240);
398
+ return {
399
+ ...widthCss,
400
+ flexShrink: 0,
401
+ "& .MuiDrawer-paper": {
402
+ ...widthCss,
403
+ boxSizing: "border-box",
404
+ boxShadow: "0px 2px 10px rgba(0, 0, 0, 0.05)",
405
+ transition: theme.transitions.create(["width", "top", "height"], {
406
+ easing: theme.transitions.easing.sharp,
407
+ duration: theme.transitions.duration.enteringScreen
408
+ }),
409
+ overflow: "visible",
410
+ // Let internal content handle scrolling
411
+ display: "flex",
412
+ flexDirection: "column",
413
+ top: `${topOffset}px !important`,
414
+ height: topOffset > 0 ? `calc(100% - ${topOffset}px) !important` : "100%",
415
+ zIndex: `${theme.zIndex.modal} !important`
416
+ // Use modal zIndex to be above everything except AppBar (which is modal + 1)
417
+ }
418
+ };
419
+ });
420
+ var Drawer = React.default.forwardRef(function Drawer2({
421
+ width,
422
+ miniWidth = 72,
423
+ collapsed = false,
424
+ title,
425
+ header,
426
+ showCloseButton,
427
+ tabs,
428
+ activeTab = 0,
429
+ onTabChange,
430
+ footer,
431
+ contentProps,
432
+ anchor = "right",
433
+ variant = "temporary",
434
+ topOffset = 0,
435
+ children,
436
+ onClose,
437
+ ...props
438
+ }, ref) {
439
+ const defaultWidth = variant === "temporary" || variant === "persistent" ? 400 : 240;
440
+ const finalWidth = _nullishCoalesce(width, () => ( defaultWidth));
441
+ const shouldShowClose = _nullishCoalesce(showCloseButton, () => ( (variant === "temporary" || variant === "persistent")));
442
+ const hasHeader = title || header || shouldShowClose || tabs;
443
+ return /* @__PURE__ */ _jsxruntime.jsxs.call(void 0,
444
+ StyledDrawer,
445
+ {
446
+ ref,
447
+ width: finalWidth,
448
+ miniWidth,
449
+ collapsed,
450
+ anchor,
451
+ variant,
452
+ topOffset,
453
+ onClose,
454
+ ModalProps: {
455
+ ...props.ModalProps,
456
+ style: {
457
+ zIndex: topOffset > 0 ? void 0 : void 0
458
+ // Let styled component handle zIndex
459
+ }
460
+ },
461
+ BackdropProps: {
462
+ ...props.BackdropProps,
463
+ style: {
464
+ backgroundColor: "rgba(0, 0, 0, 0.5)"
465
+ }
466
+ },
467
+ ...props,
468
+ children: [
469
+ hasHeader && /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, _jsxruntime.Fragment, { children: [
470
+ /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
471
+ _Box2.default,
472
+ {
473
+ sx: {
474
+ display: "flex",
475
+ alignItems: "center",
476
+ justifyContent: "space-between",
477
+ p: 2,
478
+ minHeight: 64,
479
+ borderBottom: 1,
480
+ borderColor: "divider"
481
+ },
482
+ children: header || /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, _jsxruntime.Fragment, { children: [
483
+ /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _Box2.default, { sx: { flex: 1 }, children: typeof title === "string" ? /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _Typography2.default, { variant: "h6", children: title }) : title }),
484
+ shouldShowClose && onClose && /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
485
+ _IconButton2.default,
486
+ {
487
+ onClick: (e) => {
488
+ e.stopPropagation();
489
+ onClose(e, "backdropClick");
490
+ },
491
+ size: "small",
492
+ sx: { ml: 1 },
493
+ "aria-label": "close",
494
+ children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _Close2.default, {})
495
+ }
496
+ )
497
+ ] })
498
+ }
499
+ ),
500
+ tabs && tabs.length > 0 && /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
501
+ _Tabs2.default,
502
+ {
503
+ value: activeTab,
504
+ onChange: (_, newValue) => _optionalChain([onTabChange, 'optionalCall', _17 => _17(newValue)]),
505
+ variant: tabs.length > 4 ? "scrollable" : "standard",
506
+ scrollButtons: tabs.length > 4 ? "auto" : false,
507
+ sx: {
508
+ borderBottom: 1,
509
+ borderColor: "divider",
510
+ px: 2,
511
+ "& .MuiTabs-scrollableContainer": {
512
+ overflow: "auto"
513
+ }
514
+ },
515
+ children: tabs.map((tab, index) => /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _Tab2.default, { label: tab }, index))
516
+ }
517
+ )
518
+ ] }),
519
+ /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
520
+ _Box2.default,
521
+ {
522
+ sx: {
523
+ flex: 1,
524
+ overflow: "auto",
525
+ display: "flex",
526
+ flexDirection: "column"
527
+ },
528
+ ...contentProps,
529
+ children
530
+ }
531
+ ),
532
+ footer && /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, _jsxruntime.Fragment, { children: [
533
+ /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _Divider2.default, {}),
534
+ /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
535
+ _Box2.default,
536
+ {
537
+ sx: {
538
+ p: 2,
539
+ borderTop: 1,
540
+ borderColor: "divider"
541
+ },
542
+ children: footer
543
+ }
544
+ )
545
+ ] })
546
+ ]
547
+ }
548
+ );
549
+ });
550
+
551
+ // src/components/layout/MetaField.tsx
552
+
553
+
554
+
555
+
556
+ var MetaField = React.default.forwardRef(function MetaField2({ label, value, mono = false, title }, ref) {
557
+ const resolvedTitle = _nullishCoalesce(title, () => ( (typeof value === "string" ? value : void 0)));
558
+ return /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, _Box2.default, { ref, sx: { display: "flex", flexDirection: "column", gap: 0.25, minWidth: 0 }, children: [
559
+ /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
560
+ _Typography2.default,
561
+ {
562
+ variant: "caption",
563
+ sx: {
564
+ color: "text.secondary",
565
+ textTransform: "uppercase",
566
+ letterSpacing: 0.4,
567
+ fontSize: 10,
568
+ fontWeight: 600
569
+ },
570
+ children: label
571
+ }
572
+ ),
573
+ /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
574
+ _Typography2.default,
575
+ {
576
+ variant: "body2",
577
+ sx: {
578
+ fontFamily: mono ? "monospace" : void 0,
579
+ fontSize: 13,
580
+ overflow: "hidden",
581
+ textOverflow: "ellipsis",
582
+ whiteSpace: "nowrap"
583
+ },
584
+ title: resolvedTitle,
585
+ children: value
586
+ }
587
+ )
588
+ ] });
589
+ });
590
+
591
+ // src/components/layout/ScrollableRow.tsx
592
+
593
+
594
+
595
+ var _ChevronLeft = require('@mui/icons-material/ChevronLeft'); var _ChevronLeft2 = _interopRequireDefault(_ChevronLeft);
596
+ var _ChevronRight = require('@mui/icons-material/ChevronRight'); var _ChevronRight2 = _interopRequireDefault(_ChevronRight);
597
+
598
+ var EDGE_TOLERANCE_PX = 4;
599
+ var ScrollableRow = ({
600
+ children,
601
+ leftLabel = "Scroll left",
602
+ rightLabel = "Scroll right",
603
+ minNudge = 160,
604
+ nudgeFraction = 0.6
605
+ }) => {
606
+ const scrollerRef = _react.useRef.call(void 0, null);
607
+ const [canLeft, setCanLeft] = _react.useState.call(void 0, false);
608
+ const [canRight, setCanRight] = _react.useState.call(void 0, false);
609
+ _react.useEffect.call(void 0, () => {
610
+ const el = scrollerRef.current;
611
+ if (!el) return;
612
+ const update = () => {
613
+ setCanLeft(el.scrollLeft > EDGE_TOLERANCE_PX);
614
+ setCanRight(el.scrollLeft + el.clientWidth < el.scrollWidth - EDGE_TOLERANCE_PX);
615
+ };
616
+ update();
617
+ el.addEventListener("scroll", update, { passive: true });
618
+ const ro = typeof ResizeObserver !== "undefined" ? new ResizeObserver(update) : null;
619
+ _optionalChain([ro, 'optionalAccess', _18 => _18.observe, 'call', _19 => _19(el)]);
620
+ for (const c of Array.from(el.children)) _optionalChain([ro, 'optionalAccess', _20 => _20.observe, 'call', _21 => _21(c)]);
621
+ const mo = typeof MutationObserver !== "undefined" ? new MutationObserver(() => {
622
+ for (const c of Array.from(el.children)) _optionalChain([ro, 'optionalAccess', _22 => _22.observe, 'call', _23 => _23(c)]);
623
+ update();
624
+ }) : null;
625
+ _optionalChain([mo, 'optionalAccess', _24 => _24.observe, 'call', _25 => _25(el, { childList: true })]);
626
+ return () => {
627
+ el.removeEventListener("scroll", update);
628
+ _optionalChain([ro, 'optionalAccess', _26 => _26.disconnect, 'call', _27 => _27()]);
629
+ _optionalChain([mo, 'optionalAccess', _28 => _28.disconnect, 'call', _29 => _29()]);
630
+ };
631
+ }, []);
632
+ const nudge = (dir) => {
633
+ const el = scrollerRef.current;
634
+ if (!el) return;
635
+ el.scrollBy({ left: dir * Math.max(minNudge, el.clientWidth * nudgeFraction), behavior: "smooth" });
636
+ };
637
+ return /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, _Box2.default, { sx: { position: "relative", flex: 1, minWidth: 0 }, children: [
638
+ /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
639
+ _Box2.default,
640
+ {
641
+ ref: scrollerRef,
642
+ "data-scrollable-row-scroller": true,
643
+ sx: {
644
+ display: "flex",
645
+ gap: 1,
646
+ overflowX: "auto",
647
+ overflowY: "hidden",
648
+ scrollbarWidth: "thin",
649
+ py: 0.25
650
+ },
651
+ children
652
+ }
653
+ ),
654
+ canLeft && /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
655
+ _IconButton2.default,
656
+ {
657
+ size: "small",
658
+ "aria-label": leftLabel,
659
+ onClick: () => nudge(-1),
660
+ sx: {
661
+ position: "absolute",
662
+ left: -6,
663
+ top: "50%",
664
+ transform: "translateY(-50%)",
665
+ bgcolor: "background.paper",
666
+ boxShadow: 1,
667
+ "&:hover": { bgcolor: "background.paper" }
668
+ },
669
+ children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _ChevronLeft2.default, { fontSize: "small" })
670
+ }
671
+ ),
672
+ canRight && /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
673
+ _IconButton2.default,
674
+ {
675
+ size: "small",
676
+ "aria-label": rightLabel,
677
+ onClick: () => nudge(1),
678
+ sx: {
679
+ position: "absolute",
680
+ right: -6,
681
+ top: "50%",
682
+ transform: "translateY(-50%)",
683
+ bgcolor: "background.paper",
684
+ boxShadow: 1,
685
+ "&:hover": { bgcolor: "background.paper" }
686
+ },
687
+ children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _ChevronRight2.default, { fontSize: "small" })
688
+ }
689
+ )
690
+ ] });
691
+ };
692
+
693
+ // src/components/layout/SectionRow.tsx
694
+
695
+
696
+
697
+
698
+ var SectionRow = React.default.forwardRef(function SectionRow2({ title, subtitle, action, leftLabel, rightLabel, children }, ref) {
699
+ return /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, _Box2.default, { ref, component: "section", sx: { mb: 4 }, children: [
700
+ /* @__PURE__ */ _jsxruntime.jsxs.call(void 0,
701
+ _Box2.default,
702
+ {
703
+ component: "header",
704
+ sx: {
705
+ display: "flex",
706
+ alignItems: "flex-end",
707
+ justifyContent: "space-between",
708
+ gap: 1.5,
709
+ mb: 1.5
710
+ },
711
+ children: [
712
+ /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, _Box2.default, { sx: { minWidth: 0 }, children: [
713
+ /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _Typography2.default, { component: "h2", variant: "h6", sx: { m: 0 }, children: title }),
714
+ subtitle && /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _Typography2.default, { variant: "caption", sx: { color: "text.secondary" }, children: subtitle })
715
+ ] }),
716
+ action && /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _Box2.default, { sx: { display: "flex", alignItems: "center", gap: 1 }, children: action })
717
+ ]
718
+ }
719
+ ),
720
+ /* @__PURE__ */ _jsxruntime.jsx.call(void 0, ScrollableRow, { leftLabel, rightLabel, children })
721
+ ] });
722
+ });
723
+
724
+ // src/components/layout/GradientSurface.tsx
725
+
726
+
727
+
728
+ var GRADIENT_ANCHORS_0 = {
729
+ d1: _chunkXZZZ4MZVjs.robPaletteExtended.nearBlack2,
730
+ // #0d0627
731
+ d2: _chunkXZZZ4MZVjs.robPaletteExtended.nearBlack4,
732
+ // #23194b
733
+ ev: _chunkXZZZ4MZVjs.robPrimaryPalette.electricViolet,
734
+ // #8B00EC
735
+ fd: _chunkXZZZ4MZVjs.robPrimaryPalette.fandango
736
+ // #BD32A7
737
+ };
738
+ var PALETTES = [
739
+ {
740
+ base: `linear-gradient(115deg, ${GRADIENT_ANCHORS_0.d1} 0%, ${GRADIENT_ANCHORS_0.d2} 55%, ${GRADIENT_ANCHORS_0.ev} 130%)`,
741
+ blobA: GRADIENT_ANCHORS_0.fd,
742
+ blobB: GRADIENT_ANCHORS_0.ev
743
+ },
744
+ { base: "linear-gradient(115deg, #2a1635 0%, #5b2a55 55%, #c75a8a 130%)", blobA: "#ff7ea8", blobB: "#ffd1a8" },
745
+ { base: "linear-gradient(115deg, #0e2a2c 0%, #1d5d63 55%, #59c6c4 130%)", blobA: "#59c6c4", blobB: "#2bb0a0" },
746
+ { base: "linear-gradient(115deg, #131534 0%, #2c3a8c 55%, #6088e8 130%)", blobA: "#6088e8", blobB: "#3b5db8" },
747
+ { base: "linear-gradient(115deg, #1a0f30 0%, #3d2a78 55%, #8a5cf6 130%)", blobA: "#a892ff", blobB: "#6b4cf0" },
748
+ { base: "linear-gradient(115deg, #2b1124 0%, #6d2244 55%, #d44a7a 130%)", blobA: "#d44a7a", blobB: "#a8345e" }
749
+ ];
750
+ var GRADIENT_PALETTE_COUNT = PALETTES.length;
751
+ var GradientSurface = React.default.forwardRef(
752
+ function GradientSurface2({ index, children, sx }, ref) {
753
+ const wrapped = (index % GRADIENT_PALETTE_COUNT + GRADIENT_PALETTE_COUNT) % GRADIENT_PALETTE_COUNT;
754
+ const palette2 = PALETTES[wrapped];
755
+ return /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
756
+ _Box2.default,
757
+ {
758
+ ref,
759
+ "data-gradient-index": wrapped,
760
+ sx: [
761
+ {
762
+ position: "relative",
763
+ overflow: "hidden",
764
+ background: palette2.base,
765
+ color: "common.white",
766
+ "&::before, &::after": {
767
+ content: '""',
768
+ position: "absolute",
769
+ pointerEvents: "none",
770
+ borderRadius: "50%",
771
+ filter: "blur(6px)"
772
+ },
773
+ "&::before": {
774
+ width: 460,
775
+ height: 460,
776
+ top: -120,
777
+ right: -120,
778
+ opacity: 0.7,
779
+ background: `radial-gradient(circle, ${palette2.blobA} 0%, transparent 70%)`
780
+ },
781
+ "&::after": {
782
+ width: 520,
783
+ height: 520,
784
+ bottom: -180,
785
+ left: -160,
786
+ opacity: 0.55,
787
+ background: `radial-gradient(circle, ${palette2.blobB} 0%, transparent 70%)`
788
+ }
789
+ },
790
+ ...Array.isArray(sx) ? sx : [sx]
791
+ ],
792
+ children
793
+ }
794
+ );
795
+ }
796
+ );
797
+
798
+ // src/components/layout/DefinitionRow.tsx
799
+
800
+
801
+
802
+
803
+ var DefinitionRow = React.default.forwardRef(
804
+ function DefinitionRow2({ icon, label, sublabel, value, hint, dense = false, divider = true }, ref) {
805
+ return /* @__PURE__ */ _jsxruntime.jsxs.call(void 0,
806
+ _Box2.default,
807
+ {
808
+ ref,
809
+ "data-density": dense ? "dense" : "normal",
810
+ sx: {
811
+ py: dense ? 0.75 : 1.25,
812
+ display: "flex",
813
+ alignItems: "center",
814
+ gap: 1.5,
815
+ ...divider && {
816
+ borderBottom: "1px solid",
817
+ borderColor: "divider",
818
+ "&:last-child": { borderBottom: "none" }
819
+ }
820
+ },
821
+ children: [
822
+ icon && /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _Box2.default, { sx: { display: "flex", alignItems: "center", color: "text.secondary" }, children: icon }),
823
+ /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, _Box2.default, { sx: { minWidth: 0, flex: 1 }, children: [
824
+ /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _Typography2.default, { variant: "body2", sx: { fontWeight: 500, lineHeight: 1.2 }, children: label }),
825
+ sublabel && /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _Typography2.default, { variant: "caption", sx: { color: "text.secondary" }, children: sublabel })
826
+ ] }),
827
+ (value || hint) && /* @__PURE__ */ _jsxruntime.jsxs.call(void 0,
828
+ _Box2.default,
829
+ {
830
+ sx: {
831
+ display: "flex",
832
+ flexDirection: "column",
833
+ alignItems: "flex-end",
834
+ textAlign: "right"
835
+ },
836
+ children: [
837
+ value && /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _Typography2.default, { variant: "body2", sx: { color: "text.secondary" }, children: value }),
838
+ hint && /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _Typography2.default, { variant: "caption", sx: { color: "text.disabled" }, children: hint })
839
+ ]
840
+ }
841
+ )
842
+ ]
843
+ }
844
+ );
845
+ }
846
+ );
847
+
848
+ // src/components/layout/PanelDialog.tsx
849
+
850
+
851
+
852
+
853
+
854
+ var _Slide = require('@mui/material/Slide'); var _Slide2 = _interopRequireDefault(_Slide);
855
+
856
+
857
+ var WIDTH_PX = {
858
+ sm: 420,
859
+ md: 640,
860
+ lg: 880,
861
+ xl: 1080
862
+ };
863
+ var SlideLeft = _react.forwardRef.call(void 0,
864
+ function SlideLeft2(props, ref) {
865
+ return /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _Slide2.default, { direction: "left", ref, ...props });
866
+ }
867
+ );
868
+ var SlideUp = _react.forwardRef.call(void 0,
869
+ function SlideUp2(props, ref) {
870
+ return /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _Slide2.default, { direction: "up", ref, ...props });
871
+ }
872
+ );
873
+ function PanelDialog({
874
+ open,
875
+ onClose,
876
+ title,
877
+ headerActions,
878
+ width = "md",
879
+ side = "right",
880
+ ariaLabel,
881
+ hideHeader = false,
882
+ paperSx,
883
+ backdropSx,
884
+ transition,
885
+ children
886
+ }) {
887
+ const accessibleName = _nullishCoalesce(ariaLabel, () => ( (typeof title === "string" ? title : void 0)));
888
+ const isRight = side === "right";
889
+ const resolvedTransition = _nullishCoalesce(transition, () => ( (isRight ? "slide-left" : "fade")));
890
+ const TransitionComponent = resolvedTransition === "slide-left" ? SlideLeft : resolvedTransition === "slide-up" ? SlideUp : void 0;
891
+ const paperBaseSx = {
892
+ width: WIDTH_PX[width],
893
+ maxWidth: "100%",
894
+ // Lay paper children out as a flex column so the body can `flex: 1` and
895
+ // own its own scroll region.
896
+ display: "flex",
897
+ flexDirection: "column",
898
+ ...isRight && {
899
+ position: "absolute",
900
+ right: 0,
901
+ top: 0,
902
+ bottom: 0,
903
+ margin: 0,
904
+ // Use dynamic viewport units so mobile browsers (esp. iOS Safari) don't
905
+ // pop the layout when the URL bar shows/hides.
906
+ maxHeight: "100dvh",
907
+ height: "100dvh",
908
+ borderRadius: 0
909
+ }
910
+ };
911
+ return /* @__PURE__ */ _jsxruntime.jsxs.call(void 0,
912
+ _Dialog2.default,
913
+ {
914
+ open,
915
+ onClose,
916
+ slots: TransitionComponent ? { transition: TransitionComponent } : void 0,
917
+ slotProps: {
918
+ paper: {
919
+ "aria-label": accessibleName,
920
+ sx: [paperBaseSx, ...Array.isArray(paperSx) ? paperSx : [paperSx]]
921
+ },
922
+ ...backdropSx ? { backdrop: { sx: backdropSx } } : {}
923
+ },
924
+ children: [
925
+ !hideHeader && /* @__PURE__ */ _jsxruntime.jsxs.call(void 0,
926
+ _Box2.default,
927
+ {
928
+ sx: {
929
+ display: "flex",
930
+ alignItems: "center",
931
+ justifyContent: "space-between",
932
+ gap: 1,
933
+ px: 2,
934
+ py: 1.5,
935
+ borderBottom: "1px solid",
936
+ borderColor: "divider"
937
+ },
938
+ children: [
939
+ /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _Box2.default, { sx: { display: "flex", alignItems: "center", minWidth: 0 }, children: typeof title === "string" ? /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _Typography2.default, { variant: "h6", noWrap: true, children: title }) : title }),
940
+ /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, _Box2.default, { sx: { display: "flex", alignItems: "center", gap: 1 }, children: [
941
+ headerActions,
942
+ /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _IconButton2.default, { "aria-label": "Close", onClick: onClose, edge: "end", size: "small", children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _Close2.default, { fontSize: "small" }) })
943
+ ] })
944
+ ]
945
+ }
946
+ ),
947
+ hideHeader && /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
948
+ _IconButton2.default,
949
+ {
950
+ "aria-label": "Close",
951
+ onClick: onClose,
952
+ size: "small",
953
+ sx: {
954
+ position: "absolute",
955
+ top: 12,
956
+ right: 12,
957
+ zIndex: 2,
958
+ bgcolor: "background.paper",
959
+ boxShadow: 1,
960
+ "&:hover": { bgcolor: "background.paper" }
961
+ },
962
+ children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _Close2.default, { fontSize: "small" })
963
+ }
964
+ ),
965
+ /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _Box2.default, { sx: { flex: 1, overflow: "auto", minHeight: 0 }, children })
966
+ ]
967
+ }
968
+ );
969
+ }
970
+
971
+ // src/components/layout/SplitDialogContent.tsx
972
+
973
+
974
+
975
+ var SplitDialogContent = React.default.forwardRef(
976
+ function SplitDialogContent2({ left, right, rightWidth = 320, collapseBelow = 860, sx }, ref) {
977
+ return /* @__PURE__ */ _jsxruntime.jsxs.call(void 0,
978
+ _Box2.default,
979
+ {
980
+ ref,
981
+ sx: {
982
+ display: "grid",
983
+ gridTemplateColumns: `1fr ${rightWidth}px`,
984
+ gap: "28px",
985
+ // Right padding reserves room for the floating close button on PanelDialog.
986
+ padding: "28px 56px 36px 36px",
987
+ overflowY: "auto",
988
+ [`@media (max-width: ${collapseBelow}px)`]: {
989
+ gridTemplateColumns: "1fr",
990
+ padding: "22px 56px 28px 22px"
991
+ },
992
+ ...sx
993
+ },
994
+ children: [
995
+ /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _Box2.default, { sx: { display: "flex", flexDirection: "column", gap: "22px", minWidth: 0 }, children: left }),
996
+ /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _Box2.default, { component: "aside", sx: { display: "flex", flexDirection: "column", gap: "14px" }, children: right })
997
+ ]
998
+ }
999
+ );
1000
+ }
1001
+ );
1002
+
1003
+ // src/components/layout/List.tsx
1004
+
1005
+ var _List = require('@mui/material/List'); var _List2 = _interopRequireDefault(_List);
1006
+ var _ListItem = require('@mui/material/ListItem'); var _ListItem2 = _interopRequireDefault(_ListItem);
1007
+ var _ListItemText = require('@mui/material/ListItemText'); var _ListItemText2 = _interopRequireDefault(_ListItemText);
1008
+ var _ListItemIcon = require('@mui/material/ListItemIcon'); var _ListItemIcon2 = _interopRequireDefault(_ListItemIcon);
1009
+ var _ListItemSecondaryAction = require('@mui/material/ListItemSecondaryAction'); var _ListItemSecondaryAction2 = _interopRequireDefault(_ListItemSecondaryAction);
1010
+
1011
+
1012
+ var List = React.default.forwardRef(function List2(props, ref) {
1013
+ return /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _List2.default, { ref, ...props });
1014
+ });
1015
+ var StyledListItem = _styles.styled.call(void 0, _ListItem2.default, {
1016
+ shouldForwardProp: (prop) => prop !== "hoverable"
1017
+ })(({ hoverable = true, theme }) => ({
1018
+ border: `1px solid ${theme.palette.grey[200]}`,
1019
+ borderRadius: 8,
1020
+ marginBottom: 8,
1021
+ ...hoverable && {
1022
+ "&:hover": {
1023
+ backgroundColor: theme.palette.grey[50]
1024
+ }
1025
+ }
1026
+ }));
1027
+ var ListItem = React.default.forwardRef(function ListItem2({ primary, secondary, icon, action, hoverable = true, children, ...props }, ref) {
1028
+ return /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, StyledListItem, { ref, hoverable, ...props, children: [
1029
+ icon && /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _ListItemIcon2.default, { children: icon }),
1030
+ (primary || secondary) && /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
1031
+ _ListItemText2.default,
1032
+ {
1033
+ primary,
1034
+ secondary
1035
+ }
1036
+ ),
1037
+ children,
1038
+ action && action
1039
+ ] });
1040
+ });
1041
+
1042
+ // src/components/layout/Avatar.tsx
1043
+
1044
+ var _Avatar = require('@mui/material/Avatar'); var _Avatar2 = _interopRequireDefault(_Avatar);
1045
+
1046
+
1047
+ var sizeMap = {
1048
+ small: 32,
1049
+ medium: 40,
1050
+ large: 56
1051
+ };
1052
+ var StyledAvatar = _styles.styled.call(void 0, _Avatar2.default, {
1053
+ shouldForwardProp: (prop) => prop !== "avatarSize"
1054
+ })(({ avatarSize = 40, theme }) => ({
1055
+ width: avatarSize,
1056
+ height: avatarSize,
1057
+ backgroundColor: theme.palette.primary.main,
1058
+ color: theme.palette.primary.contrastText,
1059
+ fontWeight: 600
1060
+ }));
1061
+ var Avatar = React.default.forwardRef(function Avatar2({ size = "medium", ...props }, ref) {
1062
+ const avatarSize = typeof size === "number" ? size : sizeMap[size];
1063
+ return /* @__PURE__ */ _jsxruntime.jsx.call(void 0, StyledAvatar, { ref, avatarSize, ...props });
1064
+ });
1065
+
1066
+ // src/components/layout/Table.tsx
1067
+
1068
+ var _Table = require('@mui/material/Table'); var _Table2 = _interopRequireDefault(_Table);
1069
+ var _TableBody = require('@mui/material/TableBody'); var _TableBody2 = _interopRequireDefault(_TableBody);
1070
+ var _TableCell = require('@mui/material/TableCell'); var _TableCell2 = _interopRequireDefault(_TableCell);
1071
+ var _TableContainer = require('@mui/material/TableContainer'); var _TableContainer2 = _interopRequireDefault(_TableContainer);
1072
+ var _TableHead = require('@mui/material/TableHead'); var _TableHead2 = _interopRequireDefault(_TableHead);
1073
+ var _TableRow = require('@mui/material/TableRow'); var _TableRow2 = _interopRequireDefault(_TableRow);
1074
+ var _TableSortLabel = require('@mui/material/TableSortLabel'); var _TableSortLabel2 = _interopRequireDefault(_TableSortLabel);
1075
+
1076
+
1077
+ var StyledTableContainer = _styles.styled.call(void 0, (0, _TableContainer2.default))(({ theme }) => ({
1078
+ borderRadius: 8,
1079
+ border: `1px solid ${theme.palette.grey[200]}`
1080
+ }));
1081
+ var StyledTableHead = _styles.styled.call(void 0, (0, _TableHead2.default))(({ theme }) => ({
1082
+ backgroundColor: theme.palette.grey[50],
1083
+ "& .MuiTableCell-head": {
1084
+ fontWeight: 600,
1085
+ color: theme.palette.text.primary
1086
+ }
1087
+ }));
1088
+ var Table = React.default.forwardRef(function Table2({ stickyHeader = false, children, ...props }, ref) {
1089
+ return /* @__PURE__ */ _jsxruntime.jsx.call(void 0, StyledTableContainer, { children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _Table2.default, { ref, stickyHeader, ...props, children }) });
1090
+ });
1091
+ var TableHeader = React.default.forwardRef(
1092
+ function TableHeader2({ columns, orderBy, order = "asc", onSort }, ref) {
1093
+ return /* @__PURE__ */ _jsxruntime.jsx.call(void 0, StyledTableHead, { ref, children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _TableRow2.default, { children: columns.map((column) => /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _TableCell2.default, { align: column.align || "left", children: column.sortable && onSort ? /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
1094
+ _TableSortLabel2.default,
1095
+ {
1096
+ active: orderBy === column.id,
1097
+ direction: orderBy === column.id ? order : "asc",
1098
+ onClick: () => onSort(column.id),
1099
+ children: column.label
1100
+ }
1101
+ ) : column.label }, column.id)) }) });
1102
+ }
1103
+ );
1104
+
1105
+ // src/components/layout/Grid.tsx
1106
+ var _Grid2 = require('@mui/material/Grid2'); var _Grid22 = _interopRequireDefault(_Grid2);
1107
+
1108
+ // src/components/layout/Breadcrumbs.tsx
1109
+
1110
+ var _Breadcrumbs = require('@mui/material/Breadcrumbs'); var _Breadcrumbs2 = _interopRequireDefault(_Breadcrumbs);
1111
+ var _Link = require('@mui/material/Link'); var _Link2 = _interopRequireDefault(_Link);
1112
+
1113
+
1114
+
1115
+ var StyledBreadcrumbs = _styles.styled.call(void 0, (0, _Breadcrumbs2.default))(({ theme }) => ({
1116
+ "& .MuiBreadcrumbs-ol": {
1117
+ flexWrap: "nowrap"
1118
+ },
1119
+ "& .MuiBreadcrumbs-separator": {
1120
+ color: theme.palette.text.secondary
1121
+ }
1122
+ }));
1123
+ var StyledLink = _styles.styled.call(void 0, (0, _Link2.default))(({ theme }) => ({
1124
+ color: theme.palette.primary.main,
1125
+ textDecoration: "none",
1126
+ "&:hover": {
1127
+ textDecoration: "underline"
1128
+ }
1129
+ }));
1130
+ var Breadcrumbs = React.default.forwardRef(function Breadcrumbs2({ items, ...props }, ref) {
1131
+ return /* @__PURE__ */ _jsxruntime.jsx.call(void 0, StyledBreadcrumbs, { ref, ...props, children: items.map((item, index) => {
1132
+ const isLast = index === items.length - 1;
1133
+ if (isLast || !item.href && !item.onClick) {
1134
+ return /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _Typography2.default, { color: "text.primary", children: item.label }, index);
1135
+ }
1136
+ return /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
1137
+ StyledLink,
1138
+ {
1139
+ href: item.href,
1140
+ onClick: (e) => {
1141
+ if (item.onClick) {
1142
+ e.preventDefault();
1143
+ item.onClick();
1144
+ }
1145
+ },
1146
+ children: item.label
1147
+ },
1148
+ index
1149
+ );
1150
+ }) });
1151
+ });
1152
+
1153
+ // src/components/layout/Accordion.tsx
1154
+
1155
+ var _Accordion = require('@mui/material/Accordion'); var _Accordion2 = _interopRequireDefault(_Accordion);
1156
+ var _AccordionSummary = require('@mui/material/AccordionSummary'); var _AccordionSummary2 = _interopRequireDefault(_AccordionSummary);
1157
+ var _AccordionDetails = require('@mui/material/AccordionDetails'); var _AccordionDetails2 = _interopRequireDefault(_AccordionDetails);
1158
+ var _ExpandMore = require('@mui/icons-material/ExpandMore'); var _ExpandMore2 = _interopRequireDefault(_ExpandMore);
1159
+
1160
+
1161
+ var StyledAccordion = _styles.styled.call(void 0, (0, _Accordion2.default))(({ theme }) => ({
1162
+ borderRadius: 8,
1163
+ boxShadow: "none",
1164
+ border: `1px solid ${theme.palette.grey[200]}`,
1165
+ "&:before": {
1166
+ display: "none"
1167
+ },
1168
+ "&.Mui-expanded": {
1169
+ margin: 0
1170
+ }
1171
+ }));
1172
+ var StyledAccordionSummary = _styles.styled.call(void 0, (0, _AccordionSummary2.default))(({ theme }) => ({
1173
+ backgroundColor: theme.palette.grey[50],
1174
+ borderRadius: "8px 8px 0 0",
1175
+ "&.Mui-expanded": {
1176
+ borderRadius: "8px 8px 0 0"
1177
+ },
1178
+ "& .MuiAccordionSummary-content": {
1179
+ margin: "12px 0"
1180
+ }
1181
+ }));
1182
+ var StyledAccordionDetails = _styles.styled.call(void 0, (0, _AccordionDetails2.default))({
1183
+ padding: "16px"
1184
+ });
1185
+ var Accordion = React.default.forwardRef(function Accordion2({ title, children, defaultExpanded = false, ...props }, ref) {
1186
+ return /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, StyledAccordion, { ref, defaultExpanded, ...props, children: [
1187
+ /* @__PURE__ */ _jsxruntime.jsx.call(void 0, StyledAccordionSummary, { expandIcon: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _ExpandMore2.default, {}), children: title }),
1188
+ /* @__PURE__ */ _jsxruntime.jsx.call(void 0, StyledAccordionDetails, { children })
1189
+ ] });
1190
+ });
1191
+
1192
+ // src/components/layout/Paper.tsx
1193
+
1194
+ var _Paper = require('@mui/material/Paper'); var _Paper2 = _interopRequireDefault(_Paper);
1195
+
1196
+
1197
+ var StyledPaper = _styles.styled.call(void 0, (0, _Paper2.default))(({ theme }) => ({
1198
+ borderRadius: 8,
1199
+ "&.MuiPaper-elevation": {
1200
+ boxShadow: "0px 2px 8px rgba(0, 0, 0, 0.08)"
1201
+ },
1202
+ "&.MuiPaper-outlined": {
1203
+ border: `1px solid ${theme.palette.grey[200]}`,
1204
+ boxShadow: "none"
1205
+ }
1206
+ }));
1207
+ var Paper = React.default.forwardRef(function Paper2({ variant = "elevation", ...props }, ref) {
1208
+ return /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
1209
+ StyledPaper,
1210
+ {
1211
+ ref,
1212
+ variant,
1213
+ elevation: variant === "elevation" ? 1 : 0,
1214
+ ...props
1215
+ }
1216
+ );
1217
+ });
1218
+
1219
+ // src/components/layout/Divider.tsx
1220
+
1221
+
1222
+
1223
+
1224
+ var StyledDivider = _styles.styled.call(void 0, (0, _Divider2.default))(({ theme }) => ({
1225
+ borderColor: theme.palette.grey[200]
1226
+ }));
1227
+ var Divider3 = React.default.forwardRef(function Divider4(props, ref) {
1228
+ return /* @__PURE__ */ _jsxruntime.jsx.call(void 0, StyledDivider, { ref, ...props });
1229
+ });
1230
+
1231
+ // src/components/layout/Stack.tsx
1232
+
1233
+
1234
+ // src/components/layout/Box.tsx
1235
+
1236
+
1237
+ // src/components/layout/Container.tsx
1238
+ var _Container = require('@mui/material/Container'); var _Container2 = _interopRequireDefault(_Container);
1239
+
1240
+ // src/components/layout/AppBar.tsx
1241
+ var _AppBar = require('@mui/material/AppBar'); var _AppBar2 = _interopRequireDefault(_AppBar);
1242
+ var _Toolbar = require('@mui/material/Toolbar'); var _Toolbar2 = _interopRequireDefault(_Toolbar);
1243
+
1244
+
1245
+ var StyledAppBar = _styles.styled.call(void 0, _AppBar2.default, {
1246
+ shouldForwardProp: (prop) => prop !== "appBarHeight"
1247
+ })(({ appBarHeight = 64, theme }) => ({
1248
+ backgroundColor: theme.palette.background.paper,
1249
+ borderBottom: `1px solid ${theme.palette.grey[200]}`,
1250
+ boxShadow: "none",
1251
+ height: appBarHeight,
1252
+ zIndex: 1300
1253
+ }));
1254
+ var StyledToolbar = _styles.styled.call(void 0, (0, _Toolbar2.default))(({ theme }) => ({
1255
+ height: "100%",
1256
+ paddingLeft: theme.spacing(2),
1257
+ paddingRight: theme.spacing(2),
1258
+ gap: theme.spacing(2)
1259
+ }));
1260
+ var AppBar = ({ height = 64, children, ...props }) => {
1261
+ return /* @__PURE__ */ _jsxruntime.jsx.call(void 0, StyledAppBar, { position: "fixed", appBarHeight: height, ...props, children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, StyledToolbar, { children }) });
1262
+ };
1263
+
1264
+ // src/components/layout/Collapse.tsx
1265
+
1266
+ var _Collapse = require('@mui/material/Collapse'); var _Collapse2 = _interopRequireDefault(_Collapse);
1267
+
1268
+ var Collapse = React.default.forwardRef(function Collapse2(props, ref) {
1269
+ return /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _Collapse2.default, { ref, ...props });
1270
+ });
1271
+
1272
+ // src/components/layout/EntityHeader/EntityHeader.tsx
1273
+
1274
+
1275
+
1276
+
1277
+
1278
+ var _MoreHoriz = require('@mui/icons-material/MoreHoriz'); var _MoreHoriz2 = _interopRequireDefault(_MoreHoriz);
1279
+
1280
+ var EntityHeader = React.default.forwardRef(
1281
+ function EntityHeader2({
1282
+ title,
1283
+ subtitle,
1284
+ role,
1285
+ id,
1286
+ primaryAction,
1287
+ startActions,
1288
+ endActions,
1289
+ onCopyId,
1290
+ onMoreOptions,
1291
+ headingLevel = "h2",
1292
+ divider = true
1293
+ }, ref) {
1294
+ const getPrimaryActionLabel = () => {
1295
+ if (!primaryAction) return "";
1296
+ const { label, count } = primaryAction;
1297
+ return count !== void 0 ? `${label} (${count})` : label;
1298
+ };
1299
+ return /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, _Box2.default, { ref, children: [
1300
+ /* @__PURE__ */ _jsxruntime.jsxs.call(void 0,
1301
+ _Box2.default,
1302
+ {
1303
+ sx: {
1304
+ display: "flex",
1305
+ alignItems: "center",
1306
+ justifyContent: "space-between",
1307
+ px: 3,
1308
+ py: 2,
1309
+ gap: 1
1310
+ },
1311
+ children: [
1312
+ /* @__PURE__ */ _jsxruntime.jsxs.call(void 0,
1313
+ _Box2.default,
1314
+ {
1315
+ sx: {
1316
+ display: "flex",
1317
+ alignItems: "center",
1318
+ gap: 1,
1319
+ flexWrap: "wrap"
1320
+ },
1321
+ children: [
1322
+ /* @__PURE__ */ _jsxruntime.jsxs.call(void 0,
1323
+ _Box2.default,
1324
+ {
1325
+ sx: {
1326
+ display: "flex",
1327
+ flexDirection: "column",
1328
+ gap: 0.5
1329
+ },
1330
+ children: [
1331
+ /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
1332
+ _Typography2.default,
1333
+ {
1334
+ component: headingLevel,
1335
+ sx: {
1336
+ fontSize: "16px",
1337
+ fontWeight: 500,
1338
+ lineHeight: "24px",
1339
+ letterSpacing: "0.15px",
1340
+ color: _chunk72TQ56EPjs.deploymentSurfaceTokens.textPrimary
1341
+ },
1342
+ children: title
1343
+ }
1344
+ ),
1345
+ subtitle && /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
1346
+ _Typography2.default,
1347
+ {
1348
+ variant: "body2",
1349
+ sx: {
1350
+ fontSize: "11px",
1351
+ fontWeight: 500,
1352
+ lineHeight: "16px",
1353
+ letterSpacing: "0.5px",
1354
+ color: _chunk72TQ56EPjs.deploymentSurfaceTokens.textSecondary
1355
+ },
1356
+ children: subtitle
1357
+ }
1358
+ )
1359
+ ]
1360
+ }
1361
+ ),
1362
+ role && /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkPFZZJZ64js.RoleBadge, { label: role, color: "primary", size: "small" }),
1363
+ id && /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkPFZZJZ64js.IDBlock, { id, label: "ID", entityType: "entity", onCopy: onCopyId })
1364
+ ]
1365
+ }
1366
+ ),
1367
+ /* @__PURE__ */ _jsxruntime.jsxs.call(void 0,
1368
+ _Box2.default,
1369
+ {
1370
+ sx: {
1371
+ display: "flex",
1372
+ alignItems: "center",
1373
+ gap: 1,
1374
+ flexShrink: 0
1375
+ },
1376
+ children: [
1377
+ startActions,
1378
+ primaryAction && /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
1379
+ _chunkLVJSKRX3js.Button,
1380
+ {
1381
+ variant: "primary",
1382
+ startIcon: primaryAction.icon,
1383
+ onClick: primaryAction.onClick,
1384
+ sx: {
1385
+ textTransform: "capitalize"
1386
+ },
1387
+ children: getPrimaryActionLabel()
1388
+ }
1389
+ ),
1390
+ endActions,
1391
+ onMoreOptions && /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
1392
+ _IconButton2.default,
1393
+ {
1394
+ onClick: onMoreOptions,
1395
+ size: "small",
1396
+ "aria-label": "More options",
1397
+ sx: {
1398
+ padding: "8px",
1399
+ border: `1px solid ${_chunk72TQ56EPjs.deploymentSurfaceTokens.strokeOutside}`,
1400
+ borderRadius: "8px",
1401
+ "&:hover": {
1402
+ backgroundColor: _chunk72TQ56EPjs.deploymentSurfaceTokens.hoverOverlay,
1403
+ borderColor: _chunk72TQ56EPjs.deploymentSurfaceTokens.borderDefault
1404
+ }
1405
+ },
1406
+ children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
1407
+ _MoreHoriz2.default,
1408
+ {
1409
+ sx: {
1410
+ fontSize: "20px",
1411
+ color: _chunk72TQ56EPjs.deploymentSurfaceTokens.textSecondary
1412
+ }
1413
+ }
1414
+ )
1415
+ }
1416
+ )
1417
+ ]
1418
+ }
1419
+ )
1420
+ ]
1421
+ }
1422
+ ),
1423
+ divider && /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
1424
+ _Divider2.default,
1425
+ {
1426
+ sx: {
1427
+ borderColor: _chunk72TQ56EPjs.deploymentSurfaceTokens.strokeOutside
1428
+ }
1429
+ }
1430
+ )
1431
+ ] });
1432
+ }
1433
+ );
1434
+
1435
+
1436
+
1437
+
1438
+
1439
+
1440
+
1441
+
1442
+
1443
+
1444
+
1445
+
1446
+
1447
+
1448
+
1449
+
1450
+
1451
+
1452
+
1453
+
1454
+
1455
+
1456
+
1457
+
1458
+
1459
+
1460
+
1461
+
1462
+
1463
+
1464
+
1465
+
1466
+
1467
+
1468
+
1469
+
1470
+
1471
+ exports.Logo = Logo; exports.Dialog = Dialog; exports.KpiCard = KpiCard; exports.AgentAvatar = AgentAvatar; exports.NumberedList = NumberedList; exports.resolveDrawerWidth = resolveDrawerWidth; exports.Drawer = Drawer; exports.MetaField = MetaField; exports.ScrollableRow = ScrollableRow; exports.SectionRow = SectionRow; exports.GRADIENT_PALETTE_COUNT = GRADIENT_PALETTE_COUNT; exports.GradientSurface = GradientSurface; exports.DefinitionRow = DefinitionRow; exports.PanelDialog = PanelDialog; exports.SplitDialogContent = SplitDialogContent; exports.ListItemText = _ListItemText2.default; exports.ListItemIcon = _ListItemIcon2.default; exports.ListItemSecondaryAction = _ListItemSecondaryAction2.default; exports.List = List; exports.ListItem = ListItem; exports.Avatar = Avatar; exports.Table = Table; exports.TableHeader = TableHeader; exports.default = _Grid22.default; exports.Breadcrumbs = Breadcrumbs; exports.Accordion = Accordion; exports.Paper = Paper; exports.Divider = Divider3; exports.default2 = _Stack2.default; exports.default3 = _Box2.default; exports.default4 = _Container2.default; exports.Toolbar = _Toolbar2.default; exports.AppBar = AppBar; exports.Collapse = Collapse; exports.EntityHeader = EntityHeader;
1472
+ //# sourceMappingURL=chunk-GTBKQXXI.js.map