erp-pro-ui 0.1.2 → 0.1.4

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (198) hide show
  1. package/dist/animations.css +40 -0
  2. package/dist/calendar.cjs +1 -1
  3. package/dist/calendar.mjs +1 -1
  4. package/dist/card.cjs +1 -1
  5. package/dist/card.mjs +1 -1
  6. package/dist/carousel.cjs +1 -1
  7. package/dist/carousel.mjs +1 -1
  8. package/dist/catalog.cjs +6 -0
  9. package/dist/catalog.cjs.map +1 -1
  10. package/dist/catalog.d.ts +11 -1
  11. package/dist/catalog.d.ts.map +1 -1
  12. package/dist/catalog.mjs +6 -0
  13. package/dist/catalog.mjs.map +1 -1
  14. package/dist/charts.cjs +2 -1
  15. package/dist/charts.mjs +2 -2
  16. package/dist/checkbox.cjs +1 -1
  17. package/dist/checkbox.mjs +1 -1
  18. package/dist/chip.cjs +1 -1
  19. package/dist/chip.mjs +1 -1
  20. package/dist/chroma-grid.cjs +1 -1
  21. package/dist/chroma-grid.mjs +1 -1
  22. package/dist/chunks/{calendar-xrGmvukr.cjs → calendar-Cpp_Rc7T.cjs} +58 -17
  23. package/dist/chunks/calendar-Cpp_Rc7T.cjs.map +1 -0
  24. package/dist/chunks/{calendar-BarcG6x_.mjs → calendar-DrCgT_pj.mjs} +58 -17
  25. package/dist/chunks/calendar-DrCgT_pj.mjs.map +1 -0
  26. package/dist/chunks/{card-gt-HZh0h.cjs → card-C5_tFK6Q.cjs} +1 -1
  27. package/dist/chunks/{card-gt-HZh0h.cjs.map → card-C5_tFK6Q.cjs.map} +1 -1
  28. package/dist/chunks/{card-CcIF6z2H.mjs → card-Dh8wNv8N.mjs} +1 -1
  29. package/dist/chunks/{card-CcIF6z2H.mjs.map → card-Dh8wNv8N.mjs.map} +1 -1
  30. package/dist/chunks/{carousel-DJdqBVRK.mjs → carousel-BYwqI4cA.mjs} +1 -1
  31. package/dist/chunks/{carousel-DJdqBVRK.mjs.map → carousel-BYwqI4cA.mjs.map} +1 -1
  32. package/dist/chunks/{carousel-Cq5uwqQt.cjs → carousel-C1338X8h.cjs} +1 -1
  33. package/dist/chunks/{carousel-Cq5uwqQt.cjs.map → carousel-C1338X8h.cjs.map} +1 -1
  34. package/dist/chunks/{charts-DugYWvEf.mjs → charts-BYvM4TMG.mjs} +371 -117
  35. package/dist/chunks/charts-BYvM4TMG.mjs.map +1 -0
  36. package/dist/chunks/{charts-BpElnsoR.cjs → charts-DbxyHtlX.cjs} +375 -115
  37. package/dist/chunks/charts-DbxyHtlX.cjs.map +1 -0
  38. package/dist/chunks/{checkbox-yHuSw-hV.cjs → checkbox-CxOcjoGP.cjs} +1 -1
  39. package/dist/chunks/{checkbox-yHuSw-hV.cjs.map → checkbox-CxOcjoGP.cjs.map} +1 -1
  40. package/dist/chunks/{checkbox-DvwlGwWe.mjs → checkbox-Pr49U9F1.mjs} +1 -1
  41. package/dist/chunks/{checkbox-DvwlGwWe.mjs.map → checkbox-Pr49U9F1.mjs.map} +1 -1
  42. package/dist/chunks/{chip-DcBji__g.cjs → chip-B4ol1yPk.cjs} +1 -1
  43. package/dist/chunks/{chip-DcBji__g.cjs.map → chip-B4ol1yPk.cjs.map} +1 -1
  44. package/dist/chunks/{chip-BGSUmnlO.mjs → chip-DdnBLdpl.mjs} +1 -1
  45. package/dist/chunks/{chip-BGSUmnlO.mjs.map → chip-DdnBLdpl.mjs.map} +1 -1
  46. package/dist/chunks/{chroma-grid-Cdeql_2C.mjs → chroma-grid-BAo6V5A7.mjs} +1 -1
  47. package/dist/chunks/{chroma-grid-Cdeql_2C.mjs.map → chroma-grid-BAo6V5A7.mjs.map} +1 -1
  48. package/dist/chunks/{chroma-grid-9E9j1s9I.cjs → chroma-grid-CIk0dsNS.cjs} +1 -1
  49. package/dist/chunks/{chroma-grid-9E9j1s9I.cjs.map → chroma-grid-CIk0dsNS.cjs.map} +1 -1
  50. package/dist/chunks/{color-palette-BLvDnCOD.cjs → color-palette-2TuEMkAn.cjs} +1 -1
  51. package/dist/chunks/{color-palette-BLvDnCOD.cjs.map → color-palette-2TuEMkAn.cjs.map} +1 -1
  52. package/dist/chunks/{color-palette-CXlCDiZz.mjs → color-palette-euKQMWlV.mjs} +1 -1
  53. package/dist/chunks/{color-palette-CXlCDiZz.mjs.map → color-palette-euKQMWlV.mjs.map} +1 -1
  54. package/dist/chunks/{combobox-BXu3s0dt.cjs → combobox-CwGubKTt.cjs} +2 -2
  55. package/dist/chunks/combobox-CwGubKTt.cjs.map +1 -0
  56. package/dist/chunks/{combobox-CjK-qG4k.mjs → combobox-DrFmkI0F.mjs} +2 -2
  57. package/dist/chunks/combobox-DrFmkI0F.mjs.map +1 -0
  58. package/dist/chunks/{data-table-DyEQn9Yj.mjs → data-table-Bo80m7qV.mjs} +8 -8
  59. package/dist/chunks/{data-table-DyEQn9Yj.mjs.map → data-table-Bo80m7qV.mjs.map} +1 -1
  60. package/dist/chunks/{data-table-9HELVsYR.cjs → data-table-W1sK5tkL.cjs} +8 -8
  61. package/dist/chunks/{data-table-9HELVsYR.cjs.map → data-table-W1sK5tkL.cjs.map} +1 -1
  62. package/dist/chunks/{date-picker-D8gaaMlJ.mjs → date-picker-CNPORxhv.mjs} +87 -17
  63. package/dist/chunks/date-picker-CNPORxhv.mjs.map +1 -0
  64. package/dist/chunks/{date-picker-W9om1j7A.cjs → date-picker-CZo68Fkl.cjs} +87 -17
  65. package/dist/chunks/date-picker-CZo68Fkl.cjs.map +1 -0
  66. package/dist/chunks/input-BWM6G7jq.cjs +117 -0
  67. package/dist/chunks/input-BWM6G7jq.cjs.map +1 -0
  68. package/dist/chunks/input-Bt_r_B_c.mjs +105 -0
  69. package/dist/chunks/input-Bt_r_B_c.mjs.map +1 -0
  70. package/dist/chunks/{multi-select-combobox-ELSH_Xr4.mjs → multi-select-combobox-D46M-AN9.mjs} +2 -2
  71. package/dist/chunks/multi-select-combobox-D46M-AN9.mjs.map +1 -0
  72. package/dist/chunks/{multi-select-combobox-UW0X15W7.cjs → multi-select-combobox-dS6bJE_e.cjs} +2 -2
  73. package/dist/chunks/multi-select-combobox-dS6bJE_e.cjs.map +1 -0
  74. package/dist/chunks/{otp-input-B6zzOEqw.cjs → otp-input-DSW9Ca_D.cjs} +2 -2
  75. package/dist/chunks/otp-input-DSW9Ca_D.cjs.map +1 -0
  76. package/dist/chunks/{otp-input-Bg4nQG6x.mjs → otp-input-DeAi4nJ_.mjs} +2 -2
  77. package/dist/chunks/otp-input-DeAi4nJ_.mjs.map +1 -0
  78. package/dist/chunks/{progress-bar-C9FZDrju.mjs → progress-bar-B9sy7WBT.mjs} +1 -1
  79. package/dist/chunks/{progress-bar-C9FZDrju.mjs.map → progress-bar-B9sy7WBT.mjs.map} +1 -1
  80. package/dist/chunks/{progress-bar-C1OvQ-NI.cjs → progress-bar-BdvQtpm3.cjs} +1 -1
  81. package/dist/chunks/{progress-bar-C1OvQ-NI.cjs.map → progress-bar-BdvQtpm3.cjs.map} +1 -1
  82. package/dist/chunks/select-B8UQ6Uq5.mjs +170 -0
  83. package/dist/chunks/select-B8UQ6Uq5.mjs.map +1 -0
  84. package/dist/chunks/select-CCUSMvfS.cjs +176 -0
  85. package/dist/chunks/select-CCUSMvfS.cjs.map +1 -0
  86. package/dist/chunks/skeleton-BNea1Rcp.cjs +422 -0
  87. package/dist/chunks/skeleton-BNea1Rcp.cjs.map +1 -0
  88. package/dist/chunks/skeleton-CtLumdRw.mjs +368 -0
  89. package/dist/chunks/skeleton-CtLumdRw.mjs.map +1 -0
  90. package/dist/chunks/stepper-D6qQbZdg.cjs +642 -0
  91. package/dist/chunks/stepper-D6qQbZdg.cjs.map +1 -0
  92. package/dist/chunks/stepper-DUknuW2E.mjs +618 -0
  93. package/dist/chunks/stepper-DUknuW2E.mjs.map +1 -0
  94. package/dist/chunks/{textarea-CU5C-Zw9.mjs → textarea-Blky_fLK.mjs} +2 -2
  95. package/dist/chunks/{textarea-CU5C-Zw9.mjs.map → textarea-Blky_fLK.mjs.map} +1 -1
  96. package/dist/chunks/{textarea-CAUsyu4-.cjs → textarea-ok_NlE2p.cjs} +2 -2
  97. package/dist/chunks/textarea-ok_NlE2p.cjs.map +1 -0
  98. package/dist/color-palette.cjs +1 -1
  99. package/dist/color-palette.mjs +1 -1
  100. package/dist/colors.css +3 -0
  101. package/dist/combobox.cjs +1 -1
  102. package/dist/combobox.mjs +1 -1
  103. package/dist/components/data-display/charts/AreaChart.d.ts.map +1 -1
  104. package/dist/components/data-display/charts/BarChart.d.ts +1 -0
  105. package/dist/components/data-display/charts/BarChart.d.ts.map +1 -1
  106. package/dist/components/data-display/charts/NeonLineChart.d.ts.map +1 -1
  107. package/dist/components/data-display/charts/PieChart.d.ts +18 -2
  108. package/dist/components/data-display/charts/PieChart.d.ts.map +1 -1
  109. package/dist/components/data-display/charts/PositiveNegativeBarChart.d.ts +21 -0
  110. package/dist/components/data-display/charts/PositiveNegativeBarChart.d.ts.map +1 -0
  111. package/dist/components/data-display/charts/StackedBarChart.d.ts.map +1 -1
  112. package/dist/components/data-display/charts/ThinBreakdownBar.d.ts +3 -0
  113. package/dist/components/data-display/charts/ThinBreakdownBar.d.ts.map +1 -1
  114. package/dist/components/data-display/charts/chartStyles.d.ts +24 -0
  115. package/dist/components/data-display/charts/chartStyles.d.ts.map +1 -0
  116. package/dist/components/data-display/charts/index.d.ts +2 -0
  117. package/dist/components/data-display/charts/index.d.ts.map +1 -1
  118. package/dist/components/data-display/skeleton/Skeleton.d.ts +32 -5
  119. package/dist/components/data-display/skeleton/Skeleton.d.ts.map +1 -1
  120. package/dist/components/data-display/skeleton/index.d.ts +2 -2
  121. package/dist/components/data-display/skeleton/index.d.ts.map +1 -1
  122. package/dist/components/forms/calendar/Calendar.d.ts.map +1 -1
  123. package/dist/components/forms/date-picker/DatePicker.d.ts.map +1 -1
  124. package/dist/components/forms/input/Input.d.ts.map +1 -1
  125. package/dist/components/forms/input/types.d.ts +5 -0
  126. package/dist/components/forms/input/types.d.ts.map +1 -1
  127. package/dist/components/forms/select/Select.d.ts.map +1 -1
  128. package/dist/components/forms/select/types.d.ts +7 -1
  129. package/dist/components/forms/select/types.d.ts.map +1 -1
  130. package/dist/components/navigation/stepper/Stepper1.d.ts +4 -0
  131. package/dist/components/navigation/stepper/Stepper1.d.ts.map +1 -0
  132. package/dist/components/navigation/stepper/Stepper2.d.ts +5 -0
  133. package/dist/components/navigation/stepper/Stepper2.d.ts.map +1 -0
  134. package/dist/components/navigation/stepper/index.d.ts +4 -1
  135. package/dist/components/navigation/stepper/index.d.ts.map +1 -1
  136. package/dist/components/navigation/stepper/types.d.ts +85 -0
  137. package/dist/components/navigation/stepper/types.d.ts.map +1 -1
  138. package/dist/data-table.cjs +1 -1
  139. package/dist/data-table.mjs +1 -1
  140. package/dist/date-picker.cjs +1 -1
  141. package/dist/date-picker.mjs +1 -1
  142. package/dist/docs.cjs +12 -2
  143. package/dist/docs.cjs.map +1 -1
  144. package/dist/docs.d.ts.map +1 -1
  145. package/dist/docs.mjs +12 -2
  146. package/dist/docs.mjs.map +1 -1
  147. package/dist/foundation.css +7 -0
  148. package/dist/index.cjs +32 -19
  149. package/dist/index.d.ts +7 -4
  150. package/dist/index.d.ts.map +1 -1
  151. package/dist/index.mjs +20 -20
  152. package/dist/input.cjs +1 -1
  153. package/dist/input.mjs +1 -1
  154. package/dist/multi-select-combobox.cjs +1 -1
  155. package/dist/multi-select-combobox.mjs +1 -1
  156. package/dist/otp-input.cjs +1 -1
  157. package/dist/otp-input.mjs +1 -1
  158. package/dist/progress-bar.cjs +1 -1
  159. package/dist/progress-bar.mjs +1 -1
  160. package/dist/select.cjs +1 -1
  161. package/dist/select.mjs +1 -1
  162. package/dist/skeleton.cjs +9 -1
  163. package/dist/skeleton.mjs +2 -2
  164. package/dist/stepper.cjs +5 -1
  165. package/dist/stepper.mjs +2 -2
  166. package/dist/textarea.cjs +1 -1
  167. package/dist/textarea.mjs +1 -1
  168. package/dist/tokens.css +11 -2
  169. package/package.json +9 -9
  170. package/dist/chunks/calendar-BarcG6x_.mjs.map +0 -1
  171. package/dist/chunks/calendar-xrGmvukr.cjs.map +0 -1
  172. package/dist/chunks/charts-BpElnsoR.cjs.map +0 -1
  173. package/dist/chunks/charts-DugYWvEf.mjs.map +0 -1
  174. package/dist/chunks/combobox-BXu3s0dt.cjs.map +0 -1
  175. package/dist/chunks/combobox-CjK-qG4k.mjs.map +0 -1
  176. package/dist/chunks/date-picker-D8gaaMlJ.mjs.map +0 -1
  177. package/dist/chunks/date-picker-W9om1j7A.cjs.map +0 -1
  178. package/dist/chunks/input-D9qZNqXV.cjs +0 -99
  179. package/dist/chunks/input-D9qZNqXV.cjs.map +0 -1
  180. package/dist/chunks/input-wNqevfQ4.mjs +0 -87
  181. package/dist/chunks/input-wNqevfQ4.mjs.map +0 -1
  182. package/dist/chunks/multi-select-combobox-ELSH_Xr4.mjs.map +0 -1
  183. package/dist/chunks/multi-select-combobox-UW0X15W7.cjs.map +0 -1
  184. package/dist/chunks/otp-input-B6zzOEqw.cjs.map +0 -1
  185. package/dist/chunks/otp-input-Bg4nQG6x.mjs.map +0 -1
  186. package/dist/chunks/select-D71tk6-I.mjs +0 -152
  187. package/dist/chunks/select-D71tk6-I.mjs.map +0 -1
  188. package/dist/chunks/select-WC_kPqUP.cjs +0 -158
  189. package/dist/chunks/select-WC_kPqUP.cjs.map +0 -1
  190. package/dist/chunks/skeleton-BhYWOp0Q.mjs +0 -215
  191. package/dist/chunks/skeleton-BhYWOp0Q.mjs.map +0 -1
  192. package/dist/chunks/skeleton-DTXpHYYB.cjs +0 -221
  193. package/dist/chunks/skeleton-DTXpHYYB.cjs.map +0 -1
  194. package/dist/chunks/stepper-D4yQsQB0.mjs +0 -261
  195. package/dist/chunks/stepper-D4yQsQB0.mjs.map +0 -1
  196. package/dist/chunks/stepper-fY-Sx72k.cjs +0 -267
  197. package/dist/chunks/stepper-fY-Sx72k.cjs.map +0 -1
  198. package/dist/chunks/textarea-CAUsyu4-.cjs.map +0 -1
@@ -107,6 +107,58 @@ var normalizeChartColors = (requestedColors) => {
107
107
  });
108
108
  };
109
109
  //#endregion
110
+ //#region src/components/data-display/charts/chartStyles.ts
111
+ var chartTooltipContentStyle = {
112
+ background: "linear-gradient(135deg, color-mix(in srgb, var(--ds-color-bg-surface) 88%, transparent), color-mix(in srgb, var(--ds-color-bg-elevated) 74%, transparent))",
113
+ border: "1px solid color-mix(in srgb, var(--ds-color-border-strong) 72%, transparent)",
114
+ borderRadius: "12px",
115
+ backdropFilter: "blur(18px) saturate(180%)",
116
+ WebkitBackdropFilter: "blur(18px) saturate(180%)",
117
+ boxShadow: "0 18px 40px color-mix(in srgb, var(--ds-color-fg) 14%, transparent), inset 0 1px 0 color-mix(in srgb, var(--ds-color-bg-surface) 36%, transparent)",
118
+ color: "var(--ds-color-fg)",
119
+ padding: "0.75rem 0.875rem"
120
+ };
121
+ var chartTooltipLabelStyle = {
122
+ color: "var(--ds-color-fg)",
123
+ fontSize: "0.8125rem",
124
+ fontWeight: 600,
125
+ marginBottom: "0.375rem"
126
+ };
127
+ var chartTooltipItemStyle = {
128
+ color: "var(--ds-color-fg)",
129
+ fontSize: "0.8125rem",
130
+ fontWeight: 500,
131
+ padding: 0
132
+ };
133
+ var chartTooltipWrapperStyle = { outline: "none" };
134
+ var chartLegendTextStyle = {
135
+ fontSize: "12px",
136
+ color: "var(--ds-color-fg-muted)"
137
+ };
138
+ var chartBandHoverCursorStyle = {
139
+ fill: "color-mix(in srgb, var(--ds-color-accent) 12%, transparent)",
140
+ stroke: "color-mix(in srgb, var(--ds-color-accent) 34%, var(--ds-color-border-strong))",
141
+ strokeWidth: 1
142
+ };
143
+ var chartLineHoverCursorStyle = {
144
+ stroke: "color-mix(in srgb, var(--ds-color-accent) 42%, var(--ds-color-border-strong))",
145
+ strokeWidth: 1.25,
146
+ strokeDasharray: "4 4"
147
+ };
148
+ var getChartActiveDotStyle = (strokeColor) => ({
149
+ r: 6,
150
+ fill: "color-mix(in srgb, var(--ds-color-bg-surface) 90%, transparent)",
151
+ stroke: strokeColor,
152
+ strokeWidth: 2.5
153
+ });
154
+ var chartPillTooltipStyle = {
155
+ background: "linear-gradient(135deg, color-mix(in srgb, var(--ds-color-bg-surface) 90%, transparent), color-mix(in srgb, var(--ds-color-bg-elevated) 76%, transparent))",
156
+ border: "1px solid color-mix(in srgb, var(--ds-color-border-strong) 70%, transparent)",
157
+ boxShadow: "0 14px 32px color-mix(in srgb, var(--ds-color-fg) 14%, transparent), inset 0 1px 0 color-mix(in srgb, var(--ds-color-bg-surface) 34%, transparent)",
158
+ backdropFilter: "blur(16px) saturate(170%)",
159
+ WebkitBackdropFilter: "blur(16px) saturate(170%)"
160
+ };
161
+ //#endregion
110
162
  //#region src/components/data-display/charts/NeonLineChart.tsx
111
163
  var NeonLineChart = ({ data, height = 300, lineColorStop1 = getChartColorVar(2), lineColorStop2 = getChartColorVar(1), glowColor = getChartColorVar(1), className = "" }) => {
112
164
  const [normalizedStop1, normalizedStop2] = react.default.useMemo(() => normalizeChartColors([lineColorStop1, lineColorStop2]), [lineColorStop1, lineColorStop2]);
@@ -185,14 +237,11 @@ var NeonLineChart = ({ data, height = 300, lineColorStop1 = getChartColorVar(2),
185
237
  dx: -10
186
238
  }),
187
239
  /* @__PURE__ */ (0, react_jsx_runtime.jsx)(recharts.Tooltip, {
188
- contentStyle: {
189
- backgroundColor: "color-mix(in srgb, var(--ds-color-surface) 92%, transparent)",
190
- border: "1px solid var(--ds-color-border)",
191
- borderRadius: "8px",
192
- backdropFilter: "blur(8px)",
193
- color: "var(--ds-color-fg)"
194
- },
195
- itemStyle: { color: "var(--ds-color-fg)" }
240
+ contentStyle: chartTooltipContentStyle,
241
+ cursor: chartLineHoverCursorStyle,
242
+ itemStyle: chartTooltipItemStyle,
243
+ labelStyle: chartTooltipLabelStyle,
244
+ wrapperStyle: chartTooltipWrapperStyle
196
245
  }),
197
246
  /* @__PURE__ */ (0, react_jsx_runtime.jsx)(recharts.Line, {
198
247
  type: "monotone",
@@ -200,12 +249,7 @@ var NeonLineChart = ({ data, height = 300, lineColorStop1 = getChartColorVar(2),
200
249
  stroke: "url(#neonGradient)",
201
250
  strokeWidth: 3,
202
251
  dot: false,
203
- activeDot: {
204
- r: 6,
205
- fill: "var(--ds-color-surface)",
206
- stroke: normalizedStop2,
207
- strokeWidth: 2
208
- },
252
+ activeDot: getChartActiveDotStyle(normalizedStop2),
209
253
  filter: "url(#neonGlow)"
210
254
  })
211
255
  ]
@@ -265,21 +309,17 @@ var StackedBarChart = ({ data, categories, height = 300, yAxisDomain, className
265
309
  domain: yAxisDomain
266
310
  }),
267
311
  /* @__PURE__ */ (0, react_jsx_runtime.jsx)(recharts.Tooltip, {
268
- cursor: { fill: "color-mix(in srgb, var(--ds-color-accent) 10%, transparent)" },
269
- contentStyle: {
270
- backgroundColor: "color-mix(in srgb, var(--ds-color-surface) 92%, transparent)",
271
- border: "1px solid var(--ds-color-border)",
272
- borderRadius: "8px",
273
- backdropFilter: "blur(8px)",
274
- color: "var(--ds-color-fg)"
275
- }
312
+ contentStyle: chartTooltipContentStyle,
313
+ cursor: chartBandHoverCursorStyle,
314
+ itemStyle: chartTooltipItemStyle,
315
+ labelStyle: chartTooltipLabelStyle,
316
+ wrapperStyle: chartTooltipWrapperStyle
276
317
  }),
277
318
  /* @__PURE__ */ (0, react_jsx_runtime.jsx)(recharts.Legend, {
278
319
  iconType: "circle",
279
320
  wrapperStyle: {
280
- paddingTop: "20px",
281
- fontSize: "12px",
282
- color: "var(--color-neutral-300)"
321
+ ...chartLegendTextStyle,
322
+ paddingTop: "20px"
283
323
  }
284
324
  }),
285
325
  normalizedCategories.map((cat, index) => {
@@ -310,7 +350,8 @@ var StackedBarChart = ({ data, categories, height = 300, yAxisDomain, className
310
350
  };
311
351
  //#endregion
312
352
  //#region src/components/data-display/charts/ThinBreakdownBar.tsx
313
- var ThinBreakdownBar = ({ data: segments, className = "", showLabels = true }) => {
353
+ var defaultValueFormatter$2 = (value) => new Intl.NumberFormat().format(value);
354
+ var ThinBreakdownBar = ({ data: segments, className = "", showLabels = true, showSummary = false, summaryLabel = "Total", valueFormatter = defaultValueFormatter$2 }) => {
314
355
  const [activeSegmentKey, setActiveSegmentKey] = react.default.useState(null);
315
356
  const normalizedSegments = react.default.useMemo(() => {
316
357
  const normalizedColors = normalizeChartColors(segments.map((segment) => segment.color));
@@ -334,65 +375,93 @@ var ThinBreakdownBar = ({ data: segments, className = "", showLabels = true }) =
334
375
  });
335
376
  }, [normalizedSegments]);
336
377
  const activeSegment = react.default.useMemo(() => segmentsWithMetrics.find((segment) => segment.key === activeSegmentKey) ?? null, [activeSegmentKey, segmentsWithMetrics]);
378
+ const totalValue = react.default.useMemo(() => segments.reduce((sum, item) => sum + item.value, 0), [segments]);
379
+ const summaryTitle = activeSegment?.label ?? summaryLabel;
380
+ const summaryValue = activeSegment?.value ?? totalValue;
381
+ const summaryMeta = activeSegment ? `${Math.round(activeSegment.widthPercent)}% of total` : `${segments.length} segments`;
337
382
  return /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("div", {
338
383
  className: `w-full flex flex-col gap-3 ${className}`,
339
- children: [/* @__PURE__ */ (0, react_jsx_runtime.jsxs)("div", {
340
- className: "relative",
341
- children: [activeSegment && /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("div", {
342
- className: "pointer-events-none absolute -top-10 z-10 -translate-x-1/2 rounded-full border border-border/70 bg-background/95 px-2.5 py-1 text-[11px] font-medium text-foreground shadow-lg backdrop-blur-md",
343
- style: { left: `${activeSegment.centerPercent}%` },
344
- children: [
345
- /* @__PURE__ */ (0, react_jsx_runtime.jsx)("span", { children: activeSegment.label }),
346
- /* @__PURE__ */ (0, react_jsx_runtime.jsx)("span", {
347
- className: "mx-1 text-muted-foreground",
348
- children: ""
349
- }),
350
- /* @__PURE__ */ (0, react_jsx_runtime.jsx)("span", {
351
- style: { color: activeSegment.color },
352
- children: activeSegment.value
353
- })
354
- ]
355
- }), /* @__PURE__ */ (0, react_jsx_runtime.jsx)("div", {
356
- className: "rounded-full bg-background-tertiary/80 p-0.5",
357
- children: /* @__PURE__ */ (0, react_jsx_runtime.jsx)("div", {
358
- className: "flex w-full gap-1",
359
- onMouseLeave: () => setActiveSegmentKey(null),
360
- children: segmentsWithMetrics.map((segment) => {
361
- const isActive = activeSegmentKey === segment.key;
362
- return /* @__PURE__ */ (0, react_jsx_runtime.jsx)("div", {
363
- className: "relative flex h-2.5 min-w-0 items-center",
364
- style: { width: `${segment.widthPercent}%` },
365
- onMouseEnter: () => setActiveSegmentKey(segment.key),
366
- children: /* @__PURE__ */ (0, react_jsx_runtime.jsx)("div", {
367
- className: "h-full w-full rounded-full transition-[transform,filter,box-shadow,opacity] duration-200 ease-out",
368
- style: {
369
- backgroundColor: segment.color,
370
- opacity: activeSegmentKey && !isActive ? .72 : 1,
371
- transform: isActive ? "scaleY(1.3)" : "scaleY(1)",
372
- filter: isActive ? "saturate(1.1) brightness(1.05)" : "none",
373
- boxShadow: isActive ? `inset 0 1px 1px rgba(255,255,255,0.28), 0 0 0 1px color-mix(in srgb, ${segment.color} 35%, transparent), 0 0 14px color-mix(in srgb, ${segment.color} 45%, transparent)` : `inset 0 1px 1px rgba(255,255,255,0.2), 0 0 8px color-mix(in srgb, ${segment.color} 30%, transparent)`
374
- },
375
- title: `${segment.label}: ${segment.value}`
376
- })
377
- }, segment.key);
384
+ children: [
385
+ showSummary && (activeSegment || totalValue > 0) ? /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("div", {
386
+ className: "flex items-start justify-between gap-4 rounded-xl border border-border/70 bg-background/70 px-4 py-3 backdrop-blur-md",
387
+ children: [/* @__PURE__ */ (0, react_jsx_runtime.jsxs)("div", {
388
+ className: "min-w-0",
389
+ children: [/* @__PURE__ */ (0, react_jsx_runtime.jsx)("p", {
390
+ className: "truncate text-[11px] font-medium tracking-[0.16em] text-muted-foreground uppercase transition-colors duration-200",
391
+ style: activeSegment ? { color: activeSegment.color } : void 0,
392
+ children: summaryTitle
393
+ }), /* @__PURE__ */ (0, react_jsx_runtime.jsx)("p", {
394
+ className: "mt-1 text-xs text-muted-foreground",
395
+ children: summaryMeta
396
+ })]
397
+ }), /* @__PURE__ */ (0, react_jsx_runtime.jsx)("p", {
398
+ className: "text-right text-lg font-semibold leading-none text-foreground transition-colors duration-200",
399
+ style: activeSegment ? { color: activeSegment.color } : void 0,
400
+ children: valueFormatter(summaryValue)
401
+ })]
402
+ }) : null,
403
+ /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("div", {
404
+ className: "relative",
405
+ children: [activeSegment && !showSummary && /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("div", {
406
+ className: "pointer-events-none absolute -top-10 z-10 -translate-x-1/2 rounded-full px-2.5 py-1 text-[11px] font-medium text-foreground",
407
+ style: {
408
+ ...chartPillTooltipStyle,
409
+ left: `${activeSegment.centerPercent}%`
410
+ },
411
+ children: [
412
+ /* @__PURE__ */ (0, react_jsx_runtime.jsx)("span", { children: activeSegment.label }),
413
+ /* @__PURE__ */ (0, react_jsx_runtime.jsx)("span", {
414
+ className: "mx-1 text-muted-foreground",
415
+ children: "•"
416
+ }),
417
+ /* @__PURE__ */ (0, react_jsx_runtime.jsx)("span", {
418
+ style: { color: activeSegment.color },
419
+ children: activeSegment.value
420
+ })
421
+ ]
422
+ }), /* @__PURE__ */ (0, react_jsx_runtime.jsx)("div", {
423
+ className: "rounded-full bg-background-tertiary/80 p-0.5",
424
+ children: /* @__PURE__ */ (0, react_jsx_runtime.jsx)("div", {
425
+ className: "flex w-full gap-1",
426
+ onMouseLeave: () => setActiveSegmentKey(null),
427
+ children: segmentsWithMetrics.map((segment) => {
428
+ const isActive = activeSegmentKey === segment.key;
429
+ return /* @__PURE__ */ (0, react_jsx_runtime.jsx)("div", {
430
+ className: "relative flex h-2.5 min-w-0 items-center",
431
+ style: { width: `${segment.widthPercent}%` },
432
+ onMouseEnter: () => setActiveSegmentKey(segment.key),
433
+ children: /* @__PURE__ */ (0, react_jsx_runtime.jsx)("div", {
434
+ className: "h-full w-full rounded-full transition-[transform,filter,box-shadow,opacity] duration-200 ease-out",
435
+ style: {
436
+ backgroundColor: segment.color,
437
+ opacity: activeSegmentKey && !isActive ? .72 : 1,
438
+ transform: isActive ? "scaleY(1.3)" : "scaleY(1)",
439
+ filter: isActive ? "saturate(1.1) brightness(1.05)" : "none",
440
+ boxShadow: isActive ? `inset 0 1px 1px rgba(255,255,255,0.28), 0 0 0 1px color-mix(in srgb, ${segment.color} 35%, transparent), 0 0 14px color-mix(in srgb, ${segment.color} 45%, transparent)` : `inset 0 1px 1px rgba(255,255,255,0.2), 0 0 8px color-mix(in srgb, ${segment.color} 30%, transparent)`
441
+ },
442
+ title: `${segment.label}: ${segment.value}`
443
+ })
444
+ }, segment.key);
445
+ })
378
446
  })
447
+ })]
448
+ }),
449
+ showLabels && /* @__PURE__ */ (0, react_jsx_runtime.jsx)("div", {
450
+ className: "flex w-full items-start gap-1 px-0.5",
451
+ children: segmentsWithMetrics.map((segment) => {
452
+ const isActive = activeSegmentKey === segment.key;
453
+ return /* @__PURE__ */ (0, react_jsx_runtime.jsx)("div", {
454
+ className: "flex min-w-0 justify-center",
455
+ style: { width: `${segment.widthPercent}%` },
456
+ children: /* @__PURE__ */ (0, react_jsx_runtime.jsx)("span", {
457
+ className: "whitespace-nowrap px-1 text-center text-[11px] font-medium tracking-wide text-muted-foreground transition-colors duration-200",
458
+ style: isActive ? { color: segment.color } : void 0,
459
+ children: segment.label
460
+ })
461
+ }, `label-${segment.key}`);
379
462
  })
380
- })]
381
- }), showLabels && /* @__PURE__ */ (0, react_jsx_runtime.jsx)("div", {
382
- className: "flex w-full items-start gap-1 px-0.5",
383
- children: segmentsWithMetrics.map((segment) => {
384
- const isActive = activeSegmentKey === segment.key;
385
- return /* @__PURE__ */ (0, react_jsx_runtime.jsx)("div", {
386
- className: "flex min-w-0 justify-center",
387
- style: { width: `${segment.widthPercent}%` },
388
- children: /* @__PURE__ */ (0, react_jsx_runtime.jsx)("span", {
389
- className: "whitespace-nowrap px-1 text-center text-[11px] font-medium tracking-wide text-muted-foreground transition-colors duration-200",
390
- style: isActive ? { color: segment.color } : void 0,
391
- children: segment.label
392
- })
393
- }, `label-${segment.key}`);
394
463
  })
395
- })]
464
+ ]
396
465
  });
397
466
  };
398
467
  //#endregion
@@ -462,16 +531,14 @@ var AreaChart = ({ data, categories, height = 300, className = "", showGrid = tr
462
531
  dx: -10
463
532
  }),
464
533
  /* @__PURE__ */ (0, react_jsx_runtime.jsx)(recharts.Tooltip, {
465
- contentStyle: {
466
- backgroundColor: "color-mix(in srgb, var(--ds-color-surface) 92%, transparent)",
467
- border: "1px solid var(--ds-color-border)",
468
- borderRadius: "8px",
469
- backdropFilter: "blur(8px)",
470
- color: "var(--ds-color-fg)"
471
- },
472
- itemStyle: { color: "var(--ds-color-fg)" }
534
+ contentStyle: chartTooltipContentStyle,
535
+ cursor: chartLineHoverCursorStyle,
536
+ itemStyle: chartTooltipItemStyle,
537
+ labelStyle: chartTooltipLabelStyle,
538
+ wrapperStyle: chartTooltipWrapperStyle
473
539
  }),
474
540
  normalizedCategories.map((cat) => /* @__PURE__ */ (0, react_jsx_runtime.jsx)(recharts.Area, {
541
+ activeDot: getChartActiveDotStyle(cat.color),
475
542
  type: "monotone",
476
543
  dataKey: cat.key,
477
544
  stroke: cat.color,
@@ -486,7 +553,8 @@ var AreaChart = ({ data, categories, height = 300, className = "", showGrid = tr
486
553
  };
487
554
  //#endregion
488
555
  //#region src/components/data-display/charts/BarChart.tsx
489
- var BarChart = ({ data, categories, height = 300, className = "", layout = "horizontal" }) => {
556
+ var BarChart = ({ data, categories, height = 300, className = "", layout = "horizontal", maxBarSize }) => {
557
+ const resolvedMaxBarSize = maxBarSize ?? (layout === "horizontal" ? 40 : 22);
490
558
  const normalizedCategories = react.default.useMemo(() => {
491
559
  const normalizedColors = normalizeChartColors(categories.map((category) => category.color));
492
560
  return categories.map((category, index) => ({
@@ -503,6 +571,7 @@ var BarChart = ({ data, categories, height = 300, className = "", layout = "hori
503
571
  children: /* @__PURE__ */ (0, react_jsx_runtime.jsxs)(recharts.BarChart, {
504
572
  data,
505
573
  layout,
574
+ barCategoryGap: data.length <= 4 ? "28%" : "18%",
506
575
  margin: {
507
576
  top: 20,
508
577
  right: 30,
@@ -555,18 +624,16 @@ var BarChart = ({ data, categories, height = 300, className = "", layout = "hori
555
624
  dx: -10
556
625
  })] }),
557
626
  /* @__PURE__ */ (0, react_jsx_runtime.jsx)(recharts.Tooltip, {
558
- cursor: { fill: "color-mix(in srgb, var(--ds-color-accent) 10%, transparent)" },
559
- contentStyle: {
560
- backgroundColor: "color-mix(in srgb, var(--ds-color-surface) 92%, transparent)",
561
- border: "1px solid var(--ds-color-border)",
562
- borderRadius: "8px",
563
- backdropFilter: "blur(8px)",
564
- color: "var(--ds-color-fg)"
565
- }
627
+ contentStyle: chartTooltipContentStyle,
628
+ cursor: chartBandHoverCursorStyle,
629
+ itemStyle: chartTooltipItemStyle,
630
+ labelStyle: chartTooltipLabelStyle,
631
+ wrapperStyle: chartTooltipWrapperStyle
566
632
  }),
567
633
  normalizedCategories.map((cat) => /* @__PURE__ */ (0, react_jsx_runtime.jsx)(recharts.Bar, {
568
634
  dataKey: cat.key,
569
635
  fill: cat.color,
636
+ maxBarSize: resolvedMaxBarSize,
570
637
  radius: layout === "horizontal" ? [
571
638
  4,
572
639
  4,
@@ -585,14 +652,187 @@ var BarChart = ({ data, categories, height = 300, className = "", layout = "hori
585
652
  });
586
653
  };
587
654
  //#endregion
588
- //#region src/components/data-display/charts/PieChart.tsx
589
- var PieChart = ({ data, colors, height = 300, className = "", variant = "donut" }) => {
590
- const innerRadius = variant === "donut" ? "60%" : 0;
591
- const normalizedColors = react.default.useMemo(() => normalizeChartColors(colors), [colors]);
655
+ //#region src/components/data-display/charts/PositiveNegativeBarChart.tsx
656
+ var defaultValueFormatter$1 = (value) => new Intl.NumberFormat().format(value);
657
+ var getBarRadius = (value, layout) => {
658
+ if (value === 0) return [
659
+ 6,
660
+ 6,
661
+ 6,
662
+ 6
663
+ ];
664
+ if (layout === "horizontal") return value > 0 ? [
665
+ 6,
666
+ 6,
667
+ 0,
668
+ 0
669
+ ] : [
670
+ 0,
671
+ 0,
672
+ 6,
673
+ 6
674
+ ];
675
+ return value > 0 ? [
676
+ 0,
677
+ 6,
678
+ 6,
679
+ 0
680
+ ] : [
681
+ 6,
682
+ 0,
683
+ 0,
684
+ 6
685
+ ];
686
+ };
687
+ var PositiveNegativeBarChart = ({ data, height = 320, className = "", layout = "horizontal", positiveColor = getChartColorVar(3), negativeColor = getChartColorVar(5), neutralColor = getChartColorVar(15), showGrid = true, seriesLabel = "Variance", valueFormatter = defaultValueFormatter$1, tickFormatter }) => {
688
+ const resolvedPositiveColor = react.default.useMemo(() => normalizeChartColorValue(positiveColor) ?? getChartColorVar(3), [positiveColor]);
689
+ const resolvedNegativeColor = react.default.useMemo(() => normalizeChartColorValue(negativeColor) ?? getChartColorVar(5), [negativeColor]);
690
+ const resolvedNeutralColor = react.default.useMemo(() => normalizeChartColorValue(neutralColor) ?? getChartColorVar(15), [neutralColor]);
691
+ const resolvedTickFormatter = react.default.useCallback((value) => tickFormatter?.(value) ?? valueFormatter(value), [tickFormatter, valueFormatter]);
692
+ const getBarFill = react.default.useCallback((value) => {
693
+ if (value > 0) return resolvedPositiveColor;
694
+ if (value < 0) return resolvedNegativeColor;
695
+ return resolvedNeutralColor;
696
+ }, [
697
+ resolvedNegativeColor,
698
+ resolvedNeutralColor,
699
+ resolvedPositiveColor
700
+ ]);
592
701
  return /* @__PURE__ */ (0, react_jsx_runtime.jsx)("div", {
593
702
  className: `w-full ${className}`,
594
703
  style: { height },
595
704
  children: /* @__PURE__ */ (0, react_jsx_runtime.jsx)(recharts.ResponsiveContainer, {
705
+ width: "100%",
706
+ height: "100%",
707
+ children: /* @__PURE__ */ (0, react_jsx_runtime.jsxs)(recharts.BarChart, {
708
+ data,
709
+ layout,
710
+ margin: {
711
+ top: 20,
712
+ right: 30,
713
+ left: 20,
714
+ bottom: 5
715
+ },
716
+ children: [
717
+ showGrid ? /* @__PURE__ */ (0, react_jsx_runtime.jsx)(recharts.CartesianGrid, {
718
+ strokeDasharray: "3 3",
719
+ horizontal: layout === "horizontal",
720
+ vertical: layout === "vertical",
721
+ stroke: "var(--ds-color-border)",
722
+ opacity: .35
723
+ }) : null,
724
+ layout === "horizontal" ? /* @__PURE__ */ (0, react_jsx_runtime.jsxs)(react_jsx_runtime.Fragment, { children: [
725
+ /* @__PURE__ */ (0, react_jsx_runtime.jsx)(recharts.XAxis, {
726
+ dataKey: "name",
727
+ axisLine: false,
728
+ tickLine: false,
729
+ tick: {
730
+ fill: "var(--ds-color-fg-muted)",
731
+ fontSize: 12
732
+ },
733
+ dy: 10
734
+ }),
735
+ /* @__PURE__ */ (0, react_jsx_runtime.jsx)(recharts.YAxis, {
736
+ axisLine: false,
737
+ tickLine: false,
738
+ tick: {
739
+ fill: "var(--ds-color-fg-muted)",
740
+ fontSize: 12
741
+ },
742
+ tickFormatter: resolvedTickFormatter,
743
+ dx: -10
744
+ }),
745
+ /* @__PURE__ */ (0, react_jsx_runtime.jsx)(recharts.ReferenceLine, {
746
+ y: 0,
747
+ stroke: "var(--ds-color-border-strong)",
748
+ strokeOpacity: .95
749
+ })
750
+ ] }) : /* @__PURE__ */ (0, react_jsx_runtime.jsxs)(react_jsx_runtime.Fragment, { children: [
751
+ /* @__PURE__ */ (0, react_jsx_runtime.jsx)(recharts.XAxis, {
752
+ type: "number",
753
+ axisLine: false,
754
+ tickLine: false,
755
+ tick: {
756
+ fill: "var(--ds-color-fg-muted)",
757
+ fontSize: 12
758
+ },
759
+ tickFormatter: resolvedTickFormatter,
760
+ dy: 10
761
+ }),
762
+ /* @__PURE__ */ (0, react_jsx_runtime.jsx)(recharts.YAxis, {
763
+ dataKey: "name",
764
+ type: "category",
765
+ axisLine: false,
766
+ tickLine: false,
767
+ tick: {
768
+ fill: "var(--ds-color-fg-muted)",
769
+ fontSize: 12
770
+ },
771
+ width: 96,
772
+ dx: -6
773
+ }),
774
+ /* @__PURE__ */ (0, react_jsx_runtime.jsx)(recharts.ReferenceLine, {
775
+ x: 0,
776
+ stroke: "var(--ds-color-border-strong)",
777
+ strokeOpacity: .95
778
+ })
779
+ ] }),
780
+ /* @__PURE__ */ (0, react_jsx_runtime.jsx)(recharts.Tooltip, {
781
+ contentStyle: chartTooltipContentStyle,
782
+ cursor: chartBandHoverCursorStyle,
783
+ itemStyle: chartTooltipItemStyle,
784
+ labelStyle: chartTooltipLabelStyle,
785
+ wrapperStyle: chartTooltipWrapperStyle,
786
+ formatter: (value) => [valueFormatter(Number(value ?? 0)), seriesLabel]
787
+ }),
788
+ /* @__PURE__ */ (0, react_jsx_runtime.jsx)(recharts.Bar, {
789
+ dataKey: "value",
790
+ radius: 6,
791
+ barSize: layout === "horizontal" ? 30 : 22,
792
+ shape: (props) => {
793
+ const barValue = Array.isArray(props.value) ? props.value[1] - props.value[0] : props.value;
794
+ return /* @__PURE__ */ (0, react_jsx_runtime.jsx)(recharts.Rectangle, {
795
+ ...props,
796
+ radius: getBarRadius(barValue, layout)
797
+ });
798
+ },
799
+ children: data.map((entry) => /* @__PURE__ */ (0, react_jsx_runtime.jsx)(recharts.Cell, { fill: getBarFill(entry.value) }, `${entry.name}-${entry.value}`))
800
+ })
801
+ ]
802
+ })
803
+ })
804
+ });
805
+ };
806
+ //#endregion
807
+ //#region src/components/data-display/charts/PieChart.tsx
808
+ var defaultValueFormatter = (value) => new Intl.NumberFormat().format(value);
809
+ var PieChart = ({ data, colors, height = 300, className = "", variant = "donut", showCenterSummary = variant === "donut", centerLabel = "Total", valueFormatter = defaultValueFormatter, renderCenterContent }) => {
810
+ const [activeIndex, setActiveIndex] = react.default.useState(null);
811
+ const innerRadius = variant === "donut" ? "60%" : 0;
812
+ const normalizedColors = react.default.useMemo(() => normalizeChartColors(colors), [colors]);
813
+ const totalValue = react.default.useMemo(() => data.reduce((sum, item) => sum + item.value, 0), [data]);
814
+ const activeSlice = activeIndex !== null && activeIndex >= 0 && activeIndex < data.length ? data[activeIndex] : null;
815
+ const activePercentage = activeSlice && totalValue > 0 ? `${Math.round(activeSlice.value / totalValue * 100)}% of total` : `${data.length} categories`;
816
+ const displayLabel = activeSlice?.name ?? centerLabel;
817
+ const displayValue = activeSlice?.value ?? totalValue;
818
+ const centerContentContext = {
819
+ activeColor: activeIndex !== null ? normalizedColors[activeIndex % normalizedColors.length] : void 0,
820
+ activeIndex,
821
+ activeSlice,
822
+ data,
823
+ displayLabel,
824
+ displayPercentageLabel: activePercentage,
825
+ displayValue,
826
+ normalizedColors,
827
+ totalValue,
828
+ valueFormatter,
829
+ variant
830
+ };
831
+ const shouldRenderCenterContent = variant === "donut" && (showCenterSummary || Boolean(renderCenterContent));
832
+ return /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("div", {
833
+ className: `relative w-full ${className}`,
834
+ style: { height },
835
+ children: [/* @__PURE__ */ (0, react_jsx_runtime.jsx)(recharts.ResponsiveContainer, {
596
836
  width: "100%",
597
837
  height: "100%",
598
838
  children: /* @__PURE__ */ (0, react_jsx_runtime.jsxs)(recharts.PieChart, { children: [
@@ -605,27 +845,41 @@ var PieChart = ({ data, colors, height = 300, className = "", variant = "donut"
605
845
  paddingAngle: variant === "donut" ? 2 : 0,
606
846
  dataKey: "value",
607
847
  stroke: "none",
848
+ onMouseEnter: (_data, index) => setActiveIndex(index),
849
+ onMouseLeave: () => setActiveIndex(null),
608
850
  children: data.map((entry, index) => /* @__PURE__ */ (0, react_jsx_runtime.jsx)(recharts.Cell, { fill: normalizedColors[index % normalizedColors.length] }, `cell-${index}`))
609
851
  }),
610
852
  /* @__PURE__ */ (0, react_jsx_runtime.jsx)(recharts.Tooltip, {
611
- contentStyle: {
612
- backgroundColor: "color-mix(in srgb, var(--ds-color-surface) 92%, transparent)",
613
- border: "1px solid var(--ds-color-border)",
614
- borderRadius: "8px",
615
- backdropFilter: "blur(8px)",
616
- color: "var(--ds-color-fg)"
617
- },
618
- itemStyle: { color: "var(--ds-color-fg)" }
853
+ contentStyle: chartTooltipContentStyle,
854
+ itemStyle: chartTooltipItemStyle,
855
+ labelStyle: chartTooltipLabelStyle,
856
+ wrapperStyle: chartTooltipWrapperStyle
619
857
  }),
620
858
  /* @__PURE__ */ (0, react_jsx_runtime.jsx)(recharts.Legend, {
621
859
  iconType: "circle",
622
- wrapperStyle: {
623
- fontSize: "12px",
624
- color: "var(--color-neutral-300)"
625
- }
860
+ wrapperStyle: chartLegendTextStyle
626
861
  })
627
862
  ] })
628
- })
863
+ }), shouldRenderCenterContent ? /* @__PURE__ */ (0, react_jsx_runtime.jsx)("div", {
864
+ className: "pointer-events-none absolute inset-0 flex items-center justify-center",
865
+ children: renderCenterContent ? renderCenterContent(centerContentContext) : /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("div", {
866
+ className: "flex max-w-[42%] flex-col items-center text-center",
867
+ children: [
868
+ /* @__PURE__ */ (0, react_jsx_runtime.jsx)("p", {
869
+ className: "text-[11px] font-medium tracking-[0.16em] text-muted-foreground uppercase",
870
+ children: displayLabel
871
+ }),
872
+ /* @__PURE__ */ (0, react_jsx_runtime.jsx)("p", {
873
+ className: "mt-1 text-2xl font-semibold leading-none text-foreground sm:text-3xl",
874
+ children: valueFormatter(displayValue)
875
+ }),
876
+ /* @__PURE__ */ (0, react_jsx_runtime.jsx)("p", {
877
+ className: "mt-2 text-xs leading-tight text-muted-foreground",
878
+ children: activePercentage
879
+ })
880
+ ]
881
+ })
882
+ }) : null]
629
883
  });
630
884
  };
631
885
  //#endregion
@@ -653,6 +907,12 @@ Object.defineProperty(exports, "PieChart", {
653
907
  return PieChart;
654
908
  }
655
909
  });
910
+ Object.defineProperty(exports, "PositiveNegativeBarChart", {
911
+ enumerable: true,
912
+ get: function() {
913
+ return PositiveNegativeBarChart;
914
+ }
915
+ });
656
916
  Object.defineProperty(exports, "StackedBarChart", {
657
917
  enumerable: true,
658
918
  get: function() {
@@ -684,4 +944,4 @@ Object.defineProperty(exports, "getChartPalette", {
684
944
  }
685
945
  });
686
946
 
687
- //# sourceMappingURL=charts-BpElnsoR.cjs.map
947
+ //# sourceMappingURL=charts-DbxyHtlX.cjs.map