@ktnpm_devops/react-component 0.2.1 → 0.3.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 (265) hide show
  1. package/dist/index.cjs +34 -33
  2. package/dist/index.cjs.map +1 -1
  3. package/dist/index.d.ts +1 -0
  4. package/dist/index.d.ts.map +1 -1
  5. package/dist/index.js +34 -33
  6. package/dist/index.js.map +1 -1
  7. package/dist/index10.cjs +15 -4
  8. package/dist/index10.cjs.map +1 -1
  9. package/dist/index10.js +15 -4
  10. package/dist/index10.js.map +1 -1
  11. package/dist/index11.cjs +4 -16
  12. package/dist/index11.cjs.map +1 -1
  13. package/dist/index11.js +4 -16
  14. package/dist/index11.js.map +1 -1
  15. package/dist/index12.cjs +16 -10
  16. package/dist/index12.cjs.map +1 -1
  17. package/dist/index12.js +16 -10
  18. package/dist/index12.js.map +1 -1
  19. package/dist/index13.cjs +10 -100
  20. package/dist/index13.cjs.map +1 -1
  21. package/dist/index13.js +11 -101
  22. package/dist/index13.js.map +1 -1
  23. package/dist/index14.cjs +100 -20
  24. package/dist/index14.cjs.map +1 -1
  25. package/dist/index14.js +101 -21
  26. package/dist/index14.js.map +1 -1
  27. package/dist/index15.cjs +20 -90
  28. package/dist/index15.cjs.map +1 -1
  29. package/dist/index15.js +21 -91
  30. package/dist/index15.js.map +1 -1
  31. package/dist/index16.cjs +85 -153
  32. package/dist/index16.cjs.map +1 -1
  33. package/dist/index16.js +87 -155
  34. package/dist/index16.js.map +1 -1
  35. package/dist/index17.cjs +150 -128
  36. package/dist/index17.cjs.map +1 -1
  37. package/dist/index17.js +150 -128
  38. package/dist/index17.js.map +1 -1
  39. package/dist/index18.cjs +121 -106
  40. package/dist/index18.cjs.map +1 -1
  41. package/dist/index18.js +122 -107
  42. package/dist/index18.js.map +1 -1
  43. package/dist/index19.cjs +121 -17
  44. package/dist/index19.cjs.map +1 -1
  45. package/dist/index19.js +121 -17
  46. package/dist/index19.js.map +1 -1
  47. package/dist/index20.cjs +17 -8
  48. package/dist/index20.cjs.map +1 -1
  49. package/dist/index20.js +18 -9
  50. package/dist/index20.js.map +1 -1
  51. package/dist/index21.cjs +7 -130
  52. package/dist/index21.cjs.map +1 -1
  53. package/dist/index21.js +9 -132
  54. package/dist/index21.js.map +1 -1
  55. package/dist/index22.cjs +128 -35
  56. package/dist/index22.cjs.map +1 -1
  57. package/dist/index22.js +129 -36
  58. package/dist/index22.js.map +1 -1
  59. package/dist/index23.cjs +36 -222
  60. package/dist/index23.cjs.map +1 -1
  61. package/dist/index23.js +37 -223
  62. package/dist/index23.js.map +1 -1
  63. package/dist/index24.cjs +218 -28
  64. package/dist/index24.cjs.map +1 -1
  65. package/dist/index24.js +220 -30
  66. package/dist/index24.js.map +1 -1
  67. package/dist/index25.cjs +29 -73
  68. package/dist/index25.cjs.map +1 -1
  69. package/dist/index25.js +31 -75
  70. package/dist/index25.js.map +1 -1
  71. package/dist/index26.cjs +69 -144
  72. package/dist/index26.cjs.map +1 -1
  73. package/dist/index26.js +70 -145
  74. package/dist/index26.js.map +1 -1
  75. package/dist/index27.cjs +152 -7
  76. package/dist/index27.cjs.map +1 -1
  77. package/dist/index27.js +154 -9
  78. package/dist/index27.js.map +1 -1
  79. package/dist/index28.cjs +8 -17
  80. package/dist/index28.cjs.map +1 -1
  81. package/dist/index28.js +9 -18
  82. package/dist/index28.js.map +1 -1
  83. package/dist/index29.cjs +15 -75
  84. package/dist/index29.cjs.map +1 -1
  85. package/dist/index29.js +16 -76
  86. package/dist/index29.js.map +1 -1
  87. package/dist/index3.cjs +76 -16
  88. package/dist/index3.cjs.map +1 -1
  89. package/dist/index3.js +76 -16
  90. package/dist/index3.js.map +1 -1
  91. package/dist/index30.cjs +68 -134
  92. package/dist/index30.cjs.map +1 -1
  93. package/dist/index30.js +70 -136
  94. package/dist/index30.js.map +1 -1
  95. package/dist/index31.cjs +136 -98
  96. package/dist/index31.cjs.map +1 -1
  97. package/dist/index31.js +137 -99
  98. package/dist/index31.js.map +1 -1
  99. package/dist/index32.cjs +105 -6
  100. package/dist/index32.cjs.map +1 -1
  101. package/dist/index32.js +106 -7
  102. package/dist/index32.js.map +1 -1
  103. package/dist/index33.cjs +6 -216
  104. package/dist/index33.cjs.map +1 -1
  105. package/dist/index33.js +7 -217
  106. package/dist/index33.js.map +1 -1
  107. package/dist/index34.cjs +215 -7
  108. package/dist/index34.cjs.map +1 -1
  109. package/dist/index34.js +217 -9
  110. package/dist/index34.js.map +1 -1
  111. package/dist/index35.cjs +10 -16
  112. package/dist/index35.cjs.map +1 -1
  113. package/dist/index35.js +9 -15
  114. package/dist/index35.js.map +1 -1
  115. package/dist/index36.cjs +15 -6
  116. package/dist/index36.cjs.map +1 -1
  117. package/dist/index36.js +15 -6
  118. package/dist/index36.js.map +1 -1
  119. package/dist/index37.cjs +4 -1
  120. package/dist/index37.cjs.map +1 -1
  121. package/dist/index37.js +4 -1
  122. package/dist/index37.js.map +1 -1
  123. package/dist/index38.cjs +11 -2
  124. package/dist/index38.cjs.map +1 -1
  125. package/dist/index38.js +11 -2
  126. package/dist/index38.js.map +1 -1
  127. package/dist/index39.cjs +67 -21
  128. package/dist/index39.cjs.map +1 -1
  129. package/dist/index39.js +66 -20
  130. package/dist/index39.js.map +1 -1
  131. package/dist/index4.cjs +12 -8
  132. package/dist/index4.cjs.map +1 -1
  133. package/dist/index4.js +12 -8
  134. package/dist/index4.js.map +1 -1
  135. package/dist/index40.cjs +39 -67
  136. package/dist/index40.cjs.map +1 -1
  137. package/dist/index40.js +38 -66
  138. package/dist/index40.js.map +1 -1
  139. package/dist/index41.cjs +15 -33
  140. package/dist/index41.cjs.map +1 -1
  141. package/dist/index41.js +16 -34
  142. package/dist/index41.js.map +1 -1
  143. package/dist/index42.cjs +52 -16
  144. package/dist/index42.cjs.map +1 -1
  145. package/dist/index42.js +52 -16
  146. package/dist/index42.js.map +1 -1
  147. package/dist/index43.cjs +13 -10
  148. package/dist/index43.cjs.map +1 -1
  149. package/dist/index43.js +13 -10
  150. package/dist/index43.js.map +1 -1
  151. package/dist/index44.cjs +29 -17
  152. package/dist/index44.cjs.map +1 -1
  153. package/dist/index44.js +29 -17
  154. package/dist/index44.js.map +1 -1
  155. package/dist/index45.cjs +19 -134
  156. package/dist/index45.cjs.map +1 -1
  157. package/dist/index45.js +18 -133
  158. package/dist/index45.js.map +1 -1
  159. package/dist/index46.cjs +13 -40
  160. package/dist/index46.cjs.map +1 -1
  161. package/dist/index46.js +13 -40
  162. package/dist/index46.js.map +1 -1
  163. package/dist/index47.cjs +2 -29
  164. package/dist/index47.cjs.map +1 -1
  165. package/dist/index47.js +3 -30
  166. package/dist/index47.js.map +1 -1
  167. package/dist/index48.cjs +2 -53
  168. package/dist/index48.cjs.map +1 -1
  169. package/dist/index48.js +3 -54
  170. package/dist/index48.js.map +1 -1
  171. package/dist/index49.cjs +3 -30
  172. package/dist/index49.cjs.map +1 -1
  173. package/dist/index49.js +3 -30
  174. package/dist/index49.js.map +1 -1
  175. package/dist/index5.cjs +9 -16
  176. package/dist/index5.cjs.map +1 -1
  177. package/dist/index5.js +10 -17
  178. package/dist/index5.js.map +1 -1
  179. package/dist/index50.cjs +34 -34
  180. package/dist/index50.js +34 -34
  181. package/dist/index51.cjs +49 -19
  182. package/dist/index51.cjs.map +1 -1
  183. package/dist/index51.js +50 -20
  184. package/dist/index51.js.map +1 -1
  185. package/dist/index52.cjs +16 -13
  186. package/dist/index52.cjs.map +1 -1
  187. package/dist/index52.js +16 -13
  188. package/dist/index52.js.map +1 -1
  189. package/dist/index53.cjs +35 -32
  190. package/dist/index53.cjs.map +1 -1
  191. package/dist/index53.js +35 -32
  192. package/dist/index53.js.map +1 -1
  193. package/dist/index54.cjs +53 -5
  194. package/dist/index54.cjs.map +1 -1
  195. package/dist/index54.js +54 -6
  196. package/dist/index54.js.map +1 -1
  197. package/dist/index55.cjs +134 -19
  198. package/dist/index55.cjs.map +1 -1
  199. package/dist/index55.js +133 -18
  200. package/dist/index55.js.map +1 -1
  201. package/dist/index56.cjs +40 -10
  202. package/dist/index56.cjs.map +1 -1
  203. package/dist/index56.js +40 -10
  204. package/dist/index56.js.map +1 -1
  205. package/dist/index57.cjs +26 -8
  206. package/dist/index57.cjs.map +1 -1
  207. package/dist/index57.js +27 -9
  208. package/dist/index57.js.map +1 -1
  209. package/dist/index58.cjs +22 -19
  210. package/dist/index58.cjs.map +1 -1
  211. package/dist/index58.js +22 -19
  212. package/dist/index58.js.map +1 -1
  213. package/dist/index59.cjs +10 -79
  214. package/dist/index59.cjs.map +1 -1
  215. package/dist/index59.js +10 -79
  216. package/dist/index59.js.map +1 -1
  217. package/dist/index6.cjs +19 -65
  218. package/dist/index6.cjs.map +1 -1
  219. package/dist/index6.js +19 -65
  220. package/dist/index6.js.map +1 -1
  221. package/dist/index60.cjs +19 -22
  222. package/dist/index60.cjs.map +1 -1
  223. package/dist/index60.js +20 -23
  224. package/dist/index60.js.map +1 -1
  225. package/dist/index61.cjs +54 -27
  226. package/dist/index61.cjs.map +1 -1
  227. package/dist/index61.js +55 -28
  228. package/dist/index61.js.map +1 -1
  229. package/dist/index62.cjs +37 -13
  230. package/dist/index62.cjs.map +1 -1
  231. package/dist/index62.js +38 -14
  232. package/dist/index62.js.map +1 -1
  233. package/dist/index63.cjs +16 -49
  234. package/dist/index63.cjs.map +1 -1
  235. package/dist/index63.js +16 -49
  236. package/dist/index63.js.map +1 -1
  237. package/dist/index64.cjs +16 -37
  238. package/dist/index64.cjs.map +1 -1
  239. package/dist/index64.js +16 -37
  240. package/dist/index64.js.map +1 -1
  241. package/dist/index65.cjs +18 -0
  242. package/dist/index65.cjs.map +1 -0
  243. package/dist/index65.js +18 -0
  244. package/dist/index65.js.map +1 -0
  245. package/dist/index7.cjs +58 -75
  246. package/dist/index7.cjs.map +1 -1
  247. package/dist/index7.js +58 -75
  248. package/dist/index7.js.map +1 -1
  249. package/dist/index8.cjs +82 -15
  250. package/dist/index8.cjs.map +1 -1
  251. package/dist/index8.js +82 -15
  252. package/dist/index8.js.map +1 -1
  253. package/dist/index9.cjs +14 -15
  254. package/dist/index9.cjs.map +1 -1
  255. package/dist/index9.js +15 -16
  256. package/dist/index9.js.map +1 -1
  257. package/dist/style.css +271 -0
  258. package/dist/tokens/semantic-tokens.css +21 -0
  259. package/dist/tokens/tokens.d.ts +35 -0
  260. package/dist/tokens/tokens.d.ts.map +1 -1
  261. package/package.json +1 -1
  262. package/dist/index2.cjs +0 -44
  263. package/dist/index2.cjs.map +0 -1
  264. package/dist/index2.js +0 -44
  265. package/dist/index2.js.map +0 -1
package/dist/index34.js CHANGED
@@ -1,12 +1,220 @@
1
- import { jsx } from "react/jsx-runtime";
2
- import { forwardRef } from "react";
3
- import { clsx } from "./index35.js";
4
- import styles from "./index36.js";
5
- const Textarea = forwardRef(
6
- ({ className, ...props }, ref) => /* @__PURE__ */ jsx("textarea", { ref, className: clsx(styles.root, className), ...props })
7
- );
8
- Textarea.displayName = "Textarea";
1
+ import { jsxs, jsx } from "react/jsx-runtime";
2
+ import { useMemo, useCallback } from "react";
3
+ import { clsx } from "./index36.js";
4
+ import ReactECharts from "echarts-for-react";
5
+ import { MAX_SERIES, CHART_COLORS } from "./index39.js";
6
+ import styles from "./index62.js";
7
+ function groupByCategory(data, limit) {
8
+ const grouped = /* @__PURE__ */ new Map();
9
+ for (const point of data) {
10
+ const key = point.category ?? "Unknown";
11
+ if (!grouped.has(key)) {
12
+ grouped.set(key, []);
13
+ }
14
+ grouped.get(key).push({
15
+ ts: point.ts ?? "",
16
+ value: point.value
17
+ });
18
+ }
19
+ const entries = [...grouped.entries()].sort(
20
+ (a, b) => b[1].reduce((sum, p) => sum + p.value, 0) - a[1].reduce((sum, p) => sum + p.value, 0)
21
+ );
22
+ if (entries.length <= limit) {
23
+ return entries;
24
+ }
25
+ const top = entries.slice(0, limit - 1);
26
+ const rest = entries.slice(limit - 1);
27
+ const otherMap = /* @__PURE__ */ new Map();
28
+ for (const [, points] of rest) {
29
+ for (const p of points) {
30
+ otherMap.set(p.ts, (otherMap.get(p.ts) ?? 0) + p.value);
31
+ }
32
+ }
33
+ const otherPoints = [...otherMap.entries()].map(([ts, value]) => ({
34
+ ts,
35
+ value
36
+ }));
37
+ return [...top, ["Other", otherPoints]];
38
+ }
39
+ function buildMarkAreas(annotations) {
40
+ return annotations.filter((a) => a.end).map((a) => [
41
+ {
42
+ name: a.label,
43
+ xAxis: a.start,
44
+ itemStyle: { color: a.color ?? "rgba(255,107,90,0.1)" }
45
+ },
46
+ { xAxis: a.end }
47
+ ]);
48
+ }
49
+ function buildMarkLines(annotations) {
50
+ return annotations.filter((a) => !a.end).map((a) => ({
51
+ name: a.label,
52
+ xAxis: a.start,
53
+ lineStyle: { color: a.color ?? CHART_COLORS[0], type: "dashed" },
54
+ label: { formatter: a.label, position: "end" }
55
+ }));
56
+ }
57
+ function TemporalTrendChartCard({
58
+ title,
59
+ data,
60
+ isLoading = false,
61
+ error,
62
+ onRetry,
63
+ onChartReady,
64
+ actions,
65
+ className,
66
+ groupBy,
67
+ groupOptions,
68
+ onGroupChange,
69
+ granularity,
70
+ granularityOptions,
71
+ onGranularityChange,
72
+ annotations = [],
73
+ showLegend = true,
74
+ onToggleLegend,
75
+ onSeriesSelect,
76
+ onBucketSelect,
77
+ maxSeries = MAX_SERIES
78
+ }) {
79
+ const seriesGroups = useMemo(
80
+ () => groupByCategory(data, maxSeries),
81
+ [data, maxSeries]
82
+ );
83
+ const option = useMemo(() => {
84
+ const markAreas = buildMarkAreas(annotations);
85
+ const markLines = buildMarkLines(annotations);
86
+ const series = seriesGroups.map(([name, points], idx) => ({
87
+ name,
88
+ type: "line",
89
+ stack: "total",
90
+ areaStyle: {},
91
+ emphasis: { focus: "series" },
92
+ color: CHART_COLORS[idx % CHART_COLORS.length],
93
+ data: points.sort((a, b) => a.ts < b.ts ? -1 : 1).map((p) => [p.ts, p.value]),
94
+ ...idx === 0 && (markAreas.length > 0 || markLines.length > 0) ? {
95
+ markArea: markAreas.length > 0 ? { silent: true, data: markAreas } : void 0,
96
+ markLine: markLines.length > 0 ? { silent: true, symbol: "none", data: markLines } : void 0
97
+ } : {}
98
+ }));
99
+ return {
100
+ tooltip: {
101
+ trigger: "axis",
102
+ axisPointer: { type: "cross" }
103
+ },
104
+ legend: {
105
+ show: showLegend,
106
+ type: "scroll",
107
+ bottom: 0
108
+ },
109
+ grid: {
110
+ left: "3%",
111
+ right: "4%",
112
+ bottom: showLegend ? "15%" : "3%",
113
+ containLabel: true
114
+ },
115
+ xAxis: { type: "time" },
116
+ yAxis: { type: "value" },
117
+ series
118
+ };
119
+ }, [seriesGroups, annotations, showLegend]);
120
+ const handleChartReady = useCallback(
121
+ (instance) => {
122
+ onChartReady == null ? void 0 : onChartReady(instance);
123
+ },
124
+ [onChartReady]
125
+ );
126
+ const handleEvents = useMemo(() => {
127
+ const events = {};
128
+ if (onSeriesSelect) {
129
+ events["legendselectchanged"] = (params) => {
130
+ const p = params;
131
+ onSeriesSelect(p.name);
132
+ };
133
+ }
134
+ if (onBucketSelect) {
135
+ events["brushSelected"] = (params) => {
136
+ var _a, _b, _c;
137
+ const p = params;
138
+ const area = (_c = (_b = (_a = p.batch) == null ? void 0 : _a[0]) == null ? void 0 : _b.areas) == null ? void 0 : _c[0];
139
+ if (area) {
140
+ onBucketSelect({ start: area.coordRange[0], end: area.coordRange[1] });
141
+ }
142
+ };
143
+ }
144
+ return events;
145
+ }, [onSeriesSelect, onBucketSelect]);
146
+ const hasToolbar = groupOptions || granularityOptions || onToggleLegend;
147
+ const hasData = data.length > 0;
148
+ return /* @__PURE__ */ jsxs("div", { className: clsx(styles.root, className), children: [
149
+ /* @__PURE__ */ jsxs("div", { className: styles.header, children: [
150
+ /* @__PURE__ */ jsx("span", { className: styles.title, children: title }),
151
+ /* @__PURE__ */ jsxs("div", { className: styles.headerRight, children: [
152
+ hasToolbar && /* @__PURE__ */ jsxs("div", { className: styles.toolbar, children: [
153
+ groupOptions && groupOptions.length > 0 && /* @__PURE__ */ jsx(
154
+ "select",
155
+ {
156
+ className: styles.select,
157
+ value: groupBy ?? "",
158
+ onChange: (e) => onGroupChange == null ? void 0 : onGroupChange(e.target.value),
159
+ "aria-label": "Group by",
160
+ children: groupOptions.map((opt) => /* @__PURE__ */ jsx("option", { value: opt.value, children: opt.label }, opt.value))
161
+ }
162
+ ),
163
+ granularityOptions && granularityOptions.length > 0 && /* @__PURE__ */ jsx(
164
+ "select",
165
+ {
166
+ className: styles.select,
167
+ value: granularity ?? "",
168
+ onChange: (e) => onGranularityChange == null ? void 0 : onGranularityChange(e.target.value || null),
169
+ "aria-label": "Granularity",
170
+ children: granularityOptions.map((opt) => /* @__PURE__ */ jsx("option", { value: opt.value, children: opt.label }, opt.value))
171
+ }
172
+ ),
173
+ onToggleLegend && /* @__PURE__ */ jsx(
174
+ "button",
175
+ {
176
+ type: "button",
177
+ className: clsx(
178
+ styles.legendToggle,
179
+ showLegend && styles.legendToggleActive
180
+ ),
181
+ onClick: onToggleLegend,
182
+ "aria-label": "Toggle legend",
183
+ children: "Legend"
184
+ }
185
+ )
186
+ ] }),
187
+ actions
188
+ ] })
189
+ ] }),
190
+ isLoading && /* @__PURE__ */ jsx("div", { className: styles.loading, children: "Loading chart data..." }),
191
+ !isLoading && error && /* @__PURE__ */ jsxs("div", { className: styles.error, children: [
192
+ /* @__PURE__ */ jsx("span", { children: error }),
193
+ onRetry && /* @__PURE__ */ jsx(
194
+ "button",
195
+ {
196
+ type: "button",
197
+ className: styles.retryButton,
198
+ onClick: onRetry,
199
+ children: "Retry"
200
+ }
201
+ )
202
+ ] }),
203
+ !isLoading && !error && !hasData && /* @__PURE__ */ jsx("div", { className: styles.empty, children: "No data available" }),
204
+ !isLoading && !error && hasData && /* @__PURE__ */ jsx("div", { className: styles.chartContainer, children: /* @__PURE__ */ jsx(
205
+ ReactECharts,
206
+ {
207
+ option,
208
+ style: { height: "100%", minHeight: "18.75rem" },
209
+ onChartReady: handleChartReady,
210
+ onEvents: handleEvents,
211
+ notMerge: true
212
+ }
213
+ ) })
214
+ ] });
215
+ }
216
+ TemporalTrendChartCard.displayName = "TemporalTrendChartCard";
9
217
  export {
10
- Textarea
218
+ TemporalTrendChartCard
11
219
  };
12
220
  //# sourceMappingURL=index34.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index34.js","sources":["../src/primitives/Textarea/Textarea.tsx"],"sourcesContent":["import { forwardRef } from 'react';\nimport clsx from 'clsx';\nimport styles from './Textarea.module.css';\n\nexport interface TextareaProps extends React.TextareaHTMLAttributes<HTMLTextAreaElement> {}\n\nexport const Textarea = forwardRef<HTMLTextAreaElement, TextareaProps>(\n ({ className, ...props }, ref) => (\n <textarea ref={ref} className={clsx(styles.root, className)} {...props} />\n ),\n);\n\nTextarea.displayName = 'Textarea';\n"],"names":[],"mappings":";;;;AAMO,MAAM,WAAW;AAAA,EACtB,CAAC,EAAE,WAAW,GAAG,MAAA,GAAS,QACxB,oBAAC,YAAA,EAAS,KAAU,WAAW,KAAK,OAAO,MAAM,SAAS,GAAI,GAAG,MAAA,CAAO;AAE5E;AAEA,SAAS,cAAc;"}
1
+ {"version":3,"file":"index34.js","sources":["../src/charts/TemporalTrendChartCard/TemporalTrendChartCard.tsx"],"sourcesContent":["import { useMemo, useCallback } from 'react';\nimport clsx from 'clsx';\nimport ReactECharts from 'echarts-for-react';\nimport type { TemporalTrendChartCardProps } from './TemporalTrendChartCard.types';\nimport type { EChartsInstance, ChartAnnotation } from '../../types/chart.types';\nimport { MAX_SERIES, CHART_COLORS } from '../../constants';\nimport styles from './TemporalTrendChartCard.module.css';\n\n/** Group data points by category, returning sorted series keyed by category name. */\nfunction groupByCategory(\n data: TemporalTrendChartCardProps['data'],\n limit: number,\n) {\n const grouped = new Map<string, { ts: string; value: number }[]>();\n\n for (const point of data) {\n const key = point.category ?? 'Unknown';\n if (!grouped.has(key)) {\n grouped.set(key, []);\n }\n grouped.get(key)!.push({\n ts: point.ts ?? '',\n value: point.value,\n });\n }\n\n const entries = [...grouped.entries()].sort(\n (a, b) =>\n b[1].reduce((sum, p) => sum + p.value, 0) -\n a[1].reduce((sum, p) => sum + p.value, 0),\n );\n\n if (entries.length <= limit) {\n return entries;\n }\n\n const top = entries.slice(0, limit - 1);\n const rest = entries.slice(limit - 1);\n\n const otherMap = new Map<string, number>();\n for (const [, points] of rest) {\n for (const p of points) {\n otherMap.set(p.ts, (otherMap.get(p.ts) ?? 0) + p.value);\n }\n }\n\n const otherPoints = [...otherMap.entries()].map(([ts, value]) => ({\n ts,\n value,\n }));\n\n return [...top, ['Other', otherPoints] as const] as Array<\n [string, { ts: string; value: number }[]]\n >;\n}\n\n/** Build markArea items from range annotations. */\nfunction buildMarkAreas(annotations: ChartAnnotation[]) {\n return annotations\n .filter((a) => a.end)\n .map((a) => [\n {\n name: a.label,\n xAxis: a.start,\n itemStyle: { color: a.color ?? 'rgba(255,107,90,0.1)' },\n },\n { xAxis: a.end },\n ]);\n}\n\n/** Build markLine items from point annotations. */\nfunction buildMarkLines(annotations: ChartAnnotation[]) {\n return annotations\n .filter((a) => !a.end)\n .map((a) => ({\n name: a.label,\n xAxis: a.start,\n lineStyle: { color: a.color ?? CHART_COLORS[0], type: 'dashed' as const },\n label: { formatter: a.label, position: 'end' as const },\n }));\n}\n\nexport function TemporalTrendChartCard({\n title,\n data,\n isLoading = false,\n error,\n onRetry,\n onChartReady,\n actions,\n className,\n groupBy,\n groupOptions,\n onGroupChange,\n granularity,\n granularityOptions,\n onGranularityChange,\n annotations = [],\n showLegend = true,\n onToggleLegend,\n onSeriesSelect,\n onBucketSelect,\n maxSeries = MAX_SERIES,\n}: TemporalTrendChartCardProps) {\n const seriesGroups = useMemo(\n () => groupByCategory(data, maxSeries),\n [data, maxSeries],\n );\n\n const option = useMemo(() => {\n const markAreas = buildMarkAreas(annotations);\n const markLines = buildMarkLines(annotations);\n\n const series = seriesGroups.map(([name, points], idx) => ({\n name,\n type: 'line' as const,\n stack: 'total',\n areaStyle: {},\n emphasis: { focus: 'series' as const },\n color: CHART_COLORS[idx % CHART_COLORS.length],\n data: points\n .sort((a, b) => (a.ts < b.ts ? -1 : 1))\n .map((p) => [p.ts, p.value]),\n ...(idx === 0 && (markAreas.length > 0 || markLines.length > 0)\n ? {\n markArea:\n markAreas.length > 0 ? { silent: true, data: markAreas } : undefined,\n markLine:\n markLines.length > 0\n ? { silent: true, symbol: 'none', data: markLines }\n : undefined,\n }\n : {}),\n }));\n\n return {\n tooltip: {\n trigger: 'axis' as const,\n axisPointer: { type: 'cross' as const },\n },\n legend: {\n show: showLegend,\n type: 'scroll' as const,\n bottom: 0,\n },\n grid: {\n left: '3%',\n right: '4%',\n bottom: showLegend ? '15%' : '3%',\n containLabel: true,\n },\n xAxis: { type: 'time' as const },\n yAxis: { type: 'value' as const },\n series,\n };\n }, [seriesGroups, annotations, showLegend]);\n\n const handleChartReady = useCallback(\n (instance: EChartsInstance) => {\n onChartReady?.(instance);\n },\n [onChartReady],\n );\n\n const handleEvents = useMemo(() => {\n const events: Record<string, (...args: unknown[]) => void> = {};\n\n if (onSeriesSelect) {\n events['legendselectchanged'] = (params: unknown) => {\n const p = params as { name: string };\n onSeriesSelect(p.name);\n };\n }\n\n if (onBucketSelect) {\n events['brushSelected'] = (params: unknown) => {\n const p = params as {\n batch: { areas: { coordRange: [string, string] }[] }[];\n };\n const area = p.batch?.[0]?.areas?.[0];\n if (area) {\n onBucketSelect({ start: area.coordRange[0], end: area.coordRange[1] });\n }\n };\n }\n\n return events;\n }, [onSeriesSelect, onBucketSelect]);\n\n const hasToolbar = groupOptions || granularityOptions || onToggleLegend;\n const hasData = data.length > 0;\n\n return (\n <div className={clsx(styles.root, className)}>\n <div className={styles.header}>\n <span className={styles.title}>{title}</span>\n <div className={styles.headerRight}>\n {hasToolbar && (\n <div className={styles.toolbar}>\n {groupOptions && groupOptions.length > 0 && (\n <select\n className={styles.select}\n value={groupBy ?? ''}\n onChange={(e) => onGroupChange?.(e.target.value)}\n aria-label=\"Group by\"\n >\n {groupOptions.map((opt) => (\n <option key={opt.value} value={opt.value}>\n {opt.label}\n </option>\n ))}\n </select>\n )}\n {granularityOptions && granularityOptions.length > 0 && (\n <select\n className={styles.select}\n value={granularity ?? ''}\n onChange={(e) =>\n onGranularityChange?.(e.target.value || null)\n }\n aria-label=\"Granularity\"\n >\n {granularityOptions.map((opt) => (\n <option key={opt.value} value={opt.value}>\n {opt.label}\n </option>\n ))}\n </select>\n )}\n {onToggleLegend && (\n <button\n type=\"button\"\n className={clsx(\n styles.legendToggle,\n showLegend && styles.legendToggleActive,\n )}\n onClick={onToggleLegend}\n aria-label=\"Toggle legend\"\n >\n Legend\n </button>\n )}\n </div>\n )}\n {actions}\n </div>\n </div>\n\n {isLoading && <div className={styles.loading}>Loading chart data...</div>}\n\n {!isLoading && error && (\n <div className={styles.error}>\n <span>{error}</span>\n {onRetry && (\n <button\n type=\"button\"\n className={styles.retryButton}\n onClick={onRetry}\n >\n Retry\n </button>\n )}\n </div>\n )}\n\n {!isLoading && !error && !hasData && (\n <div className={styles.empty}>No data available</div>\n )}\n\n {!isLoading && !error && hasData && (\n <div className={styles.chartContainer}>\n <ReactECharts\n option={option}\n style={{ height: '100%', minHeight: '18.75rem' }}\n onChartReady={handleChartReady}\n onEvents={handleEvents}\n notMerge\n />\n </div>\n )}\n </div>\n );\n}\n\nTemporalTrendChartCard.displayName = 'TemporalTrendChartCard';\n"],"names":[],"mappings":"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"}
package/dist/index35.cjs CHANGED
@@ -1,18 +1,12 @@
1
1
  "use strict";
2
- Object.defineProperties(exports, { __esModule: { value: true }, [Symbol.toStringTag]: { value: "Module" } });
3
- function r(e) {
4
- var t, f, n = "";
5
- if ("string" == typeof e || "number" == typeof e) n += e;
6
- else if ("object" == typeof e) if (Array.isArray(e)) {
7
- var o = e.length;
8
- for (t = 0; t < o; t++) e[t] && (f = r(e[t])) && (n && (n += " "), n += f);
9
- } else for (f in e) e[f] && (n && (n += " "), n += f);
10
- return n;
11
- }
12
- function clsx() {
13
- for (var e, t, f = 0, n = "", o = arguments.length; f < o; f++) (e = arguments[f]) && (t = r(e)) && (n && (n += " "), n += t);
14
- return n;
15
- }
16
- exports.clsx = clsx;
17
- exports.default = clsx;
2
+ Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
3
+ const jsxRuntime = require("react/jsx-runtime");
4
+ const react = require("react");
5
+ const clsx = require("./index36.cjs");
6
+ const Textarea_module = require("./index48.cjs");
7
+ const Textarea = react.forwardRef(
8
+ ({ className, ...props }, ref) => /* @__PURE__ */ jsxRuntime.jsx("textarea", { ref, className: clsx.clsx(Textarea_module.default.root, className), ...props })
9
+ );
10
+ Textarea.displayName = "Textarea";
11
+ exports.Textarea = Textarea;
18
12
  //# sourceMappingURL=index35.cjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"index35.cjs","sources":["../node_modules/.pnpm/clsx@2.1.1/node_modules/clsx/dist/clsx.mjs"],"sourcesContent":["function r(e){var t,f,n=\"\";if(\"string\"==typeof e||\"number\"==typeof e)n+=e;else if(\"object\"==typeof e)if(Array.isArray(e)){var o=e.length;for(t=0;t<o;t++)e[t]&&(f=r(e[t]))&&(n&&(n+=\" \"),n+=f)}else for(f in e)e[f]&&(n&&(n+=\" \"),n+=f);return n}export function clsx(){for(var e,t,f=0,n=\"\",o=arguments.length;f<o;f++)(e=arguments[f])&&(t=r(e))&&(n&&(n+=\" \"),n+=t);return n}export default clsx;"],"names":[],"mappings":";;AAAA,SAAS,EAAE,GAAE;AAAC,MAAI,GAAE,GAAE,IAAE;AAAG,MAAG,YAAU,OAAO,KAAG,YAAU,OAAO,EAAE,MAAG;AAAA,WAAU,YAAU,OAAO,EAAE,KAAG,MAAM,QAAQ,CAAC,GAAE;AAAC,QAAI,IAAE,EAAE;AAAO,SAAI,IAAE,GAAE,IAAE,GAAE,IAAI,GAAE,CAAC,MAAI,IAAE,EAAE,EAAE,CAAC,CAAC,OAAK,MAAI,KAAG,MAAK,KAAG;AAAA,EAAE,MAAM,MAAI,KAAK,EAAE,GAAE,CAAC,MAAI,MAAI,KAAG,MAAK,KAAG;AAAG,SAAO;AAAC;AAAQ,SAAS,OAAM;AAAC,WAAQ,GAAE,GAAE,IAAE,GAAE,IAAE,IAAG,IAAE,UAAU,QAAO,IAAE,GAAE,IAAI,EAAC,IAAE,UAAU,CAAC,OAAK,IAAE,EAAE,CAAC,OAAK,MAAI,KAAG,MAAK,KAAG;AAAG,SAAO;AAAC;;;","x_google_ignoreList":[0]}
1
+ {"version":3,"file":"index35.cjs","sources":["../src/primitives/Textarea/Textarea.tsx"],"sourcesContent":["import { forwardRef } from 'react';\nimport clsx from 'clsx';\nimport styles from './Textarea.module.css';\n\nexport interface TextareaProps extends React.TextareaHTMLAttributes<HTMLTextAreaElement> {}\n\nexport const Textarea = forwardRef<HTMLTextAreaElement, TextareaProps>(\n ({ className, ...props }, ref) => (\n <textarea ref={ref} className={clsx(styles.root, className)} {...props} />\n ),\n);\n\nTextarea.displayName = 'Textarea';\n"],"names":["forwardRef","jsx","clsx","styles"],"mappings":";;;;;;AAMO,MAAM,WAAWA,MAAAA;AAAAA,EACtB,CAAC,EAAE,WAAW,GAAG,MAAA,GAAS,QACxBC,2BAAAA,IAAC,YAAA,EAAS,KAAU,WAAWC,KAAAA,KAAKC,gBAAAA,QAAO,MAAM,SAAS,GAAI,GAAG,MAAA,CAAO;AAE5E;AAEA,SAAS,cAAc;;"}
package/dist/index35.js CHANGED
@@ -1,18 +1,12 @@
1
- function r(e) {
2
- var t, f, n = "";
3
- if ("string" == typeof e || "number" == typeof e) n += e;
4
- else if ("object" == typeof e) if (Array.isArray(e)) {
5
- var o = e.length;
6
- for (t = 0; t < o; t++) e[t] && (f = r(e[t])) && (n && (n += " "), n += f);
7
- } else for (f in e) e[f] && (n && (n += " "), n += f);
8
- return n;
9
- }
10
- function clsx() {
11
- for (var e, t, f = 0, n = "", o = arguments.length; f < o; f++) (e = arguments[f]) && (t = r(e)) && (n && (n += " "), n += t);
12
- return n;
13
- }
1
+ import { jsx } from "react/jsx-runtime";
2
+ import { forwardRef } from "react";
3
+ import { clsx } from "./index36.js";
4
+ import styles from "./index48.js";
5
+ const Textarea = forwardRef(
6
+ ({ className, ...props }, ref) => /* @__PURE__ */ jsx("textarea", { ref, className: clsx(styles.root, className), ...props })
7
+ );
8
+ Textarea.displayName = "Textarea";
14
9
  export {
15
- clsx,
16
- clsx as default
10
+ Textarea
17
11
  };
18
12
  //# sourceMappingURL=index35.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index35.js","sources":["../node_modules/.pnpm/clsx@2.1.1/node_modules/clsx/dist/clsx.mjs"],"sourcesContent":["function r(e){var t,f,n=\"\";if(\"string\"==typeof e||\"number\"==typeof e)n+=e;else if(\"object\"==typeof e)if(Array.isArray(e)){var o=e.length;for(t=0;t<o;t++)e[t]&&(f=r(e[t]))&&(n&&(n+=\" \"),n+=f)}else for(f in e)e[f]&&(n&&(n+=\" \"),n+=f);return n}export function clsx(){for(var e,t,f=0,n=\"\",o=arguments.length;f<o;f++)(e=arguments[f])&&(t=r(e))&&(n&&(n+=\" \"),n+=t);return n}export default clsx;"],"names":[],"mappings":"AAAA,SAAS,EAAE,GAAE;AAAC,MAAI,GAAE,GAAE,IAAE;AAAG,MAAG,YAAU,OAAO,KAAG,YAAU,OAAO,EAAE,MAAG;AAAA,WAAU,YAAU,OAAO,EAAE,KAAG,MAAM,QAAQ,CAAC,GAAE;AAAC,QAAI,IAAE,EAAE;AAAO,SAAI,IAAE,GAAE,IAAE,GAAE,IAAI,GAAE,CAAC,MAAI,IAAE,EAAE,EAAE,CAAC,CAAC,OAAK,MAAI,KAAG,MAAK,KAAG;AAAA,EAAE,MAAM,MAAI,KAAK,EAAE,GAAE,CAAC,MAAI,MAAI,KAAG,MAAK,KAAG;AAAG,SAAO;AAAC;AAAQ,SAAS,OAAM;AAAC,WAAQ,GAAE,GAAE,IAAE,GAAE,IAAE,IAAG,IAAE,UAAU,QAAO,IAAE,GAAE,IAAI,EAAC,IAAE,UAAU,CAAC,OAAK,IAAE,EAAE,CAAC,OAAK,MAAI,KAAG,MAAK,KAAG;AAAG,SAAO;AAAC;","x_google_ignoreList":[0]}
1
+ {"version":3,"file":"index35.js","sources":["../src/primitives/Textarea/Textarea.tsx"],"sourcesContent":["import { forwardRef } from 'react';\nimport clsx from 'clsx';\nimport styles from './Textarea.module.css';\n\nexport interface TextareaProps extends React.TextareaHTMLAttributes<HTMLTextAreaElement> {}\n\nexport const Textarea = forwardRef<HTMLTextAreaElement, TextareaProps>(\n ({ className, ...props }, ref) => (\n <textarea ref={ref} className={clsx(styles.root, className)} {...props} />\n ),\n);\n\nTextarea.displayName = 'Textarea';\n"],"names":[],"mappings":";;;;AAMO,MAAM,WAAW;AAAA,EACtB,CAAC,EAAE,WAAW,GAAG,MAAA,GAAS,QACxB,oBAAC,YAAA,EAAS,KAAU,WAAW,KAAK,OAAO,MAAM,SAAS,GAAI,GAAG,MAAA,CAAO;AAE5E;AAEA,SAAS,cAAc;"}
package/dist/index36.cjs CHANGED
@@ -1,9 +1,18 @@
1
1
  "use strict";
2
2
  Object.defineProperties(exports, { __esModule: { value: true }, [Symbol.toStringTag]: { value: "Module" } });
3
- const root = "krc-root-FVKOX";
4
- const styles = {
5
- root
6
- };
7
- exports.default = styles;
8
- exports.root = root;
3
+ function r(e) {
4
+ var t, f, n = "";
5
+ if ("string" == typeof e || "number" == typeof e) n += e;
6
+ else if ("object" == typeof e) if (Array.isArray(e)) {
7
+ var o = e.length;
8
+ for (t = 0; t < o; t++) e[t] && (f = r(e[t])) && (n && (n += " "), n += f);
9
+ } else for (f in e) e[f] && (n && (n += " "), n += f);
10
+ return n;
11
+ }
12
+ function clsx() {
13
+ for (var e, t, f = 0, n = "", o = arguments.length; f < o; f++) (e = arguments[f]) && (t = r(e)) && (n && (n += " "), n += t);
14
+ return n;
15
+ }
16
+ exports.clsx = clsx;
17
+ exports.default = clsx;
9
18
  //# sourceMappingURL=index36.cjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"index36.cjs","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;;"}
1
+ {"version":3,"file":"index36.cjs","sources":["../node_modules/.pnpm/clsx@2.1.1/node_modules/clsx/dist/clsx.mjs"],"sourcesContent":["function r(e){var t,f,n=\"\";if(\"string\"==typeof e||\"number\"==typeof e)n+=e;else if(\"object\"==typeof e)if(Array.isArray(e)){var o=e.length;for(t=0;t<o;t++)e[t]&&(f=r(e[t]))&&(n&&(n+=\" \"),n+=f)}else for(f in e)e[f]&&(n&&(n+=\" \"),n+=f);return n}export function clsx(){for(var e,t,f=0,n=\"\",o=arguments.length;f<o;f++)(e=arguments[f])&&(t=r(e))&&(n&&(n+=\" \"),n+=t);return n}export default clsx;"],"names":[],"mappings":";;AAAA,SAAS,EAAE,GAAE;AAAC,MAAI,GAAE,GAAE,IAAE;AAAG,MAAG,YAAU,OAAO,KAAG,YAAU,OAAO,EAAE,MAAG;AAAA,WAAU,YAAU,OAAO,EAAE,KAAG,MAAM,QAAQ,CAAC,GAAE;AAAC,QAAI,IAAE,EAAE;AAAO,SAAI,IAAE,GAAE,IAAE,GAAE,IAAI,GAAE,CAAC,MAAI,IAAE,EAAE,EAAE,CAAC,CAAC,OAAK,MAAI,KAAG,MAAK,KAAG;AAAA,EAAE,MAAM,MAAI,KAAK,EAAE,GAAE,CAAC,MAAI,MAAI,KAAG,MAAK,KAAG;AAAG,SAAO;AAAC;AAAQ,SAAS,OAAM;AAAC,WAAQ,GAAE,GAAE,IAAE,GAAE,IAAE,IAAG,IAAE,UAAU,QAAO,IAAE,GAAE,IAAI,EAAC,IAAE,UAAU,CAAC,OAAK,IAAE,EAAE,CAAC,OAAK,MAAI,KAAG,MAAK,KAAG;AAAG,SAAO;AAAC;;;","x_google_ignoreList":[0]}
package/dist/index36.js CHANGED
@@ -1,9 +1,18 @@
1
- const root = "krc-root-FVKOX";
2
- const styles = {
3
- root
4
- };
1
+ function r(e) {
2
+ var t, f, n = "";
3
+ if ("string" == typeof e || "number" == typeof e) n += e;
4
+ else if ("object" == typeof e) if (Array.isArray(e)) {
5
+ var o = e.length;
6
+ for (t = 0; t < o; t++) e[t] && (f = r(e[t])) && (n && (n += " "), n += f);
7
+ } else for (f in e) e[f] && (n && (n += " "), n += f);
8
+ return n;
9
+ }
10
+ function clsx() {
11
+ for (var e, t, f = 0, n = "", o = arguments.length; f < o; f++) (e = arguments[f]) && (t = r(e)) && (n && (n += " "), n += t);
12
+ return n;
13
+ }
5
14
  export {
6
- styles as default,
7
- root
15
+ clsx,
16
+ clsx as default
8
17
  };
9
18
  //# sourceMappingURL=index36.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index36.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;"}
1
+ {"version":3,"file":"index36.js","sources":["../node_modules/.pnpm/clsx@2.1.1/node_modules/clsx/dist/clsx.mjs"],"sourcesContent":["function r(e){var t,f,n=\"\";if(\"string\"==typeof e||\"number\"==typeof e)n+=e;else if(\"object\"==typeof e)if(Array.isArray(e)){var o=e.length;for(t=0;t<o;t++)e[t]&&(f=r(e[t]))&&(n&&(n+=\" \"),n+=f)}else for(f in e)e[f]&&(n&&(n+=\" \"),n+=f);return n}export function clsx(){for(var e,t,f=0,n=\"\",o=arguments.length;f<o;f++)(e=arguments[f])&&(t=r(e))&&(n&&(n+=\" \"),n+=t);return n}export default clsx;"],"names":[],"mappings":"AAAA,SAAS,EAAE,GAAE;AAAC,MAAI,GAAE,GAAE,IAAE;AAAG,MAAG,YAAU,OAAO,KAAG,YAAU,OAAO,EAAE,MAAG;AAAA,WAAU,YAAU,OAAO,EAAE,KAAG,MAAM,QAAQ,CAAC,GAAE;AAAC,QAAI,IAAE,EAAE;AAAO,SAAI,IAAE,GAAE,IAAE,GAAE,IAAI,GAAE,CAAC,MAAI,IAAE,EAAE,EAAE,CAAC,CAAC,OAAK,MAAI,KAAG,MAAK,KAAG;AAAA,EAAE,MAAM,MAAI,KAAK,EAAE,GAAE,CAAC,MAAI,MAAI,KAAG,MAAK,KAAG;AAAG,SAAO;AAAC;AAAQ,SAAS,OAAM;AAAC,WAAQ,GAAE,GAAE,IAAE,GAAE,IAAE,IAAG,IAAE,UAAU,QAAO,IAAE,GAAE,IAAI,EAAC,IAAE,UAAU,CAAC,OAAK,IAAE,EAAE,CAAC,OAAK,MAAI,KAAG,MAAK,KAAG;AAAG,SAAO;AAAC;","x_google_ignoreList":[0]}
package/dist/index37.cjs CHANGED
@@ -1,9 +1,12 @@
1
1
  "use strict";
2
2
  Object.defineProperties(exports, { __esModule: { value: true }, [Symbol.toStringTag]: { value: "Module" } });
3
- const root = "krc-root-jba0x";
3
+ const container = "krc-container-cpDoQ";
4
+ const root = "krc-root-20TMP";
4
5
  const styles = {
6
+ container,
5
7
  root
6
8
  };
9
+ exports.container = container;
7
10
  exports.default = styles;
8
11
  exports.root = root;
9
12
  //# sourceMappingURL=index37.cjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"index37.cjs","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;;"}
1
+ {"version":3,"file":"index37.cjs","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;;;;;"}
package/dist/index37.js CHANGED
@@ -1,8 +1,11 @@
1
- const root = "krc-root-jba0x";
1
+ const container = "krc-container-cpDoQ";
2
+ const root = "krc-root-20TMP";
2
3
  const styles = {
4
+ container,
3
5
  root
4
6
  };
5
7
  export {
8
+ container,
6
9
  styles as default,
7
10
  root
8
11
  };
@@ -1 +1 @@
1
- {"version":3,"file":"index37.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;"}
1
+ {"version":3,"file":"index37.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;"}
package/dist/index38.cjs CHANGED
@@ -1,9 +1,18 @@
1
1
  "use strict";
2
2
  Object.defineProperties(exports, { __esModule: { value: true }, [Symbol.toStringTag]: { value: "Module" } });
3
- const root = "krc-root-bWynN";
3
+ const root = "krc-root-AouLD";
4
+ const header = "krc-header-pNze5";
5
+ const content = "krc-content-egG2e";
6
+ const footer = "krc-footer-WJw5Z";
4
7
  const styles = {
5
- root
8
+ root,
9
+ header,
10
+ content,
11
+ footer
6
12
  };
13
+ exports.content = content;
7
14
  exports.default = styles;
15
+ exports.footer = footer;
16
+ exports.header = header;
8
17
  exports.root = root;
9
18
  //# sourceMappingURL=index38.cjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"index38.cjs","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;;"}
1
+ {"version":3,"file":"index38.cjs","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;;;;;;;;;;;"}
package/dist/index38.js CHANGED
@@ -1,9 +1,18 @@
1
- const root = "krc-root-bWynN";
1
+ const root = "krc-root-AouLD";
2
+ const header = "krc-header-pNze5";
3
+ const content = "krc-content-egG2e";
4
+ const footer = "krc-footer-WJw5Z";
2
5
  const styles = {
3
- root
6
+ root,
7
+ header,
8
+ content,
9
+ footer
4
10
  };
5
11
  export {
12
+ content,
6
13
  styles as default,
14
+ footer,
15
+ header,
7
16
  root
8
17
  };
9
18
  //# sourceMappingURL=index38.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index38.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;"}
1
+ {"version":3,"file":"index38.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;;;;"}
package/dist/index39.cjs CHANGED
@@ -1,24 +1,70 @@
1
1
  "use strict";
2
- Object.defineProperties(exports, { __esModule: { value: true }, [Symbol.toStringTag]: { value: "Module" } });
3
- const root = "krc-root-rzEDE";
4
- const sidebar = "krc-sidebar-ediN2";
5
- const sidebarCollapsed = "krc-sidebarCollapsed--qs43";
6
- const main = "krc-main-E8utR";
7
- const filterBar = "krc-filterBar-O8ajX";
8
- const content = "krc-content-lY5l-";
9
- const styles = {
10
- root,
11
- sidebar,
12
- sidebarCollapsed,
13
- main,
14
- filterBar,
15
- content
2
+ Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
3
+ const ICON_SIZE = {
4
+ SM: 14,
5
+ MD: 16,
6
+ LG: 18
16
7
  };
17
- exports.content = content;
18
- exports.default = styles;
19
- exports.filterBar = filterBar;
20
- exports.main = main;
21
- exports.root = root;
22
- exports.sidebar = sidebar;
23
- exports.sidebarCollapsed = sidebarCollapsed;
8
+ const SVG_VIEWBOX = "0 0 24 24";
9
+ const SVG_STROKE_WIDTH = 2;
10
+ const KEYBOARD_STEP = 2;
11
+ const VIEWPORT_MARGIN = 32;
12
+ const CONTEXT_MENU_MARGIN = 10;
13
+ const CHART_MODAL = {
14
+ MIN_WIDTH: 960,
15
+ MIN_HEIGHT: 480,
16
+ MAX_WIDTH: 2400,
17
+ MAX_HEIGHT: 1300,
18
+ DEFAULT_WIDTH: 1500,
19
+ DEFAULT_HEIGHT: 820,
20
+ FALLBACK_WIDTH: 1400,
21
+ FALLBACK_HEIGHT: 800
22
+ };
23
+ const MAX_SANKEY_NODES = 150;
24
+ const MAX_SERIES = 20;
25
+ const MAX_CATEGORIES = 20;
26
+ const MAX_SUBCATEGORIES = 10;
27
+ const CHART_COLORS = [
28
+ "#FF6B5A",
29
+ "#5B8DEF",
30
+ "#4ECDC4",
31
+ "#F7B731",
32
+ "#A55EEA",
33
+ "#26DE81",
34
+ "#FC5C65",
35
+ "#45AAF2",
36
+ "#FD9644",
37
+ "#2BCBBA",
38
+ "#D1D8E0",
39
+ "#778CA3",
40
+ "#EB3B5A",
41
+ "#3867D6",
42
+ "#20BF6B",
43
+ "#F7B731",
44
+ "#8854D0",
45
+ "#0FB9B1",
46
+ "#FA8231",
47
+ "#4B6584"
48
+ ];
49
+ const MIN_COLUMN_WIDTH = 40;
50
+ const SIDEBAR = {
51
+ WIDTH: 240,
52
+ COLLAPSED_WIDTH: 80
53
+ };
54
+ const COUNTERS_PAGE_SIZE = 100;
55
+ exports.CHART_COLORS = CHART_COLORS;
56
+ exports.CHART_MODAL = CHART_MODAL;
57
+ exports.CONTEXT_MENU_MARGIN = CONTEXT_MENU_MARGIN;
58
+ exports.COUNTERS_PAGE_SIZE = COUNTERS_PAGE_SIZE;
59
+ exports.ICON_SIZE = ICON_SIZE;
60
+ exports.KEYBOARD_STEP = KEYBOARD_STEP;
61
+ exports.MAX_CATEGORIES = MAX_CATEGORIES;
62
+ exports.MAX_SANKEY_NODES = MAX_SANKEY_NODES;
63
+ exports.MAX_SERIES = MAX_SERIES;
64
+ exports.MAX_SUBCATEGORIES = MAX_SUBCATEGORIES;
65
+ exports.MIN_COLUMN_WIDTH = MIN_COLUMN_WIDTH;
66
+ exports.SIDEBAR = SIDEBAR;
67
+ exports.SVG_STROKE_WIDTH = SVG_STROKE_WIDTH;
68
+ exports.SVG_VIEWBOX = SVG_VIEWBOX;
69
+ exports.VIEWPORT_MARGIN = VIEWPORT_MARGIN;
24
70
  //# sourceMappingURL=index39.cjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"index39.cjs","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;"}
1
+ {"version":3,"file":"index39.cjs","sources":["../src/constants.ts"],"sourcesContent":["/**\n * Shared constants for the component library.\n * Centralises magic numbers used across components.\n */\n\n/** SVG icon rendered sizes (px — used as HTML/SVG attributes, not CSS). */\nexport const ICON_SIZE = {\n SM: 14,\n MD: 16,\n LG: 18,\n} as const;\n\n/** Standard SVG viewBox for 24×24 icon grid. */\nexport const SVG_VIEWBOX = '0 0 24 24';\n\n/** Standard SVG stroke width. */\nexport const SVG_STROKE_WIDTH = 2;\n\n/** Keyboard accessibility step (percentage points per arrow press). */\nexport const KEYBOARD_STEP = 2;\n\n/** Viewport safety margin (px — used in JS calculations with DOM APIs). */\nexport const VIEWPORT_MARGIN = 32;\n\n/** ContextMenu viewport margin (px). */\nexport const CONTEXT_MENU_MARGIN = 10;\n\n/** ChartExpandModal dimension constraints (px — used with window.innerWidth). */\nexport const CHART_MODAL = {\n MIN_WIDTH: 960,\n MIN_HEIGHT: 480,\n MAX_WIDTH: 2400,\n MAX_HEIGHT: 1300,\n DEFAULT_WIDTH: 1500,\n DEFAULT_HEIGHT: 820,\n FALLBACK_WIDTH: 1400,\n FALLBACK_HEIGHT: 800,\n} as const;\n\n/** Maximum Sankey nodes before truncation warning. */\nexport const MAX_SANKEY_NODES = 150;\n\n/** Maximum stacked series before \"Other\" aggregation. */\nexport const MAX_SERIES = 20;\n\n/** Maximum categories in stacked bar chart. */\nexport const MAX_CATEGORIES = 20;\n\n/** Maximum subcategories per category. */\nexport const MAX_SUBCATEGORIES = 10;\n\n/** Time range preset durations in milliseconds. */\nexport const TIME_PRESET_MS = {\n '1h': 3_600_000,\n '6h': 21_600_000,\n '24h': 86_400_000,\n '7d': 604_800_000,\n '30d': 2_592_000_000,\n} as const;\n\n/** Default chart color palette. */\nexport const CHART_COLORS = [\n '#FF6B5A', '#5B8DEF', '#4ECDC4', '#F7B731', '#A55EEA',\n '#26DE81', '#FC5C65', '#45AAF2', '#FD9644', '#2BCBBA',\n '#D1D8E0', '#778CA3', '#EB3B5A', '#3867D6', '#20BF6B',\n '#F7B731', '#8854D0', '#0FB9B1', '#FA8231', '#4B6584',\n] as const;\n\n/** Minimum column width for resizable tables (px — used in JS calculations). */\nexport const MIN_COLUMN_WIDTH = 40;\n\n/** Sidebar dimension constants (px — used as inline styles). */\nexport const SIDEBAR = {\n WIDTH: 240,\n COLLAPSED_WIDTH: 80,\n} as const;\n\n/** Counters analysis pagination. */\nexport const COUNTERS_PAGE_SIZE = 100;\n"],"names":[],"mappings":";;AAMO,MAAM,YAAY;AAAA,EACvB,IAAI;AAAA,EACJ,IAAI;AAAA,EACJ,IAAI;AACN;AAGO,MAAM,cAAc;AAGpB,MAAM,mBAAmB;AAGzB,MAAM,gBAAgB;AAGtB,MAAM,kBAAkB;AAGxB,MAAM,sBAAsB;AAG5B,MAAM,cAAc;AAAA,EACzB,WAAW;AAAA,EACX,YAAY;AAAA,EACZ,WAAW;AAAA,EACX,YAAY;AAAA,EACZ,eAAe;AAAA,EACf,gBAAgB;AAAA,EAChB,gBAAgB;AAAA,EAChB,iBAAiB;AACnB;AAGO,MAAM,mBAAmB;AAGzB,MAAM,aAAa;AAGnB,MAAM,iBAAiB;AAGvB,MAAM,oBAAoB;AAY1B,MAAM,eAAe;AAAA,EAC1B;AAAA,EAAW;AAAA,EAAW;AAAA,EAAW;AAAA,EAAW;AAAA,EAC5C;AAAA,EAAW;AAAA,EAAW;AAAA,EAAW;AAAA,EAAW;AAAA,EAC5C;AAAA,EAAW;AAAA,EAAW;AAAA,EAAW;AAAA,EAAW;AAAA,EAC5C;AAAA,EAAW;AAAA,EAAW;AAAA,EAAW;AAAA,EAAW;AAC9C;AAGO,MAAM,mBAAmB;AAGzB,MAAM,UAAU;AAAA,EACrB,OAAO;AAAA,EACP,iBAAiB;AACnB;AAGO,MAAM,qBAAqB;;;;;;;;;;;;;;;;"}