@ktnpm_devops/react-component 0.4.1 → 0.6.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 (382) hide show
  1. package/dist/charts/Sparkline/Sparkline.d.ts +4 -0
  2. package/dist/charts/Sparkline/Sparkline.d.ts.map +1 -0
  3. package/dist/charts/Sparkline/Sparkline.types.d.ts +15 -0
  4. package/dist/charts/Sparkline/Sparkline.types.d.ts.map +1 -0
  5. package/dist/charts/Sparkline/index.d.ts +3 -0
  6. package/dist/charts/Sparkline/index.d.ts.map +1 -0
  7. package/dist/composites/Accordion/Accordion.d.ts +5 -0
  8. package/dist/composites/Accordion/Accordion.d.ts.map +1 -0
  9. package/dist/composites/Accordion/Accordion.types.d.ts +15 -0
  10. package/dist/composites/Accordion/Accordion.types.d.ts.map +1 -0
  11. package/dist/composites/Accordion/index.d.ts +3 -0
  12. package/dist/composites/Accordion/index.d.ts.map +1 -0
  13. package/dist/composites/DatePickerDropdown/DatePickerDropdown.d.ts +7 -0
  14. package/dist/composites/DatePickerDropdown/DatePickerDropdown.d.ts.map +1 -0
  15. package/dist/composites/DatePickerDropdown/DatePickerDropdown.types.d.ts +20 -0
  16. package/dist/composites/DatePickerDropdown/DatePickerDropdown.types.d.ts.map +1 -0
  17. package/dist/composites/DatePickerDropdown/index.d.ts +3 -0
  18. package/dist/composites/DatePickerDropdown/index.d.ts.map +1 -0
  19. package/dist/composites/FilterDropdown/FilterDropdown.d.ts +7 -0
  20. package/dist/composites/FilterDropdown/FilterDropdown.d.ts.map +1 -0
  21. package/dist/composites/FilterDropdown/FilterDropdown.types.d.ts +29 -0
  22. package/dist/composites/FilterDropdown/FilterDropdown.types.d.ts.map +1 -0
  23. package/dist/composites/FilterDropdown/index.d.ts +3 -0
  24. package/dist/composites/FilterDropdown/index.d.ts.map +1 -0
  25. package/dist/constants.d.ts +9 -0
  26. package/dist/constants.d.ts.map +1 -1
  27. package/dist/data/HeatmapMatrix/HeatmapMatrix.d.ts +4 -0
  28. package/dist/data/HeatmapMatrix/HeatmapMatrix.d.ts.map +1 -0
  29. package/dist/data/HeatmapMatrix/HeatmapMatrix.types.d.ts +40 -0
  30. package/dist/data/HeatmapMatrix/HeatmapMatrix.types.d.ts.map +1 -0
  31. package/dist/data/HeatmapMatrix/index.d.ts +3 -0
  32. package/dist/data/HeatmapMatrix/index.d.ts.map +1 -0
  33. package/dist/index.cjs +51 -29
  34. package/dist/index.cjs.map +1 -1
  35. package/dist/index.d.ts +18 -0
  36. package/dist/index.d.ts.map +1 -1
  37. package/dist/index.js +52 -30
  38. package/dist/index.js.map +1 -1
  39. package/dist/index10.cjs +14 -15
  40. package/dist/index10.cjs.map +1 -1
  41. package/dist/index10.js +15 -16
  42. package/dist/index10.js.map +1 -1
  43. package/dist/index11.cjs +15 -4
  44. package/dist/index11.cjs.map +1 -1
  45. package/dist/index11.js +15 -4
  46. package/dist/index11.js.map +1 -1
  47. package/dist/index12.cjs +4 -16
  48. package/dist/index12.cjs.map +1 -1
  49. package/dist/index12.js +4 -16
  50. package/dist/index12.js.map +1 -1
  51. package/dist/index13.cjs +16 -10
  52. package/dist/index13.cjs.map +1 -1
  53. package/dist/index13.js +16 -10
  54. package/dist/index13.js.map +1 -1
  55. package/dist/index14.cjs +10 -100
  56. package/dist/index14.cjs.map +1 -1
  57. package/dist/index14.js +11 -101
  58. package/dist/index14.js.map +1 -1
  59. package/dist/index15.cjs +100 -20
  60. package/dist/index15.cjs.map +1 -1
  61. package/dist/index15.js +101 -21
  62. package/dist/index15.js.map +1 -1
  63. package/dist/index16.cjs +20 -43
  64. package/dist/index16.cjs.map +1 -1
  65. package/dist/index16.js +21 -44
  66. package/dist/index16.js.map +1 -1
  67. package/dist/index17.cjs +38 -85
  68. package/dist/index17.cjs.map +1 -1
  69. package/dist/index17.js +40 -87
  70. package/dist/index17.js.map +1 -1
  71. package/dist/index18.cjs +85 -153
  72. package/dist/index18.cjs.map +1 -1
  73. package/dist/index18.js +87 -155
  74. package/dist/index18.js.map +1 -1
  75. package/dist/index19.cjs +150 -128
  76. package/dist/index19.cjs.map +1 -1
  77. package/dist/index19.js +150 -128
  78. package/dist/index19.js.map +1 -1
  79. package/dist/index20.cjs +121 -106
  80. package/dist/index20.cjs.map +1 -1
  81. package/dist/index20.js +122 -107
  82. package/dist/index20.js.map +1 -1
  83. package/dist/index21.cjs +121 -17
  84. package/dist/index21.cjs.map +1 -1
  85. package/dist/index21.js +121 -17
  86. package/dist/index21.js.map +1 -1
  87. package/dist/index22.cjs +17 -8
  88. package/dist/index22.cjs.map +1 -1
  89. package/dist/index22.js +18 -9
  90. package/dist/index22.js.map +1 -1
  91. package/dist/index23.cjs +152 -119
  92. package/dist/index23.cjs.map +1 -1
  93. package/dist/index23.js +153 -120
  94. package/dist/index23.js.map +1 -1
  95. package/dist/index24.cjs +125 -33
  96. package/dist/index24.cjs.map +1 -1
  97. package/dist/index24.js +126 -34
  98. package/dist/index24.js.map +1 -1
  99. package/dist/index25.cjs +71 -218
  100. package/dist/index25.cjs.map +1 -1
  101. package/dist/index25.js +73 -220
  102. package/dist/index25.js.map +1 -1
  103. package/dist/index26.cjs +6 -32
  104. package/dist/index26.cjs.map +1 -1
  105. package/dist/index26.js +7 -33
  106. package/dist/index26.js.map +1 -1
  107. package/dist/index27.cjs +120 -67
  108. package/dist/index27.cjs.map +1 -1
  109. package/dist/index27.js +121 -68
  110. package/dist/index27.js.map +1 -1
  111. package/dist/index28.cjs +37 -58
  112. package/dist/index28.cjs.map +1 -1
  113. package/dist/index28.js +38 -59
  114. package/dist/index28.js.map +1 -1
  115. package/dist/index29.cjs +208 -137
  116. package/dist/index29.cjs.map +1 -1
  117. package/dist/index29.js +209 -138
  118. package/dist/index29.js.map +1 -1
  119. package/dist/index30.cjs +32 -6
  120. package/dist/index30.cjs.map +1 -1
  121. package/dist/index30.js +33 -7
  122. package/dist/index30.js.map +1 -1
  123. package/dist/index31.cjs +110 -17
  124. package/dist/index31.cjs.map +1 -1
  125. package/dist/index31.js +111 -18
  126. package/dist/index31.js.map +1 -1
  127. package/dist/index32.cjs +72 -71
  128. package/dist/index32.cjs.map +1 -1
  129. package/dist/index32.js +74 -73
  130. package/dist/index32.js.map +1 -1
  131. package/dist/index33.cjs +57 -141
  132. package/dist/index33.cjs.map +1 -1
  133. package/dist/index33.js +59 -143
  134. package/dist/index33.js.map +1 -1
  135. package/dist/index34.cjs +128 -80
  136. package/dist/index34.cjs.map +1 -1
  137. package/dist/index34.js +126 -78
  138. package/dist/index34.js.map +1 -1
  139. package/dist/index35.cjs +72 -6
  140. package/dist/index35.cjs.map +1 -1
  141. package/dist/index35.js +72 -6
  142. package/dist/index35.js.map +1 -1
  143. package/dist/index36.cjs +7 -215
  144. package/dist/index36.cjs.map +1 -1
  145. package/dist/index36.js +8 -216
  146. package/dist/index36.js.map +1 -1
  147. package/dist/index37.cjs +17 -8
  148. package/dist/index37.cjs.map +1 -1
  149. package/dist/index37.js +18 -9
  150. package/dist/index37.js.map +1 -1
  151. package/dist/index38.cjs +79 -16
  152. package/dist/index38.cjs.map +1 -1
  153. package/dist/index38.js +78 -15
  154. package/dist/index38.js.map +1 -1
  155. package/dist/index39.cjs +144 -27
  156. package/dist/index39.cjs.map +1 -1
  157. package/dist/index39.js +143 -26
  158. package/dist/index39.js.map +1 -1
  159. package/dist/index40.cjs +66 -70
  160. package/dist/index40.cjs.map +1 -1
  161. package/dist/index40.js +65 -69
  162. package/dist/index40.js.map +1 -1
  163. package/dist/index41.cjs +106 -15
  164. package/dist/index41.cjs.map +1 -1
  165. package/dist/index41.js +105 -14
  166. package/dist/index41.js.map +1 -1
  167. package/dist/index42.cjs +49 -25
  168. package/dist/index42.cjs.map +1 -1
  169. package/dist/index42.js +48 -24
  170. package/dist/index42.js.map +1 -1
  171. package/dist/index43.cjs +8 -7
  172. package/dist/index43.cjs.map +1 -1
  173. package/dist/index43.js +7 -6
  174. package/dist/index43.js.map +1 -1
  175. package/dist/index44.cjs +218 -7
  176. package/dist/index44.cjs.map +1 -1
  177. package/dist/index44.js +217 -6
  178. package/dist/index44.js.map +1 -1
  179. package/dist/index45.cjs +9 -67
  180. package/dist/index45.cjs.map +1 -1
  181. package/dist/index45.js +9 -67
  182. package/dist/index45.js.map +1 -1
  183. package/dist/index46.cjs +19 -19
  184. package/dist/index46.cjs.map +1 -1
  185. package/dist/index46.js +18 -18
  186. package/dist/index46.js.map +1 -1
  187. package/dist/index47.cjs +67 -57
  188. package/dist/index47.cjs.map +1 -1
  189. package/dist/index47.js +66 -56
  190. package/dist/index47.js.map +1 -1
  191. package/dist/index48.cjs +15 -39
  192. package/dist/index48.cjs.map +1 -1
  193. package/dist/index48.js +15 -39
  194. package/dist/index48.js.map +1 -1
  195. package/dist/index49.cjs +2 -50
  196. package/dist/index49.cjs.map +1 -1
  197. package/dist/index49.js +3 -51
  198. package/dist/index49.js.map +1 -1
  199. package/dist/index50.cjs +15 -18
  200. package/dist/index50.cjs.map +1 -1
  201. package/dist/index50.js +15 -18
  202. package/dist/index50.js.map +1 -1
  203. package/dist/index51.cjs +76 -33
  204. package/dist/index51.cjs.map +1 -1
  205. package/dist/index51.js +75 -32
  206. package/dist/index51.js.map +1 -1
  207. package/dist/index52.cjs +13 -13
  208. package/dist/index52.js +14 -14
  209. package/dist/index53.cjs +22 -10
  210. package/dist/index53.cjs.map +1 -1
  211. package/dist/index53.js +23 -11
  212. package/dist/index53.js.map +1 -1
  213. package/dist/index54.cjs +20 -2
  214. package/dist/index54.cjs.map +1 -1
  215. package/dist/index54.js +21 -3
  216. package/dist/index54.js.map +1 -1
  217. package/dist/index55.cjs +23 -2
  218. package/dist/index55.cjs.map +1 -1
  219. package/dist/index55.js +24 -3
  220. package/dist/index55.js.map +1 -1
  221. package/dist/index56.cjs +2 -20
  222. package/dist/index56.cjs.map +1 -1
  223. package/dist/index56.js +3 -21
  224. package/dist/index56.js.map +1 -1
  225. package/dist/index57.cjs +20 -5
  226. package/dist/index57.cjs.map +1 -1
  227. package/dist/index57.js +20 -5
  228. package/dist/index57.js.map +1 -1
  229. package/dist/index58.cjs +5 -80
  230. package/dist/index58.cjs.map +1 -1
  231. package/dist/index58.js +6 -81
  232. package/dist/index58.js.map +1 -1
  233. package/dist/index59.cjs +8 -8
  234. package/dist/index59.js +8 -8
  235. package/dist/index60.cjs +10 -28
  236. package/dist/index60.cjs.map +1 -1
  237. package/dist/index60.js +11 -29
  238. package/dist/index60.js.map +1 -1
  239. package/dist/index61.cjs +64 -34
  240. package/dist/index61.cjs.map +1 -1
  241. package/dist/index61.js +64 -34
  242. package/dist/index61.js.map +1 -1
  243. package/dist/index62.cjs +10 -16
  244. package/dist/index62.cjs.map +1 -1
  245. package/dist/index62.js +10 -16
  246. package/dist/index62.js.map +1 -1
  247. package/dist/index63.cjs +2 -38
  248. package/dist/index63.cjs.map +1 -1
  249. package/dist/index63.js +3 -39
  250. package/dist/index63.js.map +1 -1
  251. package/dist/index64.cjs +32 -50
  252. package/dist/index64.cjs.map +1 -1
  253. package/dist/index64.js +32 -50
  254. package/dist/index64.js.map +1 -1
  255. package/dist/index65.cjs +19 -13
  256. package/dist/index65.cjs.map +1 -1
  257. package/dist/index65.js +20 -14
  258. package/dist/index65.js.map +1 -1
  259. package/dist/index66.cjs +13 -16
  260. package/dist/index66.cjs.map +1 -1
  261. package/dist/index66.js +14 -17
  262. package/dist/index66.js.map +1 -1
  263. package/dist/index67.cjs +22 -31
  264. package/dist/index67.cjs.map +1 -1
  265. package/dist/index67.js +23 -32
  266. package/dist/index67.js.map +1 -1
  267. package/dist/index68.cjs +40 -134
  268. package/dist/index68.cjs.map +1 -1
  269. package/dist/index68.js +39 -133
  270. package/dist/index68.js.map +1 -1
  271. package/dist/index69.cjs +15 -36
  272. package/dist/index69.cjs.map +1 -1
  273. package/dist/index69.js +16 -37
  274. package/dist/index69.js.map +1 -1
  275. package/dist/index70.cjs +21 -0
  276. package/dist/index70.cjs.map +1 -0
  277. package/dist/index70.js +21 -0
  278. package/dist/index70.js.map +1 -0
  279. package/dist/index71.cjs +24 -0
  280. package/dist/index71.cjs.map +1 -0
  281. package/dist/index71.js +24 -0
  282. package/dist/index71.js.map +1 -0
  283. package/dist/index72.cjs +12 -0
  284. package/dist/index72.cjs.map +1 -0
  285. package/dist/index72.js +12 -0
  286. package/dist/index72.js.map +1 -0
  287. package/dist/index73.cjs +45 -0
  288. package/dist/index73.cjs.map +1 -0
  289. package/dist/index73.js +45 -0
  290. package/dist/index73.js.map +1 -0
  291. package/dist/index74.cjs +24 -0
  292. package/dist/index74.cjs.map +1 -0
  293. package/dist/index74.js +24 -0
  294. package/dist/index74.js.map +1 -0
  295. package/dist/index75.cjs +45 -0
  296. package/dist/index75.cjs.map +1 -0
  297. package/dist/index75.js +45 -0
  298. package/dist/index75.js.map +1 -0
  299. package/dist/index76.cjs +9 -0
  300. package/dist/index76.cjs.map +1 -0
  301. package/dist/index76.js +9 -0
  302. package/dist/index76.js.map +1 -0
  303. package/dist/index77.cjs +60 -0
  304. package/dist/index77.cjs.map +1 -0
  305. package/dist/index77.js +60 -0
  306. package/dist/index77.js.map +1 -0
  307. package/dist/index78.cjs +33 -0
  308. package/dist/index78.cjs.map +1 -0
  309. package/dist/index78.js +33 -0
  310. package/dist/index78.js.map +1 -0
  311. package/dist/index79.cjs +57 -0
  312. package/dist/index79.cjs.map +1 -0
  313. package/dist/index79.js +57 -0
  314. package/dist/index79.js.map +1 -0
  315. package/dist/index80.cjs +54 -0
  316. package/dist/index80.cjs.map +1 -0
  317. package/dist/index80.js +54 -0
  318. package/dist/index80.js.map +1 -0
  319. package/dist/index81.cjs +39 -0
  320. package/dist/index81.cjs.map +1 -0
  321. package/dist/index81.js +39 -0
  322. package/dist/index81.js.map +1 -0
  323. package/dist/index82.cjs +24 -0
  324. package/dist/index82.cjs.map +1 -0
  325. package/dist/index82.js +24 -0
  326. package/dist/index82.js.map +1 -0
  327. package/dist/index83.cjs +60 -0
  328. package/dist/index83.cjs.map +1 -0
  329. package/dist/index83.js +60 -0
  330. package/dist/index83.js.map +1 -0
  331. package/dist/index84.cjs +24 -0
  332. package/dist/index84.cjs.map +1 -0
  333. package/dist/index84.js +24 -0
  334. package/dist/index84.js.map +1 -0
  335. package/dist/index85.cjs +87 -0
  336. package/dist/index85.cjs.map +1 -0
  337. package/dist/index85.js +87 -0
  338. package/dist/index85.js.map +1 -0
  339. package/dist/index86.cjs +136 -0
  340. package/dist/index86.cjs.map +1 -0
  341. package/dist/index86.js +136 -0
  342. package/dist/index86.js.map +1 -0
  343. package/dist/index87.cjs +48 -0
  344. package/dist/index87.cjs.map +1 -0
  345. package/dist/index87.js +48 -0
  346. package/dist/index87.js.map +1 -0
  347. package/dist/index88.cjs +36 -0
  348. package/dist/index88.cjs.map +1 -0
  349. package/dist/index88.js +36 -0
  350. package/dist/index88.js.map +1 -0
  351. package/dist/index9.cjs +45 -14
  352. package/dist/index9.cjs.map +1 -1
  353. package/dist/index9.js +46 -15
  354. package/dist/index9.js.map +1 -1
  355. package/dist/primitives/Pagination/Pagination.d.ts +4 -0
  356. package/dist/primitives/Pagination/Pagination.d.ts.map +1 -0
  357. package/dist/primitives/Pagination/Pagination.types.d.ts +21 -0
  358. package/dist/primitives/Pagination/Pagination.types.d.ts.map +1 -0
  359. package/dist/primitives/Pagination/index.d.ts +3 -0
  360. package/dist/primitives/Pagination/index.d.ts.map +1 -0
  361. package/dist/primitives/SegmentedControl/SegmentedControl.d.ts +8 -0
  362. package/dist/primitives/SegmentedControl/SegmentedControl.d.ts.map +1 -0
  363. package/dist/primitives/SegmentedControl/SegmentedControl.types.d.ts +25 -0
  364. package/dist/primitives/SegmentedControl/SegmentedControl.types.d.ts.map +1 -0
  365. package/dist/primitives/SegmentedControl/index.d.ts +3 -0
  366. package/dist/primitives/SegmentedControl/index.d.ts.map +1 -0
  367. package/dist/primitives/StatCard/StatCard.d.ts +4 -0
  368. package/dist/primitives/StatCard/StatCard.d.ts.map +1 -0
  369. package/dist/primitives/StatCard/StatCard.types.d.ts +16 -0
  370. package/dist/primitives/StatCard/StatCard.types.d.ts.map +1 -0
  371. package/dist/primitives/StatCard/index.d.ts +3 -0
  372. package/dist/primitives/StatCard/index.d.ts.map +1 -0
  373. package/dist/primitives/Toast/Toast.d.ts +5 -0
  374. package/dist/primitives/Toast/Toast.d.ts.map +1 -0
  375. package/dist/primitives/Toast/Toast.types.d.ts +28 -0
  376. package/dist/primitives/Toast/Toast.types.d.ts.map +1 -0
  377. package/dist/primitives/Toast/ToastProvider.d.ts +5 -0
  378. package/dist/primitives/Toast/ToastProvider.d.ts.map +1 -0
  379. package/dist/primitives/Toast/index.d.ts +4 -0
  380. package/dist/primitives/Toast/index.d.ts.map +1 -0
  381. package/dist/style.css +626 -0
  382. package/package.json +1 -1
package/dist/index44.js CHANGED
@@ -1,9 +1,220 @@
1
- const root = "krc-root-pJYpn";
2
- const styles = {
3
- root
4
- };
1
+ import { jsxs, jsx } from "react/jsx-runtime";
2
+ import { useMemo, useCallback } from "react";
3
+ import { clsx } from "./index48.js";
4
+ import ReactECharts from "echarts-for-react";
5
+ import { MAX_SERIES, CHART_COLORS } from "./index51.js";
6
+ import styles from "./index75.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";
5
217
  export {
6
- styles as default,
7
- root
218
+ TemporalTrendChartCard
8
219
  };
9
220
  //# sourceMappingURL=index44.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index44.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;"}
1
+ {"version":3,"file":"index44.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/index45.cjs CHANGED
@@ -1,70 +1,12 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
3
- const ICON_SIZE = {
4
- SM: 14,
5
- MD: 16,
6
- LG: 18
7
- };
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;
3
+ const jsxRuntime = require("react/jsx-runtime");
4
+ const react = require("react");
5
+ const clsx = require("./index48.cjs");
6
+ const Textarea_module = require("./index49.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;
70
12
  //# sourceMappingURL=index45.cjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"index45.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;;;;;;;;;;;;;;;;"}
1
+ {"version":3,"file":"index45.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/index45.js CHANGED
@@ -1,70 +1,12 @@
1
- const ICON_SIZE = {
2
- SM: 14,
3
- MD: 16,
4
- LG: 18
5
- };
6
- const SVG_VIEWBOX = "0 0 24 24";
7
- const SVG_STROKE_WIDTH = 2;
8
- const KEYBOARD_STEP = 2;
9
- const VIEWPORT_MARGIN = 32;
10
- const CONTEXT_MENU_MARGIN = 10;
11
- const CHART_MODAL = {
12
- MIN_WIDTH: 960,
13
- MIN_HEIGHT: 480,
14
- MAX_WIDTH: 2400,
15
- MAX_HEIGHT: 1300,
16
- DEFAULT_WIDTH: 1500,
17
- DEFAULT_HEIGHT: 820,
18
- FALLBACK_WIDTH: 1400,
19
- FALLBACK_HEIGHT: 800
20
- };
21
- const MAX_SANKEY_NODES = 150;
22
- const MAX_SERIES = 20;
23
- const MAX_CATEGORIES = 20;
24
- const MAX_SUBCATEGORIES = 10;
25
- const CHART_COLORS = [
26
- "#FF6B5A",
27
- "#5B8DEF",
28
- "#4ECDC4",
29
- "#F7B731",
30
- "#A55EEA",
31
- "#26DE81",
32
- "#FC5C65",
33
- "#45AAF2",
34
- "#FD9644",
35
- "#2BCBBA",
36
- "#D1D8E0",
37
- "#778CA3",
38
- "#EB3B5A",
39
- "#3867D6",
40
- "#20BF6B",
41
- "#F7B731",
42
- "#8854D0",
43
- "#0FB9B1",
44
- "#FA8231",
45
- "#4B6584"
46
- ];
47
- const MIN_COLUMN_WIDTH = 40;
48
- const SIDEBAR = {
49
- WIDTH: 240,
50
- COLLAPSED_WIDTH: 80
51
- };
52
- const COUNTERS_PAGE_SIZE = 100;
1
+ import { jsx } from "react/jsx-runtime";
2
+ import { forwardRef } from "react";
3
+ import { clsx } from "./index48.js";
4
+ import styles from "./index49.js";
5
+ const Textarea = forwardRef(
6
+ ({ className, ...props }, ref) => /* @__PURE__ */ jsx("textarea", { ref, className: clsx(styles.root, className), ...props })
7
+ );
8
+ Textarea.displayName = "Textarea";
53
9
  export {
54
- CHART_COLORS,
55
- CHART_MODAL,
56
- CONTEXT_MENU_MARGIN,
57
- COUNTERS_PAGE_SIZE,
58
- ICON_SIZE,
59
- KEYBOARD_STEP,
60
- MAX_CATEGORIES,
61
- MAX_SANKEY_NODES,
62
- MAX_SERIES,
63
- MAX_SUBCATEGORIES,
64
- MIN_COLUMN_WIDTH,
65
- SIDEBAR,
66
- SVG_STROKE_WIDTH,
67
- SVG_VIEWBOX,
68
- VIEWPORT_MARGIN
10
+ Textarea
69
11
  };
70
12
  //# sourceMappingURL=index45.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index45.js","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;"}
1
+ {"version":3,"file":"index45.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/index46.cjs CHANGED
@@ -1,21 +1,21 @@
1
1
  "use strict";
2
- Object.defineProperties(exports, { __esModule: { value: true }, [Symbol.toStringTag]: { value: "Module" } });
3
- const root = "krc-root-LQf3S";
4
- const item = "krc-item-Y5RvK";
5
- const disabled = "krc-disabled-wnQRZ";
6
- const focused = "krc-focused-hDoa3";
7
- const icon = "krc-icon-q-Jmu";
8
- const styles = {
9
- root,
10
- item,
11
- disabled,
12
- focused,
13
- icon
14
- };
15
- exports.default = styles;
16
- exports.disabled = disabled;
17
- exports.focused = focused;
18
- exports.icon = icon;
19
- exports.item = item;
20
- exports.root = root;
2
+ Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
3
+ const jsxRuntime = require("react/jsx-runtime");
4
+ const react = require("react");
5
+ const clsx = require("./index48.cjs");
6
+ const Toast_module = require("./index50.cjs");
7
+ const Toast = react.forwardRef(
8
+ ({ variant = "default", className, role = "status", children, ...props }, ref) => /* @__PURE__ */ jsxRuntime.jsx(
9
+ "div",
10
+ {
11
+ ref,
12
+ role,
13
+ className: clsx.clsx(Toast_module.default.toast, variant !== "default" && Toast_module.default[variant], className),
14
+ ...props,
15
+ children
16
+ }
17
+ )
18
+ );
19
+ Toast.displayName = "Toast";
20
+ exports.Toast = Toast;
21
21
  //# sourceMappingURL=index46.cjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"index46.cjs","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;"}
1
+ {"version":3,"file":"index46.cjs","sources":["../src/primitives/Toast/Toast.tsx"],"sourcesContent":["import { forwardRef } from 'react';\nimport clsx from 'clsx';\nimport type { ToastProps } from './Toast.types';\nimport styles from './Toast.module.css';\n\n/** Presentational toast bubble. Usually rendered by `ToastProvider`, exported for standalone use. */\nexport const Toast = forwardRef<HTMLDivElement, ToastProps>(\n ({ variant = 'default', className, role = 'status', children, ...props }, ref) => (\n <div\n ref={ref}\n role={role}\n className={clsx(styles.toast, variant !== 'default' && styles[variant], className)}\n {...props}\n >\n {children}\n </div>\n ),\n);\n\nToast.displayName = 'Toast';\n"],"names":["forwardRef","jsx","clsx","styles"],"mappings":";;;;;;AAMO,MAAM,QAAQA,MAAAA;AAAAA,EACnB,CAAC,EAAE,UAAU,WAAW,WAAW,OAAO,UAAU,UAAU,GAAG,SAAS,QACxEC,2BAAAA;AAAAA,IAAC;AAAA,IAAA;AAAA,MACC;AAAA,MACA;AAAA,MACA,WAAWC,KAAAA,KAAKC,aAAAA,QAAO,OAAO,YAAY,aAAaA,aAAAA,QAAO,OAAO,GAAG,SAAS;AAAA,MAChF,GAAG;AAAA,MAEH;AAAA,IAAA;AAAA,EAAA;AAGP;AAEA,MAAM,cAAc;;"}
package/dist/index46.js CHANGED
@@ -1,21 +1,21 @@
1
- const root = "krc-root-LQf3S";
2
- const item = "krc-item-Y5RvK";
3
- const disabled = "krc-disabled-wnQRZ";
4
- const focused = "krc-focused-hDoa3";
5
- const icon = "krc-icon-q-Jmu";
6
- const styles = {
7
- root,
8
- item,
9
- disabled,
10
- focused,
11
- icon
12
- };
1
+ import { jsx } from "react/jsx-runtime";
2
+ import { forwardRef } from "react";
3
+ import { clsx } from "./index48.js";
4
+ import styles from "./index50.js";
5
+ const Toast = forwardRef(
6
+ ({ variant = "default", className, role = "status", children, ...props }, ref) => /* @__PURE__ */ jsx(
7
+ "div",
8
+ {
9
+ ref,
10
+ role,
11
+ className: clsx(styles.toast, variant !== "default" && styles[variant], className),
12
+ ...props,
13
+ children
14
+ }
15
+ )
16
+ );
17
+ Toast.displayName = "Toast";
13
18
  export {
14
- styles as default,
15
- disabled,
16
- focused,
17
- icon,
18
- item,
19
- root
19
+ Toast
20
20
  };
21
21
  //# sourceMappingURL=index46.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index46.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;;;;;;"}
1
+ {"version":3,"file":"index46.js","sources":["../src/primitives/Toast/Toast.tsx"],"sourcesContent":["import { forwardRef } from 'react';\nimport clsx from 'clsx';\nimport type { ToastProps } from './Toast.types';\nimport styles from './Toast.module.css';\n\n/** Presentational toast bubble. Usually rendered by `ToastProvider`, exported for standalone use. */\nexport const Toast = forwardRef<HTMLDivElement, ToastProps>(\n ({ variant = 'default', className, role = 'status', children, ...props }, ref) => (\n <div\n ref={ref}\n role={role}\n className={clsx(styles.toast, variant !== 'default' && styles[variant], className)}\n {...props}\n >\n {children}\n </div>\n ),\n);\n\nToast.displayName = 'Toast';\n"],"names":[],"mappings":";;;;AAMO,MAAM,QAAQ;AAAA,EACnB,CAAC,EAAE,UAAU,WAAW,WAAW,OAAO,UAAU,UAAU,GAAG,SAAS,QACxE;AAAA,IAAC;AAAA,IAAA;AAAA,MACC;AAAA,MACA;AAAA,MACA,WAAW,KAAK,OAAO,OAAO,YAAY,aAAa,OAAO,OAAO,GAAG,SAAS;AAAA,MAChF,GAAG;AAAA,MAEH;AAAA,IAAA;AAAA,EAAA;AAGP;AAEA,MAAM,cAAc;"}