@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,59 @@
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 { ResponsiveTreeMap } from "@nivo/treemap";
16
+ import { buildNivoTheme, getChartPalette } from "./nivo-theme";
17
+ import { useTheme } from "../../theme/context";
18
+ export function TreemapChart({ 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 parentKey = config.parent;
25
+ // Build hierarchical tree structure
26
+ let root;
27
+ if (parentKey) {
28
+ // Build tree from parent-child rows
29
+ const nodeMap = new Map();
30
+ for (const row of data) {
31
+ const id = String(row[idKey]);
32
+ nodeMap.set(id, { id, value: Number(row[valueKey]) || 0, children: [] });
33
+ }
34
+ const roots = [];
35
+ for (const row of data) {
36
+ const id = String(row[idKey]);
37
+ const parent = row[parentKey] ? String(row[parentKey]) : null;
38
+ if (parent && nodeMap.has(parent)) {
39
+ nodeMap.get(parent).children.push(nodeMap.get(id));
40
+ }
41
+ else {
42
+ roots.push(nodeMap.get(id));
43
+ }
44
+ }
45
+ root = { id: "root", children: roots };
46
+ }
47
+ else {
48
+ // Flat: all rows are leaf nodes under a synthetic root
49
+ root = {
50
+ id: "root",
51
+ children: data.map((row) => ({
52
+ id: String(row[idKey]),
53
+ value: Number(row[valueKey]) || 0,
54
+ })),
55
+ };
56
+ }
57
+ return (_jsx("div", { style: { height: "100%" }, children: _jsx(ResponsiveTreeMap, { data: root, identity: "id", value: "value", colors: palette, theme: nivoTheme, margin: { top: 8, right: 8, bottom: 8, left: 8 }, labelSkipSize: 12, label: "id", parentLabelPosition: "left", parentLabelTextColor: { from: "color", modifiers: [["darker", 2]] }, borderColor: { from: "color", modifiers: [["darker", 0.1]] } }) }));
58
+ }
59
+ //# sourceMappingURL=TreemapChart.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"TreemapChart.js","sourceRoot":"","sources":["../../../src/components/panels/TreemapChart.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,eAAe,EAAE,MAAM,cAAc,CAAC;AAC/D,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;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,SAAS,GAAuB,MAAM,CAAC,MAAM,CAAC;IAEpD,oCAAoC;IACpC,IAAI,IAAS,CAAC;IAEd,IAAI,SAAS,EAAE,CAAC;QACd,oCAAoC;QACpC,MAAM,OAAO,GAAG,IAAI,GAAG,EAAe,CAAC;QACvC,KAAK,MAAM,GAAG,IAAI,IAAI,EAAE,CAAC;YACvB,MAAM,EAAE,GAAG,MAAM,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC;YAC9B,OAAO,CAAC,GAAG,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,KAAK,EAAE,MAAM,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC,IAAI,CAAC,EAAE,QAAQ,EAAE,EAAE,EAAE,CAAC,CAAC;QAC3E,CAAC;QACD,MAAM,KAAK,GAAU,EAAE,CAAC;QACxB,KAAK,MAAM,GAAG,IAAI,IAAI,EAAE,CAAC;YACvB,MAAM,EAAE,GAAG,MAAM,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC;YAC9B,MAAM,MAAM,GAAG,GAAG,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;YAC9D,IAAI,MAAM,IAAI,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC;gBAClC,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,QAAQ,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC;YACrD,CAAC;iBAAM,CAAC;gBACN,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC;YAC9B,CAAC;QACH,CAAC;QACD,IAAI,GAAG,EAAE,EAAE,EAAE,MAAM,EAAE,QAAQ,EAAE,KAAK,EAAE,CAAC;IACzC,CAAC;SAAM,CAAC;QACN,uDAAuD;QACvD,IAAI,GAAG;YACL,EAAE,EAAE,MAAM;YACV,QAAQ,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC;gBAC3B,EAAE,EAAE,MAAM,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;gBACtB,KAAK,EAAE,MAAM,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC,IAAI,CAAC;aAClC,CAAC,CAAC;SACJ,CAAC;IACJ,CAAC;IAED,OAAO,CACL,cAAK,KAAK,EAAE,EAAE,MAAM,EAAE,MAAM,EAAE,YAC5B,KAAC,iBAAiB,IAChB,IAAI,EAAE,IAAI,EACV,QAAQ,EAAC,IAAI,EACb,KAAK,EAAC,OAAO,EACb,MAAM,EAAE,OAAO,EACf,KAAK,EAAE,SAAS,EAChB,MAAM,EAAE,EAAE,GAAG,EAAE,CAAC,EAAE,KAAK,EAAE,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,IAAI,EAAE,CAAC,EAAE,EAChD,aAAa,EAAE,EAAE,EACjB,KAAK,EAAC,IAAI,EACV,mBAAmB,EAAC,MAAM,EAC1B,oBAAoB,EAAE,EAAE,IAAI,EAAE,OAAO,EAAE,SAAS,EAAE,CAAC,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAC,EAAE,EACnE,WAAW,EAAE,EAAE,IAAI,EAAE,OAAO,EAAE,SAAS,EAAE,CAAC,CAAC,QAAQ,EAAE,GAAG,CAAC,CAAC,EAAE,GAC5D,GACE,CACP,CAAC;AACJ,CAAC"}
@@ -0,0 +1,15 @@
1
+ interface VideoPanelProps {
2
+ panel: {
3
+ video?: {
4
+ src?: string;
5
+ autoplay?: boolean;
6
+ loop?: boolean;
7
+ muted?: boolean;
8
+ poster?: string;
9
+ controls?: boolean;
10
+ };
11
+ };
12
+ }
13
+ export declare function VideoPanel({ panel }: VideoPanelProps): import("react/jsx-runtime").JSX.Element;
14
+ export {};
15
+ //# sourceMappingURL=VideoPanel.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"VideoPanel.d.ts","sourceRoot":"","sources":["../../../src/components/panels/VideoPanel.tsx"],"names":[],"mappings":"AAgBA,UAAU,eAAe;IACvB,KAAK,EAAE;QACL,KAAK,CAAC,EAAE;YACN,GAAG,CAAC,EAAE,MAAM,CAAC;YACb,QAAQ,CAAC,EAAE,OAAO,CAAC;YACnB,IAAI,CAAC,EAAE,OAAO,CAAC;YACf,KAAK,CAAC,EAAE,OAAO,CAAC;YAChB,MAAM,CAAC,EAAE,MAAM,CAAC;YAChB,QAAQ,CAAC,EAAE,OAAO,CAAC;SACpB,CAAC;KACH,CAAC;CACH;AAED,wBAAgB,UAAU,CAAC,EAAE,KAAK,EAAE,EAAE,eAAe,2CAiCpD"}
@@ -0,0 +1,25 @@
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 { useTheme } from "../../theme/context";
16
+ export function VideoPanel({ panel }) {
17
+ const theme = useTheme();
18
+ const cfg = panel.video ?? {};
19
+ const { src, autoplay = false, loop = false, muted = false, poster, controls = true, } = cfg;
20
+ if (!src) {
21
+ return (_jsx("div", { className: `flex items-center justify-center h-full ${theme.typography.muted}`, children: "No video source configured" }));
22
+ }
23
+ return (_jsx("video", { src: src, autoPlay: autoplay, loop: loop, muted: muted, poster: poster, controls: controls, className: "w-full h-full object-contain" }));
24
+ }
25
+ //# sourceMappingURL=VideoPanel.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"VideoPanel.js","sourceRoot":"","sources":["../../../src/components/panels/VideoPanel.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;AAe/C,MAAM,UAAU,UAAU,CAAC,EAAE,KAAK,EAAmB;IACnD,MAAM,KAAK,GAAG,QAAQ,EAAE,CAAC;IACzB,MAAM,GAAG,GAAG,KAAK,CAAC,KAAK,IAAI,EAAE,CAAC;IAC9B,MAAM,EACJ,GAAG,EACH,QAAQ,GAAG,KAAK,EAChB,IAAI,GAAG,KAAK,EACZ,KAAK,GAAG,KAAK,EACb,MAAM,EACN,QAAQ,GAAG,IAAI,GAChB,GAAG,GAAG,CAAC;IAER,IAAI,CAAC,GAAG,EAAE,CAAC;QACT,OAAO,CACL,cACE,SAAS,EAAE,2CAA2C,KAAK,CAAC,UAAU,CAAC,KAAK,EAAE,2CAG1E,CACP,CAAC;IACJ,CAAC;IAED,OAAO,CACL,gBACE,GAAG,EAAE,GAAG,EACR,QAAQ,EAAE,QAAQ,EAClB,IAAI,EAAE,IAAI,EACV,KAAK,EAAE,KAAK,EACZ,MAAM,EAAE,MAAM,EACd,QAAQ,EAAE,QAAQ,EAClB,SAAS,EAAC,8BAA8B,GACxC,CACH,CAAC;AACJ,CAAC"}
@@ -0,0 +1,7 @@
1
+ interface ChartPanelProps {
2
+ data: Record<string, unknown>[];
3
+ config: any;
4
+ }
5
+ export declare function WaffleChart({ data, config }: ChartPanelProps): import("react/jsx-runtime").JSX.Element;
6
+ export {};
7
+ //# sourceMappingURL=WaffleChart.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"WaffleChart.d.ts","sourceRoot":"","sources":["../../../src/components/panels/WaffleChart.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,WAAW,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,EAAE,eAAe,2CA6C5D"}
@@ -0,0 +1,46 @@
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 { ResponsiveWaffle } from "@nivo/waffle";
16
+ import { buildNivoTheme, getChartPalette } from "./nivo-theme";
17
+ import { useTheme } from "../../theme/context";
18
+ export function WaffleChart({ 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
+ const total = chartData.reduce((sum, d) => sum + d.value, 0) || 100;
31
+ return (_jsx("div", { style: { height: "100%" }, children: _jsx(ResponsiveWaffle, { data: chartData, total: total, rows: 10, columns: 10, colors: palette, theme: nivoTheme, margin: { top: 16, right: 120, bottom: 16, left: 16 }, padding: 2, legends: [
32
+ {
33
+ anchor: "right",
34
+ direction: "column",
35
+ justify: false,
36
+ translateX: 120,
37
+ translateY: 0,
38
+ itemsSpacing: 4,
39
+ itemWidth: 100,
40
+ itemHeight: 20,
41
+ itemDirection: "left-to-right",
42
+ symbolSize: 12,
43
+ },
44
+ ] }) }));
45
+ }
46
+ //# sourceMappingURL=WaffleChart.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"WaffleChart.js","sourceRoot":"","sources":["../../../src/components/panels/WaffleChart.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,MAAM,KAAK,GAAG,SAAS,CAAC,MAAM,CAAC,CAAC,GAAG,EAAE,CAAC,EAAE,EAAE,CAAC,GAAG,GAAG,CAAC,CAAC,KAAK,EAAE,CAAC,CAAC,IAAI,GAAG,CAAC;IAEpE,OAAO,CACL,cAAK,KAAK,EAAE,EAAE,MAAM,EAAE,MAAM,EAAE,YAC5B,KAAC,gBAAgB,IACf,IAAI,EAAE,SAAS,EACf,KAAK,EAAE,KAAK,EACZ,IAAI,EAAE,EAAE,EACR,OAAO,EAAE,EAAE,EACX,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,EAAE,EAAE,EACrD,OAAO,EAAE,CAAC,EACV,OAAO,EAAE;gBACP;oBACE,MAAM,EAAE,OAAO;oBACf,SAAS,EAAE,QAAQ;oBACnB,OAAO,EAAE,KAAK;oBACd,UAAU,EAAE,GAAG;oBACf,UAAU,EAAE,CAAC;oBACb,YAAY,EAAE,CAAC;oBACf,SAAS,EAAE,GAAG;oBACd,UAAU,EAAE,EAAE;oBACd,aAAa,EAAE,eAAe;oBAC9B,UAAU,EAAE,EAAE;iBACf;aACF,GACD,GACE,CACP,CAAC;AACJ,CAAC"}
@@ -0,0 +1,3 @@
1
+ import type React from "react";
2
+ export declare const panelRegistry: Record<string, React.ComponentType<any>>;
3
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/components/panels/index.ts"],"names":[],"mappings":"AAcA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAsB/B,eAAO,MAAM,aAAa,EAAE,MAAM,CAAC,MAAM,EAAE,KAAK,CAAC,aAAa,CAAC,GAAG,CAAC,CAyBlE,CAAC"}
@@ -0,0 +1,60 @@
1
+ // Copyright 2026 Mataki Labs LLC
2
+ //
3
+ // Licensed under the Business Source License 1.1 (the "License");
4
+ // you may not use this file except in compliance with the License.
5
+ // You may obtain a copy of the License at
6
+ //
7
+ // https://github.com/panoboard/panoboard/blob/main/LICENSE
8
+ //
9
+ // Unless required by applicable law or agreed to in writing, software
10
+ // distributed under the License is distributed on an "AS IS" BASIS,
11
+ // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12
+ // See the License for the specific language governing permissions and
13
+ // limitations under the License.
14
+ import { BarChart } from "./BarChart";
15
+ import { LineChart } from "./LineChart";
16
+ import { AreaChart } from "./AreaChart";
17
+ import { PieChart } from "./PieChart";
18
+ import { DonutChart } from "./DonutChart";
19
+ import { ScatterChart } from "./ScatterChart";
20
+ import { HeatmapChart } from "./HeatmapChart";
21
+ import { FunnelChart } from "./FunnelChart";
22
+ import { SankeyChart } from "./SankeyChart";
23
+ import { CalendarHeatmap } from "./CalendarHeatmap";
24
+ import { RadarChart } from "./RadarChart";
25
+ import { TreemapChart } from "./TreemapChart";
26
+ import { BumpChart } from "./BumpChart";
27
+ import { BulletChart } from "./BulletChart";
28
+ import { RadialBarChart } from "./RadialBarChart";
29
+ import { BoxPlotChart } from "./BoxPlotChart";
30
+ import { WaffleChart } from "./WaffleChart";
31
+ import { StreamChart } from "./StreamChart";
32
+ import { SunburstChart } from "./SunburstChart";
33
+ import { VideoPanel } from "./VideoPanel";
34
+ export const panelRegistry = {
35
+ bar: BarChart,
36
+ line: LineChart,
37
+ area: AreaChart,
38
+ pie: PieChart,
39
+ donut: DonutChart,
40
+ scatter: ScatterChart,
41
+ heatmap: HeatmapChart,
42
+ funnel: FunnelChart,
43
+ sankey: SankeyChart,
44
+ calendar: CalendarHeatmap,
45
+ calendar_heatmap: CalendarHeatmap,
46
+ "calendar-heatmap": CalendarHeatmap,
47
+ radar: RadarChart,
48
+ treemap: TreemapChart,
49
+ bump: BumpChart,
50
+ bullet: BulletChart,
51
+ "radial-bar": RadialBarChart,
52
+ radialbar: RadialBarChart,
53
+ boxplot: BoxPlotChart,
54
+ "box-plot": BoxPlotChart,
55
+ waffle: WaffleChart,
56
+ stream: StreamChart,
57
+ sunburst: SunburstChart,
58
+ video: VideoPanel,
59
+ };
60
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/components/panels/index.ts"],"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;AAGjC,OAAO,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC;AACtC,OAAO,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AACxC,OAAO,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AACxC,OAAO,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC;AACtC,OAAO,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;AAC1C,OAAO,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAC;AAC9C,OAAO,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAC;AAC9C,OAAO,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AAC5C,OAAO,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AAC5C,OAAO,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAC;AACpD,OAAO,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;AAC1C,OAAO,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAC;AAC9C,OAAO,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AACxC,OAAO,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AAC5C,OAAO,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAC;AAClD,OAAO,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAC;AAC9C,OAAO,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AAC5C,OAAO,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AAC5C,OAAO,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAC;AAChD,OAAO,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;AAE1C,MAAM,CAAC,MAAM,aAAa,GAA6C;IACrE,GAAG,EAAE,QAAQ;IACb,IAAI,EAAE,SAAS;IACf,IAAI,EAAE,SAAS;IACf,GAAG,EAAE,QAAQ;IACb,KAAK,EAAE,UAAU;IACjB,OAAO,EAAE,YAAY;IACrB,OAAO,EAAE,YAAY;IACrB,MAAM,EAAE,WAAW;IACnB,MAAM,EAAE,WAAW;IACnB,QAAQ,EAAE,eAAe;IACzB,gBAAgB,EAAE,eAAe;IACjC,kBAAkB,EAAE,eAAe;IACnC,KAAK,EAAE,UAAU;IACjB,OAAO,EAAE,YAAY;IACrB,IAAI,EAAE,SAAS;IACf,MAAM,EAAE,WAAW;IACnB,YAAY,EAAE,cAAc;IAC5B,SAAS,EAAE,cAAc;IACzB,OAAO,EAAE,YAAY;IACrB,UAAU,EAAE,YAAY;IACxB,MAAM,EAAE,WAAW;IACnB,MAAM,EAAE,WAAW;IACnB,QAAQ,EAAE,aAAa;IACvB,KAAK,EAAE,UAAU;CAClB,CAAC"}
@@ -0,0 +1,95 @@
1
+ import type { Theme } from "../../schemas/theme";
2
+ /**
3
+ * Build a Nivo theme configuration object from a Panoboard Theme.
4
+ * Extracts hex colors from Tailwind class strings for use in SVG rendering.
5
+ */
6
+ export declare function buildNivoTheme(theme: Theme): {
7
+ text: {
8
+ fontSize: number;
9
+ fill: string;
10
+ };
11
+ axis: {
12
+ ticks: {
13
+ text: {
14
+ fill: string;
15
+ fontSize: number;
16
+ };
17
+ };
18
+ legend: {
19
+ text: {
20
+ fill: string;
21
+ fontSize: number;
22
+ };
23
+ };
24
+ };
25
+ grid: {
26
+ line: {
27
+ stroke: string;
28
+ strokeWidth: number;
29
+ };
30
+ };
31
+ tooltip: {
32
+ container: {
33
+ background: string;
34
+ border: string;
35
+ borderRadius: number;
36
+ padding: string;
37
+ color: string;
38
+ fontSize: number;
39
+ };
40
+ };
41
+ legends: {
42
+ text: {
43
+ fill: string;
44
+ fontSize: number;
45
+ };
46
+ };
47
+ };
48
+ /**
49
+ * Get the chart color palette from a Panoboard Theme.
50
+ */
51
+ export declare function getChartPalette(theme: Theme): string[];
52
+ export declare const nivoDarkTheme: {
53
+ text: {
54
+ fontSize: number;
55
+ fill: string;
56
+ };
57
+ axis: {
58
+ ticks: {
59
+ text: {
60
+ fill: string;
61
+ fontSize: number;
62
+ };
63
+ };
64
+ legend: {
65
+ text: {
66
+ fill: string;
67
+ fontSize: number;
68
+ };
69
+ };
70
+ };
71
+ grid: {
72
+ line: {
73
+ stroke: string;
74
+ strokeWidth: number;
75
+ };
76
+ };
77
+ tooltip: {
78
+ container: {
79
+ background: string;
80
+ border: string;
81
+ borderRadius: number;
82
+ padding: string;
83
+ color: string;
84
+ fontSize: number;
85
+ };
86
+ };
87
+ legends: {
88
+ text: {
89
+ fill: string;
90
+ fontSize: number;
91
+ };
92
+ };
93
+ };
94
+ export declare const PALETTE: string[];
95
+ //# sourceMappingURL=nivo-theme.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"nivo-theme.d.ts","sourceRoot":"","sources":["../../../src/components/panels/nivo-theme.ts"],"names":[],"mappings":"AAcA,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,qBAAqB,CAAC;AA+DjD;;;GAGG;AACH,wBAAgB,cAAc,CAAC,KAAK,EAAE,KAAK;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EA2B1C;AAED;;GAEG;AACH,wBAAgB,eAAe,CAAC,KAAK,EAAE,KAAK,GAAG,MAAM,EAAE,CAEtD;AAGD,eAAO,MAAM,aAAa;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAkBzB,CAAC;AAEF,eAAO,MAAM,OAAO,UASnB,CAAC"}
@@ -0,0 +1,140 @@
1
+ // Copyright 2026 Mataki Labs LLC
2
+ //
3
+ // Licensed under the Business Source License 1.1 (the "License");
4
+ // you may not use this file except in compliance with the License.
5
+ // You may obtain a copy of the License at
6
+ //
7
+ // https://github.com/panoboard/panoboard/blob/main/LICENSE
8
+ //
9
+ // Unless required by applicable law or agreed to in writing, software
10
+ // distributed under the License is distributed on an "AS IS" BASIS,
11
+ // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12
+ // See the License for the specific language governing permissions and
13
+ // limitations under the License.
14
+ /**
15
+ * Extract a hex color from a Tailwind arbitrary value class.
16
+ * e.g. "text-[#f8f8f2]" → "#f8f8f2", "bg-[#282a36]" → "#282a36"
17
+ * Falls back to the provided default if no hex is found.
18
+ */
19
+ function extractHex(twClass, fallback) {
20
+ const match = twClass.match(/#[0-9a-fA-F]{3,8}/);
21
+ if (match)
22
+ return match[0];
23
+ // Map common named Tailwind colors to hex values
24
+ const namedColors = {
25
+ "slate-50": "#f8fafc",
26
+ "slate-100": "#f1f5f9",
27
+ "slate-200": "#e2e8f0",
28
+ "slate-300": "#cbd5e1",
29
+ "slate-400": "#94a3b8",
30
+ "slate-500": "#64748b",
31
+ "slate-600": "#475569",
32
+ "slate-700": "#334155",
33
+ "slate-800": "#1e293b",
34
+ "slate-900": "#0f172a",
35
+ "slate-950": "#020617",
36
+ "gray-50": "#f9fafb",
37
+ "gray-100": "#f3f4f6",
38
+ "gray-200": "#e5e7eb",
39
+ "gray-300": "#d1d5db",
40
+ "gray-400": "#9ca3af",
41
+ "gray-500": "#6b7280",
42
+ "gray-600": "#4b5563",
43
+ "gray-700": "#374151",
44
+ "gray-800": "#1f2937",
45
+ "gray-900": "#111827",
46
+ "gray-950": "#030712",
47
+ "zinc-50": "#fafafa",
48
+ "zinc-100": "#f4f4f5",
49
+ "zinc-200": "#e4e4e7",
50
+ "zinc-300": "#d4d4d8",
51
+ "zinc-400": "#a1a1aa",
52
+ "zinc-500": "#71717a",
53
+ "zinc-600": "#52525b",
54
+ "zinc-700": "#3f3f46",
55
+ "zinc-800": "#27272a",
56
+ "zinc-900": "#18181b",
57
+ "zinc-950": "#09090b",
58
+ white: "#ffffff",
59
+ black: "#000000",
60
+ "indigo-300": "#a5b4fc",
61
+ "indigo-400": "#818cf8",
62
+ "indigo-500": "#6366f1",
63
+ "red-400": "#f87171",
64
+ "emerald-400": "#34d399",
65
+ "amber-400": "#fbbf24",
66
+ };
67
+ for (const [name, hex] of Object.entries(namedColors)) {
68
+ if (twClass.includes(name))
69
+ return hex;
70
+ }
71
+ return fallback;
72
+ }
73
+ /**
74
+ * Build a Nivo theme configuration object from a Panoboard Theme.
75
+ * Extracts hex colors from Tailwind class strings for use in SVG rendering.
76
+ */
77
+ export function buildNivoTheme(theme) {
78
+ const axisText = extractHex(theme.typography.label, "#94a3b8");
79
+ const axisLegend = extractHex(theme.typography.muted, "#94a3b8");
80
+ const gridLine = extractHex(theme.surfaces.panelBorder, "#1e293b");
81
+ const tooltipBg = extractHex(theme.surfaces.panel, "#141b2d");
82
+ const tooltipBorder = extractHex(theme.surfaces.panelBorder, "#334155");
83
+ const tooltipText = extractHex(theme.typography.panelTitle, "#f1f5f9");
84
+ return {
85
+ text: { fontSize: 11, fill: axisText },
86
+ axis: {
87
+ ticks: { text: { fill: axisText, fontSize: 11 } },
88
+ legend: { text: { fill: axisLegend, fontSize: 12 } },
89
+ },
90
+ grid: { line: { stroke: gridLine, strokeWidth: 1 } },
91
+ tooltip: {
92
+ container: {
93
+ background: tooltipBg,
94
+ border: `1px solid ${tooltipBorder}`,
95
+ borderRadius: 8,
96
+ padding: "8px 12px",
97
+ color: tooltipText,
98
+ fontSize: 12,
99
+ },
100
+ },
101
+ legends: { text: { fill: axisLegend, fontSize: 11 } },
102
+ };
103
+ }
104
+ /**
105
+ * Get the chart color palette from a Panoboard Theme.
106
+ */
107
+ export function getChartPalette(theme) {
108
+ return theme.palette;
109
+ }
110
+ // Legacy exports for backwards compatibility during migration
111
+ export const nivoDarkTheme = {
112
+ text: { fontSize: 11, fill: "#94a3b8" },
113
+ axis: {
114
+ ticks: { text: { fill: "#64748b", fontSize: 11 } },
115
+ legend: { text: { fill: "#94a3b8", fontSize: 12 } },
116
+ },
117
+ grid: { line: { stroke: "#1e293b", strokeWidth: 1 } },
118
+ tooltip: {
119
+ container: {
120
+ background: "#141b2d",
121
+ border: "1px solid #334155",
122
+ borderRadius: 8,
123
+ padding: "8px 12px",
124
+ color: "#f1f5f9",
125
+ fontSize: 12,
126
+ },
127
+ },
128
+ legends: { text: { fill: "#94a3b8", fontSize: 11 } },
129
+ };
130
+ export const PALETTE = [
131
+ "#818cf8",
132
+ "#34d399",
133
+ "#f59e0b",
134
+ "#fb7185",
135
+ "#22d3ee",
136
+ "#a78bfa",
137
+ "#2dd4bf",
138
+ "#fb923c",
139
+ ];
140
+ //# sourceMappingURL=nivo-theme.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"nivo-theme.js","sourceRoot":"","sources":["../../../src/components/panels/nivo-theme.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,7 @@
1
+ import type { Theme } from "../../schemas/theme";
2
+ /**
3
+ * Given a series value string and the current theme, returns a hex color
4
+ * if the value has a known semantic meaning, or undefined otherwise.
5
+ */
6
+ export declare function extractSemanticColor(value: string, theme: Theme): string | undefined;
7
+ //# sourceMappingURL=semantic-colors.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"semantic-colors.d.ts","sourceRoot":"","sources":["../../../src/components/panels/semantic-colors.ts"],"names":[],"mappings":"AAcA,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,qBAAqB,CAAC;AAmFjD;;;GAGG;AACH,wBAAgB,oBAAoB,CAClC,KAAK,EAAE,MAAM,EACb,KAAK,EAAE,KAAK,GACX,MAAM,GAAG,SAAS,CAOpB"}
@@ -0,0 +1,100 @@
1
+ // Copyright 2026 Mataki Labs LLC
2
+ //
3
+ // Licensed under the Business Source License 1.1 (the "License");
4
+ // you may not use this file except in compliance with the License.
5
+ // You may obtain a copy of the License at
6
+ //
7
+ // https://github.com/panoboard/panoboard/blob/main/LICENSE
8
+ //
9
+ // Unless required by applicable law or agreed to in writing, software
10
+ // distributed under the License is distributed on an "AS IS" BASIS,
11
+ // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12
+ // See the License for the specific language governing permissions and
13
+ // limitations under the License.
14
+ /**
15
+ * Maps well-known series values (like "critical", "success", "warning")
16
+ * to their semantic theme color. Returns a hex color or undefined if
17
+ * the value has no semantic meaning.
18
+ *
19
+ * Extracts the hex from Tailwind `text-xxx` classes in the theme.
20
+ */
21
+ const SEMANTIC_MAP = {
22
+ // Negative / danger
23
+ critical: "negative",
24
+ error: "negative",
25
+ failed: "negative",
26
+ failure: "negative",
27
+ down: "negative",
28
+ urgent: "negative",
29
+ // Warning
30
+ warning: "warning",
31
+ warn: "warning",
32
+ degraded: "warning",
33
+ rolled_back: "warning",
34
+ pending: "warning",
35
+ high: "warning",
36
+ // Positive / success
37
+ success: "positive",
38
+ healthy: "positive",
39
+ ok: "positive",
40
+ up: "positive",
41
+ resolved: "positive",
42
+ completed: "positive",
43
+ active: "positive",
44
+ low: "positive",
45
+ // Neutral
46
+ info: "neutral",
47
+ unknown: "neutral",
48
+ stable: "neutral",
49
+ medium: "neutral",
50
+ open: "neutral",
51
+ };
52
+ const HEX_PATTERN = /#[0-9a-fA-F]{3,8}/;
53
+ const NAMED_COLORS = {
54
+ "emerald-400": "#34d399",
55
+ "emerald-500": "#10b981",
56
+ "emerald-600": "#059669",
57
+ "green-400": "#4ade80",
58
+ "green-500": "#22c55e",
59
+ "red-400": "#f87171",
60
+ "red-500": "#ef4444",
61
+ "red-600": "#dc2626",
62
+ "rose-400": "#fb7185",
63
+ "rose-500": "#f43f5e",
64
+ "amber-400": "#fbbf24",
65
+ "amber-500": "#f59e0b",
66
+ "amber-600": "#d97706",
67
+ "orange-400": "#fb923c",
68
+ "orange-500": "#f97316",
69
+ "yellow-400": "#facc15",
70
+ "yellow-500": "#eab308",
71
+ "slate-400": "#94a3b8",
72
+ "slate-500": "#64748b",
73
+ "gray-400": "#9ca3af",
74
+ "gray-500": "#6b7280",
75
+ "blue-400": "#60a5fa",
76
+ "blue-500": "#3b82f6",
77
+ };
78
+ function extractHex(twClass) {
79
+ const hexMatch = twClass.match(HEX_PATTERN);
80
+ if (hexMatch)
81
+ return hexMatch[0];
82
+ for (const [name, hex] of Object.entries(NAMED_COLORS)) {
83
+ if (twClass.includes(name))
84
+ return hex;
85
+ }
86
+ return undefined;
87
+ }
88
+ /**
89
+ * Given a series value string and the current theme, returns a hex color
90
+ * if the value has a known semantic meaning, or undefined otherwise.
91
+ */
92
+ export function extractSemanticColor(value, theme) {
93
+ const key = value.toLowerCase().replace(/[\s-]/g, "_");
94
+ const statusKey = SEMANTIC_MAP[key];
95
+ if (!statusKey)
96
+ return undefined;
97
+ const twClass = theme.status[statusKey];
98
+ return extractHex(twClass);
99
+ }
100
+ //# sourceMappingURL=semantic-colors.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"semantic-colors.js","sourceRoot":"","sources":["../../../src/components/panels/semantic-colors.ts"],"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;AAIjC;;;;;;GAMG;AAEH,MAAM,YAAY,GAA0C;IAC1D,oBAAoB;IACpB,QAAQ,EAAE,UAAU;IACpB,KAAK,EAAE,UAAU;IACjB,MAAM,EAAE,UAAU;IAClB,OAAO,EAAE,UAAU;IACnB,IAAI,EAAE,UAAU;IAChB,MAAM,EAAE,UAAU;IAElB,UAAU;IACV,OAAO,EAAE,SAAS;IAClB,IAAI,EAAE,SAAS;IACf,QAAQ,EAAE,SAAS;IACnB,WAAW,EAAE,SAAS;IACtB,OAAO,EAAE,SAAS;IAClB,IAAI,EAAE,SAAS;IAEf,qBAAqB;IACrB,OAAO,EAAE,UAAU;IACnB,OAAO,EAAE,UAAU;IACnB,EAAE,EAAE,UAAU;IACd,EAAE,EAAE,UAAU;IACd,QAAQ,EAAE,UAAU;IACpB,SAAS,EAAE,UAAU;IACrB,MAAM,EAAE,UAAU;IAClB,GAAG,EAAE,UAAU;IAEf,UAAU;IACV,IAAI,EAAE,SAAS;IACf,OAAO,EAAE,SAAS;IAClB,MAAM,EAAE,SAAS;IACjB,MAAM,EAAE,SAAS;IACjB,IAAI,EAAE,SAAS;CAChB,CAAC;AAEF,MAAM,WAAW,GAAG,mBAAmB,CAAC;AACxC,MAAM,YAAY,GAA2B;IAC3C,aAAa,EAAE,SAAS;IACxB,aAAa,EAAE,SAAS;IACxB,aAAa,EAAE,SAAS;IACxB,WAAW,EAAE,SAAS;IACtB,WAAW,EAAE,SAAS;IACtB,SAAS,EAAE,SAAS;IACpB,SAAS,EAAE,SAAS;IACpB,SAAS,EAAE,SAAS;IACpB,UAAU,EAAE,SAAS;IACrB,UAAU,EAAE,SAAS;IACrB,WAAW,EAAE,SAAS;IACtB,WAAW,EAAE,SAAS;IACtB,WAAW,EAAE,SAAS;IACtB,YAAY,EAAE,SAAS;IACvB,YAAY,EAAE,SAAS;IACvB,YAAY,EAAE,SAAS;IACvB,YAAY,EAAE,SAAS;IACvB,WAAW,EAAE,SAAS;IACtB,WAAW,EAAE,SAAS;IACtB,UAAU,EAAE,SAAS;IACrB,UAAU,EAAE,SAAS;IACrB,UAAU,EAAE,SAAS;IACrB,UAAU,EAAE,SAAS;CACtB,CAAC;AAEF,SAAS,UAAU,CAAC,OAAe;IACjC,MAAM,QAAQ,GAAG,OAAO,CAAC,KAAK,CAAC,WAAW,CAAC,CAAC;IAC5C,IAAI,QAAQ;QAAE,OAAO,QAAQ,CAAC,CAAC,CAAC,CAAC;IAEjC,KAAK,MAAM,CAAC,IAAI,EAAE,GAAG,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,YAAY,CAAC,EAAE,CAAC;QACvD,IAAI,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAC;YAAE,OAAO,GAAG,CAAC;IACzC,CAAC;IAED,OAAO,SAAS,CAAC;AACnB,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,oBAAoB,CAClC,KAAa,EACb,KAAY;IAEZ,MAAM,GAAG,GAAG,KAAK,CAAC,WAAW,EAAE,CAAC,OAAO,CAAC,QAAQ,EAAE,GAAG,CAAC,CAAC;IACvD,MAAM,SAAS,GAAG,YAAY,CAAC,GAAG,CAAC,CAAC;IACpC,IAAI,CAAC,SAAS;QAAE,OAAO,SAAS,CAAC;IAEjC,MAAM,OAAO,GAAG,KAAK,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC;IACxC,OAAO,UAAU,CAAC,OAAO,CAAC,CAAC;AAC7B,CAAC"}
@@ -0,0 +1,9 @@
1
+ import type { ButtonHTMLAttributes } from "react";
2
+ export type ButtonVariant = "primary" | "secondary" | "outline" | "ghost";
3
+ export type ButtonSize = "sm" | "md" | "lg";
4
+ export interface ButtonProps extends ButtonHTMLAttributes<HTMLButtonElement> {
5
+ variant?: ButtonVariant;
6
+ size?: ButtonSize;
7
+ }
8
+ export declare const Button: import("react").ForwardRefExoticComponent<ButtonProps & import("react").RefAttributes<HTMLButtonElement>>;
9
+ //# sourceMappingURL=Button.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Button.d.ts","sourceRoot":"","sources":["../../../src/components/ui/Button.tsx"],"names":[],"mappings":"AAeA,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,OAAO,CAAC;AAGlD,MAAM,MAAM,aAAa,GAAG,SAAS,GAAG,WAAW,GAAG,SAAS,GAAG,OAAO,CAAC;AAC1E,MAAM,MAAM,UAAU,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,CAAC;AAE5C,MAAM,WAAW,WAAY,SAAQ,oBAAoB,CAAC,iBAAiB,CAAC;IAC1E,OAAO,CAAC,EAAE,aAAa,CAAC;IACxB,IAAI,CAAC,EAAE,UAAU,CAAC;CACnB;AAQD,eAAO,MAAM,MAAM,2GA+BlB,CAAC"}