@adminiumjs/adminium 0.1.0-rc.1

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 (875) hide show
  1. package/LICENSE +661 -0
  2. package/README.md +94 -0
  3. package/dashboard/assets/DeltaPill-dxlsGh-1.js +2 -0
  4. package/dashboard/assets/DeltaPill-dxlsGh-1.js.map +1 -0
  5. package/dashboard/assets/DistributionCorrelationWidgets-ztVy_W_R.js +2 -0
  6. package/dashboard/assets/DistributionCorrelationWidgets-ztVy_W_R.js.map +1 -0
  7. package/dashboard/assets/PartWholeWidgets-BDn0i0jt.js +2 -0
  8. package/dashboard/assets/PartWholeWidgets-BDn0i0jt.js.map +1 -0
  9. package/dashboard/assets/RemapEditor-z3vRY12e.js +2 -0
  10. package/dashboard/assets/RemapEditor-z3vRY12e.js.map +1 -0
  11. package/dashboard/assets/ReviewScreen-COkLQ3T7.js +2 -0
  12. package/dashboard/assets/ReviewScreen-COkLQ3T7.js.map +1 -0
  13. package/dashboard/assets/Sparkline-Cvwo368J.js +2 -0
  14. package/dashboard/assets/Sparkline-Cvwo368J.js.map +1 -0
  15. package/dashboard/assets/WidgetMissingCard-D0bPJKIs.js +2 -0
  16. package/dashboard/assets/WidgetMissingCard-D0bPJKIs.js.map +1 -0
  17. package/dashboard/assets/arc-CPxb74pf.js +2 -0
  18. package/dashboard/assets/arc-CPxb74pf.js.map +1 -0
  19. package/dashboard/assets/bars-ranking-components-9Asn_0gR.js +2 -0
  20. package/dashboard/assets/bars-ranking-components-9Asn_0gR.js.map +1 -0
  21. package/dashboard/assets/blocks-track-components-BST-NjK2.js +2 -0
  22. package/dashboard/assets/blocks-track-components-BST-NjK2.js.map +1 -0
  23. package/dashboard/assets/calendar-track-components-RgNtGtZR.js +2 -0
  24. package/dashboard/assets/calendar-track-components-RgNtGtZR.js.map +1 -0
  25. package/dashboard/assets/chrome-track-components-ClNsentC.js +2 -0
  26. package/dashboard/assets/chrome-track-components-ClNsentC.js.map +1 -0
  27. package/dashboard/assets/common-BY1j__bD.js +2 -0
  28. package/dashboard/assets/common-BY1j__bD.js.map +1 -0
  29. package/dashboard/assets/common-BdlXKpcB.js +2 -0
  30. package/dashboard/assets/common-BdlXKpcB.js.map +1 -0
  31. package/dashboard/assets/common-BqqhgMgB.js +2 -0
  32. package/dashboard/assets/common-BqqhgMgB.js.map +1 -0
  33. package/dashboard/assets/common-BribWmIo.js +2 -0
  34. package/dashboard/assets/common-BribWmIo.js.map +1 -0
  35. package/dashboard/assets/common-Cmf0_lKV.js +2 -0
  36. package/dashboard/assets/common-Cmf0_lKV.js.map +1 -0
  37. package/dashboard/assets/common-i0r48qY9.js +2 -0
  38. package/dashboard/assets/common-i0r48qY9.js.map +1 -0
  39. package/dashboard/assets/common-x8cfkwpc.js +2 -0
  40. package/dashboard/assets/common-x8cfkwpc.js.map +1 -0
  41. package/dashboard/assets/communication-track-components-CNLZXOH_.js +2 -0
  42. package/dashboard/assets/communication-track-components-CNLZXOH_.js.map +1 -0
  43. package/dashboard/assets/components-Bp5cFm2d.js +2 -0
  44. package/dashboard/assets/components-Bp5cFm2d.js.map +1 -0
  45. package/dashboard/assets/components-C4-O3_gD.js +2 -0
  46. package/dashboard/assets/components-C4-O3_gD.js.map +1 -0
  47. package/dashboard/assets/domain-ops-track-components-BPa41AU7.js +2 -0
  48. package/dashboard/assets/domain-ops-track-components-BPa41AU7.js.map +1 -0
  49. package/dashboard/assets/domain-track-components-CQ1i1X1t.js +2 -0
  50. package/dashboard/assets/domain-track-components-CQ1i1X1t.js.map +1 -0
  51. package/dashboard/assets/errors-BHUWiAQ3.js +2 -0
  52. package/dashboard/assets/errors-BHUWiAQ3.js.map +1 -0
  53. package/dashboard/assets/errors-BbyKweDG.js +2 -0
  54. package/dashboard/assets/errors-BbyKweDG.js.map +1 -0
  55. package/dashboard/assets/errors-CMQ6JC31.js +2 -0
  56. package/dashboard/assets/errors-CMQ6JC31.js.map +1 -0
  57. package/dashboard/assets/errors-D3nVgTmf.js +2 -0
  58. package/dashboard/assets/errors-D3nVgTmf.js.map +1 -0
  59. package/dashboard/assets/errors-IqJSoANC.js +2 -0
  60. package/dashboard/assets/errors-IqJSoANC.js.map +1 -0
  61. package/dashboard/assets/errors-gmIkO9F6.js +2 -0
  62. package/dashboard/assets/errors-gmIkO9F6.js.map +1 -0
  63. package/dashboard/assets/errors-vFk058Vh.js +2 -0
  64. package/dashboard/assets/errors-vFk058Vh.js.map +1 -0
  65. package/dashboard/assets/feeds-track-f-components-Cl_8SkGs.js +2 -0
  66. package/dashboard/assets/feeds-track-f-components-Cl_8SkGs.js.map +1 -0
  67. package/dashboard/assets/format-Lx4cQ8k-.js +2 -0
  68. package/dashboard/assets/format-Lx4cQ8k-.js.map +1 -0
  69. package/dashboard/assets/forms-track-components-Bc2Hoxdh.js +2 -0
  70. package/dashboard/assets/forms-track-components-Bc2Hoxdh.js.map +1 -0
  71. package/dashboard/assets/generated-1EfWhCMA.js +2 -0
  72. package/dashboard/assets/generated-1EfWhCMA.js.map +1 -0
  73. package/dashboard/assets/generated-BB3ZMxvx.js +2 -0
  74. package/dashboard/assets/generated-BB3ZMxvx.js.map +1 -0
  75. package/dashboard/assets/generated-C0JVNBRX.js +2 -0
  76. package/dashboard/assets/generated-C0JVNBRX.js.map +1 -0
  77. package/dashboard/assets/generated-C1W48_-3.js +2 -0
  78. package/dashboard/assets/generated-C1W48_-3.js.map +1 -0
  79. package/dashboard/assets/generated-CluiB_xY.js +2 -0
  80. package/dashboard/assets/generated-CluiB_xY.js.map +1 -0
  81. package/dashboard/assets/generated-DDGtlf-4.js +2 -0
  82. package/dashboard/assets/generated-DDGtlf-4.js.map +1 -0
  83. package/dashboard/assets/generated-DPCHvNto.js +2 -0
  84. package/dashboard/assets/generated-DPCHvNto.js.map +1 -0
  85. package/dashboard/assets/geo-track-components-Ct4-MSRw.js +3 -0
  86. package/dashboard/assets/geo-track-components-Ct4-MSRw.js.map +1 -0
  87. package/dashboard/assets/ibm-plex-sans-arabic-arabic-400-normal-CyU-ddYS.woff2 +0 -0
  88. package/dashboard/assets/ibm-plex-sans-arabic-arabic-500-normal-C4MQITzh.woff2 +0 -0
  89. package/dashboard/assets/ibm-plex-sans-arabic-arabic-600-normal-0pRdybE_.woff2 +0 -0
  90. package/dashboard/assets/ibm-plex-sans-arabic-arabic-700-normal-DrtBj6UE.woff2 +0 -0
  91. package/dashboard/assets/index-DPi4cduu.css +1 -0
  92. package/dashboard/assets/index-PB1II0WV.js +137 -0
  93. package/dashboard/assets/index-PB1II0WV.js.map +1 -0
  94. package/dashboard/assets/jetbrains-mono-latin-ext-wght-italic-BrDczivE.woff2 +0 -0
  95. package/dashboard/assets/jetbrains-mono-latin-ext-wght-normal-DBQx-q_a.woff2 +0 -0
  96. package/dashboard/assets/jetbrains-mono-latin-wght-italic-B2M6KQje.woff2 +0 -0
  97. package/dashboard/assets/jetbrains-mono-latin-wght-normal-B9CIFXIH.woff2 +0 -0
  98. package/dashboard/assets/leaflet-CIGW-MKW.css +1 -0
  99. package/dashboard/assets/leaflet-src-D12shr04.js +2 -0
  100. package/dashboard/assets/leaflet-src-D12shr04.js.map +1 -0
  101. package/dashboard/assets/manrope-latin-ext-wght-normal-Ch3YOpNY.woff2 +0 -0
  102. package/dashboard/assets/manrope-latin-wght-normal-DHIcAJRg.woff2 +0 -0
  103. package/dashboard/assets/media-track-components-CpeII-tT.js +2 -0
  104. package/dashboard/assets/media-track-components-CpeII-tT.js.map +1 -0
  105. package/dashboard/assets/scales-e0tkfEy1.js +2 -0
  106. package/dashboard/assets/scales-e0tkfEy1.js.map +1 -0
  107. package/dashboard/assets/sparkline-2JUGDrMW.js +2 -0
  108. package/dashboard/assets/sparkline-2JUGDrMW.js.map +1 -0
  109. package/dashboard/assets/stats-BNgXz5BD.js +2 -0
  110. package/dashboard/assets/stats-BNgXz5BD.js.map +1 -0
  111. package/dashboard/assets/studio-B7hMOwAF.js +2 -0
  112. package/dashboard/assets/studio-B7hMOwAF.js.map +1 -0
  113. package/dashboard/assets/studio-BN_9xHY3.js +2 -0
  114. package/dashboard/assets/studio-BN_9xHY3.js.map +1 -0
  115. package/dashboard/assets/studio-Cn2MObe8.js +2 -0
  116. package/dashboard/assets/studio-Cn2MObe8.js.map +1 -0
  117. package/dashboard/assets/studio-DZEZCCkw.js +2 -0
  118. package/dashboard/assets/studio-DZEZCCkw.js.map +1 -0
  119. package/dashboard/assets/studio-DzatTvLl.js +2 -0
  120. package/dashboard/assets/studio-DzatTvLl.js.map +1 -0
  121. package/dashboard/assets/studio-cBlD8x90.js +2 -0
  122. package/dashboard/assets/studio-cBlD8x90.js.map +1 -0
  123. package/dashboard/assets/studio-cglZPbJK.js +2 -0
  124. package/dashboard/assets/studio-cglZPbJK.js.map +1 -0
  125. package/dashboard/assets/system-track-components-GTYYpnfB.js +2 -0
  126. package/dashboard/assets/system-track-components-GTYYpnfB.js.map +1 -0
  127. package/dashboard/assets/tables-tail-components-DiA5GeHB.js +2 -0
  128. package/dashboard/assets/tables-tail-components-DiA5GeHB.js.map +1 -0
  129. package/dashboard/assets/tables-track-f-components-CVNPd7rq.js +2 -0
  130. package/dashboard/assets/tables-track-f-components-CVNPd7rq.js.map +1 -0
  131. package/dashboard/assets/time-flow-components-nKsaryry.js +2 -0
  132. package/dashboard/assets/time-flow-components-nKsaryry.js.map +1 -0
  133. package/dashboard/assets/ui-B-kZetor.js +2 -0
  134. package/dashboard/assets/ui-B-kZetor.js.map +1 -0
  135. package/dashboard/assets/ui-BEStJ5Pw.js +2 -0
  136. package/dashboard/assets/ui-BEStJ5Pw.js.map +1 -0
  137. package/dashboard/assets/ui-BS5_eDN4.js +2 -0
  138. package/dashboard/assets/ui-BS5_eDN4.js.map +1 -0
  139. package/dashboard/assets/ui-BZ0EyxRH.js +2 -0
  140. package/dashboard/assets/ui-BZ0EyxRH.js.map +1 -0
  141. package/dashboard/assets/ui-BloJDdt6.js +2 -0
  142. package/dashboard/assets/ui-BloJDdt6.js.map +1 -0
  143. package/dashboard/assets/ui-CpdrplJH.js +2 -0
  144. package/dashboard/assets/ui-CpdrplJH.js.map +1 -0
  145. package/dashboard/assets/ui-YJfT644k.js +2 -0
  146. package/dashboard/assets/ui-YJfT644k.js.map +1 -0
  147. package/dashboard/assets/widgets-uDqZWw4A.js +2 -0
  148. package/dashboard/assets/widgets-uDqZWw4A.js.map +1 -0
  149. package/dashboard/index.html +41 -0
  150. package/dist/app.d.ts +48 -0
  151. package/dist/app.d.ts.map +1 -0
  152. package/dist/app.js +250 -0
  153. package/dist/app.js.map +1 -0
  154. package/dist/auth/audit.d.ts +22 -0
  155. package/dist/auth/audit.d.ts.map +1 -0
  156. package/dist/auth/audit.js +17 -0
  157. package/dist/auth/audit.js.map +1 -0
  158. package/dist/auth/desktop-session.d.ts +53 -0
  159. package/dist/auth/desktop-session.d.ts.map +1 -0
  160. package/dist/auth/desktop-session.js +111 -0
  161. package/dist/auth/desktop-session.js.map +1 -0
  162. package/dist/auth/passwords.d.ts +17 -0
  163. package/dist/auth/passwords.d.ts.map +1 -0
  164. package/dist/auth/passwords.js +40 -0
  165. package/dist/auth/passwords.js.map +1 -0
  166. package/dist/auth/sessions.d.ts +77 -0
  167. package/dist/auth/sessions.d.ts.map +1 -0
  168. package/dist/auth/sessions.js +137 -0
  169. package/dist/auth/sessions.js.map +1 -0
  170. package/dist/auth/totp.d.ts +30 -0
  171. package/dist/auth/totp.d.ts.map +1 -0
  172. package/dist/auth/totp.js +97 -0
  173. package/dist/auth/totp.js.map +1 -0
  174. package/dist/backup/backup-service.d.ts +157 -0
  175. package/dist/backup/backup-service.d.ts.map +1 -0
  176. package/dist/backup/backup-service.js +354 -0
  177. package/dist/backup/backup-service.js.map +1 -0
  178. package/dist/backup/format.d.ts +300 -0
  179. package/dist/backup/format.d.ts.map +1 -0
  180. package/dist/backup/format.js +304 -0
  181. package/dist/backup/format.js.map +1 -0
  182. package/dist/backup/notify.d.ts +55 -0
  183. package/dist/backup/notify.d.ts.map +1 -0
  184. package/dist/backup/notify.js +60 -0
  185. package/dist/backup/notify.js.map +1 -0
  186. package/dist/backup/snapshot.d.ts +78 -0
  187. package/dist/backup/snapshot.d.ts.map +1 -0
  188. package/dist/backup/snapshot.js +142 -0
  189. package/dist/backup/snapshot.js.map +1 -0
  190. package/dist/capabilities/catalog.d.ts +33 -0
  191. package/dist/capabilities/catalog.d.ts.map +1 -0
  192. package/dist/capabilities/catalog.js +32 -0
  193. package/dist/capabilities/catalog.js.map +1 -0
  194. package/dist/capabilities/grants.d.ts +44 -0
  195. package/dist/capabilities/grants.d.ts.map +1 -0
  196. package/dist/capabilities/grants.js +65 -0
  197. package/dist/capabilities/grants.js.map +1 -0
  198. package/dist/cli/allowlist.d.ts +46 -0
  199. package/dist/cli/allowlist.d.ts.map +1 -0
  200. package/dist/cli/allowlist.js +99 -0
  201. package/dist/cli/allowlist.js.map +1 -0
  202. package/dist/cli/args.d.ts +63 -0
  203. package/dist/cli/args.d.ts.map +1 -0
  204. package/dist/cli/args.js +92 -0
  205. package/dist/cli/args.js.map +1 -0
  206. package/dist/cli/command.d.ts +32 -0
  207. package/dist/cli/command.d.ts.map +1 -0
  208. package/dist/cli/command.js +64 -0
  209. package/dist/cli/command.js.map +1 -0
  210. package/dist/cli/commands/apply-llm-response.d.ts +32 -0
  211. package/dist/cli/commands/apply-llm-response.d.ts.map +1 -0
  212. package/dist/cli/commands/apply-llm-response.js +209 -0
  213. package/dist/cli/commands/apply-llm-response.js.map +1 -0
  214. package/dist/cli/commands/export-zip.d.ts +17 -0
  215. package/dist/cli/commands/export-zip.d.ts.map +1 -0
  216. package/dist/cli/commands/export-zip.js +111 -0
  217. package/dist/cli/commands/export-zip.js.map +1 -0
  218. package/dist/cli/commands/generate-prompt.d.ts +29 -0
  219. package/dist/cli/commands/generate-prompt.d.ts.map +1 -0
  220. package/dist/cli/commands/generate-prompt.js +154 -0
  221. package/dist/cli/commands/generate-prompt.js.map +1 -0
  222. package/dist/cli/commands/import-zip.d.ts +13 -0
  223. package/dist/cli/commands/import-zip.d.ts.map +1 -0
  224. package/dist/cli/commands/import-zip.js +95 -0
  225. package/dist/cli/commands/import-zip.js.map +1 -0
  226. package/dist/cli/commands/init.d.ts +47 -0
  227. package/dist/cli/commands/init.d.ts.map +1 -0
  228. package/dist/cli/commands/init.js +372 -0
  229. package/dist/cli/commands/init.js.map +1 -0
  230. package/dist/cli/commands/introspect.d.ts +11 -0
  231. package/dist/cli/commands/introspect.d.ts.map +1 -0
  232. package/dist/cli/commands/introspect.js +100 -0
  233. package/dist/cli/commands/introspect.js.map +1 -0
  234. package/dist/cli/commands/migrate.d.ts +11 -0
  235. package/dist/cli/commands/migrate.d.ts.map +1 -0
  236. package/dist/cli/commands/migrate.js +80 -0
  237. package/dist/cli/commands/migrate.js.map +1 -0
  238. package/dist/cli/commands/start.d.ts +22 -0
  239. package/dist/cli/commands/start.d.ts.map +1 -0
  240. package/dist/cli/commands/start.js +101 -0
  241. package/dist/cli/commands/start.js.map +1 -0
  242. package/dist/cli/exit.d.ts +37 -0
  243. package/dist/cli/exit.d.ts.map +1 -0
  244. package/dist/cli/exit.js +39 -0
  245. package/dist/cli/exit.js.map +1 -0
  246. package/dist/cli/index.d.ts +10 -0
  247. package/dist/cli/index.d.ts.map +1 -0
  248. package/dist/cli/index.js +17 -0
  249. package/dist/cli/index.js.map +1 -0
  250. package/dist/cli/io.d.ts +49 -0
  251. package/dist/cli/io.d.ts.map +1 -0
  252. package/dist/cli/io.js +77 -0
  253. package/dist/cli/io.js.map +1 -0
  254. package/dist/cli/run.d.ts +35 -0
  255. package/dist/cli/run.d.ts.map +1 -0
  256. package/dist/cli/run.js +139 -0
  257. package/dist/cli/run.js.map +1 -0
  258. package/dist/cli/runtime.d.ts +116 -0
  259. package/dist/cli/runtime.d.ts.map +1 -0
  260. package/dist/cli/runtime.js +181 -0
  261. package/dist/cli/runtime.js.map +1 -0
  262. package/dist/cli/static-root.d.ts +42 -0
  263. package/dist/cli/static-root.d.ts.map +1 -0
  264. package/dist/cli/static-root.js +58 -0
  265. package/dist/cli/static-root.js.map +1 -0
  266. package/dist/compose.d.ts +135 -0
  267. package/dist/compose.d.ts.map +1 -0
  268. package/dist/compose.js +383 -0
  269. package/dist/compose.js.map +1 -0
  270. package/dist/config/bootstrap.d.ts +33 -0
  271. package/dist/config/bootstrap.d.ts.map +1 -0
  272. package/dist/config/bootstrap.js +81 -0
  273. package/dist/config/bootstrap.js.map +1 -0
  274. package/dist/config/env.d.ts +95 -0
  275. package/dist/config/env.d.ts.map +1 -0
  276. package/dist/config/env.js +236 -0
  277. package/dist/config/env.js.map +1 -0
  278. package/dist/config/secrets.d.ts +24 -0
  279. package/dist/config/secrets.d.ts.map +1 -0
  280. package/dist/config/secrets.js +74 -0
  281. package/dist/config/secrets.js.map +1 -0
  282. package/dist/connections/crypto.d.ts +9 -0
  283. package/dist/connections/crypto.d.ts.map +1 -0
  284. package/dist/connections/crypto.js +16 -0
  285. package/dist/connections/crypto.js.map +1 -0
  286. package/dist/connections/dsn.d.ts +42 -0
  287. package/dist/connections/dsn.d.ts.map +1 -0
  288. package/dist/connections/dsn.js +131 -0
  289. package/dist/connections/dsn.js.map +1 -0
  290. package/dist/connections/effective-schema.d.ts +65 -0
  291. package/dist/connections/effective-schema.d.ts.map +1 -0
  292. package/dist/connections/effective-schema.js +249 -0
  293. package/dist/connections/effective-schema.js.map +1 -0
  294. package/dist/connections/introspect.d.ts +52 -0
  295. package/dist/connections/introspect.d.ts.map +1 -0
  296. package/dist/connections/introspect.js +111 -0
  297. package/dist/connections/introspect.js.map +1 -0
  298. package/dist/connections/manager.d.ts +97 -0
  299. package/dist/connections/manager.d.ts.map +1 -0
  300. package/dist/connections/manager.js +224 -0
  301. package/dist/connections/manager.js.map +1 -0
  302. package/dist/connections/register-adapters.d.ts +42 -0
  303. package/dist/connections/register-adapters.d.ts.map +1 -0
  304. package/dist/connections/register-adapters.js +92 -0
  305. package/dist/connections/register-adapters.js.map +1 -0
  306. package/dist/crud/filters.d.ts +57 -0
  307. package/dist/crud/filters.d.ts.map +1 -0
  308. package/dist/crud/filters.js +177 -0
  309. package/dist/crud/filters.js.map +1 -0
  310. package/dist/crud/identifiers.d.ts +58 -0
  311. package/dist/crud/identifiers.d.ts.map +1 -0
  312. package/dist/crud/identifiers.js +99 -0
  313. package/dist/crud/identifiers.js.map +1 -0
  314. package/dist/crud/list.d.ts +51 -0
  315. package/dist/crud/list.d.ts.map +1 -0
  316. package/dist/crud/list.js +126 -0
  317. package/dist/crud/list.js.map +1 -0
  318. package/dist/crud/mask.d.ts +23 -0
  319. package/dist/crud/mask.d.ts.map +1 -0
  320. package/dist/crud/mask.js +41 -0
  321. package/dist/crud/mask.js.map +1 -0
  322. package/dist/crud/records.d.ts +33 -0
  323. package/dist/crud/records.d.ts.map +1 -0
  324. package/dist/crud/records.js +126 -0
  325. package/dist/crud/records.js.map +1 -0
  326. package/dist/crud/undo.d.ts +55 -0
  327. package/dist/crud/undo.d.ts.map +1 -0
  328. package/dist/crud/undo.js +74 -0
  329. package/dist/crud/undo.js.map +1 -0
  330. package/dist/data-io/coerce.d.ts +28 -0
  331. package/dist/data-io/coerce.d.ts.map +1 -0
  332. package/dist/data-io/coerce.js +123 -0
  333. package/dist/data-io/coerce.js.map +1 -0
  334. package/dist/data-io/csv.d.ts +38 -0
  335. package/dist/data-io/csv.d.ts.map +1 -0
  336. package/dist/data-io/csv.js +138 -0
  337. package/dist/data-io/csv.js.map +1 -0
  338. package/dist/data-io/snapshot-view.d.ts +10 -0
  339. package/dist/data-io/snapshot-view.d.ts.map +1 -0
  340. package/dist/data-io/snapshot-view.js +19 -0
  341. package/dist/data-io/snapshot-view.js.map +1 -0
  342. package/dist/desktop/demo-seed.d.ts +23 -0
  343. package/dist/desktop/demo-seed.d.ts.map +1 -0
  344. package/dist/desktop/demo-seed.js +28 -0
  345. package/dist/desktop/demo-seed.js.map +1 -0
  346. package/dist/desktop/lan-share.d.ts +94 -0
  347. package/dist/desktop/lan-share.d.ts.map +1 -0
  348. package/dist/desktop/lan-share.js +150 -0
  349. package/dist/desktop/lan-share.js.map +1 -0
  350. package/dist/errors.d.ts +72 -0
  351. package/dist/errors.d.ts.map +1 -0
  352. package/dist/errors.js +82 -0
  353. package/dist/errors.js.map +1 -0
  354. package/dist/export/bundle.d.ts +235 -0
  355. package/dist/export/bundle.d.ts.map +1 -0
  356. package/dist/export/bundle.js +172 -0
  357. package/dist/export/bundle.js.map +1 -0
  358. package/dist/export/import-service.d.ts +99 -0
  359. package/dist/export/import-service.d.ts.map +1 -0
  360. package/dist/export/import-service.js +515 -0
  361. package/dist/export/import-service.js.map +1 -0
  362. package/dist/export/readme.d.ts +25 -0
  363. package/dist/export/readme.d.ts.map +1 -0
  364. package/dist/export/readme.js +154 -0
  365. package/dist/export/readme.js.map +1 -0
  366. package/dist/export/redaction.d.ts +118 -0
  367. package/dist/export/redaction.d.ts.map +1 -0
  368. package/dist/export/redaction.js +233 -0
  369. package/dist/export/redaction.js.map +1 -0
  370. package/dist/export/zip-service.d.ts +66 -0
  371. package/dist/export/zip-service.d.ts.map +1 -0
  372. package/dist/export/zip-service.js +306 -0
  373. package/dist/export/zip-service.js.map +1 -0
  374. package/dist/files/storage.d.ts +50 -0
  375. package/dist/files/storage.d.ts.map +1 -0
  376. package/dist/files/storage.js +100 -0
  377. package/dist/files/storage.js.map +1 -0
  378. package/dist/generate/materialize-llm.d.ts +45 -0
  379. package/dist/generate/materialize-llm.d.ts.map +1 -0
  380. package/dist/generate/materialize-llm.js +167 -0
  381. package/dist/generate/materialize-llm.js.map +1 -0
  382. package/dist/generate/run.d.ts +48 -0
  383. package/dist/generate/run.d.ts.map +1 -0
  384. package/dist/generate/run.js +123 -0
  385. package/dist/generate/run.js.map +1 -0
  386. package/dist/index.d.ts +89 -0
  387. package/dist/index.d.ts.map +1 -0
  388. package/dist/index.js +116 -0
  389. package/dist/index.js.map +1 -0
  390. package/dist/jobs/export-run.d.ts +38 -0
  391. package/dist/jobs/export-run.d.ts.map +1 -0
  392. package/dist/jobs/export-run.js +172 -0
  393. package/dist/jobs/export-run.js.map +1 -0
  394. package/dist/jobs/import-run.d.ts +43 -0
  395. package/dist/jobs/import-run.d.ts.map +1 -0
  396. package/dist/jobs/import-run.js +290 -0
  397. package/dist/jobs/import-run.js.map +1 -0
  398. package/dist/jobs/llm-run.d.ts +73 -0
  399. package/dist/jobs/llm-run.d.ts.map +1 -0
  400. package/dist/jobs/llm-run.js +225 -0
  401. package/dist/jobs/llm-run.js.map +1 -0
  402. package/dist/jobs/register.d.ts +90 -0
  403. package/dist/jobs/register.d.ts.map +1 -0
  404. package/dist/jobs/register.js +121 -0
  405. package/dist/jobs/register.js.map +1 -0
  406. package/dist/jobs/registry.d.ts +74 -0
  407. package/dist/jobs/registry.d.ts.map +1 -0
  408. package/dist/jobs/registry.js +78 -0
  409. package/dist/jobs/registry.js.map +1 -0
  410. package/dist/jobs/report-run.d.ts +64 -0
  411. package/dist/jobs/report-run.d.ts.map +1 -0
  412. package/dist/jobs/report-run.js +221 -0
  413. package/dist/jobs/report-run.js.map +1 -0
  414. package/dist/jobs/scheduler.d.ts +72 -0
  415. package/dist/jobs/scheduler.d.ts.map +1 -0
  416. package/dist/jobs/scheduler.js +121 -0
  417. package/dist/jobs/scheduler.js.map +1 -0
  418. package/dist/jobs/worker.d.ts +110 -0
  419. package/dist/jobs/worker.d.ts.map +1 -0
  420. package/dist/jobs/worker.js +282 -0
  421. package/dist/jobs/worker.js.map +1 -0
  422. package/dist/llm/apply-service.d.ts +150 -0
  423. package/dist/llm/apply-service.d.ts.map +1 -0
  424. package/dist/llm/apply-service.js +463 -0
  425. package/dist/llm/apply-service.js.map +1 -0
  426. package/dist/llm/apply-undo-store.d.ts +50 -0
  427. package/dist/llm/apply-undo-store.d.ts.map +1 -0
  428. package/dist/llm/apply-undo-store.js +60 -0
  429. package/dist/llm/apply-undo-store.js.map +1 -0
  430. package/dist/llm/direct-runner.d.ts +146 -0
  431. package/dist/llm/direct-runner.d.ts.map +1 -0
  432. package/dist/llm/direct-runner.js +204 -0
  433. package/dist/llm/direct-runner.js.map +1 -0
  434. package/dist/llm/prompt-service.d.ts +90 -0
  435. package/dist/llm/prompt-service.d.ts.map +1 -0
  436. package/dist/llm/prompt-service.js +93 -0
  437. package/dist/llm/prompt-service.js.map +1 -0
  438. package/dist/llm/provider-resolver.d.ts +25 -0
  439. package/dist/llm/provider-resolver.d.ts.map +1 -0
  440. package/dist/llm/provider-resolver.js +81 -0
  441. package/dist/llm/provider-resolver.js.map +1 -0
  442. package/dist/llm/run-service.d.ts +215 -0
  443. package/dist/llm/run-service.d.ts.map +1 -0
  444. package/dist/llm/run-service.js +343 -0
  445. package/dist/llm/run-service.js.map +1 -0
  446. package/dist/llm/stats-collector.d.ts +40 -0
  447. package/dist/llm/stats-collector.d.ts.map +1 -0
  448. package/dist/llm/stats-collector.js +74 -0
  449. package/dist/llm/stats-collector.js.map +1 -0
  450. package/dist/log-scrub.d.ts +58 -0
  451. package/dist/log-scrub.d.ts.map +1 -0
  452. package/dist/log-scrub.js +103 -0
  453. package/dist/log-scrub.js.map +1 -0
  454. package/dist/meta/store.d.ts +96 -0
  455. package/dist/meta/store.d.ts.map +1 -0
  456. package/dist/meta/store.js +192 -0
  457. package/dist/meta/store.js.map +1 -0
  458. package/dist/notifications/notify.d.ts +43 -0
  459. package/dist/notifications/notify.d.ts.map +1 -0
  460. package/dist/notifications/notify.js +42 -0
  461. package/dist/notifications/notify.js.map +1 -0
  462. package/dist/plugins/auth.d.ts +42 -0
  463. package/dist/plugins/auth.d.ts.map +1 -0
  464. package/dist/plugins/auth.js +84 -0
  465. package/dist/plugins/auth.js.map +1 -0
  466. package/dist/plugins/core.d.ts +48 -0
  467. package/dist/plugins/core.d.ts.map +1 -0
  468. package/dist/plugins/core.js +248 -0
  469. package/dist/plugins/core.js.map +1 -0
  470. package/dist/plugins/rbac.d.ts +54 -0
  471. package/dist/plugins/rbac.d.ts.map +1 -0
  472. package/dist/plugins/rbac.js +103 -0
  473. package/dist/plugins/rbac.js.map +1 -0
  474. package/dist/plugins/static.d.ts +12 -0
  475. package/dist/plugins/static.d.ts.map +1 -0
  476. package/dist/plugins/static.js +36 -0
  477. package/dist/plugins/static.js.map +1 -0
  478. package/dist/rbac/api-keys.d.ts +30 -0
  479. package/dist/rbac/api-keys.d.ts.map +1 -0
  480. package/dist/rbac/api-keys.js +41 -0
  481. package/dist/rbac/api-keys.js.map +1 -0
  482. package/dist/rbac/index.d.ts +6 -0
  483. package/dist/rbac/index.d.ts.map +1 -0
  484. package/dist/rbac/index.js +6 -0
  485. package/dist/rbac/index.js.map +1 -0
  486. package/dist/rbac/permissions.d.ts +107 -0
  487. package/dist/rbac/permissions.d.ts.map +1 -0
  488. package/dist/rbac/permissions.js +250 -0
  489. package/dist/rbac/permissions.js.map +1 -0
  490. package/dist/rbac/principal.d.ts +33 -0
  491. package/dist/rbac/principal.d.ts.map +1 -0
  492. package/dist/rbac/principal.js +31 -0
  493. package/dist/rbac/principal.js.map +1 -0
  494. package/dist/rbac/resolver.d.ts +26 -0
  495. package/dist/rbac/resolver.d.ts.map +1 -0
  496. package/dist/rbac/resolver.js +46 -0
  497. package/dist/rbac/resolver.js.map +1 -0
  498. package/dist/realtime/hub.d.ts +90 -0
  499. package/dist/realtime/hub.d.ts.map +1 -0
  500. package/dist/realtime/hub.js +146 -0
  501. package/dist/realtime/hub.js.map +1 -0
  502. package/dist/realtime/sse.d.ts +35 -0
  503. package/dist/realtime/sse.d.ts.map +1 -0
  504. package/dist/realtime/sse.js +88 -0
  505. package/dist/realtime/sse.js.map +1 -0
  506. package/dist/realtime/ws.d.ts +38 -0
  507. package/dist/realtime/ws.d.ts.map +1 -0
  508. package/dist/realtime/ws.js +124 -0
  509. package/dist/realtime/ws.js.map +1 -0
  510. package/dist/reports/schedule.d.ts +14 -0
  511. package/dist/reports/schedule.d.ts.map +1 -0
  512. package/dist/reports/schedule.js +63 -0
  513. package/dist/reports/schedule.js.map +1 -0
  514. package/dist/routes/about/index.d.ts +39 -0
  515. package/dist/routes/about/index.d.ts.map +1 -0
  516. package/dist/routes/about/index.js +73 -0
  517. package/dist/routes/about/index.js.map +1 -0
  518. package/dist/routes/about/schema.d.ts +50 -0
  519. package/dist/routes/about/schema.d.ts.map +1 -0
  520. package/dist/routes/about/schema.js +53 -0
  521. package/dist/routes/about/schema.js.map +1 -0
  522. package/dist/routes/api-keys/index.d.ts +11 -0
  523. package/dist/routes/api-keys/index.d.ts.map +1 -0
  524. package/dist/routes/api-keys/index.js +79 -0
  525. package/dist/routes/api-keys/index.js.map +1 -0
  526. package/dist/routes/api-keys/schema.d.ts +62 -0
  527. package/dist/routes/api-keys/schema.d.ts.map +1 -0
  528. package/dist/routes/api-keys/schema.js +37 -0
  529. package/dist/routes/api-keys/schema.js.map +1 -0
  530. package/dist/routes/audit/index.d.ts +11 -0
  531. package/dist/routes/audit/index.d.ts.map +1 -0
  532. package/dist/routes/audit/index.js +107 -0
  533. package/dist/routes/audit/index.js.map +1 -0
  534. package/dist/routes/audit/schema.d.ts +129 -0
  535. package/dist/routes/audit/schema.d.ts.map +1 -0
  536. package/dist/routes/audit/schema.js +43 -0
  537. package/dist/routes/audit/schema.js.map +1 -0
  538. package/dist/routes/auth/desktop-session.d.ts +48 -0
  539. package/dist/routes/auth/desktop-session.d.ts.map +1 -0
  540. package/dist/routes/auth/desktop-session.js +132 -0
  541. package/dist/routes/auth/desktop-session.js.map +1 -0
  542. package/dist/routes/auth/handlers.d.ts +21 -0
  543. package/dist/routes/auth/handlers.d.ts.map +1 -0
  544. package/dist/routes/auth/handlers.js +256 -0
  545. package/dist/routes/auth/handlers.js.map +1 -0
  546. package/dist/routes/auth/index.d.ts +27 -0
  547. package/dist/routes/auth/index.d.ts.map +1 -0
  548. package/dist/routes/auth/index.js +67 -0
  549. package/dist/routes/auth/index.js.map +1 -0
  550. package/dist/routes/auth/schema.d.ts +129 -0
  551. package/dist/routes/auth/schema.d.ts.map +1 -0
  552. package/dist/routes/auth/schema.js +84 -0
  553. package/dist/routes/auth/schema.js.map +1 -0
  554. package/dist/routes/bootstrap/handlers.d.ts +34 -0
  555. package/dist/routes/bootstrap/handlers.d.ts.map +1 -0
  556. package/dist/routes/bootstrap/handlers.js +96 -0
  557. package/dist/routes/bootstrap/handlers.js.map +1 -0
  558. package/dist/routes/bootstrap/index.d.ts +9 -0
  559. package/dist/routes/bootstrap/index.d.ts.map +1 -0
  560. package/dist/routes/bootstrap/index.js +16 -0
  561. package/dist/routes/bootstrap/index.js.map +1 -0
  562. package/dist/routes/bootstrap/schema.d.ts +177 -0
  563. package/dist/routes/bootstrap/schema.d.ts.map +1 -0
  564. package/dist/routes/bootstrap/schema.js +55 -0
  565. package/dist/routes/bootstrap/schema.js.map +1 -0
  566. package/dist/routes/connections/index.d.ts +21 -0
  567. package/dist/routes/connections/index.d.ts.map +1 -0
  568. package/dist/routes/connections/index.js +260 -0
  569. package/dist/routes/connections/index.js.map +1 -0
  570. package/dist/routes/connections/schema.d.ts +161 -0
  571. package/dist/routes/connections/schema.d.ts.map +1 -0
  572. package/dist/routes/connections/schema.js +91 -0
  573. package/dist/routes/connections/schema.js.map +1 -0
  574. package/dist/routes/data/index.d.ts +46 -0
  575. package/dist/routes/data/index.d.ts.map +1 -0
  576. package/dist/routes/data/index.js +508 -0
  577. package/dist/routes/data/index.js.map +1 -0
  578. package/dist/routes/data/schema.d.ts +128 -0
  579. package/dist/routes/data/schema.d.ts.map +1 -0
  580. package/dist/routes/data/schema.js +83 -0
  581. package/dist/routes/data/schema.js.map +1 -0
  582. package/dist/routes/desktop/index.d.ts +61 -0
  583. package/dist/routes/desktop/index.d.ts.map +1 -0
  584. package/dist/routes/desktop/index.js +91 -0
  585. package/dist/routes/desktop/index.js.map +1 -0
  586. package/dist/routes/desktop/schema.d.ts +71 -0
  587. package/dist/routes/desktop/schema.d.ts.map +1 -0
  588. package/dist/routes/desktop/schema.js +58 -0
  589. package/dist/routes/desktop/schema.js.map +1 -0
  590. package/dist/routes/desktop-capabilities/index.d.ts +9 -0
  591. package/dist/routes/desktop-capabilities/index.d.ts.map +1 -0
  592. package/dist/routes/desktop-capabilities/index.js +62 -0
  593. package/dist/routes/desktop-capabilities/index.js.map +1 -0
  594. package/dist/routes/desktop-capabilities/schema.d.ts +46 -0
  595. package/dist/routes/desktop-capabilities/schema.d.ts.map +1 -0
  596. package/dist/routes/desktop-capabilities/schema.js +30 -0
  597. package/dist/routes/desktop-capabilities/schema.js.map +1 -0
  598. package/dist/routes/desktop-demo/handlers.d.ts +94 -0
  599. package/dist/routes/desktop-demo/handlers.d.ts.map +1 -0
  600. package/dist/routes/desktop-demo/handlers.js +182 -0
  601. package/dist/routes/desktop-demo/handlers.js.map +1 -0
  602. package/dist/routes/desktop-demo/index.d.ts +39 -0
  603. package/dist/routes/desktop-demo/index.d.ts.map +1 -0
  604. package/dist/routes/desktop-demo/index.js +73 -0
  605. package/dist/routes/desktop-demo/index.js.map +1 -0
  606. package/dist/routes/desktop-demo/schema.d.ts +17 -0
  607. package/dist/routes/desktop-demo/schema.d.ts.map +1 -0
  608. package/dist/routes/desktop-demo/schema.js +30 -0
  609. package/dist/routes/desktop-demo/schema.js.map +1 -0
  610. package/dist/routes/desktop-lan/index.d.ts +54 -0
  611. package/dist/routes/desktop-lan/index.d.ts.map +1 -0
  612. package/dist/routes/desktop-lan/index.js +33 -0
  613. package/dist/routes/desktop-lan/index.js.map +1 -0
  614. package/dist/routes/desktop-lan/schema.d.ts +24 -0
  615. package/dist/routes/desktop-lan/schema.d.ts.map +1 -0
  616. package/dist/routes/desktop-lan/schema.js +40 -0
  617. package/dist/routes/desktop-lan/schema.js.map +1 -0
  618. package/dist/routes/desktop-local-db/handlers.d.ts +92 -0
  619. package/dist/routes/desktop-local-db/handlers.d.ts.map +1 -0
  620. package/dist/routes/desktop-local-db/handlers.js +300 -0
  621. package/dist/routes/desktop-local-db/handlers.js.map +1 -0
  622. package/dist/routes/desktop-local-db/index.d.ts +39 -0
  623. package/dist/routes/desktop-local-db/index.d.ts.map +1 -0
  624. package/dist/routes/desktop-local-db/index.js +83 -0
  625. package/dist/routes/desktop-local-db/index.js.map +1 -0
  626. package/dist/routes/desktop-local-db/placeholder.d.ts +75 -0
  627. package/dist/routes/desktop-local-db/placeholder.d.ts.map +1 -0
  628. package/dist/routes/desktop-local-db/placeholder.js +420 -0
  629. package/dist/routes/desktop-local-db/placeholder.js.map +1 -0
  630. package/dist/routes/desktop-local-db/schema.d.ts +50 -0
  631. package/dist/routes/desktop-local-db/schema.d.ts.map +1 -0
  632. package/dist/routes/desktop-local-db/schema.js +71 -0
  633. package/dist/routes/desktop-local-db/schema.js.map +1 -0
  634. package/dist/routes/desktop-local-db/sqlite-ddl.d.ts +104 -0
  635. package/dist/routes/desktop-local-db/sqlite-ddl.d.ts.map +1 -0
  636. package/dist/routes/desktop-local-db/sqlite-ddl.js +419 -0
  637. package/dist/routes/desktop-local-db/sqlite-ddl.js.map +1 -0
  638. package/dist/routes/email-templates/index.d.ts +7 -0
  639. package/dist/routes/email-templates/index.d.ts.map +1 -0
  640. package/dist/routes/email-templates/index.js +70 -0
  641. package/dist/routes/email-templates/index.js.map +1 -0
  642. package/dist/routes/email-templates/schema.d.ts +54 -0
  643. package/dist/routes/email-templates/schema.d.ts.map +1 -0
  644. package/dist/routes/email-templates/schema.js +35 -0
  645. package/dist/routes/email-templates/schema.js.map +1 -0
  646. package/dist/routes/exports/index.d.ts +19 -0
  647. package/dist/routes/exports/index.d.ts.map +1 -0
  648. package/dist/routes/exports/index.js +145 -0
  649. package/dist/routes/exports/index.js.map +1 -0
  650. package/dist/routes/exports/schema.d.ts +183 -0
  651. package/dist/routes/exports/schema.d.ts.map +1 -0
  652. package/dist/routes/exports/schema.js +37 -0
  653. package/dist/routes/exports/schema.js.map +1 -0
  654. package/dist/routes/generate/index.d.ts +23 -0
  655. package/dist/routes/generate/index.d.ts.map +1 -0
  656. package/dist/routes/generate/index.js +80 -0
  657. package/dist/routes/generate/index.js.map +1 -0
  658. package/dist/routes/generate/schema.d.ts +43 -0
  659. package/dist/routes/generate/schema.d.ts.map +1 -0
  660. package/dist/routes/generate/schema.js +37 -0
  661. package/dist/routes/generate/schema.js.map +1 -0
  662. package/dist/routes/imports/index.d.ts +21 -0
  663. package/dist/routes/imports/index.d.ts.map +1 -0
  664. package/dist/routes/imports/index.js +288 -0
  665. package/dist/routes/imports/index.js.map +1 -0
  666. package/dist/routes/imports/schema.d.ts +292 -0
  667. package/dist/routes/imports/schema.d.ts.map +1 -0
  668. package/dist/routes/imports/schema.js +78 -0
  669. package/dist/routes/imports/schema.js.map +1 -0
  670. package/dist/routes/index.d.ts +11 -0
  671. package/dist/routes/index.d.ts.map +1 -0
  672. package/dist/routes/index.js +8 -0
  673. package/dist/routes/index.js.map +1 -0
  674. package/dist/routes/jobs/index.d.ts +29 -0
  675. package/dist/routes/jobs/index.d.ts.map +1 -0
  676. package/dist/routes/jobs/index.js +175 -0
  677. package/dist/routes/jobs/index.js.map +1 -0
  678. package/dist/routes/jobs/schema.d.ts +170 -0
  679. package/dist/routes/jobs/schema.d.ts.map +1 -0
  680. package/dist/routes/jobs/schema.js +57 -0
  681. package/dist/routes/jobs/schema.js.map +1 -0
  682. package/dist/routes/llm/config-service.d.ts +48 -0
  683. package/dist/routes/llm/config-service.d.ts.map +1 -0
  684. package/dist/routes/llm/config-service.js +102 -0
  685. package/dist/routes/llm/config-service.js.map +1 -0
  686. package/dist/routes/llm/index.d.ts +69 -0
  687. package/dist/routes/llm/index.d.ts.map +1 -0
  688. package/dist/routes/llm/index.js +412 -0
  689. package/dist/routes/llm/index.js.map +1 -0
  690. package/dist/routes/llm/schema.d.ts +605 -0
  691. package/dist/routes/llm/schema.d.ts.map +1 -0
  692. package/dist/routes/llm/schema.js +238 -0
  693. package/dist/routes/llm/schema.js.map +1 -0
  694. package/dist/routes/me/handlers.d.ts +14 -0
  695. package/dist/routes/me/handlers.d.ts.map +1 -0
  696. package/dist/routes/me/handlers.js +88 -0
  697. package/dist/routes/me/handlers.js.map +1 -0
  698. package/dist/routes/me/index.d.ts +8 -0
  699. package/dist/routes/me/index.d.ts.map +1 -0
  700. package/dist/routes/me/index.js +17 -0
  701. package/dist/routes/me/index.js.map +1 -0
  702. package/dist/routes/me/schema.d.ts +270 -0
  703. package/dist/routes/me/schema.d.ts.map +1 -0
  704. package/dist/routes/me/schema.js +59 -0
  705. package/dist/routes/me/schema.js.map +1 -0
  706. package/dist/routes/me-views/index.d.ts +23 -0
  707. package/dist/routes/me-views/index.d.ts.map +1 -0
  708. package/dist/routes/me-views/index.js +76 -0
  709. package/dist/routes/me-views/index.js.map +1 -0
  710. package/dist/routes/me-views/schema.d.ts +44 -0
  711. package/dist/routes/me-views/schema.d.ts.map +1 -0
  712. package/dist/routes/me-views/schema.js +13 -0
  713. package/dist/routes/me-views/schema.js.map +1 -0
  714. package/dist/routes/notifications/index.d.ts +19 -0
  715. package/dist/routes/notifications/index.d.ts.map +1 -0
  716. package/dist/routes/notifications/index.js +123 -0
  717. package/dist/routes/notifications/index.js.map +1 -0
  718. package/dist/routes/notifications/schema.d.ts +122 -0
  719. package/dist/routes/notifications/schema.d.ts.map +1 -0
  720. package/dist/routes/notifications/schema.js +83 -0
  721. package/dist/routes/notifications/schema.js.map +1 -0
  722. package/dist/routes/onboarding/derive.d.ts +41 -0
  723. package/dist/routes/onboarding/derive.d.ts.map +1 -0
  724. package/dist/routes/onboarding/derive.js +30 -0
  725. package/dist/routes/onboarding/derive.js.map +1 -0
  726. package/dist/routes/onboarding/index.d.ts +26 -0
  727. package/dist/routes/onboarding/index.d.ts.map +1 -0
  728. package/dist/routes/onboarding/index.js +95 -0
  729. package/dist/routes/onboarding/index.js.map +1 -0
  730. package/dist/routes/onboarding/schema.d.ts +22 -0
  731. package/dist/routes/onboarding/schema.d.ts.map +1 -0
  732. package/dist/routes/onboarding/schema.js +22 -0
  733. package/dist/routes/onboarding/schema.js.map +1 -0
  734. package/dist/routes/pages/index.d.ts +26 -0
  735. package/dist/routes/pages/index.d.ts.map +1 -0
  736. package/dist/routes/pages/index.js +119 -0
  737. package/dist/routes/pages/index.js.map +1 -0
  738. package/dist/routes/pages/layout-schema.d.ts +19 -0
  739. package/dist/routes/pages/layout-schema.d.ts.map +1 -0
  740. package/dist/routes/pages/layout-schema.js +19 -0
  741. package/dist/routes/pages/layout-schema.js.map +1 -0
  742. package/dist/routes/pages/schema.d.ts +52 -0
  743. package/dist/routes/pages/schema.d.ts.map +1 -0
  744. package/dist/routes/pages/schema.js +35 -0
  745. package/dist/routes/pages/schema.js.map +1 -0
  746. package/dist/routes/roles/index.d.ts +17 -0
  747. package/dist/routes/roles/index.d.ts.map +1 -0
  748. package/dist/routes/roles/index.js +255 -0
  749. package/dist/routes/roles/index.js.map +1 -0
  750. package/dist/routes/roles/schema.d.ts +94 -0
  751. package/dist/routes/roles/schema.d.ts.map +1 -0
  752. package/dist/routes/roles/schema.js +57 -0
  753. package/dist/routes/roles/schema.js.map +1 -0
  754. package/dist/routes/scheduled-reports/index.d.ts +15 -0
  755. package/dist/routes/scheduled-reports/index.d.ts.map +1 -0
  756. package/dist/routes/scheduled-reports/index.js +195 -0
  757. package/dist/routes/scheduled-reports/index.js.map +1 -0
  758. package/dist/routes/scheduled-reports/schema.d.ts +154 -0
  759. package/dist/routes/scheduled-reports/schema.d.ts.map +1 -0
  760. package/dist/routes/scheduled-reports/schema.js +49 -0
  761. package/dist/routes/scheduled-reports/schema.js.map +1 -0
  762. package/dist/routes/schema/index.d.ts +24 -0
  763. package/dist/routes/schema/index.d.ts.map +1 -0
  764. package/dist/routes/schema/index.js +224 -0
  765. package/dist/routes/schema/index.js.map +1 -0
  766. package/dist/routes/schema/schema.d.ts +92 -0
  767. package/dist/routes/schema/schema.d.ts.map +1 -0
  768. package/dist/routes/schema/schema.js +64 -0
  769. package/dist/routes/schema/schema.js.map +1 -0
  770. package/dist/routes/schema-import/fallback-parser.d.ts +35 -0
  771. package/dist/routes/schema-import/fallback-parser.d.ts.map +1 -0
  772. package/dist/routes/schema-import/fallback-parser.js +349 -0
  773. package/dist/routes/schema-import/fallback-parser.js.map +1 -0
  774. package/dist/routes/schema-import/index.d.ts +43 -0
  775. package/dist/routes/schema-import/index.d.ts.map +1 -0
  776. package/dist/routes/schema-import/index.js +167 -0
  777. package/dist/routes/schema-import/index.js.map +1 -0
  778. package/dist/routes/schema-import/schema.d.ts +65 -0
  779. package/dist/routes/schema-import/schema.d.ts.map +1 -0
  780. package/dist/routes/schema-import/schema.js +40 -0
  781. package/dist/routes/schema-import/schema.js.map +1 -0
  782. package/dist/routes/search/index.d.ts +71 -0
  783. package/dist/routes/search/index.d.ts.map +1 -0
  784. package/dist/routes/search/index.js +361 -0
  785. package/dist/routes/search/index.js.map +1 -0
  786. package/dist/routes/search/schema.d.ts +125 -0
  787. package/dist/routes/search/schema.d.ts.map +1 -0
  788. package/dist/routes/search/schema.js +70 -0
  789. package/dist/routes/search/schema.js.map +1 -0
  790. package/dist/routes/settings/index.d.ts +24 -0
  791. package/dist/routes/settings/index.d.ts.map +1 -0
  792. package/dist/routes/settings/index.js +164 -0
  793. package/dist/routes/settings/index.js.map +1 -0
  794. package/dist/routes/settings/schema.d.ts +110 -0
  795. package/dist/routes/settings/schema.d.ts.map +1 -0
  796. package/dist/routes/settings/schema.js +71 -0
  797. package/dist/routes/settings/schema.js.map +1 -0
  798. package/dist/routes/setup/index.d.ts +29 -0
  799. package/dist/routes/setup/index.d.ts.map +1 -0
  800. package/dist/routes/setup/index.js +68 -0
  801. package/dist/routes/setup/index.js.map +1 -0
  802. package/dist/routes/setup/schema.d.ts +61 -0
  803. package/dist/routes/setup/schema.d.ts.map +1 -0
  804. package/dist/routes/setup/schema.js +47 -0
  805. package/dist/routes/setup/schema.js.map +1 -0
  806. package/dist/routes/system/handlers.d.ts +63 -0
  807. package/dist/routes/system/handlers.d.ts.map +1 -0
  808. package/dist/routes/system/handlers.js +121 -0
  809. package/dist/routes/system/handlers.js.map +1 -0
  810. package/dist/routes/system/index.d.ts +34 -0
  811. package/dist/routes/system/index.d.ts.map +1 -0
  812. package/dist/routes/system/index.js +18 -0
  813. package/dist/routes/system/index.js.map +1 -0
  814. package/dist/routes/system/schema.d.ts +93 -0
  815. package/dist/routes/system/schema.d.ts.map +1 -0
  816. package/dist/routes/system/schema.js +109 -0
  817. package/dist/routes/system/schema.js.map +1 -0
  818. package/dist/routes/views/index.d.ts +21 -0
  819. package/dist/routes/views/index.d.ts.map +1 -0
  820. package/dist/routes/views/index.js +155 -0
  821. package/dist/routes/views/index.js.map +1 -0
  822. package/dist/routes/views/schema.d.ts +127 -0
  823. package/dist/routes/views/schema.d.ts.map +1 -0
  824. package/dist/routes/views/schema.js +56 -0
  825. package/dist/routes/views/schema.js.map +1 -0
  826. package/dist/routes/widget-data/index.d.ts +29 -0
  827. package/dist/routes/widget-data/index.d.ts.map +1 -0
  828. package/dist/routes/widget-data/index.js +152 -0
  829. package/dist/routes/widget-data/index.js.map +1 -0
  830. package/dist/routes/widget-data/schema.d.ts +252 -0
  831. package/dist/routes/widget-data/schema.d.ts.map +1 -0
  832. package/dist/routes/widget-data/schema.js +44 -0
  833. package/dist/routes/widget-data/schema.js.map +1 -0
  834. package/dist/setup/service.d.ts +63 -0
  835. package/dist/setup/service.d.ts.map +1 -0
  836. package/dist/setup/service.js +103 -0
  837. package/dist/setup/service.js.map +1 -0
  838. package/dist/start.d.ts +12 -0
  839. package/dist/start.d.ts.map +1 -0
  840. package/dist/start.js +28 -0
  841. package/dist/start.js.map +1 -0
  842. package/dist/telemetry/payload.d.ts +66 -0
  843. package/dist/telemetry/payload.d.ts.map +1 -0
  844. package/dist/telemetry/payload.js +69 -0
  845. package/dist/telemetry/payload.js.map +1 -0
  846. package/dist/telemetry/service.d.ts +67 -0
  847. package/dist/telemetry/service.d.ts.map +1 -0
  848. package/dist/telemetry/service.js +103 -0
  849. package/dist/telemetry/service.js.map +1 -0
  850. package/dist/telemetry/update-check.d.ts +79 -0
  851. package/dist/telemetry/update-check.d.ts.map +1 -0
  852. package/dist/telemetry/update-check.js +103 -0
  853. package/dist/telemetry/update-check.js.map +1 -0
  854. package/dist/version.d.ts +14 -0
  855. package/dist/version.d.ts.map +1 -0
  856. package/dist/version.js +21 -0
  857. package/dist/version.js.map +1 -0
  858. package/dist/widget-data/cache.d.ts +35 -0
  859. package/dist/widget-data/cache.d.ts.map +1 -0
  860. package/dist/widget-data/cache.js +67 -0
  861. package/dist/widget-data/cache.js.map +1 -0
  862. package/dist/widget-data/compiler.d.ts +107 -0
  863. package/dist/widget-data/compiler.d.ts.map +1 -0
  864. package/dist/widget-data/compiler.js +362 -0
  865. package/dist/widget-data/compiler.js.map +1 -0
  866. package/dist/widget-data/shapers.d.ts +75 -0
  867. package/dist/widget-data/shapers.d.ts.map +1 -0
  868. package/dist/widget-data/shapers.js +128 -0
  869. package/dist/widget-data/shapers.js.map +1 -0
  870. package/dist/widget-data/stream-publisher.d.ts +42 -0
  871. package/dist/widget-data/stream-publisher.d.ts.map +1 -0
  872. package/dist/widget-data/stream-publisher.js +34 -0
  873. package/dist/widget-data/stream-publisher.js.map +1 -0
  874. package/package.json +79 -0
  875. package/vocabulary/llm-allowlist.json +76 -0
@@ -0,0 +1,2 @@
1
+ import{j as s,cq as X,a3 as H,a5 as tt}from"./index-PB1II0WV.js";import{f as U,a as et}from"./format-Lx4cQ8k-.js";import{f as ft,m as mt,g as ct,t as q,c as dt,l as V,h as yt,b as I}from"./scales-e0tkfEy1.js";import{e as W,n as Z}from"./stats-BNgXz5BD.js";function lt(t,e,n){t._context.bezierCurveTo((2*t._x0+t._x1)/3,(2*t._y0+t._y1)/3,(t._x0+2*t._x1)/3,(t._y0+2*t._y1)/3,(t._x0+4*t._x1+e)/6,(t._y0+4*t._y1+n)/6)}function ut(t){this._context=t}ut.prototype={areaStart:function(){this._line=0},areaEnd:function(){this._line=NaN},lineStart:function(){this._x0=this._x1=this._y0=this._y1=NaN,this._point=0},lineEnd:function(){switch(this._point){case 3:lt(this,this._x1,this._y1);case 2:this._context.lineTo(this._x1,this._y1);break}(this._line||this._line!==0&&this._point===1)&&this._context.closePath(),this._line=1-this._line},point:function(t,e){switch(t=+t,e=+e,this._point){case 0:this._point=1,this._line?this._context.lineTo(t,e):this._context.moveTo(t,e);break;case 1:this._point=2;break;case 2:this._point=3,this._context.lineTo((5*this._x0+this._x1)/6,(5*this._y0+this._y1)/6);default:lt(this,t,e);break}this._x0=this._x1,this._x1=t,this._y0=this._y1,this._y1=e}};function pt(t){return new ut(t)}function ht(t,e=!1){const n=ft().x(a=>a.x).y(a=>a.y).curve(e?mt:ct);return t.map(a=>({key:a.key,label:a.label,path:a.points.length>0?n([...a.points]):null,end:a.points.at(-1)??null}))}function P(t){return`var(--viz-${t%8+1})`}const gt=t=>t instanceof Date?et(t):String(t);function bt({series:t,labels:e,height:n=240,smooth:a=!1,showAxis:c=!0,showEndLabels:i=!0,formatX:r=gt,formatY:y=U,dir:d,a11yFallback:f,className:p}){const u=t[0]?.points[0]?.x instanceof Date,l={top:10,bottom:c?22:6,near:c?38:6,far:i?56:10};return s.jsx(X,{labels:e,height:n,...d!==void 0?{dir:d}:{},...f!==void 0?{a11yFallback:f}:{},...p!==void 0?{className:p}:{},padding:{top:l.top,bottom:l.bottom,left:l.near,right:l.far},children:({innerWidth:o,innerHeight:h,rtl:g,mounted:b})=>{const m=t.filter(x=>x.points.length>0);if(m.length===0||o<=0||h<=0)return null;const _=u?(()=>{const x=m.flatMap(v=>v.points.map(L=>L.x instanceof Date?L.x.getTime():0)),[M,$]=W(x)??[0,1],F=q([new Date(M),new Date($)],o);return v=>F(v.x instanceof Date?v.x:new Date(0))})():(()=>{const x=[];for(const $ of m)for(const F of $.points){const v=String(F.x);x.includes(v)||x.push(v)}const M=dt(x,o,g);return $=>M(String($.x))??0})(),T=m.flatMap(x=>x.points.map(M=>M.y)),[D,C]=W(T)??[0,1],j=Z(Math.min(0,D),Math.max(1,C),3),A=[j[0]??0,j.at(-1)??1],k=V(A,h),w=m.map(x=>({key:x.key,label:x.label,points:x.points.map(M=>({x:_(M),y:k(M.y)}))})),N=ht(w,a);return s.jsxs("g",{className:"adm-chart-fade",style:{"--adm-fade":b?"1":"0"},children:[c&&j.map(x=>s.jsxs("g",{children:[s.jsx("line",{className:"adm-chart-gridline",x1:0,x2:o,y1:k(x),y2:k(x)}),s.jsx("text",{className:"adm-chart-axis-label adm-chart-num",x:g?o+6:-6,y:k(x)+3,textAnchor:g?"start":"end",children:y(x)})]},x)),c&&(()=>{const x=m[0]?.points??[],M=x[0],$=x.at(-1);return M===void 0||$===void 0||x.length<2?null:s.jsxs(s.Fragment,{children:[s.jsx("text",{className:"adm-chart-axis-label",x:_(M),y:h+15,textAnchor:u||!g?"start":"end",children:r(M.x)}),s.jsx("text",{className:"adm-chart-axis-label",x:_($),y:h+15,textAnchor:u||!g?"end":"start",children:r($.x)})]})})(),N.map((x,M)=>x.path===null?null:s.jsx("path",{d:x.path,fill:"none",stroke:P(M),strokeWidth:2,strokeLinecap:"round",strokeLinejoin:"round","data-series":x.key},x.key)),N.map((x,M)=>x.end===null?null:s.jsx("circle",{cx:x.end.x,cy:x.end.y,r:3,fill:"var(--surface)",stroke:P(M),strokeWidth:2,"data-series-dot":x.key},`${x.key}-dot`)),i&&N.map((x,M)=>x.end===null?null:s.jsx("text",{x:x.end.x+(g?-8:8),y:x.end.y+3,textAnchor:g?"end":"start",fontSize:10,fontWeight:600,fill:P(M),"data-series-label":x.key,children:x.label},`${x.key}-label`))]})}})}function jt(t,e="silhouette"){const n=t.reduce((r,y)=>Math.max(r,y.values.length),0),a=t.map(r=>({key:r.key,label:r.label,low:Array.from({length:n},()=>0),high:Array.from({length:n},()=>0)}));let c=0,i=0;for(let r=0;r<n;r+=1){const y=t.reduce((f,p)=>f+Math.max(0,p.values[r]??0),0);let d=e==="silhouette"?-y/2:0;for(let f=0;f<t.length;f+=1){const p=Math.max(0,t[f]?.values[r]??0),u=a[f];if(u===void 0)continue;const l=d;d+=p,u.low[r]=l,u.high[r]=d,d>i&&(i=d),l<c&&(c=l)}}return{bands:a,min:c,max:i}}function kt(t,e,n,a=!0){return yt().x((i,r)=>t[r]??0).y0((i,r)=>e[r]??0).y1((i,r)=>n[r]??0).curve(a?pt:ct)(n.map(()=>0))}const K=20;function vt({series:t,labels:e,height:n=260,smooth:a=!0,showLegend:c=!0,dir:i,a11yFallback:r,className:y}){const d=t[0]?.points[0]?.x instanceof Date;return s.jsx(X,{labels:e,height:n,...i!==void 0?{dir:i}:{},...r!==void 0?{a11yFallback:r}:{},...y!==void 0?{className:y}:{},padding:{top:c?K+6:8,bottom:8,left:6,right:6},children:({innerWidth:f,innerHeight:p,rtl:u,mounted:l})=>{const o=t.filter(j=>j.points.length>0);if(o.length===0||f<=0||p<=0)return null;const h=o.reduce((j,A)=>A.points.length>j.points.length?A:j),g=d?(()=>{const j=o.flatMap(N=>N.points.map(x=>x.x instanceof Date?x.x.getTime():0)),[A,k]=W(j)??[0,1],w=q([new Date(A),new Date(k)],f);return h.points.map(N=>w(N.x instanceof Date?N.x:new Date(0)))})():(()=>{const j=h.points.map(k=>String(k.x)),A=dt(j,f,u);return j.map(k=>A(k)??0)})(),b=o.map(j=>({key:j.key,label:j.label,values:j.points.map(A=>A.y)})),{bands:m,min:_,max:T}=jt(b,"silhouette"),D=V([_,T],p);let C=u?f:0;return s.jsxs("g",{className:"adm-chart-fade",style:{"--adm-fade":l?"1":"0"},children:[m.map((j,A)=>{const k=j.low.map(x=>D(x)),w=j.high.map(x=>D(x)),N=kt(g,k,w,a);return N===null?null:s.jsx("path",{d:N,fill:P(A),fillOpacity:.82,stroke:"var(--surface)",strokeWidth:.75,"data-series":j.key},j.key)}),c&&m.map((j,A)=>{const k=j.label.length*6.2+20,w=u?C-k:C;C=u?C-k-6:C+k+6;const N=u?w+k-8:w+4,x=u?w+k-18:w+14;return s.jsxs("g",{"data-legend-item":j.key,children:[s.jsx("circle",{cx:N,cy:-K+8,r:4,fill:P(A)}),s.jsx("text",{x,y:-K+11,textAnchor:u?"end":"start",fontSize:10.5,fontWeight:600,fill:"var(--fg-muted)",children:j.label})]},`${j.key}-legend`)})]})}})}function xt(t,e){if(t.length===0||e.length!==t.length)return null;const n=[];t.forEach((a,c)=>{n.push(`${c===0?"M":"L"}${G(a.x)},${G(a.y)}`)});for(let a=e.length-1;a>=0;a-=1){const c=e[a];n.push(`L${G(c.x)},${G(c.y)}`)}return n.push("Z"),n.join("")}function G(t){return Number(t.toFixed(3)).toString()}function _t({history:t,forecast:e,band:n,labels:a,height:c=260,showAxis:i=!0,nowLabel:r="Now",forecastLabel:y="Forecast",actualLabel:d="Actual",formatY:f=U,dir:p,a11yFallback:u,className:l}){return s.jsx(X,{labels:a,height:c,...p!==void 0?{dir:p}:{},...u!==void 0?{a11yFallback:u}:{},...l!==void 0?{className:l}:{},padding:{top:10,bottom:i?24:8,left:i?38:6,right:10},children:({innerWidth:o,innerHeight:h,rtl:g,mounted:b})=>{if(t.length===0||o<=0||h<=0)return null;const m=[...t,...e].map(S=>S.x.getTime()),[_,T]=W(m)??[0,1],D=q([new Date(_),new Date(T)],o),C=[...t.map(S=>S.y),...e.map(S=>S.y),...n.map(S=>S.lo),...n.map(S=>S.hi)],[j,A]=W(C)??[0,1],k=Z(Math.min(0,j),Math.max(1,A),3),w=V([k[0]??0,k.at(-1)??1],h),N=t.at(-1),x=D(N.x),M={x,y:w(N.y)},$=t.map(S=>({x:D(S.x),y:w(S.y)})),F=e.map(S=>({x:D(S.x),y:w(S.y)})),v=[M,...e.map((S,J)=>({x:D(S.x),y:w(n[J]?.hi??S.y)}))],L=[M,...e.map((S,J)=>({x:D(S.x),y:w(n[J]?.lo??S.y)}))],at=I($,!0),ot=I([M,...F],!0),rt=xt(v,L),Y=g?o:0;return s.jsxs("g",{className:"adm-chart-fade",style:{"--adm-fade":b?"1":"0"},children:[i&&k.map(S=>s.jsxs("g",{children:[s.jsx("line",{className:"adm-chart-gridline",x1:0,x2:o,y1:w(S),y2:w(S)}),s.jsx("text",{className:"adm-chart-axis-label adm-chart-num",x:g?o+6:-6,y:w(S)+3,textAnchor:g?"start":"end",children:f(S)})]},S)),rt!==null&&s.jsx("path",{d:rt,fill:"var(--viz-1)",fillOpacity:.15,stroke:"none","data-band":"confidence"}),s.jsx("line",{x1:x,x2:x,y1:0,y2:h,stroke:"var(--border-strong)",strokeWidth:1,strokeDasharray:"3 3","data-now-divider":""}),s.jsx("text",{x:x+(g?-4:4),y:10,textAnchor:g?"end":"start",fontSize:9.5,fontWeight:600,fill:"var(--fg-subtle)","data-now-label":"",children:r}),ot!==null&&s.jsx("path",{d:ot,fill:"none",stroke:"var(--viz-1)",strokeWidth:2,strokeDasharray:"5 4",strokeLinecap:"round","data-series":"forecast"}),at!==null&&s.jsx("path",{d:at,fill:"none",stroke:"var(--viz-1)",strokeWidth:2,strokeLinecap:"round","data-series":"history"}),s.jsx("circle",{cx:M.x,cy:M.y,r:3,fill:"var(--viz-1)",stroke:"var(--surface)",strokeWidth:1.5}),s.jsxs("g",{"data-footer-legend":"",transform:`translate(0, ${h+(i?16:4)})`,children:[s.jsx("line",{x1:Y,x2:g?Y-16:Y+16,y1:0,y2:0,stroke:"var(--viz-1)",strokeWidth:2}),s.jsx("text",{x:g?Y-20:Y+20,y:3,textAnchor:g?"end":"start",fontSize:9.5,fontWeight:600,fill:"var(--fg-muted)",children:d}),s.jsx("line",{x1:g?Y-96:Y+96,x2:g?Y-112:Y+112,y1:0,y2:0,stroke:"var(--viz-1)",strokeWidth:2,strokeDasharray:"4 3"}),s.jsx("text",{x:g?Y-116:Y+116,y:3,textAnchor:g?"end":"start",fontSize:9.5,fontWeight:600,fill:"var(--fg-muted)",children:y})]})]})}})}function wt(t,e){const n=t.length,a=Math.floor(e/2),c=[];for(let i=0;i<n;i+=1){let r=0,y=0;for(let d=Math.max(0,i-a);d<=Math.min(n-1,i+a);d+=1)r+=t[d]??0,y+=1;c.push(y===0?0:r/y)}return c}function Mt(t,e=2,n=7){const a=t.length;if(a===0)return{mid:[],lo:[],hi:[],anomalies:[]};const c=wt(t,n);let i=0;for(let u=0;u<a;u+=1){const l=(t[u]??0)-(c[u]??0);i+=l*l}const r=Math.sqrt(i/a),y=e*r,d=[],f=[],p=[];for(let u=0;u<a;u+=1){const l=c[u]??0;d.push(l-y),f.push(l+y),r>0&&Math.abs((t[u]??0)-l)>y&&p.push(u)}return{mid:c,lo:d,hi:f,anomalies:p}}function St({points:t,labels:e,height:n=220,sensitivity:a=2,window:c=7,showAxis:i=!0,formatY:r=U,dir:y,a11yFallback:d,className:f}){return s.jsx(X,{labels:e,height:n,...y!==void 0?{dir:y}:{},...d!==void 0?{a11yFallback:d}:{},...f!==void 0?{className:f}:{},padding:{top:10,bottom:i?22:8,left:i?38:6,right:10},children:({innerWidth:p,innerHeight:u,rtl:l,mounted:o})=>{if(t.length===0||p<=0||u<=0)return null;const h=t.map(v=>v.x.getTime()),[g,b]=W(h)??[0,1],m=q([new Date(g),new Date(b)],p),_=t.map(v=>v.y),T=Mt(_,a,c),D=[..._,...T.lo,...T.hi],[C,j]=W(D)??[0,1],A=Z(Math.min(0,C),Math.max(1,j),3),k=V([A[0]??0,A.at(-1)??1],u),w=v=>m(t[v].x),N=t.map((v,L)=>({x:w(L),y:k(T.hi[L]??0)})),x=t.map((v,L)=>({x:w(L),y:k(T.lo[L]??0)})),M=xt(N,x),$=I(t.map((v,L)=>({x:w(L),y:k(T.mid[L]??0)})),!0),F=I(t.map((v,L)=>({x:w(L),y:k(v.y)})),!1);return s.jsxs("g",{className:"adm-chart-fade",style:{"--adm-fade":o?"1":"0"},children:[i&&A.map(v=>s.jsxs("g",{children:[s.jsx("line",{className:"adm-chart-gridline",x1:0,x2:p,y1:k(v),y2:k(v)}),s.jsx("text",{className:"adm-chart-axis-label adm-chart-num",x:l?p+6:-6,y:k(v)+3,textAnchor:l?"start":"end",children:r(v)})]},v)),M!==null&&s.jsx("path",{d:M,fill:"var(--viz-1)",fillOpacity:.12,stroke:"none","data-band":"expected"}),$!==null&&s.jsx("path",{d:$,fill:"none",stroke:"var(--fg-subtle)",strokeWidth:1.5,strokeDasharray:"4 4","data-series":"expected"}),F!==null&&s.jsx("path",{d:F,fill:"none",stroke:"var(--viz-1)",strokeWidth:2,strokeLinecap:"round",strokeLinejoin:"round","data-series":"actual"}),T.anomalies.map(v=>s.jsxs("g",{"data-anomaly":v,children:[s.jsx("circle",{cx:w(v),cy:k(_[v]??0),r:7,fill:"var(--danger)",fillOpacity:.22}),s.jsx("circle",{cx:w(v),cy:k(_[v]??0),r:3.5,fill:"var(--danger)",stroke:"var(--surface)",strokeWidth:1.5})]},`anomaly-${v}`))]})}})}function At(t,e,n,a={}){const{bodyRatio:c=.6,tickCount:i=4,minBody:r=1}=a,y=t.flatMap(_=>[_.h,_.l,_.o,_.c]),[d,f]=W(y)??[0,1],p=d===f?[d,d+1]:Z(d,f,i),u=p[0]??d,o=(p.at(-1)??f)-u||1,h=_=>n-(_-u)/o*n,g=t.length>0?e/t.length:e,b=Math.max(1,g*c);return{rects:t.map((_,T)=>{const D=g*(T+.5),C=h(_.o),j=h(_.c),A=_.c>=_.o,k=Math.min(C,j),w=Math.max(r,Math.abs(j-C));return{index:T,centerX:D,x:D-b/2,width:b,bodyY:k,bodyHeight:w,highY:h(_.h),lowY:h(_.l),up:A}}),yFor:h,yTicks:p}}function Nt({candles:t,labels:e,height:n=260,showAxis:a=!0,livePill:c=!1,livePillLabel:i="Live",formatPrice:r=U,dir:y,a11yFallback:d,className:f}){return s.jsx(X,{labels:e,height:n,...y!==void 0?{dir:y}:{},...d!==void 0?{a11yFallback:d}:{},...f!==void 0?{className:f}:{},padding:{top:10,bottom:8,left:6,right:a?44:8},children:({innerWidth:p,innerHeight:u,mounted:l})=>{if(t.length===0||p<=0||u<=0)return null;const o=At(t,p,u),h=t.at(-1),g=o.yFor(h.c),b=h.c>=h.o;return s.jsxs("g",{className:"adm-chart-fade",style:{"--adm-fade":l?"1":"0"},children:[a&&o.yTicks.map(m=>s.jsxs("g",{children:[s.jsx("line",{className:"adm-chart-gridline",x1:0,x2:p,y1:o.yFor(m),y2:o.yFor(m)}),s.jsx("text",{className:"adm-chart-axis-label adm-chart-num",x:p+6,y:o.yFor(m)+3,textAnchor:"start",children:r(m)})]},m)),o.rects.map(m=>{const _=m.up?"var(--pos)":"var(--danger)";return s.jsxs("g",{"data-candle":m.index,"data-dir":m.up?"up":"down",children:[s.jsx("line",{x1:m.centerX,x2:m.centerX,y1:m.highY,y2:m.lowY,stroke:_,strokeWidth:1.25}),s.jsx("rect",{x:m.x,y:m.bodyY,width:m.width,height:m.bodyHeight,fill:_,"data-body":""})]},m.index)}),s.jsx("line",{x1:0,x2:p,y1:g,y2:g,stroke:b?"var(--pos)":"var(--danger)",strokeWidth:1,strokeDasharray:"3 3","data-last-price":""}),a&&s.jsx("text",{x:p+6,y:g+3,textAnchor:"start",fontSize:10,fontWeight:700,fill:b?"var(--pos)":"var(--danger)","data-last-price-label":"",children:r(h.c)}),c&&s.jsxs("g",{"data-live-pill":"",transform:"translate(4, 2)",children:[s.jsx("rect",{x:0,y:0,width:44,height:16,rx:8,fill:"var(--pos-soft)"}),s.jsx("circle",{cx:11,cy:8,r:3,fill:"var(--pos)"}),s.jsx("text",{x:19,y:11,fontSize:9,fontWeight:700,fill:"var(--pos)",children:i})]})]})}})}function Tt(t,e,n,a,c,i){const r=e>1?a/(e-1):0,y=u=>i?a-u*r:u*r,d=n>0?c/n:c,f=u=>(u-.5)*d;return{lines:t.map(u=>{const l=[];return u.ranks.forEach((o,h)=>{o===null||h>=e||l.push({x:y(h),y:f(o),rank:o})}),{key:u.key,label:u.label,points:l.map(({x:o,y:h})=>({x:o,y:h})),start:l[0]??null,end:l.at(-1)??null}}),xForPeriod:y,yForRank:f,periods:e,maxRank:n}}const it=54;function Dt({series:t,labels:e,periods:n,maxRank:a,periodLabels:c,height:i=240,showEndLabels:r=!0,dir:y,a11yFallback:d,className:f}){return s.jsx(X,{labels:e,height:i,...y!==void 0?{dir:y}:{},...d!==void 0?{a11yFallback:d}:{},...f!==void 0?{className:f}:{},padding:{top:10,bottom:22,left:it,right:it},children:({innerWidth:p,innerHeight:u,rtl:l,mounted:o})=>{if(t.length===0||n<=0||a<=0||p<=0||u<=0)return null;const h=Tt(t,n,a,p,u,l),g=ht(h.lines.map(b=>({key:b.key,label:b.label,points:b.points})),!1);return s.jsxs("g",{className:"adm-chart-fade",style:{"--adm-fade":o?"1":"0"},children:[Array.from({length:a},(b,m)=>s.jsx("line",{className:"adm-chart-gridline",x1:0,x2:p,y1:h.yForRank(m+1),y2:h.yForRank(m+1)},m)),Array.from({length:n},(b,m)=>s.jsx("text",{className:"adm-chart-axis-label",x:h.xForPeriod(m),y:u+15,textAnchor:"middle",children:c?.[m]??String(m+1)},`period-${m}`)),g.map((b,m)=>b.path===null?null:s.jsx("path",{d:b.path,fill:"none",stroke:P(m),strokeWidth:2.5,strokeLinecap:"round",strokeLinejoin:"round","data-series":b.key},b.key)),h.lines.map((b,m)=>b.points.map((_,T)=>s.jsx("circle",{cx:_.x,cy:_.y,r:3.5,fill:"var(--surface)",stroke:P(m),strokeWidth:2,"data-series-dot":b.key},`${b.key}-${T}`))),r&&g.map((b,m)=>b.end===null?null:s.jsx("text",{x:b.end.x+(l?-8:8),y:b.end.y+3,textAnchor:l?"end":"start",fontSize:10,fontWeight:600,fill:P(m),"data-series-label":b.key,children:b.label},`${b.key}-label`))]})}})}function Lt(t,e,n,a,c={}){const{laneGap:i=8}=c,r=t.length;if(r===0)return[];const y=Math.max(0,(a-i*(r-1))/r);return t.map((d,f)=>{const p=f*(y+i),u=e.filter(l=>l.lane===d).map(l=>({x:Math.min(1,Math.max(0,l.position))*n,label:l.label,tone:l.tone}));return{lane:d,index:f,y:p,height:y,centerY:p+y/2,events:u}})}const Ct=92;function $t(t,e){switch(t){case"pos":return"var(--pos)";case"danger":return"var(--danger)";case"warn":return"var(--warn)";case"info":return"var(--info)";default:return P(e)}}function Yt({lanes:t,events:e,labels:n,axisLabels:a,height:c=200,dir:i,a11yFallback:r,className:y}){return s.jsx(X,{labels:n,height:c,...i!==void 0?{dir:i}:{},...r!==void 0?{a11yFallback:r}:{},...y!==void 0?{className:y}:{},padding:{top:8,bottom:a&&a.length>0?22:10,left:Ct,right:14},children:({innerWidth:d,innerHeight:f,mounted:p})=>{if(t.length===0||d<=0||f<=0)return null;const u=Lt(t,e,d,f,{laneGap:8});return s.jsxs("g",{className:"adm-chart-fade",style:{"--adm-fade":p?"1":"0"},children:[u.map(l=>s.jsxs("g",{"data-lane":l.lane,children:[s.jsx("rect",{x:0,y:l.y,width:d,height:l.height,rx:6,fill:"var(--surface-2)"}),s.jsx("text",{x:-10,y:l.centerY+3,textAnchor:"end",fontSize:10.5,fontWeight:600,fill:"var(--fg-muted)","data-lane-label":l.lane,children:l.lane}),l.events.map((o,h)=>{const g=$t(o.tone,l.index),b=o.label.length*5.6+22,m=Math.min(d-b,Math.max(0,o.x-b/2));return s.jsxs("g",{"data-event":o.label,transform:`translate(${m}, ${l.centerY-9})`,children:[s.jsx("rect",{x:0,y:0,width:b,height:18,rx:9,fill:"var(--surface-3)",stroke:g,strokeWidth:1}),s.jsx("circle",{cx:11,cy:9,r:3,fill:g}),s.jsx("text",{x:19,y:12,fontSize:9.5,fontWeight:600,fill:"var(--fg)",children:o.label})]},`${l.lane}-${h}`)})]},l.lane)),a?.map((l,o)=>{const h=a.length,g=h>1?d/(h-1)*o:d/2,b=o===0?"start":o===h-1?"end":"middle";return s.jsx("text",{className:"adm-chart-axis-label",x:g,y:f+15,textAnchor:b,children:l},`axis-${o}`)})]})}})}function z(t){return typeof t=="object"&&t!==null&&!Array.isArray(t)?t:null}function E(t){if(typeof t=="number"&&Number.isFinite(t))return t;if(typeof t=="string"&&t.trim()!==""){const e=Number(t);if(Number.isFinite(e))return e}}function B(t){return typeof t=="string"?t:void 0}function nt(t){const e=B(t);if(e===void 0)return;const n=new Date(e);return Number.isNaN(n.getTime())?void 0:n}function st(t){const e=z(t);if(e===null||!Array.isArray(e.series))return null;const n=[];return e.series.forEach((a,c)=>{const i=z(a);if(i===null||!Array.isArray(i.points))return;const r=[];for(const y of i.points){const d=z(y),f=nt(d?.t),p=E(d?.v);f===void 0||p===void 0||r.push({x:f,y:p})}r.length!==0&&n.push({key:B(i.key)??`s${c}`,label:B(i.label)??B(i.key)??`Series ${c+1}`,points:r})}),n.length>0?n:null}function Q(t){if(!Array.isArray(t))return[];const e=[];for(const n of t){const a=z(n),c=nt(a?.t),i=E(a?.v);c!==void 0&&i!==void 0&&e.push({x:c,y:i})}return e}function zt(t){const e=z(t);if(e===null)return null;const n=Q(e.points);if(n.length===0)return null;const a=Q(e.forecast),c=[];if(Array.isArray(e.band))for(const i of e.band){const r=z(i),y=E(r?.lo),d=E(r?.hi);c.push({lo:y??0,hi:d??0})}return{history:n,forecast:a,band:c}}function Pt(t){const e=z(t);if(e===null)return null;const n=Q(e.points);return n.length>0?n:null}function Ft(t,e){const n=z(t);if(n===null||!Array.isArray(n.candles))return null;const a=[];for(const c of n.candles){const i=z(c),r=E(i?.o),y=E(i?.h),d=E(i?.l),f=E(i?.c);r===void 0||y===void 0||d===void 0||f===void 0||a.push({t:B(i?.t)??"",o:r,h:y,l:d,c:f})}return a.length===0?null:e!==void 0&&e>0&&a.length>e?a.slice(a.length-e):a}function Et(t,e,n){const a=st(t);if(a===null)return null;const c=new Set;for(const l of a)for(const o of l.points)c.add(o.x.getTime());const i=[...c].sort((l,o)=>l-o),r=e??i.length,y=new Map(i.map((l,o)=>[l,o]));let d=0;const f=a.map(l=>{const o=Array.from({length:r},()=>null);for(const h of l.points){const g=y.get(h.x.getTime());g===void 0||g>=r||(o[g]=h.y,h.y>d&&(d=h.y))}return{key:l.key,label:l.label,ranks:o}}),p=n??Math.max(d,a.length),u=i.slice(0,r).map(l=>et(new Date(l)));return{series:f,periods:r,maxRank:p,periodLabels:u}}function Bt(t,e,n=4){const a=z(t);if(a===null||!Array.isArray(a.events))return null;const c=[];for(const o of a.events){const h=z(o),g=nt(h?.date);g!==void 0&&c.push({lane:B(h?.category)??"Events",ms:g.getTime(),label:B(h?.title)??"",tone:B(h?.tone)})}if(c.length===0)return null;const i=c.map(o=>o.ms),r=Math.min(...i),d=Math.max(...i)-r||1,f=e!==void 0&&e.length>0?[...e]:c.reduce((o,h)=>o.includes(h.lane)?o:[...o,h.lane],[]),p=c.map(o=>({lane:o.lane,position:(o.ms-r)/d,label:o.label,...o.tone!==void 0?{tone:o.tone}:{}})),u=Math.max(0,n),l=u===0?[]:Array.from({length:u},(o,h)=>et(new Date(r+d*h/Math.max(1,u-1))));return{lanes:f,events:p,axisLabels:l}}function O(){return s.jsx("p",{className:"px-4 pb-4 text-body-sm text-fg-muted",children:"Unexpected data shape."})}const R="px-4 pb-4 compact:px-3 compact:pb-3";function Gt({config:t,data:e}){const n=st(e);return n===null?s.jsx(O,{}):s.jsx("div",{className:R,"data-widget":"chart-multiline",children:s.jsx(bt,{series:n,labels:{label:t.title??"Multi-line chart"},height:t.height,smooth:t.smooth,showAxis:t.axis,showEndLabels:t.seriesLabels})})}function It({config:t,data:e}){const n=st(e);return n===null?s.jsx(O,{}):s.jsx("div",{className:R,"data-widget":"chart-stream",children:s.jsx(vt,{series:n,labels:{label:t.title??"Stream chart"},height:t.height,smooth:t.curve==="smooth",showLegend:t.legend})})}function Ut({config:t,data:e}){const n=zt(e);if(n===null)return s.jsx(O,{});const a=H(t);return s.jsx("div",{className:R,"data-widget":"chart-forecast",children:s.jsx(_t,{history:n.history,forecast:n.forecast,band:n.band,labels:{label:t.title??"Forecast chart"},height:t.height,showAxis:t.axis,formatY:c=>tt(c,"compact",a)})})}function qt({config:t,data:e}){const n=Pt(e);if(n===null)return s.jsx(O,{});const a=H(t);return s.jsx("div",{className:R,"data-widget":"chart-anomaly",children:s.jsx(St,{points:n,labels:{label:t.title??"Anomaly chart"},height:t.height,sensitivity:t.sensitivity,window:t.window,showAxis:t.axis,formatY:c=>tt(c,"compact",a)})})}function Vt({config:t,data:e}){const n=Ft(e,t.candleCount);if(n===null)return s.jsx(O,{});const a=H(t);return s.jsx("div",{className:R,"data-widget":"chart-candlestick",children:s.jsx(Nt,{candles:n,labels:{label:t.title??"Candlestick chart"},height:t.height,showAxis:t.axis,livePill:t.livePill,formatPrice:c=>tt(c,t.priceFormat,a)})})}function Zt({config:t,data:e}){const n=Et(e,t.periods,t.maxRank);return n===null?s.jsx(O,{}):s.jsx("div",{className:R,"data-widget":"chart-bump",children:s.jsx(Dt,{series:n.series,labels:{label:t.title??"Bump chart"},periods:n.periods,maxRank:n.maxRank,periodLabels:n.periodLabels,height:t.height,showEndLabels:t.endLabels})})}function Jt({config:t,data:e}){const n=Bt(e,t.lanes,t.axisBuckets);return n===null?s.jsx(O,{}):s.jsx("div",{className:R,"data-widget":"chart-timeline-lanes",children:s.jsx(Yt,{lanes:n.lanes,events:n.events,labels:{label:t.title??"Timeline lanes"},axisLabels:n.axisLabels,height:t.height})})}export{qt as ChartAnomalyWidget,Zt as ChartBumpWidget,Vt as ChartCandlestickWidget,Ut as ChartForecastWidget,Gt as ChartMultilineWidget,It as ChartStreamWidget,Jt as ChartTimelineLanesWidget};
2
+ //# sourceMappingURL=time-flow-components-nKsaryry.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"time-flow-components-nKsaryry.js","sources":["../../../../node_modules/.pnpm/d3-shape@3.2.0/node_modules/d3-shape/src/curve/basis.js","../../../../packages/charts/dist/geometry/multiLine.js","../../../../packages/charts/dist/components/MultiLineChart.js","../../../../packages/charts/dist/geometry/streamStack.js","../../../../packages/charts/dist/components/StreamChart.js","../../../../packages/charts/dist/geometry/forecast.js","../../../../packages/charts/dist/components/ForecastChart.js","../../../../packages/charts/dist/geometry/anomaly.js","../../../../packages/charts/dist/components/AnomalyChart.js","../../../../packages/charts/dist/geometry/candles.js","../../../../packages/charts/dist/components/CandlestickChart.js","../../../../packages/charts/dist/geometry/bump.js","../../../../packages/charts/dist/components/BumpChart.js","../../../../packages/charts/dist/geometry/timelineLanes.js","../../../../packages/charts/dist/components/TimelineLanesChart.js","../../../../packages/widgets/dist/families/charts/time-flow-adapters.js","../../../../packages/widgets/dist/families/charts/TimeFlowWidgets.js"],"sourcesContent":["export function point(that, x, y) {\n that._context.bezierCurveTo(\n (2 * that._x0 + that._x1) / 3,\n (2 * that._y0 + that._y1) / 3,\n (that._x0 + 2 * that._x1) / 3,\n (that._y0 + 2 * that._y1) / 3,\n (that._x0 + 4 * that._x1 + x) / 6,\n (that._y0 + 4 * that._y1 + y) / 6\n );\n}\n\nexport function Basis(context) {\n this._context = context;\n}\n\nBasis.prototype = {\n areaStart: function() {\n this._line = 0;\n },\n areaEnd: function() {\n this._line = NaN;\n },\n lineStart: function() {\n this._x0 = this._x1 =\n this._y0 = this._y1 = NaN;\n this._point = 0;\n },\n lineEnd: function() {\n switch (this._point) {\n case 3: point(this, this._x1, this._y1); // falls through\n case 2: this._context.lineTo(this._x1, this._y1); break;\n }\n if (this._line || (this._line !== 0 && this._point === 1)) this._context.closePath();\n this._line = 1 - this._line;\n },\n point: function(x, y) {\n x = +x, y = +y;\n switch (this._point) {\n case 0: this._point = 1; this._line ? this._context.lineTo(x, y) : this._context.moveTo(x, y); break;\n case 1: this._point = 2; break;\n case 2: this._point = 3; this._context.lineTo((5 * this._x0 + this._x1) / 6, (5 * this._y0 + this._y1) / 6); // falls through\n default: point(this, x, y); break;\n }\n this._x0 = this._x1, this._x1 = x;\n this._y0 = this._y1, this._y1 = y;\n }\n};\n\nexport default function(context) {\n return new Basis(context);\n}\n","/**\n * Pure multi-series polyline geometry (d3-shape only) — the core of\n * `chart-multiline` and `chart-bump` (research/widget-registry.md §2). DOM-free\n * so scheduled-report workers reuse it; identical path strings in Node and the\n * browser (04 §7.1, acceptance #10).\n */\nimport { curveLinear, curveMonotoneX, line } from 'd3-shape';\n/** One SVG path string per series through its pixel points, plus the end anchor. */\nexport function multiSeriesPaths(series, smooth = false) {\n const generator = line()\n .x((d) => d.x)\n .y((d) => d.y)\n .curve(smooth ? curveMonotoneX : curveLinear);\n return series.map((s) => ({\n key: s.key,\n label: s.label,\n path: s.points.length > 0 ? generator([...s.points]) : null,\n end: s.points.at(-1) ?? null,\n }));\n}\n/** Categorical series color var: series i → `--viz-((i mod 8)+1)` (viz.css order). */\nexport function seriesColorVar(index) {\n return `var(--viz-${(index % 8) + 1})`;\n}\n//# sourceMappingURL=multiLine.js.map","import { jsx as _jsx, jsxs as _jsxs, Fragment as _Fragment } from \"react/jsx-runtime\";\nimport { multiSeriesPaths, seriesColorVar } from '../geometry/multiLine.js';\nimport { categoricalPointScale, linearYScale, timeScale } from '../geometry/scales.js';\nimport { extent, niceTicks } from '../utils/stats.js';\nimport { formatCompact, formatShortDate } from '../utils/format.js';\nimport { ChartSurface } from './ChartSurface.js';\nconst defaultFormatX = (x) => (x instanceof Date ? formatShortDate(x) : String(x));\nexport function MultiLineChart({ series, labels, height = 240, smooth = false, showAxis = true, showEndLabels = true, formatX = defaultFormatX, formatY = formatCompact, dir, a11yFallback, className, }) {\n const isTime = series[0]?.points[0]?.x instanceof Date;\n const axisPad = {\n top: 10,\n bottom: showAxis ? 22 : 6,\n near: showAxis ? 38 : 6,\n far: showEndLabels ? 56 : 10,\n };\n return (_jsx(ChartSurface, { labels: labels, height: height, ...(dir !== undefined ? { dir } : {}), ...(a11yFallback !== undefined ? { a11yFallback } : {}), ...(className !== undefined ? { className } : {}), padding: { top: axisPad.top, bottom: axisPad.bottom, left: axisPad.near, right: axisPad.far }, children: ({ innerWidth, innerHeight, rtl, mounted }) => {\n const drawable = series.filter((s) => s.points.length > 0);\n if (drawable.length === 0 || innerWidth <= 0 || innerHeight <= 0)\n return null;\n const xFor = isTime\n ? (() => {\n const times = drawable.flatMap((s) => s.points.map((p) => (p.x instanceof Date ? p.x.getTime() : 0)));\n const [lo, hi] = extent(times) ?? [0, 1];\n const scale = timeScale([new Date(lo), new Date(hi)], innerWidth);\n return (p) => scale(p.x instanceof Date ? p.x : new Date(0));\n })()\n : (() => {\n const domain = [];\n for (const s of drawable)\n for (const p of s.points) {\n const key = String(p.x);\n if (!domain.includes(key))\n domain.push(key);\n }\n const scale = categoricalPointScale(domain, innerWidth, rtl);\n return (p) => scale(String(p.x)) ?? 0;\n })();\n const ys = drawable.flatMap((s) => s.points.map((p) => p.y));\n const [minY, maxY] = extent(ys) ?? [0, 1];\n const yTicks = niceTicks(Math.min(0, minY), Math.max(1, maxY), 3);\n const yDomain = [yTicks[0] ?? 0, yTicks.at(-1) ?? 1];\n const yScale = linearYScale(yDomain, innerHeight);\n const pixelSeries = drawable.map((s) => ({\n key: s.key,\n label: s.label,\n points: s.points.map((p) => ({ x: xFor(p), y: yScale(p.y) })),\n }));\n const paths = multiSeriesPaths(pixelSeries, smooth);\n return (_jsxs(\"g\", { className: \"adm-chart-fade\", style: { '--adm-fade': mounted ? '1' : '0' }, children: [showAxis &&\n yTicks.map((tick) => (_jsxs(\"g\", { children: [_jsx(\"line\", { className: \"adm-chart-gridline\", x1: 0, x2: innerWidth, y1: yScale(tick), y2: yScale(tick) }), _jsx(\"text\", { className: \"adm-chart-axis-label adm-chart-num\", x: rtl ? innerWidth + 6 : -6, y: yScale(tick) + 3, textAnchor: rtl ? 'start' : 'end', children: formatY(tick) })] }, tick))), showAxis &&\n (() => {\n const anchor = drawable[0]?.points ?? [];\n const first = anchor[0];\n const last = anchor.at(-1);\n if (first === undefined || last === undefined || anchor.length < 2)\n return null;\n return (_jsxs(_Fragment, { children: [_jsx(\"text\", { className: \"adm-chart-axis-label\", x: xFor(first), y: innerHeight + 15, textAnchor: isTime || !rtl ? 'start' : 'end', children: formatX(first.x) }), _jsx(\"text\", { className: \"adm-chart-axis-label\", x: xFor(last), y: innerHeight + 15, textAnchor: isTime || !rtl ? 'end' : 'start', children: formatX(last.x) })] }));\n })(), paths.map((sp, i) => sp.path === null ? null : (_jsx(\"path\", { d: sp.path, fill: \"none\", stroke: seriesColorVar(i), strokeWidth: 2, strokeLinecap: \"round\", strokeLinejoin: \"round\", \"data-series\": sp.key }, sp.key))), paths.map((sp, i) => sp.end === null ? null : (_jsx(\"circle\", { cx: sp.end.x, cy: sp.end.y, r: 3, fill: \"var(--surface)\", stroke: seriesColorVar(i), strokeWidth: 2, \"data-series-dot\": sp.key }, `${sp.key}-dot`))), showEndLabels &&\n paths.map((sp, i) => sp.end === null ? null : (_jsx(\"text\", { x: sp.end.x + (rtl ? -8 : 8), y: sp.end.y + 3, textAnchor: rtl ? 'end' : 'start', fontSize: 10, fontWeight: 600, fill: seriesColorVar(i), \"data-series-label\": sp.key, children: sp.label }, `${sp.key}-label`)))] }));\n } }));\n}\n//# sourceMappingURL=MultiLineChart.js.map","/**\n * Streamgraph stacking geometry (`chart-stream`, research/widget-registry.md\n * §2): centered (\"silhouette\") stacked bands over time. Pure + DOM-free; the\n * component supplies the pixel x/y scales, this returns value-space band edges\n * and a golden-testable pixel area-path builder.\n */\nimport { area, curveBasis, curveLinear } from 'd3-shape';\n/**\n * Stack series into bands. `silhouette` centers the total thickness on zero at\n * each x (the classic streamgraph); `zero` stacks upward from a flat baseline.\n * Negative inputs are clamped to zero (thicknesses are non-negative).\n */\nexport function stackStream(series, offset = 'silhouette') {\n const n = series.reduce((max, s) => Math.max(max, s.values.length), 0);\n const bands = series.map((s) => ({\n key: s.key,\n label: s.label,\n low: Array.from({ length: n }, () => 0),\n high: Array.from({ length: n }, () => 0),\n }));\n let min = 0;\n let max = 0;\n for (let i = 0; i < n; i += 1) {\n const total = series.reduce((sum, s) => sum + Math.max(0, s.values[i] ?? 0), 0);\n let running = offset === 'silhouette' ? -total / 2 : 0;\n for (let s = 0; s < series.length; s += 1) {\n const value = Math.max(0, series[s]?.values[i] ?? 0);\n const band = bands[s];\n if (band === undefined)\n continue;\n const low = running;\n running += value;\n band.low[i] = low;\n band.high[i] = running;\n if (running > max)\n max = running;\n if (low < min)\n min = low;\n }\n }\n return { bands, min, max };\n}\n/**\n * Closed area path between per-index lower/upper PIXEL edges. `xs`, `low`,\n * `high` are parallel pixel arrays; `smooth` uses a basis spline for the\n * organic stream look.\n */\nexport function bandAreaPath(xs, low, high, smooth = true) {\n const generator = area()\n .x((_, i) => xs[i] ?? 0)\n .y0((_, i) => low[i] ?? 0)\n .y1((_, i) => high[i] ?? 0)\n .curve(smooth ? curveBasis : curveLinear);\n return generator(high.map(() => 0));\n}\n//# sourceMappingURL=streamStack.js.map","import { jsx as _jsx, jsxs as _jsxs } from \"react/jsx-runtime\";\nimport { bandAreaPath, stackStream } from '../geometry/streamStack.js';\nimport { seriesColorVar } from '../geometry/multiLine.js';\nimport { categoricalPointScale, linearYScale, timeScale } from '../geometry/scales.js';\nimport { extent } from '../utils/stats.js';\nimport { ChartSurface } from './ChartSurface.js';\nconst LEGEND_H = 20;\nexport function StreamChart({ series, labels, height = 260, smooth = true, showLegend = true, dir, a11yFallback, className, }) {\n const isTime = series[0]?.points[0]?.x instanceof Date;\n return (_jsx(ChartSurface, { labels: labels, height: height, ...(dir !== undefined ? { dir } : {}), ...(a11yFallback !== undefined ? { a11yFallback } : {}), ...(className !== undefined ? { className } : {}), padding: { top: showLegend ? LEGEND_H + 6 : 8, bottom: 8, left: 6, right: 6 }, children: ({ innerWidth, innerHeight, rtl, mounted }) => {\n const drawable = series.filter((s) => s.points.length > 0);\n if (drawable.length === 0 || innerWidth <= 0 || innerHeight <= 0)\n return null;\n // `stackStream` builds band arrays of length = MAX point-count across\n // every series, so `xs` must span the same index range. Deriving it\n // from only the first series collapses band indices past that series'\n // length onto x=0; use the longest series as the x spine instead.\n const spine = drawable.reduce((a, b) => (b.points.length > a.points.length ? b : a));\n const xs = isTime\n ? (() => {\n const times = drawable.flatMap((s) => s.points.map((p) => (p.x instanceof Date ? p.x.getTime() : 0)));\n const [lo, hi] = extent(times) ?? [0, 1];\n const scale = timeScale([new Date(lo), new Date(hi)], innerWidth);\n return spine.points.map((p) => scale(p.x instanceof Date ? p.x : new Date(0)));\n })()\n : (() => {\n const domain = spine.points.map((p) => String(p.x));\n const scale = categoricalPointScale(domain, innerWidth, rtl);\n return domain.map((d) => scale(d) ?? 0);\n })();\n const inputs = drawable.map((s) => ({\n key: s.key,\n label: s.label,\n values: s.points.map((p) => p.y),\n }));\n const { bands, min, max } = stackStream(inputs, 'silhouette');\n const yScale = linearYScale([min, max], innerHeight);\n // Legend layout in reading order (RTL lays out from the inline-end).\n let cursor = rtl ? innerWidth : 0;\n return (_jsxs(\"g\", { className: \"adm-chart-fade\", style: { '--adm-fade': mounted ? '1' : '0' }, children: [bands.map((band, i) => {\n const low = band.low.map((v) => yScale(v));\n const high = band.high.map((v) => yScale(v));\n const path = bandAreaPath(xs, low, high, smooth);\n return path === null ? null : (_jsx(\"path\", { d: path, fill: seriesColorVar(i), fillOpacity: 0.82, stroke: \"var(--surface)\", strokeWidth: 0.75, \"data-series\": band.key }, band.key));\n }), showLegend &&\n bands.map((band, i) => {\n const width = band.label.length * 6.2 + 20;\n const x = rtl ? cursor - width : cursor;\n cursor = rtl ? cursor - width - 6 : cursor + width + 6;\n const dotX = rtl ? x + width - 8 : x + 4;\n const textX = rtl ? x + width - 18 : x + 14;\n return (_jsxs(\"g\", { \"data-legend-item\": band.key, children: [_jsx(\"circle\", { cx: dotX, cy: -LEGEND_H + 8, r: 4, fill: seriesColorVar(i) }), _jsx(\"text\", { x: textX, y: -LEGEND_H + 11, textAnchor: rtl ? 'end' : 'start', fontSize: 10.5, fontWeight: 600, fill: \"var(--fg-muted)\", children: band.label })] }, `${band.key}-legend`));\n })] }));\n } }));\n}\n//# sourceMappingURL=StreamChart.js.map","/** Two-sided normal z-multipliers for the confidence levels the UI exposes. */\nconst Z_BY_CONFIDENCE = {\n '0.8': 1.281_552,\n '0.9': 1.644_854,\n '0.95': 1.959_964,\n '0.99': 2.575_829,\n};\nexport function zForConfidence(confidence) {\n return Z_BY_CONFIDENCE[String(confidence)] ?? Z_BY_CONFIDENCE['0.9'];\n}\n/**\n * Ordinary-least-squares trend over the history indices, projected `horizon`\n * steps forward. The band widens with the square root of the step distance\n * (classic prediction-interval growth), scaled by the in-sample residual\n * standard deviation and the confidence z-multiplier.\n */\nexport function linearForecast(history, horizon, confidence = 0.9) {\n const n = history.length;\n if (n === 0 || horizon <= 0)\n return { forecast: [], lo: [], hi: [] };\n const meanX = (n - 1) / 2;\n const meanY = history.reduce((sum, v) => sum + v, 0) / n;\n let sxx = 0;\n let sxy = 0;\n for (let i = 0; i < n; i += 1) {\n const dx = i - meanX;\n sxx += dx * dx;\n sxy += dx * ((history[i] ?? 0) - meanY);\n }\n const slope = sxx === 0 ? 0 : sxy / sxx;\n const intercept = meanY - slope * meanX;\n let sse = 0;\n for (let i = 0; i < n; i += 1) {\n const fitted = intercept + slope * i;\n const residual = (history[i] ?? 0) - fitted;\n sse += residual * residual;\n }\n const residualStd = Math.sqrt(sse / Math.max(1, n - 2));\n const z = zForConfidence(confidence);\n const forecast = [];\n const lo = [];\n const hi = [];\n for (let step = 1; step <= horizon; step += 1) {\n const value = intercept + slope * (n - 1 + step);\n const spread = z * residualStd * Math.sqrt(step);\n forecast.push(value);\n lo.push(value - spread);\n hi.push(value + spread);\n }\n return { forecast, lo, hi };\n}\n/**\n * Closed polygon path for a confidence band: forward along the upper pixel\n * edge, back along the lower. `upper` and `lower` are parallel same-length\n * pixel-point arrays (lower typically the reverse-domain of upper's x).\n */\nexport function confidenceBandPath(upper, lower) {\n if (upper.length === 0 || lower.length !== upper.length)\n return null;\n const parts = [];\n upper.forEach((p, i) => {\n parts.push(`${i === 0 ? 'M' : 'L'}${fmt(p.x)},${fmt(p.y)}`);\n });\n for (let i = lower.length - 1; i >= 0; i -= 1) {\n const p = lower[i];\n parts.push(`L${fmt(p.x)},${fmt(p.y)}`);\n }\n parts.push('Z');\n return parts.join('');\n}\n/** Trim float noise so Node and browser emit byte-identical path strings. */\nfunction fmt(value) {\n return Number(value.toFixed(3)).toString();\n}\n//# sourceMappingURL=forecast.js.map","import { jsx as _jsx, jsxs as _jsxs } from \"react/jsx-runtime\";\nimport { confidenceBandPath } from '../geometry/forecast.js';\nimport { linePath } from '../geometry/lineArea.js';\nimport { linearYScale, timeScale } from '../geometry/scales.js';\nimport { extent, niceTicks } from '../utils/stats.js';\nimport { formatCompact } from '../utils/format.js';\nimport { ChartSurface } from './ChartSurface.js';\nexport function ForecastChart({ history, forecast, band, labels, height = 260, showAxis = true, nowLabel = 'Now', forecastLabel = 'Forecast', actualLabel = 'Actual', formatY = formatCompact, dir, a11yFallback, className, }) {\n return (_jsx(ChartSurface, { labels: labels, height: height, ...(dir !== undefined ? { dir } : {}), ...(a11yFallback !== undefined ? { a11yFallback } : {}), ...(className !== undefined ? { className } : {}), padding: { top: 10, bottom: showAxis ? 24 : 8, left: showAxis ? 38 : 6, right: 10 }, children: ({ innerWidth, innerHeight, rtl, mounted }) => {\n if (history.length === 0 || innerWidth <= 0 || innerHeight <= 0)\n return null;\n const allDates = [...history, ...forecast].map((p) => p.x.getTime());\n const [loT, hiT] = extent(allDates) ?? [0, 1];\n const xScale = timeScale([new Date(loT), new Date(hiT)], innerWidth);\n const ys = [\n ...history.map((p) => p.y),\n ...forecast.map((p) => p.y),\n ...band.map((b) => b.lo),\n ...band.map((b) => b.hi),\n ];\n const [minY, maxY] = extent(ys) ?? [0, 1];\n const yTicks = niceTicks(Math.min(0, minY), Math.max(1, maxY), 3);\n const yScale = linearYScale([yTicks[0] ?? 0, yTicks.at(-1) ?? 1], innerHeight);\n const now = history.at(-1);\n const nowX = xScale(now.x);\n const nowPix = { x: nowX, y: yScale(now.y) };\n const historyPix = history.map((p) => ({ x: xScale(p.x), y: yScale(p.y) }));\n const forecastPix = forecast.map((p) => ({ x: xScale(p.x), y: yScale(p.y) }));\n const upper = [nowPix, ...forecast.map((p, i) => ({ x: xScale(p.x), y: yScale(band[i]?.hi ?? p.y) }))];\n const lower = [nowPix, ...forecast.map((p, i) => ({ x: xScale(p.x), y: yScale(band[i]?.lo ?? p.y) }))];\n const historyLine = linePath(historyPix, true);\n const forecastLine = linePath([nowPix, ...forecastPix], true);\n const bandPath = confidenceBandPath(upper, lower);\n const legendStart = rtl ? innerWidth : 0;\n return (_jsxs(\"g\", { className: \"adm-chart-fade\", style: { '--adm-fade': mounted ? '1' : '0' }, children: [showAxis &&\n yTicks.map((tick) => (_jsxs(\"g\", { children: [_jsx(\"line\", { className: \"adm-chart-gridline\", x1: 0, x2: innerWidth, y1: yScale(tick), y2: yScale(tick) }), _jsx(\"text\", { className: \"adm-chart-axis-label adm-chart-num\", x: rtl ? innerWidth + 6 : -6, y: yScale(tick) + 3, textAnchor: rtl ? 'start' : 'end', children: formatY(tick) })] }, tick))), bandPath !== null && (_jsx(\"path\", { d: bandPath, fill: \"var(--viz-1)\", fillOpacity: 0.15, stroke: \"none\", \"data-band\": \"confidence\" })), _jsx(\"line\", { x1: nowX, x2: nowX, y1: 0, y2: innerHeight, stroke: \"var(--border-strong)\", strokeWidth: 1, strokeDasharray: \"3 3\", \"data-now-divider\": \"\" }), _jsx(\"text\", { x: nowX + (rtl ? -4 : 4), y: 10, textAnchor: rtl ? 'end' : 'start', fontSize: 9.5, fontWeight: 600, fill: \"var(--fg-subtle)\", \"data-now-label\": \"\", children: nowLabel }), forecastLine !== null && (_jsx(\"path\", { d: forecastLine, fill: \"none\", stroke: \"var(--viz-1)\", strokeWidth: 2, strokeDasharray: \"5 4\", strokeLinecap: \"round\", \"data-series\": \"forecast\" })), historyLine !== null && (_jsx(\"path\", { d: historyLine, fill: \"none\", stroke: \"var(--viz-1)\", strokeWidth: 2, strokeLinecap: \"round\", \"data-series\": \"history\" })), _jsx(\"circle\", { cx: nowPix.x, cy: nowPix.y, r: 3, fill: \"var(--viz-1)\", stroke: \"var(--surface)\", strokeWidth: 1.5 }), _jsxs(\"g\", { \"data-footer-legend\": \"\", transform: `translate(0, ${innerHeight + (showAxis ? 16 : 4)})`, children: [_jsx(\"line\", { x1: rtl ? legendStart : legendStart, x2: rtl ? legendStart - 16 : legendStart + 16, y1: 0, y2: 0, stroke: \"var(--viz-1)\", strokeWidth: 2 }), _jsx(\"text\", { x: rtl ? legendStart - 20 : legendStart + 20, y: 3, textAnchor: rtl ? 'end' : 'start', fontSize: 9.5, fontWeight: 600, fill: \"var(--fg-muted)\", children: actualLabel }), _jsx(\"line\", { x1: rtl ? legendStart - 96 : legendStart + 96, x2: rtl ? legendStart - 112 : legendStart + 112, y1: 0, y2: 0, stroke: \"var(--viz-1)\", strokeWidth: 2, strokeDasharray: \"4 3\" }), _jsx(\"text\", { x: rtl ? legendStart - 116 : legendStart + 116, y: 3, textAnchor: rtl ? 'end' : 'start', fontSize: 9.5, fontWeight: 600, fill: \"var(--fg-muted)\", children: forecastLabel })] })] }));\n } }));\n}\n//# sourceMappingURL=ForecastChart.js.map","/**\n * Anomaly-detection geometry (`chart-anomaly`, research/widget-registry.md §2):\n * a centered moving-average \"expected\" line, a symmetric expected-range band\n * from the residual spread, and z-score anomaly flags. Pure + DOM-free and\n * fully deterministic (04 §7.1); `sensitivity` is the z-threshold.\n */\n/** Centered moving average with a clamped window at the series ends. */\nfunction centeredMovingAverage(values, window) {\n const n = values.length;\n const half = Math.floor(window / 2);\n const out = [];\n for (let i = 0; i < n; i += 1) {\n let sum = 0;\n let count = 0;\n for (let j = Math.max(0, i - half); j <= Math.min(n - 1, i + half); j += 1) {\n sum += values[j] ?? 0;\n count += 1;\n }\n out.push(count === 0 ? 0 : sum / count);\n }\n return out;\n}\n/**\n * `mid` = centered moving average (window `window`, default 7). σ = standard\n * deviation of the residuals `value − mid`. A point is anomalous when its\n * absolute residual exceeds `sensitivity·σ`.\n */\nexport function anomalyModel(values, sensitivity = 2, window = 7) {\n const n = values.length;\n if (n === 0)\n return { mid: [], lo: [], hi: [], anomalies: [] };\n const mid = centeredMovingAverage(values, window);\n let sse = 0;\n for (let i = 0; i < n; i += 1) {\n const residual = (values[i] ?? 0) - (mid[i] ?? 0);\n sse += residual * residual;\n }\n const sigma = Math.sqrt(sse / n);\n const spread = sensitivity * sigma;\n const lo = [];\n const hi = [];\n const anomalies = [];\n for (let i = 0; i < n; i += 1) {\n const m = mid[i] ?? 0;\n lo.push(m - spread);\n hi.push(m + spread);\n if (sigma > 0 && Math.abs((values[i] ?? 0) - m) > spread)\n anomalies.push(i);\n }\n return { mid, lo, hi, anomalies };\n}\n//# sourceMappingURL=anomaly.js.map","import { jsx as _jsx, jsxs as _jsxs } from \"react/jsx-runtime\";\nimport { anomalyModel } from '../geometry/anomaly.js';\nimport { confidenceBandPath } from '../geometry/forecast.js';\nimport { linePath } from '../geometry/lineArea.js';\nimport { linearYScale, timeScale } from '../geometry/scales.js';\nimport { extent, niceTicks } from '../utils/stats.js';\nimport { formatCompact } from '../utils/format.js';\nimport { ChartSurface } from './ChartSurface.js';\nexport function AnomalyChart({ points, labels, height = 220, sensitivity = 2, window = 7, showAxis = true, formatY = formatCompact, dir, a11yFallback, className, }) {\n return (_jsx(ChartSurface, { labels: labels, height: height, ...(dir !== undefined ? { dir } : {}), ...(a11yFallback !== undefined ? { a11yFallback } : {}), ...(className !== undefined ? { className } : {}), padding: { top: 10, bottom: showAxis ? 22 : 8, left: showAxis ? 38 : 6, right: 10 }, children: ({ innerWidth, innerHeight, rtl, mounted }) => {\n if (points.length === 0 || innerWidth <= 0 || innerHeight <= 0)\n return null;\n const dates = points.map((p) => p.x.getTime());\n const [loT, hiT] = extent(dates) ?? [0, 1];\n const xScale = timeScale([new Date(loT), new Date(hiT)], innerWidth);\n const values = points.map((p) => p.y);\n const model = anomalyModel(values, sensitivity, window);\n const ys = [...values, ...model.lo, ...model.hi];\n const [minY, maxY] = extent(ys) ?? [0, 1];\n const yTicks = niceTicks(Math.min(0, minY), Math.max(1, maxY), 3);\n const yScale = linearYScale([yTicks[0] ?? 0, yTicks.at(-1) ?? 1], innerHeight);\n const xAt = (i) => xScale(points[i].x);\n const upper = points.map((_, i) => ({ x: xAt(i), y: yScale(model.hi[i] ?? 0) }));\n const lower = points.map((_, i) => ({ x: xAt(i), y: yScale(model.lo[i] ?? 0) }));\n const bandPath = confidenceBandPath(upper, lower);\n const midLine = linePath(points.map((_, i) => ({ x: xAt(i), y: yScale(model.mid[i] ?? 0) })), true);\n const actualLine = linePath(points.map((p, i) => ({ x: xAt(i), y: yScale(p.y) })), false);\n return (_jsxs(\"g\", { className: \"adm-chart-fade\", style: { '--adm-fade': mounted ? '1' : '0' }, children: [showAxis &&\n yTicks.map((tick) => (_jsxs(\"g\", { children: [_jsx(\"line\", { className: \"adm-chart-gridline\", x1: 0, x2: innerWidth, y1: yScale(tick), y2: yScale(tick) }), _jsx(\"text\", { className: \"adm-chart-axis-label adm-chart-num\", x: rtl ? innerWidth + 6 : -6, y: yScale(tick) + 3, textAnchor: rtl ? 'start' : 'end', children: formatY(tick) })] }, tick))), bandPath !== null && (_jsx(\"path\", { d: bandPath, fill: \"var(--viz-1)\", fillOpacity: 0.12, stroke: \"none\", \"data-band\": \"expected\" })), midLine !== null && (_jsx(\"path\", { d: midLine, fill: \"none\", stroke: \"var(--fg-subtle)\", strokeWidth: 1.5, strokeDasharray: \"4 4\", \"data-series\": \"expected\" })), actualLine !== null && (_jsx(\"path\", { d: actualLine, fill: \"none\", stroke: \"var(--viz-1)\", strokeWidth: 2, strokeLinecap: \"round\", strokeLinejoin: \"round\", \"data-series\": \"actual\" })), model.anomalies.map((i) => (_jsxs(\"g\", { \"data-anomaly\": i, children: [_jsx(\"circle\", { cx: xAt(i), cy: yScale(values[i] ?? 0), r: 7, fill: \"var(--danger)\", fillOpacity: 0.22 }), _jsx(\"circle\", { cx: xAt(i), cy: yScale(values[i] ?? 0), r: 3.5, fill: \"var(--danger)\", stroke: \"var(--surface)\", strokeWidth: 1.5 })] }, `anomaly-${i}`)))] }));\n } }));\n}\n//# sourceMappingURL=AnomalyChart.js.map","/**\n * OHLC candlestick geometry (`chart-candlestick`, research/widget-registry.md\n * §2). Pure + DOM-free. The price axis is a fixed LTR-island convention\n * (04 §7.4 exceptions: candlestick price axis never mirrors), so this layout\n * takes no `rtl` flag — candles are index-ordered left→right regardless of\n * page direction.\n */\nimport { extent, niceTicks } from '../utils/stats.js';\n/** Index-ordered candle rects + a shared price y-scale over [low…high]. */\nexport function layoutCandles(candles, width, height, options = {}) {\n const { bodyRatio = 0.6, tickCount = 4, minBody = 1 } = options;\n const prices = candles.flatMap((candle) => [candle.h, candle.l, candle.o, candle.c]);\n const [minPrice, maxPrice] = extent(prices) ?? [0, 1];\n const yTicks = minPrice === maxPrice ? [minPrice, minPrice + 1] : niceTicks(minPrice, maxPrice, tickCount);\n const domainLo = yTicks[0] ?? minPrice;\n const domainHi = yTicks.at(-1) ?? maxPrice;\n const span = domainHi - domainLo || 1;\n const yFor = (value) => height - ((value - domainLo) / span) * height;\n const slot = candles.length > 0 ? width / candles.length : width;\n const bodyWidth = Math.max(1, slot * bodyRatio);\n const rects = candles.map((candle, index) => {\n const centerX = slot * (index + 0.5);\n const openY = yFor(candle.o);\n const closeY = yFor(candle.c);\n const up = candle.c >= candle.o;\n const top = Math.min(openY, closeY);\n const bodyHeight = Math.max(minBody, Math.abs(closeY - openY));\n return {\n index,\n centerX,\n x: centerX - bodyWidth / 2,\n width: bodyWidth,\n bodyY: top,\n bodyHeight,\n highY: yFor(candle.h),\n lowY: yFor(candle.l),\n up,\n };\n });\n return { rects, yFor, yTicks };\n}\n//# sourceMappingURL=candles.js.map","import { jsx as _jsx, jsxs as _jsxs } from \"react/jsx-runtime\";\nimport { layoutCandles } from '../geometry/candles.js';\nimport { formatCompact } from '../utils/format.js';\nimport { ChartSurface } from './ChartSurface.js';\nexport function CandlestickChart({ candles, labels, height = 260, showAxis = true, livePill = false, livePillLabel = 'Live', formatPrice = formatCompact, dir, a11yFallback, className, }) {\n return (_jsx(ChartSurface, { labels: labels, height: height, ...(dir !== undefined ? { dir } : {}), ...(a11yFallback !== undefined ? { a11yFallback } : {}), ...(className !== undefined ? { className } : {}), \n // Price axis pinned to the right (LTR-island convention), so pad right.\n padding: { top: 10, bottom: 8, left: 6, right: showAxis ? 44 : 8 }, children: ({ innerWidth, innerHeight, mounted }) => {\n if (candles.length === 0 || innerWidth <= 0 || innerHeight <= 0)\n return null;\n const layout = layoutCandles(candles, innerWidth, innerHeight);\n const last = candles.at(-1);\n const lastY = layout.yFor(last.c);\n const lastUp = last.c >= last.o;\n return (_jsxs(\"g\", { className: \"adm-chart-fade\", style: { '--adm-fade': mounted ? '1' : '0' }, children: [showAxis &&\n layout.yTicks.map((tick) => (_jsxs(\"g\", { children: [_jsx(\"line\", { className: \"adm-chart-gridline\", x1: 0, x2: innerWidth, y1: layout.yFor(tick), y2: layout.yFor(tick) }), _jsx(\"text\", { className: \"adm-chart-axis-label adm-chart-num\", x: innerWidth + 6, y: layout.yFor(tick) + 3, textAnchor: \"start\", children: formatPrice(tick) })] }, tick))), layout.rects.map((rect) => {\n const tone = rect.up ? 'var(--pos)' : 'var(--danger)';\n return (_jsxs(\"g\", { \"data-candle\": rect.index, \"data-dir\": rect.up ? 'up' : 'down', children: [_jsx(\"line\", { x1: rect.centerX, x2: rect.centerX, y1: rect.highY, y2: rect.lowY, stroke: tone, strokeWidth: 1.25 }), _jsx(\"rect\", { x: rect.x, y: rect.bodyY, width: rect.width, height: rect.bodyHeight, fill: tone, \"data-body\": \"\" })] }, rect.index));\n }), _jsx(\"line\", { x1: 0, x2: innerWidth, y1: lastY, y2: lastY, stroke: lastUp ? 'var(--pos)' : 'var(--danger)', strokeWidth: 1, strokeDasharray: \"3 3\", \"data-last-price\": \"\" }), showAxis && (_jsx(\"text\", { x: innerWidth + 6, y: lastY + 3, textAnchor: \"start\", fontSize: 10, fontWeight: 700, fill: lastUp ? 'var(--pos)' : 'var(--danger)', \"data-last-price-label\": \"\", children: formatPrice(last.c) })), livePill && (_jsxs(\"g\", { \"data-live-pill\": \"\", transform: \"translate(4, 2)\", children: [_jsx(\"rect\", { x: 0, y: 0, width: 44, height: 16, rx: 8, fill: \"var(--pos-soft)\" }), _jsx(\"circle\", { cx: 11, cy: 8, r: 3, fill: \"var(--pos)\" }), _jsx(\"text\", { x: 19, y: 11, fontSize: 9, fontWeight: 700, fill: \"var(--pos)\", children: livePillLabel })] }))] }));\n } }));\n}\n//# sourceMappingURL=CandlestickChart.js.map","/**\n * Lay out one polyline per entity. `periods` and `maxRank` fix the axes so\n * every series shares a grid even when some are absent in a period. In RTL the\n * period axis reverses (period 0 at inline-start / the right edge).\n */\nexport function layoutBump(series, periods, maxRank, width, height, rtl) {\n const step = periods > 1 ? width / (periods - 1) : 0;\n const xForPeriod = (index) => (rtl ? width - index * step : index * step);\n // Rank 1 → top row center; rank maxRank → bottom row center (band per rank).\n const rowHeight = maxRank > 0 ? height / maxRank : height;\n const yForRank = (rank) => (rank - 0.5) * rowHeight;\n const lines = series.map((entity) => {\n const points = [];\n entity.ranks.forEach((rank, index) => {\n if (rank === null || index >= periods)\n return;\n points.push({ x: xForPeriod(index), y: yForRank(rank), rank });\n });\n return {\n key: entity.key,\n label: entity.label,\n points: points.map(({ x, y }) => ({ x, y })),\n start: points[0] ?? null,\n end: points.at(-1) ?? null,\n };\n });\n return { lines, xForPeriod, yForRank, periods, maxRank };\n}\n//# sourceMappingURL=bump.js.map","import { jsx as _jsx, jsxs as _jsxs } from \"react/jsx-runtime\";\nimport { layoutBump } from '../geometry/bump.js';\nimport { multiSeriesPaths, seriesColorVar } from '../geometry/multiLine.js';\nimport { ChartSurface } from './ChartSurface.js';\nconst SIDE_PAD = 54;\nexport function BumpChart({ series, labels, periods, maxRank, periodLabels, height = 240, showEndLabels = true, dir, a11yFallback, className, }) {\n return (_jsx(ChartSurface, { labels: labels, height: height, ...(dir !== undefined ? { dir } : {}), ...(a11yFallback !== undefined ? { a11yFallback } : {}), ...(className !== undefined ? { className } : {}), padding: { top: 10, bottom: 22, left: SIDE_PAD, right: SIDE_PAD }, children: ({ innerWidth, innerHeight, rtl, mounted }) => {\n if (series.length === 0 || periods <= 0 || maxRank <= 0 || innerWidth <= 0 || innerHeight <= 0) {\n return null;\n }\n const layout = layoutBump(series, periods, maxRank, innerWidth, innerHeight, rtl);\n const paths = multiSeriesPaths(layout.lines.map((l) => ({ key: l.key, label: l.label, points: l.points })), false);\n return (_jsxs(\"g\", { className: \"adm-chart-fade\", style: { '--adm-fade': mounted ? '1' : '0' }, children: [Array.from({ length: maxRank }, (_, r) => (_jsx(\"line\", { className: \"adm-chart-gridline\", x1: 0, x2: innerWidth, y1: layout.yForRank(r + 1), y2: layout.yForRank(r + 1) }, r))), Array.from({ length: periods }, (_, i) => (_jsx(\"text\", { className: \"adm-chart-axis-label\", x: layout.xForPeriod(i), y: innerHeight + 15, textAnchor: \"middle\", children: periodLabels?.[i] ?? String(i + 1) }, `period-${i}`))), paths.map((sp, i) => sp.path === null ? null : (_jsx(\"path\", { d: sp.path, fill: \"none\", stroke: seriesColorVar(i), strokeWidth: 2.5, strokeLinecap: \"round\", strokeLinejoin: \"round\", \"data-series\": sp.key }, sp.key))), layout.lines.map((line, i) => line.points.map((point, j) => (_jsx(\"circle\", { cx: point.x, cy: point.y, r: 3.5, fill: \"var(--surface)\", stroke: seriesColorVar(i), strokeWidth: 2, \"data-series-dot\": line.key }, `${line.key}-${j}`)))), showEndLabels &&\n paths.map((sp, i) => sp.end === null ? null : (_jsx(\"text\", { x: sp.end.x + (rtl ? -8 : 8), y: sp.end.y + 3, textAnchor: rtl ? 'end' : 'start', fontSize: 10, fontWeight: 600, fill: seriesColorVar(i), \"data-series-label\": sp.key, children: sp.label }, `${sp.key}-label`)))] }));\n } }));\n}\n//# sourceMappingURL=BumpChart.js.map","/**\n * Swimlane timeline geometry (`chart-timeline-lanes`, research/widget-registry.md\n * §2): stacked horizontal lanes with events positioned along a shared time\n * axis. The time axis is an LTR island (04 §7.4 — time axes never mirror), so\n * event x-positions are LTR here; the component flips only the lane-label\n * gutter side under RTL. Pure + DOM-free.\n */\n/**\n * One row per lane (in the given order), each carrying its events at pixel x =\n * `clamp(position, 0, 1) · width`. Events keep input order within a lane.\n */\nexport function layoutLanes(lanes, events, width, height, options = {}) {\n const { laneGap = 8 } = options;\n const count = lanes.length;\n if (count === 0)\n return [];\n const laneHeight = Math.max(0, (height - laneGap * (count - 1)) / count);\n return lanes.map((lane, index) => {\n const y = index * (laneHeight + laneGap);\n const laneEvents = events\n .filter((event) => event.lane === lane)\n .map((event) => ({\n x: Math.min(1, Math.max(0, event.position)) * width,\n label: event.label,\n tone: event.tone,\n }));\n return {\n lane,\n index,\n y,\n height: laneHeight,\n centerY: y + laneHeight / 2,\n events: laneEvents,\n };\n });\n}\n/** Normalize timestamped events to lane positions over a [min, max] time span. */\nexport function positionByTime(events) {\n if (events.length === 0)\n return [];\n const times = events.map((event) => event.ms);\n const min = Math.min(...times);\n const max = Math.max(...times);\n const span = max - min || 1;\n return events.map((event) => ({\n lane: event.lane,\n position: (event.ms - min) / span,\n label: event.label,\n ...(event.tone !== undefined ? { tone: event.tone } : {}),\n }));\n}\n//# sourceMappingURL=timelineLanes.js.map","import { jsx as _jsx, jsxs as _jsxs } from \"react/jsx-runtime\";\nimport { layoutLanes } from '../geometry/timelineLanes.js';\nimport { seriesColorVar } from '../geometry/multiLine.js';\nimport { ChartSurface } from './ChartSurface.js';\nconst GUTTER = 92;\n/** Semantic tone → token color, else the lane's categorical viz color. */\nfunction toneColor(tone, laneIndex) {\n switch (tone) {\n case 'pos':\n return 'var(--pos)';\n case 'danger':\n return 'var(--danger)';\n case 'warn':\n return 'var(--warn)';\n case 'info':\n return 'var(--info)';\n default:\n return seriesColorVar(laneIndex);\n }\n}\nexport function TimelineLanesChart({ lanes, events, labels, axisLabels, height = 200, dir, a11yFallback, className, }) {\n return (_jsx(ChartSurface, { labels: labels, height: height, ...(dir !== undefined ? { dir } : {}), ...(a11yFallback !== undefined ? { a11yFallback } : {}), ...(className !== undefined ? { className } : {}), \n // Lane-label gutter at the inline-start; time axis fills the rest (LTR island).\n padding: { top: 8, bottom: axisLabels && axisLabels.length > 0 ? 22 : 10, left: GUTTER, right: 14 }, children: ({ innerWidth, innerHeight, mounted }) => {\n if (lanes.length === 0 || innerWidth <= 0 || innerHeight <= 0)\n return null;\n const rows = layoutLanes(lanes, events, innerWidth, innerHeight, { laneGap: 8 });\n return (_jsxs(\"g\", { className: \"adm-chart-fade\", style: { '--adm-fade': mounted ? '1' : '0' }, children: [rows.map((row) => (_jsxs(\"g\", { \"data-lane\": row.lane, children: [_jsx(\"rect\", { x: 0, y: row.y, width: innerWidth, height: row.height, rx: 6, fill: \"var(--surface-2)\" }), _jsx(\"text\", { x: -10, y: row.centerY + 3, textAnchor: \"end\", fontSize: 10.5, fontWeight: 600, fill: \"var(--fg-muted)\", \"data-lane-label\": row.lane, children: row.lane }), row.events.map((event, j) => {\n const color = toneColor(event.tone, row.index);\n const width = event.label.length * 5.6 + 22;\n const pillX = Math.min(innerWidth - width, Math.max(0, event.x - width / 2));\n return (_jsxs(\"g\", { \"data-event\": event.label, transform: `translate(${pillX}, ${row.centerY - 9})`, children: [_jsx(\"rect\", { x: 0, y: 0, width: width, height: 18, rx: 9, fill: \"var(--surface-3)\", stroke: color, strokeWidth: 1 }), _jsx(\"circle\", { cx: 11, cy: 9, r: 3, fill: color }), _jsx(\"text\", { x: 19, y: 12, fontSize: 9.5, fontWeight: 600, fill: \"var(--fg)\", children: event.label })] }, `${row.lane}-${j}`));\n })] }, row.lane))), axisLabels?.map((label, i) => {\n const count = axisLabels.length;\n const x = count > 1 ? (innerWidth / (count - 1)) * i : innerWidth / 2;\n const anchor = i === 0 ? 'start' : i === count - 1 ? 'end' : 'middle';\n return (_jsx(\"text\", { className: \"adm-chart-axis-label\", x: x, y: innerHeight + 15, textAnchor: anchor, children: label }, `axis-${i}`));\n })] }));\n } }));\n}\n//# sourceMappingURL=TimelineLanesChart.js.map","/**\n * Pure §3-envelope → chart-primitive-input adapters for the M7 \"time, forecast\n * & flow\" charts group. Structural output types (compatible with the\n * @adminium/charts primitive props by shape) keep this module free of the\n * primitive components, so the conversion logic is unit-testable independently\n * of the green-loop-assembled barrel. A malformed payload returns null and the\n * widget renders its own fallback (never throws into the error boundary).\n */\nimport { formatShortDate } from '@adminium/charts';\nfunction rec(value) {\n return typeof value === 'object' && value !== null && !Array.isArray(value) ? value : null;\n}\nfunction num(value) {\n if (typeof value === 'number' && Number.isFinite(value))\n return value;\n if (typeof value === 'string' && value.trim() !== '') {\n const parsed = Number(value);\n if (Number.isFinite(parsed))\n return parsed;\n }\n return undefined;\n}\nfunction str(value) {\n return typeof value === 'string' ? value : undefined;\n}\nfunction toDate(value) {\n const s = str(value);\n if (s === undefined)\n return undefined;\n const d = new Date(s);\n return Number.isNaN(d.getTime()) ? undefined : d;\n}\n/** Narrow a `multi-timeseries` envelope to time-x series; null when unusable. */\nexport function toTimeSeriesGroup(data) {\n const r = rec(data);\n if (r === null || !Array.isArray(r.series))\n return null;\n const out = [];\n r.series.forEach((entry, index) => {\n const s = rec(entry);\n if (s === null || !Array.isArray(s.points))\n return;\n const points = [];\n for (const p of s.points) {\n const pr = rec(p);\n const x = toDate(pr?.t);\n const y = num(pr?.v);\n if (x === undefined || y === undefined)\n continue;\n points.push({ x, y });\n }\n if (points.length === 0)\n return;\n out.push({ key: str(s.key) ?? `s${index}`, label: str(s.label) ?? str(s.key) ?? `Series ${index + 1}`, points });\n });\n return out.length > 0 ? out : null;\n}\nfunction pointsOf(value) {\n if (!Array.isArray(value))\n return [];\n const out = [];\n for (const p of value) {\n const pr = rec(p);\n const x = toDate(pr?.t);\n const y = num(pr?.v);\n if (x !== undefined && y !== undefined)\n out.push({ x, y });\n }\n return out;\n}\n/** Narrow the extended `timeseries` forecast envelope; null when no history. */\nexport function toForecastInputs(data) {\n const r = rec(data);\n if (r === null)\n return null;\n const history = pointsOf(r.points);\n if (history.length === 0)\n return null;\n const forecast = pointsOf(r.forecast);\n const band = [];\n if (Array.isArray(r.band)) {\n for (const b of r.band) {\n const br = rec(b);\n const lo = num(br?.lo);\n const hi = num(br?.hi);\n band.push({ lo: lo ?? 0, hi: hi ?? 0 });\n }\n }\n return { history, forecast, band };\n}\n// --- anomaly (chart-anomaly) -------------------------------------------------\n/** Narrow a `timeseries` envelope to time-x points; null when empty. */\nexport function toAnomalyPoints(data) {\n const r = rec(data);\n if (r === null)\n return null;\n const points = pointsOf(r.points);\n return points.length > 0 ? points : null;\n}\n/** Narrow an `ohlc` envelope; keep the last `count` candles. Null when empty. */\nexport function toCandles(data, count) {\n const r = rec(data);\n if (r === null || !Array.isArray(r.candles))\n return null;\n const out = [];\n for (const entry of r.candles) {\n const c = rec(entry);\n const o = num(c?.o);\n const h = num(c?.h);\n const l = num(c?.l);\n const close = num(c?.c);\n if (o === undefined || h === undefined || l === undefined || close === undefined)\n continue;\n out.push({ t: str(c?.t) ?? '', o, h, l, c: close });\n }\n if (out.length === 0)\n return null;\n return count !== undefined && count > 0 && out.length > count ? out.slice(out.length - count) : out;\n}\n/**\n * Narrow a `multi-timeseries` envelope whose `v` encodes rank into bump inputs.\n * Periods are the distinct sorted timestamps; each series' ranks align by\n * period index. `maxRank` defaults to the observed worst rank (≥ series count).\n */\nexport function toBumpInputs(data, cfgPeriods, cfgMaxRank) {\n const group = toTimeSeriesGroup(data);\n if (group === null)\n return null;\n const times = new Set();\n for (const s of group)\n for (const p of s.points)\n times.add(p.x.getTime());\n const sortedTimes = [...times].sort((a, b) => a - b);\n const periods = cfgPeriods ?? sortedTimes.length;\n const indexByTime = new Map(sortedTimes.map((t, i) => [t, i]));\n let observedMax = 0;\n const series = group.map((s) => {\n const ranks = Array.from({ length: periods }, () => null);\n for (const p of s.points) {\n const i = indexByTime.get(p.x.getTime());\n if (i === undefined || i >= periods)\n continue;\n ranks[i] = p.y;\n if (p.y > observedMax)\n observedMax = p.y;\n }\n return { key: s.key, label: s.label, ranks };\n });\n const maxRank = cfgMaxRank ?? Math.max(observedMax, group.length);\n const periodLabels = sortedTimes.slice(0, periods).map((t) => formatShortDate(new Date(t)));\n return { series, periods, maxRank, periodLabels };\n}\n/**\n * Narrow a `calendar-events` envelope: `category` → lane, `date` → normalized\n * position over the event span, `tone` preserved. Lanes come from config or the\n * distinct categories in first-seen order. Null when there are no dated events.\n */\nexport function toLaneInputs(data, cfgLanes, axisBuckets = 4) {\n const r = rec(data);\n if (r === null || !Array.isArray(r.events))\n return null;\n const parsed = [];\n for (const entry of r.events) {\n const e = rec(entry);\n const date = toDate(e?.date);\n if (date === undefined)\n continue;\n parsed.push({\n lane: str(e?.category) ?? 'Events',\n ms: date.getTime(),\n label: str(e?.title) ?? '',\n tone: str(e?.tone),\n });\n }\n if (parsed.length === 0)\n return null;\n const times = parsed.map((p) => p.ms);\n const min = Math.min(...times);\n const max = Math.max(...times);\n const span = max - min || 1;\n const lanes = cfgLanes !== undefined && cfgLanes.length > 0\n ? [...cfgLanes]\n : parsed.reduce((acc, p) => (acc.includes(p.lane) ? acc : [...acc, p.lane]), []);\n const events = parsed.map((p) => ({\n lane: p.lane,\n position: (p.ms - min) / span,\n label: p.label,\n ...(p.tone !== undefined ? { tone: p.tone } : {}),\n }));\n const buckets = Math.max(0, axisBuckets);\n const axisLabels = buckets === 0\n ? []\n : Array.from({ length: buckets }, (_, i) => formatShortDate(new Date(min + (span * i) / Math.max(1, buckets - 1))));\n return { lanes, events, axisLabels };\n}\n//# sourceMappingURL=time-flow-adapters.js.map","import { jsx as _jsx } from \"react/jsx-runtime\";\n/**\n * `charts` family \"time, forecast & flow\" widgets (04-T09; annex §2 ids\n * chart-multiline, chart-stream, chart-forecast, chart-anomaly,\n * chart-candlestick, chart-bump, chart-timeline-lanes): registry wrappers\n * mapping stored instance config + §3 envelopes onto the @adminium/charts\n * primitives via the pure `time-flow-adapters` narrowers. Accessible names come\n * from `config.title` (ChartSurface renders them as the SVG aria-label).\n * Components render only the loaded state — WidgetFrame owns skeleton/empty/\n * error (04 §4); a malformed payload renders an inline fallback rather than\n * throwing into the error boundary. RTL mirroring is read from\n * ChartDirectionContext by the primitives, so no `dir` prop is threaded here.\n */\nimport { AnomalyChart, BumpChart, CandlestickChart, ForecastChart, MultiLineChart, StreamChart, TimelineLanesChart, } from '@adminium/charts';\nimport { formatMetricValue, formatOptionsOf } from '../../lib/format.js';\nimport { toAnomalyPoints, toBumpInputs, toCandles, toForecastInputs, toLaneInputs, toTimeSeriesGroup, } from './time-flow-adapters.js';\nfunction BadShape() {\n return _jsx(\"p\", { className: \"px-4 pb-4 text-body-sm text-fg-muted\", children: \"Unexpected data shape.\" });\n}\nconst wrap = 'px-4 pb-4 compact:px-3 compact:pb-3';\n// --- chart-multiline ---------------------------------------------------------\nexport function ChartMultilineWidget({ config, data }) {\n const series = toTimeSeriesGroup(data);\n if (series === null)\n return _jsx(BadShape, {});\n return (_jsx(\"div\", { className: wrap, \"data-widget\": \"chart-multiline\", children: _jsx(MultiLineChart, { series: series, labels: { label: config.title ?? 'Multi-line chart' }, height: config.height, smooth: config.smooth, showAxis: config.axis, showEndLabels: config.seriesLabels }) }));\n}\n// --- chart-stream ------------------------------------------------------------\nexport function ChartStreamWidget({ config, data }) {\n const series = toTimeSeriesGroup(data);\n if (series === null)\n return _jsx(BadShape, {});\n return (_jsx(\"div\", { className: wrap, \"data-widget\": \"chart-stream\", children: _jsx(StreamChart, { series: series, labels: { label: config.title ?? 'Stream chart' }, height: config.height, smooth: config.curve === 'smooth', showLegend: config.legend }) }));\n}\n// --- chart-forecast ----------------------------------------------------------\nexport function ChartForecastWidget({ config, data }) {\n const inputs = toForecastInputs(data);\n if (inputs === null)\n return _jsx(BadShape, {});\n const opts = formatOptionsOf(config);\n return (_jsx(\"div\", { className: wrap, \"data-widget\": \"chart-forecast\", children: _jsx(ForecastChart, { history: inputs.history, forecast: inputs.forecast, band: inputs.band, labels: { label: config.title ?? 'Forecast chart' }, height: config.height, showAxis: config.axis, formatY: (value) => formatMetricValue(value, 'compact', opts) }) }));\n}\n// --- chart-anomaly -----------------------------------------------------------\nexport function ChartAnomalyWidget({ config, data }) {\n const points = toAnomalyPoints(data);\n if (points === null)\n return _jsx(BadShape, {});\n const opts = formatOptionsOf(config);\n return (_jsx(\"div\", { className: wrap, \"data-widget\": \"chart-anomaly\", children: _jsx(AnomalyChart, { points: points, labels: { label: config.title ?? 'Anomaly chart' }, height: config.height, sensitivity: config.sensitivity, window: config.window, showAxis: config.axis, formatY: (value) => formatMetricValue(value, 'compact', opts) }) }));\n}\n// --- chart-candlestick -------------------------------------------------------\nexport function ChartCandlestickWidget({ config, data }) {\n const candles = toCandles(data, config.candleCount);\n if (candles === null)\n return _jsx(BadShape, {});\n const opts = formatOptionsOf(config);\n return (_jsx(\"div\", { className: wrap, \"data-widget\": \"chart-candlestick\", children: _jsx(CandlestickChart, { candles: candles, labels: { label: config.title ?? 'Candlestick chart' }, height: config.height, showAxis: config.axis, livePill: config.livePill, formatPrice: (value) => formatMetricValue(value, config.priceFormat, opts) }) }));\n}\n// --- chart-bump --------------------------------------------------------------\nexport function ChartBumpWidget({ config, data }) {\n const inputs = toBumpInputs(data, config.periods, config.maxRank);\n if (inputs === null)\n return _jsx(BadShape, {});\n return (_jsx(\"div\", { className: wrap, \"data-widget\": \"chart-bump\", children: _jsx(BumpChart, { series: inputs.series, labels: { label: config.title ?? 'Bump chart' }, periods: inputs.periods, maxRank: inputs.maxRank, periodLabels: inputs.periodLabels, height: config.height, showEndLabels: config.endLabels }) }));\n}\n// --- chart-timeline-lanes ----------------------------------------------------\nexport function ChartTimelineLanesWidget({ config, data }) {\n const inputs = toLaneInputs(data, config.lanes, config.axisBuckets);\n if (inputs === null)\n return _jsx(BadShape, {});\n return (_jsx(\"div\", { className: wrap, \"data-widget\": \"chart-timeline-lanes\", children: _jsx(TimelineLanesChart, { lanes: inputs.lanes, events: inputs.events, labels: { label: config.title ?? 'Timeline lanes' }, axisLabels: inputs.axisLabels, height: config.height }) }));\n}\n//# sourceMappingURL=TimeFlowWidgets.js.map"],"names":["point","that","x","y","Basis","context","curveBasis","multiSeriesPaths","series","smooth","generator","line","d","curveMonotoneX","curveLinear","s","seriesColorVar","index","defaultFormatX","formatShortDate","MultiLineChart","labels","height","showAxis","showEndLabels","formatX","formatY","formatCompact","dir","a11yFallback","className","isTime","axisPad","_jsx","ChartSurface","innerWidth","innerHeight","rtl","mounted","drawable","xFor","times","p","lo","hi","extent","scale","timeScale","domain","key","categoricalPointScale","ys","minY","maxY","yTicks","niceTicks","yDomain","yScale","linearYScale","pixelSeries","paths","_jsxs","tick","anchor","first","last","_Fragment","sp","i","stackStream","offset","max","bands","min","total","sum","running","value","band","low","bandAreaPath","xs","high","area","_","LEGEND_H","StreamChart","showLegend","spine","a","b","inputs","cursor","v","path","width","dotX","textX","confidenceBandPath","upper","lower","parts","fmt","ForecastChart","history","forecast","nowLabel","forecastLabel","actualLabel","allDates","loT","hiT","xScale","now","nowX","nowPix","historyPix","forecastPix","historyLine","linePath","forecastLine","bandPath","legendStart","centeredMovingAverage","values","window","half","out","count","j","anomalyModel","sensitivity","n","mid","sse","residual","sigma","spread","anomalies","m","AnomalyChart","points","dates","model","xAt","midLine","actualLine","layoutCandles","candles","options","bodyRatio","tickCount","minBody","prices","candle","minPrice","maxPrice","domainLo","span","yFor","slot","bodyWidth","centerX","openY","closeY","up","top","bodyHeight","CandlestickChart","livePill","livePillLabel","formatPrice","layout","lastY","lastUp","rect","tone","layoutBump","periods","maxRank","step","xForPeriod","rowHeight","yForRank","rank","entity","SIDE_PAD","BumpChart","periodLabels","l","r","layoutLanes","lanes","events","laneGap","laneHeight","lane","laneEvents","event","GUTTER","toneColor","laneIndex","TimelineLanesChart","axisLabels","rows","row","color","pillX","label","rec","num","parsed","str","toDate","toTimeSeriesGroup","data","entry","pr","pointsOf","toForecastInputs","br","toAnomalyPoints","toCandles","c","o","h","close","toBumpInputs","cfgPeriods","cfgMaxRank","group","sortedTimes","indexByTime","t","observedMax","ranks","toLaneInputs","cfgLanes","axisBuckets","e","date","acc","buckets","BadShape","wrap","ChartMultilineWidget","config","ChartStreamWidget","ChartForecastWidget","opts","formatOptionsOf","formatMetricValue","ChartAnomalyWidget","ChartCandlestickWidget","ChartBumpWidget","ChartTimelineLanesWidget"],"mappings":"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","x_google_ignoreList":[0]}
@@ -0,0 +1,2 @@
1
+ const e={action:{close:"Fermer",cancel:"Annuler",confirm:"Confirmer",save:"Enregistrer",apply:"Appliquer",delete:"Supprimer",edit:"Modifier",copy:"Copier",copied:"Copié",undo:"Annuler",retry:"Réessayer",clear:"Effacer",selectAll:"Tout sélectionner",clearSelection:"Effacer la sélection",showPassword:"Afficher le mot de passe",hidePassword:"Masquer le mot de passe",reveal:"Révéler",hide:"Masquer"},state:{loading:"Chargement…",empty:"Rien ici pour l’instant",noResults:"Aucun résultat",optional:"Facultatif",required:"Obligatoire",error:"Une erreur s’est produite"},pagination:{previous:"Précédent",next:"Suivant",pageOf:"Page {page, number} sur {pages, number}",rowsPerPage:"Lignes par page",range:"{from, number}–{to, number} sur {total, number}"},table:{sortAscending:"Trier par ordre croissant",sortDescending:"Trier par ordre décroissant",rowActions:"Actions de ligne",selectRow:"Sélectionner la ligne",selectAllRows:"Sélectionner toutes les lignes"},dialog:{close:"Fermer la boîte de dialogue",confirmTitle:"Êtes-vous sûr ?"},combobox:{placeholder:"Sélectionner…",search:"Rechercher…",noMatches:"Aucune correspondance"},toast:{dismiss:"Fermer la notification"},widgets:{kpi:{statCard:{description:"La carte de mesure de référence : un agrégat principal avec pastille de tendance et mini-sparkline en option."},usageMeter:{description:"Consommation du quota par rapport à une limite ; la barre passe à l'orange puis au rouge au-delà de vos seuils."},statTileCompact:{description:"Une tuile de mesure fine avec micro-libellé, puce de tendance et spark à 6 barres — pour des rangées denses de 4 à 6."},metricHero:{description:"Une mesure surdimensionnée qui s'incrémente au chargement, avec pastille de tendance, spark et progression vers l'objectif.",goalLabel:"Objectif"},statPairCard:{description:"Deux mesures côte à côte ; la seconde peut être dérivée de la première."},gaugeRing:{description:"Une jauge annulaire pour un score ou un pourcentage, teintée selon la plage où tombe la valeur."},gaugeArc:{description:"Un arc de compteur avec plages qualitatives et aiguille ; affiche aussi une grille de jauges."},periodComparison:{description:"Cette période face à la précédente en deux barres, avec l'écart calculé en dessous.",higherLabel:"de plus",lowerLabel:"de moins",flatLabel:"stable"},microKpiSubtitle:{description:"Une statistique d'en-tête sur une ligne, construite à partir d'un modèle et recalculée en direct."},autoInsights:{description:"Des constats classés — un chiffre clé, une phrase et un spark — avec rotation par actualisation.",emptyTitle:"Aucun constat pour l'instant",emptyBody:"Les constats apparaissent dès qu'il y a assez de données pour dégager une tendance.",refreshLabel:"Actualiser"}},charts:{boxplot:{description:"Résumé en boîte à moustaches de la dispersion d'une colonne numérique par catégorie — min, quartiles, médiane et max.",emptyTitle:"Aucune distribution à tracer",emptyBody:"Aucune ligne ne correspond aux filtres pour les boîtes à moustaches."},violin:{description:"Courbes de densité en miroir comparant la distribution d'une colonne numérique entre les groupes.",emptyTitle:"Aucune distribution à tracer",emptyBody:"Aucune ligne ne correspond aux filtres pour les profils de densité."},ridgeline:{description:"Crêtes de densité superposées comparant une colonne numérique entre groupes ordonnés.",emptyTitle:"Aucune crête à tracer",emptyBody:"Aucune ligne ne correspond aux filtres pour les profils de densité."},scatterBubble:{description:"Deux colonnes numériques en points, avec une taille de bulle et une ligne de tendance en option.",emptyTitle:"Aucun point à tracer",emptyBody:"Aucune ligne ne correspond aux filtres pour les colonnes choisies."},hexbin:{description:"Densité hexagonale de deux colonnes numériques, teintée selon le nombre de lignes par tuile.",emptyTitle:"Aucune densité à tracer",emptyBody:"Aucune ligne ne correspond aux filtres à regrouper."},correlationMatrix:{description:"Corrélation de Pearson entre colonnes numériques choisies, du fortement positif au fortement négatif.",emptyTitle:"Rien à corréler",emptyBody:"Choisissez au moins deux colonnes numériques avec des lignes correspondantes."},parallelCoordinates:{description:"Chaque enregistrement en ligne sur plusieurs axes numériques normalisés, coloré par catégorie.",emptyTitle:"Aucun enregistrement à tracer",emptyBody:"Aucune ligne ne correspond aux filtres sur les axes choisis."}},feeds:{activityFeed:{description:"Un fil continu de qui a fait quoi dans votre espace de travail, du plus récent au plus ancien.",emptyTitle:"Aucune activité récente",emptyBody:"Les actions de votre espace de travail apparaîtront ici."},notificationFeed:{description:"Notifications groupées avec état non lu, filtres et actions intégrées.",emptyTitle:"Aucune notification",emptyBody:"Les nouvelles notifications apparaîtront ici."},realtimeFeed:{description:"Un flux d’événements en direct qui ajoute les nouveaux éléments en tête.",emptyTitle:"En attente d’événements",emptyBody:"Les événements en direct s’afficheront au fur et à mesure."},timelineVertical:{description:"Une chronologie verticale d’événements, de versions, d’incidents ou d’étapes d’exécution.",emptyTitle:"Rien pour l’instant",emptyBody:"Les événements apparaîtront sur cette chronologie au fur et à mesure."},unreadBadge:{description:"Une pastille de comptage des éléments non lus, synchronisée avec le fil.",unitLabel:"non lus"},loadOlderPaginator:{description:"Un bouton de pied de page qui charge les enregistrements plus anciens par lots jusqu'à épuisement du flux.",label:"Charger plus anciens",loadingLabel:"Chargement…",exhaustedLabel:"Rien de plus ancien",ofLabel:"sur"},toastStack:{description:"L'hôte des notifications éphémères : de brèves confirmations avec une annulation en option.",undoLabel:"Annuler",dismissLabel:"Fermer",regionLabel:"Notifications"}},calendar:{calendarMonth:{description:"Une grille mensuelle des événements planifiés avec des puces par jour et la navigation entre les mois.",emptyTitle:"Rien de planifié",emptyBody:"Les événements planifiés apparaîtront dans ce calendrier."},dayAgenda:{description:"Les événements du jour sélectionné sous forme d'agenda chronologique.",emptyTitle:"Rien de planifié",emptyBody:"Les événements du jour sélectionné apparaîtront ici."},scheduleMatrix:{description:"Une grille de postes par ressource et par jour avec la couverture quotidienne et une légende.",emptyTitle:"Aucun poste planifié",emptyBody:"Les postes attribués apparaîtront dans ce planning."},capacityBoard:{description:"Des barres d'utilisation par membre avec une répartition par projet et un statut de charge.",emptyTitle:"Aucune donnée de charge",emptyBody:"L'utilisation des membres apparaîtra ici une fois les affectations créées."},calendarLegendFilter:{description:"Catégories d'événements avec compteur ; cocher filtre le calendrier voisin.",emptyTitle:"Aucune catégorie",emptyBody:"Les catégories d'événements apparaîtront ici dès qu'il y aura des événements.",uncategorizedLabel:"Sans catégorie"},upcomingEventsList:{description:"Les prochains événements par ordre de date, avec responsable et statut.",emptyTitle:"Rien à venir",emptyBody:"Les événements planifiés apparaîtront ici au fur et à mesure."},dateRangePicker:{description:"Une plage de dates avec raccourcis, qui filtre le reste de la page.",previousLabel:"Mois précédent",nextLabel:"Mois suivant",summaryLabel:"{n} jours sélectionnés",presets:{"7d":"7 derniers jours","30d":"30 derniers jours","90d":"90 derniers jours",mtd:"Mois en cours",qtd:"Trimestre en cours",ytd:"Année en cours"}},scheduledJobsList:{description:"Rapports et exports récurrents avec fréquence, prochaine exécution et interrupteur.",emptyTitle:"Aucune tâche planifiée",emptyBody:"Les rapports et exports récurrents apparaîtront ici une fois planifiés.",nextRunLabel:"Prochaine exécution",toggleLabel:"Activer la planification",recipientsLabel:"Destinataires"}},tables:{masterList:{description:"Une liste sélectionnable d’enregistrements qui pilote un volet de détail.",emptyTitle:"Aucun élément",emptyBody:"Les éléments apparaîtront ici une fois créés."},logTable:{description:"Un journal d’événements avec recherche, filtre d’erreurs et actions par ligne.",emptyTitle:"Aucune entrée de journal",emptyBody:"Les événements seront enregistrés ici au fur et à mesure."},cardGallery:{description:"Une galerie responsive de cartes d’entités avec statut et actions rapides.",emptyTitle:"Rien à afficher",emptyBody:"Les éléments apparaîtront ici sous forme de cartes."},groupedSummaryTable:{description:"Lignes groupées avec colonnes d’agrégats, détails dépliables et totaux.",emptyTitle:"Aucune donnée de synthèse",emptyBody:"Les totaux groupés apparaîtront ici dès qu’il y aura des données."},schemaTree:{description:"Un explorateur de schémas, tables et colonnes avec badges de type et de clé.",emptyTitle:"Aucun schéma analysé",emptyBody:"Connectez une base de données pour explorer son schéma ici."},toggleMatrix:{description:"Une grille interactive de bascules booléennes pour rôles, règles ou canaux.",emptyTitle:"Aucune matrice configurée",emptyBody:"Les lignes et colonnes apparaîtront ici une fois configurées."},sparklineTable:{description:"Lignes de métriques avec micro-courbe, valeur actuelle et pastille d'évolution positive ou négative.",emptyTitle:"Aucune métrique",emptyBody:"Les métriques apparaîtront ici dès qu'il y aura des données à résumer."},topMoversList:{description:"Les métriques qui ont le plus évolué, avec un sens jugé favorable ou défavorable.",emptyTitle:"Aucune évolution",emptyBody:"Les métriques qui évoluent le plus apparaîtront ici."},rankedEntityList:{description:"Les meilleures entités selon une métrique, avec rang et barre proportionnelle.",emptyTitle:"Aucun classement",emptyBody:"Les meilleures entités apparaîtront ici dès qu'il y aura des données à classer."},accordionList:{description:"Lignes dépliables avec badge et panneau de détail, ouverture simple ou multiple.",emptyTitle:"Rien à déplier",emptyBody:"Les entrées apparaîtront ici dès qu'il y en aura."},comparisonMatrix:{description:"Une grille comparant les offres, avec une colonne mise en avant.",includedLabel:"Inclus",notIncludedLabel:"Non inclus",promotedLabel:"Recommandé"},chipCloud:{description:"Puces à la ligne pour les tables détectées, les variables ou les suggestions.",emptyTitle:"Rien de détecté",emptyBody:"Les tables et variables apparaîtront ici sous forme de puces une fois détectées.",moreLabel:"+{n} de plus"}},boards:{kanbanBoard:{description:"Colonnes de statut fixes avec des cartes déplaçables ; faites glisser une carte vers une autre colonne pour changer son statut.",emptyTitle:"Aucune carte pour l'instant",emptyBody:"Les cartes apparaîtront dans leurs colonnes de statut à mesure que des enregistrements sont créés."},kanbanSwimlaneGrid:{description:"Une grille couloirs × colonnes ; déplacer une carte réaffecte à la fois son couloir et son statut.",emptyTitle:"Aucun couloir à afficher",emptyBody:"Regroupez les enregistrements par un champ de couloir et un champ de statut pour construire la grille."},addCard:"Ajouter une carte",grip:"Glisser pour déplacer la carte",pointsUnit:"pts",laneSummary:"Σ{points} pts · {count}",a11y:{grabbed:"{title} saisie. Utilisez les flèches pour déplacer, Entrée pour déposer, Échap pour annuler.",over:"{title} est au-dessus de {cell}.",moved:"{title} déplacée vers {cell}.",returned:"{title} est revenue à sa position d'origine.",failed:"Impossible de déplacer {title} ; elle est revenue à sa position d'origine."},boardCard:{description:"Une carte de tableau : étiquette, titre, progression, responsable et échéance.",emptyTitle:"Aucune carte",emptyBody:"Aucun enregistrement n'est encore associé à cette carte."},inlineComposeCard:{description:"Ajout rapide qui crée un enregistrement avec les valeurs par défaut de la colonne.",placeholder:"Titre de la carte…",addLabel:"Ajouter",cancelLabel:"Annuler",openLabel:"Ajouter une carte"}},communication:{conversationInbox:{description:"Une liste sélectionnable de conversations avec compteurs de non-lus, présence et aperçu du dernier message.",emptyTitle:"Aucune conversation",emptyBody:"Les conversations apparaîtront ici à mesure que des messages arrivent.",noMatchesTitle:"Aucune conversation correspondante",searchLabel:"Rechercher dans les conversations",searchPlaceholder:"Rechercher dans les conversations…"},chatThread:{description:"Bulles de messages groupées par auteur et par jour, avec pièces jointes et champ de saisie.",emptyTitle:"Aucun message pour l'instant",emptyBody:"Les messages de cette conversation apparaîtront ici.",composerPlaceholder:"Écrire un message…",sendLabel:"Envoyer",attachLabel:"Ajouter une pièce jointe",typingLabel:"en train d'écrire…"},aiChatPanel:{description:"Un panneau d'assistant pour poser des questions sur votre schéma et vos données.",emptyTitle:"Posez une question sur vos données",emptyBody:"Posez une question sur votre schéma, vos tables ou vos métriques pour commencer.",composerPlaceholder:"Poser une question…",sendLabel:"Envoyer",pendingLabel:"Réflexion…",configureTitle:"Aucun fournisseur d'IA configuré",configureBody:"Ajoutez une clé Anthropic ou OpenAI — ou pointez Adminium vers votre propre point de terminaison — pour poser des questions sur votre schéma.",configureCtaLabel:"Configurer un fournisseur"},typingIndicator:{description:"Un avatar et une ligne en italique « en train d’écrire… », liée à un booléen actif par conversation.",label:"en train d’écrire…",emptyTitle:"Aucune saisie en cours",emptyBody:"L’état de saisie apparaîtra ici dès que la conversation sera active."},callWidget:{description:"Un appel entrant, audio ou vidéo : avatar de l’appelant, état de l’appel et actions pour accepter ou refuser.",voiceLabel:"Appel audio",videoLabel:"Appel vidéo",ringingLabel:"Sonnerie…",connectingLabel:"Connexion…",activeLabel:"En communication",endedLabel:"Appel terminé",acceptLabel:"Accepter",declineLabel:"Refuser",endLabel:"Raccrocher",emptyTitle:"Aucun appel en cours",emptyBody:"Un appel entrant apparaîtra ici."}},geo:{mapBubble:{description:"Une carte dont les marqueurs circulaires sont dimensionnés selon la métrique choisie, accompagnée d’un classement des principaux lieux.",emptyTitle:"Aucun lieu",emptyBody:"Les lignes comportant une latitude et une longitude apparaissent ici sous forme de marqueurs.",mapUnavailableLabel:"La carte n’a pas pu être chargée. Le classement présente les mêmes données.",regionsLabel:"Principales régions",metricLabel:"Métrique"},mapChoroplethGrid:{description:"Des tuiles de régions teintées selon la valeur — pour les tables comportant des codes de région mais pas de coordonnées.",emptyTitle:"Aucune région",emptyBody:"Les lignes comportant un code de région et une valeur numérique apparaissent ici sous forme de tuiles teintées.",legendLowLabel:"Faible",legendHighLabel:"Élevé"}},domain:{orgChart:{description:"L'arbre hiérarchique construit à partir de la référence au responsable d'une table de personnes, avec branches repliables.",emptyTitle:"Aucune structure hiérarchique",emptyBody:"L'organigramme apparaît dès que les lignes de personnes référencent un responsable.",reportsLabel:"Rattachements · {count}",a11yLabel:"Organigramme"},ganttChart:{description:"Barres de tâches sur un axe temporel, groupées par phase, avec avancement, jalons et repère du jour.",emptyTitle:"Rien de planifié",emptyBody:"Les tâches apparaissent ici dès qu'elles ont une date de début et de fin.",ungroupedLabel:"Tâches"},documentCanvas:{description:"Un canevas de document au style papier — facture, rapport ou e-mail — dont les blocs peuvent être sélectionnés, réordonnés et supprimés.",emptyTitle:"Ce document est vide",emptyBody:"Ajoutez un bloc depuis la palette pour commencer à composer le document.",addBlockLabel:"Ajouter un bloc",removeBlockLabel:"Supprimer le bloc",moveUpLabel:"Déplacer le bloc vers le haut",moveDownLabel:"Déplacer le bloc vers le bas",blockListLabel:"Blocs du document",billedToLabel:"Facturé à",issuedLabel:"Émis le",dueLabel:"Échéance"},blockTotalsSummary:{description:"Les totaux du document — sous-total, remise, taxe et total dû, recalculés à partir des lignes.",emptyTitle:"Pas encore de totaux",emptyBody:"Les totaux apparaissent dès que le document comporte des lignes.",subtotalLabel:"Sous-total",discountLabel:"Remise",taxLabel:"Taxe",totalLabel:"Total dû"},blockLineItems:{description:"Lignes modifiables de description, quantité et tarif qui alimentent les totaux du document.",emptyTitle:"Aucune ligne",emptyBody:"Ajoutez une ligne pour facturer une prestation sur ce document.",descHeader:"Description",qtyHeader:"Qté",rateHeader:"Tarif",amountHeader:"Montant"},blockKpiRow:{description:"Une rangée de tuiles de statistiques dont la variation est colorée selon son signe.",emptyTitle:"Aucun indicateur",emptyBody:"Les indicateurs apparaissent ici dès que le rapport contient des chiffres."},blockBarChart:{description:"Un mini-graphique à barres dans la couleur du document, dimensionné pour un bloc.",emptyTitle:"Aucune donnée à représenter",emptyBody:"Les barres apparaissent dès que le rapport contient une série."},blockLineChart:{description:"Un mini-graphique en courbe avec aire remplie facultative, dimensionné pour un bloc.",emptyTitle:"Aucune donnée à représenter",emptyBody:"La courbe apparaît dès que le rapport contient une série."},blockTwoColTable:{description:"Un tableau à deux colonnes avec une ligne d'en-tête stylisée et une colonne de valeurs en chasse fixe.",emptyTitle:"Aucune ligne",emptyBody:"Les lignes apparaissent ici dès que le rapport contient des valeurs."},blockTaxBreakdown:{description:"Lignes de taxe avec libellé, taux et montant, appliquées au sous-total du document.",emptyTitle:"Aucune ligne de taxe",emptyBody:"Les lignes de taxe apparaissent dès que le document comporte des taux."},blockMultiCurrency:{description:"Le total du document converti par devise aux taux indiqués.",emptyTitle:"Aucune conversion",emptyBody:"Les conversions apparaissent dès que le document indique des taux de change.",footnote:"Les taux sont indicatifs et peuvent différer au règlement."},blockPaymentHistory:{description:"Paiements passés avec date, moyen masqué, montant et pastille de statut.",emptyTitle:"Aucun paiement",emptyBody:"Les paiements liés à ce document apparaissent ici."},blockDiscountCodes:{description:"Codes de remise appliqués avec leur libellé et le montant crédité.",emptyTitle:"Aucune remise appliquée",emptyBody:"Les codes de remise appliqués à ce document apparaissent ici."},blockLoyaltyBanner:{description:"Une bannière de fidélité avec le solde de points, le niveau et les points gagnés sur cette commande.",emptyTitle:"Aucun solde de fidélité",emptyBody:"La bannière de fidélité apparaît dès que le client dispose de points.",balanceLabel:"{balance} pts · {tier}",earnedLabel:"+{earned} gagnés sur cette commande"},blockRecurringBanner:{description:"Une bannière annonçant la fréquence de facturation, la prochaine échéance et les cycles restants.",emptyTitle:"Non récurrent",emptyBody:"Cette bannière apparaît dès que le document suit un échéancier récurrent.",template:"Récurrent — {freq} · Prochain le {next} · {count} cycles"},blockQrPay:{description:"Une tuile à scanner pour payer, avec légende et montant dû.",emptyTitle:"Rien à payer",emptyBody:"Le code de paiement apparaît dès que le document comporte un montant dû.",amountLabel:"Montant dû"},blockDeliveryStepper:{description:"Étapes de livraison horizontales marquées comme faites, en cours ou à venir.",emptyTitle:"Aucune étape de livraison",emptyBody:"Les étapes apparaissent dès que la commande a un parcours de livraison."},blockSignature:{description:"Lignes de signature pour un nom et une fonction, avec la date de signature.",emptyTitle:"Aucune signature",emptyBody:"Les lignes de signature apparaissent dès que le document désigne un signataire.",namePlaceholder:"Nom complet",titlePlaceholder:"Fonction",dateLabel:"Date"},blockTermsCheckbox:{description:"Une case pour les conditions, avec libellé modifiable.",defaultLabel:"J'accepte les conditions générales"},blockApproval:{description:"Une carte d'approbateur avec pastille teintée selon le statut et actions facultatives d'approbation ou de rejet.",emptyTitle:"Aucun approbateur",emptyBody:"La carte d'approbation apparaît dès que le document désigne un approbateur.",approveLabel:"Approuver",rejectLabel:"Rejeter",pendingLabel:"En attente",approvedLabel:"Approuvé",rejectedLabel:"Rejeté"},blockAttachments:{description:"Fichiers joints avec leur nom et leur taille.",emptyTitle:"Aucune pièce jointe",emptyBody:"Les fichiers joints à ce document apparaissent ici."},blockLateFees:{description:"Un encadré d'avertissement indiquant les pénalités de retard et le délai de grâce.",emptyTitle:"Aucune pénalité de retard",emptyBody:"Cet encadré apparaît dès que le document définit une pénalité de retard.",template:"Une pénalité de retard de {rate} s'applique après {days} jours."},blockImagePlaceholder:{description:"Un cadre en pointillés tenant lieu d'image, avec une légende.",emptyTitle:"Aucune image",emptyBody:"Le cadre apparaît dès que le bloc comporte une légende."},blockContact:{description:"Lignes de contact pour un nom, une adresse e-mail et un numéro de téléphone.",emptyTitle:"Aucun contact",emptyBody:"Les coordonnées apparaissent dès que le document désigne un contact."},blockHighlightBox:{description:"Un encadré associant un libellé à une grande valeur en chasse fixe.",emptyTitle:"Rien à mettre en avant",emptyBody:"L'encadré apparaît dès que le bloc comporte une valeur."},starterTemplatePicker:{description:"Une grille de modèles prédéfinis avec vignettes générées ; en choisir un initialise un document complet.",emptyTitle:"Aucun modèle",emptyBody:"Définissez des modèles dans la configuration ou liez une table de modèles."},sloMonitorCard:{description:"Carte SLA par service avec statut, disponibilité par rapport à la cible, bande de disponibilité quotidienne, budget d'erreur et latence p95.",emptyTitle:"Aucun moniteur",emptyBody:"Liez une table de moniteurs avec une colonne de statut et de disponibilité."},uptimeSegmentBar:{description:"Bandes journalières de type page de statut, colorées selon le statut du jour, avec bascule 30/90 jours.",emptyTitle:"Aucun historique de disponibilité",emptyBody:"Les lignes de statut quotidien apparaissent ici sous forme de bande."},experimentVariantCompare:{description:"Barres de conversion par variante avec le gain face au témoin et un indicateur de significativité.",emptyTitle:"Aucune variante",emptyBody:"Liez une table de variantes d'expérience avec des chiffres de conversion."},creditCardTile:{description:"Un moyen de paiement enregistré sous forme de carte de marque avec numéro masqué, titulaire et expiration.",emptyTitle:"Aucun moyen de paiement",emptyBody:"Ajoutez une carte pour la voir ici."},planPricingCards:{description:"Paliers tarifaires avec bascule mensuel/annuel, listes de fonctionnalités et une offre mise en avant.",emptyTitle:"Aucune offre",emptyBody:"Liez une table d'offres avec un nom et un prix mensuel."},apiKeysPanel:{description:"Clés d'API avec badges d'environnement, valeurs masquées, portées, dernière utilisation et actions de copie, de renouvellement et de révocation.",emptyTitle:"Aucune clé d'API",emptyBody:"Créez une clé pour commencer à appeler l'API."},apiPlayground:{description:"Un compositeur de requête avec paramètres et volet de réponse. Il compose seulement et n'envoie jamais de vraie requête.",emptyTitle:"Aucun point de terminaison sélectionné",emptyBody:"Choisissez un point de terminaison pour composer une requête."},codeSnippetBlock:{description:"Un extrait de code copiable avec une puce de langage et des onglets optionnels par langage.",emptyTitle:"Aucun extrait",emptyBody:"Liez une colonne de code ou définissez un extrait statique dans la configuration."},webhookEndpointsList:{description:"Points de terminaison webhook avec leur événement, URL cible, dernier déclenchement et interrupteur d'activation.",emptyTitle:"Aucun point de terminaison",emptyBody:"Ajoutez un point de terminaison webhook pour recevoir les événements de table."},resourceApiCard:{description:"La surface d'API générée d'une table : nombre de lignes, badge de sécurité, puces de méthode et volume de requêtes.",emptyTitle:"Aucune ressource",emptyBody:"Liez une table pour afficher sa surface d'API générée."},liveTimer:{description:"Un chronomètre démarrer/arrêter pour une tâche ; l'arrêter enregistre une entrée de temps.",emptyTitle:"Aucun chronomètre",emptyBody:"Liez une ligne d'entrée de temps avec une tâche et une colonne de durée."},syncStatusCard:{description:"Identité de la connexion, latence, lignes synchronisées et planning de synchronisation, avec une action de synchronisation immédiate.",emptyTitle:"Aucune connexion",emptyBody:"Liez une ligne de connexion pour afficher son état de synchronisation."},ipAllowlistCard:{description:"Adresses IP de sortie fixes à autoriser dans un pare-feu, chacune avec un bouton de copie.",emptyTitle:"Aucune IP de sortie",emptyBody:"Les adresses de sortie apparaissent ici une fois la connexion provisionnée."},onboardingChecklist:{description:"Étapes de configuration avec estimations de durée et actions, au-dessus d'un anneau et d'une barre de progression recalculés en direct.",emptyTitle:"Rien à configurer",emptyBody:"Ajoutez des étapes d'intégration dans la configuration ou liez une table d'étapes."},testimonialCard:{description:"Une citation client avec avatar et attribution.",emptyTitle:"Aucun témoignage",emptyBody:"Liez une ligne de citation pour afficher un témoignage client."},trustBadges:{description:"Une ligne d'affirmations de conformité et de confiance séparées par des points.",emptyTitle:"Aucun badge",emptyBody:"Ajoutez des affirmations de conformité dans la configuration ou liez une table de badges."},policyList:{description:"Politiques de sécurité au niveau des lignes par table, avec leur commande, leur rôle et un interrupteur d'activation.",emptyTitle:"Aucune politique",emptyBody:"Cette table n'a pas encore de politiques de sécurité au niveau des lignes."}},media:{fileBrowser:{description:"Parcourez fichiers et dossiers sous forme de grille ou de liste, avec fil d'Ariane, icônes de type et favoris.",emptyTitle:"Ce dossier est vide",emptyBody:"Téléversez des fichiers ou créez un dossier pour commencer."},uploadDropzone:{description:"Une cible glisser-déposer pour téléverser des fichiers, avec contraintes de format et de taille.",dropTitle:"Déposez les fichiers à téléverser",browsePrefix:"ou",browseLabel:"parcourir"},uploadProgressList:{description:"Lignes par fichier avec barre de progression et statut ; pilote aussi les tâches de la file d'export.",emptyTitle:"Aucun téléversement en cours",emptyBody:"Les fichiers que vous téléversez afficheront ici leur progression."},attachmentList:{description:"Fichiers joints à un enregistrement, avec icônes de type, tailles et actions de téléchargement ou de suppression.",emptyTitle:"Aucune pièce jointe",emptyBody:"Les fichiers joints à cet enregistrement apparaîtront ici."},imageBoard:{description:"Une grille de moodboard avec emplacements d'images et légendes, pour les tables contenant des URL d'images.",emptyTitle:"Aucune image pour l'instant",emptyBody:"Les images de référence apparaîtront sur ce tableau."},linkList:{description:"Liens de référence avec titres et URL, ouverts dans un nouvel onglet.",emptyTitle:"Aucun lien pour l'instant",emptyBody:"Les liens de référence apparaîtront ici."},root:"Fichiers",breadcrumb:"Fil d'Ariane",gridView:"Vue en grille",listView:"Vue en liste",nameHeader:"Nom",sizeHeader:"Taille",modifiedHeader:"Modifié",star:"Favori",items:"éléments",done:"Terminé",failed:"Échec",queued:"En file d'attente",retry:"Réessayer",download:"Télécharger",cancel:"Annuler",delete:"Supprimer",remove:"Retirer",addImage:"Ajouter une image",caption:"Légende",addLink:"Ajouter un lien",linkTitlePlaceholder:"Titre",linkUrlPlaceholder:"https://…",add:"Ajouter"},forms:{modalWizard:{description:"Un formulaire de création en modale avec confirmation — le flux « nouvel enregistrement » standard.",trigger:"Créer",submit:"Créer",cancel:"Annuler",done:"Terminé",successTitle:"Enregistrement créé",successBody:"L’enregistrement a été sauvegardé.",required:"Ce champ est obligatoire."},drawerForm:{description:"Un panneau latéral de création ou d’édition pour les enregistrements à nombreux champs.",trigger:"Nouveau",submit:"Enregistrer",cancel:"Annuler"},stepper:{description:"Un indicateur d’étapes montrant l’avancement d’un parcours en plusieurs étapes.",a11yLabel:"Progression"},progressBar:{description:"Une barre de progression déterminée avec pourcentage.",label:"Progression"},otpInput:{description:"Un champ de saisie de code à usage unique.",label:"Code à usage unique"},chipInput:{description:"Une saisie de tags : puces supprimables et texte libre validé par Entrée.",remove:"Supprimer",placeholder:"Saisir puis appuyer sur Entrée…"},segmentedControl:{description:"Un sélecteur unique pour périodes, environnements et filtres.",a11yLabel:"Choisir une option"},filterChipBar:{description:"Des puces de filtre avec compteurs calculés en direct sur la liste filtrée.",all:"Tout",a11yLabel:"Filtrer",meta:"{shown} sur {total}"},toggleSwitchList:{description:"Une liste de réglages, chacun avec un interrupteur.",save:"Enregistrer",dirty:"Vous avez des modifications non enregistrées",emptyTitle:"Aucun réglage",emptyBody:"Les réglages apparaîtront ici une fois configurés."},optionCards:{description:"Une grille de cartes à choix unique pour sources, modèles et forfaits.",a11yLabel:"Choisir une option"},ruleBuilder:{description:"Un éditeur de conditions dont les règles deviennent un filtre — l’éditeur de segments.",add:"Ajouter une condition",remove:"Supprimer la condition",all:"TOUTES",any:"AU MOINS UNE",field:"Champ",operator:"Opérateur",value:"Valeur",valuePlaceholder:"Valeur…",emptyBody:"Aucune condition — ajoutez-en une pour définir ce segment."},flowBuilder:{description:"Un canevas vertical de workflow : étapes déclencheur, condition et action.",add:"Ajouter une étape",remove:"Supprimer l’étape",paletteTitle:"Ajouter une étape",stats:"{runs} exécutions · {rate} % de réussite",emptyBody:"Aucune étape — ajoutez un déclencheur pour démarrer ce workflow."},connectionStringField:{description:"Un champ de chaîne de connexion qui détecte le moteur de base de données à la saisie.",label:"Chaîne de connexion",helper:"postgres://user:motdepasse@hote:5432/base — mysql:// et sqlite: fonctionnent aussi.",quickFill:"Remplissage rapide :",host:"Hôte : {host}",invalidScheme:"Schéma de chaîne de connexion non reconnu.",incomplete:"Ajoutez un hôte et une base à la chaîne de connexion."},tableInclusionChecklist:{description:"Les tables à inclure, avec le nombre de lignes et les alertes de données personnelles.",pii:"DCP",highVolume:"volume élevé",a11yLabel:"Tables à inclure",emptyTitle:"Aucune table trouvée",emptyBody:"Connectez une base de données et ses tables apparaîtront ici."},columnMappingTable:{description:"Associe les colonnes d’un fichier importé aux champs d’une table.",skip:"Ne pas importer",sourceHeader:"Colonne source",sampleHeader:"Exemple",targetHeader:"Champ cible",emptyTitle:"Aucune colonne à associer",emptyBody:"Importez un fichier et ses colonnes apparaîtront ici."},validationIssuesList:{description:"Problèmes d’import et de validation, du plus grave au moins grave, avec le nombre de lignes.",emptyTitle:"Aucun problème détecté",emptyBody:"Tout est en ordre — vous pouvez importer."},exportBuilder:{description:"Configure un export de données : format, période et contenu.",format:"Format",from:"Du",to:"Au",groupBy:"Grouper par",includeCharts:"Inclure les graphiques",email:"M’envoyer l’export par e-mail",submit:"Exporter",running:"Préparation de votre export…",done:"Export prêt",failed:"L’export a échoué. Réessayez.",download:"Télécharger"},questionBuilder:{description:"Un éditeur de sondage : ajoutez des types de question et réordonnez-les.",paletteTitle:"Ajouter une question",add:"Ajouter une question",remove:"Supprimer la question",moveUp:"Monter",moveDown:"Descendre",required:"Obligatoire",questionPlaceholder:"Posez une question…",emptyTitle:"Aucune question",emptyBody:"Choisissez un type de question pour commencer votre sondage."},inlineEditableField:{description:"Une valeur modifiable d’un clic dans un document ou un canevas.",edit:"Modifier",save:"Enregistrer",cancel:"Annuler",empty:"Vide"},passwordStrengthMeter:{description:"Un indicateur en quatre segments de la robustesse du mot de passe.",label:"Robustesse du mot de passe",weak:"Faible",fair:"Moyen",good:"Bon",strong:"Fort"}},chrome:{sidebarNav:{description:"La barre de navigation groupée de l’application, avec compteurs en direct.",a11yLabel:"Navigation principale",emptyTitle:"Pas encore de navigation",emptyBody:"Les tables incluses apparaîtront ici une fois une connexion générée."},commandPalette:{description:"La palette ⌘K : rechercher actions, pages et enregistrements depuis n’importe où.",title:"Palette de commandes",placeholder:"Rechercher actions, pages et enregistrements…",navigate:"Naviguer",select:"Ouvrir",close:"Fermer",emptyTitle:"Aucun résultat",emptyBody:"Commencez à taper pour rechercher.",groupActions:"Actions",groupNavigate:"Naviguer",groupRecent:"Récents",groupPages:"Pages",groupMetrics:"Indicateurs",groupPeople:"Personnes",groupRecords:"Enregistrements"},globalSearch:{description:"Recherche sur toutes les entités, avec facettes par type et extraits.",placeholder:"Rechercher partout…",all:"Tout",summary:"{count} résultats pour « {query} »",emptyTitle:"Aucun résultat",emptyBody:"Essayez un autre terme de recherche."},breadcrumb:{description:"Le fil d’Ariane de l’enregistrement ou du dossier courant.",a11yLabel:"Fil d’Ariane"},tabBar:{description:"Des onglets qui changent de panneau ou naviguent, avec compteurs optionnels.",a11yLabel:"Onglets"},navCard:{description:"Une grille de cartes de liens pour les pages d’accueil et de hub.",emptyTitle:"Rien à afficher",emptyBody:"Les liens apparaîtront ici une fois les pages générées."},shortcutsPanel:{description:"L’aide-mémoire des raccourcis clavier.",footerHint:"Appuyez sur ? à tout moment",then:"puis",emptyTitle:"Aucun raccourci enregistré."},avatarStack:{description:"Des avatars superposés avec débordement « +N » et présence optionnelle.",online:"{count} en ligne"}},system:{stateHero:{description:"Un écran d’état pleine page pour 404, 500, hors ligne, accès refusé et maintenance.",notFoundTitle:"Cette page s’est perdue en route",notFoundBody:"La page recherchée a été déplacée, renommée, ou n’a jamais existé.",serverErrorTitle:"Quelque chose a cassé de notre côté",serverErrorBody:"L’erreur a été enregistrée et l’équipe notifiée. Réessayer fonctionne souvent.",offlineTitle:"Vous êtes hors ligne",offlineBody:"Vérifiez votre connexion — le tableau de bord se reconnecte automatiquement.",forbiddenTitle:"Vous n’avez pas accès",forbiddenBody:"Demandez à un administrateur de l’espace de travail de vous accorder l’accès.",maintenanceTitle:"Maintenance en cours",maintenanceBody:"Nous améliorons les choses. Cela prend généralement quelques minutes.",connErrorTitle:"Base de données injoignable",connErrorBody:"La connexion a été refusée ou a expiré. Vérifiez les paramètres de connexion.",backToDashboard:"Retour au tableau de bord",tryAgain:"Réessayer",retry:"Réessayer",testConnection:"Tester la connexion"},emptyState:{description:"Un panneau centré « rien ici pour l’instant » avec actions optionnelles."},statusPill:{description:"Un badge coloré pour une colonne enum — l’affichage de statut universel."},alertBanner:{description:"Un encart en ligne pour les alertes de quota, de gel et de planification.",dismiss:"Fermer"},statusBannerHero:{description:"Un bandeau de santé des services dont l’état dérive du pire service de la liste.",upTitle:"Tous les systèmes sont opérationnels",upBody:"Tous les services surveillés répondent normalement.",degradedTitle:"Performances dégradées",degradedBody:"Certains services sont plus lents que d’habitude. Nous investiguons.",downTitle:"Panne majeure",downBody:"Un ou plusieurs services sont indisponibles. Nous intervenons."},connectionStatus:{description:"Le résultat de connexion ou de test d’une connexion de base de données.",idle:"Non connecté",connecting:"Connexion…",connected:"Connecté",failed:"Échec de la connexion",test:"Tester"},autosaveIndicator:{description:"La pastille « non enregistré → enregistrement → enregistré » pour les documents en sauvegarde auto.",dirty:"Modifications non enregistrées",saving:"Enregistrement…",saved:"Toutes les modifications sont enregistrées",error:"Échec de l’enregistrement"},progressLogConsole:{description:"Une console de logs en flux avec barre de progression, pour les tâches longues.",a11yLabel:"Journal de progression",progressLabel:"Progression",emptyTitle:"Rien à signaler pour l’instant",emptyBody:"Les lignes de log apparaîtront au démarrage de la tâche."},diagnosticsReadout:{description:"Résultats des vérifications de connexion en lignes clé/valeur colorées, avec horodatage.",checkedAt:"Dernière vérification",host:"Hôte",dns:"DNS",tcp:"TCP",tls:"TLS",auth:"Authentification",latency:"Latence"}}},grid:{dragHandle:"Faire glisser pour déplacer {title}",resizeHandle:"Redimensionner {title}",a11y:{grabbed:"{title} saisi. Utilisez les touches fléchées pour déplacer, maintenez Maj pour redimensionner, Entrée pour enregistrer, Échap pour annuler.",moved:"{title} déplacé vers la colonne {col}, ligne {row}.",resized:"{title} redimensionné à {w} colonnes sur {h} lignes.",committed:"{title} placé à la colonne {col}, ligne {row}.",reverted:"{title} remis à sa position initiale."}}};export{e as default};
2
+ //# sourceMappingURL=ui-B-kZetor.js.map