@salesmind-ai/design-system 0.6.0 → 0.7.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 (257) hide show
  1. package/README.md +2 -0
  2. package/dist/Anton-Regular-MLEXVTB2.woff2 +0 -0
  3. package/dist/admin/index.cjs +5 -61
  4. package/dist/admin/index.css +0 -3918
  5. package/dist/admin/index.css.map +1 -1
  6. package/dist/admin/index.d.cts +1 -422
  7. package/dist/admin/index.d.ts +1 -422
  8. package/dist/admin/index.js +1 -5
  9. package/dist/blog/index.cjs +13 -34
  10. package/dist/blog/index.css +0 -579
  11. package/dist/blog/index.css.map +1 -1
  12. package/dist/blog/index.d.cts +1 -54
  13. package/dist/blog/index.d.ts +1 -54
  14. package/dist/blog/index.js +5 -6
  15. package/dist/charts/index.cjs +0 -46
  16. package/dist/charts/index.d.cts +1 -452
  17. package/dist/charts/index.d.ts +1 -452
  18. package/dist/charts/index.js +1 -3
  19. package/dist/{chunk-HDVAMYSG.js → chunk-27Y5ESMM.js} +7 -2
  20. package/dist/chunk-27Y5ESMM.js.map +1 -0
  21. package/dist/{chunk-YTYDQBVY.cjs → chunk-2VVRZBUR.cjs} +4 -4
  22. package/dist/{chunk-GQELL2MF.cjs → chunk-3NS6X2R4.cjs} +20 -203
  23. package/dist/chunk-3NS6X2R4.cjs.map +1 -0
  24. package/dist/{chunk-XEX2AEZK.cjs → chunk-65DTHLVX.cjs} +66 -186
  25. package/dist/chunk-65DTHLVX.cjs.map +1 -0
  26. package/dist/{chunk-QALDZ7WQ.js → chunk-6BUS7RMS.js} +21 -198
  27. package/dist/chunk-6BUS7RMS.js.map +1 -0
  28. package/dist/{chunk-BJZ2DKS5.cjs → chunk-6QIQCUYC.cjs} +11 -10
  29. package/dist/chunk-6QIQCUYC.cjs.map +1 -0
  30. package/dist/{chunk-H2Y6BSTL.cjs → chunk-7EUR3AKV.cjs} +1 -1
  31. package/dist/chunk-7EUR3AKV.cjs.map +1 -0
  32. package/dist/{chunk-VFJZQQZU.js → chunk-AMNY5TS3.js} +11 -10
  33. package/dist/chunk-AMNY5TS3.js.map +1 -0
  34. package/dist/{chunk-YJ6C3EKW.js → chunk-CLXLQCNQ.js} +52 -168
  35. package/dist/chunk-CLXLQCNQ.js.map +1 -0
  36. package/dist/{chunk-H2KQ3WSH.cjs → chunk-CVLD5RQK.cjs} +12 -14
  37. package/dist/chunk-CVLD5RQK.cjs.map +1 -0
  38. package/dist/chunk-EPD4ZEPY.cjs +344 -0
  39. package/dist/chunk-EPD4ZEPY.cjs.map +1 -0
  40. package/dist/chunk-FXYOSA4E.cjs +118 -0
  41. package/dist/chunk-FXYOSA4E.cjs.map +1 -0
  42. package/dist/{chunk-ECXBTUH6.cjs → chunk-GPHQGLR5.cjs} +27 -204
  43. package/dist/chunk-GPHQGLR5.cjs.map +1 -0
  44. package/dist/{chunk-Y26OHHMX.js → chunk-HHQ6J7B6.js} +513 -888
  45. package/dist/chunk-HHQ6J7B6.js.map +1 -0
  46. package/dist/chunk-JPUJWI7F.cjs +73 -0
  47. package/dist/chunk-JPUJWI7F.cjs.map +1 -0
  48. package/dist/{chunk-6UNG76Y2.js → chunk-K526GN7P.js} +2 -2
  49. package/dist/{chunk-SICKWUWB.js → chunk-KJHPOB3J.js} +1 -1
  50. package/dist/chunk-KJHPOB3J.js.map +1 -0
  51. package/dist/chunk-KXVFFEGD.js +60 -0
  52. package/dist/chunk-KXVFFEGD.js.map +1 -0
  53. package/dist/chunk-LQB7QLD3.js +288 -0
  54. package/dist/chunk-LQB7QLD3.js.map +1 -0
  55. package/dist/chunk-LUD52ZJF.cjs +726 -0
  56. package/dist/chunk-LUD52ZJF.cjs.map +1 -0
  57. package/dist/{chunk-7UZ5DETZ.js → chunk-MBAG654R.js} +4 -216
  58. package/dist/chunk-MBAG654R.js.map +1 -0
  59. package/dist/chunk-OMP6FAZ6.cjs +183 -0
  60. package/dist/chunk-OMP6FAZ6.cjs.map +1 -0
  61. package/dist/{chunk-WYH4TKS5.js → chunk-PBYRTNQ5.js} +6 -8
  62. package/dist/chunk-PBYRTNQ5.js.map +1 -0
  63. package/dist/chunk-PYREXCZK.js +679 -0
  64. package/dist/chunk-PYREXCZK.js.map +1 -0
  65. package/dist/{chunk-6D22TFLA.cjs → chunk-R3ZECV5P.cjs} +9 -4
  66. package/dist/chunk-R3ZECV5P.cjs.map +1 -0
  67. package/dist/{chunk-P5BOFE5A.js → chunk-RSLA2FJN.js} +28 -183
  68. package/dist/chunk-RSLA2FJN.js.map +1 -0
  69. package/dist/chunk-S46SKHMD.js +173 -0
  70. package/dist/chunk-S46SKHMD.js.map +1 -0
  71. package/dist/chunk-SFXTB7JL.js +190 -0
  72. package/dist/chunk-SFXTB7JL.js.map +1 -0
  73. package/dist/chunk-SGYXYMKZ.cjs +214 -0
  74. package/dist/chunk-SGYXYMKZ.cjs.map +1 -0
  75. package/dist/chunk-UGKYP6F3.cjs +296 -0
  76. package/dist/chunk-UGKYP6F3.cjs.map +1 -0
  77. package/dist/chunk-WB6XDNU7.js +115 -0
  78. package/dist/chunk-WB6XDNU7.js.map +1 -0
  79. package/dist/{chunk-LTPTW2US.cjs → chunk-WE4QIIVN.cjs} +592 -974
  80. package/dist/chunk-WE4QIIVN.cjs.map +1 -0
  81. package/dist/core/index.cjs +144 -626
  82. package/dist/core/index.css +178 -3567
  83. package/dist/core/index.css.map +1 -1
  84. package/dist/core/index.d.cts +940 -902
  85. package/dist/core/index.d.ts +940 -902
  86. package/dist/core/index.js +6 -12
  87. package/dist/i18n/index.cjs +54 -49
  88. package/dist/i18n/index.d.cts +46 -11
  89. package/dist/i18n/index.d.ts +46 -11
  90. package/dist/i18n/index.js +2 -1
  91. package/dist/index-BJ8rBqrO.d.cts +1100 -0
  92. package/dist/index-BxMqCbqE.d.ts +1100 -0
  93. package/dist/index.cjs +507 -1001
  94. package/dist/index.cjs.map +1 -1
  95. package/dist/index.css +6057 -16713
  96. package/dist/index.css.map +1 -1
  97. package/dist/index.d.cts +306 -21
  98. package/dist/index.d.ts +306 -21
  99. package/dist/index.js +274 -39
  100. package/dist/index.js.map +1 -1
  101. package/dist/marketing/index.cjs +33 -76
  102. package/dist/marketing/index.css +1896 -3234
  103. package/dist/marketing/index.css.map +1 -1
  104. package/dist/marketing/index.d.cts +3 -1351
  105. package/dist/marketing/index.d.ts +3 -1351
  106. package/dist/marketing/index.js +5 -8
  107. package/dist/motion/index.cjs +3 -20
  108. package/dist/motion/index.css +0 -580
  109. package/dist/motion/index.css.map +1 -1
  110. package/dist/motion/index.d.cts +1 -37
  111. package/dist/motion/index.d.ts +1 -37
  112. package/dist/motion/index.js +1 -2
  113. package/dist/nav/index.cjs +10 -35
  114. package/dist/nav/index.css +28 -580
  115. package/dist/nav/index.css.map +1 -1
  116. package/dist/nav/index.d.cts +2 -60
  117. package/dist/nav/index.d.ts +2 -60
  118. package/dist/nav/index.js +1 -2
  119. package/dist/report/index.cjs +1166 -175
  120. package/dist/report/index.cjs.map +1 -1
  121. package/dist/report/index.d.cts +208 -5
  122. package/dist/report/index.d.ts +208 -5
  123. package/dist/report/index.js +1141 -3
  124. package/dist/report/index.js.map +1 -1
  125. package/dist/sections/index.cjs +8 -10
  126. package/dist/sections/index.cjs.map +1 -1
  127. package/dist/sections/index.css +0 -206
  128. package/dist/sections/index.css.map +1 -1
  129. package/dist/sections/index.js +2 -4
  130. package/dist/sections/index.js.map +1 -1
  131. package/dist/social-media/index.cjs +4 -0
  132. package/dist/social-media/index.cjs.map +1 -0
  133. package/dist/social-media/index.d.cts +2 -0
  134. package/dist/social-media/index.d.ts +2 -0
  135. package/dist/social-media/index.js +3 -0
  136. package/dist/social-media/index.js.map +1 -0
  137. package/dist/social-proof/index.cjs +4 -36
  138. package/dist/social-proof/index.css +3 -1106
  139. package/dist/social-proof/index.css.map +1 -1
  140. package/dist/social-proof/index.d.cts +26 -171
  141. package/dist/social-proof/index.d.ts +26 -171
  142. package/dist/social-proof/index.js +1 -5
  143. package/dist/styles/styles.css +657 -2990
  144. package/dist/theme/index.cjs +12 -16
  145. package/dist/theme/index.css +1 -245
  146. package/dist/theme/index.css.map +1 -1
  147. package/dist/theme/index.d.cts +4 -1
  148. package/dist/theme/index.d.ts +4 -1
  149. package/dist/theme/index.js +2 -2
  150. package/dist/web/client/index.cjs +10 -10
  151. package/dist/web/client/index.css +118 -0
  152. package/dist/web/client/index.css.map +1 -1
  153. package/dist/web/client/index.js +2 -2
  154. package/dist/web/index.cjs +10 -10
  155. package/dist/web/index.css +118 -0
  156. package/dist/web/index.css.map +1 -1
  157. package/dist/web/index.js +2 -2
  158. package/package.json +10 -4
  159. package/dist/AppearancePanel-UT57J69V.d.cts +0 -51
  160. package/dist/AppearancePanel-UT57J69V.d.ts +0 -51
  161. package/dist/ExportMenu-A2TLFiVv.d.cts +0 -311
  162. package/dist/ExportMenu-C8qck5AT.d.ts +0 -311
  163. package/dist/Select-BdZmK0Lt.d.cts +0 -66
  164. package/dist/Select-BdZmK0Lt.d.ts +0 -66
  165. package/dist/chart-types-BGVVO-zl.d.cts +0 -208
  166. package/dist/chart-types-BGVVO-zl.d.ts +0 -208
  167. package/dist/charts/index.css +0 -1167
  168. package/dist/charts/index.css.map +0 -1
  169. package/dist/chunk-3BAQDW3V.cjs +0 -1207
  170. package/dist/chunk-3BAQDW3V.cjs.map +0 -1
  171. package/dist/chunk-3NKRFUAR.js +0 -37
  172. package/dist/chunk-3NKRFUAR.js.map +0 -1
  173. package/dist/chunk-3TGSIILM.cjs +0 -201
  174. package/dist/chunk-3TGSIILM.cjs.map +0 -1
  175. package/dist/chunk-4GM5BGBN.cjs +0 -801
  176. package/dist/chunk-4GM5BGBN.cjs.map +0 -1
  177. package/dist/chunk-5LA3T22E.cjs +0 -562
  178. package/dist/chunk-5LA3T22E.cjs.map +0 -1
  179. package/dist/chunk-5SN66B2X.js +0 -2542
  180. package/dist/chunk-5SN66B2X.js.map +0 -1
  181. package/dist/chunk-6D22TFLA.cjs.map +0 -1
  182. package/dist/chunk-6H4DSTXR.js +0 -786
  183. package/dist/chunk-6H4DSTXR.js.map +0 -1
  184. package/dist/chunk-6HKQ5ILL.cjs +0 -1624
  185. package/dist/chunk-6HKQ5ILL.cjs.map +0 -1
  186. package/dist/chunk-7PX2AZ6Y.js +0 -39
  187. package/dist/chunk-7PX2AZ6Y.js.map +0 -1
  188. package/dist/chunk-7UZ5DETZ.js.map +0 -1
  189. package/dist/chunk-B6AVAX4F.js +0 -1415
  190. package/dist/chunk-B6AVAX4F.js.map +0 -1
  191. package/dist/chunk-BJZ2DKS5.cjs.map +0 -1
  192. package/dist/chunk-BUTQSDQH.js +0 -200
  193. package/dist/chunk-BUTQSDQH.js.map +0 -1
  194. package/dist/chunk-C2BCDNAV.js +0 -24
  195. package/dist/chunk-C2BCDNAV.js.map +0 -1
  196. package/dist/chunk-CJ2MKVAF.cjs +0 -46
  197. package/dist/chunk-CJ2MKVAF.cjs.map +0 -1
  198. package/dist/chunk-E7D6EKJ4.cjs +0 -44
  199. package/dist/chunk-E7D6EKJ4.cjs.map +0 -1
  200. package/dist/chunk-ECXBTUH6.cjs.map +0 -1
  201. package/dist/chunk-FAFAP4L5.js +0 -183
  202. package/dist/chunk-FAFAP4L5.js.map +0 -1
  203. package/dist/chunk-G2XGBO5V.cjs +0 -2565
  204. package/dist/chunk-G2XGBO5V.cjs.map +0 -1
  205. package/dist/chunk-GQELL2MF.cjs.map +0 -1
  206. package/dist/chunk-H2KQ3WSH.cjs.map +0 -1
  207. package/dist/chunk-H2Y6BSTL.cjs.map +0 -1
  208. package/dist/chunk-HCZW5AJN.cjs +0 -234
  209. package/dist/chunk-HCZW5AJN.cjs.map +0 -1
  210. package/dist/chunk-HDVAMYSG.js.map +0 -1
  211. package/dist/chunk-HN4PHABT.js +0 -126
  212. package/dist/chunk-HN4PHABT.js.map +0 -1
  213. package/dist/chunk-LTPTW2US.cjs.map +0 -1
  214. package/dist/chunk-MDB2WCRQ.cjs +0 -137
  215. package/dist/chunk-MDB2WCRQ.cjs.map +0 -1
  216. package/dist/chunk-MQRB634A.cjs +0 -34
  217. package/dist/chunk-MQRB634A.cjs.map +0 -1
  218. package/dist/chunk-NN3TUHIH.js +0 -28
  219. package/dist/chunk-NN3TUHIH.js.map +0 -1
  220. package/dist/chunk-OWS2KAXZ.js +0 -701
  221. package/dist/chunk-OWS2KAXZ.js.map +0 -1
  222. package/dist/chunk-P5BOFE5A.js.map +0 -1
  223. package/dist/chunk-PUPSK3DI.cjs +0 -216
  224. package/dist/chunk-PUPSK3DI.cjs.map +0 -1
  225. package/dist/chunk-Q2MFGYTE.cjs +0 -1449
  226. package/dist/chunk-Q2MFGYTE.cjs.map +0 -1
  227. package/dist/chunk-Q75DBVDY.cjs +0 -68
  228. package/dist/chunk-Q75DBVDY.cjs.map +0 -1
  229. package/dist/chunk-QALDZ7WQ.js.map +0 -1
  230. package/dist/chunk-QWE2RNCS.js +0 -1195
  231. package/dist/chunk-QWE2RNCS.js.map +0 -1
  232. package/dist/chunk-RQUFZAZ7.js +0 -1608
  233. package/dist/chunk-RQUFZAZ7.js.map +0 -1
  234. package/dist/chunk-SICKWUWB.js.map +0 -1
  235. package/dist/chunk-TCFC7XTB.js +0 -212
  236. package/dist/chunk-TCFC7XTB.js.map +0 -1
  237. package/dist/chunk-UTVXGAQP.cjs +0 -2437
  238. package/dist/chunk-UTVXGAQP.cjs.map +0 -1
  239. package/dist/chunk-UVEMY3FQ.cjs +0 -717
  240. package/dist/chunk-UVEMY3FQ.cjs.map +0 -1
  241. package/dist/chunk-VFJZQQZU.js.map +0 -1
  242. package/dist/chunk-WH7PYHZY.cjs +0 -35
  243. package/dist/chunk-WH7PYHZY.cjs.map +0 -1
  244. package/dist/chunk-WYH4TKS5.js.map +0 -1
  245. package/dist/chunk-XEX2AEZK.cjs.map +0 -1
  246. package/dist/chunk-XPTVHPCN.js +0 -2320
  247. package/dist/chunk-XPTVHPCN.js.map +0 -1
  248. package/dist/chunk-XWPDRMZG.js +0 -62
  249. package/dist/chunk-XWPDRMZG.js.map +0 -1
  250. package/dist/chunk-Y26OHHMX.js.map +0 -1
  251. package/dist/chunk-YJ6C3EKW.js.map +0 -1
  252. package/dist/motion-C651Ry6d.d.cts +0 -832
  253. package/dist/motion-C651Ry6d.d.ts +0 -832
  254. package/dist/report/index.css +0 -1239
  255. package/dist/report/index.css.map +0 -1
  256. /package/dist/{chunk-6UNG76Y2.js.map → chunk-2VVRZBUR.cjs.map} +0 -0
  257. /package/dist/{chunk-YTYDQBVY.cjs.map → chunk-K526GN7P.js.map} +0 -0
@@ -1,182 +1,1173 @@
1
1
  'use strict';
2
2
 
3
- var chunk4GM5BGBN_cjs = require('../chunk-4GM5BGBN.cjs');
4
- var chunkQ2MFGYTE_cjs = require('../chunk-Q2MFGYTE.cjs');
5
- var chunk3TGSIILM_cjs = require('../chunk-3TGSIILM.cjs');
3
+ var React2 = require('react');
4
+ var jsxRuntime = require('react/jsx-runtime');
6
5
 
6
+ function _interopDefault (e) { return e && e.__esModule ? e : { default: e }; }
7
7
 
8
+ var React2__default = /*#__PURE__*/_interopDefault(React2);
8
9
 
9
- Object.defineProperty(exports, "CaveatBlock", {
10
- enumerable: true,
11
- get: function () { return chunk4GM5BGBN_cjs.CaveatBlock; }
12
- });
13
- Object.defineProperty(exports, "EvidenceGroup", {
14
- enumerable: true,
15
- get: function () { return chunk4GM5BGBN_cjs.EvidenceGroup; }
16
- });
17
- Object.defineProperty(exports, "ExecutiveThesis", {
18
- enumerable: true,
19
- get: function () { return chunk4GM5BGBN_cjs.ExecutiveThesis; }
20
- });
21
- Object.defineProperty(exports, "ExportMenu", {
22
- enumerable: true,
23
- get: function () { return chunk4GM5BGBN_cjs.ExportMenu; }
24
- });
25
- Object.defineProperty(exports, "InsightBlock", {
26
- enumerable: true,
27
- get: function () { return chunk4GM5BGBN_cjs.InsightBlock; }
28
- });
29
- Object.defineProperty(exports, "KeyMetric", {
30
- enumerable: true,
31
- get: function () { return chunk4GM5BGBN_cjs.KeyMetric; }
32
- });
33
- Object.defineProperty(exports, "MethodologyNote", {
34
- enumerable: true,
35
- get: function () { return chunk4GM5BGBN_cjs.MethodologyNote; }
36
- });
37
- Object.defineProperty(exports, "ReportShell", {
38
- enumerable: true,
39
- get: function () { return chunk4GM5BGBN_cjs.ReportShell; }
40
- });
41
- Object.defineProperty(exports, "TrendIndicator", {
42
- enumerable: true,
43
- get: function () { return chunk4GM5BGBN_cjs.TrendIndicator; }
44
- });
45
- Object.defineProperty(exports, "ANALYST_MODE", {
46
- enumerable: true,
47
- get: function () { return chunkQ2MFGYTE_cjs.ANALYST_MODE; }
48
- });
49
- Object.defineProperty(exports, "ANALYTICAL_STATE_CONFIG", {
50
- enumerable: true,
51
- get: function () { return chunkQ2MFGYTE_cjs.ANALYTICAL_STATE_CONFIG; }
52
- });
53
- Object.defineProperty(exports, "CHART_REGISTRY", {
54
- enumerable: true,
55
- get: function () { return chunkQ2MFGYTE_cjs.CHART_REGISTRY; }
56
- });
57
- Object.defineProperty(exports, "CONFIDENCE_THRESHOLDS", {
58
- enumerable: true,
59
- get: function () { return chunkQ2MFGYTE_cjs.CONFIDENCE_THRESHOLDS; }
60
- });
61
- Object.defineProperty(exports, "ConfidenceIndicator", {
62
- enumerable: true,
63
- get: function () { return chunkQ2MFGYTE_cjs.ConfidenceIndicator; }
64
- });
65
- Object.defineProperty(exports, "DataCoverageBadge", {
66
- enumerable: true,
67
- get: function () { return chunkQ2MFGYTE_cjs.DataCoverageBadge; }
68
- });
69
- Object.defineProperty(exports, "DataStateIndicator", {
70
- enumerable: true,
71
- get: function () { return chunkQ2MFGYTE_cjs.DataStateIndicator; }
72
- });
73
- Object.defineProperty(exports, "EXECUTIVE_MODE", {
74
- enumerable: true,
75
- get: function () { return chunkQ2MFGYTE_cjs.EXECUTIVE_MODE; }
76
- });
77
- Object.defineProperty(exports, "INSIGHT_TYPE_CONTRACTS", {
78
- enumerable: true,
79
- get: function () { return chunkQ2MFGYTE_cjs.INSIGHT_TYPE_CONTRACTS; }
80
- });
81
- Object.defineProperty(exports, "INTENT_CHART_FAMILIES", {
82
- enumerable: true,
83
- get: function () { return chunkQ2MFGYTE_cjs.INTENT_CHART_FAMILIES; }
84
- });
85
- Object.defineProperty(exports, "MINIMUM_SAMPLE_SIZES", {
86
- enumerable: true,
87
- get: function () { return chunkQ2MFGYTE_cjs.MINIMUM_SAMPLE_SIZES; }
88
- });
89
- Object.defineProperty(exports, "ReportModeProvider", {
90
- enumerable: true,
91
- get: function () { return chunkQ2MFGYTE_cjs.ReportModeProvider; }
92
- });
93
- Object.defineProperty(exports, "calculateCompleteness", {
94
- enumerable: true,
95
- get: function () { return chunkQ2MFGYTE_cjs.calculateCompleteness; }
96
- });
97
- Object.defineProperty(exports, "calculateConfidence", {
98
- enumerable: true,
99
- get: function () { return chunkQ2MFGYTE_cjs.calculateConfidence; }
100
- });
101
- Object.defineProperty(exports, "calculateNormalizedVariance", {
102
- enumerable: true,
103
- get: function () { return chunkQ2MFGYTE_cjs.calculateNormalizedVariance; }
104
- });
105
- Object.defineProperty(exports, "calculateRecency", {
106
- enumerable: true,
107
- get: function () { return chunkQ2MFGYTE_cjs.calculateRecency; }
108
- });
109
- Object.defineProperty(exports, "canSwitchChart", {
110
- enumerable: true,
111
- get: function () { return chunkQ2MFGYTE_cjs.canSwitchChart; }
112
- });
113
- Object.defineProperty(exports, "getAllowedSwitchTargets", {
114
- enumerable: true,
115
- get: function () { return chunkQ2MFGYTE_cjs.getAllowedSwitchTargets; }
116
- });
117
- Object.defineProperty(exports, "getConfidenceLevel", {
118
- enumerable: true,
119
- get: function () { return chunkQ2MFGYTE_cjs.getConfidenceLevel; }
120
- });
121
- Object.defineProperty(exports, "getConfidenceThreshold", {
122
- enumerable: true,
123
- get: function () { return chunkQ2MFGYTE_cjs.getConfidenceThreshold; }
124
- });
125
- Object.defineProperty(exports, "getDefaultChartForIntent", {
126
- enumerable: true,
127
- get: function () { return chunkQ2MFGYTE_cjs.getDefaultChartForIntent; }
128
- });
129
- Object.defineProperty(exports, "getMVPChartsForIntent", {
130
- enumerable: true,
131
- get: function () { return chunkQ2MFGYTE_cjs.getMVPChartsForIntent; }
132
- });
133
- Object.defineProperty(exports, "suggestChartType", {
134
- enumerable: true,
135
- get: function () { return chunkQ2MFGYTE_cjs.suggestChartType; }
136
- });
137
- Object.defineProperty(exports, "useChartData", {
138
- enumerable: true,
139
- get: function () { return chunkQ2MFGYTE_cjs.useChartData; }
140
- });
141
- Object.defineProperty(exports, "useDataState", {
142
- enumerable: true,
143
- get: function () { return chunkQ2MFGYTE_cjs.useDataState; }
144
- });
145
- Object.defineProperty(exports, "useReportMode", {
146
- enumerable: true,
147
- get: function () { return chunkQ2MFGYTE_cjs.useReportMode; }
148
- });
149
- Object.defineProperty(exports, "validateChartData", {
150
- enumerable: true,
151
- get: function () { return chunkQ2MFGYTE_cjs.validateChartData; }
152
- });
153
- Object.defineProperty(exports, "validateReportStructure", {
154
- enumerable: true,
155
- get: function () { return chunkQ2MFGYTE_cjs.validateReportStructure; }
156
- });
157
- Object.defineProperty(exports, "Select", {
158
- enumerable: true,
159
- get: function () { return chunk3TGSIILM_cjs.Select; }
160
- });
161
- Object.defineProperty(exports, "SelectContent", {
162
- enumerable: true,
163
- get: function () { return chunk3TGSIILM_cjs.SelectContent; }
164
- });
165
- Object.defineProperty(exports, "SelectGroup", {
166
- enumerable: true,
167
- get: function () { return chunk3TGSIILM_cjs.SelectGroup; }
168
- });
169
- Object.defineProperty(exports, "SelectItem", {
170
- enumerable: true,
171
- get: function () { return chunk3TGSIILM_cjs.SelectItem; }
172
- });
173
- Object.defineProperty(exports, "SelectSeparator", {
174
- enumerable: true,
175
- get: function () { return chunk3TGSIILM_cjs.SelectSeparator; }
176
- });
177
- Object.defineProperty(exports, "SelectTrigger", {
178
- enumerable: true,
179
- get: function () { return chunk3TGSIILM_cjs.SelectTrigger; }
180
- });
10
+ // src/report-engine/constants.ts
11
+ var EXECUTIVE_MODE = {
12
+ mode: "executive",
13
+ features: {
14
+ showMethodology: false,
15
+ showConfidenceScores: false,
16
+ showRawData: false,
17
+ showStatisticalTests: false,
18
+ chartDetailLevel: "summary",
19
+ maxInsightsShown: 5,
20
+ allowDrilldown: false
21
+ }
22
+ };
23
+ var ANALYST_MODE = {
24
+ mode: "analyst",
25
+ features: {
26
+ showMethodology: true,
27
+ showConfidenceScores: true,
28
+ showRawData: true,
29
+ showStatisticalTests: true,
30
+ chartDetailLevel: "detailed",
31
+ maxInsightsShown: 20,
32
+ allowDrilldown: true
33
+ }
34
+ };
35
+ var CONFIDENCE_THRESHOLDS = [
36
+ { level: "high", min: 90, max: 100, label: "High Confidence", color: "var(--status-success)" },
37
+ {
38
+ level: "moderate",
39
+ min: 70,
40
+ max: 89,
41
+ label: "Moderate Confidence",
42
+ color: "var(--status-info)"
43
+ },
44
+ { level: "low", min: 50, max: 69, label: "Low Confidence", color: "var(--status-warning)" },
45
+ {
46
+ level: "insufficient",
47
+ min: 0,
48
+ max: 49,
49
+ label: "Insufficient Data",
50
+ color: "var(--status-error)"
51
+ }
52
+ ];
53
+ var MINIMUM_SAMPLE_SIZES = {
54
+ overall: 30,
55
+ segment: 30,
56
+ mbtiType: 50,
57
+ correlation: 100,
58
+ timeSeries: 7
59
+ };
60
+ var INSIGHT_TYPE_CONTRACTS = {
61
+ "performance-delta": {
62
+ type: "performance-delta",
63
+ allowedCharts: ["BarChart", "LineChart", "KeyMetric"],
64
+ requiredFields: ["metric_name", "current_value", "previous_value", "time_period"],
65
+ minSampleSize: 30,
66
+ headlinePattern: "{metric} {direction} by {delta}% {timeframe}",
67
+ recommendationFormats: ["maintain-strategy", "investigate-decline", "scale-success"]
68
+ },
69
+ "behavioral-correlation": {
70
+ type: "behavioral-correlation",
71
+ allowedCharts: ["HeatmapChart", "BarChart"],
72
+ requiredFields: ["variable_a", "variable_b", "correlation_coefficient"],
73
+ minSampleSize: 100,
74
+ headlinePattern: "{variable_a} correlates with {variable_b}",
75
+ recommendationFormats: ["leverage-correlation", "investigate-causation"]
76
+ },
77
+ "funnel-leakage": {
78
+ type: "funnel-leakage",
79
+ allowedCharts: ["FunnelChart", "BarChart"],
80
+ requiredFields: ["stages", "stage_counts", "drop_rates"],
81
+ minSampleSize: 50,
82
+ headlinePattern: "{drop_rate}% drop-off at {stage}",
83
+ recommendationFormats: ["optimize-stage", "remove-friction"]
84
+ },
85
+ "audience-mismatch": {
86
+ type: "audience-mismatch",
87
+ allowedCharts: ["BarChart", "PieChart"],
88
+ requiredFields: ["target_audience", "actual_audience", "overlap_percentage"],
89
+ minSampleSize: 50,
90
+ headlinePattern: "Target audience differs by {mismatch}%",
91
+ recommendationFormats: ["refine-targeting", "expand-audience"]
92
+ },
93
+ "message-fatigue": {
94
+ type: "message-fatigue",
95
+ allowedCharts: ["LineChart", "BarChart"],
96
+ requiredFields: ["message_sequence", "engagement_rates", "fatigue_point"],
97
+ minSampleSize: 100,
98
+ headlinePattern: "Engagement drops {drop}% after message {n}",
99
+ recommendationFormats: ["reduce-frequency", "vary-content"]
100
+ },
101
+ "psychological-resonance": {
102
+ type: "psychological-resonance",
103
+ allowedCharts: ["MBTIRadar", "MBTITypeGrid", "BarChart"],
104
+ requiredFields: ["mbti_types", "response_rates", "message_type"],
105
+ minSampleSize: 50,
106
+ headlinePattern: "{mbti_type} responds {rate}% better to {message_type}",
107
+ recommendationFormats: ["personalize-messaging", "segment-by-type"]
108
+ },
109
+ "timing-pattern": {
110
+ type: "timing-pattern",
111
+ allowedCharts: ["HeatmapChart", "LineChart"],
112
+ requiredFields: ["time_slots", "engagement_rates"],
113
+ minSampleSize: 100,
114
+ headlinePattern: "Best engagement on {day} at {time}",
115
+ recommendationFormats: ["optimize-timing", "schedule-sends"]
116
+ },
117
+ "segment-outperformance": {
118
+ type: "segment-outperformance",
119
+ allowedCharts: ["BarChart", "KeyMetric"],
120
+ requiredFields: ["segments", "performance_metrics", "baseline"],
121
+ minSampleSize: 30,
122
+ headlinePattern: "{segment} outperforms by {delta}%",
123
+ recommendationFormats: ["double-down", "investigate-success"]
124
+ },
125
+ "anomaly-detection": {
126
+ type: "anomaly-detection",
127
+ allowedCharts: ["LineChart", "BarChart"],
128
+ requiredFields: ["metric", "expected_value", "actual_value", "deviation"],
129
+ minSampleSize: 30,
130
+ headlinePattern: "Unusual {direction} in {metric}",
131
+ recommendationFormats: ["investigate", "monitor"]
132
+ },
133
+ "competitive-benchmark": {
134
+ type: "competitive-benchmark",
135
+ allowedCharts: ["BarChart", "KeyMetric"],
136
+ requiredFields: ["metric", "our_value", "benchmark_value"],
137
+ minSampleSize: 30,
138
+ headlinePattern: "{position} industry benchmark by {delta}%",
139
+ recommendationFormats: ["maintain-lead", "close-gap"]
140
+ }
141
+ };
142
+ var ANALYTICAL_STATE_CONFIG = {
143
+ VALID: {
144
+ label: "Valid",
145
+ icon: "check",
146
+ color: "var(--status-success)",
147
+ action: null
148
+ },
149
+ INSUFFICIENT_SAMPLE: {
150
+ label: "Insufficient Sample",
151
+ icon: "alert-triangle",
152
+ color: "var(--status-warning)",
153
+ action: "Add more data"
154
+ },
155
+ LOW_CONFIDENCE: {
156
+ label: "Low Confidence",
157
+ icon: "alert-circle",
158
+ color: "var(--status-warning)",
159
+ action: "Interpret with caution"
160
+ },
161
+ PARTIAL_TIME_WINDOW: {
162
+ label: "Partial Data",
163
+ icon: "clock",
164
+ color: "var(--status-info)",
165
+ action: "Expand date range"
166
+ },
167
+ DATA_SKEW_DETECTED: {
168
+ label: "Data Skew",
169
+ icon: "bar-chart-2",
170
+ color: "var(--status-warning)",
171
+ action: "Review methodology"
172
+ },
173
+ CONFLICTING_SIGNALS: {
174
+ label: "Conflicting Signals",
175
+ icon: "git-merge",
176
+ color: "var(--status-error)",
177
+ action: "Manual review needed"
178
+ },
179
+ INFERRED_NOT_OBSERVED: {
180
+ label: "AI Generated",
181
+ icon: "cpu",
182
+ color: "var(--status-info)",
183
+ action: "Verify with data"
184
+ },
185
+ STALE_DATA: {
186
+ label: "Stale Data",
187
+ icon: "clock",
188
+ color: "var(--status-warning)",
189
+ action: "Refresh data"
190
+ },
191
+ FIELD_MISSING: {
192
+ label: "Missing Field",
193
+ icon: "file-x",
194
+ color: "var(--status-error)",
195
+ action: "Upload complete data"
196
+ },
197
+ CALCULATION_ERROR: {
198
+ label: "Calculation Error",
199
+ icon: "x-circle",
200
+ color: "var(--status-error)",
201
+ action: "Contact support"
202
+ }
203
+ };
204
+
205
+ // src/report-engine/confidence.ts
206
+ function calculateConfidence(params) {
207
+ const { sampleSize, requiredSize, completeness, recency, variance, aiInference } = params;
208
+ const sampleScore = Math.min(40, sampleSize / requiredSize * 40);
209
+ const completenessScore = completeness * 20;
210
+ const recencyScore = recency * 20;
211
+ const variancePenalty = variance * 10;
212
+ const aiPenalty = aiInference ? 10 : 0;
213
+ const rawScore = sampleScore + completenessScore + recencyScore - variancePenalty - aiPenalty;
214
+ return Math.max(0, Math.min(100, Math.round(rawScore)));
215
+ }
216
+ function getConfidenceLevel(score) {
217
+ const threshold = CONFIDENCE_THRESHOLDS.find((t) => score >= t.min && score <= t.max);
218
+ return threshold?.level ?? "insufficient";
219
+ }
220
+ function getConfidenceThreshold(score) {
221
+ return CONFIDENCE_THRESHOLDS.find((t) => score >= t.min && score <= t.max) ?? CONFIDENCE_THRESHOLDS[CONFIDENCE_THRESHOLDS.length - 1];
222
+ }
223
+ function calculateRecency(dataDate, maxAgeDays = 30) {
224
+ const now = /* @__PURE__ */ new Date();
225
+ const ageInDays = (now.getTime() - dataDate.getTime()) / (1e3 * 60 * 60 * 24);
226
+ if (ageInDays <= 0) return 1;
227
+ if (ageInDays >= maxAgeDays) return 0;
228
+ return 1 - ageInDays / maxAgeDays;
229
+ }
230
+ function calculateCompleteness(data, requiredFields) {
231
+ if (data.length === 0 || requiredFields.length === 0) return 0;
232
+ let totalFields = 0;
233
+ let filledFields = 0;
234
+ for (const record of data) {
235
+ for (const field of requiredFields) {
236
+ totalFields++;
237
+ const value = record[field];
238
+ if (value !== null && value !== void 0 && value !== "") {
239
+ filledFields++;
240
+ }
241
+ }
242
+ }
243
+ return totalFields > 0 ? filledFields / totalFields : 0;
244
+ }
245
+ function calculateNormalizedVariance(values) {
246
+ if (values.length < 2) return 0;
247
+ const mean = values.reduce((a, b) => a + b, 0) / values.length;
248
+ const squaredDiffs = values.map((v) => Math.pow(v - mean, 2));
249
+ const variance = squaredDiffs.reduce((a, b) => a + b, 0) / values.length;
250
+ const stdDev = Math.sqrt(variance);
251
+ const cv = mean !== 0 ? stdDev / Math.abs(mean) : 0;
252
+ return Math.min(1, cv);
253
+ }
254
+ var ReportModeContext = React2.createContext(null);
255
+ function ReportModeProvider({
256
+ mode = "executive",
257
+ children,
258
+ onModeChange
259
+ }) {
260
+ const config = mode === "executive" ? EXECUTIVE_MODE : ANALYST_MODE;
261
+ const value = React2.useMemo(
262
+ () => ({
263
+ ...config,
264
+ setMode: onModeChange
265
+ }),
266
+ [config, onModeChange]
267
+ );
268
+ return /* @__PURE__ */ jsxRuntime.jsx(ReportModeContext.Provider, { value, children });
269
+ }
270
+ function useReportMode() {
271
+ const context = React2.useContext(ReportModeContext);
272
+ if (!context) {
273
+ return EXECUTIVE_MODE;
274
+ }
275
+ return context;
276
+ }
277
+ function useDataState(params) {
278
+ const {
279
+ sampleSize,
280
+ requiredSize = MINIMUM_SAMPLE_SIZES.overall,
281
+ completeness = 1,
282
+ recency = 1,
283
+ variance = 0,
284
+ aiInferred = false,
285
+ missingFields = [],
286
+ staleDays
287
+ } = params;
288
+ return React2.useMemo(() => {
289
+ const confidenceParams = {
290
+ sampleSize,
291
+ requiredSize,
292
+ completeness,
293
+ recency,
294
+ variance,
295
+ aiInference: aiInferred
296
+ };
297
+ const confidence = calculateConfidence(confidenceParams);
298
+ const confidenceLevel = getConfidenceLevel(confidence);
299
+ let state = "VALID";
300
+ if (missingFields.length > 0) {
301
+ state = "FIELD_MISSING";
302
+ } else if (sampleSize < requiredSize) {
303
+ state = "INSUFFICIENT_SAMPLE";
304
+ } else if (staleDays && staleDays > 30) {
305
+ state = "STALE_DATA";
306
+ } else if (aiInferred) {
307
+ state = "INFERRED_NOT_OBSERVED";
308
+ } else if (confidence < 50) {
309
+ state = "LOW_CONFIDENCE";
310
+ } else if (variance > 0.7) {
311
+ state = "DATA_SKEW_DETECTED";
312
+ } else if (recency < 0.3) {
313
+ state = "PARTIAL_TIME_WINDOW";
314
+ }
315
+ const details = {
316
+ sampleSize,
317
+ requiredSize,
318
+ confidence,
319
+ missingFields: missingFields.length > 0 ? missingFields : void 0,
320
+ staleDays
321
+ };
322
+ return {
323
+ state,
324
+ confidence,
325
+ confidenceLevel,
326
+ details,
327
+ isValid: state === "VALID"
328
+ };
329
+ }, [
330
+ sampleSize,
331
+ requiredSize,
332
+ completeness,
333
+ recency,
334
+ variance,
335
+ aiInferred,
336
+ missingFields,
337
+ staleDays
338
+ ]);
339
+ }
340
+ function useChartData({
341
+ data,
342
+ requiredFields,
343
+ minSampleSize = MINIMUM_SAMPLE_SIZES.overall
344
+ }) {
345
+ return React2.useMemo(() => {
346
+ const missingFields = [];
347
+ if (data.length > 0) {
348
+ const firstRecord = data[0];
349
+ for (const field of requiredFields) {
350
+ if (!(field in firstRecord)) {
351
+ missingFields.push(field);
352
+ }
353
+ }
354
+ }
355
+ let completeness = 1;
356
+ if (data.length > 0 && requiredFields.length > 0) {
357
+ let filled = 0;
358
+ let total = 0;
359
+ for (const record of data) {
360
+ for (const field of requiredFields) {
361
+ total++;
362
+ const value = record[field];
363
+ if (value !== null && value !== void 0 && value !== "") {
364
+ filled++;
365
+ }
366
+ }
367
+ }
368
+ completeness = total > 0 ? filled / total : 0;
369
+ }
370
+ let state = "VALID";
371
+ let message;
372
+ if (missingFields.length > 0) {
373
+ state = "FIELD_MISSING";
374
+ message = `Missing fields: ${missingFields.join(", ")}`;
375
+ } else if (data.length === 0) {
376
+ state = "INSUFFICIENT_SAMPLE";
377
+ message = "No data available";
378
+ } else if (data.length < minSampleSize) {
379
+ state = "INSUFFICIENT_SAMPLE";
380
+ message = `Sample size ${data.length} is below minimum ${minSampleSize}`;
381
+ } else if (completeness < 0.7) {
382
+ state = "LOW_CONFIDENCE";
383
+ message = `Data completeness is ${Math.round(completeness * 100)}%`;
384
+ }
385
+ const confidence = calculateConfidence({
386
+ sampleSize: data.length,
387
+ requiredSize: minSampleSize,
388
+ completeness,
389
+ recency: 1,
390
+ // Assume fresh data if not specified
391
+ variance: 0,
392
+ aiInference: false
393
+ });
394
+ const isRenderable = state === "VALID" || state === "LOW_CONFIDENCE";
395
+ return {
396
+ data,
397
+ state,
398
+ confidence,
399
+ isRenderable,
400
+ message
401
+ };
402
+ }, [data, requiredFields, minSampleSize]);
403
+ }
404
+
405
+ // src/report-engine/chart-types.ts
406
+ var CHART_REGISTRY = {
407
+ // ══════════════════════════════════════════════════════════════════════════
408
+ // TREND CHARTS (MVP)
409
+ // ══════════════════════════════════════════════════════════════════════════
410
+ line: {
411
+ id: "line",
412
+ name: "Line Chart",
413
+ description: "Shows trends over time with connected data points",
414
+ intent: "trend",
415
+ phase: "mvp",
416
+ contract: {
417
+ requiredDimensions: 1,
418
+ requiredMeasures: 1,
419
+ minDataPoints: 3,
420
+ idealDataPoints: 7,
421
+ allowNegativeValues: true,
422
+ requireNonZeroTotal: false,
423
+ warningThresholds: { sparseData: 3 },
424
+ fallback: { type: "show_kpi", message: "Insufficient data for trend visualization" }
425
+ },
426
+ switchableTo: ["smooth_line", "area", "stacked_area"],
427
+ supportsStacking: false,
428
+ supportsMultipleSeries: true,
429
+ requiresTimeAxis: true
430
+ },
431
+ smooth_line: {
432
+ id: "smooth_line",
433
+ name: "Smooth Line Chart",
434
+ description: "Curved line chart for smoother trend visualization",
435
+ intent: "trend",
436
+ phase: "mvp",
437
+ contract: {
438
+ requiredDimensions: 1,
439
+ requiredMeasures: 1,
440
+ minDataPoints: 3,
441
+ idealDataPoints: 7,
442
+ allowNegativeValues: true,
443
+ requireNonZeroTotal: false,
444
+ warningThresholds: { sparseData: 3 },
445
+ fallback: { type: "show_kpi", message: "Insufficient data for trend visualization" }
446
+ },
447
+ switchableTo: ["line", "area", "stacked_area"],
448
+ supportsStacking: false,
449
+ supportsMultipleSeries: true,
450
+ requiresTimeAxis: true
451
+ },
452
+ area: {
453
+ id: "area",
454
+ name: "Area Chart",
455
+ description: "Filled area under line, emphasizes volume over time",
456
+ intent: "trend",
457
+ phase: "mvp",
458
+ contract: {
459
+ requiredDimensions: 1,
460
+ requiredMeasures: 1,
461
+ minDataPoints: 3,
462
+ idealDataPoints: 7,
463
+ allowNegativeValues: false,
464
+ requireNonZeroTotal: false,
465
+ warningThresholds: { sparseData: 3 },
466
+ fallback: { type: "show_kpi", message: "Insufficient data for area visualization" }
467
+ },
468
+ switchableTo: ["line", "smooth_line", "stacked_area", "area_100pct"],
469
+ supportsStacking: true,
470
+ supportsMultipleSeries: true,
471
+ requiresTimeAxis: true
472
+ },
473
+ stacked_area: {
474
+ id: "stacked_area",
475
+ name: "Stacked Area Chart",
476
+ description: "Multiple series stacked to show cumulative trends",
477
+ intent: "trend",
478
+ phase: "mvp",
479
+ contract: {
480
+ requiredDimensions: 1,
481
+ requiredMeasures: 2,
482
+ minDataPoints: 3,
483
+ idealDataPoints: 7,
484
+ allowNegativeValues: false,
485
+ requireNonZeroTotal: true,
486
+ warningThresholds: { sparseData: 3 },
487
+ fallback: { type: "warn", message: "Stacked area requires non-negative values" }
488
+ },
489
+ switchableTo: ["line", "area", "area_100pct"],
490
+ supportsStacking: true,
491
+ supportsMultipleSeries: true,
492
+ requiresTimeAxis: true
493
+ },
494
+ area_100pct: {
495
+ id: "area_100pct",
496
+ name: "100% Stacked Area",
497
+ description: "Shows proportional contribution over time",
498
+ intent: "trend",
499
+ phase: "mvp",
500
+ contract: {
501
+ requiredDimensions: 1,
502
+ requiredMeasures: 2,
503
+ minDataPoints: 3,
504
+ idealDataPoints: 7,
505
+ allowNegativeValues: false,
506
+ requireNonZeroTotal: true,
507
+ warningThresholds: { sparseData: 3 },
508
+ fallback: { type: "warn", message: "100% stacked requires positive totals" }
509
+ },
510
+ switchableTo: ["stacked_area", "area"],
511
+ supportsStacking: true,
512
+ supportsMultipleSeries: true,
513
+ requiresTimeAxis: true
514
+ },
515
+ // ══════════════════════════════════════════════════════════════════════════
516
+ // COMPARISON CHARTS (MVP)
517
+ // ══════════════════════════════════════════════════════════════════════════
518
+ bar: {
519
+ id: "bar",
520
+ name: "Horizontal Bar Chart",
521
+ description: "Horizontal bars for comparing categories",
522
+ intent: "comparison",
523
+ phase: "mvp",
524
+ contract: {
525
+ requiredDimensions: 1,
526
+ requiredMeasures: 1,
527
+ minDataPoints: 2,
528
+ idealDataPoints: 5,
529
+ maxDataPoints: 15,
530
+ allowNegativeValues: true,
531
+ requireNonZeroTotal: false,
532
+ warningThresholds: { tooManyCategories: 12 },
533
+ fallback: { type: "aggregate", strategy: "top_n" }
534
+ },
535
+ switchableTo: ["column", "stacked_bar", "stacked_column"],
536
+ supportsStacking: true,
537
+ supportsMultipleSeries: true,
538
+ requiresTimeAxis: false
539
+ },
540
+ column: {
541
+ id: "column",
542
+ name: "Vertical Column Chart",
543
+ description: "Vertical bars for comparing categories",
544
+ intent: "comparison",
545
+ phase: "mvp",
546
+ contract: {
547
+ requiredDimensions: 1,
548
+ requiredMeasures: 1,
549
+ minDataPoints: 2,
550
+ idealDataPoints: 5,
551
+ maxDataPoints: 12,
552
+ allowNegativeValues: true,
553
+ requireNonZeroTotal: false,
554
+ warningThresholds: { tooManyCategories: 10 },
555
+ fallback: { type: "aggregate", strategy: "top_n" }
556
+ },
557
+ switchableTo: ["bar", "stacked_column", "stacked_bar"],
558
+ supportsStacking: true,
559
+ supportsMultipleSeries: true,
560
+ requiresTimeAxis: false
561
+ },
562
+ stacked_bar: {
563
+ id: "stacked_bar",
564
+ name: "Stacked Horizontal Bar",
565
+ description: "Horizontal stacked bars showing composition per category",
566
+ intent: "comparison",
567
+ phase: "mvp",
568
+ contract: {
569
+ requiredDimensions: 1,
570
+ requiredMeasures: 2,
571
+ minDataPoints: 2,
572
+ idealDataPoints: 5,
573
+ maxDataPoints: 10,
574
+ allowNegativeValues: false,
575
+ requireNonZeroTotal: true,
576
+ warningThresholds: { tooManyCategories: 8, imbalancedRatio: 0.9 },
577
+ fallback: { type: "aggregate", strategy: "other_bucket" }
578
+ },
579
+ switchableTo: ["bar", "stacked_column", "column_100pct"],
580
+ supportsStacking: true,
581
+ supportsMultipleSeries: true,
582
+ requiresTimeAxis: false
583
+ },
584
+ stacked_column: {
585
+ id: "stacked_column",
586
+ name: "Stacked Vertical Column",
587
+ description: "Vertical stacked columns showing composition per category",
588
+ intent: "comparison",
589
+ phase: "mvp",
590
+ contract: {
591
+ requiredDimensions: 1,
592
+ requiredMeasures: 2,
593
+ minDataPoints: 2,
594
+ idealDataPoints: 5,
595
+ maxDataPoints: 10,
596
+ allowNegativeValues: false,
597
+ requireNonZeroTotal: true,
598
+ warningThresholds: { tooManyCategories: 8, imbalancedRatio: 0.9 },
599
+ fallback: { type: "aggregate", strategy: "other_bucket" }
600
+ },
601
+ switchableTo: ["column", "stacked_bar", "column_100pct"],
602
+ supportsStacking: true,
603
+ supportsMultipleSeries: true,
604
+ requiresTimeAxis: false
605
+ },
606
+ column_100pct: {
607
+ id: "column_100pct",
608
+ name: "100% Stacked Column",
609
+ description: "Shows proportional composition per category",
610
+ intent: "comparison",
611
+ phase: "mvp",
612
+ contract: {
613
+ requiredDimensions: 1,
614
+ requiredMeasures: 2,
615
+ minDataPoints: 2,
616
+ idealDataPoints: 5,
617
+ maxDataPoints: 10,
618
+ allowNegativeValues: false,
619
+ requireNonZeroTotal: true,
620
+ warningThresholds: { tooManyCategories: 8 },
621
+ fallback: { type: "warn", message: "100% stacked requires positive totals" }
622
+ },
623
+ switchableTo: ["stacked_column", "stacked_bar"],
624
+ supportsStacking: true,
625
+ supportsMultipleSeries: true,
626
+ requiresTimeAxis: false
627
+ },
628
+ combo: {
629
+ id: "combo",
630
+ name: "Combo Chart",
631
+ description: "Combines bars with line overlay (Phase 2)",
632
+ intent: "comparison",
633
+ phase: "phase2",
634
+ contract: {
635
+ requiredDimensions: 1,
636
+ requiredMeasures: 2,
637
+ minDataPoints: 3,
638
+ idealDataPoints: 6,
639
+ allowNegativeValues: true,
640
+ requireNonZeroTotal: false,
641
+ warningThresholds: { tooManyCategories: 10 },
642
+ fallback: { type: "warn", message: "Combo chart requires dual measures" }
643
+ },
644
+ switchableTo: ["column", "line"],
645
+ supportsStacking: false,
646
+ supportsMultipleSeries: true,
647
+ requiresTimeAxis: false
648
+ },
649
+ // ══════════════════════════════════════════════════════════════════════════
650
+ // COMPOSITION CHARTS (MVP)
651
+ // ══════════════════════════════════════════════════════════════════════════
652
+ pie: {
653
+ id: "pie",
654
+ name: "Pie Chart",
655
+ description: "Shows proportional composition of a whole",
656
+ intent: "composition",
657
+ phase: "mvp",
658
+ contract: {
659
+ requiredDimensions: 1,
660
+ requiredMeasures: 1,
661
+ minDataPoints: 2,
662
+ idealDataPoints: 4,
663
+ maxDataPoints: 6,
664
+ allowNegativeValues: false,
665
+ requireNonZeroTotal: true,
666
+ warningThresholds: { tooManyCategories: 6, imbalancedRatio: 0.95 },
667
+ fallback: { type: "aggregate", strategy: "other_bucket" }
668
+ },
669
+ switchableTo: ["donut", "column_100pct"],
670
+ supportsStacking: false,
671
+ supportsMultipleSeries: false,
672
+ requiresTimeAxis: false,
673
+ maxSlices: 6
674
+ },
675
+ donut: {
676
+ id: "donut",
677
+ name: "Donut Chart",
678
+ description: "Pie chart with center cutout, can display total",
679
+ intent: "composition",
680
+ phase: "mvp",
681
+ contract: {
682
+ requiredDimensions: 1,
683
+ requiredMeasures: 1,
684
+ minDataPoints: 2,
685
+ idealDataPoints: 4,
686
+ maxDataPoints: 6,
687
+ allowNegativeValues: false,
688
+ requireNonZeroTotal: true,
689
+ warningThresholds: { tooManyCategories: 6, imbalancedRatio: 0.95 },
690
+ fallback: { type: "aggregate", strategy: "other_bucket" }
691
+ },
692
+ switchableTo: ["pie", "column_100pct"],
693
+ supportsStacking: false,
694
+ supportsMultipleSeries: false,
695
+ requiresTimeAxis: false,
696
+ maxSlices: 6
697
+ },
698
+ treemap: {
699
+ id: "treemap",
700
+ name: "Treemap",
701
+ description: "Nested rectangles showing hierarchical composition (Phase 2)",
702
+ intent: "composition",
703
+ phase: "phase2",
704
+ contract: {
705
+ requiredDimensions: 1,
706
+ requiredMeasures: 1,
707
+ minDataPoints: 3,
708
+ idealDataPoints: 10,
709
+ maxDataPoints: 50,
710
+ allowNegativeValues: false,
711
+ requireNonZeroTotal: true,
712
+ warningThresholds: { tooManyCategories: 30 },
713
+ fallback: { type: "aggregate", strategy: "top_n" }
714
+ },
715
+ switchableTo: ["pie", "donut"],
716
+ supportsStacking: false,
717
+ supportsMultipleSeries: false,
718
+ requiresTimeAxis: false
719
+ },
720
+ // ══════════════════════════════════════════════════════════════════════════
721
+ // DISTRIBUTION CHARTS (MVP)
722
+ // ══════════════════════════════════════════════════════════════════════════
723
+ histogram: {
724
+ id: "histogram",
725
+ name: "Histogram",
726
+ description: "Shows distribution of values across bins",
727
+ intent: "distribution",
728
+ phase: "mvp",
729
+ contract: {
730
+ requiredDimensions: 0,
731
+ requiredMeasures: 1,
732
+ minDataPoints: 10,
733
+ idealDataPoints: 50,
734
+ allowNegativeValues: true,
735
+ requireNonZeroTotal: false,
736
+ warningThresholds: { sparseData: 10 },
737
+ fallback: { type: "show_kpi", message: "Insufficient data for distribution" }
738
+ },
739
+ switchableTo: ["radar"],
740
+ supportsStacking: false,
741
+ supportsMultipleSeries: false,
742
+ requiresTimeAxis: false
743
+ },
744
+ radar: {
745
+ id: "radar",
746
+ name: "Radar Chart",
747
+ description: "Multi-dimensional comparison in radial layout (Phase 2)",
748
+ intent: "distribution",
749
+ phase: "phase2",
750
+ contract: {
751
+ requiredDimensions: 1,
752
+ requiredMeasures: 3,
753
+ minDataPoints: 3,
754
+ idealDataPoints: 6,
755
+ maxDataPoints: 8,
756
+ allowNegativeValues: false,
757
+ requireNonZeroTotal: false,
758
+ warningThresholds: { tooManyCategories: 8 },
759
+ fallback: { type: "warn", message: "Radar works best with 3-8 dimensions" }
760
+ },
761
+ switchableTo: ["histogram"],
762
+ supportsStacking: false,
763
+ supportsMultipleSeries: true,
764
+ requiresTimeAxis: false
765
+ },
766
+ // ══════════════════════════════════════════════════════════════════════════
767
+ // RELATIONSHIP CHARTS
768
+ // ══════════════════════════════════════════════════════════════════════════
769
+ heatmap: {
770
+ id: "heatmap",
771
+ name: "Heatmap",
772
+ description: "Color-coded matrix showing intensity",
773
+ intent: "relationship",
774
+ phase: "mvp",
775
+ contract: {
776
+ requiredDimensions: 2,
777
+ requiredMeasures: 1,
778
+ minDataPoints: 9,
779
+ idealDataPoints: 25,
780
+ allowNegativeValues: true,
781
+ requireNonZeroTotal: false,
782
+ warningThresholds: { sparseData: 9 },
783
+ fallback: { type: "warn", message: "Heatmap requires grid data" }
784
+ },
785
+ switchableTo: ["scatter"],
786
+ supportsStacking: false,
787
+ supportsMultipleSeries: false,
788
+ requiresTimeAxis: false
789
+ },
790
+ scatter: {
791
+ id: "scatter",
792
+ name: "Scatter Plot",
793
+ description: "Shows correlation between two variables (Phase 2)",
794
+ intent: "relationship",
795
+ phase: "phase2",
796
+ contract: {
797
+ requiredDimensions: 0,
798
+ requiredMeasures: 2,
799
+ minDataPoints: 20,
800
+ idealDataPoints: 100,
801
+ allowNegativeValues: true,
802
+ requireNonZeroTotal: false,
803
+ warningThresholds: { sparseData: 20 },
804
+ fallback: { type: "show_kpi", message: "Scatter requires 20+ points" }
805
+ },
806
+ switchableTo: ["bubble", "heatmap"],
807
+ supportsStacking: false,
808
+ supportsMultipleSeries: true,
809
+ requiresTimeAxis: false
810
+ },
811
+ bubble: {
812
+ id: "bubble",
813
+ name: "Bubble Chart",
814
+ description: "Scatter with sized points for third dimension (Phase 2)",
815
+ intent: "relationship",
816
+ phase: "phase2",
817
+ contract: {
818
+ requiredDimensions: 0,
819
+ requiredMeasures: 3,
820
+ minDataPoints: 10,
821
+ idealDataPoints: 50,
822
+ allowNegativeValues: true,
823
+ requireNonZeroTotal: false,
824
+ warningThresholds: { sparseData: 10 },
825
+ fallback: { type: "show_kpi", message: "Bubble requires 3 measures" }
826
+ },
827
+ switchableTo: ["scatter"],
828
+ supportsStacking: false,
829
+ supportsMultipleSeries: true,
830
+ requiresTimeAxis: false
831
+ },
832
+ // ══════════════════════════════════════════════════════════════════════════
833
+ // GEOGRAPHIC CHARTS (Phase 2)
834
+ // ══════════════════════════════════════════════════════════════════════════
835
+ geo: {
836
+ id: "geo",
837
+ name: "Geographic Map",
838
+ description: "Map with regional data markers (Phase 2)",
839
+ intent: "geo",
840
+ phase: "phase2",
841
+ contract: {
842
+ requiredDimensions: 1,
843
+ // geo dimension (country/region)
844
+ requiredMeasures: 1,
845
+ minDataPoints: 1,
846
+ idealDataPoints: 10,
847
+ allowNegativeValues: true,
848
+ requireNonZeroTotal: false,
849
+ warningThresholds: {},
850
+ fallback: { type: "hide" }
851
+ },
852
+ switchableTo: ["choropleth"],
853
+ supportsStacking: false,
854
+ supportsMultipleSeries: false,
855
+ requiresTimeAxis: false
856
+ },
857
+ choropleth: {
858
+ id: "choropleth",
859
+ name: "Choropleth Map",
860
+ description: "Color-shaded regions by value (Phase 2)",
861
+ intent: "geo",
862
+ phase: "phase2",
863
+ contract: {
864
+ requiredDimensions: 1,
865
+ requiredMeasures: 1,
866
+ minDataPoints: 3,
867
+ idealDataPoints: 20,
868
+ allowNegativeValues: false,
869
+ requireNonZeroTotal: false,
870
+ warningThresholds: {},
871
+ fallback: { type: "hide" }
872
+ },
873
+ switchableTo: ["geo"],
874
+ supportsStacking: false,
875
+ supportsMultipleSeries: false,
876
+ requiresTimeAxis: false
877
+ },
878
+ // ══════════════════════════════════════════════════════════════════════════
879
+ // SPECIAL CHARTS
880
+ // ══════════════════════════════════════════════════════════════════════════
881
+ funnel: {
882
+ id: "funnel",
883
+ name: "Funnel Chart",
884
+ description: "Shows conversion through sequential stages",
885
+ intent: "comparison",
886
+ phase: "mvp",
887
+ contract: {
888
+ requiredDimensions: 1,
889
+ requiredMeasures: 1,
890
+ minDataPoints: 3,
891
+ idealDataPoints: 5,
892
+ maxDataPoints: 7,
893
+ allowNegativeValues: false,
894
+ requireNonZeroTotal: true,
895
+ warningThresholds: { tooManyCategories: 7 },
896
+ fallback: { type: "warn", message: "Funnel requires sequential stages" }
897
+ },
898
+ switchableTo: ["bar"],
899
+ supportsStacking: false,
900
+ supportsMultipleSeries: false,
901
+ requiresTimeAxis: false
902
+ },
903
+ waterfall: {
904
+ id: "waterfall",
905
+ name: "Waterfall Chart",
906
+ description: "Shows cumulative effect of sequential changes (Phase 2)",
907
+ intent: "comparison",
908
+ phase: "phase2",
909
+ contract: {
910
+ requiredDimensions: 1,
911
+ requiredMeasures: 1,
912
+ minDataPoints: 3,
913
+ idealDataPoints: 6,
914
+ maxDataPoints: 12,
915
+ allowNegativeValues: true,
916
+ requireNonZeroTotal: false,
917
+ warningThresholds: { tooManyCategories: 10 },
918
+ fallback: { type: "warn", message: "Waterfall requires sequential data" }
919
+ },
920
+ switchableTo: ["bar", "column"],
921
+ supportsStacking: false,
922
+ supportsMultipleSeries: false,
923
+ requiresTimeAxis: false
924
+ },
925
+ timeline: {
926
+ id: "timeline",
927
+ name: "Timeline",
928
+ description: "Shows events along time axis (Phase 2)",
929
+ intent: "trend",
930
+ phase: "phase2",
931
+ contract: {
932
+ requiredDimensions: 1,
933
+ requiredMeasures: 0,
934
+ minDataPoints: 2,
935
+ idealDataPoints: 10,
936
+ allowNegativeValues: false,
937
+ requireNonZeroTotal: false,
938
+ warningThresholds: {},
939
+ fallback: { type: "hide" }
940
+ },
941
+ switchableTo: ["line"],
942
+ supportsStacking: false,
943
+ supportsMultipleSeries: false,
944
+ requiresTimeAxis: true
945
+ }
946
+ };
947
+ var INTENT_CHART_FAMILIES = {
948
+ trend: ["line", "smooth_line", "area", "stacked_area", "area_100pct"],
949
+ comparison: ["bar", "column", "stacked_bar", "stacked_column", "column_100pct", "funnel"],
950
+ composition: ["pie", "donut"],
951
+ distribution: ["histogram"],
952
+ relationship: ["heatmap"],
953
+ geo: []
954
+ };
955
+ function getAllowedSwitchTargets(currentType) {
956
+ const metadata = CHART_REGISTRY[currentType];
957
+ if (!metadata) return [];
958
+ return metadata.switchableTo.filter((type) => {
959
+ const targetMeta = CHART_REGISTRY[type];
960
+ return targetMeta && targetMeta.phase === "mvp";
961
+ });
962
+ }
963
+ function canSwitchChart(from, to) {
964
+ const fromMeta = CHART_REGISTRY[from];
965
+ const toMeta = CHART_REGISTRY[to];
966
+ if (!fromMeta || !toMeta) return false;
967
+ if (fromMeta.intent !== toMeta.intent) return false;
968
+ return fromMeta.switchableTo.includes(to);
969
+ }
970
+ function validateChartData(chartType, data, dimensions, measures) {
971
+ const metadata = CHART_REGISTRY[chartType];
972
+ if (!metadata) {
973
+ return {
974
+ isValid: false,
975
+ warnings: [],
976
+ errors: [`Unknown chart type: ${chartType}`]
977
+ };
978
+ }
979
+ const contract = metadata.contract;
980
+ const warnings = [];
981
+ const errors = [];
982
+ if (data.length < contract.minDataPoints) {
983
+ errors.push(`Requires at least ${contract.minDataPoints} data points, got ${data.length}`);
984
+ }
985
+ if (contract.maxDataPoints && data.length > contract.maxDataPoints) {
986
+ warnings.push(`Chart works best with \u2264${contract.maxDataPoints} items. Consider aggregating.`);
987
+ }
988
+ if (dimensions.length < contract.requiredDimensions) {
989
+ errors.push(`Requires ${contract.requiredDimensions} dimension(s), got ${dimensions.length}`);
990
+ }
991
+ if (measures.length < contract.requiredMeasures) {
992
+ errors.push(`Requires ${contract.requiredMeasures} measure(s), got ${measures.length}`);
993
+ }
994
+ if (!contract.allowNegativeValues && data.length > 0) {
995
+ const hasNegative = data.some((row) => {
996
+ if (typeof row !== "object" || row === null) return false;
997
+ return measures.some((m) => {
998
+ const val = row[m];
999
+ return typeof val === "number" && val < 0;
1000
+ });
1001
+ });
1002
+ if (hasNegative) {
1003
+ errors.push("This chart type does not support negative values");
1004
+ }
1005
+ }
1006
+ if (contract.warningThresholds.tooManyCategories && data.length > contract.warningThresholds.tooManyCategories) {
1007
+ warnings.push(`Too many categories (${data.length}). Consider grouping smaller values.`);
1008
+ }
1009
+ return {
1010
+ isValid: errors.length === 0,
1011
+ warnings,
1012
+ errors,
1013
+ fallbackAction: errors.length > 0 ? contract.fallback : void 0
1014
+ };
1015
+ }
1016
+ function getMVPChartsForIntent(intent) {
1017
+ return Object.values(CHART_REGISTRY).filter(
1018
+ (meta) => meta.intent === intent && meta.phase === "mvp"
1019
+ );
1020
+ }
1021
+ function getDefaultChartForIntent(intent) {
1022
+ const defaults = {
1023
+ trend: "line",
1024
+ comparison: "column",
1025
+ composition: "donut",
1026
+ distribution: "histogram",
1027
+ relationship: "heatmap",
1028
+ geo: "geo"
1029
+ };
1030
+ return defaults[intent];
1031
+ }
1032
+ function suggestChartType(params) {
1033
+ const {
1034
+ hasTimeAxis,
1035
+ dimensionCount,
1036
+ measureCount,
1037
+ dataPointCount,
1038
+ hasNegativeValues,
1039
+ isSequential
1040
+ } = params;
1041
+ if (hasTimeAxis && measureCount >= 1) {
1042
+ if (measureCount > 1 && !hasNegativeValues) return "stacked_area";
1043
+ return "line";
1044
+ }
1045
+ if (isSequential && !hasNegativeValues && dataPointCount <= 7) {
1046
+ return "funnel";
1047
+ }
1048
+ if (measureCount === 1 && dataPointCount <= 6 && !hasNegativeValues) {
1049
+ return "donut";
1050
+ }
1051
+ if (dimensionCount === 2 && measureCount === 1) {
1052
+ return "heatmap";
1053
+ }
1054
+ return "column";
1055
+ }
1056
+ function validateReportStructure(children) {
1057
+ const issues = [];
1058
+ const childArray = React2__default.default.Children.toArray(children);
1059
+ let hasThesis = false;
1060
+ let thesisIndex = -1;
1061
+ const getComponentName2 = (child) => {
1062
+ if (!React2__default.default.isValidElement(child)) return void 0;
1063
+ const type = child.type;
1064
+ return type.displayName || type.name;
1065
+ };
1066
+ const isChart2 = (name) => {
1067
+ return name && (name.endsWith("Chart") || name === "MBTIRadar" || name === "MBTITypeGrid" || name === "KeyMetric");
1068
+ };
1069
+ childArray.forEach((child, index) => {
1070
+ const name = getComponentName2(child);
1071
+ if (name === "ExecutiveThesis") {
1072
+ if (hasThesis) {
1073
+ issues.push({
1074
+ ruleId: "R1",
1075
+ severity: "error",
1076
+ message: "Only one ExecutiveThesis is allowed per report.",
1077
+ component: "ExecutiveThesis"
1078
+ });
1079
+ }
1080
+ hasThesis = true;
1081
+ thesisIndex = index;
1082
+ }
1083
+ if (isChart2(name)) {
1084
+ issues.push({
1085
+ ruleId: "R3",
1086
+ severity: "error",
1087
+ message: `Orphan chart detected: <${name} />. Charts must be placed inside an InsightBlock or EvidenceGroup.`,
1088
+ component: name
1089
+ });
1090
+ }
1091
+ if (name === "InsightBlock" && React2__default.default.isValidElement(child)) {
1092
+ validateInsightBlock(child, issues);
1093
+ }
1094
+ });
1095
+ if (!hasThesis) {
1096
+ issues.push({
1097
+ ruleId: "R1",
1098
+ severity: "error",
1099
+ message: "Report must contain an ExecutiveThesis."
1100
+ });
1101
+ } else if (thesisIndex > 2) {
1102
+ issues.push({
1103
+ ruleId: "R1",
1104
+ severity: "warning",
1105
+ message: "ExecutiveThesis should be the first major component in the report."
1106
+ });
1107
+ }
1108
+ return {
1109
+ isValid: issues.filter((i) => i.severity === "error").length === 0,
1110
+ issues
1111
+ };
1112
+ }
1113
+ function validateInsightBlock(node, issues) {
1114
+ const children = node.props.children;
1115
+ const childArray = React2__default.default.Children.toArray(children);
1116
+ let chartsInBlock = 0;
1117
+ const countCharts = (nodes) => {
1118
+ nodes.forEach((n) => {
1119
+ const name = getComponentName(n);
1120
+ if (isChart(name)) {
1121
+ chartsInBlock++;
1122
+ }
1123
+ if (name === "EvidenceGroup" && React2__default.default.isValidElement(n)) {
1124
+ countCharts(React2__default.default.Children.toArray(n.props.children));
1125
+ }
1126
+ });
1127
+ };
1128
+ countCharts(childArray);
1129
+ if (chartsInBlock > 3) {
1130
+ issues.push({
1131
+ ruleId: "R6",
1132
+ severity: "warning",
1133
+ message: `InsightBlock contains ${chartsInBlock} charts. Recommended maximum is 3 to prevent data dumping.`,
1134
+ component: "InsightBlock"
1135
+ });
1136
+ }
1137
+ }
1138
+ var getComponentName = (child) => {
1139
+ if (!React2__default.default.isValidElement(child)) return void 0;
1140
+ const type = child.type;
1141
+ return type.displayName || type.name;
1142
+ };
1143
+ var isChart = (name) => {
1144
+ return name && (name.endsWith("Chart") || name === "MBTIRadar" || name === "MBTITypeGrid" || name === "KeyMetric");
1145
+ };
1146
+
1147
+ exports.ANALYST_MODE = ANALYST_MODE;
1148
+ exports.ANALYTICAL_STATE_CONFIG = ANALYTICAL_STATE_CONFIG;
1149
+ exports.CHART_REGISTRY = CHART_REGISTRY;
1150
+ exports.CONFIDENCE_THRESHOLDS = CONFIDENCE_THRESHOLDS;
1151
+ exports.EXECUTIVE_MODE = EXECUTIVE_MODE;
1152
+ exports.INSIGHT_TYPE_CONTRACTS = INSIGHT_TYPE_CONTRACTS;
1153
+ exports.INTENT_CHART_FAMILIES = INTENT_CHART_FAMILIES;
1154
+ exports.MINIMUM_SAMPLE_SIZES = MINIMUM_SAMPLE_SIZES;
1155
+ exports.ReportModeProvider = ReportModeProvider;
1156
+ exports.calculateCompleteness = calculateCompleteness;
1157
+ exports.calculateConfidence = calculateConfidence;
1158
+ exports.calculateNormalizedVariance = calculateNormalizedVariance;
1159
+ exports.calculateRecency = calculateRecency;
1160
+ exports.canSwitchChart = canSwitchChart;
1161
+ exports.getAllowedSwitchTargets = getAllowedSwitchTargets;
1162
+ exports.getConfidenceLevel = getConfidenceLevel;
1163
+ exports.getConfidenceThreshold = getConfidenceThreshold;
1164
+ exports.getDefaultChartForIntent = getDefaultChartForIntent;
1165
+ exports.getMVPChartsForIntent = getMVPChartsForIntent;
1166
+ exports.suggestChartType = suggestChartType;
1167
+ exports.useChartData = useChartData;
1168
+ exports.useDataState = useDataState;
1169
+ exports.useReportMode = useReportMode;
1170
+ exports.validateChartData = validateChartData;
1171
+ exports.validateReportStructure = validateReportStructure;
181
1172
  //# sourceMappingURL=out.js.map
182
1173
  //# sourceMappingURL=index.cjs.map