@panoboard/core 1.3.0 → 1.9.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (371) hide show
  1. package/dist/annotations/executor.d.ts +32 -0
  2. package/dist/annotations/executor.d.ts.map +1 -0
  3. package/dist/annotations/executor.js +74 -0
  4. package/dist/annotations/executor.js.map +1 -0
  5. package/dist/annotations/index.d.ts +2 -0
  6. package/dist/annotations/index.d.ts.map +1 -0
  7. package/dist/annotations/index.js +15 -0
  8. package/dist/annotations/index.js.map +1 -0
  9. package/dist/cache/keys.d.ts.map +1 -1
  10. package/dist/cache/keys.js +4 -4
  11. package/dist/cache/keys.js.map +1 -1
  12. package/dist/components/ConfigErrorBanner.d.ts.map +1 -1
  13. package/dist/components/ConfigErrorBanner.js +38 -10
  14. package/dist/components/ConfigErrorBanner.js.map +1 -1
  15. package/dist/components/CrosshairContext.d.ts +13 -0
  16. package/dist/components/CrosshairContext.d.ts.map +1 -0
  17. package/dist/components/CrosshairContext.js +37 -0
  18. package/dist/components/CrosshairContext.js.map +1 -0
  19. package/dist/components/DashboardCard.d.ts +3 -1
  20. package/dist/components/DashboardCard.d.ts.map +1 -1
  21. package/dist/components/DashboardCard.js +65 -12
  22. package/dist/components/DashboardCard.js.map +1 -1
  23. package/dist/components/DashboardDescription.d.ts +19 -0
  24. package/dist/components/DashboardDescription.d.ts.map +1 -0
  25. package/dist/components/DashboardDescription.js +61 -0
  26. package/dist/components/DashboardDescription.js.map +1 -0
  27. package/dist/components/DashboardLinks.d.ts +8 -0
  28. package/dist/components/DashboardLinks.d.ts.map +1 -0
  29. package/dist/components/DashboardLinks.js +53 -0
  30. package/dist/components/DashboardLinks.js.map +1 -0
  31. package/dist/components/DashboardShell.d.ts +5 -1
  32. package/dist/components/DashboardShell.d.ts.map +1 -1
  33. package/dist/components/DashboardShell.js +42 -25
  34. package/dist/components/DashboardShell.js.map +1 -1
  35. package/dist/components/EmptyState.d.ts.map +1 -1
  36. package/dist/components/EmptyState.js +7 -1
  37. package/dist/components/EmptyState.js.map +1 -1
  38. package/dist/components/ErrorPage.d.ts.map +1 -1
  39. package/dist/components/ErrorPage.js +22 -33
  40. package/dist/components/ErrorPage.js.map +1 -1
  41. package/dist/components/FilterBar.d.ts.map +1 -1
  42. package/dist/components/FilterBar.js +21 -5
  43. package/dist/components/FilterBar.js.map +1 -1
  44. package/dist/components/NotificationCenter.d.ts +6 -0
  45. package/dist/components/NotificationCenter.d.ts.map +1 -0
  46. package/dist/components/NotificationCenter.js +83 -0
  47. package/dist/components/NotificationCenter.js.map +1 -0
  48. package/dist/components/NotificationIndicator.d.ts +6 -0
  49. package/dist/components/NotificationIndicator.d.ts.map +1 -0
  50. package/dist/components/NotificationIndicator.js +24 -0
  51. package/dist/components/NotificationIndicator.js.map +1 -0
  52. package/dist/components/PanelGrid.js +2 -2
  53. package/dist/components/PanelGrid.js.map +1 -1
  54. package/dist/components/PanelWrapper.d.ts +2 -1
  55. package/dist/components/PanelWrapper.d.ts.map +1 -1
  56. package/dist/components/PanelWrapper.js +101 -16
  57. package/dist/components/PanelWrapper.js.map +1 -1
  58. package/dist/components/RefreshContext.d.ts +3 -0
  59. package/dist/components/RefreshContext.d.ts.map +1 -0
  60. package/dist/components/RefreshContext.js +7 -0
  61. package/dist/components/RefreshContext.js.map +1 -0
  62. package/dist/components/RefreshControl.d.ts +17 -0
  63. package/dist/components/RefreshControl.d.ts.map +1 -0
  64. package/dist/components/RefreshControl.js +72 -0
  65. package/dist/components/RefreshControl.js.map +1 -0
  66. package/dist/components/SectionGrid.d.ts +9 -0
  67. package/dist/components/SectionGrid.d.ts.map +1 -0
  68. package/dist/components/SectionGrid.js +76 -0
  69. package/dist/components/SectionGrid.js.map +1 -0
  70. package/dist/components/SectionHeader.d.ts +8 -0
  71. package/dist/components/SectionHeader.d.ts.map +1 -0
  72. package/dist/components/SectionHeader.js +21 -0
  73. package/dist/components/SectionHeader.js.map +1 -0
  74. package/dist/components/TagPills.d.ts +7 -0
  75. package/dist/components/TagPills.d.ts.map +1 -0
  76. package/dist/components/TagPills.js +41 -0
  77. package/dist/components/TagPills.js.map +1 -0
  78. package/dist/components/filters/BooleanFilter.d.ts.map +1 -1
  79. package/dist/components/filters/BooleanFilter.js +1 -3
  80. package/dist/components/filters/BooleanFilter.js.map +1 -1
  81. package/dist/components/filters/CalendarGrid.d.ts.map +1 -1
  82. package/dist/components/filters/CalendarGrid.js +1 -1
  83. package/dist/components/filters/CalendarGrid.js.map +1 -1
  84. package/dist/components/filters/DateRangeFilter.d.ts.map +1 -1
  85. package/dist/components/filters/DateRangeFilter.js +4 -6
  86. package/dist/components/filters/DateRangeFilter.js.map +1 -1
  87. package/dist/components/filters/FilterChips.d.ts.map +1 -1
  88. package/dist/components/filters/FilterChips.js +71 -10
  89. package/dist/components/filters/FilterChips.js.map +1 -1
  90. package/dist/components/filters/IntervalFilter.d.ts +9 -0
  91. package/dist/components/filters/IntervalFilter.d.ts.map +1 -0
  92. package/dist/components/filters/IntervalFilter.js +32 -0
  93. package/dist/components/filters/IntervalFilter.js.map +1 -0
  94. package/dist/components/filters/MultiSelectFilter.d.ts.map +1 -1
  95. package/dist/components/filters/MultiSelectFilter.js +1 -3
  96. package/dist/components/filters/MultiSelectFilter.js.map +1 -1
  97. package/dist/components/filters/NumberFilter.d.ts.map +1 -1
  98. package/dist/components/filters/NumberFilter.js +5 -1
  99. package/dist/components/filters/NumberFilter.js.map +1 -1
  100. package/dist/components/filters/SelectFilter.d.ts +2 -1
  101. package/dist/components/filters/SelectFilter.d.ts.map +1 -1
  102. package/dist/components/filters/SelectFilter.js +9 -10
  103. package/dist/components/filters/SelectFilter.js.map +1 -1
  104. package/dist/components/filters/TextFilter.d.ts.map +1 -1
  105. package/dist/components/filters/TextFilter.js +5 -1
  106. package/dist/components/filters/TextFilter.js.map +1 -1
  107. package/dist/components/index.d.ts +11 -1
  108. package/dist/components/index.d.ts.map +1 -1
  109. package/dist/components/index.js +14 -1
  110. package/dist/components/index.js.map +1 -1
  111. package/dist/components/panels/AnnotationLayer.d.ts +28 -0
  112. package/dist/components/panels/AnnotationLayer.d.ts.map +1 -0
  113. package/dist/components/panels/AnnotationLayer.js +102 -0
  114. package/dist/components/panels/AnnotationLayer.js.map +1 -0
  115. package/dist/components/panels/AreaChart.d.ts +3 -1
  116. package/dist/components/panels/AreaChart.d.ts.map +1 -1
  117. package/dist/components/panels/AreaChart.js +87 -5
  118. package/dist/components/panels/AreaChart.js.map +1 -1
  119. package/dist/components/panels/BarChart.d.ts.map +1 -1
  120. package/dist/components/panels/BarChart.js +61 -7
  121. package/dist/components/panels/BarChart.js.map +1 -1
  122. package/dist/components/panels/BulletChart.js +1 -1
  123. package/dist/components/panels/BulletChart.js.map +1 -1
  124. package/dist/components/panels/CalendarHeatmap.d.ts.map +1 -1
  125. package/dist/components/panels/CalendarHeatmap.js +7 -4
  126. package/dist/components/panels/CalendarHeatmap.js.map +1 -1
  127. package/dist/components/panels/ChartTooltip.d.ts.map +1 -1
  128. package/dist/components/panels/ChartTooltip.js +9 -48
  129. package/dist/components/panels/ChartTooltip.js.map +1 -1
  130. package/dist/components/panels/DataLinks.d.ts +35 -0
  131. package/dist/components/panels/DataLinks.d.ts.map +1 -0
  132. package/dist/components/panels/DataLinks.js +67 -0
  133. package/dist/components/panels/DataLinks.js.map +1 -0
  134. package/dist/components/panels/GaugePanel.d.ts +7 -0
  135. package/dist/components/panels/GaugePanel.d.ts.map +1 -0
  136. package/dist/components/panels/GaugePanel.js +116 -0
  137. package/dist/components/panels/GaugePanel.js.map +1 -0
  138. package/dist/components/panels/HistogramPanel.d.ts +18 -0
  139. package/dist/components/panels/HistogramPanel.d.ts.map +1 -0
  140. package/dist/components/panels/HistogramPanel.js +92 -0
  141. package/dist/components/panels/HistogramPanel.js.map +1 -0
  142. package/dist/components/panels/LineChart.d.ts +3 -1
  143. package/dist/components/panels/LineChart.d.ts.map +1 -1
  144. package/dist/components/panels/LineChart.js +90 -5
  145. package/dist/components/panels/LineChart.js.map +1 -1
  146. package/dist/components/panels/ListPanel.d.ts.map +1 -1
  147. package/dist/components/panels/ListPanel.js +1 -1
  148. package/dist/components/panels/ListPanel.js.map +1 -1
  149. package/dist/components/panels/MarkdownPanel.d.ts +15 -1
  150. package/dist/components/panels/MarkdownPanel.d.ts.map +1 -1
  151. package/dist/components/panels/MarkdownPanel.js +70 -7
  152. package/dist/components/panels/MarkdownPanel.js.map +1 -1
  153. package/dist/components/panels/MetricPanel.d.ts.map +1 -1
  154. package/dist/components/panels/MetricPanel.js +1 -1
  155. package/dist/components/panels/MetricPanel.js.map +1 -1
  156. package/dist/components/panels/PanelEmpty.d.ts.map +1 -1
  157. package/dist/components/panels/PanelEmpty.js +1 -1
  158. package/dist/components/panels/PanelEmpty.js.map +1 -1
  159. package/dist/components/panels/PanelError.d.ts.map +1 -1
  160. package/dist/components/panels/PanelError.js +4 -1
  161. package/dist/components/panels/PanelError.js.map +1 -1
  162. package/dist/components/panels/PanelSkeleton.js +2 -2
  163. package/dist/components/panels/PanelSkeleton.js.map +1 -1
  164. package/dist/components/panels/RadialBarChart.js +1 -1
  165. package/dist/components/panels/RadialBarChart.js.map +1 -1
  166. package/dist/components/panels/ScatterChart.d.ts +15 -1
  167. package/dist/components/panels/ScatterChart.d.ts.map +1 -1
  168. package/dist/components/panels/ScatterChart.js +96 -26
  169. package/dist/components/panels/ScatterChart.js.map +1 -1
  170. package/dist/components/panels/Sparkline.d.ts +21 -0
  171. package/dist/components/panels/Sparkline.d.ts.map +1 -0
  172. package/dist/components/panels/Sparkline.js +53 -0
  173. package/dist/components/panels/Sparkline.js.map +1 -0
  174. package/dist/components/panels/StatPanel.d.ts +3 -1
  175. package/dist/components/panels/StatPanel.d.ts.map +1 -1
  176. package/dist/components/panels/StatPanel.js +33 -4
  177. package/dist/components/panels/StatPanel.js.map +1 -1
  178. package/dist/components/panels/TablePanel.d.ts +2 -1
  179. package/dist/components/panels/TablePanel.d.ts.map +1 -1
  180. package/dist/components/panels/TablePanel.js +96 -6
  181. package/dist/components/panels/TablePanel.js.map +1 -1
  182. package/dist/components/panels/VideoPanel.d.ts.map +1 -1
  183. package/dist/components/panels/VideoPanel.js +1 -1
  184. package/dist/components/panels/VideoPanel.js.map +1 -1
  185. package/dist/components/panels/nivo-theme.d.ts +1 -44
  186. package/dist/components/panels/nivo-theme.d.ts.map +1 -1
  187. package/dist/components/panels/nivo-theme.js +9 -104
  188. package/dist/components/panels/nivo-theme.js.map +1 -1
  189. package/dist/components/panels/semantic-colors.d.ts.map +1 -1
  190. package/dist/components/panels/semantic-colors.js +2 -39
  191. package/dist/components/panels/semantic-colors.js.map +1 -1
  192. package/dist/components/ui/Button.d.ts +1 -1
  193. package/dist/components/ui/Button.d.ts.map +1 -1
  194. package/dist/components/ui/Button.js +6 -9
  195. package/dist/components/ui/Button.js.map +1 -1
  196. package/dist/components/ui/Tabs.d.ts.map +1 -1
  197. package/dist/components/ui/Tabs.js +1 -1
  198. package/dist/components/ui/Tabs.js.map +1 -1
  199. package/dist/connectors/bigquery.d.ts.map +1 -1
  200. package/dist/connectors/bigquery.js +6 -1
  201. package/dist/connectors/bigquery.js.map +1 -1
  202. package/dist/connectors/postgres.d.ts.map +1 -1
  203. package/dist/connectors/postgres.js +3 -0
  204. package/dist/connectors/postgres.js.map +1 -1
  205. package/dist/connectors/redshift.d.ts.map +1 -1
  206. package/dist/connectors/redshift.js +3 -0
  207. package/dist/connectors/redshift.js.map +1 -1
  208. package/dist/contexts/NotificationContext.d.ts +10 -0
  209. package/dist/contexts/NotificationContext.d.ts.map +1 -0
  210. package/dist/contexts/NotificationContext.js +24 -0
  211. package/dist/contexts/NotificationContext.js.map +1 -0
  212. package/dist/filters/daterange.d.ts +1 -1
  213. package/dist/filters/daterange.d.ts.map +1 -1
  214. package/dist/filters/daterange.js +54 -9
  215. package/dist/filters/daterange.js.map +1 -1
  216. package/dist/filters/index.d.ts +2 -0
  217. package/dist/filters/index.d.ts.map +1 -1
  218. package/dist/filters/index.js +2 -0
  219. package/dist/filters/index.js.map +1 -1
  220. package/dist/filters/interval.d.ts +13 -0
  221. package/dist/filters/interval.d.ts.map +1 -0
  222. package/dist/filters/interval.js +40 -0
  223. package/dist/filters/interval.js.map +1 -0
  224. package/dist/filters/resolver.d.ts +1 -1
  225. package/dist/filters/resolver.d.ts.map +1 -1
  226. package/dist/filters/resolver.js +28 -2
  227. package/dist/filters/resolver.js.map +1 -1
  228. package/dist/flattenTabs.d.ts +8 -0
  229. package/dist/flattenTabs.d.ts.map +1 -0
  230. package/dist/flattenTabs.js +24 -0
  231. package/dist/flattenTabs.js.map +1 -0
  232. package/dist/formats.d.ts +1 -1
  233. package/dist/formats.d.ts.map +1 -1
  234. package/dist/formats.js +19 -9
  235. package/dist/formats.js.map +1 -1
  236. package/dist/hooks/useNotifications.d.ts +5 -0
  237. package/dist/hooks/useNotifications.d.ts.map +1 -0
  238. package/dist/hooks/useNotifications.js +48 -0
  239. package/dist/hooks/useNotifications.js.map +1 -0
  240. package/dist/index.d.ts +3 -0
  241. package/dist/index.d.ts.map +1 -1
  242. package/dist/index.js +4 -0
  243. package/dist/index.js.map +1 -1
  244. package/dist/interpolation.d.ts +10 -0
  245. package/dist/interpolation.d.ts.map +1 -0
  246. package/dist/interpolation.js +64 -0
  247. package/dist/interpolation.js.map +1 -0
  248. package/dist/panels/conditional.d.ts +12 -0
  249. package/dist/panels/conditional.d.ts.map +1 -0
  250. package/dist/panels/conditional.js +90 -0
  251. package/dist/panels/conditional.js.map +1 -0
  252. package/dist/panels/index.d.ts +11 -0
  253. package/dist/panels/index.d.ts.map +1 -0
  254. package/dist/panels/index.js +19 -0
  255. package/dist/panels/index.js.map +1 -0
  256. package/dist/panels/mappings.d.ts +40 -0
  257. package/dist/panels/mappings.d.ts.map +1 -0
  258. package/dist/panels/mappings.js +83 -0
  259. package/dist/panels/mappings.js.map +1 -0
  260. package/dist/panels/overrides.d.ts +37 -0
  261. package/dist/panels/overrides.d.ts.map +1 -0
  262. package/dist/panels/overrides.js +57 -0
  263. package/dist/panels/overrides.js.map +1 -0
  264. package/dist/panels/threshold-layers.d.ts +18 -0
  265. package/dist/panels/threshold-layers.d.ts.map +1 -0
  266. package/dist/panels/threshold-layers.js +35 -0
  267. package/dist/panels/threshold-layers.js.map +1 -0
  268. package/dist/panels/thresholds.d.ts +36 -0
  269. package/dist/panels/thresholds.d.ts.map +1 -0
  270. package/dist/panels/thresholds.js +81 -0
  271. package/dist/panels/thresholds.js.map +1 -0
  272. package/dist/schemas/annotations.d.ts +34 -0
  273. package/dist/schemas/annotations.d.ts.map +1 -0
  274. package/dist/schemas/annotations.js +19 -0
  275. package/dist/schemas/annotations.js.map +1 -0
  276. package/dist/schemas/config.d.ts +1 -0
  277. package/dist/schemas/config.d.ts.map +1 -1
  278. package/dist/schemas/config.js +1 -0
  279. package/dist/schemas/config.js.map +1 -1
  280. package/dist/schemas/dashboard.d.ts +5861 -235
  281. package/dist/schemas/dashboard.d.ts.map +1 -1
  282. package/dist/schemas/dashboard.js +173 -10
  283. package/dist/schemas/dashboard.js.map +1 -1
  284. package/dist/schemas/index.d.ts +6 -1
  285. package/dist/schemas/index.d.ts.map +1 -1
  286. package/dist/schemas/index.js +6 -1
  287. package/dist/schemas/index.js.map +1 -1
  288. package/dist/schemas/mappings.d.ts +46 -0
  289. package/dist/schemas/mappings.d.ts.map +1 -0
  290. package/dist/schemas/mappings.js +46 -0
  291. package/dist/schemas/mappings.js.map +1 -0
  292. package/dist/schemas/overrides.d.ts +77 -0
  293. package/dist/schemas/overrides.d.ts.map +1 -0
  294. package/dist/schemas/overrides.js +38 -0
  295. package/dist/schemas/overrides.js.map +1 -0
  296. package/dist/schemas/theme.d.ts +89 -7
  297. package/dist/schemas/theme.d.ts.map +1 -1
  298. package/dist/schemas/theme.js +40 -24
  299. package/dist/schemas/theme.js.map +1 -1
  300. package/dist/schemas/thresholds.d.ts +19 -0
  301. package/dist/schemas/thresholds.d.ts.map +1 -0
  302. package/dist/schemas/thresholds.js +31 -0
  303. package/dist/schemas/thresholds.js.map +1 -0
  304. package/dist/schemas/transforms.d.ts +54 -0
  305. package/dist/schemas/transforms.d.ts.map +1 -0
  306. package/dist/schemas/transforms.js +51 -0
  307. package/dist/schemas/transforms.js.map +1 -0
  308. package/dist/startup/sql-lint.d.ts.map +1 -1
  309. package/dist/startup/sql-lint.js +3 -2
  310. package/dist/startup/sql-lint.js.map +1 -1
  311. package/dist/theme/builtin.d.ts.map +1 -1
  312. package/dist/theme/builtin.js +56 -62
  313. package/dist/theme/builtin.js.map +1 -1
  314. package/dist/theme/colors.d.ts +11 -0
  315. package/dist/theme/colors.d.ts.map +1 -0
  316. package/dist/theme/colors.js +71 -0
  317. package/dist/theme/colors.js.map +1 -0
  318. package/dist/theme/context.d.ts.map +1 -1
  319. package/dist/theme/context.js +16 -3
  320. package/dist/theme/context.js.map +1 -1
  321. package/dist/theme/loader-export.d.ts +1 -1
  322. package/dist/theme/loader-export.d.ts.map +1 -1
  323. package/dist/theme/loader-export.js +1 -1
  324. package/dist/theme/loader-export.js.map +1 -1
  325. package/dist/theme/loader.d.ts +8 -3
  326. package/dist/theme/loader.d.ts.map +1 -1
  327. package/dist/theme/loader.js +24 -13
  328. package/dist/theme/loader.js.map +1 -1
  329. package/dist/transforms/computed.d.ts +11 -0
  330. package/dist/transforms/computed.d.ts.map +1 -0
  331. package/dist/transforms/computed.js +24 -0
  332. package/dist/transforms/computed.js.map +1 -0
  333. package/dist/transforms/engine.d.ts +17 -0
  334. package/dist/transforms/engine.d.ts.map +1 -0
  335. package/dist/transforms/engine.js +65 -0
  336. package/dist/transforms/engine.js.map +1 -0
  337. package/dist/transforms/expression.d.ts +9 -0
  338. package/dist/transforms/expression.d.ts.map +1 -0
  339. package/dist/transforms/expression.js +306 -0
  340. package/dist/transforms/expression.js.map +1 -0
  341. package/dist/transforms/filter.d.ts +11 -0
  342. package/dist/transforms/filter.d.ts.map +1 -0
  343. package/dist/transforms/filter.js +10 -0
  344. package/dist/transforms/filter.js.map +1 -0
  345. package/dist/transforms/index.d.ts +10 -0
  346. package/dist/transforms/index.d.ts.map +1 -0
  347. package/dist/transforms/index.js +9 -0
  348. package/dist/transforms/index.js.map +1 -0
  349. package/dist/transforms/limit.d.ts +11 -0
  350. package/dist/transforms/limit.d.ts.map +1 -0
  351. package/dist/transforms/limit.js +4 -0
  352. package/dist/transforms/limit.js.map +1 -0
  353. package/dist/transforms/percentage.d.ts +11 -0
  354. package/dist/transforms/percentage.d.ts.map +1 -0
  355. package/dist/transforms/percentage.js +25 -0
  356. package/dist/transforms/percentage.js.map +1 -0
  357. package/dist/transforms/rename.d.ts +11 -0
  358. package/dist/transforms/rename.d.ts.map +1 -0
  359. package/dist/transforms/rename.js +17 -0
  360. package/dist/transforms/rename.js.map +1 -0
  361. package/dist/transforms/sort.d.ts +11 -0
  362. package/dist/transforms/sort.d.ts.map +1 -0
  363. package/dist/transforms/sort.js +21 -0
  364. package/dist/transforms/sort.js.map +1 -0
  365. package/dist/types/config-error.d.ts +1 -1
  366. package/dist/types/config-error.d.ts.map +1 -1
  367. package/dist/types/notification.d.ts +19 -0
  368. package/dist/types/notification.d.ts.map +1 -0
  369. package/dist/types/notification.js +15 -0
  370. package/dist/types/notification.js.map +1 -0
  371. package/package.json +12 -2
@@ -0,0 +1,61 @@
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 { useState, useMemo } from "react";
16
+ import { useTheme } from "../theme/context";
17
+ export const MAX_VISIBLE_LINES = 2;
18
+ /** Determine if a description should be collapsible based on line count. */
19
+ export function shouldCollapse(description) {
20
+ const lines = description.split("\n");
21
+ return lines.length > MAX_VISIBLE_LINES;
22
+ }
23
+ /**
24
+ * Convert a small safe subset of markdown to HTML.
25
+ * Only supports: **bold**, *italic*, `code`, [links](url), and newlines.
26
+ * No arbitrary HTML pass-through.
27
+ */
28
+ export function renderSimpleMarkdown(text) {
29
+ return text
30
+ // Bold: **text** or __text__
31
+ .replace(/\*\*(.+?)\*\*/g, "<strong>$1</strong>")
32
+ .replace(/__(.+?)__/g, "<strong>$1</strong>")
33
+ // Italic: *text* or _text_ (but not inside **)
34
+ .replace(/(?<!\*)\*(?!\*)(.+?)(?<!\*)\*(?!\*)/g, "<em>$1</em>")
35
+ // Inline code: `text`
36
+ .replace(/`(.+?)`/g, '<code style="background: rgba(148,163,184,0.15); padding: 1px 4px; border-radius: 3px; font-size: 0.85em;">$1</code>')
37
+ // Links: [text](url)
38
+ .replace(/\[(.+?)\]\((.+?)\)/g, '<a href="$2" target="_blank" rel="noopener noreferrer" style="text-decoration: underline; text-underline-offset: 2px;">$1</a>')
39
+ // Line breaks
40
+ .replace(/\n/g, "<br />");
41
+ }
42
+ /**
43
+ * Renders the dashboard description below the title.
44
+ * Supports basic markdown, collapsible if more than 2 lines.
45
+ */
46
+ export function DashboardDescription({ description }) {
47
+ const theme = useTheme();
48
+ const [expanded, setExpanded] = useState(false);
49
+ const collapsible = useMemo(() => shouldCollapse(description), [description]);
50
+ const displayText = useMemo(() => {
51
+ if (!collapsible || expanded)
52
+ return description;
53
+ const lines = description.split("\n");
54
+ return lines.slice(0, MAX_VISIBLE_LINES).join("\n");
55
+ }, [description, collapsible, expanded]);
56
+ const html = useMemo(() => renderSimpleMarkdown(displayText), [displayText]);
57
+ // Safe: renderSimpleMarkdown only produces a known-safe subset of HTML tags
58
+ // (strong, em, code, a, br) from dashboard YAML authored by the dashboard creator.
59
+ return (_jsxs("div", { className: "mt-1", children: [_jsx("p", { className: "text-sm leading-relaxed", style: { color: theme.typography.muted }, dangerouslySetInnerHTML: { __html: html } }), collapsible && (_jsx("button", { onClick: () => setExpanded(!expanded), className: "text-xs mt-1 hover:underline focus:outline-none transition-colors", style: { color: theme.typography.muted, opacity: 0.8 }, children: expanded ? "Show less" : "Show more" }))] }));
60
+ }
61
+ //# sourceMappingURL=DashboardDescription.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"DashboardDescription.js","sourceRoot":"","sources":["../../src/components/DashboardDescription.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,OAAO,EAAE,MAAM,OAAO,CAAC;AAC1C,OAAO,EAAE,QAAQ,EAAE,MAAM,kBAAkB,CAAC;AAE5C,MAAM,CAAC,MAAM,iBAAiB,GAAG,CAAC,CAAC;AAEnC,4EAA4E;AAC5E,MAAM,UAAU,cAAc,CAAC,WAAmB;IAChD,MAAM,KAAK,GAAG,WAAW,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;IACtC,OAAO,KAAK,CAAC,MAAM,GAAG,iBAAiB,CAAC;AAC1C,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,oBAAoB,CAAC,IAAY;IAC/C,OAAO,IAAI;QACT,6BAA6B;SAC5B,OAAO,CAAC,gBAAgB,EAAE,qBAAqB,CAAC;SAChD,OAAO,CAAC,YAAY,EAAE,qBAAqB,CAAC;QAC7C,+CAA+C;SAC9C,OAAO,CAAC,sCAAsC,EAAE,aAAa,CAAC;QAC/D,sBAAsB;SACrB,OAAO,CACN,UAAU,EACV,sHAAsH,CACvH;QACD,qBAAqB;SACpB,OAAO,CACN,qBAAqB,EACrB,+HAA+H,CAChI;QACD,cAAc;SACb,OAAO,CAAC,KAAK,EAAE,QAAQ,CAAC,CAAC;AAC9B,CAAC;AAMD;;;GAGG;AACH,MAAM,UAAU,oBAAoB,CAAC,EAAE,WAAW,EAA6B;IAC7E,MAAM,KAAK,GAAG,QAAQ,EAAE,CAAC;IACzB,MAAM,CAAC,QAAQ,EAAE,WAAW,CAAC,GAAG,QAAQ,CAAC,KAAK,CAAC,CAAC;IAChD,MAAM,WAAW,GAAG,OAAO,CAAC,GAAG,EAAE,CAAC,cAAc,CAAC,WAAW,CAAC,EAAE,CAAC,WAAW,CAAC,CAAC,CAAC;IAE9E,MAAM,WAAW,GAAG,OAAO,CAAC,GAAG,EAAE;QAC/B,IAAI,CAAC,WAAW,IAAI,QAAQ;YAAE,OAAO,WAAW,CAAC;QACjD,MAAM,KAAK,GAAG,WAAW,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;QACtC,OAAO,KAAK,CAAC,KAAK,CAAC,CAAC,EAAE,iBAAiB,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IACtD,CAAC,EAAE,CAAC,WAAW,EAAE,WAAW,EAAE,QAAQ,CAAC,CAAC,CAAC;IAEzC,MAAM,IAAI,GAAG,OAAO,CAAC,GAAG,EAAE,CAAC,oBAAoB,CAAC,WAAW,CAAC,EAAE,CAAC,WAAW,CAAC,CAAC,CAAC;IAE7E,4EAA4E;IAC5E,mFAAmF;IACnF,OAAO,CACL,eAAK,SAAS,EAAC,MAAM,aACnB,YACE,SAAS,EAAC,yBAAyB,EACnC,KAAK,EAAE,EAAE,KAAK,EAAE,KAAK,CAAC,UAAU,CAAC,KAAK,EAAE,EACxC,uBAAuB,EAAE,EAAE,MAAM,EAAE,IAAI,EAAE,GACzC,EACD,WAAW,IAAI,CACd,iBACE,OAAO,EAAE,GAAG,EAAE,CAAC,WAAW,CAAC,CAAC,QAAQ,CAAC,EACrC,SAAS,EAAC,mEAAmE,EAC7E,KAAK,EAAE,EAAE,KAAK,EAAE,KAAK,CAAC,UAAU,CAAC,KAAK,EAAE,OAAO,EAAE,GAAG,EAAE,YAErD,QAAQ,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,WAAW,GAC9B,CACV,IACG,CACP,CAAC;AACJ,CAAC"}
@@ -0,0 +1,8 @@
1
+ import type { DashboardLink } from "../schemas/dashboard";
2
+ interface DashboardLinksProps {
3
+ links?: DashboardLink[];
4
+ filterParams: string;
5
+ }
6
+ export declare function DashboardLinks({ links, filterParams }: DashboardLinksProps): import("react/jsx-runtime").JSX.Element | null;
7
+ export {};
8
+ //# sourceMappingURL=DashboardLinks.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"DashboardLinks.d.ts","sourceRoot":"","sources":["../../src/components/DashboardLinks.tsx"],"names":[],"mappings":"AAiBA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC;AAE1D,UAAU,mBAAmB;IAC3B,KAAK,CAAC,EAAE,aAAa,EAAE,CAAC;IACxB,YAAY,EAAE,MAAM,CAAC;CACtB;AA4BD,wBAAgB,cAAc,CAAC,EAAE,KAAK,EAAE,YAAY,EAAE,EAAE,mBAAmB,kDAyC1E"}
@@ -0,0 +1,53 @@
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 { Link } from "react-router";
16
+ import { ExternalLink } from "lucide-react";
17
+ import { useTheme } from "../theme/context";
18
+ function buildInternalHref(link, filterParams) {
19
+ const base = `/dashboards/${link.dashboard}`;
20
+ if (!link.forward_filters || link.forward_filters.length === 0) {
21
+ return base;
22
+ }
23
+ const source = new URLSearchParams(filterParams);
24
+ const target = new URLSearchParams();
25
+ for (const filterId of link.forward_filters) {
26
+ for (const [key, value] of source.entries()) {
27
+ if (key === filterId || key.startsWith(`${filterId}.`)) {
28
+ target.set(key, value);
29
+ }
30
+ }
31
+ }
32
+ const qs = target.toString();
33
+ return qs ? `${base}?${qs}` : base;
34
+ }
35
+ function interpolateUrl(url) {
36
+ // TODO: integrate with Track 3 variable interpolation
37
+ return url;
38
+ }
39
+ export function DashboardLinks({ links, filterParams }) {
40
+ const theme = useTheme();
41
+ if (!links || links.length === 0)
42
+ return null;
43
+ return (_jsx("nav", { className: "flex items-center gap-1 flex-wrap", children: links.map((link, idx) => {
44
+ if (link.dashboard) {
45
+ return (_jsx(Link, { to: buildInternalHref(link, filterParams), className: "inline-flex items-center gap-1.5 rounded-md px-3 py-1.5 text-sm font-medium hover:opacity-80 transition-colors", style: { color: theme.typography.muted }, children: link.title }, `${link.dashboard}-${idx}`));
46
+ }
47
+ if (link.url) {
48
+ return (_jsxs("a", { href: interpolateUrl(link.url), target: "_blank", rel: "noopener noreferrer", className: "inline-flex items-center gap-1.5 rounded-md px-3 py-1.5 text-sm font-medium hover:opacity-80 transition-colors", style: { color: theme.typography.muted }, children: [link.title, _jsx(ExternalLink, { className: "w-3 h-3" })] }, `${link.url}-${idx}`));
49
+ }
50
+ return null;
51
+ }) }));
52
+ }
53
+ //# sourceMappingURL=DashboardLinks.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"DashboardLinks.js","sourceRoot":"","sources":["../../src/components/DashboardLinks.tsx"],"names":[],"mappings":"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"}
@@ -1,11 +1,15 @@
1
1
  import { type ReactNode } from "react";
2
+ import type { DashboardLink } from "../schemas/dashboard";
2
3
  interface DashboardShellProps {
3
4
  title: string;
4
5
  description?: string;
6
+ tags?: string[];
7
+ links?: DashboardLink[];
8
+ filterParams?: string;
5
9
  refresh?: string;
6
10
  filters?: ReactNode;
7
11
  children: ReactNode;
8
12
  }
9
- export declare function DashboardShell({ title, description, refresh, filters, children, }: DashboardShellProps): import("react/jsx-runtime").JSX.Element;
13
+ export declare function DashboardShell({ title, description, tags, links, filterParams, refresh, filters, children, }: DashboardShellProps): import("react/jsx-runtime").JSX.Element;
10
14
  export {};
11
15
  //# sourceMappingURL=DashboardShell.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"DashboardShell.d.ts","sourceRoot":"","sources":["../../src/components/DashboardShell.tsx"],"names":[],"mappings":"AAcA,OAAO,EAAE,KAAK,SAAS,EAAoC,MAAM,OAAO,CAAC;AAKzE,UAAU,mBAAmB;IAC3B,KAAK,EAAE,MAAM,CAAC;IACd,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,OAAO,CAAC,EAAE,SAAS,CAAC;IACpB,QAAQ,EAAE,SAAS,CAAC;CACrB;AAwBD,wBAAgB,cAAc,CAAC,EAC7B,KAAK,EACL,WAAW,EACX,OAAO,EACP,OAAO,EACP,QAAQ,GACT,EAAE,mBAAmB,2CAoJrB"}
1
+ {"version":3,"file":"DashboardShell.d.ts","sourceRoot":"","sources":["../../src/components/DashboardShell.tsx"],"names":[],"mappings":"AAcA,OAAO,EAAE,KAAK,SAAS,EAAoC,MAAM,OAAO,CAAC;AAMzE,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC;AAI1D,UAAU,mBAAmB;IAC3B,KAAK,EAAE,MAAM,CAAC;IACd,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,IAAI,CAAC,EAAE,MAAM,EAAE,CAAC;IAChB,KAAK,CAAC,EAAE,aAAa,EAAE,CAAC;IACxB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,OAAO,CAAC,EAAE,SAAS,CAAC;IACpB,QAAQ,EAAE,SAAS,CAAC;CACrB;AAUD,wBAAgB,cAAc,CAAC,EAC7B,KAAK,EACL,WAAW,EACX,IAAI,EACJ,KAAK,EACL,YAAY,EACZ,OAAO,EACP,OAAO,EACP,QAAQ,GACT,EAAE,mBAAmB,2CAwMrB"}
@@ -15,21 +15,11 @@ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
15
15
  import { useEffect, useCallback, useState } from "react";
16
16
  import { useRevalidator, useSearchParams } from "react-router";
17
17
  import { Maximize2, Minimize2 } from "lucide-react";
18
- import { useTheme } from "../theme/context";
19
- function parseRefreshSeconds(refresh) {
20
- const match = refresh.match(/^(\d+)(s|m|h)?$/);
21
- if (!match)
22
- return 0;
23
- const value = parseInt(match[1], 10);
24
- switch (match[2]) {
25
- case "m":
26
- return value * 60;
27
- case "h":
28
- return value * 3600;
29
- default:
30
- return value;
31
- }
32
- }
18
+ import { DashboardDescription } from "./DashboardDescription";
19
+ import { TagPills } from "./TagPills";
20
+ import { DashboardLinks } from "./DashboardLinks";
21
+ import { RefreshControl, parseRefreshParam } from "./RefreshControl";
22
+ import { RefreshProvider } from "./RefreshContext";
33
23
  function formatCountdown(seconds) {
34
24
  if (seconds <= 0)
35
25
  return "0s";
@@ -39,12 +29,16 @@ function formatCountdown(seconds) {
39
29
  const s = seconds % 60;
40
30
  return s > 0 ? `${m}m ${s}s` : `${m}m`;
41
31
  }
42
- export function DashboardShell({ title, description, refresh, filters, children, }) {
43
- const theme = useTheme();
32
+ export function DashboardShell({ title, description, tags, links, filterParams, refresh, filters, children, }) {
44
33
  const revalidator = useRevalidator();
45
34
  const [searchParams, setSearchParams] = useSearchParams();
46
- const refreshSeconds = refresh ? parseRefreshSeconds(refresh) : 0;
47
- const [countdown, setCountdown] = useState(refreshSeconds);
35
+ // Determine active refresh: URL ?refresh= overrides YAML default
36
+ const urlRefresh = searchParams.get("refresh");
37
+ const activeRefreshValue = urlRefresh ?? (refresh ? refresh.replace(/^(\d+)$/, "$1s") : "off");
38
+ const activeRefreshSeconds = parseRefreshParam(activeRefreshValue);
39
+ const [countdown, setCountdown] = useState(activeRefreshSeconds);
40
+ const [paused, setPaused] = useState(false);
41
+ const [refreshKey, setRefreshKey] = useState(0);
48
42
  const isRefreshing = revalidator.state === "loading";
49
43
  const isFullscreen = searchParams.get("fullscreen") === "1";
50
44
  const [hintHidden, setHintHidden] = useState(false);
@@ -71,6 +65,7 @@ export function DashboardShell({ title, description, refresh, filters, children,
71
65
  };
72
66
  }, [isFullscreen, setSearchParams]);
73
67
  const doRefresh = useCallback(() => {
68
+ setRefreshKey((k) => k + 1);
74
69
  revalidator.revalidate();
75
70
  }, [revalidator]);
76
71
  const toggleFullscreen = useCallback(() => {
@@ -85,15 +80,35 @@ export function DashboardShell({ title, description, refresh, filters, children,
85
80
  return next;
86
81
  }, { preventScrollReset: true });
87
82
  }, [setSearchParams]);
83
+ const handleChangeInterval = useCallback((value) => {
84
+ setSearchParams((prev) => {
85
+ const next = new URLSearchParams(prev);
86
+ if (value === "off") {
87
+ next.delete("refresh");
88
+ }
89
+ else {
90
+ next.set("refresh", value);
91
+ }
92
+ return next;
93
+ }, { preventScrollReset: true });
94
+ setPaused(false);
95
+ }, [setSearchParams]);
96
+ const handleTogglePause = useCallback(() => {
97
+ setPaused((prev) => !prev);
98
+ }, []);
99
+ // Reset countdown when interval changes
100
+ useEffect(() => {
101
+ setCountdown(activeRefreshSeconds);
102
+ }, [activeRefreshSeconds]);
88
103
  // Reset countdown when refresh completes (cleanup runs on transition from loading)
89
104
  useEffect(() => {
90
105
  if (!isRefreshing)
91
106
  return;
92
- return () => setCountdown(refreshSeconds);
93
- }, [isRefreshing, refreshSeconds]);
107
+ return () => setCountdown(activeRefreshSeconds);
108
+ }, [isRefreshing, activeRefreshSeconds]);
94
109
  // Countdown tick
95
110
  useEffect(() => {
96
- if (refreshSeconds <= 0 || isRefreshing)
111
+ if (activeRefreshSeconds <= 0 || isRefreshing || paused)
97
112
  return;
98
113
  const interval = setInterval(() => {
99
114
  setCountdown((prev) => {
@@ -105,10 +120,12 @@ export function DashboardShell({ title, description, refresh, filters, children,
105
120
  });
106
121
  }, 1000);
107
122
  return () => clearInterval(interval);
108
- }, [refreshSeconds, isRefreshing, doRefresh]);
109
- return (_jsxs("div", { className: "px-6 py-6 flex-1", children: [_jsxs("div", { className: "flex flex-col xl:flex-row xl:items-start gap-4 mb-6", children: [_jsxs("div", { className: "shrink-0", children: [_jsx("h1", { className: `${theme.typography.title} text-3xl! font-bold!`, children: title }), description && (_jsx("p", { className: `${theme.typography.muted} text-sm mt-1`, children: description }))] }), _jsxs("div", { className: "flex items-start gap-3 xl:ml-auto xl:mt-1", children: [filters, _jsxs("div", { className: "shrink-0 flex flex-col items-center gap-1", children: [_jsxs("div", { className: "flex items-center gap-2", children: [_jsx("button", { onClick: doRefresh, disabled: isRefreshing, className: "bg-indigo-500 hover:bg-indigo-600 disabled:opacity-50 text-white rounded-lg px-4 py-2 text-sm font-medium transition", children: isRefreshing ? "Refreshing\u2026" : "Refresh Now" }), !isFullscreen && (_jsx("button", { onClick: toggleFullscreen, title: "Full screen", className: `${theme.filters.background} ${theme.typography.muted} hover:${theme.typography.value} rounded-lg p-2 transition`, children: _jsx(Maximize2, { className: "w-4 h-4" }) }))] }), refreshSeconds > 0 && (_jsx("span", { className: `${theme.typography.muted} text-xs`, children: isRefreshing
123
+ }, [activeRefreshSeconds, isRefreshing, paused, doRefresh]);
124
+ return (_jsxs("div", { className: "px-6 py-6 flex-1", children: [_jsxs("div", { className: "flex flex-col xl:flex-row xl:items-start gap-4 mb-6", children: [_jsxs("div", { className: "shrink-0", children: [_jsx("h1", { className: "text-3xl font-extrabold", style: { color: "var(--text-title)", letterSpacing: "-0.03em" }, children: title }), description && _jsx(DashboardDescription, { description: description }), tags && tags.length > 0 && (_jsx("div", { className: "mt-2", children: _jsx(TagPills, { tags: tags, linkBase: "/dashboards" }) })), links && links.length > 0 && (_jsx("div", { className: "mt-2", children: _jsx(DashboardLinks, { links: links, filterParams: filterParams ?? "" }) }))] }), _jsxs("div", { className: "flex items-start gap-3 xl:ml-auto xl:mt-1", children: [filters, _jsxs("div", { className: "shrink-0 flex items-center gap-2", children: [_jsx("button", { onClick: doRefresh, disabled: isRefreshing, className: "btn-primary rounded-[10px] px-4 py-2 text-sm font-medium", children: isRefreshing ? "Refreshing\u2026" : "Refresh Now" }), _jsx(RefreshControl, { currentValue: activeRefreshValue, isRefreshing: isRefreshing, isPaused: paused, onChangeInterval: handleChangeInterval, onTogglePause: handleTogglePause }), activeRefreshSeconds > 0 && (_jsx("span", { className: "text-xs whitespace-nowrap", style: { color: "var(--text-muted)" }, children: isRefreshing
110
125
  ? "Refreshing\u2026"
111
- : `Refreshes in ${formatCountdown(countdown)}` }))] })] })] }), children, isFullscreen && (_jsxs("div", { className: "fixed top-0 inset-x-0 z-50 flex justify-center group", children: [_jsx("div", { className: "h-4 w-64" }), _jsxs("button", { onClick: toggleFullscreen, className: `absolute top-0 flex items-center gap-2 bg-gray-900/80 hover:bg-gray-900 text-white rounded-b-lg px-4 py-2 text-sm font-medium shadow-lg backdrop-blur-sm transition-transform duration-300 ease-in-out ${hintVisible
126
+ : paused
127
+ ? "Paused"
128
+ : `Refreshes in ${formatCountdown(countdown)}` })), !isFullscreen && (_jsx("button", { onClick: toggleFullscreen, title: "Full screen", className: "rounded-lg p-2 transition", style: { backgroundColor: "var(--filter-bg)", color: "var(--text-muted)" }, children: _jsx(Maximize2, { className: "w-4 h-4" }) }))] })] })] }), _jsx(RefreshProvider, { value: refreshKey, children: children }), isFullscreen && (_jsxs("div", { className: "fixed top-0 inset-x-0 z-50 flex justify-center group", children: [_jsx("div", { className: "h-4 w-64" }), _jsxs("button", { onClick: toggleFullscreen, style: { background: "rgba(0, 0, 0, 0.85)" }, className: `absolute top-0 flex items-center gap-2 text-white rounded-b-lg px-4 py-2 text-sm font-medium shadow-lg backdrop-blur-sm transition-transform duration-300 ease-in-out ${hintVisible
112
129
  ? "translate-y-0"
113
130
  : "-translate-y-full group-hover:translate-y-0"}`, children: [_jsx(Minimize2, { className: "w-4 h-4" }), "Exit Full Screen"] })] }))] }));
114
131
  }
@@ -1 +1 @@
1
- {"version":3,"file":"DashboardShell.js","sourceRoot":"","sources":["../../src/components/DashboardShell.tsx"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"DashboardShell.js","sourceRoot":"","sources":["../../src/components/DashboardShell.tsx"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"EmptyState.d.ts","sourceRoot":"","sources":["../../src/components/EmptyState.tsx"],"names":[],"mappings":"AAkBA,UAAU,eAAe;IACvB,WAAW,CAAC,EAAE,MAAM,CAAC;CACtB;AAED,wBAAgB,UAAU,CAAC,EAAE,WAAgB,EAAE,EAAE,eAAe,2CAyF/D"}
1
+ {"version":3,"file":"EmptyState.d.ts","sourceRoot":"","sources":["../../src/components/EmptyState.tsx"],"names":[],"mappings":"AAkBA,UAAU,eAAe;IACvB,WAAW,CAAC,EAAE,MAAM,CAAC;CACtB;AAED,wBAAgB,UAAU,CAAC,EAAE,WAAgB,EAAE,EAAE,eAAe,2CAuI/D"}
@@ -24,6 +24,12 @@ export function EmptyState({ exampleYaml = "" }) {
24
24
  setTimeout(() => setCopied(false), 2000);
25
25
  });
26
26
  }
27
- return (_jsx("div", { className: "flex items-center justify-center py-16", children: _jsxs("div", { className: "max-w-xl w-full text-center", children: [_jsxs("div", { className: "relative mb-10", children: [_jsx("div", { className: "absolute -inset-4 bg-indigo-400/5 rounded-full blur-3xl opacity-50" }), _jsx("div", { className: "relative flex justify-center", children: _jsx("div", { className: `w-64 h-64 ${theme.surfaces.panelHeader} rounded-2xl border-2 border-dashed ${theme.surfaces.panelBorder} flex flex-col items-center justify-center overflow-hidden`, children: _jsxs("div", { className: "w-48 space-y-3 p-6 opacity-60", children: [_jsxs("div", { className: "flex gap-2", children: [_jsx("div", { className: "h-2 w-8 bg-indigo-400/40 rounded" }), _jsx("div", { className: "h-2 w-12 bg-slate-600 rounded" })] }), _jsxs("div", { className: "flex gap-2 pl-4", children: [_jsx("div", { className: "h-2 w-16 bg-indigo-400/40 rounded" }), _jsx("div", { className: "h-2 w-6 bg-slate-600 rounded" })] }), _jsxs("div", { className: "flex gap-2 pl-4", children: [_jsx("div", { className: "h-2 w-10 bg-indigo-400/40 rounded" }), _jsx("div", { className: "h-2 w-20 bg-slate-600 rounded" })] }), _jsx("div", { className: "flex gap-2 pt-2", children: _jsx("div", { className: "h-2 w-24 bg-indigo-400/40 rounded" }) }), _jsxs("div", { className: "flex gap-2 pl-4", children: [_jsx("div", { className: "h-2 w-8 bg-indigo-400/40 rounded" }), _jsx("div", { className: "h-2 w-16 bg-slate-600 rounded" })] })] }) }) })] }), _jsx("h1", { className: `${theme.typography.title} text-3xl! font-bold! mb-3`, children: "No dashboards found" }), _jsxs("p", { className: `${theme.typography.muted} text-lg mb-10 max-w-md mx-auto leading-relaxed`, children: ["Define your first dashboard in a", " ", _jsx("code", { className: `${theme.surfaces.panelHeader} px-1.5 py-0.5 rounded text-indigo-400 font-mono text-sm italic`, children: "YAML" }), " ", "file to get started."] }), _jsxs("div", { className: "flex flex-col sm:flex-row items-center justify-center gap-4", children: [_jsxs("a", { href: "https://panoboard.dev/docs", target: "_blank", rel: "noopener noreferrer", className: "w-full sm:w-auto px-8 py-3 bg-indigo-400 hover:bg-indigo-400/90 text-slate-950 font-bold rounded-lg transition-all shadow-lg shadow-indigo-400/10 flex items-center justify-center gap-2", children: [_jsx(BookOpen, { className: "w-5 h-5" }), "View Documentation"] }), _jsxs("button", { onClick: handleCopy, className: `w-full sm:w-auto px-8 py-3 ${theme.surfaces.panelHeader} hover:opacity-90 ${theme.filters.text} font-bold rounded-lg transition-all border ${theme.surfaces.panelBorder} flex items-center justify-center gap-2`, children: [copied ? (_jsx(Check, { className: "w-5 h-5 text-emerald-400" })) : (_jsx(Copy, { className: "w-5 h-5" })), copied ? "Copied!" : "Copy Example YAML"] })] })] }) }));
27
+ return (_jsx("div", { className: "flex items-center justify-center py-16", children: _jsxs("div", { className: "max-w-xl w-full text-center", children: [_jsxs("div", { className: "relative mb-10", children: [_jsx("div", { className: "absolute -inset-4 rounded-full blur-3xl opacity-20", style: { backgroundColor: theme.primary } }), _jsx("div", { className: "relative flex justify-center", children: _jsx("div", { className: "w-64 h-64 rounded-2xl border-2 border-dashed flex flex-col items-center justify-center overflow-hidden", style: {
28
+ backgroundColor: theme.panel.header,
29
+ borderColor: theme.panel.border,
30
+ }, children: _jsxs("div", { className: "w-48 space-y-3 p-6 opacity-60", children: [_jsxs("div", { className: "flex gap-2", children: [_jsx("div", { className: "h-2 w-8 rounded", style: { backgroundColor: `${theme.primary}66` } }), _jsx("div", { className: "h-2 w-12 rounded", style: { backgroundColor: `${theme.panel.border}99` } })] }), _jsxs("div", { className: "flex gap-2 pl-4", children: [_jsx("div", { className: "h-2 w-16 rounded", style: { backgroundColor: `${theme.primary}66` } }), _jsx("div", { className: "h-2 w-6 rounded", style: { backgroundColor: `${theme.panel.border}99` } })] }), _jsxs("div", { className: "flex gap-2 pl-4", children: [_jsx("div", { className: "h-2 w-10 rounded", style: { backgroundColor: `${theme.primary}66` } }), _jsx("div", { className: "h-2 w-20 rounded", style: { backgroundColor: `${theme.panel.border}99` } })] }), _jsx("div", { className: "flex gap-2 pt-2", children: _jsx("div", { className: "h-2 w-24 rounded", style: { backgroundColor: `${theme.primary}66` } }) }), _jsxs("div", { className: "flex gap-2 pl-4", children: [_jsx("div", { className: "h-2 w-8 rounded", style: { backgroundColor: `${theme.primary}66` } }), _jsx("div", { className: "h-2 w-16 rounded", style: { backgroundColor: `${theme.panel.border}99` } })] })] }) }) })] }), _jsx("h1", { className: "text-3xl! font-bold! mb-3", style: { color: theme.typography.title }, children: "No dashboards found" }), _jsxs("p", { className: "text-lg mb-10 max-w-md mx-auto leading-relaxed", style: { color: theme.typography.muted }, children: ["Define your first dashboard in a", " ", _jsx("code", { className: "px-1.5 py-0.5 rounded font-mono text-sm italic", style: {
31
+ backgroundColor: theme.panel.header,
32
+ color: theme.primary,
33
+ }, children: "YAML" }), " ", "file to get started."] }), _jsxs("div", { className: "flex flex-col sm:flex-row items-center justify-center gap-4", children: [_jsxs("a", { href: "https://panoboard.dev/docs", target: "_blank", rel: "noopener noreferrer", className: "btn-primary w-full sm:w-auto px-8 py-3 rounded-lg flex items-center justify-center gap-2 font-bold", children: [_jsx(BookOpen, { className: "w-5 h-5" }), "View Documentation"] }), _jsxs("button", { onClick: handleCopy, className: "btn-secondary w-full sm:w-auto px-8 py-3 rounded-lg flex items-center justify-center gap-2 font-bold", children: [copied ? (_jsx(Check, { className: "w-5 h-5", style: { color: "var(--status-positive)" } })) : (_jsx(Copy, { className: "w-5 h-5" })), copied ? "Copied!" : "Copy Example YAML"] })] })] }) }));
28
34
  }
29
35
  //# sourceMappingURL=EmptyState.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"EmptyState.js","sourceRoot":"","sources":["../../src/components/EmptyState.tsx"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"EmptyState.js","sourceRoot":"","sources":["../../src/components/EmptyState.tsx"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"ErrorPage.d.ts","sourceRoot":"","sources":["../../src/components/ErrorPage.tsx"],"names":[],"mappings":"AA0BA,MAAM,WAAW,cAAc;IAC7B,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,EAAE,MAAM,CAAC;IACd,WAAW,EAAE,MAAM,CAAC;IACpB,IAAI,CAAC,EAAE,WAAW,GAAG,MAAM,CAAC;IAC5B,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,MAAM,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;IACzB,MAAM,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;CAC1B;AAED,wBAAgB,SAAS,CAAC,EACxB,IAAI,EACJ,KAAK,EACL,WAAW,EACX,IAAkB,EAClB,YAA2B,EAC3B,WAA2B,EAC3B,cAAuB,EACvB,aAAmB,EACnB,MAAM,EACN,MAAM,GACP,EAAE,cAAc,2CA2KhB"}
1
+ {"version":3,"file":"ErrorPage.d.ts","sourceRoot":"","sources":["../../src/components/ErrorPage.tsx"],"names":[],"mappings":"AAgBA,MAAM,WAAW,cAAc;IAC7B,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,EAAE,MAAM,CAAC;IACd,WAAW,EAAE,MAAM,CAAC;IACpB,IAAI,CAAC,EAAE,WAAW,GAAG,MAAM,CAAC;IAC5B,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,MAAM,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;IACzB,MAAM,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;CAC1B;AAED,wBAAgB,SAAS,CAAC,EACxB,IAAI,EACJ,KAAK,EACL,WAAW,EACX,IAAkB,EAClB,YAA2B,EAC3B,WAA2B,EAC3B,cAAuB,EACvB,aAAmB,EACnB,MAAM,EACN,MAAM,GACP,EAAE,cAAc,2CAyKhB"}
@@ -13,17 +13,7 @@ import { jsx as _jsx, jsxs as _jsxs, Fragment as _Fragment } from "react/jsx-run
13
13
  // See the License for the specific language governing permissions and
14
14
  // limitations under the License.
15
15
  import { useEffect, useState } from "react";
16
- import { useTheme } from "../theme/context";
17
- function useThemeSafe() {
18
- try {
19
- return useTheme();
20
- }
21
- catch {
22
- return null;
23
- }
24
- }
25
16
  export function ErrorPage({ code, title, description, icon = "not-found", primaryLabel = "Dashboards", primaryHref = "/dashboards", secondaryLabel = "Home", secondaryHref = "/", header, footer, }) {
26
- const theme = useThemeSafe();
27
17
  const [path, setPath] = useState("");
28
18
  const timestamp = new Date().toLocaleTimeString("en-US", {
29
19
  hour12: false,
@@ -36,14 +26,13 @@ export function ErrorPage({ code, title, description, icon = "not-found", primar
36
26
  setPath(window.location.pathname);
37
27
  }, [code, title]);
38
28
  const is404 = code === 404;
39
- const pageBg = theme?.surfaces.page ?? "";
40
- return (_jsxs("div", { className: `ep-root ${pageBg}`, children: [_jsx("style", { children: STYLES }), header, _jsxs("div", { className: "ep-page", children: [_jsx("div", { className: "ep-grid", "aria-hidden": "true" }), _jsx("div", { className: "ep-ghost ep-ghost-1", "aria-hidden": "true", children: _jsxs("div", { className: "ep-ghost-card", children: [_jsxs("div", { className: "ep-ghost-header", children: [_jsx("div", { className: "ep-ghost-dot" }), _jsx("div", { className: "ep-ghost-line w-40" })] }), _jsxs("div", { className: "ep-ghost-chart", children: [_jsx("div", { className: "ep-bar", style: { height: "60%" } }), _jsx("div", { className: "ep-bar", style: { height: "40%" } }), _jsx("div", { className: "ep-bar", style: { height: "80%" } }), _jsx("div", { className: "ep-bar", style: { height: "55%" } }), _jsx("div", { className: "ep-bar", style: { height: "70%" } })] })] }) }), _jsx("div", { className: "ep-ghost ep-ghost-2", "aria-hidden": "true", children: _jsxs("div", { className: "ep-ghost-card", children: [_jsxs("div", { className: "ep-ghost-header", children: [_jsx("div", { className: "ep-ghost-dot" }), _jsx("div", { className: "ep-ghost-line w-50" })] }), _jsxs("div", { className: "ep-ghost-chart", children: [_jsx("div", { className: "ep-bar", style: { height: "45%" } }), _jsx("div", { className: "ep-bar", style: { height: "75%" } }), _jsx("div", { className: "ep-bar", style: { height: "35%" } }), _jsx("div", { className: "ep-bar", style: { height: "90%" } }), _jsx("div", { className: "ep-bar", style: { height: "50%" } })] })] }) }), _jsx("div", { className: "ep-ghost ep-ghost-3", "aria-hidden": "true", children: _jsxs("div", { className: "ep-ghost-card", children: [_jsxs("div", { className: "ep-ghost-header", children: [_jsx("div", { className: "ep-ghost-dot" }), _jsx("div", { className: "ep-ghost-line w-60" })] }), _jsxs("div", { className: "ep-ghost-stat", children: [_jsx("div", { className: "ep-ghost-line w-30", style: { height: 24 } }), _jsx("div", { className: "ep-ghost-line w-50", style: { height: 8 } })] })] }) }), _jsxs("div", { className: "ep-rings", "aria-hidden": "true", children: [_jsx("div", { className: "ep-ring ep-ring-1" }), _jsx("div", { className: "ep-ring ep-ring-2" }), _jsx("div", { className: "ep-ring ep-ring-3" })] }), _jsxs("main", { className: "ep-content", children: [_jsxs("div", { className: "ep-code", children: [_jsx("span", { className: "ep-digit", children: String(code)[0] }), _jsx("span", { className: "ep-icon-wrap", children: _jsx("svg", { className: "ep-icon", viewBox: "0 0 24 24", fill: "none", stroke: "currentColor", strokeWidth: "1.5", strokeLinecap: "round", strokeLinejoin: "round", children: icon === "lock" ? (_jsxs(_Fragment, { children: [_jsx("rect", { x: "3", y: "11", width: "18", height: "11", rx: "2", ry: "2" }), _jsx("path", { d: "M7 11V7a5 5 0 0 1 10 0v4" })] })) : is404 ? (_jsxs(_Fragment, { children: [_jsx("circle", { cx: "12", cy: "12", r: "10" }), _jsx("line", { x1: "12", y1: "8", x2: "12", y2: "12" }), _jsx("line", { x1: "12", y1: "12", x2: "15", y2: "15" }), _jsx("line", { x1: "2", y1: "12", x2: "4", y2: "12" }), _jsx("line", { x1: "20", y1: "12", x2: "22", y2: "12" }), _jsx("line", { x1: "12", y1: "2", x2: "12", y2: "4" })] })) : (_jsx("polygon", { points: "13 2 3 14 12 14 11 22 21 10 12 10 13 2" })) }) }), _jsx("span", { className: "ep-digit", children: String(code)[2] })] }), _jsx("h1", { className: "ep-headline", children: title }), _jsx("p", { className: "ep-subtext", children: description }), _jsxs("div", { className: "ep-actions", children: [_jsxs("a", { href: primaryHref, className: "ep-btn-primary", children: [_jsxs("svg", { width: "18", height: "18", viewBox: "0 0 24 24", fill: "none", stroke: "currentColor", strokeWidth: "2", strokeLinecap: "round", strokeLinejoin: "round", children: [_jsx("rect", { x: "3", y: "3", width: "7", height: "7" }), _jsx("rect", { x: "14", y: "3", width: "7", height: "7" }), _jsx("rect", { x: "3", y: "14", width: "7", height: "7" }), _jsx("rect", { x: "14", y: "14", width: "7", height: "7" })] }), primaryLabel] }), _jsxs("a", { href: secondaryHref, className: "ep-btn-secondary", children: [secondaryLabel, _jsxs("svg", { width: "16", height: "16", viewBox: "0 0 24 24", fill: "none", stroke: "currentColor", strokeWidth: "2", strokeLinecap: "round", strokeLinejoin: "round", children: [_jsx("line", { x1: "5", y1: "12", x2: "19", y2: "12" }), _jsx("polyline", { points: "12 5 19 12 12 19" })] })] })] }), _jsxs("div", { className: "ep-terminal", children: [_jsxs("div", { className: "ep-terminal-header", children: [_jsxs("div", { className: "ep-terminal-dots", children: [_jsx("span", { className: "ep-dot ep-dot-red" }), _jsx("span", { className: "ep-dot ep-dot-yellow" }), _jsx("span", { className: "ep-dot ep-dot-green" })] }), _jsx("span", { className: "ep-terminal-title", children: "panoboard logs" })] }), _jsxs("div", { className: "ep-terminal-body", children: [_jsx("span", { className: "ep-log-time", children: timestamp }), " ", _jsx("span", { className: "ep-log-warn", children: "WARN" }), " ", is404 ? "Route not found" : icon === "lock" ? "Access denied" : "Unhandled exception", _jsx("br", {}), _jsx("span", { className: "ep-log-time", children: timestamp }), " ", _jsx("span", { className: "ep-log-info", children: "INFO" }), " Path:", " ", _jsx("span", { className: "ep-log-path", children: path || "/" }), _jsx("br", {}), _jsx("span", { className: "ep-log-time", children: timestamp }), " ", _jsx("span", { className: "ep-log-info", children: "INFO" }), " Try", " ", _jsx("a", { href: "/dashboards", className: "ep-log-link", children: "/dashboards" }), _jsx("br", {}), _jsx("span", { className: "ep-log-time", children: timestamp }), " ", _jsx("span", { className: "ep-log-ok", children: "OK" }), " ", _jsx("span", { className: "ep-cursor", children: "_" })] })] })] })] }), footer] }));
29
+ return (_jsxs("div", { className: "ep-root", children: [_jsx("style", { children: STYLES }), header, _jsxs("div", { className: "ep-page", children: [_jsx("div", { className: "ep-grid", "aria-hidden": "true" }), _jsx("div", { className: "ep-ghost ep-ghost-1", "aria-hidden": "true", children: _jsxs("div", { className: "ep-ghost-card", children: [_jsxs("div", { className: "ep-ghost-header", children: [_jsx("div", { className: "ep-ghost-dot" }), _jsx("div", { className: "ep-ghost-line w-40" })] }), _jsxs("div", { className: "ep-ghost-chart", children: [_jsx("div", { className: "ep-bar", style: { height: "60%" } }), _jsx("div", { className: "ep-bar", style: { height: "40%" } }), _jsx("div", { className: "ep-bar", style: { height: "80%" } }), _jsx("div", { className: "ep-bar", style: { height: "55%" } }), _jsx("div", { className: "ep-bar", style: { height: "70%" } })] })] }) }), _jsx("div", { className: "ep-ghost ep-ghost-2", "aria-hidden": "true", children: _jsxs("div", { className: "ep-ghost-card", children: [_jsxs("div", { className: "ep-ghost-header", children: [_jsx("div", { className: "ep-ghost-dot" }), _jsx("div", { className: "ep-ghost-line w-50" })] }), _jsxs("div", { className: "ep-ghost-chart", children: [_jsx("div", { className: "ep-bar", style: { height: "45%" } }), _jsx("div", { className: "ep-bar", style: { height: "75%" } }), _jsx("div", { className: "ep-bar", style: { height: "35%" } }), _jsx("div", { className: "ep-bar", style: { height: "90%" } }), _jsx("div", { className: "ep-bar", style: { height: "50%" } })] })] }) }), _jsx("div", { className: "ep-ghost ep-ghost-3", "aria-hidden": "true", children: _jsxs("div", { className: "ep-ghost-card", children: [_jsxs("div", { className: "ep-ghost-header", children: [_jsx("div", { className: "ep-ghost-dot" }), _jsx("div", { className: "ep-ghost-line w-60" })] }), _jsxs("div", { className: "ep-ghost-stat", children: [_jsx("div", { className: "ep-ghost-line w-30", style: { height: 24 } }), _jsx("div", { className: "ep-ghost-line w-50", style: { height: 8 } })] })] }) }), _jsxs("div", { className: "ep-rings", "aria-hidden": "true", children: [_jsx("div", { className: "ep-ring ep-ring-1" }), _jsx("div", { className: "ep-ring ep-ring-2" }), _jsx("div", { className: "ep-ring ep-ring-3" })] }), _jsxs("main", { className: "ep-content", children: [_jsxs("div", { className: "ep-code", children: [_jsx("span", { className: "ep-digit", children: String(code)[0] }), _jsx("span", { className: "ep-icon-wrap", children: _jsx("svg", { className: "ep-icon", viewBox: "0 0 24 24", fill: "none", stroke: "currentColor", strokeWidth: "1.5", strokeLinecap: "round", strokeLinejoin: "round", children: icon === "lock" ? (_jsxs(_Fragment, { children: [_jsx("rect", { x: "3", y: "11", width: "18", height: "11", rx: "2", ry: "2" }), _jsx("path", { d: "M7 11V7a5 5 0 0 1 10 0v4" })] })) : is404 ? (_jsxs(_Fragment, { children: [_jsx("circle", { cx: "12", cy: "12", r: "10" }), _jsx("line", { x1: "12", y1: "8", x2: "12", y2: "12" }), _jsx("line", { x1: "12", y1: "12", x2: "15", y2: "15" }), _jsx("line", { x1: "2", y1: "12", x2: "4", y2: "12" }), _jsx("line", { x1: "20", y1: "12", x2: "22", y2: "12" }), _jsx("line", { x1: "12", y1: "2", x2: "12", y2: "4" })] })) : (_jsx("polygon", { points: "13 2 3 14 12 14 11 22 21 10 12 10 13 2" })) }) }), _jsx("span", { className: "ep-digit", children: String(code)[2] })] }), _jsx("h1", { className: "ep-headline", children: title }), _jsx("p", { className: "ep-subtext", children: description }), _jsxs("div", { className: "ep-actions", children: [_jsxs("a", { href: primaryHref, className: "ep-btn-primary", children: [_jsxs("svg", { width: "18", height: "18", viewBox: "0 0 24 24", fill: "none", stroke: "currentColor", strokeWidth: "2", strokeLinecap: "round", strokeLinejoin: "round", children: [_jsx("rect", { x: "3", y: "3", width: "7", height: "7" }), _jsx("rect", { x: "14", y: "3", width: "7", height: "7" }), _jsx("rect", { x: "3", y: "14", width: "7", height: "7" }), _jsx("rect", { x: "14", y: "14", width: "7", height: "7" })] }), primaryLabel] }), _jsxs("a", { href: secondaryHref, className: "ep-btn-secondary", children: [secondaryLabel, _jsxs("svg", { width: "16", height: "16", viewBox: "0 0 24 24", fill: "none", stroke: "currentColor", strokeWidth: "2", strokeLinecap: "round", strokeLinejoin: "round", children: [_jsx("line", { x1: "5", y1: "12", x2: "19", y2: "12" }), _jsx("polyline", { points: "12 5 19 12 12 19" })] })] })] }), _jsxs("div", { className: "ep-terminal", children: [_jsxs("div", { className: "ep-terminal-header", children: [_jsxs("div", { className: "ep-terminal-dots", children: [_jsx("span", { className: "ep-dot ep-dot-red" }), _jsx("span", { className: "ep-dot ep-dot-yellow" }), _jsx("span", { className: "ep-dot ep-dot-green" })] }), _jsx("span", { className: "ep-terminal-title", children: "panoboard logs" })] }), _jsxs("div", { className: "ep-terminal-body", children: [_jsx("span", { className: "ep-log-time", children: timestamp }), " ", _jsx("span", { className: "ep-log-warn", children: "WARN" }), " ", is404 ? "Route not found" : icon === "lock" ? "Access denied" : "Unhandled exception", _jsx("br", {}), _jsx("span", { className: "ep-log-time", children: timestamp }), " ", _jsx("span", { className: "ep-log-info", children: "INFO" }), " Path:", " ", _jsx("span", { className: "ep-log-path", children: path || "/" }), _jsx("br", {}), _jsx("span", { className: "ep-log-time", children: timestamp }), " ", _jsx("span", { className: "ep-log-info", children: "INFO" }), " Try", " ", _jsx("a", { href: "/dashboards", className: "ep-log-link", children: "/dashboards" }), _jsx("br", {}), _jsx("span", { className: "ep-log-time", children: timestamp }), " ", _jsx("span", { className: "ep-log-ok", children: "OK" }), " ", _jsx("span", { className: "ep-cursor", children: "_" })] })] })] })] }), footer] }));
41
30
  }
42
31
  const STYLES = `
43
32
  .ep-root { display: flex; flex-direction: column; min-height: 100vh; }
44
33
  .ep-page {
45
34
  position: relative; display: flex; align-items: center; justify-content: center;
46
- flex: 1; overflow: hidden; background: var(--ep-bg, #020617);
35
+ flex: 1; overflow: hidden; background: var(--surface-page);
47
36
  font-family: "Inter", system-ui, -apple-system, sans-serif;
48
37
  -webkit-font-smoothing: antialiased;
49
38
  }
@@ -51,8 +40,8 @@ const STYLES = `
51
40
  .ep-grid {
52
41
  position: absolute; inset: -60px;
53
42
  background-image:
54
- linear-gradient(var(--ep-grid-line, #1e293b) 1px, transparent 1px),
55
- linear-gradient(90deg, var(--ep-grid-line, #1e293b) 1px, transparent 1px);
43
+ linear-gradient(var(--panel-border) 1px, transparent 1px),
44
+ linear-gradient(90deg, var(--panel-border) 1px, transparent 1px);
56
45
  background-size: 60px 60px; opacity: 0.5;
57
46
  mask-image: radial-gradient(ellipse 60% 50% at 50% 50%, black 20%, transparent 70%);
58
47
  -webkit-mask-image: radial-gradient(ellipse 60% 50% at 50% 50%, black 20%, transparent 70%);
@@ -62,7 +51,7 @@ const STYLES = `
62
51
 
63
52
  .ep-rings { position: absolute; top: 50%; left: 50%; transform: translate(-50%,-58%); pointer-events: none; }
64
53
  .ep-ring {
65
- position: absolute; border-radius: 50%; border: 2px solid var(--ep-accent, #6366f1);
54
+ position: absolute; border-radius: 50%; border: 2px solid var(--primary);
66
55
  top: 50%; left: 50%; transform: translate(-50%,-50%); opacity: 0;
67
56
  animation: ep-pulse 4s ease-out infinite;
68
57
  }
@@ -75,7 +64,7 @@ const STYLES = `
75
64
  .ep-ghost-1 { top: 12%; left: 6%; animation-delay: 0s; opacity: .15; }
76
65
  .ep-ghost-2 { top: 60%; right: 5%; animation-delay: 4s; opacity: .12; }
77
66
  .ep-ghost-3 { top: 25%; right: 12%; animation-delay: 8s; opacity: .10; }
78
- .ep-ghost-card { padding: 14px 18px; border-radius: 12px; border: 1px solid rgba(148,163,184,.12); background: rgba(15,23,42,.8); width: 180px; }
67
+ .ep-ghost-card { padding: 14px 18px; border-radius: 12px; border: 1px solid rgba(148,163,184,.12); background: var(--panel-surface); width: 180px; }
79
68
  .ep-ghost-header { display: flex; align-items: center; gap: 8px; margin-bottom: 12px; }
80
69
  .ep-ghost-dot { width: 8px; height: 8px; border-radius: 50%; background: rgba(99,102,241,.4); flex-shrink: 0; }
81
70
  .ep-ghost-line { height: 6px; border-radius: 3px; background: rgba(148,163,184,.12); }
@@ -97,34 +86,34 @@ const STYLES = `
97
86
  @keyframes ep-fade-up { from { opacity: 0; transform: translateY(30px); } to { opacity: 1; transform: translateY(0); } }
98
87
 
99
88
  .ep-code { display: flex; align-items: center; gap: .1em; margin-bottom: 1.5rem; line-height: 1; }
100
- .ep-digit { font-size: clamp(5rem,15vw,10rem); font-weight: 900; letter-spacing: -.04em; color: rgba(226,232,240,.08); }
89
+ .ep-digit { font-size: clamp(5rem,15vw,10rem); font-weight: 900; letter-spacing: -.04em; color: var(--text-title); opacity: 0.08; }
101
90
  .ep-icon-wrap { display: flex; align-items: center; justify-content: center; width: clamp(4rem,12vw,7.5rem); height: clamp(4rem,12vw,7.5rem); }
102
- .ep-icon { width: clamp(3rem,9vw,5.5rem); height: clamp(3rem,9vw,5.5rem); color: #6366f1; animation: ep-icon-pulse 3s ease-in-out infinite; }
91
+ .ep-icon { width: clamp(3rem,9vw,5.5rem); height: clamp(3rem,9vw,5.5rem); color: var(--primary); animation: ep-icon-pulse 3s ease-in-out infinite; }
103
92
  @keyframes ep-icon-pulse { 0%,100% { transform: scale(1); opacity: 1; } 50% { transform: scale(1.08); opacity: .7; } }
104
93
 
105
- .ep-headline { font-size: clamp(1.75rem,5vw,2.5rem); font-weight: 800; color: #e2e8f0; letter-spacing: -.03em; margin-bottom: .75rem; }
106
- .ep-subtext { font-size: 1.05rem; line-height: 1.7; color: #64748b; margin-bottom: 2.5rem; }
94
+ .ep-headline { font-size: clamp(1.75rem,5vw,2.5rem); font-weight: 800; color: var(--text-title); letter-spacing: -.03em; margin-bottom: .75rem; }
95
+ .ep-subtext { font-size: 1.05rem; line-height: 1.7; color: var(--text-muted); margin-bottom: 2.5rem; }
107
96
 
108
97
  .ep-actions { display: flex; gap: 1rem; margin-bottom: 3rem; flex-wrap: wrap; justify-content: center; }
109
98
  .ep-btn-primary, .ep-btn-secondary { display: inline-flex; align-items: center; gap: .5rem; padding: .85rem 1.75rem; border-radius: .75rem; font-weight: 700; font-size: .95rem; text-decoration: none; transition: all .2s; }
110
- .ep-btn-primary { background: #6366f1; color: #fff; box-shadow: 0 4px 24px rgba(99,102,241,.25); }
111
- .ep-btn-primary:hover { transform: translateY(-2px); box-shadow: 0 8px 32px rgba(99,102,241,.35); }
112
- .ep-btn-secondary { background: rgba(15,23,42,.8); color: #e2e8f0; border: 1px solid rgba(148,163,184,.15); }
113
- .ep-btn-secondary:hover { border-color: #6366f1; color: #6366f1; }
99
+ .ep-btn-primary { background: var(--primary); color: #fff; box-shadow: 0 4px 24px color-mix(in srgb, var(--primary) 25%, transparent); }
100
+ .ep-btn-primary:hover { transform: translateY(-2px); box-shadow: 0 8px 32px color-mix(in srgb, var(--primary) 35%, transparent); }
101
+ .ep-btn-secondary { background: var(--panel-surface); color: var(--text-title); border: 1px solid var(--panel-border); }
102
+ .ep-btn-secondary:hover { border-color: var(--primary); color: var(--primary); }
114
103
 
115
- .ep-terminal { width: 100%; max-width: 480px; border-radius: .75rem; overflow: hidden; border: 1px solid rgba(148,163,184,.12); text-align: left; animation: ep-fade-up .8s ease-out .3s both; }
116
- .ep-terminal-header { display: flex; align-items: center; gap: 10px; padding: 10px 16px; background: rgba(15,23,42,.8); border-bottom: 1px solid rgba(148,163,184,.12); }
104
+ .ep-terminal { width: 100%; max-width: 480px; border-radius: .75rem; overflow: hidden; border: 1px solid var(--panel-border); text-align: left; animation: ep-fade-up .8s ease-out .3s both; }
105
+ .ep-terminal-header { display: flex; align-items: center; gap: 10px; padding: 10px 16px; background: var(--panel-surface); border-bottom: 1px solid var(--panel-border); }
117
106
  .ep-terminal-dots { display: flex; gap: 6px; }
118
107
  .ep-dot { width: 10px; height: 10px; border-radius: 50%; }
119
108
  .ep-dot-red { background: #ef4444; opacity: .7; }
120
109
  .ep-dot-yellow { background: #eab308; opacity: .7; }
121
110
  .ep-dot-green { background: #22c55e; opacity: .7; }
122
- .ep-terminal-title { font-family: "JetBrains Mono", monospace; font-size: .7rem; color: #64748b; letter-spacing: .02em; }
123
- .ep-terminal-body { padding: 16px 20px; font-family: "JetBrains Mono", monospace; font-size: .78rem; line-height: 2; background: rgba(10,15,30,.9); color: #94a3b8; }
124
- .ep-log-time { color: #475569; } .ep-log-warn { color: #f59e0b; font-weight: 700; }
125
- .ep-log-info { color: #6366f1; font-weight: 700; } .ep-log-ok { color: #22c55e; font-weight: 700; }
126
- .ep-log-path { color: #e2e8f0; } .ep-log-link { color: #6366f1; text-decoration: underline; text-underline-offset: 2px; }
127
- .ep-cursor { animation: ep-blink 1s step-end infinite; color: #6366f1; }
111
+ .ep-terminal-title { font-family: "JetBrains Mono", monospace; font-size: .7rem; color: var(--text-muted); letter-spacing: .02em; }
112
+ .ep-terminal-body { padding: 16px 20px; font-family: "JetBrains Mono", monospace; font-size: .78rem; line-height: 2; background: var(--panel-surface); color: var(--text-muted); opacity: 0.9; }
113
+ .ep-log-time { color: var(--text-muted); opacity: 0.6; } .ep-log-warn { color: #f59e0b; font-weight: 700; }
114
+ .ep-log-info { color: var(--primary); font-weight: 700; } .ep-log-ok { color: #22c55e; font-weight: 700; }
115
+ .ep-log-path { color: var(--text-title); } .ep-log-link { color: var(--primary); text-decoration: underline; text-underline-offset: 2px; }
116
+ .ep-cursor { animation: ep-blink 1s step-end infinite; color: var(--primary); }
128
117
  @keyframes ep-blink { 0%,100% { opacity: 1; } 50% { opacity: 0; } }
129
118
 
130
119
  @media (max-width: 640px) { .ep-ghost { display: none; } .ep-ring-3 { display: none; } .ep-terminal { max-width: 100%; } }
@@ -1 +1 @@
1
- {"version":3,"file":"ErrorPage.js","sourceRoot":"","sources":["../../src/components/ErrorPage.tsx"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"ErrorPage.js","sourceRoot":"","sources":["../../src/components/ErrorPage.tsx"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"FilterBar.d.ts","sourceRoot":"","sources":["../../src/components/FilterBar.tsx"],"names":[],"mappings":"AAkBA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,sBAAsB,CAAC;AAQnD,UAAU,cAAc;IACtB,OAAO,EAAE,MAAM,EAAE,CAAC;IAClB,WAAW,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CACtC;AAED,wBAAgB,SAAS,CAAC,EAAE,OAAO,EAAE,WAAW,EAAE,EAAE,cAAc,kDA+IjE"}
1
+ {"version":3,"file":"FilterBar.d.ts","sourceRoot":"","sources":["../../src/components/FilterBar.tsx"],"names":[],"mappings":"AAiBA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,sBAAsB,CAAC;AASnD,UAAU,cAAc;IACtB,OAAO,EAAE,MAAM,EAAE,CAAC;IAClB,WAAW,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CACtC;AAED,wBAAgB,SAAS,CAAC,EAAE,OAAO,EAAE,WAAW,EAAE,EAAE,cAAc,kDAwLjE"}