@panoboard/core 1.1.5

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 (409) hide show
  1. package/dist/cache/cache.d.ts +11 -0
  2. package/dist/cache/cache.d.ts.map +1 -0
  3. package/dist/cache/cache.js +42 -0
  4. package/dist/cache/cache.js.map +1 -0
  5. package/dist/cache/client.d.ts +9 -0
  6. package/dist/cache/client.d.ts.map +1 -0
  7. package/dist/cache/client.js +63 -0
  8. package/dist/cache/client.js.map +1 -0
  9. package/dist/cache/index.d.ts +4 -0
  10. package/dist/cache/index.d.ts.map +1 -0
  11. package/dist/cache/index.js +17 -0
  12. package/dist/cache/index.js.map +1 -0
  13. package/dist/cache/keys.d.ts +2 -0
  14. package/dist/cache/keys.d.ts.map +1 -0
  15. package/dist/cache/keys.js +26 -0
  16. package/dist/cache/keys.js.map +1 -0
  17. package/dist/components/DashboardCard.d.ts +15 -0
  18. package/dist/components/DashboardCard.d.ts.map +1 -0
  19. package/dist/components/DashboardCard.js +80 -0
  20. package/dist/components/DashboardCard.js.map +1 -0
  21. package/dist/components/DashboardShell.d.ts +11 -0
  22. package/dist/components/DashboardShell.d.ts.map +1 -0
  23. package/dist/components/DashboardShell.js +115 -0
  24. package/dist/components/DashboardShell.js.map +1 -0
  25. package/dist/components/EmptyState.d.ts +6 -0
  26. package/dist/components/EmptyState.d.ts.map +1 -0
  27. package/dist/components/EmptyState.js +29 -0
  28. package/dist/components/EmptyState.js.map +1 -0
  29. package/dist/components/ErrorPage.d.ts +14 -0
  30. package/dist/components/ErrorPage.d.ts.map +1 -0
  31. package/dist/components/ErrorPage.js +132 -0
  32. package/dist/components/ErrorPage.js.map +1 -0
  33. package/dist/components/FilterBar.d.ts +8 -0
  34. package/dist/components/FilterBar.d.ts.map +1 -0
  35. package/dist/components/FilterBar.js +70 -0
  36. package/dist/components/FilterBar.js.map +1 -0
  37. package/dist/components/PanelGrid.d.ts +9 -0
  38. package/dist/components/PanelGrid.d.ts.map +1 -0
  39. package/dist/components/PanelGrid.js +26 -0
  40. package/dist/components/PanelGrid.js.map +1 -0
  41. package/dist/components/PanelWrapper.d.ts +8 -0
  42. package/dist/components/PanelWrapper.d.ts.map +1 -0
  43. package/dist/components/PanelWrapper.js +154 -0
  44. package/dist/components/PanelWrapper.js.map +1 -0
  45. package/dist/components/filters/BooleanFilter.d.ts +8 -0
  46. package/dist/components/filters/BooleanFilter.d.ts.map +1 -0
  47. package/dist/components/filters/BooleanFilter.js +36 -0
  48. package/dist/components/filters/BooleanFilter.js.map +1 -0
  49. package/dist/components/filters/CalendarGrid.d.ts +8 -0
  50. package/dist/components/filters/CalendarGrid.d.ts.map +1 -0
  51. package/dist/components/filters/CalendarGrid.js +159 -0
  52. package/dist/components/filters/CalendarGrid.js.map +1 -0
  53. package/dist/components/filters/DateRangeFilter.d.ts +10 -0
  54. package/dist/components/filters/DateRangeFilter.d.ts.map +1 -0
  55. package/dist/components/filters/DateRangeFilter.js +80 -0
  56. package/dist/components/filters/DateRangeFilter.js.map +1 -0
  57. package/dist/components/filters/FilterChips.d.ts +8 -0
  58. package/dist/components/filters/FilterChips.d.ts.map +1 -0
  59. package/dist/components/filters/FilterChips.js +94 -0
  60. package/dist/components/filters/FilterChips.js.map +1 -0
  61. package/dist/components/filters/MultiSelectFilter.d.ts +17 -0
  62. package/dist/components/filters/MultiSelectFilter.d.ts.map +1 -0
  63. package/dist/components/filters/MultiSelectFilter.js +80 -0
  64. package/dist/components/filters/MultiSelectFilter.js.map +1 -0
  65. package/dist/components/filters/NumberFilter.d.ts +10 -0
  66. package/dist/components/filters/NumberFilter.d.ts.map +1 -0
  67. package/dist/components/filters/NumberFilter.js +47 -0
  68. package/dist/components/filters/NumberFilter.js.map +1 -0
  69. package/dist/components/filters/SelectFilter.d.ts +16 -0
  70. package/dist/components/filters/SelectFilter.d.ts.map +1 -0
  71. package/dist/components/filters/SelectFilter.js +71 -0
  72. package/dist/components/filters/SelectFilter.js.map +1 -0
  73. package/dist/components/filters/TextFilter.d.ts +8 -0
  74. package/dist/components/filters/TextFilter.d.ts.map +1 -0
  75. package/dist/components/filters/TextFilter.js +57 -0
  76. package/dist/components/filters/TextFilter.js.map +1 -0
  77. package/dist/components/filters/useDropdown.d.ts +7 -0
  78. package/dist/components/filters/useDropdown.d.ts.map +1 -0
  79. package/dist/components/filters/useDropdown.js +41 -0
  80. package/dist/components/filters/useDropdown.js.map +1 -0
  81. package/dist/components/filters/useFilterUpdate.d.ts +2 -0
  82. package/dist/components/filters/useFilterUpdate.d.ts.map +1 -0
  83. package/dist/components/filters/useFilterUpdate.js +30 -0
  84. package/dist/components/filters/useFilterUpdate.js.map +1 -0
  85. package/dist/components/index.d.ts +59 -0
  86. package/dist/components/index.d.ts.map +1 -0
  87. package/dist/components/index.js +75 -0
  88. package/dist/components/index.js.map +1 -0
  89. package/dist/components/panels/AreaChart.d.ts +7 -0
  90. package/dist/components/panels/AreaChart.d.ts.map +1 -0
  91. package/dist/components/panels/AreaChart.js +88 -0
  92. package/dist/components/panels/AreaChart.js.map +1 -0
  93. package/dist/components/panels/BarChart.d.ts +7 -0
  94. package/dist/components/panels/BarChart.d.ts.map +1 -0
  95. package/dist/components/panels/BarChart.js +99 -0
  96. package/dist/components/panels/BarChart.js.map +1 -0
  97. package/dist/components/panels/BoxPlotChart.d.ts +7 -0
  98. package/dist/components/panels/BoxPlotChart.d.ts.map +1 -0
  99. package/dist/components/panels/BoxPlotChart.js +41 -0
  100. package/dist/components/panels/BoxPlotChart.js.map +1 -0
  101. package/dist/components/panels/BulletChart.d.ts +7 -0
  102. package/dist/components/panels/BulletChart.d.ts.map +1 -0
  103. package/dist/components/panels/BulletChart.js +46 -0
  104. package/dist/components/panels/BulletChart.js.map +1 -0
  105. package/dist/components/panels/BumpChart.d.ts +7 -0
  106. package/dist/components/panels/BumpChart.d.ts.map +1 -0
  107. package/dist/components/panels/BumpChart.js +38 -0
  108. package/dist/components/panels/BumpChart.js.map +1 -0
  109. package/dist/components/panels/CalendarHeatmap.d.ts +7 -0
  110. package/dist/components/panels/CalendarHeatmap.d.ts.map +1 -0
  111. package/dist/components/panels/CalendarHeatmap.js +41 -0
  112. package/dist/components/panels/CalendarHeatmap.js.map +1 -0
  113. package/dist/components/panels/ChartTooltip.d.ts +48 -0
  114. package/dist/components/panels/ChartTooltip.d.ts.map +1 -0
  115. package/dist/components/panels/ChartTooltip.js +129 -0
  116. package/dist/components/panels/ChartTooltip.js.map +1 -0
  117. package/dist/components/panels/DonutChart.d.ts +7 -0
  118. package/dist/components/panels/DonutChart.d.ts.map +1 -0
  119. package/dist/components/panels/DonutChart.js +40 -0
  120. package/dist/components/panels/DonutChart.js.map +1 -0
  121. package/dist/components/panels/FunnelChart.d.ts +7 -0
  122. package/dist/components/panels/FunnelChart.d.ts.map +1 -0
  123. package/dist/components/panels/FunnelChart.js +32 -0
  124. package/dist/components/panels/FunnelChart.js.map +1 -0
  125. package/dist/components/panels/HeatmapChart.d.ts +7 -0
  126. package/dist/components/panels/HeatmapChart.d.ts.map +1 -0
  127. package/dist/components/panels/HeatmapChart.js +41 -0
  128. package/dist/components/panels/HeatmapChart.js.map +1 -0
  129. package/dist/components/panels/IframePanel.d.ts +6 -0
  130. package/dist/components/panels/IframePanel.d.ts.map +1 -0
  131. package/dist/components/panels/IframePanel.js +5 -0
  132. package/dist/components/panels/IframePanel.js.map +1 -0
  133. package/dist/components/panels/ImagePanel.d.ts +7 -0
  134. package/dist/components/panels/ImagePanel.d.ts.map +1 -0
  135. package/dist/components/panels/ImagePanel.js +9 -0
  136. package/dist/components/panels/ImagePanel.js.map +1 -0
  137. package/dist/components/panels/LineChart.d.ts +7 -0
  138. package/dist/components/panels/LineChart.d.ts.map +1 -0
  139. package/dist/components/panels/LineChart.js +87 -0
  140. package/dist/components/panels/LineChart.js.map +1 -0
  141. package/dist/components/panels/ListPanel.d.ts +7 -0
  142. package/dist/components/panels/ListPanel.d.ts.map +1 -0
  143. package/dist/components/panels/ListPanel.js +24 -0
  144. package/dist/components/panels/ListPanel.js.map +1 -0
  145. package/dist/components/panels/MarkdownPanel.d.ts +7 -0
  146. package/dist/components/panels/MarkdownPanel.d.ts.map +1 -0
  147. package/dist/components/panels/MarkdownPanel.js +39 -0
  148. package/dist/components/panels/MarkdownPanel.js.map +1 -0
  149. package/dist/components/panels/MetricPanel.d.ts +7 -0
  150. package/dist/components/panels/MetricPanel.d.ts.map +1 -0
  151. package/dist/components/panels/MetricPanel.js +23 -0
  152. package/dist/components/panels/MetricPanel.js.map +1 -0
  153. package/dist/components/panels/PanelEmpty.d.ts +2 -0
  154. package/dist/components/panels/PanelEmpty.d.ts.map +1 -0
  155. package/dist/components/panels/PanelEmpty.js +27 -0
  156. package/dist/components/panels/PanelEmpty.js.map +1 -0
  157. package/dist/components/panels/PanelError.d.ts +7 -0
  158. package/dist/components/panels/PanelError.d.ts.map +1 -0
  159. package/dist/components/panels/PanelError.js +21 -0
  160. package/dist/components/panels/PanelError.js.map +1 -0
  161. package/dist/components/panels/PanelSkeleton.d.ts +6 -0
  162. package/dist/components/panels/PanelSkeleton.d.ts.map +1 -0
  163. package/dist/components/panels/PanelSkeleton.js +24 -0
  164. package/dist/components/panels/PanelSkeleton.js.map +1 -0
  165. package/dist/components/panels/PieChart.d.ts +7 -0
  166. package/dist/components/panels/PieChart.d.ts.map +1 -0
  167. package/dist/components/panels/PieChart.js +40 -0
  168. package/dist/components/panels/PieChart.js.map +1 -0
  169. package/dist/components/panels/RadarChart.d.ts +7 -0
  170. package/dist/components/panels/RadarChart.d.ts.map +1 -0
  171. package/dist/components/panels/RadarChart.js +50 -0
  172. package/dist/components/panels/RadarChart.js.map +1 -0
  173. package/dist/components/panels/RadialBarChart.d.ts +7 -0
  174. package/dist/components/panels/RadialBarChart.d.ts.map +1 -0
  175. package/dist/components/panels/RadialBarChart.js +49 -0
  176. package/dist/components/panels/RadialBarChart.js.map +1 -0
  177. package/dist/components/panels/SankeyChart.d.ts +7 -0
  178. package/dist/components/panels/SankeyChart.d.ts.map +1 -0
  179. package/dist/components/panels/SankeyChart.js +39 -0
  180. package/dist/components/panels/SankeyChart.js.map +1 -0
  181. package/dist/components/panels/ScatterChart.d.ts +7 -0
  182. package/dist/components/panels/ScatterChart.d.ts.map +1 -0
  183. package/dist/components/panels/ScatterChart.js +54 -0
  184. package/dist/components/panels/ScatterChart.js.map +1 -0
  185. package/dist/components/panels/StatPanel.d.ts +8 -0
  186. package/dist/components/panels/StatPanel.d.ts.map +1 -0
  187. package/dist/components/panels/StatPanel.js +40 -0
  188. package/dist/components/panels/StatPanel.js.map +1 -0
  189. package/dist/components/panels/StreamChart.d.ts +7 -0
  190. package/dist/components/panels/StreamChart.d.ts.map +1 -0
  191. package/dist/components/panels/StreamChart.js +54 -0
  192. package/dist/components/panels/StreamChart.js.map +1 -0
  193. package/dist/components/panels/SunburstChart.d.ts +7 -0
  194. package/dist/components/panels/SunburstChart.d.ts.map +1 -0
  195. package/dist/components/panels/SunburstChart.js +60 -0
  196. package/dist/components/panels/SunburstChart.js.map +1 -0
  197. package/dist/components/panels/TablePanel.d.ts +7 -0
  198. package/dist/components/panels/TablePanel.d.ts.map +1 -0
  199. package/dist/components/panels/TablePanel.js +79 -0
  200. package/dist/components/panels/TablePanel.js.map +1 -0
  201. package/dist/components/panels/TreemapChart.d.ts +7 -0
  202. package/dist/components/panels/TreemapChart.d.ts.map +1 -0
  203. package/dist/components/panels/TreemapChart.js +59 -0
  204. package/dist/components/panels/TreemapChart.js.map +1 -0
  205. package/dist/components/panels/VideoPanel.d.ts +15 -0
  206. package/dist/components/panels/VideoPanel.d.ts.map +1 -0
  207. package/dist/components/panels/VideoPanel.js +25 -0
  208. package/dist/components/panels/VideoPanel.js.map +1 -0
  209. package/dist/components/panels/WaffleChart.d.ts +7 -0
  210. package/dist/components/panels/WaffleChart.d.ts.map +1 -0
  211. package/dist/components/panels/WaffleChart.js +46 -0
  212. package/dist/components/panels/WaffleChart.js.map +1 -0
  213. package/dist/components/panels/index.d.ts +3 -0
  214. package/dist/components/panels/index.d.ts.map +1 -0
  215. package/dist/components/panels/index.js +60 -0
  216. package/dist/components/panels/index.js.map +1 -0
  217. package/dist/components/panels/nivo-theme.d.ts +95 -0
  218. package/dist/components/panels/nivo-theme.d.ts.map +1 -0
  219. package/dist/components/panels/nivo-theme.js +140 -0
  220. package/dist/components/panels/nivo-theme.js.map +1 -0
  221. package/dist/components/panels/semantic-colors.d.ts +7 -0
  222. package/dist/components/panels/semantic-colors.d.ts.map +1 -0
  223. package/dist/components/panels/semantic-colors.js +100 -0
  224. package/dist/components/panels/semantic-colors.js.map +1 -0
  225. package/dist/components/ui/Button.d.ts +9 -0
  226. package/dist/components/ui/Button.d.ts.map +1 -0
  227. package/dist/components/ui/Button.js +40 -0
  228. package/dist/components/ui/Button.js.map +1 -0
  229. package/dist/components/ui/Tabs.d.ts +11 -0
  230. package/dist/components/ui/Tabs.d.ts.map +1 -0
  231. package/dist/components/ui/Tabs.js +28 -0
  232. package/dist/components/ui/Tabs.js.map +1 -0
  233. package/dist/connectors/bigquery.d.ts +26 -0
  234. package/dist/connectors/bigquery.d.ts.map +1 -0
  235. package/dist/connectors/bigquery.js +113 -0
  236. package/dist/connectors/bigquery.js.map +1 -0
  237. package/dist/connectors/index.d.ts +17 -0
  238. package/dist/connectors/index.d.ts.map +1 -0
  239. package/dist/connectors/index.js +23 -0
  240. package/dist/connectors/index.js.map +1 -0
  241. package/dist/connectors/params.d.ts +15 -0
  242. package/dist/connectors/params.d.ts.map +1 -0
  243. package/dist/connectors/params.js +46 -0
  244. package/dist/connectors/params.js.map +1 -0
  245. package/dist/connectors/postgres.d.ts +29 -0
  246. package/dist/connectors/postgres.d.ts.map +1 -0
  247. package/dist/connectors/postgres.js +130 -0
  248. package/dist/connectors/postgres.js.map +1 -0
  249. package/dist/connectors/redshift-data.d.ts +25 -0
  250. package/dist/connectors/redshift-data.d.ts.map +1 -0
  251. package/dist/connectors/redshift-data.js +237 -0
  252. package/dist/connectors/redshift-data.js.map +1 -0
  253. package/dist/connectors/redshift.d.ts +29 -0
  254. package/dist/connectors/redshift.d.ts.map +1 -0
  255. package/dist/connectors/redshift.js +138 -0
  256. package/dist/connectors/redshift.js.map +1 -0
  257. package/dist/connectors/registry.d.ts +7 -0
  258. package/dist/connectors/registry.d.ts.map +1 -0
  259. package/dist/connectors/registry.js +30 -0
  260. package/dist/connectors/registry.js.map +1 -0
  261. package/dist/connectors/snowflake.d.ts +37 -0
  262. package/dist/connectors/snowflake.d.ts.map +1 -0
  263. package/dist/connectors/snowflake.js +181 -0
  264. package/dist/connectors/snowflake.js.map +1 -0
  265. package/dist/connectors/types.d.ts +41 -0
  266. package/dist/connectors/types.d.ts.map +1 -0
  267. package/dist/connectors/types.js +15 -0
  268. package/dist/connectors/types.js.map +1 -0
  269. package/dist/connectors/url-parsers.d.ts +13 -0
  270. package/dist/connectors/url-parsers.d.ts.map +1 -0
  271. package/dist/connectors/url-parsers.js +95 -0
  272. package/dist/connectors/url-parsers.js.map +1 -0
  273. package/dist/connectors/url.d.ts +36 -0
  274. package/dist/connectors/url.d.ts.map +1 -0
  275. package/dist/connectors/url.js +139 -0
  276. package/dist/connectors/url.js.map +1 -0
  277. package/dist/filters/cascade.d.ts +13 -0
  278. package/dist/filters/cascade.d.ts.map +1 -0
  279. package/dist/filters/cascade.js +32 -0
  280. package/dist/filters/cascade.js.map +1 -0
  281. package/dist/filters/daterange.d.ts +8 -0
  282. package/dist/filters/daterange.d.ts.map +1 -0
  283. package/dist/filters/daterange.js +119 -0
  284. package/dist/filters/daterange.js.map +1 -0
  285. package/dist/filters/index.d.ts +7 -0
  286. package/dist/filters/index.d.ts.map +1 -0
  287. package/dist/filters/index.js +18 -0
  288. package/dist/filters/index.js.map +1 -0
  289. package/dist/filters/resolver.d.ts +3 -0
  290. package/dist/filters/resolver.d.ts.map +1 -0
  291. package/dist/filters/resolver.js +122 -0
  292. package/dist/filters/resolver.js.map +1 -0
  293. package/dist/filters/validation.d.ts +17 -0
  294. package/dist/filters/validation.d.ts.map +1 -0
  295. package/dist/filters/validation.js +84 -0
  296. package/dist/filters/validation.js.map +1 -0
  297. package/dist/formats.d.ts +4 -0
  298. package/dist/formats.d.ts.map +1 -0
  299. package/dist/formats.js +127 -0
  300. package/dist/formats.js.map +1 -0
  301. package/dist/index.d.ts +13 -0
  302. package/dist/index.d.ts.map +1 -0
  303. package/dist/index.js +37 -0
  304. package/dist/index.js.map +1 -0
  305. package/dist/interfaces/auth-provider.d.ts +22 -0
  306. package/dist/interfaces/auth-provider.d.ts.map +1 -0
  307. package/dist/interfaces/auth-provider.js +15 -0
  308. package/dist/interfaces/auth-provider.js.map +1 -0
  309. package/dist/interfaces/dashboard-store.d.ts +17 -0
  310. package/dist/interfaces/dashboard-store.d.ts.map +1 -0
  311. package/dist/interfaces/dashboard-store.js +15 -0
  312. package/dist/interfaces/dashboard-store.js.map +1 -0
  313. package/dist/interfaces/datasource-store.d.ts +6 -0
  314. package/dist/interfaces/datasource-store.d.ts.map +1 -0
  315. package/dist/interfaces/datasource-store.js +15 -0
  316. package/dist/interfaces/datasource-store.js.map +1 -0
  317. package/dist/interfaces/index.d.ts +4 -0
  318. package/dist/interfaces/index.d.ts.map +1 -0
  319. package/dist/interfaces/index.js +15 -0
  320. package/dist/interfaces/index.js.map +1 -0
  321. package/dist/locale/context.d.ts +6 -0
  322. package/dist/locale/context.d.ts.map +1 -0
  323. package/dist/locale/context.js +23 -0
  324. package/dist/locale/context.js.map +1 -0
  325. package/dist/locale/index.d.ts +2 -0
  326. package/dist/locale/index.d.ts.map +1 -0
  327. package/dist/locale/index.js +15 -0
  328. package/dist/locale/index.js.map +1 -0
  329. package/dist/query/array-expansion.d.ts +5 -0
  330. package/dist/query/array-expansion.d.ts.map +1 -0
  331. package/dist/query/array-expansion.js +39 -0
  332. package/dist/query/array-expansion.js.map +1 -0
  333. package/dist/query/index.d.ts +8 -0
  334. package/dist/query/index.d.ts.map +1 -0
  335. package/dist/query/index.js +20 -0
  336. package/dist/query/index.js.map +1 -0
  337. package/dist/query/pipeline.d.ts +27 -0
  338. package/dist/query/pipeline.d.ts.map +1 -0
  339. package/dist/query/pipeline.js +49 -0
  340. package/dist/query/pipeline.js.map +1 -0
  341. package/dist/query/strategy/http.d.ts +7 -0
  342. package/dist/query/strategy/http.d.ts.map +1 -0
  343. package/dist/query/strategy/http.js +26 -0
  344. package/dist/query/strategy/http.js.map +1 -0
  345. package/dist/query/strategy/index.d.ts +4 -0
  346. package/dist/query/strategy/index.d.ts.map +1 -0
  347. package/dist/query/strategy/index.js +32 -0
  348. package/dist/query/strategy/index.js.map +1 -0
  349. package/dist/query/strategy/sql.d.ts +7 -0
  350. package/dist/query/strategy/sql.d.ts.map +1 -0
  351. package/dist/query/strategy/sql.js +40 -0
  352. package/dist/query/strategy/sql.js.map +1 -0
  353. package/dist/query/strategy/types.d.ts +6 -0
  354. package/dist/query/strategy/types.d.ts.map +1 -0
  355. package/dist/query/strategy/types.js +15 -0
  356. package/dist/query/strategy/types.js.map +1 -0
  357. package/dist/query/template.d.ts +7 -0
  358. package/dist/query/template.d.ts.map +1 -0
  359. package/dist/query/template.js +36 -0
  360. package/dist/query/template.js.map +1 -0
  361. package/dist/schemas/config.d.ts +74 -0
  362. package/dist/schemas/config.d.ts.map +1 -0
  363. package/dist/schemas/config.js +129 -0
  364. package/dist/schemas/config.js.map +1 -0
  365. package/dist/schemas/dashboard.d.ts +716 -0
  366. package/dist/schemas/dashboard.d.ts.map +1 -0
  367. package/dist/schemas/dashboard.js +314 -0
  368. package/dist/schemas/dashboard.js.map +1 -0
  369. package/dist/schemas/datasource.d.ts +252 -0
  370. package/dist/schemas/datasource.d.ts.map +1 -0
  371. package/dist/schemas/datasource.js +186 -0
  372. package/dist/schemas/datasource.js.map +1 -0
  373. package/dist/schemas/index.d.ts +5 -0
  374. package/dist/schemas/index.d.ts.map +1 -0
  375. package/dist/schemas/index.js +18 -0
  376. package/dist/schemas/index.js.map +1 -0
  377. package/dist/schemas/theme.d.ts +36 -0
  378. package/dist/schemas/theme.d.ts.map +1 -0
  379. package/dist/schemas/theme.js +48 -0
  380. package/dist/schemas/theme.js.map +1 -0
  381. package/dist/startup/index.d.ts +3 -0
  382. package/dist/startup/index.d.ts.map +1 -0
  383. package/dist/startup/index.js +15 -0
  384. package/dist/startup/index.js.map +1 -0
  385. package/dist/startup/sql-lint.d.ts +13 -0
  386. package/dist/startup/sql-lint.d.ts.map +1 -0
  387. package/dist/startup/sql-lint.js +86 -0
  388. package/dist/startup/sql-lint.js.map +1 -0
  389. package/dist/theme/builtin.d.ts +5 -0
  390. package/dist/theme/builtin.d.ts.map +1 -0
  391. package/dist/theme/builtin.js +102 -0
  392. package/dist/theme/builtin.js.map +1 -0
  393. package/dist/theme/context.d.ts +7 -0
  394. package/dist/theme/context.d.ts.map +1 -0
  395. package/dist/theme/context.js +26 -0
  396. package/dist/theme/context.js.map +1 -0
  397. package/dist/theme/index.d.ts +3 -0
  398. package/dist/theme/index.d.ts.map +1 -0
  399. package/dist/theme/index.js +16 -0
  400. package/dist/theme/index.js.map +1 -0
  401. package/dist/theme/loader-export.d.ts +2 -0
  402. package/dist/theme/loader-export.d.ts.map +1 -0
  403. package/dist/theme/loader-export.js +15 -0
  404. package/dist/theme/loader-export.js.map +1 -0
  405. package/dist/theme/loader.d.ts +11 -0
  406. package/dist/theme/loader.d.ts.map +1 -0
  407. package/dist/theme/loader.js +60 -0
  408. package/dist/theme/loader.js.map +1 -0
  409. package/package.json +148 -0
@@ -0,0 +1,32 @@
1
+ import { jsx as _jsx } from "react/jsx-runtime";
2
+ // Copyright 2026 Mataki Labs LLC
3
+ //
4
+ // Licensed under the Business Source License 1.1 (the "License");
5
+ // you may not use this file except in compliance with the License.
6
+ // You may obtain a copy of the License at
7
+ //
8
+ // https://github.com/panoboard/panoboard/blob/main/LICENSE
9
+ //
10
+ // Unless required by applicable law or agreed to in writing, software
11
+ // distributed under the License is distributed on an "AS IS" BASIS,
12
+ // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13
+ // See the License for the specific language governing permissions and
14
+ // limitations under the License.
15
+ import { ResponsiveFunnel } from "@nivo/funnel";
16
+ import { buildNivoTheme, getChartPalette } from "./nivo-theme";
17
+ import { useTheme } from "../../theme/context";
18
+ export function FunnelChart({ data, config }) {
19
+ const theme = useTheme();
20
+ const nivoTheme = buildNivoTheme(theme);
21
+ const palette = getChartPalette(theme);
22
+ const idKey = config.id ?? config.x ?? "id";
23
+ const valueKey = config.value ?? config.y ?? "value";
24
+ const labelKey = config.label ?? idKey;
25
+ const chartData = data.map((row) => ({
26
+ id: String(row[idKey]),
27
+ value: Number(row[valueKey]) || 0,
28
+ label: String(row[labelKey]),
29
+ }));
30
+ return (_jsx("div", { style: { height: "100%" }, children: _jsx(ResponsiveFunnel, { data: chartData, colors: palette, theme: nivoTheme, margin: { top: 16, right: 16, bottom: 16, left: 16 }, valueFormat: ">-.4s", interpolation: "smooth", spacing: 4, shapeBlending: 0.66 }) }));
31
+ }
32
+ //# sourceMappingURL=FunnelChart.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"FunnelChart.js","sourceRoot":"","sources":["../../../src/components/panels/FunnelChart.tsx"],"names":[],"mappings":";AAAA,iCAAiC;AACjC,EAAE;AACF,kEAAkE;AAClE,mEAAmE;AACnE,0CAA0C;AAC1C,EAAE;AACF,+DAA+D;AAC/D,EAAE;AACF,sEAAsE;AACtE,oEAAoE;AACpE,2EAA2E;AAC3E,sEAAsE;AACtE,iCAAiC;AAEjC,OAAO,EAAE,gBAAgB,EAAE,MAAM,cAAc,CAAC;AAChD,OAAO,EAAE,cAAc,EAAE,eAAe,EAAE,MAAM,cAAc,CAAC;AAC/D,OAAO,EAAE,QAAQ,EAAE,MAAM,qBAAqB,CAAC;AAO/C,MAAM,UAAU,WAAW,CAAC,EAAE,IAAI,EAAE,MAAM,EAAmB;IAC3D,MAAM,KAAK,GAAG,QAAQ,EAAE,CAAC;IACzB,MAAM,SAAS,GAAG,cAAc,CAAC,KAAK,CAAC,CAAC;IACxC,MAAM,OAAO,GAAG,eAAe,CAAC,KAAK,CAAC,CAAC;IAEvC,MAAM,KAAK,GAAW,MAAM,CAAC,EAAE,IAAI,MAAM,CAAC,CAAC,IAAI,IAAI,CAAC;IACpD,MAAM,QAAQ,GAAW,MAAM,CAAC,KAAK,IAAI,MAAM,CAAC,CAAC,IAAI,OAAO,CAAC;IAC7D,MAAM,QAAQ,GAAW,MAAM,CAAC,KAAK,IAAI,KAAK,CAAC;IAE/C,MAAM,SAAS,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC;QACnC,EAAE,EAAE,MAAM,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;QACtB,KAAK,EAAE,MAAM,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC,IAAI,CAAC;QACjC,KAAK,EAAE,MAAM,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;KAC7B,CAAC,CAAC,CAAC;IAEJ,OAAO,CACL,cAAK,KAAK,EAAE,EAAE,MAAM,EAAE,MAAM,EAAE,YAC5B,KAAC,gBAAgB,IACf,IAAI,EAAE,SAAS,EACf,MAAM,EAAE,OAAO,EACf,KAAK,EAAE,SAAS,EAChB,MAAM,EAAE,EAAE,GAAG,EAAE,EAAE,EAAE,KAAK,EAAE,EAAE,EAAE,MAAM,EAAE,EAAE,EAAE,IAAI,EAAE,EAAE,EAAE,EACpD,WAAW,EAAC,OAAO,EACnB,aAAa,EAAC,QAAQ,EACtB,OAAO,EAAE,CAAC,EACV,aAAa,EAAE,IAAI,GACnB,GACE,CACP,CAAC;AACJ,CAAC"}
@@ -0,0 +1,7 @@
1
+ interface ChartPanelProps {
2
+ data: Record<string, unknown>[];
3
+ config: any;
4
+ }
5
+ export declare function HeatmapChart({ data, config }: ChartPanelProps): import("react/jsx-runtime").JSX.Element;
6
+ export {};
7
+ //# sourceMappingURL=HeatmapChart.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"HeatmapChart.d.ts","sourceRoot":"","sources":["../../../src/components/panels/HeatmapChart.tsx"],"names":[],"mappings":"AAkBA,UAAU,eAAe;IACvB,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE,CAAC;IAChC,MAAM,EAAE,GAAG,CAAC;CACb;AAED,wBAAgB,YAAY,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,EAAE,eAAe,2CAqC7D"}
@@ -0,0 +1,41 @@
1
+ import { jsx as _jsx } from "react/jsx-runtime";
2
+ // Copyright 2026 Mataki Labs LLC
3
+ //
4
+ // Licensed under the Business Source License 1.1 (the "License");
5
+ // you may not use this file except in compliance with the License.
6
+ // You may obtain a copy of the License at
7
+ //
8
+ // https://github.com/panoboard/panoboard/blob/main/LICENSE
9
+ //
10
+ // Unless required by applicable law or agreed to in writing, software
11
+ // distributed under the License is distributed on an "AS IS" BASIS,
12
+ // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13
+ // See the License for the specific language governing permissions and
14
+ // limitations under the License.
15
+ import { ResponsiveHeatMap } from "@nivo/heatmap";
16
+ import { buildNivoTheme } from "./nivo-theme";
17
+ import { useTheme } from "../../theme/context";
18
+ export function HeatmapChart({ data, config }) {
19
+ const theme = useTheme();
20
+ const nivoTheme = buildNivoTheme(theme);
21
+ const xKey = config.x ?? "x";
22
+ const yKey = config.y ?? "y";
23
+ const valueKey = config.value ?? "value";
24
+ // Build heatmap data: group by y (rows), x values become columns
25
+ const rowMap = new Map();
26
+ const xValues = new Set();
27
+ for (const row of data) {
28
+ const rowId = String(row[yKey]);
29
+ const colId = String(row[xKey]);
30
+ xValues.add(colId);
31
+ if (!rowMap.has(rowId))
32
+ rowMap.set(rowId, {});
33
+ rowMap.get(rowId)[colId] = Number(row[valueKey]) || 0;
34
+ }
35
+ const chartData = Array.from(rowMap.entries()).map(([id, cols]) => ({
36
+ id,
37
+ data: Array.from(xValues).map((x) => ({ x, y: cols[x] ?? 0 })),
38
+ }));
39
+ return (_jsx("div", { style: { height: "100%" }, children: _jsx(ResponsiveHeatMap, { data: chartData, theme: nivoTheme, margin: { top: 16, right: 16, bottom: 48, left: 80 }, axisBottom: { tickSize: 4, tickPadding: 4, tickRotation: -30 }, axisLeft: { tickSize: 4, tickPadding: 4 }, colors: { type: "sequential", scheme: "blues" } }) }));
40
+ }
41
+ //# sourceMappingURL=HeatmapChart.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"HeatmapChart.js","sourceRoot":"","sources":["../../../src/components/panels/HeatmapChart.tsx"],"names":[],"mappings":";AAAA,iCAAiC;AACjC,EAAE;AACF,kEAAkE;AAClE,mEAAmE;AACnE,0CAA0C;AAC1C,EAAE;AACF,+DAA+D;AAC/D,EAAE;AACF,sEAAsE;AACtE,oEAAoE;AACpE,2EAA2E;AAC3E,sEAAsE;AACtE,iCAAiC;AAEjC,OAAO,EAAE,iBAAiB,EAAE,MAAM,eAAe,CAAC;AAClD,OAAO,EAAE,cAAc,EAAE,MAAM,cAAc,CAAC;AAC9C,OAAO,EAAE,QAAQ,EAAE,MAAM,qBAAqB,CAAC;AAO/C,MAAM,UAAU,YAAY,CAAC,EAAE,IAAI,EAAE,MAAM,EAAmB;IAC5D,MAAM,KAAK,GAAG,QAAQ,EAAE,CAAC;IACzB,MAAM,SAAS,GAAG,cAAc,CAAC,KAAK,CAAC,CAAC;IAExC,MAAM,IAAI,GAAW,MAAM,CAAC,CAAC,IAAI,GAAG,CAAC;IACrC,MAAM,IAAI,GAAW,MAAM,CAAC,CAAC,IAAI,GAAG,CAAC;IACrC,MAAM,QAAQ,GAAW,MAAM,CAAC,KAAK,IAAI,OAAO,CAAC;IAEjD,iEAAiE;IACjE,MAAM,MAAM,GAAG,IAAI,GAAG,EAAkC,CAAC;IACzD,MAAM,OAAO,GAAG,IAAI,GAAG,EAAU,CAAC;IAElC,KAAK,MAAM,GAAG,IAAI,IAAI,EAAE,CAAC;QACvB,MAAM,KAAK,GAAG,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC;QAChC,MAAM,KAAK,GAAG,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC;QAChC,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;QACnB,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,KAAK,CAAC;YAAE,MAAM,CAAC,GAAG,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC;QAC9C,MAAM,CAAC,GAAG,CAAC,KAAK,CAAE,CAAC,KAAK,CAAC,GAAG,MAAM,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC,IAAI,CAAC,CAAC;IACzD,CAAC;IAED,MAAM,SAAS,GAAG,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,OAAO,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,IAAI,CAAC,EAAE,EAAE,CAAC,CAAC;QAClE,EAAE;QACF,IAAI,EAAE,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;KAC/D,CAAC,CAAC,CAAC;IAEJ,OAAO,CACL,cAAK,KAAK,EAAE,EAAE,MAAM,EAAE,MAAM,EAAE,YAC5B,KAAC,iBAAiB,IAChB,IAAI,EAAE,SAAS,EACf,KAAK,EAAE,SAAS,EAChB,MAAM,EAAE,EAAE,GAAG,EAAE,EAAE,EAAE,KAAK,EAAE,EAAE,EAAE,MAAM,EAAE,EAAE,EAAE,IAAI,EAAE,EAAE,EAAE,EACpD,UAAU,EAAE,EAAE,QAAQ,EAAE,CAAC,EAAE,WAAW,EAAE,CAAC,EAAE,YAAY,EAAE,CAAC,EAAE,EAAE,EAC9D,QAAQ,EAAE,EAAE,QAAQ,EAAE,CAAC,EAAE,WAAW,EAAE,CAAC,EAAE,EACzC,MAAM,EAAE,EAAE,IAAI,EAAE,YAAY,EAAE,MAAM,EAAE,OAAO,EAAE,GAC/C,GACE,CACP,CAAC;AACJ,CAAC"}
@@ -0,0 +1,6 @@
1
+ interface IframePanelProps {
2
+ panel: any;
3
+ }
4
+ export declare function IframePanel({ panel }: IframePanelProps): import("react/jsx-runtime").JSX.Element;
5
+ export {};
6
+ //# sourceMappingURL=IframePanel.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"IframePanel.d.ts","sourceRoot":"","sources":["../../../src/components/panels/IframePanel.tsx"],"names":[],"mappings":"AAcA,UAAU,gBAAgB;IACxB,KAAK,EAAE,GAAG,CAAC;CACZ;AAED,wBAAgB,WAAW,CAAC,EAAE,KAAK,EAAE,EAAE,gBAAgB,2CAStD"}
@@ -0,0 +1,5 @@
1
+ import { jsx as _jsx } from "react/jsx-runtime";
2
+ export function IframePanel({ panel }) {
3
+ return (_jsx("iframe", { src: panel.url, title: panel.title, sandbox: "allow-scripts allow-same-origin", className: "w-full h-full border-0 rounded-lg" }));
4
+ }
5
+ //# sourceMappingURL=IframePanel.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"IframePanel.js","sourceRoot":"","sources":["../../../src/components/panels/IframePanel.tsx"],"names":[],"mappings":";AAkBA,MAAM,UAAU,WAAW,CAAC,EAAE,KAAK,EAAoB;IACrD,OAAO,CACL,iBACE,GAAG,EAAE,KAAK,CAAC,GAAG,EACd,KAAK,EAAE,KAAK,CAAC,KAAK,EAClB,OAAO,EAAC,iCAAiC,EACzC,SAAS,EAAC,mCAAmC,GAC7C,CACH,CAAC;AACJ,CAAC"}
@@ -0,0 +1,7 @@
1
+ interface ImagePanelProps {
2
+ panel: any;
3
+ data: any;
4
+ }
5
+ export declare function ImagePanel({ panel, data }: ImagePanelProps): import("react/jsx-runtime").JSX.Element;
6
+ export {};
7
+ //# sourceMappingURL=ImagePanel.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ImagePanel.d.ts","sourceRoot":"","sources":["../../../src/components/panels/ImagePanel.tsx"],"names":[],"mappings":"AAcA,UAAU,eAAe;IACvB,KAAK,EAAE,GAAG,CAAC;IACX,IAAI,EAAE,GAAG,CAAC;CACX;AAED,wBAAgB,UAAU,CAAC,EAAE,KAAK,EAAE,IAAI,EAAE,EAAE,eAAe,2CAgB1D"}
@@ -0,0 +1,9 @@
1
+ import { jsx as _jsx } from "react/jsx-runtime";
2
+ export function ImagePanel({ panel, data }) {
3
+ const config = panel.image ?? {};
4
+ const src = data?.rows?.[0]?.[config.src] ?? config.src;
5
+ const alt = data?.rows?.[0]?.[config.alt] ?? config.alt ?? panel.title;
6
+ const fit = config.fit ?? "contain";
7
+ return (_jsx("div", { className: "h-full flex items-center justify-center", children: _jsx("img", { src: src, alt: alt, className: "max-h-full", style: { objectFit: fit } }) }));
8
+ }
9
+ //# sourceMappingURL=ImagePanel.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ImagePanel.js","sourceRoot":"","sources":["../../../src/components/panels/ImagePanel.tsx"],"names":[],"mappings":";AAmBA,MAAM,UAAU,UAAU,CAAC,EAAE,KAAK,EAAE,IAAI,EAAmB;IACzD,MAAM,MAAM,GAAG,KAAK,CAAC,KAAK,IAAI,EAAE,CAAC;IACjC,MAAM,GAAG,GAAG,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,MAAM,CAAC,GAAG,CAAC,IAAI,MAAM,CAAC,GAAG,CAAC;IACxD,MAAM,GAAG,GAAG,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,MAAM,CAAC,GAAG,CAAC,IAAI,MAAM,CAAC,GAAG,IAAI,KAAK,CAAC,KAAK,CAAC;IACvE,MAAM,GAAG,GAAG,MAAM,CAAC,GAAG,IAAI,SAAS,CAAC;IAEpC,OAAO,CACL,cAAK,SAAS,EAAC,yCAAyC,YACtD,cACE,GAAG,EAAE,GAAG,EACR,GAAG,EAAE,GAAG,EACR,SAAS,EAAC,YAAY,EACtB,KAAK,EAAE,EAAE,SAAS,EAAE,GAAG,EAAE,GACzB,GACE,CACP,CAAC;AACJ,CAAC"}
@@ -0,0 +1,7 @@
1
+ interface ChartPanelProps {
2
+ data: Record<string, unknown>[];
3
+ config: Record<string, unknown>;
4
+ }
5
+ export declare function LineChart({ data, config }: ChartPanelProps): import("react/jsx-runtime").JSX.Element;
6
+ export {};
7
+ //# sourceMappingURL=LineChart.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"LineChart.d.ts","sourceRoot":"","sources":["../../../src/components/panels/LineChart.tsx"],"names":[],"mappings":"AAsBA,UAAU,eAAe;IACvB,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE,CAAC;IAChC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CACjC;AAiCD,wBAAgB,SAAS,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,EAAE,eAAe,2CA6E1D"}
@@ -0,0 +1,87 @@
1
+ import { jsx as _jsx } from "react/jsx-runtime";
2
+ // Copyright 2026 Mataki Labs LLC
3
+ //
4
+ // Licensed under the Business Source License 1.1 (the "License");
5
+ // you may not use this file except in compliance with the License.
6
+ // You may obtain a copy of the License at
7
+ //
8
+ // https://github.com/panoboard/panoboard/blob/main/LICENSE
9
+ //
10
+ // Unless required by applicable law or agreed to in writing, software
11
+ // distributed under the License is distributed on an "AS IS" BASIS,
12
+ // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13
+ // See the License for the specific language governing permissions and
14
+ // limitations under the License.
15
+ import { ResponsiveLine } from "@nivo/line";
16
+ import { buildNivoTheme, getChartPalette } from "./nivo-theme";
17
+ import { useTheme } from "../../theme/context";
18
+ import { ChartTooltip } from "./ChartTooltip";
19
+ import { formatValue, formatValueShort } from "../../formats";
20
+ import { useLocale } from "../../locale/context";
21
+ function buildLineData(data, xKey, yKey, seriesKey) {
22
+ if (seriesKey) {
23
+ const seriesMap = new Map();
24
+ for (const row of data) {
25
+ const id = String(row[seriesKey]);
26
+ if (!seriesMap.has(id))
27
+ seriesMap.set(id, []);
28
+ seriesMap
29
+ .get(id)
30
+ .push({ x: row[xKey], y: Number(row[yKey]) || 0 });
31
+ }
32
+ return Array.from(seriesMap.entries()).map(([id, points]) => ({
33
+ id,
34
+ data: points,
35
+ }));
36
+ }
37
+ return [
38
+ {
39
+ id: yKey,
40
+ data: data.map((row) => ({
41
+ x: row[xKey],
42
+ y: Number(row[yKey]) || 0,
43
+ })),
44
+ },
45
+ ];
46
+ }
47
+ export function LineChart({ data, config }) {
48
+ const theme = useTheme();
49
+ const nivoTheme = buildNivoTheme(theme);
50
+ const palette = getChartPalette(theme);
51
+ const xKey = config.x ?? "x";
52
+ const yKey = config.y ?? "y";
53
+ const yFormat = config.y_format;
54
+ const locale = useLocale();
55
+ const chartData = buildLineData(data, xKey, yKey, config.series);
56
+ const fmt = (v) => yFormat
57
+ ? formatValue(v, yFormat, locale)
58
+ : v.toLocaleString(locale, { maximumFractionDigits: 2 });
59
+ return (_jsx("div", { style: { height: "100%" }, children: _jsx(ResponsiveLine, { data: chartData, colors: config.color ? [config.color] : palette, theme: nivoTheme, margin: {
60
+ top: 16,
61
+ right: 16,
62
+ bottom: chartData.length > 1 ? 72 : 48,
63
+ left: 56,
64
+ }, xScale: { type: "point" }, yScale: { type: "linear", stacked: false }, axisBottom: { tickSize: 4, tickPadding: 4, tickRotation: -30 }, axisLeft: {
65
+ tickSize: 4,
66
+ tickPadding: 4,
67
+ format: (v) => yFormat
68
+ ? formatValueShort(v, yFormat, locale)
69
+ : Number(v).toLocaleString(locale),
70
+ }, pointSize: 6, pointBorderWidth: 2, pointBorderColor: { from: "serieColor" }, useMesh: true, enableCrosshair: true, tooltip: ({ point }) => {
71
+ const formatted = fmt(Number(point.data.y));
72
+ return (_jsx(ChartTooltip, { label: String(point.data.xFormatted), value: `${point.seriesId}: ${formatted}`, color: point.color }));
73
+ }, legends: chartData.length > 1
74
+ ? [
75
+ {
76
+ anchor: "bottom",
77
+ direction: "row",
78
+ translateY: 56,
79
+ itemWidth: 100,
80
+ itemHeight: 20,
81
+ symbolSize: 10,
82
+ symbolShape: "circle",
83
+ },
84
+ ]
85
+ : [] }) }));
86
+ }
87
+ //# sourceMappingURL=LineChart.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"LineChart.js","sourceRoot":"","sources":["../../../src/components/panels/LineChart.tsx"],"names":[],"mappings":"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"}
@@ -0,0 +1,7 @@
1
+ interface ListPanelProps {
2
+ panel: any;
3
+ data: any;
4
+ }
5
+ export declare function ListPanel({ panel, data }: ListPanelProps): import("react/jsx-runtime").JSX.Element;
6
+ export {};
7
+ //# sourceMappingURL=ListPanel.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ListPanel.d.ts","sourceRoot":"","sources":["../../../src/components/panels/ListPanel.tsx"],"names":[],"mappings":"AAiBA,UAAU,cAAc;IACtB,KAAK,EAAE,GAAG,CAAC;IACX,IAAI,EAAE,GAAG,CAAC;CACX;AAED,wBAAgB,SAAS,CAAC,EAAE,KAAK,EAAE,IAAI,EAAE,EAAE,cAAc,2CAwCxD"}
@@ -0,0 +1,24 @@
1
+ import { jsxs as _jsxs, jsx as _jsx } from "react/jsx-runtime";
2
+ // Copyright 2026 Mataki Labs LLC
3
+ //
4
+ // Licensed under the Business Source License 1.1 (the "License");
5
+ // you may not use this file except in compliance with the License.
6
+ // You may obtain a copy of the License at
7
+ //
8
+ // https://github.com/panoboard/panoboard/blob/main/LICENSE
9
+ //
10
+ // Unless required by applicable law or agreed to in writing, software
11
+ // distributed under the License is distributed on an "AS IS" BASIS,
12
+ // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13
+ // See the License for the specific language governing permissions and
14
+ // limitations under the License.
15
+ import { formatValue } from "../../formats";
16
+ import { useTheme } from "../../theme/context";
17
+ export function ListPanel({ panel, data }) {
18
+ const theme = useTheme();
19
+ const config = panel.list ?? {};
20
+ return (_jsx("div", { className: "space-y-2", children: data.rows.map((row, i) => (_jsxs("div", { className: `flex items-center justify-between py-1.5 border-b ${theme.surfaces.panelBorder} last:border-0`, children: [_jsxs("div", { className: "flex items-center gap-3", children: [config.numbered && (_jsxs("span", { className: `${theme.typography.muted} text-sm w-6`, children: [i + 1, "."] })), _jsxs("div", { children: [_jsx("div", { className: `${theme.filters.text} text-sm`, children: row[config.label] }), config.subtitle && (_jsx("div", { className: `${theme.typography.muted} text-xs`, children: row[config.subtitle] }))] })] }), config.value && (_jsx("div", { className: `${theme.filters.text} text-sm font-medium tabular-nums`, children: config.value_format
21
+ ? formatValue(row[config.value], config.value_format)
22
+ : String(row[config.value]) }))] }, i))) }));
23
+ }
24
+ //# sourceMappingURL=ListPanel.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ListPanel.js","sourceRoot":"","sources":["../../../src/components/panels/ListPanel.tsx"],"names":[],"mappings":";AAAA,iCAAiC;AACjC,EAAE;AACF,kEAAkE;AAClE,mEAAmE;AACnE,0CAA0C;AAC1C,EAAE;AACF,+DAA+D;AAC/D,EAAE;AACF,sEAAsE;AACtE,oEAAoE;AACpE,2EAA2E;AAC3E,sEAAsE;AACtE,iCAAiC;AAEjC,OAAO,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AAC5C,OAAO,EAAE,QAAQ,EAAE,MAAM,qBAAqB,CAAC;AAO/C,MAAM,UAAU,SAAS,CAAC,EAAE,KAAK,EAAE,IAAI,EAAkB;IACvD,MAAM,KAAK,GAAG,QAAQ,EAAE,CAAC;IACzB,MAAM,MAAM,GAAG,KAAK,CAAC,IAAI,IAAI,EAAE,CAAC;IAChC,OAAO,CACL,cAAK,SAAS,EAAC,WAAW,YACvB,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,GAAQ,EAAE,CAAS,EAAE,EAAE,CAAC,CACtC,eAEE,SAAS,EAAE,qDAAqD,KAAK,CAAC,QAAQ,CAAC,WAAW,gBAAgB,aAE1G,eAAK,SAAS,EAAC,yBAAyB,aACrC,MAAM,CAAC,QAAQ,IAAI,CAClB,gBAAM,SAAS,EAAE,GAAG,KAAK,CAAC,UAAU,CAAC,KAAK,cAAc,aACrD,CAAC,GAAG,CAAC,SACD,CACR,EACD,0BACE,cAAK,SAAS,EAAE,GAAG,KAAK,CAAC,OAAO,CAAC,IAAI,UAAU,YAC5C,GAAG,CAAC,MAAM,CAAC,KAAK,CAAC,GACd,EACL,MAAM,CAAC,QAAQ,IAAI,CAClB,cAAK,SAAS,EAAE,GAAG,KAAK,CAAC,UAAU,CAAC,KAAK,UAAU,YAChD,GAAG,CAAC,MAAM,CAAC,QAAQ,CAAC,GACjB,CACP,IACG,IACF,EACL,MAAM,CAAC,KAAK,IAAI,CACf,cACE,SAAS,EAAE,GAAG,KAAK,CAAC,OAAO,CAAC,IAAI,mCAAmC,YAElE,MAAM,CAAC,YAAY;wBAClB,CAAC,CAAC,WAAW,CAAC,GAAG,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,MAAM,CAAC,YAAY,CAAC;wBACrD,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,GACzB,CACP,KA5BI,CAAC,CA6BF,CACP,CAAC,GACE,CACP,CAAC;AACJ,CAAC"}
@@ -0,0 +1,7 @@
1
+ interface MarkdownPanelProps {
2
+ panel: any;
3
+ data: any;
4
+ }
5
+ export declare function MarkdownPanel({ panel, data }: MarkdownPanelProps): import("react/jsx-runtime").JSX.Element;
6
+ export {};
7
+ //# sourceMappingURL=MarkdownPanel.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"MarkdownPanel.d.ts","sourceRoot":"","sources":["../../../src/components/panels/MarkdownPanel.tsx"],"names":[],"mappings":"AAgBA,UAAU,kBAAkB;IAC1B,KAAK,EAAE,GAAG,CAAC;IACX,IAAI,EAAE,GAAG,CAAC;CACX;AAYD,wBAAgB,aAAa,CAAC,EAAE,KAAK,EAAE,IAAI,EAAE,EAAE,kBAAkB,2CAwBhE"}
@@ -0,0 +1,39 @@
1
+ import { jsx as _jsx } from "react/jsx-runtime";
2
+ // Copyright 2026 Mataki Labs LLC
3
+ //
4
+ // Licensed under the Business Source License 1.1 (the "License");
5
+ // you may not use this file except in compliance with the License.
6
+ // You may obtain a copy of the License at
7
+ //
8
+ // https://github.com/panoboard/panoboard/blob/main/LICENSE
9
+ //
10
+ // Unless required by applicable law or agreed to in writing, software
11
+ // distributed under the License is distributed on an "AS IS" BASIS,
12
+ // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13
+ // See the License for the specific language governing permissions and
14
+ // limitations under the License.
15
+ import { marked } from "marked";
16
+ function sanitize(html) {
17
+ // DOMPurify only works in browser — on server, content is dev-controlled YAML so skip sanitization
18
+ if (typeof window !== "undefined") {
19
+ // eslint-disable-next-line @typescript-eslint/no-require-imports
20
+ const DOMPurify = require("dompurify");
21
+ return DOMPurify.sanitize(html);
22
+ }
23
+ return html;
24
+ }
25
+ export function MarkdownPanel({ panel, data }) {
26
+ let content = panel.content ?? "";
27
+ // Interpolate {{ rows[0].col }} and {{ config.timezone }}
28
+ if (data?.rows?.[0]) {
29
+ const row = data.rows[0];
30
+ content = content.replace(/\{\{\s*rows\[0\]\.(\w+)\s*\}\}/g, (_, key) => String(row[key] ?? ""));
31
+ }
32
+ content = content.replace(/\{\{\s*config\.timezone\s*\}\}/g, panel._timezone ?? "UTC");
33
+ const rawHtml = marked.parse(content);
34
+ const html = sanitize(rawHtml);
35
+ return (_jsx("div", { className: "prose prose-invert prose-sm max-w-none",
36
+ // Content is sanitized via DOMPurify in browser; server content is dev-controlled YAML
37
+ dangerouslySetInnerHTML: { __html: html } }));
38
+ }
39
+ //# sourceMappingURL=MarkdownPanel.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"MarkdownPanel.js","sourceRoot":"","sources":["../../../src/components/panels/MarkdownPanel.tsx"],"names":[],"mappings":";AAAA,iCAAiC;AACjC,EAAE;AACF,kEAAkE;AAClE,mEAAmE;AACnE,0CAA0C;AAC1C,EAAE;AACF,+DAA+D;AAC/D,EAAE;AACF,sEAAsE;AACtE,oEAAoE;AACpE,2EAA2E;AAC3E,sEAAsE;AACtE,iCAAiC;AAEjC,OAAO,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAC;AAOhC,SAAS,QAAQ,CAAC,IAAY;IAC5B,mGAAmG;IACnG,IAAI,OAAO,MAAM,KAAK,WAAW,EAAE,CAAC;QAClC,iEAAiE;QACjE,MAAM,SAAS,GAAG,OAAO,CAAC,WAAW,CAAC,CAAC;QACvC,OAAO,SAAS,CAAC,QAAQ,CAAC,IAAI,CAAW,CAAC;IAC5C,CAAC;IACD,OAAO,IAAI,CAAC;AACd,CAAC;AAED,MAAM,UAAU,aAAa,CAAC,EAAE,KAAK,EAAE,IAAI,EAAsB;IAC/D,IAAI,OAAO,GAAG,KAAK,CAAC,OAAO,IAAI,EAAE,CAAC;IAClC,0DAA0D;IAC1D,IAAI,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;QACpB,MAAM,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QACzB,OAAO,GAAG,OAAO,CAAC,OAAO,CACvB,iCAAiC,EACjC,CAAC,CAAS,EAAE,GAAW,EAAE,EAAE,CAAC,MAAM,CAAC,GAAG,CAAC,GAAG,CAAC,IAAI,EAAE,CAAC,CACnD,CAAC;IACJ,CAAC;IACD,OAAO,GAAG,OAAO,CAAC,OAAO,CACvB,iCAAiC,EACjC,KAAK,CAAC,SAAS,IAAI,KAAK,CACzB,CAAC;IAEF,MAAM,OAAO,GAAG,MAAM,CAAC,KAAK,CAAC,OAAO,CAAW,CAAC;IAChD,MAAM,IAAI,GAAG,QAAQ,CAAC,OAAO,CAAC,CAAC;IAC/B,OAAO,CACL,cACE,SAAS,EAAC,wCAAwC;QAClD,uFAAuF;QACvF,uBAAuB,EAAE,EAAE,MAAM,EAAE,IAAI,EAAE,GACzC,CACH,CAAC;AACJ,CAAC"}
@@ -0,0 +1,7 @@
1
+ interface MetricPanelProps {
2
+ panel: any;
3
+ data: any;
4
+ }
5
+ export declare function MetricPanel({ panel, data }: MetricPanelProps): import("react/jsx-runtime").JSX.Element;
6
+ export {};
7
+ //# sourceMappingURL=MetricPanel.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"MetricPanel.d.ts","sourceRoot":"","sources":["../../../src/components/panels/MetricPanel.tsx"],"names":[],"mappings":"AAiBA,UAAU,gBAAgB;IACxB,KAAK,EAAE,GAAG,CAAC;IACX,IAAI,EAAE,GAAG,CAAC;CACX;AAED,wBAAgB,WAAW,CAAC,EAAE,KAAK,EAAE,IAAI,EAAE,EAAE,gBAAgB,2CAuB5D"}
@@ -0,0 +1,23 @@
1
+ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
+ // Copyright 2026 Mataki Labs LLC
3
+ //
4
+ // Licensed under the Business Source License 1.1 (the "License");
5
+ // you may not use this file except in compliance with the License.
6
+ // You may obtain a copy of the License at
7
+ //
8
+ // https://github.com/panoboard/panoboard/blob/main/LICENSE
9
+ //
10
+ // Unless required by applicable law or agreed to in writing, software
11
+ // distributed under the License is distributed on an "AS IS" BASIS,
12
+ // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13
+ // See the License for the specific language governing permissions and
14
+ // limitations under the License.
15
+ import { formatValue } from "../../formats";
16
+ import { useTheme } from "../../theme/context";
17
+ export function MetricPanel({ panel, data }) {
18
+ const theme = useTheme();
19
+ const values = panel.metric?.values ?? [];
20
+ const row = data.rows[0] ?? {};
21
+ return (_jsx("div", { className: "flex items-center justify-between h-full gap-4", children: values.map((v) => (_jsxs("div", { className: "flex-1 text-center", children: [_jsx("div", { className: `${theme.typography.label} uppercase tracking-wide mb-1`, children: v.label }), _jsx("div", { className: `text-2xl font-bold ${theme.typography.value} tabular-nums`, children: formatValue(row[v.key], v.format ?? "number") })] }, v.key))) }));
22
+ }
23
+ //# sourceMappingURL=MetricPanel.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"MetricPanel.js","sourceRoot":"","sources":["../../../src/components/panels/MetricPanel.tsx"],"names":[],"mappings":";AAAA,iCAAiC;AACjC,EAAE;AACF,kEAAkE;AAClE,mEAAmE;AACnE,0CAA0C;AAC1C,EAAE;AACF,+DAA+D;AAC/D,EAAE;AACF,sEAAsE;AACtE,oEAAoE;AACpE,2EAA2E;AAC3E,sEAAsE;AACtE,iCAAiC;AAEjC,OAAO,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AAC5C,OAAO,EAAE,QAAQ,EAAE,MAAM,qBAAqB,CAAC;AAO/C,MAAM,UAAU,WAAW,CAAC,EAAE,KAAK,EAAE,IAAI,EAAoB;IAC3D,MAAM,KAAK,GAAG,QAAQ,EAAE,CAAC;IACzB,MAAM,MAAM,GAAG,KAAK,CAAC,MAAM,EAAE,MAAM,IAAI,EAAE,CAAC;IAC1C,MAAM,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC;IAE/B,OAAO,CACL,cAAK,SAAS,EAAC,gDAAgD,YAC5D,MAAM,CAAC,GAAG,CAAC,CAAC,CAAM,EAAE,EAAE,CAAC,CACtB,eAAiB,SAAS,EAAC,oBAAoB,aAC7C,cACE,SAAS,EAAE,GAAG,KAAK,CAAC,UAAU,CAAC,KAAK,+BAA+B,YAElE,CAAC,CAAC,KAAK,GACJ,EACN,cACE,SAAS,EAAE,sBAAsB,KAAK,CAAC,UAAU,CAAC,KAAK,eAAe,YAErE,WAAW,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,MAAM,IAAI,QAAQ,CAAC,GAC1C,KAVE,CAAC,CAAC,GAAG,CAWT,CACP,CAAC,GACE,CACP,CAAC;AACJ,CAAC"}
@@ -0,0 +1,2 @@
1
+ export declare function PanelEmpty(): import("react/jsx-runtime").JSX.Element;
2
+ //# sourceMappingURL=PanelEmpty.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"PanelEmpty.d.ts","sourceRoot":"","sources":["../../../src/components/panels/PanelEmpty.tsx"],"names":[],"mappings":"AAiBA,wBAAgB,UAAU,4CA6BzB"}
@@ -0,0 +1,27 @@
1
+ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
+ // Copyright 2026 Mataki Labs LLC
3
+ //
4
+ // Licensed under the Business Source License 1.1 (the "License");
5
+ // you may not use this file except in compliance with the License.
6
+ // You may obtain a copy of the License at
7
+ //
8
+ // https://github.com/panoboard/panoboard/blob/main/LICENSE
9
+ //
10
+ // Unless required by applicable law or agreed to in writing, software
11
+ // distributed under the License is distributed on an "AS IS" BASIS,
12
+ // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13
+ // See the License for the specific language governing permissions and
14
+ // limitations under the License.
15
+ import { FileText } from "lucide-react";
16
+ import { useTheme } from "../../theme/context";
17
+ export function PanelEmpty() {
18
+ const theme = useTheme();
19
+ function scrollToFilters() {
20
+ const filterBar = document.querySelector("[data-filter-bar]");
21
+ if (filterBar) {
22
+ filterBar.scrollIntoView({ behavior: "smooth", block: "center" });
23
+ }
24
+ }
25
+ return (_jsxs("div", { className: "flex flex-col items-center justify-center h-full gap-3 text-center", children: [_jsx(FileText, { className: `w-12 h-12 ${theme.typography.muted}` }), _jsx("h4", { className: `text-base font-bold ${theme.typography.panelTitle}`, children: "No data found" }), _jsx("p", { className: `${theme.typography.muted}`, children: "There is no information available for the selected period." }), _jsx("div", { className: "flex items-center gap-3 mt-2", children: _jsx("button", { onClick: scrollToFilters, className: `${theme.typography.muted} text-sm hover:opacity-80 transition`, children: "Change filters" }) })] }));
26
+ }
27
+ //# sourceMappingURL=PanelEmpty.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"PanelEmpty.js","sourceRoot":"","sources":["../../../src/components/panels/PanelEmpty.tsx"],"names":[],"mappings":";AAAA,iCAAiC;AACjC,EAAE;AACF,kEAAkE;AAClE,mEAAmE;AACnE,0CAA0C;AAC1C,EAAE;AACF,+DAA+D;AAC/D,EAAE;AACF,sEAAsE;AACtE,oEAAoE;AACpE,2EAA2E;AAC3E,sEAAsE;AACtE,iCAAiC;AAEjC,OAAO,EAAE,QAAQ,EAAE,MAAM,cAAc,CAAC;AACxC,OAAO,EAAE,QAAQ,EAAE,MAAM,qBAAqB,CAAC;AAE/C,MAAM,UAAU,UAAU;IACxB,MAAM,KAAK,GAAG,QAAQ,EAAE,CAAC;IAEzB,SAAS,eAAe;QACtB,MAAM,SAAS,GAAG,QAAQ,CAAC,aAAa,CAAC,mBAAmB,CAAC,CAAC;QAC9D,IAAI,SAAS,EAAE,CAAC;YACd,SAAS,CAAC,cAAc,CAAC,EAAE,QAAQ,EAAE,QAAQ,EAAE,KAAK,EAAE,QAAQ,EAAE,CAAC,CAAC;QACpE,CAAC;IACH,CAAC;IAED,OAAO,CACL,eAAK,SAAS,EAAC,oEAAoE,aACjF,KAAC,QAAQ,IAAC,SAAS,EAAE,aAAa,KAAK,CAAC,UAAU,CAAC,KAAK,EAAE,GAAI,EAC9D,aAAI,SAAS,EAAE,uBAAuB,KAAK,CAAC,UAAU,CAAC,UAAU,EAAE,8BAE9D,EACL,YAAG,SAAS,EAAE,GAAG,KAAK,CAAC,UAAU,CAAC,KAAK,EAAE,2EAErC,EACJ,cAAK,SAAS,EAAC,8BAA8B,YAC3C,iBACE,OAAO,EAAE,eAAe,EACxB,SAAS,EAAE,GAAG,KAAK,CAAC,UAAU,CAAC,KAAK,sCAAsC,+BAGnE,GACL,IACF,CACP,CAAC;AACJ,CAAC"}
@@ -0,0 +1,7 @@
1
+ interface PanelErrorProps {
2
+ message: string;
3
+ onRetry: () => void;
4
+ }
5
+ export declare function PanelError({ message, onRetry }: PanelErrorProps): import("react/jsx-runtime").JSX.Element;
6
+ export {};
7
+ //# sourceMappingURL=PanelError.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"PanelError.d.ts","sourceRoot":"","sources":["../../../src/components/panels/PanelError.tsx"],"names":[],"mappings":"AAiBA,UAAU,eAAe;IACvB,OAAO,EAAE,MAAM,CAAC;IAChB,OAAO,EAAE,MAAM,IAAI,CAAC;CACrB;AAED,wBAAgB,UAAU,CAAC,EAAE,OAAO,EAAE,OAAO,EAAE,EAAE,eAAe,2CAmC/D"}
@@ -0,0 +1,21 @@
1
+ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
+ // Copyright 2026 Mataki Labs LLC
3
+ //
4
+ // Licensed under the Business Source License 1.1 (the "License");
5
+ // you may not use this file except in compliance with the License.
6
+ // You may obtain a copy of the License at
7
+ //
8
+ // https://github.com/panoboard/panoboard/blob/main/LICENSE
9
+ //
10
+ // Unless required by applicable law or agreed to in writing, software
11
+ // distributed under the License is distributed on an "AS IS" BASIS,
12
+ // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13
+ // See the License for the specific language governing permissions and
14
+ // limitations under the License.
15
+ import { Zap, RefreshCw, AlertTriangle } from "lucide-react";
16
+ import { useTheme } from "../../theme/context";
17
+ export function PanelError({ message, onRetry }) {
18
+ const theme = useTheme();
19
+ return (_jsxs("div", { className: "flex flex-col items-center justify-center h-full gap-3 text-center", children: [_jsx(Zap, { className: `w-12 h-12 ${theme.status.negative}` }), _jsx("h4", { className: `text-lg font-bold ${theme.typography.panelTitle}`, children: "Query Failed" }), _jsx("p", { className: `${theme.typography.muted}`, children: "We encountered an issue while fetching the requested data. Please check your connection or try again later." }), _jsxs("button", { onClick: onRetry, className: "bg-indigo-500 hover:bg-indigo-600 text-white rounded-lg px-4 py-2 text-sm font-medium transition flex items-center gap-2", children: [_jsx(RefreshCw, { className: "w-4 h-4" }), "Retry Request"] }), _jsxs("div", { className: `${theme.surfaces.panelHeader} border ${theme.surfaces.panelBorder} rounded-lg p-4 w-full max-w-sm mt-2 text-left`, children: [_jsxs("div", { className: "flex items-center gap-1.5 mb-2", children: [_jsx(AlertTriangle, { className: "w-3.5 h-3.5 text-red-400" }), _jsx("span", { className: "text-red-400 text-xs uppercase tracking-wide font-bold", children: "Technical Details" })] }), _jsx("pre", { className: "font-mono text-xs text-red-300/80 whitespace-pre-wrap wrap-break-word", children: message })] })] }));
20
+ }
21
+ //# sourceMappingURL=PanelError.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"PanelError.js","sourceRoot":"","sources":["../../../src/components/panels/PanelError.tsx"],"names":[],"mappings":";AAAA,iCAAiC;AACjC,EAAE;AACF,kEAAkE;AAClE,mEAAmE;AACnE,0CAA0C;AAC1C,EAAE;AACF,+DAA+D;AAC/D,EAAE;AACF,sEAAsE;AACtE,oEAAoE;AACpE,2EAA2E;AAC3E,sEAAsE;AACtE,iCAAiC;AAEjC,OAAO,EAAE,GAAG,EAAE,SAAS,EAAE,aAAa,EAAE,MAAM,cAAc,CAAC;AAC7D,OAAO,EAAE,QAAQ,EAAE,MAAM,qBAAqB,CAAC;AAO/C,MAAM,UAAU,UAAU,CAAC,EAAE,OAAO,EAAE,OAAO,EAAmB;IAC9D,MAAM,KAAK,GAAG,QAAQ,EAAE,CAAC;IAEzB,OAAO,CACL,eAAK,SAAS,EAAC,oEAAoE,aACjF,KAAC,GAAG,IAAC,SAAS,EAAE,aAAa,KAAK,CAAC,MAAM,CAAC,QAAQ,EAAE,GAAI,EACxD,aAAI,SAAS,EAAE,qBAAqB,KAAK,CAAC,UAAU,CAAC,UAAU,EAAE,6BAE5D,EACL,YAAG,SAAS,EAAE,GAAG,KAAK,CAAC,UAAU,CAAC,KAAK,EAAE,4HAGrC,EACJ,kBACE,OAAO,EAAE,OAAO,EAChB,SAAS,EAAC,0HAA0H,aAEpI,KAAC,SAAS,IAAC,SAAS,EAAC,SAAS,GAAG,qBAE1B,EACT,eACE,SAAS,EAAE,GAAG,KAAK,CAAC,QAAQ,CAAC,WAAW,WAAW,KAAK,CAAC,QAAQ,CAAC,WAAW,gDAAgD,aAE7H,eAAK,SAAS,EAAC,gCAAgC,aAC7C,KAAC,aAAa,IAAC,SAAS,EAAC,0BAA0B,GAAG,EACtD,eAAM,SAAS,EAAC,wDAAwD,kCAEjE,IACH,EACN,cAAK,SAAS,EAAC,uEAAuE,YACnF,OAAO,GACJ,IACF,IACF,CACP,CAAC;AACJ,CAAC"}
@@ -0,0 +1,6 @@
1
+ interface PanelSkeletonProps {
2
+ type?: string;
3
+ }
4
+ export declare function PanelSkeleton({ type }: PanelSkeletonProps): import("react/jsx-runtime").JSX.Element;
5
+ export {};
6
+ //# sourceMappingURL=PanelSkeleton.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"PanelSkeleton.d.ts","sourceRoot":"","sources":["../../../src/components/panels/PanelSkeleton.tsx"],"names":[],"mappings":"AAgBA,UAAU,kBAAkB;IAC1B,IAAI,CAAC,EAAE,MAAM,CAAC;CACf;AAED,wBAAgB,aAAa,CAAC,EAAE,IAAI,EAAE,EAAE,kBAAkB,2CAqBzD"}
@@ -0,0 +1,24 @@
1
+ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
+ // Copyright 2026 Mataki Labs LLC
3
+ //
4
+ // Licensed under the Business Source License 1.1 (the "License");
5
+ // you may not use this file except in compliance with the License.
6
+ // You may obtain a copy of the License at
7
+ //
8
+ // https://github.com/panoboard/panoboard/blob/main/LICENSE
9
+ //
10
+ // Unless required by applicable law or agreed to in writing, software
11
+ // distributed under the License is distributed on an "AS IS" BASIS,
12
+ // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13
+ // See the License for the specific language governing permissions and
14
+ // limitations under the License.
15
+ import { useTheme } from "../../theme/context";
16
+ export function PanelSkeleton({ type }) {
17
+ const theme = useTheme();
18
+ if (type === "stat") {
19
+ return (_jsxs("div", { className: "animate-pulse flex flex-col justify-center h-full gap-3", children: [_jsx("div", { className: `h-3 w-24 ${theme.surfaces.panelHeader} rounded` }), _jsx("div", { className: `h-8 w-32 ${theme.surfaces.panelHeader} rounded` })] }));
20
+ }
21
+ // Chart / table skeleton (default)
22
+ return (_jsxs("div", { className: "animate-pulse flex items-end gap-3 h-full pt-4", children: [_jsx("div", { className: `h-16 w-full ${theme.surfaces.panelHeader} rounded` }), _jsx("div", { className: `h-24 w-full ${theme.surfaces.panelHeader} rounded` }), _jsx("div", { className: `h-12 w-full ${theme.surfaces.panelHeader} rounded` }), _jsx("div", { className: `h-20 w-full ${theme.surfaces.panelHeader} rounded` })] }));
23
+ }
24
+ //# sourceMappingURL=PanelSkeleton.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"PanelSkeleton.js","sourceRoot":"","sources":["../../../src/components/panels/PanelSkeleton.tsx"],"names":[],"mappings":";AAAA,iCAAiC;AACjC,EAAE;AACF,kEAAkE;AAClE,mEAAmE;AACnE,0CAA0C;AAC1C,EAAE;AACF,+DAA+D;AAC/D,EAAE;AACF,sEAAsE;AACtE,oEAAoE;AACpE,2EAA2E;AAC3E,sEAAsE;AACtE,iCAAiC;AAEjC,OAAO,EAAE,QAAQ,EAAE,MAAM,qBAAqB,CAAC;AAM/C,MAAM,UAAU,aAAa,CAAC,EAAE,IAAI,EAAsB;IACxD,MAAM,KAAK,GAAG,QAAQ,EAAE,CAAC;IAEzB,IAAI,IAAI,KAAK,MAAM,EAAE,CAAC;QACpB,OAAO,CACL,eAAK,SAAS,EAAC,yDAAyD,aACtE,cAAK,SAAS,EAAE,YAAY,KAAK,CAAC,QAAQ,CAAC,WAAW,UAAU,GAAI,EACpE,cAAK,SAAS,EAAE,YAAY,KAAK,CAAC,QAAQ,CAAC,WAAW,UAAU,GAAI,IAChE,CACP,CAAC;IACJ,CAAC;IAED,mCAAmC;IACnC,OAAO,CACL,eAAK,SAAS,EAAC,gDAAgD,aAC7D,cAAK,SAAS,EAAE,eAAe,KAAK,CAAC,QAAQ,CAAC,WAAW,UAAU,GAAI,EACvE,cAAK,SAAS,EAAE,eAAe,KAAK,CAAC,QAAQ,CAAC,WAAW,UAAU,GAAI,EACvE,cAAK,SAAS,EAAE,eAAe,KAAK,CAAC,QAAQ,CAAC,WAAW,UAAU,GAAI,EACvE,cAAK,SAAS,EAAE,eAAe,KAAK,CAAC,QAAQ,CAAC,WAAW,UAAU,GAAI,IACnE,CACP,CAAC;AACJ,CAAC"}
@@ -0,0 +1,7 @@
1
+ interface ChartPanelProps {
2
+ data: Record<string, unknown>[];
3
+ config: Record<string, unknown>;
4
+ }
5
+ export declare function PieChart({ data, config }: ChartPanelProps): import("react/jsx-runtime").JSX.Element;
6
+ export {};
7
+ //# sourceMappingURL=PieChart.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"PieChart.d.ts","sourceRoot":"","sources":["../../../src/components/panels/PieChart.tsx"],"names":[],"mappings":"AAqBA,UAAU,eAAe;IACvB,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE,CAAC;IAChC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CACjC;AAED,wBAAgB,QAAQ,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,EAAE,eAAe,2CA+CzD"}
@@ -0,0 +1,40 @@
1
+ import { jsx as _jsx } from "react/jsx-runtime";
2
+ // Copyright 2026 Mataki Labs LLC
3
+ //
4
+ // Licensed under the Business Source License 1.1 (the "License");
5
+ // you may not use this file except in compliance with the License.
6
+ // You may obtain a copy of the License at
7
+ //
8
+ // https://github.com/panoboard/panoboard/blob/main/LICENSE
9
+ //
10
+ // Unless required by applicable law or agreed to in writing, software
11
+ // distributed under the License is distributed on an "AS IS" BASIS,
12
+ // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13
+ // See the License for the specific language governing permissions and
14
+ // limitations under the License.
15
+ import { ResponsivePie } from "@nivo/pie";
16
+ import { buildNivoTheme, getChartPalette } from "./nivo-theme";
17
+ import { useTheme } from "../../theme/context";
18
+ import { ChartTooltip } from "./ChartTooltip";
19
+ import { formatValue } from "../../formats";
20
+ import { useLocale } from "../../locale/context";
21
+ export function PieChart({ data, config }) {
22
+ const theme = useTheme();
23
+ const nivoTheme = buildNivoTheme(theme);
24
+ const palette = getChartPalette(theme);
25
+ const idKey = config.id ?? config.x ?? "id";
26
+ const valueKey = config.value ?? config.y ?? "value";
27
+ const labelKey = config.label ?? idKey;
28
+ const yFormat = config.y_format;
29
+ const locale = useLocale();
30
+ const fmt = (v) => yFormat
31
+ ? formatValue(v, yFormat, locale)
32
+ : v.toLocaleString(locale, { maximumFractionDigits: 0 });
33
+ const chartData = data.map((row) => ({
34
+ id: String(row[idKey]),
35
+ value: Number(row[valueKey]) || 0,
36
+ label: String(row[labelKey]),
37
+ }));
38
+ return (_jsx("div", { style: { height: "100%" }, children: _jsx(ResponsivePie, { data: chartData, colors: palette, theme: nivoTheme, margin: { top: 16, right: 100, bottom: 16, left: 100 }, padAngle: 0.7, cornerRadius: 3, activeOuterRadiusOffset: 8, arcLinkLabelsColor: { from: "color" }, arcLinkLabelsThickness: 2, arcLabelsSkipAngle: 10, arcLabelsTextColor: { from: "color", modifiers: [["brighter", 3]] }, valueFormat: (v) => fmt(v), tooltip: ({ datum }) => (_jsx(ChartTooltip, { label: datum.label, value: fmt(datum.value), color: datum.color })) }) }));
39
+ }
40
+ //# sourceMappingURL=PieChart.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"PieChart.js","sourceRoot":"","sources":["../../../src/components/panels/PieChart.tsx"],"names":[],"mappings":";AAAA,iCAAiC;AACjC,EAAE;AACF,kEAAkE;AAClE,mEAAmE;AACnE,0CAA0C;AAC1C,EAAE;AACF,+DAA+D;AAC/D,EAAE;AACF,sEAAsE;AACtE,oEAAoE;AACpE,2EAA2E;AAC3E,sEAAsE;AACtE,iCAAiC;AAEjC,OAAO,EAAE,aAAa,EAAE,MAAM,WAAW,CAAC;AAC1C,OAAO,EAAE,cAAc,EAAE,eAAe,EAAE,MAAM,cAAc,CAAC;AAC/D,OAAO,EAAE,QAAQ,EAAE,MAAM,qBAAqB,CAAC;AAC/C,OAAO,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAC;AAC9C,OAAO,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AAC5C,OAAO,EAAE,SAAS,EAAE,MAAM,sBAAsB,CAAC;AAOjD,MAAM,UAAU,QAAQ,CAAC,EAAE,IAAI,EAAE,MAAM,EAAmB;IACxD,MAAM,KAAK,GAAG,QAAQ,EAAE,CAAC;IACzB,MAAM,SAAS,GAAG,cAAc,CAAC,KAAK,CAAC,CAAC;IACxC,MAAM,OAAO,GAAG,eAAe,CAAC,KAAK,CAAC,CAAC;IAEvC,MAAM,KAAK,GAAI,MAAM,CAAC,EAAa,IAAK,MAAM,CAAC,CAAY,IAAI,IAAI,CAAC;IACpE,MAAM,QAAQ,GAAI,MAAM,CAAC,KAAgB,IAAK,MAAM,CAAC,CAAY,IAAI,OAAO,CAAC;IAC7E,MAAM,QAAQ,GAAI,MAAM,CAAC,KAAgB,IAAI,KAAK,CAAC;IACnD,MAAM,OAAO,GAAG,MAAM,CAAC,QAA8B,CAAC;IAEtD,MAAM,MAAM,GAAG,SAAS,EAAE,CAAC;IAC3B,MAAM,GAAG,GAAG,CAAC,CAAS,EAAE,EAAE,CACxB,OAAO;QACL,CAAC,CAAC,WAAW,CAAC,CAAC,EAAE,OAAO,EAAE,MAAM,CAAC;QACjC,CAAC,CAAC,CAAC,CAAC,cAAc,CAAC,MAAM,EAAE,EAAE,qBAAqB,EAAE,CAAC,EAAE,CAAC,CAAC;IAE7D,MAAM,SAAS,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC;QACnC,EAAE,EAAE,MAAM,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;QACtB,KAAK,EAAE,MAAM,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC,IAAI,CAAC;QACjC,KAAK,EAAE,MAAM,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;KAC7B,CAAC,CAAC,CAAC;IAEJ,OAAO,CACL,cAAK,KAAK,EAAE,EAAE,MAAM,EAAE,MAAM,EAAE,YAC5B,KAAC,aAAa,IACZ,IAAI,EAAE,SAAS,EACf,MAAM,EAAE,OAAO,EACf,KAAK,EAAE,SAAS,EAChB,MAAM,EAAE,EAAE,GAAG,EAAE,EAAE,EAAE,KAAK,EAAE,GAAG,EAAE,MAAM,EAAE,EAAE,EAAE,IAAI,EAAE,GAAG,EAAE,EACtD,QAAQ,EAAE,GAAG,EACb,YAAY,EAAE,CAAC,EACf,uBAAuB,EAAE,CAAC,EAC1B,kBAAkB,EAAE,EAAE,IAAI,EAAE,OAAO,EAAE,EACrC,sBAAsB,EAAE,CAAC,EACzB,kBAAkB,EAAE,EAAE,EACtB,kBAAkB,EAAE,EAAE,IAAI,EAAE,OAAO,EAAE,SAAS,EAAE,CAAC,CAAC,UAAU,EAAE,CAAC,CAAC,CAAC,EAAE,EACnE,WAAW,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,EAC1B,OAAO,EAAE,CAAC,EAAE,KAAK,EAAE,EAAE,EAAE,CAAC,CACtB,KAAC,YAAY,IACX,KAAK,EAAE,KAAK,CAAC,KAAe,EAC5B,KAAK,EAAE,GAAG,CAAC,KAAK,CAAC,KAAK,CAAC,EACvB,KAAK,EAAE,KAAK,CAAC,KAAK,GAClB,CACH,GACD,GACE,CACP,CAAC;AACJ,CAAC"}
@@ -0,0 +1,7 @@
1
+ interface ChartPanelProps {
2
+ data: Record<string, unknown>[];
3
+ config: any;
4
+ }
5
+ export declare function RadarChart({ data, config }: ChartPanelProps): import("react/jsx-runtime").JSX.Element | null;
6
+ export {};
7
+ //# sourceMappingURL=RadarChart.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"RadarChart.d.ts","sourceRoot":"","sources":["../../../src/components/panels/RadarChart.tsx"],"names":[],"mappings":"AAkBA,UAAU,eAAe;IACvB,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE,CAAC;IAChC,MAAM,EAAE,GAAG,CAAC;CACb;AAED,wBAAgB,UAAU,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,EAAE,eAAe,kDAoD3D"}