@hybridcore/ui 1.6.20 → 1.6.21

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.
@@ -1,29 +1,29 @@
1
- import { jsx as e, jsxs as n, Fragment as u } from "react/jsx-runtime";
2
- import { Stack as r, Skeleton as c } from "@mui/material";
3
- import { MetricChart as x } from "./MetricChart.js";
4
- import { useMetricCardLogic as j } from "./logic.js";
5
- import { MetricCardRoot as m, MetricCardValue as z, MetricCardSecondValue as V, MetricCardTrendContainer as k, MetricCardLabel as w, MetricCardPanel as P, MetricCardDescription as f, MetricCardSideChart as L, MetricCardCornerIconContainer as A, MetricCardIconContainer as v, MetricCardContent as D, MetricCardChartContainer as F } from "./styled.js";
6
- const G = (t) => {
7
- const { state: M } = j(t), {
8
- ownerState: i,
1
+ import { jsx as e, jsxs as i, Fragment as m } from "react/jsx-runtime";
2
+ import { Stack as a, Skeleton as l, Tooltip as c } from "@mui/material";
3
+ import { MetricChart as w } from "./MetricChart.js";
4
+ import { useMetricCardLogic as z } from "./logic.js";
5
+ import { MetricCardRoot as f, MetricCardValue as V, MetricCardSecondValue as k, MetricCardTrendContainer as P, MetricCardLabel as v, MetricCardPanel as W, MetricCardDescription as M, MetricCardSideChart as L, MetricCardCornerIconContainer as A, MetricCardIconContainer as y, MetricCardContent as D, MetricCardChartContainer as F } from "./styled.js";
6
+ const H = (t) => {
7
+ const { state: S } = z(t), {
8
+ ownerState: n,
9
9
  layout: d,
10
- calculatedValue: y,
11
- calculatedSecondValue: l,
12
- calculatedChange: h,
13
- TrendIcon: S,
14
- Icon: a,
10
+ calculatedValue: o,
11
+ calculatedSecondValue: h,
12
+ calculatedChange: s,
13
+ TrendIcon: b,
14
+ Icon: r,
15
15
  showCornerIcon: I,
16
- showSideIcon: o,
17
- iconPosition: s,
18
- snapshotPayload: b
19
- } = M, C = !!t.showChart && !!t.chartType && (t.value ?? []).length >= 2, T = (t.showChange || t.showTrend) && h !== "—";
16
+ showSideIcon: C,
17
+ iconPosition: x,
18
+ snapshotPayload: T
19
+ } = S, g = !!t.showChart && !!t.chartType && (t.value ?? []).length >= 2, j = (t.showChange || t.showTrend) && s !== "—";
20
20
  if (t.loading)
21
- return /* @__PURE__ */ e(m, { ownerState: i, sx: t.sx, children: /* @__PURE__ */ n(r, { spacing: 1, children: [
22
- /* @__PURE__ */ e(c, { variant: "text", width: "60%" }),
23
- /* @__PURE__ */ e(c, { variant: "rectangular", height: 40, width: "40%" }),
24
- /* @__PURE__ */ e(c, { variant: "text", width: "80%" }),
21
+ return /* @__PURE__ */ e(f, { ownerState: n, sx: t.sx, children: /* @__PURE__ */ i(a, { spacing: 1, children: [
22
+ /* @__PURE__ */ e(l, { variant: "text", width: "60%" }),
23
+ /* @__PURE__ */ e(l, { variant: "rectangular", height: 40, width: "40%" }),
24
+ /* @__PURE__ */ e(l, { variant: "text", width: "80%" }),
25
25
  t.showChart && /* @__PURE__ */ e(
26
- c,
26
+ l,
27
27
  {
28
28
  variant: "rectangular",
29
29
  height: 40,
@@ -32,40 +32,50 @@ const G = (t) => {
32
32
  }
33
33
  )
34
34
  ] }) });
35
- const g = /* @__PURE__ */ n(
36
- r,
35
+ const u = /* @__PURE__ */ i(
36
+ a,
37
37
  {
38
38
  direction: "row",
39
39
  alignItems: "center",
40
40
  spacing: 1,
41
41
  flexWrap: d === "panel" ? "nowrap" : "wrap",
42
+ sx: { minWidth: 0 },
42
43
  children: [
43
- /* @__PURE__ */ n(r, { direction: "row", alignItems: "baseline", spacing: 0.5, children: [
44
- /* @__PURE__ */ e(z, { variant: "h4", ownerState: i, children: y }),
45
- l && /* @__PURE__ */ e(V, { variant: "h5", ownerState: i, children: l })
46
- ] }),
47
- T && /* @__PURE__ */ n(k, { ownerState: i, children: [
48
- d === "overlay" && t.showTrend && /* @__PURE__ */ e(S, { size: 16 }),
49
- t.showChange && h
44
+ /* @__PURE__ */ i(
45
+ a,
46
+ {
47
+ direction: "row",
48
+ alignItems: "baseline",
49
+ spacing: 0.5,
50
+ sx: { minWidth: 0 },
51
+ children: [
52
+ /* @__PURE__ */ e(c, { title: o, children: /* @__PURE__ */ e(V, { variant: "h4", ownerState: n, children: o }) }),
53
+ h && /* @__PURE__ */ e(c, { title: h, children: /* @__PURE__ */ e(k, { variant: "h5", ownerState: n, children: h }) })
54
+ ]
55
+ }
56
+ ),
57
+ j && /* @__PURE__ */ i(P, { ownerState: n, children: [
58
+ d === "overlay" && t.showTrend && /* @__PURE__ */ e(b, { size: 16 }),
59
+ t.showChange && s
50
60
  ] })
51
61
  ]
52
62
  }
53
63
  );
54
64
  return /* @__PURE__ */ e(
55
- m,
65
+ f,
56
66
  {
57
- ownerState: i,
67
+ ownerState: n,
58
68
  sx: t.sx,
59
- "data-snapshot": b,
60
- children: d === "panel" ? /* @__PURE__ */ n(u, { children: [
61
- /* @__PURE__ */ e(w, { variant: "body2", children: t.label }),
62
- /* @__PURE__ */ n(P, { children: [
63
- /* @__PURE__ */ n(r, { justifyContent: "center", spacing: 0.5, sx: { flexShrink: 0 }, children: [
64
- g,
65
- t.description && /* @__PURE__ */ e(f, { variant: "caption", children: t.description })
69
+ "data-snapshot": T,
70
+ children: d === "panel" ? /* @__PURE__ */ i(m, { children: [
71
+ /* @__PURE__ */ e(c, { title: t.label, children: /* @__PURE__ */ e(v, { variant: "body2", children: t.label }) }),
72
+ /* @__PURE__ */ i(W, { children: [
73
+ /* @__PURE__ */ i(a, { justifyContent: "center", spacing: 0.5, sx: { flexShrink: 0 }, children: [
74
+ u,
75
+ t.description && /* @__PURE__ */ e(c, { title: t.description, children: /* @__PURE__ */ e(M, { variant: "caption", children: t.description }) })
66
76
  ] }),
67
- C && /* @__PURE__ */ e(L, { children: /* @__PURE__ */ e(
68
- x,
77
+ g && /* @__PURE__ */ e(L, { children: /* @__PURE__ */ e(
78
+ w,
69
79
  {
70
80
  type: t.chartType,
71
81
  data: t.value,
@@ -74,41 +84,41 @@ const G = (t) => {
74
84
  }
75
85
  ) })
76
86
  ] })
77
- ] }) : /* @__PURE__ */ n(u, { children: [
78
- I && a && /* @__PURE__ */ e(A, { ownerState: i, children: /* @__PURE__ */ e(a, { size: 24 }) }),
79
- /* @__PURE__ */ n(
80
- r,
87
+ ] }) : /* @__PURE__ */ i(m, { children: [
88
+ I && r && /* @__PURE__ */ e(A, { ownerState: n, children: /* @__PURE__ */ e(r, { size: 24 }) }),
89
+ /* @__PURE__ */ i(
90
+ a,
81
91
  {
82
92
  direction: "row",
83
93
  justifyContent: "space-between",
84
94
  alignItems: "flex-start",
85
95
  sx: { flex: 1 },
86
96
  children: [
87
- o && a && s === "left" && /* @__PURE__ */ e(v, { ownerState: i, children: /* @__PURE__ */ e(a, { sx: { fontSize: 24 } }) }),
88
- /* @__PURE__ */ n(D, { children: [
89
- /* @__PURE__ */ e(w, { variant: "body2", children: t.label }),
90
- g
97
+ C && r && x === "left" && /* @__PURE__ */ e(y, { ownerState: n, children: /* @__PURE__ */ e(r, { sx: { fontSize: 24 } }) }),
98
+ /* @__PURE__ */ i(D, { children: [
99
+ /* @__PURE__ */ e(c, { title: t.label, children: /* @__PURE__ */ e(v, { variant: "body2", children: t.label }) }),
100
+ u
91
101
  ] }),
92
- o && a && s === "right" && /* @__PURE__ */ e(v, { ownerState: i, children: /* @__PURE__ */ e(a, { sx: { fontSize: 24 } }) })
102
+ C && r && x === "right" && /* @__PURE__ */ e(y, { ownerState: n, children: /* @__PURE__ */ e(r, { sx: { fontSize: 24 } }) })
93
103
  ]
94
104
  }
95
105
  ),
96
- /* @__PURE__ */ n(
97
- r,
106
+ /* @__PURE__ */ i(
107
+ a,
98
108
  {
99
109
  direction: { xs: "column-reverse", sm: "column" },
100
110
  spacing: 1,
101
111
  sx: { width: "100%", mt: 2 },
102
112
  children: [
103
- t.description && /* @__PURE__ */ e(
104
- f,
113
+ t.description && /* @__PURE__ */ e(c, { title: t.description, children: /* @__PURE__ */ e(
114
+ M,
105
115
  {
106
116
  variant: "caption",
107
117
  sx: { textAlign: { xs: "center", sm: "left" } },
108
118
  children: t.description
109
119
  }
110
- ),
111
- C && /* @__PURE__ */ e(F, { children: /* @__PURE__ */ e(x, { type: t.chartType, data: t.value }) })
120
+ ) }),
121
+ g && /* @__PURE__ */ e(F, { children: /* @__PURE__ */ e(w, { type: t.chartType, data: t.value }) })
112
122
  ]
113
123
  }
114
124
  )
@@ -117,5 +127,5 @@ const G = (t) => {
117
127
  );
118
128
  };
119
129
  export {
120
- G as MetricCard
130
+ H as MetricCard
121
131
  };
@@ -1,25 +1,25 @@
1
- import { styled as i, alpha as g, Stack as C, Typography as c } from "@mui/material";
2
- import { Widget as u } from "../widget/styled.js";
3
- import { variantColor as l, resolvePaletteColor as d, trendColor as f } from "./helpers.js";
1
+ import { styled as t, alpha as g, Stack as C, Typography as l } from "@mui/material";
2
+ import { Widget as f } from "../widget/styled.js";
3
+ import { variantColor as s, resolvePaletteColor as d, trendColor as u } from "./helpers.js";
4
4
  const e = {
5
5
  shouldForwardProp: (o) => o !== "ownerState"
6
- }, v = i(u.Root, {
6
+ }, M = t(f.Root, {
7
7
  name: "HCMetricCard",
8
8
  slot: "Root",
9
9
  ...e
10
- })(({ theme: o, ownerState: n }) => {
11
- const a = l(o, n.variant), r = n.layout === "panel";
12
- let t;
13
- return a ? t = g(a, 0.05) : r && (t = o.palette.background.default), {
10
+ })(({ theme: o, ownerState: i }) => {
11
+ const n = s(o, i.variant), a = i.layout === "panel";
12
+ let r;
13
+ return n ? r = g(n, 0.05) : a && (r = o.palette.background.default), {
14
14
  position: "relative",
15
15
  overflow: "hidden",
16
16
  padding: o.spacing(1.5, 2),
17
- ...t && { backgroundColor: t },
17
+ ...r && { backgroundColor: r },
18
18
  [o.breakpoints.down("md")]: {
19
19
  padding: o.spacing(1.5)
20
20
  }
21
21
  };
22
- }), y = i(C, {
22
+ }), w = t(C, {
23
23
  name: "HCMetricCard",
24
24
  slot: "Content"
25
25
  })(() => ({
@@ -27,64 +27,79 @@ const e = {
27
27
  width: "100%",
28
28
  minWidth: 0,
29
29
  zIndex: 1
30
- })), k = i(c, {
30
+ })), m = t(l, {
31
31
  name: "HCMetricCard",
32
32
  slot: "Label"
33
33
  })(({ theme: o }) => ({
34
34
  color: o.palette.text.secondary,
35
35
  marginBottom: o.spacing(0.5),
36
- fontWeight: 500
37
- })), m = i(c, {
36
+ fontWeight: 500,
37
+ // Widgets live in a resizable grid with no character limit — clip to one line
38
+ // so a long label never wraps into a messy multi-row block. Full text on hover.
39
+ whiteSpace: "nowrap",
40
+ overflow: "hidden",
41
+ textOverflow: "ellipsis",
42
+ maxWidth: "100%",
43
+ minWidth: 0
44
+ })), y = t(l, {
38
45
  name: "HCMetricCard",
39
46
  slot: "Value",
40
47
  ...e
41
- })(({ theme: o, ownerState: n }) => {
42
- const a = d(o, n.calculatedValueColor), r = d(o, n.calculatedValueBg);
48
+ })(({ theme: o, ownerState: i }) => {
49
+ const n = d(o, i.calculatedValueColor), a = d(o, i.calculatedValueBg);
43
50
  return {
44
- color: a ?? l(o, n.variant) ?? o.palette.text.primary,
51
+ color: n ?? s(o, i.variant) ?? o.palette.text.primary,
45
52
  fontWeight: 500,
46
53
  marginBottom: o.spacing(0.5),
47
54
  whiteSpace: "nowrap",
48
- ...r && {
49
- backgroundColor: r,
55
+ overflow: "hidden",
56
+ textOverflow: "ellipsis",
57
+ maxWidth: "100%",
58
+ minWidth: 0,
59
+ ...a && {
60
+ backgroundColor: a,
50
61
  borderRadius: o.shape.borderRadius,
51
62
  padding: o.spacing(0, 0.75)
52
63
  },
53
64
  [o.breakpoints.down("md")]: { fontSize: "1.35rem" },
54
65
  [o.breakpoints.up("md")]: { fontSize: "2rem" }
55
66
  };
56
- }), S = i(c, {
67
+ }), W = t(l, {
57
68
  name: "HCMetricCard",
58
69
  slot: "SecondValue",
59
70
  ...e
60
- })(({ theme: o, ownerState: n }) => {
61
- const a = d(o, n.calculatedSecondValueColor), r = d(o, n.calculatedSecondValueBg);
71
+ })(({ theme: o, ownerState: i }) => {
72
+ const n = d(o, i.calculatedSecondValueColor), a = d(o, i.calculatedSecondValueBg);
62
73
  return {
63
- color: a ?? o.palette.text.secondary,
74
+ color: n ?? o.palette.text.secondary,
64
75
  fontWeight: 400,
65
76
  whiteSpace: "nowrap",
66
- ...r && {
67
- backgroundColor: r,
77
+ overflow: "hidden",
78
+ textOverflow: "ellipsis",
79
+ maxWidth: "100%",
80
+ minWidth: 0,
81
+ ...a && {
82
+ backgroundColor: a,
68
83
  borderRadius: o.shape.borderRadius,
69
84
  padding: o.spacing(0, 0.75)
70
85
  },
71
86
  [o.breakpoints.down("md")]: { fontSize: "0.95rem" },
72
87
  [o.breakpoints.up("md")]: { fontSize: "1.25rem" }
73
88
  };
74
- }), H = i("div", {
89
+ }), S = t("div", {
75
90
  name: "HCMetricCard",
76
91
  slot: "TrendContainer",
77
92
  ...e
78
- })(({ theme: o, ownerState: n }) => {
79
- const a = f(o, n.calculatedTrend), r = n.layout === "panel";
93
+ })(({ theme: o, ownerState: i }) => {
94
+ const n = u(o, i.calculatedTrend), a = i.layout === "panel";
80
95
  return {
81
96
  display: "inline-flex",
82
97
  alignItems: "center",
83
98
  gap: o.spacing(0.5),
84
99
  fontWeight: 500,
85
- color: a,
86
- ...r ? {
87
- backgroundColor: g(a, 0.14),
100
+ color: n,
101
+ ...a ? {
102
+ backgroundColor: g(n, 0.14),
88
103
  borderRadius: 999,
89
104
  padding: o.spacing(0.25, 1),
90
105
  fontSize: "0.8125rem",
@@ -97,45 +112,49 @@ const e = {
97
112
  }
98
113
  }
99
114
  };
100
- }), I = i(c, {
115
+ }), h = t(l, {
101
116
  name: "HCMetricCard",
102
117
  slot: "Description"
103
118
  })(({ theme: o }) => ({
104
119
  color: o.palette.text.secondary,
105
- display: "block",
106
120
  position: "relative",
107
- zIndex: 1
108
- })), R = i("div", {
121
+ zIndex: 1,
122
+ whiteSpace: "nowrap",
123
+ overflow: "hidden",
124
+ textOverflow: "ellipsis",
125
+ maxWidth: "100%",
126
+ minWidth: 0
127
+ })), k = t("div", {
109
128
  name: "HCMetricCard",
110
129
  slot: "Icon",
111
130
  ...e
112
- })(({ theme: o, ownerState: n }) => ({
131
+ })(({ theme: o, ownerState: i }) => ({
113
132
  display: "flex",
114
133
  alignItems: "center",
115
134
  justifyContent: "center",
116
- color: l(o, n.variant) ?? o.palette.text.secondary,
117
- marginRight: n.iconPosition === "left" ? o.spacing(2) : 0,
118
- marginLeft: n.iconPosition === "right" ? o.spacing(2) : 0,
135
+ color: s(o, i.variant) ?? o.palette.text.secondary,
136
+ marginRight: i.iconPosition === "left" ? o.spacing(2) : 0,
137
+ marginLeft: i.iconPosition === "right" ? o.spacing(2) : 0,
119
138
  [o.breakpoints.down("sm")]: {
120
139
  position: "absolute",
121
140
  top: o.spacing(2),
122
141
  left: o.spacing(2),
123
142
  margin: 0
124
143
  }
125
- })), w = i("div", {
144
+ })), H = t("div", {
126
145
  name: "HCMetricCard",
127
146
  slot: "CornerIcon",
128
147
  ...e
129
- })(({ theme: o, ownerState: n }) => {
130
- var s, p;
131
- const a = {}, r = (s = n.iconPosition) != null && s.startsWith("top") ? "top" : "bottom", t = (p = n.iconPosition) != null && p.endsWith("left") ? "left" : "right";
132
- return a[r] = o.spacing(2), a[t] = o.spacing(2), {
148
+ })(({ theme: o, ownerState: i }) => {
149
+ var c, p;
150
+ const n = {}, a = (c = i.iconPosition) != null && c.startsWith("top") ? "top" : "bottom", r = (p = i.iconPosition) != null && p.endsWith("left") ? "left" : "right";
151
+ return n[a] = o.spacing(2), n[r] = o.spacing(2), {
133
152
  position: "absolute",
134
- ...a,
135
- color: l(o, n.variant) ?? o.palette.text.secondary,
153
+ ...n,
154
+ color: s(o, i.variant) ?? o.palette.text.secondary,
136
155
  zIndex: 2
137
156
  };
138
- }), z = i("div", {
157
+ }), I = t("div", {
139
158
  name: "HCMetricCard",
140
159
  slot: "Chart"
141
160
  })(({ theme: o }) => ({
@@ -148,7 +167,7 @@ const e = {
148
167
  alignItems: "flex-end",
149
168
  overflow: "hidden",
150
169
  borderRadius: o.shape.borderRadius
151
- })), P = i("div", {
170
+ })), R = t("div", {
152
171
  name: "HCMetricCard",
153
172
  slot: "Panel"
154
173
  })(({ theme: o }) => ({
@@ -165,7 +184,7 @@ const e = {
165
184
  backgroundColor: o.palette.background.paper,
166
185
  boxShadow: o.shadows[1],
167
186
  overflow: "hidden"
168
- })), W = i("div", {
187
+ })), z = t("div", {
169
188
  name: "HCMetricCard",
170
189
  slot: "SideChart"
171
190
  })(() => ({
@@ -178,16 +197,16 @@ const e = {
178
197
  alignItems: "flex-end"
179
198
  }));
180
199
  export {
181
- z as MetricCardChartContainer,
182
- y as MetricCardContent,
183
- w as MetricCardCornerIconContainer,
184
- I as MetricCardDescription,
185
- R as MetricCardIconContainer,
186
- k as MetricCardLabel,
187
- P as MetricCardPanel,
188
- v as MetricCardRoot,
189
- S as MetricCardSecondValue,
190
- W as MetricCardSideChart,
191
- H as MetricCardTrendContainer,
192
- m as MetricCardValue
200
+ I as MetricCardChartContainer,
201
+ w as MetricCardContent,
202
+ H as MetricCardCornerIconContainer,
203
+ h as MetricCardDescription,
204
+ k as MetricCardIconContainer,
205
+ m as MetricCardLabel,
206
+ R as MetricCardPanel,
207
+ M as MetricCardRoot,
208
+ W as MetricCardSecondValue,
209
+ z as MetricCardSideChart,
210
+ S as MetricCardTrendContainer,
211
+ y as MetricCardValue
193
212
  };
@@ -1,15 +1,15 @@
1
- import { jsx as t, jsxs as e, Fragment as m } from "react/jsx-runtime";
2
- import { Stack as x, Skeleton as d } from "@mui/material";
1
+ import { jsx as t, jsxs as r, Fragment as m } from "react/jsx-runtime";
2
+ import { Stack as x, Skeleton as d, Tooltip as e } from "@mui/material";
3
3
  import { useStatusIndicatorLogic as v } from "./logic.js";
4
- import { StatusIndicatorRoot as o, StatusIndicatorCaption as b, StatusIndicatorDescription as f, StatusIndicatorIconContainer as h, StatusIndicatorContent as g, StatusIndicatorLabel as u, StatusIndicatorValue as I, StatusIndicatorBadge as w } from "./styled.js";
5
- const j = (i) => {
6
- const { state: S } = v(i), { ownerState: n, variant: r, activeLabel: c, Icon: a } = S;
4
+ import { StatusIndicatorRoot as o, StatusIndicatorCaption as g, StatusIndicatorDescription as f, StatusIndicatorIconContainer as u, StatusIndicatorContent as w, StatusIndicatorLabel as I, StatusIndicatorValue as S, StatusIndicatorBadge as L, StatusIndicatorBadgeLabel as y } from "./styled.js";
5
+ const B = (i) => {
6
+ const { state: b } = v(i), { ownerState: n, variant: l, activeLabel: a, Icon: c } = b;
7
7
  if (i.loading)
8
- return /* @__PURE__ */ t(o, { ownerState: n, sx: i.sx, children: /* @__PURE__ */ e(
8
+ return /* @__PURE__ */ t(o, { ownerState: n, sx: i.sx, children: /* @__PURE__ */ r(
9
9
  x,
10
10
  {
11
11
  spacing: 1,
12
- alignItems: r === "prominent" ? "center" : "flex-start",
12
+ alignItems: l === "prominent" ? "center" : "flex-start",
13
13
  children: [
14
14
  /* @__PURE__ */ t(d, { variant: "text", width: "50%" }),
15
15
  /* @__PURE__ */ t(d, { variant: "circular", width: 40, height: 40 }),
@@ -17,28 +17,28 @@ const j = (i) => {
17
17
  ]
18
18
  }
19
19
  ) });
20
- const l = i.caption && /* @__PURE__ */ t(b, { variant: "caption", children: i.caption }), s = i.description && /* @__PURE__ */ t(f, { variant: "body2", children: i.description });
21
- return r === "split" ? /* @__PURE__ */ e(o, { ownerState: n, sx: i.sx, children: [
22
- a && /* @__PURE__ */ t(h, { ownerState: n, children: /* @__PURE__ */ t(a, { size: 28 }) }),
23
- /* @__PURE__ */ e(g, { children: [
24
- i.label && /* @__PURE__ */ t(u, { variant: "body2", children: i.label }),
25
- /* @__PURE__ */ t(I, { variant: "h5", ownerState: n, children: c }),
26
- l,
20
+ const h = i.caption && /* @__PURE__ */ t(e, { title: i.caption, children: /* @__PURE__ */ t(g, { variant: "caption", children: i.caption }) }), s = i.description && /* @__PURE__ */ t(e, { title: i.description, children: /* @__PURE__ */ t(f, { variant: "body2", children: i.description }) });
21
+ return l === "split" ? /* @__PURE__ */ r(o, { ownerState: n, sx: i.sx, children: [
22
+ c && /* @__PURE__ */ t(u, { ownerState: n, children: /* @__PURE__ */ t(c, { size: 28 }) }),
23
+ /* @__PURE__ */ r(w, { children: [
24
+ i.label && /* @__PURE__ */ t(e, { title: i.label, children: /* @__PURE__ */ t(I, { variant: "body2", children: i.label }) }),
25
+ /* @__PURE__ */ t(e, { title: a, children: /* @__PURE__ */ t(S, { variant: "h5", ownerState: n, children: a }) }),
26
+ h,
27
27
  s
28
28
  ] })
29
- ] }) : /* @__PURE__ */ e(o, { ownerState: n, sx: i.sx, children: [
30
- i.label && /* @__PURE__ */ t(u, { variant: "body2", children: i.label }),
31
- r === "prominent" ? /* @__PURE__ */ e(m, { children: [
32
- a && /* @__PURE__ */ t(h, { ownerState: n, children: /* @__PURE__ */ t(a, { size: 48 }) }),
33
- /* @__PURE__ */ t(I, { variant: "h4", ownerState: n, children: c })
34
- ] }) : /* @__PURE__ */ e(w, { ownerState: n, children: [
35
- a && /* @__PURE__ */ t(a, { size: 18 }),
36
- c
37
- ] }),
38
- l,
29
+ ] }) : /* @__PURE__ */ r(o, { ownerState: n, sx: i.sx, children: [
30
+ i.label && /* @__PURE__ */ t(e, { title: i.label, children: /* @__PURE__ */ t(I, { variant: "body2", children: i.label }) }),
31
+ l === "prominent" ? /* @__PURE__ */ r(m, { children: [
32
+ c && /* @__PURE__ */ t(u, { ownerState: n, children: /* @__PURE__ */ t(c, { size: 48 }) }),
33
+ /* @__PURE__ */ t(e, { title: a, children: /* @__PURE__ */ t(S, { variant: "h4", ownerState: n, children: a }) })
34
+ ] }) : /* @__PURE__ */ t(e, { title: a, children: /* @__PURE__ */ r(L, { ownerState: n, children: [
35
+ c && /* @__PURE__ */ t(c, { size: 18 }),
36
+ /* @__PURE__ */ t(y, { children: a })
37
+ ] }) }),
38
+ h,
39
39
  s
40
40
  ] });
41
41
  };
42
42
  export {
43
- j as StatusIndicator
43
+ B as StatusIndicator
44
44
  };
@@ -1,65 +1,72 @@
1
- import { styled as a, Typography as i, alpha as l } from "@mui/material";
2
- import { resolvePaletteColor as r } from "../metric-card/helpers.js";
3
- import { Widget as d } from "../widget/styled.js";
4
- const s = {
1
+ import { styled as n, Typography as r, alpha as s } from "@mui/material";
2
+ import { resolvePaletteColor as a } from "../metric-card/helpers.js";
3
+ import { Widget as c } from "../widget/styled.js";
4
+ const l = {
5
5
  shouldForwardProp: (t) => t !== "ownerState"
6
- }, C = a(d.Root, {
6
+ }, g = n(c.Root, {
7
7
  name: "HCStatusIndicator",
8
8
  slot: "Root",
9
- ...s
9
+ ...l
10
10
  })(({ theme: t, ownerState: o }) => {
11
- const n = {
11
+ const e = {
12
12
  padding: t.spacing(2),
13
13
  display: "flex",
14
14
  gap: t.spacing(0.5)
15
15
  };
16
16
  return o.variant === "prominent" ? {
17
- ...n,
17
+ ...e,
18
18
  flexDirection: "column",
19
19
  alignItems: "center",
20
20
  justifyContent: "center",
21
21
  textAlign: "center"
22
22
  } : o.variant === "split" ? {
23
- ...n,
23
+ ...e,
24
24
  flexDirection: "row",
25
25
  alignItems: "center",
26
26
  gap: t.spacing(2)
27
27
  } : {
28
- ...n,
28
+ ...e,
29
29
  flexDirection: "column",
30
30
  alignItems: "flex-start",
31
31
  justifyContent: "center"
32
32
  };
33
- }), f = a(i, {
33
+ }), x = n(r, {
34
34
  name: "HCStatusIndicator",
35
35
  slot: "Label"
36
36
  })(({ theme: t }) => ({
37
37
  color: t.palette.text.secondary,
38
- fontWeight: 500
39
- })), I = a("div", {
38
+ fontWeight: 500,
39
+ // Widgets live in a resizable grid with no character limit — clip to one line
40
+ // so long text never overflows or wraps into a messy block. Full text on hover.
41
+ whiteSpace: "nowrap",
42
+ overflow: "hidden",
43
+ textOverflow: "ellipsis",
44
+ maxWidth: "100%",
45
+ minWidth: 0
46
+ })), m = n("div", {
40
47
  name: "HCStatusIndicator",
41
48
  slot: "IconContainer",
42
- ...s
49
+ ...l
43
50
  })(({ theme: t, ownerState: o }) => {
44
- const n = r(t, o.resolvedColor) ?? t.palette.text.primary, e = {
51
+ const e = a(t, o.resolvedColor) ?? t.palette.text.primary, i = {
45
52
  display: "flex",
46
53
  alignItems: "center",
47
54
  justifyContent: "center",
48
- color: n
55
+ color: e
49
56
  };
50
57
  if (o.variant === "split") {
51
- const c = r(t, o.resolvedBackgroundColor) ?? l(n, 0.12);
58
+ const d = a(t, o.resolvedBackgroundColor) ?? s(e, 0.12);
52
59
  return {
53
- ...e,
60
+ ...i,
54
61
  flexShrink: 0,
55
62
  width: 56,
56
63
  height: 56,
57
64
  borderRadius: t.shape.borderRadius * 2,
58
- backgroundColor: c
65
+ backgroundColor: d
59
66
  };
60
67
  }
61
- return e;
62
- }), x = a("div", {
68
+ return i;
69
+ }), C = n("div", {
63
70
  name: "HCStatusIndicator",
64
71
  slot: "Content"
65
72
  })(() => ({
@@ -67,48 +74,77 @@ const s = {
67
74
  flexDirection: "column",
68
75
  minWidth: 0,
69
76
  flex: 1
70
- })), m = a(i, {
77
+ })), h = n(r, {
71
78
  name: "HCStatusIndicator",
72
79
  slot: "Value",
73
- ...s
80
+ ...l
74
81
  })(({ theme: t, ownerState: o }) => ({
75
82
  fontWeight: 600,
76
83
  lineHeight: 1.2,
77
- color: r(t, o.resolvedColor) ?? t.palette.text.primary
78
- })), y = a("div", {
84
+ color: a(t, o.resolvedColor) ?? t.palette.text.primary,
85
+ whiteSpace: "nowrap",
86
+ overflow: "hidden",
87
+ textOverflow: "ellipsis",
88
+ maxWidth: "100%",
89
+ minWidth: 0
90
+ })), I = n("div", {
79
91
  name: "HCStatusIndicator",
80
92
  slot: "Badge",
81
- ...s
93
+ ...l
82
94
  })(({ theme: t, ownerState: o }) => {
83
- const n = r(t, o.resolvedColor) ?? t.palette.text.primary, e = r(t, o.resolvedBackgroundColor) ?? l(n, 0.12);
95
+ const e = a(t, o.resolvedColor) ?? t.palette.text.primary, i = a(t, o.resolvedBackgroundColor) ?? s(e, 0.12);
84
96
  return {
85
97
  display: "inline-flex",
86
98
  alignItems: "center",
87
99
  gap: t.spacing(0.75),
88
100
  padding: t.spacing(0.5, 1.25),
89
101
  borderRadius: 999,
90
- backgroundColor: e,
91
- color: n,
92
- fontWeight: 600
102
+ backgroundColor: i,
103
+ color: e,
104
+ fontWeight: 600,
105
+ maxWidth: "100%",
106
+ overflow: "hidden",
107
+ // The icon must never shrink; only the label text ellipsizes.
108
+ "& > svg": { flexShrink: 0 }
93
109
  };
94
- }), S = a(i, {
110
+ }), v = n("span", {
111
+ name: "HCStatusIndicator",
112
+ slot: "BadgeLabel"
113
+ })(() => ({
114
+ flex: "0 1 auto",
115
+ minWidth: 0,
116
+ overflow: "hidden",
117
+ textOverflow: "ellipsis",
118
+ whiteSpace: "nowrap"
119
+ })), S = n(r, {
95
120
  name: "HCStatusIndicator",
96
121
  slot: "Caption"
97
122
  })(({ theme: t }) => ({
98
- color: t.palette.text.secondary
99
- })), v = a(i, {
123
+ color: t.palette.text.secondary,
124
+ whiteSpace: "nowrap",
125
+ overflow: "hidden",
126
+ textOverflow: "ellipsis",
127
+ maxWidth: "100%",
128
+ minWidth: 0
129
+ })), w = n(r, {
100
130
  name: "HCStatusIndicator",
101
131
  slot: "Description"
102
132
  })(({ theme: t }) => ({
103
- color: t.palette.text.secondary
133
+ color: t.palette.text.secondary,
134
+ whiteSpace: "nowrap",
135
+ overflow: "hidden",
136
+ textOverflow: "ellipsis",
137
+ maxWidth: "100%",
138
+ minWidth: 0
104
139
  }));
105
140
  export {
106
- y as StatusIndicatorBadge,
141
+ I as StatusIndicatorBadge,
142
+ v as StatusIndicatorBadgeLabel,
107
143
  S as StatusIndicatorCaption,
108
- x as StatusIndicatorContent,
109
- v as StatusIndicatorDescription,
110
- I as StatusIndicatorIconContainer,
111
- f as StatusIndicatorLabel,
112
- C as StatusIndicatorRoot,
113
- m as StatusIndicatorValue
144
+ C as StatusIndicatorContent,
145
+ w as StatusIndicatorDescription,
146
+ m as StatusIndicatorIconContainer,
147
+ x as StatusIndicatorLabel,
148
+ g as StatusIndicatorRoot,
149
+ h as StatusIndicatorValue
114
150
  };
package/dist/main.d.ts CHANGED
@@ -3649,6 +3649,7 @@ declare module "@mui/material/styles" {
3649
3649
  | "content"
3650
3650
  | "value"
3651
3651
  | "badge"
3652
+ | "badgeLabel"
3652
3653
  | "caption"
3653
3654
  | "description";
3654
3655
  }
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@hybridcore/ui",
3
3
  "description": "Hybrid Core UI Library",
4
- "version": "1.6.20",
4
+ "version": "1.6.21",
5
5
  "author": "Hybrid Core",
6
6
  "license": "ISC",
7
7
  "type": "module",