@k2b/ui 0.49.0 → 0.51.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 (461) hide show
  1. package/dist/base.css +70 -1
  2. package/dist/browser/actions/Button.js.map +1 -1
  3. package/dist/browser/actions/CommandList.js +861 -0
  4. package/dist/browser/actions/CommandList.js.map +1 -0
  5. package/dist/browser/actions/CommandMenu.js +237 -0
  6. package/dist/browser/actions/CommandMenu.js.map +1 -0
  7. package/dist/browser/actions/ContextMenu.js +3 -0
  8. package/dist/browser/actions/ContextMenu.js.map +1 -1
  9. package/dist/browser/actions/Dropdown.js +43 -10
  10. package/dist/browser/actions/Dropdown.js.map +1 -1
  11. package/dist/browser/actions/command-dock.js +47 -0
  12. package/dist/browser/actions/command-dock.js.map +1 -0
  13. package/dist/browser/actions/command-items.js +84 -0
  14. package/dist/browser/actions/command-items.js.map +1 -0
  15. package/dist/browser/actions/command-messages.js +42 -0
  16. package/dist/browser/actions/command-messages.js.map +1 -0
  17. package/dist/browser/actions/index.js +1 -0
  18. package/dist/browser/actions/index.js.map +1 -1
  19. package/dist/browser/charts/core/area.js +188 -0
  20. package/dist/browser/charts/core/area.js.map +1 -0
  21. package/dist/browser/charts/core/calendar.js +186 -0
  22. package/dist/browser/charts/core/calendar.js.map +1 -0
  23. package/dist/browser/charts/core/chart-map-data.js +9 -0
  24. package/dist/browser/charts/core/chart-map-data.js.map +1 -0
  25. package/dist/browser/charts/core/chart-messages.js +17 -0
  26. package/dist/browser/charts/core/chart-messages.js.map +1 -0
  27. package/dist/browser/charts/core/hbar-layout.js +118 -0
  28. package/dist/browser/charts/core/hbar-layout.js.map +1 -0
  29. package/dist/browser/charts/core/hbar.js +39 -0
  30. package/dist/browser/charts/core/hbar.js.map +1 -0
  31. package/dist/browser/charts/core/index.js +17 -0
  32. package/dist/browser/charts/core/index.js.map +1 -0
  33. package/dist/browser/charts/core/inspection.js +9 -0
  34. package/dist/browser/charts/core/inspection.js.map +1 -0
  35. package/dist/browser/charts/core/map.js +116 -0
  36. package/dist/browser/charts/core/map.js.map +1 -0
  37. package/dist/browser/charts/core/registry.js +35 -0
  38. package/dist/browser/charts/core/registry.js.map +1 -0
  39. package/dist/browser/charts/core/render-size.js +13 -0
  40. package/dist/browser/charts/core/render-size.js.map +1 -0
  41. package/dist/browser/charts/core/render.js +113 -0
  42. package/dist/browser/charts/core/render.js.map +1 -0
  43. package/dist/browser/charts/core/snapshot.js +65 -0
  44. package/dist/browser/charts/core/snapshot.js.map +1 -0
  45. package/dist/browser/charts/core/svg-renderers.js +2406 -0
  46. package/dist/browser/charts/core/svg-renderers.js.map +1 -0
  47. package/dist/browser/charts/core/svg.js +21 -0
  48. package/dist/browser/charts/core/svg.js.map +1 -0
  49. package/dist/browser/charts/core/termination.test-fixture.js +162 -0
  50. package/dist/browser/charts/core/termination.test-fixture.js.map +1 -0
  51. package/dist/browser/charts/core/text.js +13 -0
  52. package/dist/browser/charts/core/text.js.map +1 -0
  53. package/dist/browser/charts/core/types.js +6 -0
  54. package/dist/browser/charts/core/types.js.map +1 -0
  55. package/dist/browser/charts/core/waterfall.js +162 -0
  56. package/dist/browser/charts/core/waterfall.js.map +1 -0
  57. package/dist/browser/charts/description.js +2 -0
  58. package/dist/browser/charts/description.js.map +1 -0
  59. package/dist/browser/charts.js +4 -2
  60. package/dist/browser/charts.js.map +1 -1
  61. package/dist/browser/content/BalanceSummary.js +106 -0
  62. package/dist/browser/content/BalanceSummary.js.map +1 -0
  63. package/dist/browser/content/Chart.js +21 -616
  64. package/dist/browser/content/Chart.js.map +1 -1
  65. package/dist/browser/content/ChartExplorer.js +366 -122
  66. package/dist/browser/content/ChartExplorer.js.map +1 -1
  67. package/dist/browser/content/ChartRoot.js +632 -0
  68. package/dist/browser/content/ChartRoot.js.map +1 -0
  69. package/dist/browser/content/ChartSnapshotView.js +16 -9
  70. package/dist/browser/content/ChartSnapshotView.js.map +1 -1
  71. package/dist/browser/content/ChartSparkline.js +24 -0
  72. package/dist/browser/content/ChartSparkline.js.map +1 -0
  73. package/dist/browser/content/DataTable.js +676 -293
  74. package/dist/browser/content/DataTable.js.map +1 -1
  75. package/dist/browser/content/DataTableTools.js +119 -0
  76. package/dist/browser/content/DataTableTools.js.map +1 -0
  77. package/dist/browser/content/FileView.js +111 -61
  78. package/dist/browser/content/FileView.js.map +1 -1
  79. package/dist/browser/content/FlowAmount.js +82 -0
  80. package/dist/browser/content/FlowAmount.js.map +1 -0
  81. package/dist/browser/content/Lightbox.js +8 -8
  82. package/dist/browser/content/Lightbox.js.map +1 -1
  83. package/dist/browser/content/MapView.js +30 -28
  84. package/dist/browser/content/MapView.js.map +1 -1
  85. package/dist/browser/content/PdfPreview.js +84 -52
  86. package/dist/browser/content/PdfPreview.js.map +1 -1
  87. package/dist/browser/content/PdfViewer.js +588 -0
  88. package/dist/browser/content/PdfViewer.js.map +1 -0
  89. package/dist/browser/content/balance-summary-messages.js +26 -0
  90. package/dist/browser/content/balance-summary-messages.js.map +1 -0
  91. package/dist/browser/content/chart-bar.js +251 -21
  92. package/dist/browser/content/chart-bar.js.map +1 -1
  93. package/dist/browser/content/chart-calendar.js +43 -0
  94. package/dist/browser/content/chart-calendar.js.map +1 -0
  95. package/dist/browser/content/chart-inspection-core.js +178 -50
  96. package/dist/browser/content/chart-inspection-core.js.map +1 -1
  97. package/dist/browser/content/chart-inspection.js.map +1 -1
  98. package/dist/browser/content/chart-line-gaps.js +2 -2
  99. package/dist/browser/content/chart-line-gaps.js.map +1 -1
  100. package/dist/browser/content/chart-map-viewport.js.map +1 -1
  101. package/dist/browser/content/chart-message-catalog.js +174 -0
  102. package/dist/browser/content/chart-message-catalog.js.map +1 -0
  103. package/dist/browser/content/chart-messages.js +2 -138
  104. package/dist/browser/content/chart-messages.js.map +1 -1
  105. package/dist/browser/content/chart-snapshot.js +1 -62
  106. package/dist/browser/content/chart-snapshot.js.map +1 -1
  107. package/dist/browser/content/chart-state-timeline.js +1 -1
  108. package/dist/browser/content/chart-state-timeline.js.map +1 -1
  109. package/dist/browser/content/chart-svg.js +4 -2
  110. package/dist/browser/content/chart-svg.js.map +1 -1
  111. package/dist/browser/content/chart-time-axis.js +139 -0
  112. package/dist/browser/content/chart-time-axis.js.map +1 -0
  113. package/dist/browser/content/data-table-columns.js +160 -0
  114. package/dist/browser/content/data-table-columns.js.map +1 -0
  115. package/dist/browser/content/data-table-messages.js +38 -2
  116. package/dist/browser/content/data-table-messages.js.map +1 -1
  117. package/dist/browser/content/flow-amount-messages.js +26 -0
  118. package/dist/browser/content/flow-amount-messages.js.map +1 -0
  119. package/dist/browser/content/index.js +5 -0
  120. package/dist/browser/content/index.js.map +1 -1
  121. package/dist/browser/content/pdf-document.js +29 -0
  122. package/dist/browser/content/pdf-document.js.map +1 -0
  123. package/dist/browser/content/pdf-limits.js +31 -0
  124. package/dist/browser/content/pdf-limits.js.map +1 -0
  125. package/dist/browser/content/pdf-messages.js +34 -2
  126. package/dist/browser/content/pdf-messages.js.map +1 -1
  127. package/dist/browser/content/pdf-viewer-engine.js +57 -0
  128. package/dist/browser/content/pdf-viewer-worker.js +28 -0
  129. package/dist/browser/inputs/ChoiceInputs.js +94 -51
  130. package/dist/browser/inputs/ChoiceInputs.js.map +1 -1
  131. package/dist/browser/inputs/ChoiceSlider.js +75 -58
  132. package/dist/browser/inputs/ChoiceSlider.js.map +1 -1
  133. package/dist/browser/inputs/DatePicker.js +118 -102
  134. package/dist/browser/inputs/DatePicker.js.map +1 -1
  135. package/dist/browser/inputs/PeriodPicker.js +874 -0
  136. package/dist/browser/inputs/PeriodPicker.js.map +1 -0
  137. package/dist/browser/inputs/SelectChip.js +50 -17
  138. package/dist/browser/inputs/SelectChip.js.map +1 -1
  139. package/dist/browser/inputs/date-picker.js +13 -0
  140. package/dist/browser/inputs/date-picker.js.map +1 -1
  141. package/dist/browser/inputs/index.js +4 -1
  142. package/dist/browser/inputs/index.js.map +1 -1
  143. package/dist/browser/inputs/input-messages.js +8 -2
  144. package/dist/browser/inputs/input-messages.js.map +1 -1
  145. package/dist/browser/inputs/markdown/MarkdownEditor.js +14 -10
  146. package/dist/browser/inputs/markdown/MarkdownEditor.js.map +1 -1
  147. package/dist/browser/inputs/markdown/SlashCommands.js +402 -0
  148. package/dist/browser/inputs/markdown/SlashCommands.js.map +1 -0
  149. package/dist/browser/inputs/period-picker-messages.js +71 -0
  150. package/dist/browser/inputs/period-picker-messages.js.map +1 -0
  151. package/dist/browser/inputs/period.js +263 -0
  152. package/dist/browser/inputs/period.js.map +1 -0
  153. package/dist/browser/intl/Format.js +31 -8
  154. package/dist/browser/intl/Format.js.map +1 -1
  155. package/dist/browser/layout/AppWorkspace.js +7 -1
  156. package/dist/browser/layout/AppWorkspace.js.map +1 -1
  157. package/dist/browser/layout/DetailPanel.js +147 -120
  158. package/dist/browser/layout/DetailPanel.js.map +1 -1
  159. package/dist/browser/layout/Discussion.js +101 -108
  160. package/dist/browser/layout/Discussion.js.map +1 -1
  161. package/dist/browser/layout/index.js.map +1 -1
  162. package/dist/browser/surfaces/BudgetList.js +281 -0
  163. package/dist/browser/surfaces/BudgetList.js.map +1 -0
  164. package/dist/browser/surfaces/DescriptionList.js +5 -2
  165. package/dist/browser/surfaces/DescriptionList.js.map +1 -1
  166. package/dist/browser/surfaces/ProgressBar.js +134 -21
  167. package/dist/browser/surfaces/ProgressBar.js.map +1 -1
  168. package/dist/browser/surfaces/StatCell.js +327 -146
  169. package/dist/browser/surfaces/StatCell.js.map +1 -1
  170. package/dist/browser/surfaces/StatGrid.js +75 -57
  171. package/dist/browser/surfaces/StatGrid.js.map +1 -1
  172. package/dist/browser/surfaces/budget-messages.js +64 -0
  173. package/dist/browser/surfaces/budget-messages.js.map +1 -0
  174. package/dist/browser/surfaces/delta-badge.js +79 -0
  175. package/dist/browser/surfaces/delta-badge.js.map +1 -0
  176. package/dist/browser/surfaces/index.js +2 -1
  177. package/dist/browser/surfaces/index.js.map +1 -1
  178. package/dist/browser/surfaces/person-color.js +2 -2
  179. package/dist/browser/surfaces/person-color.js.map +1 -1
  180. package/dist/browser/surfaces/stat-cell-messages.js +41 -0
  181. package/dist/browser/surfaces/stat-cell-messages.js.map +1 -0
  182. package/dist/browser/widgets/Dashboard.js +137 -0
  183. package/dist/browser/widgets/Dashboard.js.map +1 -0
  184. package/dist/browser/widgets/DashboardFrame.js +310 -0
  185. package/dist/browser/widgets/DashboardFrame.js.map +1 -0
  186. package/dist/browser/widgets/index.js +2 -0
  187. package/dist/browser/widgets/index.js.map +1 -1
  188. package/dist/licenses/pdfjs-dist.txt +177 -0
  189. package/dist/ssr/actions/Button.js.map +1 -1
  190. package/dist/ssr/actions/CommandList.js +638 -0
  191. package/dist/ssr/actions/CommandList.js.map +1 -0
  192. package/dist/ssr/actions/CommandMenu.js +197 -0
  193. package/dist/ssr/actions/CommandMenu.js.map +1 -0
  194. package/dist/ssr/actions/ContextMenu.js +3 -0
  195. package/dist/ssr/actions/ContextMenu.js.map +1 -1
  196. package/dist/ssr/actions/Dropdown.js +43 -10
  197. package/dist/ssr/actions/Dropdown.js.map +1 -1
  198. package/dist/ssr/actions/command-dock.js +47 -0
  199. package/dist/ssr/actions/command-dock.js.map +1 -0
  200. package/dist/ssr/actions/command-items.js +84 -0
  201. package/dist/ssr/actions/command-items.js.map +1 -0
  202. package/dist/ssr/actions/command-messages.js +42 -0
  203. package/dist/ssr/actions/command-messages.js.map +1 -0
  204. package/dist/ssr/actions/index.js +1 -0
  205. package/dist/ssr/actions/index.js.map +1 -1
  206. package/dist/ssr/charts/core/area.js +188 -0
  207. package/dist/ssr/charts/core/area.js.map +1 -0
  208. package/dist/ssr/charts/core/calendar.js +186 -0
  209. package/dist/ssr/charts/core/calendar.js.map +1 -0
  210. package/dist/ssr/charts/core/chart-map-data.js +9 -0
  211. package/dist/ssr/charts/core/chart-map-data.js.map +1 -0
  212. package/dist/ssr/charts/core/chart-messages.js +17 -0
  213. package/dist/ssr/charts/core/chart-messages.js.map +1 -0
  214. package/dist/ssr/charts/core/hbar-layout.js +118 -0
  215. package/dist/ssr/charts/core/hbar-layout.js.map +1 -0
  216. package/dist/ssr/charts/core/hbar.js +39 -0
  217. package/dist/ssr/charts/core/hbar.js.map +1 -0
  218. package/dist/ssr/charts/core/index.js +17 -0
  219. package/dist/ssr/charts/core/index.js.map +1 -0
  220. package/dist/ssr/charts/core/inspection.js +9 -0
  221. package/dist/ssr/charts/core/inspection.js.map +1 -0
  222. package/dist/ssr/charts/core/map.js +116 -0
  223. package/dist/ssr/charts/core/map.js.map +1 -0
  224. package/dist/ssr/charts/core/registry.js +35 -0
  225. package/dist/ssr/charts/core/registry.js.map +1 -0
  226. package/dist/ssr/charts/core/render-size.js +13 -0
  227. package/dist/ssr/charts/core/render-size.js.map +1 -0
  228. package/dist/ssr/charts/core/render.js +113 -0
  229. package/dist/ssr/charts/core/render.js.map +1 -0
  230. package/dist/ssr/charts/core/snapshot.js +65 -0
  231. package/dist/ssr/charts/core/snapshot.js.map +1 -0
  232. package/dist/ssr/charts/core/svg-renderers.js +2406 -0
  233. package/dist/ssr/charts/core/svg-renderers.js.map +1 -0
  234. package/dist/ssr/charts/core/svg.js +21 -0
  235. package/dist/ssr/charts/core/svg.js.map +1 -0
  236. package/dist/ssr/charts/core/termination.test-fixture.js +162 -0
  237. package/dist/ssr/charts/core/termination.test-fixture.js.map +1 -0
  238. package/dist/ssr/charts/core/text.js +13 -0
  239. package/dist/ssr/charts/core/text.js.map +1 -0
  240. package/dist/ssr/charts/core/types.js +6 -0
  241. package/dist/ssr/charts/core/types.js.map +1 -0
  242. package/dist/ssr/charts/core/waterfall.js +162 -0
  243. package/dist/ssr/charts/core/waterfall.js.map +1 -0
  244. package/dist/ssr/charts/description.js +2 -0
  245. package/dist/ssr/charts/description.js.map +1 -0
  246. package/dist/ssr/charts.js +4 -2
  247. package/dist/ssr/charts.js.map +1 -1
  248. package/dist/ssr/content/BalanceSummary.js +75 -0
  249. package/dist/ssr/content/BalanceSummary.js.map +1 -0
  250. package/dist/ssr/content/Chart.js +21 -483
  251. package/dist/ssr/content/Chart.js.map +1 -1
  252. package/dist/ssr/content/ChartExplorer.js +190 -46
  253. package/dist/ssr/content/ChartExplorer.js.map +1 -1
  254. package/dist/ssr/content/ChartRoot.js +475 -0
  255. package/dist/ssr/content/ChartRoot.js.map +1 -0
  256. package/dist/ssr/content/ChartSnapshotView.js +5 -1
  257. package/dist/ssr/content/ChartSnapshotView.js.map +1 -1
  258. package/dist/ssr/content/ChartSparkline.js +24 -0
  259. package/dist/ssr/content/ChartSparkline.js.map +1 -0
  260. package/dist/ssr/content/DataTable.js +287 -78
  261. package/dist/ssr/content/DataTable.js.map +1 -1
  262. package/dist/ssr/content/DataTableTools.js +106 -0
  263. package/dist/ssr/content/DataTableTools.js.map +1 -0
  264. package/dist/ssr/content/FileView.js +56 -7
  265. package/dist/ssr/content/FileView.js.map +1 -1
  266. package/dist/ssr/content/FlowAmount.js +58 -0
  267. package/dist/ssr/content/FlowAmount.js.map +1 -0
  268. package/dist/ssr/content/Lightbox.js +8 -8
  269. package/dist/ssr/content/Lightbox.js.map +1 -1
  270. package/dist/ssr/content/MapView.js +9 -9
  271. package/dist/ssr/content/MapView.js.map +1 -1
  272. package/dist/ssr/content/PdfPreview.js +49 -20
  273. package/dist/ssr/content/PdfPreview.js.map +1 -1
  274. package/dist/ssr/content/PdfViewer.js +484 -0
  275. package/dist/ssr/content/PdfViewer.js.map +1 -0
  276. package/dist/ssr/content/balance-summary-messages.js +26 -0
  277. package/dist/ssr/content/balance-summary-messages.js.map +1 -0
  278. package/dist/ssr/content/chart-bar.js +251 -21
  279. package/dist/ssr/content/chart-bar.js.map +1 -1
  280. package/dist/ssr/content/chart-calendar.js +43 -0
  281. package/dist/ssr/content/chart-calendar.js.map +1 -0
  282. package/dist/ssr/content/chart-inspection-core.js +178 -50
  283. package/dist/ssr/content/chart-inspection-core.js.map +1 -1
  284. package/dist/ssr/content/chart-inspection.js.map +1 -1
  285. package/dist/ssr/content/chart-line-gaps.js +2 -2
  286. package/dist/ssr/content/chart-line-gaps.js.map +1 -1
  287. package/dist/ssr/content/chart-map-viewport.js.map +1 -1
  288. package/dist/ssr/content/chart-message-catalog.js +174 -0
  289. package/dist/ssr/content/chart-message-catalog.js.map +1 -0
  290. package/dist/ssr/content/chart-messages.js +2 -138
  291. package/dist/ssr/content/chart-messages.js.map +1 -1
  292. package/dist/ssr/content/chart-snapshot.js +1 -62
  293. package/dist/ssr/content/chart-snapshot.js.map +1 -1
  294. package/dist/ssr/content/chart-state-timeline.js +1 -1
  295. package/dist/ssr/content/chart-state-timeline.js.map +1 -1
  296. package/dist/ssr/content/chart-svg.js +4 -2
  297. package/dist/ssr/content/chart-svg.js.map +1 -1
  298. package/dist/ssr/content/chart-time-axis.js +139 -0
  299. package/dist/ssr/content/chart-time-axis.js.map +1 -0
  300. package/dist/ssr/content/data-table-columns.js +160 -0
  301. package/dist/ssr/content/data-table-columns.js.map +1 -0
  302. package/dist/ssr/content/data-table-messages.js +38 -2
  303. package/dist/ssr/content/data-table-messages.js.map +1 -1
  304. package/dist/ssr/content/flow-amount-messages.js +26 -0
  305. package/dist/ssr/content/flow-amount-messages.js.map +1 -0
  306. package/dist/ssr/content/index.js +5 -0
  307. package/dist/ssr/content/index.js.map +1 -1
  308. package/dist/ssr/content/pdf-document.js +29 -0
  309. package/dist/ssr/content/pdf-document.js.map +1 -0
  310. package/dist/ssr/content/pdf-limits.js +31 -0
  311. package/dist/ssr/content/pdf-limits.js.map +1 -0
  312. package/dist/ssr/content/pdf-messages.js +34 -2
  313. package/dist/ssr/content/pdf-messages.js.map +1 -1
  314. package/dist/ssr/inputs/ChoiceInputs.js +49 -12
  315. package/dist/ssr/inputs/ChoiceInputs.js.map +1 -1
  316. package/dist/ssr/inputs/ChoiceSlider.js +17 -12
  317. package/dist/ssr/inputs/ChoiceSlider.js.map +1 -1
  318. package/dist/ssr/inputs/DatePicker.js +19 -13
  319. package/dist/ssr/inputs/DatePicker.js.map +1 -1
  320. package/dist/ssr/inputs/PeriodPicker.js +598 -0
  321. package/dist/ssr/inputs/PeriodPicker.js.map +1 -0
  322. package/dist/ssr/inputs/SelectChip.js +26 -9
  323. package/dist/ssr/inputs/SelectChip.js.map +1 -1
  324. package/dist/ssr/inputs/date-picker.js +13 -0
  325. package/dist/ssr/inputs/date-picker.js.map +1 -1
  326. package/dist/ssr/inputs/index.js +4 -1
  327. package/dist/ssr/inputs/index.js.map +1 -1
  328. package/dist/ssr/inputs/input-messages.js +8 -2
  329. package/dist/ssr/inputs/input-messages.js.map +1 -1
  330. package/dist/ssr/inputs/markdown/MarkdownEditor.js +3 -2
  331. package/dist/ssr/inputs/markdown/MarkdownEditor.js.map +1 -1
  332. package/dist/ssr/inputs/markdown/SlashCommands.js +339 -0
  333. package/dist/ssr/inputs/markdown/SlashCommands.js.map +1 -0
  334. package/dist/ssr/inputs/period-picker-messages.js +71 -0
  335. package/dist/ssr/inputs/period-picker-messages.js.map +1 -0
  336. package/dist/ssr/inputs/period.js +263 -0
  337. package/dist/ssr/inputs/period.js.map +1 -0
  338. package/dist/ssr/intl/Format.js +22 -2
  339. package/dist/ssr/intl/Format.js.map +1 -1
  340. package/dist/ssr/layout/AppWorkspace.js +7 -1
  341. package/dist/ssr/layout/AppWorkspace.js.map +1 -1
  342. package/dist/ssr/layout/DetailPanel.js +27 -4
  343. package/dist/ssr/layout/DetailPanel.js.map +1 -1
  344. package/dist/ssr/layout/Discussion.js +16 -2
  345. package/dist/ssr/layout/Discussion.js.map +1 -1
  346. package/dist/ssr/layout/index.js.map +1 -1
  347. package/dist/ssr/surfaces/BudgetList.js +170 -0
  348. package/dist/ssr/surfaces/BudgetList.js.map +1 -0
  349. package/dist/ssr/surfaces/DescriptionList.js +1 -1
  350. package/dist/ssr/surfaces/DescriptionList.js.map +1 -1
  351. package/dist/ssr/surfaces/ProgressBar.js +96 -5
  352. package/dist/ssr/surfaces/ProgressBar.js.map +1 -1
  353. package/dist/ssr/surfaces/StatCell.js +157 -52
  354. package/dist/ssr/surfaces/StatCell.js.map +1 -1
  355. package/dist/ssr/surfaces/StatGrid.js +24 -35
  356. package/dist/ssr/surfaces/StatGrid.js.map +1 -1
  357. package/dist/ssr/surfaces/budget-messages.js +64 -0
  358. package/dist/ssr/surfaces/budget-messages.js.map +1 -0
  359. package/dist/ssr/surfaces/delta-badge.js +55 -0
  360. package/dist/ssr/surfaces/delta-badge.js.map +1 -0
  361. package/dist/ssr/surfaces/index.js +2 -1
  362. package/dist/ssr/surfaces/index.js.map +1 -1
  363. package/dist/ssr/surfaces/person-color.js +2 -2
  364. package/dist/ssr/surfaces/person-color.js.map +1 -1
  365. package/dist/ssr/surfaces/stat-cell-messages.js +41 -0
  366. package/dist/ssr/surfaces/stat-cell-messages.js.map +1 -0
  367. package/dist/ssr/widgets/Dashboard.js +84 -0
  368. package/dist/ssr/widgets/Dashboard.js.map +1 -0
  369. package/dist/ssr/widgets/DashboardFrame.js +200 -0
  370. package/dist/ssr/widgets/DashboardFrame.js.map +1 -0
  371. package/dist/ssr/widgets/index.js +2 -0
  372. package/dist/ssr/widgets/index.js.map +1 -1
  373. package/dist/styles.css +1 -1
  374. package/dist/types/actions/Button.d.ts +1 -1
  375. package/dist/types/actions/CommandList.d.ts +120 -0
  376. package/dist/types/actions/CommandMenu.d.ts +39 -0
  377. package/dist/types/actions/Dropdown.d.ts +17 -0
  378. package/dist/types/actions/command-dock.d.ts +8 -0
  379. package/dist/types/actions/command-items.d.ts +134 -0
  380. package/dist/types/actions/command-messages.d.ts +19 -0
  381. package/dist/types/actions/index.d.ts +3 -0
  382. package/dist/types/charts/core/area.d.ts +62 -0
  383. package/dist/types/charts/core/calendar.d.ts +57 -0
  384. package/dist/types/charts/core/chart-map-data.d.ts +3 -0
  385. package/dist/types/charts/core/chart-messages.d.ts +5 -0
  386. package/dist/types/charts/core/hbar-layout.d.ts +74 -0
  387. package/dist/types/charts/core/hbar.d.ts +13 -0
  388. package/dist/types/charts/core/index.d.ts +16 -0
  389. package/dist/types/charts/core/inspection.d.ts +16 -0
  390. package/dist/types/charts/core/map.d.ts +3 -0
  391. package/dist/types/charts/core/registry.d.ts +33 -0
  392. package/dist/types/charts/core/render-size.d.ts +7 -0
  393. package/dist/types/charts/core/render.d.ts +37 -0
  394. package/dist/types/charts/core/snapshot.d.ts +27 -0
  395. package/dist/types/charts/core/svg-renderers.d.ts +722 -0
  396. package/dist/types/charts/core/svg.d.ts +20 -0
  397. package/dist/types/charts/core/termination.test-fixture.d.ts +1 -0
  398. package/dist/types/charts/core/text.d.ts +5 -0
  399. package/dist/types/charts/core/types.d.ts +20 -0
  400. package/dist/types/charts/core/waterfall.d.ts +68 -0
  401. package/dist/types/charts/description.d.ts +226 -0
  402. package/dist/types/charts.d.ts +5 -2
  403. package/dist/types/content/BalanceSummary.d.ts +29 -0
  404. package/dist/types/content/Chart.d.ts +19 -117
  405. package/dist/types/content/ChartExplorer.d.ts +43 -2
  406. package/dist/types/content/ChartRoot.d.ts +92 -0
  407. package/dist/types/content/ChartSnapshotView.d.ts +1 -0
  408. package/dist/types/content/ChartSparkline.d.ts +5 -0
  409. package/dist/types/content/DataTable.d.ts +28 -0
  410. package/dist/types/content/DataTableTools.d.ts +44 -0
  411. package/dist/types/content/FlowAmount.d.ts +28 -0
  412. package/dist/types/content/PdfViewer.d.ts +32 -0
  413. package/dist/types/content/balance-summary-messages.d.ts +11 -0
  414. package/dist/types/content/chart-bar.d.ts +95 -2
  415. package/dist/types/content/chart-calendar.d.ts +4 -0
  416. package/dist/types/content/chart-inspection-core.d.ts +21 -16
  417. package/dist/types/content/chart-inspection.d.ts +5 -1
  418. package/dist/types/content/chart-map-viewport.d.ts +1 -1
  419. package/dist/types/content/chart-message-catalog.d.ts +84 -0
  420. package/dist/types/content/chart-messages.d.ts +2 -33
  421. package/dist/types/content/chart-snapshot.d.ts +1 -26
  422. package/dist/types/content/chart-svg.d.ts +1 -1
  423. package/dist/types/content/chart-time-axis.d.ts +26 -0
  424. package/dist/types/content/data-table-columns.d.ts +72 -0
  425. package/dist/types/content/data-table-messages.d.ts +18 -0
  426. package/dist/types/content/flow-amount-messages.d.ts +11 -0
  427. package/dist/types/content/index.d.ts +12 -2
  428. package/dist/types/content/pdf-document.d.ts +5 -0
  429. package/dist/types/content/pdf-engine.d.ts +9 -0
  430. package/dist/types/content/pdf-limits.d.ts +43 -0
  431. package/dist/types/content/pdf-messages.d.ts +16 -0
  432. package/dist/types/inputs/ChoiceInputs.d.ts +4 -0
  433. package/dist/types/inputs/ChoiceSlider.d.ts +12 -0
  434. package/dist/types/inputs/DatePicker.d.ts +22 -0
  435. package/dist/types/inputs/PeriodPicker.d.ts +24 -0
  436. package/dist/types/inputs/SelectChip.d.ts +2 -0
  437. package/dist/types/inputs/date-picker.d.ts +6 -0
  438. package/dist/types/inputs/index.d.ts +8 -2
  439. package/dist/types/inputs/input-messages.d.ts +3 -0
  440. package/dist/types/inputs/markdown/MarkdownEditor.d.ts +5 -0
  441. package/dist/types/inputs/markdown/SlashCommands.d.ts +20 -0
  442. package/dist/types/inputs/period-picker-messages.d.ts +34 -0
  443. package/dist/types/inputs/period.d.ts +134 -0
  444. package/dist/types/intl/Format.d.ts +5 -0
  445. package/dist/types/layout/AppWorkspace.d.ts +5 -0
  446. package/dist/types/layout/DetailPanel.d.ts +12 -0
  447. package/dist/types/layout/index.d.ts +1 -1
  448. package/dist/types/surfaces/BudgetList.d.ts +42 -0
  449. package/dist/types/surfaces/DescriptionList.d.ts +5 -0
  450. package/dist/types/surfaces/ProgressBar.d.ts +38 -2
  451. package/dist/types/surfaces/StatCell.d.ts +40 -2
  452. package/dist/types/surfaces/StatGrid.d.ts +3 -1
  453. package/dist/types/surfaces/budget-messages.d.ts +30 -0
  454. package/dist/types/surfaces/delta-badge.d.ts +10 -0
  455. package/dist/types/surfaces/index.d.ts +4 -3
  456. package/dist/types/surfaces/person-color.d.ts +2 -2
  457. package/dist/types/surfaces/stat-cell-messages.d.ts +19 -0
  458. package/dist/types/widgets/Dashboard.d.ts +42 -0
  459. package/dist/types/widgets/DashboardFrame.d.ts +58 -0
  460. package/dist/types/widgets/index.d.ts +2 -0
  461. package/package.json +8 -1
@@ -1 +1 @@
1
- {"version":3,"names":[],"sources":["content/ChartSnapshotView.tsx"],"sourcesContent":["import { createEffect, createUniqueId, type JSX, onCleanup, onMount } from \"solid-js\";\nimport { isServer } from \"solid-js/web\";\nimport type { ChartCursor } from \"./chart-cursor\";\nimport { createChartInspection } from \"./chart-inspection\";\nimport { closeChartInspectionOnOutside, sameChartDatum } from \"./chart-inspection-core\";\nimport { useChartMessages } from \"./chart-messages\";\nimport type { ChartSnapshot } from \"./chart-snapshot\";\nimport { selectedChartSvg } from \"./chart-svg\";\n\n/** Internal display for server-prepared geometry. Viewports are snapshot-owned. */\nexport function ChartSnapshotView(props: {\n snapshot: ChartSnapshot;\n cursor?: ChartCursor;\n selectedKey: string | null;\n onSelect: (key: string) => void;\n style?: JSX.CSSProperties;\n}) {\n const chartMessages = useChartMessages();\n let container: HTMLDivElement | undefined;\n let tooltip: HTMLSpanElement | undefined;\n let anchor: HTMLSpanElement | undefined;\n const id = `k2b-chart-tooltip-${createUniqueId()}`;\n const inspection = createChartInspection({\n container: () => container,\n cursor: () => props.cursor,\n tooltip: () => tooltip,\n anchor: () => anchor,\n kind: () => props.snapshot.kind,\n enabled: () => true,\n format: ({ datum }) => props.snapshot.marks.find((m) => sameChartDatum(m.datum, datum))?.tooltip ?? { rows: [] },\n select: ({ datum }) => {\n const mark = props.snapshot.marks.find((m) => sameChartDatum(m.datum, datum));\n if (mark) props.onSelect(mark.rowKey);\n },\n });\n createEffect(() => {\n props.snapshot;\n inspection.invalidate();\n });\n createEffect(() => inspection.selectData(props.snapshot.marks.filter((m) => m.rowKey === props.selectedKey).map((m) => m.datum)));\n onMount(() => {\n onCleanup(\n closeChartInspectionOnOutside({\n container: () => container,\n tooltip: () => tooltip,\n close: inspection.close,\n }),\n );\n });\n onCleanup(inspection.close);\n return (\n <div\n ref={container}\n class=\"k2b-chart\"\n data-chart-kind={props.snapshot.kind}\n data-interactive=\"true\"\n style={props.style}\n role=\"group\"\n aria-label={chartMessages().interactiveChart}\n tabIndex={0}\n onPointerDown={inspection.down}\n onPointerMove={inspection.move}\n onClick={inspection.click}\n onPointerLeave={inspection.leave}\n onFocusIn={inspection.focus}\n onFocusOut={inspection.close}\n onKeyDown={inspection.key}\n >\n <div\n class=\"k2b-chart__svg\"\n data-stretch={props.snapshot.stretch ? \"true\" : undefined}\n style={{\n \"--k2b-chart-width\": `${props.snapshot.width}px`,\n \"--k2b-chart-height\": `${props.snapshot.height}px`,\n \"aspect-ratio\": `${props.snapshot.width}/${props.snapshot.height}`,\n }}\n innerHTML={\n isServer\n ? selectedChartSvg(\n props.snapshot.svg,\n props.snapshot.marks.filter((m) => m.rowKey === props.selectedKey).map((m) => m.datum),\n )\n : props.snapshot.svg\n }\n />\n <span ref={anchor} class=\"k2b-chart__anchor\" aria-hidden=\"true\" />\n <span ref={tooltip} id={id} class=\"k2b-chart__tooltip k2b-tooltip\" role=\"tooltip\" popover=\"manual\" data-instant=\"true\" />\n </div>\n );\n}\n"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"names":[],"sources":["content/ChartSnapshotView.tsx"],"sourcesContent":["import { createEffect, createUniqueId, type JSX, onCleanup, onMount } from \"solid-js\";\nimport { isServer } from \"solid-js/web\";\nimport { useLocale } from \"../intl/locale\";\nimport type { ChartCursor } from \"./chart-cursor\";\nimport { createChartInspection } from \"./chart-inspection\";\nimport { closeChartInspectionOnOutside, sameChartDatum } from \"./chart-inspection-core\";\nimport { useChartMessages } from \"./chart-messages\";\nimport type { ChartSnapshot } from \"./chart-snapshot\";\nimport { selectedChartSvg } from \"./chart-svg\";\n\n/** Internal display for server-prepared geometry. Viewports are snapshot-owned. */\nexport function ChartSnapshotView(props: {\n snapshot: ChartSnapshot;\n cursor?: ChartCursor;\n legend?: () => ParentNode | undefined;\n selectedKey: string | null;\n onSelect: (key: string) => void;\n style?: JSX.CSSProperties;\n}) {\n const locale = useLocale();\n const chartMessages = useChartMessages();\n let container: HTMLDivElement | undefined;\n let tooltip: HTMLSpanElement | undefined;\n let anchor: HTMLSpanElement | undefined;\n const id = `k2b-chart-tooltip-${createUniqueId()}`;\n const inspection = createChartInspection({\n container: () => container,\n locale,\n legend: props.legend,\n cursor: () => props.cursor,\n tooltip: () => tooltip,\n anchor: () => anchor,\n kind: () => props.snapshot.kind,\n enabled: () => true,\n format: ({ datum }) => props.snapshot.marks.find((m) => sameChartDatum(m.datum, datum))?.tooltip ?? { rows: [] },\n select: ({ datum }) => {\n const mark = props.snapshot.marks.find((m) => sameChartDatum(m.datum, datum));\n if (mark) props.onSelect(mark.rowKey);\n },\n });\n createEffect(() => {\n props.snapshot;\n inspection.invalidate();\n });\n createEffect(() => inspection.selectData(props.snapshot.marks.filter((m) => m.rowKey === props.selectedKey).map((m) => m.datum)));\n onMount(() => {\n onCleanup(\n closeChartInspectionOnOutside({\n container: () => container,\n tooltip: () => tooltip,\n close: inspection.close,\n }),\n );\n });\n onCleanup(inspection.close);\n return (\n <div\n ref={container}\n class=\"k2b-chart\"\n data-chart-kind={props.snapshot.kind}\n data-interactive=\"true\"\n style={props.style}\n role=\"group\"\n aria-label={chartMessages().interactiveChart}\n tabIndex={0}\n onPointerDown={inspection.down}\n onPointerMove={inspection.move}\n onClick={inspection.click}\n onPointerLeave={inspection.leave}\n onFocusIn={inspection.focus}\n onFocusOut={inspection.close}\n onKeyDown={inspection.key}\n >\n <div\n class=\"k2b-chart__svg\"\n data-stretch={props.snapshot.stretch ? \"true\" : undefined}\n style={{\n \"min-width\": props.snapshot.minWidth ? `${props.snapshot.minWidth}px` : undefined,\n \"--k2b-chart-width\": `${props.snapshot.width}px`,\n \"--k2b-chart-height\": `${props.snapshot.height}px`,\n \"aspect-ratio\": `${props.snapshot.width}/${props.snapshot.height}`,\n }}\n innerHTML={\n isServer\n ? selectedChartSvg(\n props.snapshot.svg,\n props.snapshot.marks.filter((m) => m.rowKey === props.selectedKey).map((m) => m.datum),\n )\n : props.snapshot.svg\n }\n />\n <span ref={anchor} class=\"k2b-chart__anchor\" aria-hidden=\"true\" />\n <span ref={tooltip} id={id} class=\"k2b-chart__tooltip k2b-tooltip\" role=\"tooltip\" popover=\"manual\" data-instant=\"true\" />\n </div>\n );\n}\n"],"mappings":"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","ignoreList":[]}
@@ -0,0 +1,24 @@
1
+ import { mergeProps } from "solid-js";
2
+ import { sparkline } from "../charts/core/svg-renderers";
3
+ import { renderChartRoot } from "./ChartRoot";
4
+ import { responsiveChartSvg } from "./chart-svg";
5
+
6
+ /** The same chart host and SVG for stat trends, without the catalog dispatcher. */
7
+ export function ChartSparkline(props) {
8
+ return renderChartRoot(mergeProps(props, {
9
+ kind: "sparkline"
10
+ }), (options, width, height) => {
11
+ if (options.kind !== "sparkline") throw new Error("Expected sparkline options");
12
+ const {
13
+ kind: _kind,
14
+ ...data
15
+ } = options;
16
+ return responsiveChartSvg(sparkline({
17
+ ...data,
18
+ width,
19
+ height,
20
+ inspect: true
21
+ }));
22
+ });
23
+ }
24
+ //# sourceMappingURL=ChartSparkline.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":[],"sources":["content/ChartSparkline.tsx"],"sourcesContent":["import { mergeProps } from \"solid-js\";\nimport { sparkline } from \"../charts/core/svg-renderers\";\nimport { type ChartProps, renderChartRoot } from \"./ChartRoot\";\nimport { responsiveChartSvg } from \"./chart-svg\";\n\n/** The same chart host and SVG for stat trends, without the catalog dispatcher. */\nexport function ChartSparkline(props: Omit<Extract<ChartProps, { kind: \"sparkline\" }>, \"kind\">) {\n return renderChartRoot(mergeProps(props, { kind: \"sparkline\" as const }), (options, width, height) => {\n if (options.kind !== \"sparkline\") throw new Error(\"Expected sparkline options\");\n const { kind: _kind, ...data } = options;\n return responsiveChartSvg(sparkline({ ...data, width, height, inspect: true }));\n });\n}\n"],"mappings":"AAAA,SAAS,UAAU,QAAQ,UAAU;AACrC,SAAS,SAAS,QAAQ,8BAA8B;AACxD,SAA0B,eAAe,QAAQ,aAAa;AAC9D,SAAS,kBAAkB,QAAQ,aAAa;;AAEhD;AACA,OAAO,SAAS,cAAc,CAAC,KAA+D,EAAE;EAC9F,OAAO,eAAe,CAAC,UAAU,CAAC,KAAK,EAAE;IAAE,IAAI,EAAE;EAAqB,CAAC,CAAC,EAAE,CAAC,OAAO,EAAE,KAAK,EAAE,MAAM,KAAK;IACpG,IAAI,OAAO,CAAC,IAAI,KAAK,WAAW,EAAE,MAAM,IAAI,KAAK,CAAC,4BAA4B,CAAC;IAC/E,MAAM;MAAE,IAAI,EAAE,KAAK;MAAE,GAAG;IAAK,CAAC,GAAG,OAAO;IACxC,OAAO,kBAAkB,CAAC,SAAS,CAAC;MAAE,GAAG,IAAI;MAAE,KAAK;MAAE,MAAM;MAAE,OAAO,EAAE;IAAK,CAAC,CAAC,CAAC;EACjF,CAAC,CAAC;AACJ","ignoreList":[]}
@@ -1,5 +1,5 @@
1
- import { ssrStyleProperty as _$ssrStyleProperty } from "solid-js/web";
2
1
  import { memo as _$memo } from "solid-js/web";
2
+ import { ssrStyleProperty as _$ssrStyleProperty } from "solid-js/web";
3
3
  import { ssrAttribute as _$ssrAttribute } from "solid-js/web";
4
4
  import { createComponent as _$createComponent } from "solid-js/web";
5
5
  import { ssr as _$ssr } from "solid-js/web";
@@ -10,22 +10,37 @@ var _tmpl$ = ["<span class=\"k2b-data-table__header-title\">", "</span>"],
10
10
  _tmpl$4 = ["<a", " class=\"k2b-data-table__header-content k2b-data-table__sort\"", ">", "</a>"],
11
11
  _tmpl$5 = ["<button type=\"button\" class=\"k2b-data-table__header-content k2b-data-table__sort\"", ">", "</button>"],
12
12
  _tmpl$6 = ["<div class=\"k2b-data-table__header-content\"", ">", "</div>"],
13
- _tmpl$7 = ["<caption class=\"k2b-sr-only\">", "</caption>"],
14
- _tmpl$8 = ["<tr aria-hidden=\"true\"><td class=\"k2b-data-table__fill\"", "></td></tr>"],
15
- _tmpl$9 = "<div class=\"k2b-data-table__sentinel\" aria-hidden=\"true\"></div>",
16
- _tmpl$0 = ["<div role=\"region\"", " tabindex=\"0\" class=\"", "\"", "><table", ">", "<thead class=\"k2b-data-table__head\"", "><tr class=\"k2b-data-table__head-row\">", "</tr></thead><tbody>", "</tbody>", "</table>", "</div>"],
17
- _tmpl$1 = ["<th scope=\"col\" class=\"", "\"", ">", "</th>"],
18
- _tmpl$10 = ["<tr><td class=\"k2b-data-table__empty\"", ">", "</td></tr>"],
19
- _tmpl$11 = ["<tr class=\"k2b-data-table__row\" data-loading=\"true\" aria-hidden=\"true\">", "</tr>"],
20
- _tmpl$12 = ["<td", "><span class=\"k2b-data-table__skeleton\"></span></td>"],
21
- _tmpl$13 = ["<tr class=\"", "\"", ">", "</tr>"],
22
- _tmpl$14 = ["<td class=\"", "\"", "><div", ">", "</div></td>"],
23
- _tmpl$15 = ["<tfoot class=\"k2b-data-table__foot\" data-sticky=\"true\"><tr class=\"k2b-data-table__foot-row\">", "</tr></tfoot>"],
24
- _tmpl$16 = ["<td class=\"k2b-data-table__footer-cell\"", ">", "</td>"],
25
- _tmpl$17 = ["<div class=\"k2b-data-table__scrollbar\"", " aria-hidden=\"true\"><span style=\"", "\"></span></div>"],
26
- _tmpl$18 = ["<div class=\"", "\">", "</div>"],
27
- _tmpl$19 = ["<span", ">", "</span>"],
28
- _tmpl$20 = ["<footer class=\"", "\">", "</footer>"];
13
+ _tmpl$7 = ["<span class=\"k2b-data-table__bar\">", "<span class=\"k2b-data-table__bar-track\" aria-hidden=\"true\"><span style=\"", "\"></span></span></span>"],
14
+ _tmpl$8 = ["<td class=\"k2b-data-table__details-toggle\"><button type=\"button\" class=\"k2b-data-table__details-button\"", "><i class=\"", "\" aria-hidden=\"true\"></i></button></td>"],
15
+ _tmpl$9 = ["<tr class=\"", "\"", ">", "", "</tr>"],
16
+ _tmpl$0 = ["<tr class=\"k2b-data-table__details\"", "", "><td", "><dl>", "</dl></td></tr>"],
17
+ _tmpl$1 = ["<td class=\"", "\"", "><div", ">", "</div></td>"],
18
+ _tmpl$10 = ["<div", "><dt>", "</dt><dd>", "</dd></div>"],
19
+ _tmpl$11 = ["<caption class=\"k2b-sr-only\">", "</caption>"],
20
+ _tmpl$12 = ["<th scope=\"col\" class=\"k2b-data-table__details-toggle\"><span class=\"k2b-sr-only\">", "</span></th>"],
21
+ _tmpl$13 = "<div class=\"k2b-data-table__sentinel\" aria-hidden=\"true\"></div>",
22
+ _tmpl$14 = ["<div role=\"region\"", " tabindex=\"0\" class=\"", "\"", "><table", ">", "<thead class=\"k2b-data-table__head\"", "><tr class=\"k2b-data-table__head-row\">", "", "</tr></thead>", "", "</table>", "</div>"],
23
+ _tmpl$15 = ["<th scope=\"col\" class=\"", "\"", ">", "</th>"],
24
+ _tmpl$16 = ["<tr aria-hidden=\"true\"><td class=\"k2b-data-table__fill\"", "></td></tr>"],
25
+ _tmpl$17 = ["<tbody>", "</tbody>"],
26
+ _tmpl$18 = ["<tr>", "</tr>"],
27
+ _tmpl$19 = ["<td class=\"k2b-data-table__empty\"", ">", "</td>"],
28
+ _tmpl$20 = ["<button type=\"button\" class=\"k2b-data-table__clear-query\">", "</button>"],
29
+ _tmpl$21 = ["<td class=\"k2b-data-table__no-match\"", ">", " ", "</td>"],
30
+ _tmpl$22 = "<td class=\"k2b-data-table__details-toggle\"></td>",
31
+ _tmpl$23 = ["<tr class=\"k2b-data-table__row\" data-loading=\"true\" aria-hidden=\"true\">", "", "</tr>"],
32
+ _tmpl$24 = ["<td", "><span class=\"k2b-data-table__skeleton\"></span></td>"],
33
+ _tmpl$25 = ["<tbody>", "", "</tbody>"],
34
+ _tmpl$26 = ["<tbody aria-hidden=\"true\"><tr><td class=\"k2b-data-table__fill\"", "></td></tr></tbody>"],
35
+ _tmpl$27 = ["<tbody class=\"k2b-data-table__group\"><tr class=\"k2b-data-table__group-row\"><th scope=\"rowgroup\"", ">", "<span class=\"k2b-data-table__group-count\"><span aria-hidden=\"true\">", "</span><span class=\"k2b-sr-only\">, ", "</span></span></th></tr>", "</tbody>"],
36
+ _tmpl$28 = "<td class=\"k2b-data-table__footer-cell k2b-data-table__details-toggle\"></td>",
37
+ _tmpl$29 = ["<tr class=\"k2b-data-table__details\" data-footer=\"true\"><td", "><dl>", "</dl></td></tr>"],
38
+ _tmpl$30 = ["<tfoot class=\"k2b-data-table__foot\" data-sticky=\"true\"><tr class=\"k2b-data-table__foot-row\">", "", "</tr>", "</tfoot>"],
39
+ _tmpl$31 = ["<td class=\"k2b-data-table__footer-cell\"", ">", "</td>"],
40
+ _tmpl$32 = ["<div class=\"k2b-data-table__scrollbar\"", " aria-hidden=\"true\"><span style=\"", "\"></span></div>"],
41
+ _tmpl$33 = ["<div class=\"", "\">", "</div>"],
42
+ _tmpl$34 = ["<span", ">", "</span>"],
43
+ _tmpl$35 = ["<footer class=\"", "\">", "</footer>"];
29
44
  import { createContext, createEffect, createMemo, createSignal, createUniqueId, For, Match, on, onCleanup, onMount, Show, Switch, useContext } from "solid-js";
30
45
  import { Dynamic } from "solid-js/web";
31
46
  import { announce } from "../feedback/announce";
@@ -33,15 +48,20 @@ import { suppressTextSelection } from "../internal/text-selection";
33
48
  import { useLocale } from "../intl/locale";
34
49
  import { useUiMessages } from "../intl/messages";
35
50
  import { PanelHeader } from "../layout/PanelHeader";
51
+ import { DeltaBadge } from "../surfaces/delta-badge";
36
52
  import { Paper } from "../surfaces/Paper";
37
53
  import Placeholder from "../surfaces/Placeholder";
54
+ import { StatusBadge } from "../surfaces/StatusBadge";
55
+ import { formatTableNumber, groupRows, isEmptyCell, isNumericColumnType, readTableValue, tableCellText } from "./data-table-columns";
38
56
  import { useDataTableMessages } from "./data-table-messages";
57
+ import { FlowAmount } from "./FlowAmount";
39
58
  const DataTablePanelContext = createContext();
40
- const defaultRender = (value, locale, messages) => {
59
+ const defaultRender = (value, locale, numbers, messages) => {
41
60
  if (value === null || value === undefined || value === "") return "—";
42
61
  if (value instanceof Date) return value.toLocaleString(locale);
43
62
  if (typeof value === "boolean") return value ? messages.yes : messages.no;
44
- if (typeof value === "number" || typeof value === "bigint") return String(value);
63
+ // Numbers read in the reader's language: grouping and decimal mark follow the locale, at most three decimals.
64
+ if (typeof value === "number" || typeof value === "bigint") return numbers.format(Object.is(value, -0) ? 0 : value);
45
65
  if (typeof value === "string") return value;
46
66
  return JSON.stringify(value);
47
67
  };
@@ -190,17 +210,14 @@ function DataTableRoot(props) {
190
210
  suppressTextSelection(event.pointerId);
191
211
  scrollFromPointer(event, axis);
192
212
  };
193
- const valueOf = (row, col) => {
194
- if (typeof col.value === "function") return col.value(row);
195
- if (col.value) return row[col.value];
196
- return undefined;
197
- };
213
+ const valueOf = (row, col) => readTableValue(row, col);
198
214
  const columnPresentation = createMemo(() => {
199
215
  const presentation = new Map();
200
216
  for (const col of props.columns) {
201
- let numeric = false;
202
- let date = false;
203
- if (col.align === undefined || col.nowrap === undefined) {
217
+ // A typed column says what it holds; only an untyped one is read from its first value.
218
+ let numeric = isNumericColumnType(col.type);
219
+ let date = col.type === "date";
220
+ if (!col.type && (col.align === undefined || col.nowrap === undefined)) {
204
221
  for (const row of props.rows) {
205
222
  const value = valueOf(row, col);
206
223
  if (value === null || value === undefined || value === "") continue;
@@ -223,6 +240,44 @@ function DataTableRoot(props) {
223
240
  return align === "left" ? undefined : align;
224
241
  };
225
242
  const nowrapAttr = col => columnPresentation().get(col.id)?.nowrap ? "true" : undefined;
243
+ /** Text columns wrap inside their cell; every other value keeps one line. */
244
+ const wrapAttr = col => col.type === "text" && col.nowrap !== true ? "true" : undefined;
245
+ const priorityAttr = col => col.priority === 2 || col.priority === 3 ? String(col.priority) : undefined;
246
+ /** The lowest priority present: 3 shows the details toggle below 560 px, 2 below 420 px. */
247
+ const detailsPriority = createMemo(() => {
248
+ const priorities = props.columns.map(col => col.priority ?? 1);
249
+ return priorities.includes(3) ? "3" : priorities.includes(2) ? "2" : undefined;
250
+ });
251
+ const hiddenColumns = () => props.columns.filter(col => priorityAttr(col));
252
+ const columnCount = () => props.columns.length + (detailsPriority() ? 1 : 0);
253
+ const [openDetails, setOpenDetails] = createSignal(new Set());
254
+ const toggleDetails = row => setOpenDetails(open => {
255
+ const next = new Set(open);
256
+ if (!next.delete(row)) next.add(row);
257
+ return next;
258
+ });
259
+ /** A bar column fills its track at `max`, or else at its largest value. */
260
+ const barMax = createMemo(() => {
261
+ const max = new Map();
262
+ for (const col of props.columns) {
263
+ if (col.type !== "bar") continue;
264
+ if (col.max !== undefined && col.max > 0) {
265
+ max.set(col.id, col.max);
266
+ continue;
267
+ }
268
+ let largest = 0;
269
+ for (const row of props.rows) {
270
+ const value = Number(valueOf(row, col));
271
+ if (Number.isFinite(value)) largest = Math.max(largest, Math.abs(value));
272
+ }
273
+ max.set(col.id, largest);
274
+ }
275
+ return max;
276
+ });
277
+ const groups = createMemo(() => {
278
+ const col = props.groupBy ? props.columns.find(entry => entry.id === props.groupBy) : undefined;
279
+ return col ? groupRows(props.rows, col, locale()) : null;
280
+ });
226
281
  const sortKeyOf = col => col.sortable === true ? col.id : typeof col.sortable === "string" ? col.sortable : null;
227
282
 
228
283
  /**
@@ -280,8 +335,51 @@ function DataTableRoot(props) {
280
335
  }
281
336
  });
282
337
  };
283
- const renderValueDefault = value => defaultRender(value, locale(), messages());
284
- const renderCellDefault = (row, col) => renderValueDefault(valueOf(row, col));
338
+ const numberFormat = createMemo(() => new Intl.NumberFormat(locale()));
339
+ const renderValueDefault = value => defaultRender(value, locale(), numberFormat(), messages());
340
+ /** A typed column shows its value the way its type reads; an untyped one falls back to the plain rendering. */
341
+ const renderTypedValue = (col, value) => {
342
+ if (!col.type || isEmptyCell(value)) return renderValueDefault(value);
343
+ if (col.type === "status") {
344
+ const state = col.states?.[String(value)];
345
+ return state ? _$createComponent(StatusBadge, {
346
+ get tone() {
347
+ return state.tone;
348
+ },
349
+ get label() {
350
+ return state.label;
351
+ },
352
+ variant: "dot"
353
+ }) : String(value);
354
+ }
355
+ if (col.type === "flow" && col.format?.currency && Number.isFinite(Number(value))) return _$createComponent(FlowAmount, {
356
+ get value() {
357
+ return Number(value);
358
+ },
359
+ get currency() {
360
+ return col.format.currency;
361
+ },
362
+ get decimals() {
363
+ return col.format.decimals;
364
+ }
365
+ });
366
+ if (col.type === "delta" && Number.isFinite(Number(value))) return _$createComponent(DeltaBadge, {
367
+ get delta() {
368
+ return {
369
+ value: Number(value),
370
+ unit: col.delta?.unit,
371
+ better: col.delta?.better
372
+ };
373
+ }
374
+ });
375
+ if (col.type === "bar") {
376
+ const number = Number(value);
377
+ const max = barMax().get(col.id) ?? 0;
378
+ if (!Number.isFinite(number)) return String(value);
379
+ return _$ssr(_tmpl$7, _$escape(formatTableNumber(number, col, locale())), _$ssrStyleProperty("width:", `${max > 0 ? _$escape(Math.min(100, Math.abs(number) / max * 100), true) : 0}%`));
380
+ }
381
+ return tableCellText(value, col, locale());
382
+ };
285
383
  const onRowKeyDown = (event, row) => {
286
384
  if (!isInteractive()) return;
287
385
  if (isNestedRowControl(event)) return;
@@ -305,6 +403,53 @@ function DataTableRoot(props) {
305
403
  if (typeof props.rowClass === "function") return props.rowClass(row) ?? "";
306
404
  return props.rowClass ?? "";
307
405
  };
406
+
407
+ // A heading given as a JSX node lives in the head; each details line needs its own copy, so it takes text or a fresh call.
408
+ const detailLabel = col => typeof col.header === "function" ? col.header({
409
+ col
410
+ }) : typeof col.header === "string" || typeof col.header === "number" ? col.header : col.id;
411
+ const cellContent = (row, col, value) => props.renderCell ? props.renderCell({
412
+ row,
413
+ col,
414
+ value,
415
+ render: v => renderTypedValue(col, v)
416
+ }) : renderTypedValue(col, value);
417
+
418
+ /** `last` marks the final row of its body when details rows follow every row, so the frame keeps the only edge. */
419
+ const renderRow = (row, last) => {
420
+ const id = () => rowId(row);
421
+ const isSelected = () => props.selection ? props.selection.selected().has(id() ?? "") : props.selectedRowId && id() === props.selectedRowId;
422
+ const detailsId = `k2b-data-table-${createUniqueId()}-details`;
423
+ const open = () => openDetails().has(row);
424
+ return [_$ssr(_tmpl$9, `k2b-data-table__row ${_$escape(rowClass(row), true)}`, _$ssrAttribute("data-hover", shouldHoverRows() ? "true" : _$escape(undefined, true), false) + _$ssrAttribute("data-clickable", shouldHoverRows() && isInteractive() ? "true" : _$escape(undefined, true), false) + _$ssrAttribute("data-selected", isSelected() ? "true" : _$escape(undefined, true), false) + _$ssrAttribute("data-details-open", open() ? "true" : _$escape(undefined, true), false) + _$ssrAttribute("data-last", detailsPriority() && last() ? "true" : _$escape(undefined, true), false) + _$ssrAttribute("aria-selected", props.selection ? !!isSelected() : _$escape(undefined, true), false) + _$ssrAttribute("tabindex", props.selection ? props.selection.focused() === id() ? 0 : -1 : isInteractive() ? 0 : _$escape(undefined, true), false), _$escape(_$createComponent(For, {
425
+ get each() {
426
+ return props.columns;
427
+ },
428
+ children: (col, index) => {
429
+ const value = () => valueOf(row, col);
430
+ return _$ssr(_tmpl$1, `${_$escape(col.cellClass ?? "", true)} ${_$escape(col.class ?? "", true)}`, _$ssrAttribute("data-nowrap", _$escape(nowrapAttr(col), true), false) + _$ssrAttribute("data-wrap", _$escape(wrapAttr(col), true), false) + _$ssrAttribute("data-align", _$escape(alignAttr(col), true), false) + _$ssrAttribute("data-priority", _$escape(priorityAttr(col), true), false) + _$ssrAttribute("data-valign", props.verticalAlign && props.verticalAlign !== "middle" ? _$escape(props.verticalAlign, true) : _$escape(undefined, true), false) + _$ssrAttribute("data-highlighted", _$escape(columnHighlighted(index()), true), false), _$ssrAttribute("class", _$escape(cellContentClass(), true), false), _$escape(cellContent(row, col, value())));
431
+ }
432
+ })), _$escape(_$createComponent(Show, {
433
+ get when() {
434
+ return detailsPriority();
435
+ },
436
+ get children() {
437
+ return _$ssr(_tmpl$8, _$ssrAttribute("aria-expanded", _$escape(open(), true), false) + _$ssrAttribute("aria-controls", _$escape(detailsId, true), false) + _$ssrAttribute("aria-label", _$escape(dataTableMessages().showDetails, true), false), `ti ${open() ? "ti-chevron-up" : "ti-chevron-down"}`);
438
+ }
439
+ }))), _$createComponent(Show, {
440
+ get when() {
441
+ return detailsPriority();
442
+ },
443
+ get children() {
444
+ return _$ssr(_tmpl$0, _$ssrAttribute("id", _$escape(detailsId, true), false), _$ssrAttribute("hidden", !open(), true), _$ssrAttribute("colspan", _$escape(columnCount(), true), false), _$escape(_$createComponent(For, {
445
+ get each() {
446
+ return hiddenColumns();
447
+ },
448
+ children: col => _$ssr(_tmpl$10, _$ssrAttribute("data-priority", _$escape(priorityAttr(col), true), false), _$escape(detailLabel(col)), _$escape(cellContent(row, col, valueOf(row, col))))
449
+ })));
450
+ }
451
+ })];
452
+ };
308
453
  onMount(() => {
309
454
  if (typeof IntersectionObserver === "undefined" || !loadMoreRef) return;
310
455
  // The viewport root notices the end whichever element scrolls; `isNearBottom` decides.
@@ -372,6 +517,9 @@ function DataTableRoot(props) {
372
517
  get ["data-has-footer"]() {
373
518
  return props.footer ? "true" : undefined;
374
519
  },
520
+ get ["data-priorities"]() {
521
+ return detailsPriority();
522
+ },
375
523
  get ["data-overflow-x"]() {
376
524
  return scrollbars().x.overflow ? "true" : undefined;
377
525
  },
@@ -386,35 +534,59 @@ function DataTableRoot(props) {
386
534
  },
387
535
  onMouseLeave: () => setHoveredColumn(null),
388
536
  get children() {
389
- return [_$ssr(_tmpl$0, _$ssrAttribute("aria-label", labelledBy() ? _$escape(undefined, true) : _$escape(props.ariaLabel ?? dataTableMessages().dataTable, true), false) + _$ssrAttribute("aria-labelledby", _$escape(labelledBy(), true), false) + _$ssrAttribute("aria-busy", props.loading ? "true" : _$escape(undefined, true), false), `k2b-table-wrap${props.scrollClass ? ` ${_$escape(props.scrollClass, true)}` : ""}`, _$ssrAttribute("data-density", props.density === "compact" ? "compact" : _$escape(undefined, true), false) + _$ssrAttribute("data-has-footer", props.footer ? "true" : _$escape(undefined, true), false) + _$ssrAttribute("data-surface", _$escape(surface(), true), false) + _$ssrAttribute("data-scroll-preserve", _$escape(props.scrollPreserveKey || undefined, true), false), _$ssrAttribute("class", _$escape(tableClass(), true), false) + _$ssrAttribute("data-fill", props.fillHeight ? "true" : _$escape(undefined, true), false), _$escape(_$createComponent(Show, {
537
+ return [_$ssr(_tmpl$14, _$ssrAttribute("aria-label", labelledBy() ? _$escape(undefined, true) : _$escape(props.ariaLabel ?? dataTableMessages().dataTable, true), false) + _$ssrAttribute("aria-labelledby", _$escape(labelledBy(), true), false) + _$ssrAttribute("aria-busy", props.loading ? "true" : _$escape(undefined, true), false), `k2b-table-wrap${props.scrollClass ? ` ${_$escape(props.scrollClass, true)}` : ""}`, _$ssrAttribute("data-density", props.density === "compact" ? "compact" : _$escape(undefined, true), false) + _$ssrAttribute("data-has-footer", props.footer ? "true" : _$escape(undefined, true), false) + _$ssrAttribute("data-surface", _$escape(surface(), true), false) + _$ssrAttribute("data-scroll-preserve", _$escape(props.scrollPreserveKey || undefined, true), false), _$ssrAttribute("class", _$escape(tableClass(), true), false) + _$ssrAttribute("data-fill", props.fillHeight ? "true" : _$escape(undefined, true), false), _$escape(_$createComponent(Show, {
390
538
  get when() {
391
539
  return props.loading;
392
540
  },
393
541
  get children() {
394
- return _$ssr(_tmpl$7, _$escape(dataTableMessages().loadingRows));
542
+ return _$ssr(_tmpl$11, _$escape(dataTableMessages().loadingRows));
395
543
  }
396
544
  })), _$ssrAttribute("data-sticky", props.stickyHeader === false ? _$escape(undefined, true) : "true", false), _$escape(_$createComponent(For, {
397
545
  get each() {
398
546
  return props.columns;
399
547
  },
400
- children: (col, index) => _$ssr(_tmpl$1, `${_$escape(col.headerClass ?? "", true)} ${_$escape(col.class ?? "", true)}`, _$ssrAttribute("data-align", _$escape(alignAttr(col), true), false) + _$ssrAttribute("data-highlighted", _$escape(columnHighlighted(index()), true), false) + _$ssrAttribute("aria-sort", _$escape(ariaSortFor(col), true), false), props.renderHeader ? _$escape(props.renderHeader({
548
+ children: (col, index) => _$ssr(_tmpl$15, `${_$escape(col.headerClass ?? "", true)} ${_$escape(col.class ?? "", true)}`, _$ssrAttribute("data-align", _$escape(alignAttr(col), true), false) + _$ssrAttribute("data-priority", _$escape(priorityAttr(col), true), false) + _$ssrAttribute("data-highlighted", _$escape(columnHighlighted(index()), true), false) + _$ssrAttribute("aria-sort", _$escape(ariaSortFor(col), true), false), props.renderHeader ? _$escape(props.renderHeader({
401
549
  col,
402
550
  render: () => renderHeaderDefault(col)
403
551
  })) : _$escape(renderHeaderDefault(col)))
552
+ })), _$escape(_$createComponent(Show, {
553
+ get when() {
554
+ return detailsPriority();
555
+ },
556
+ get children() {
557
+ return _$ssr(_tmpl$12, _$escape(dataTableMessages().details));
558
+ }
404
559
  })), _$escape(_$createComponent(Show, {
405
560
  get when() {
406
561
  return props.rows.length > 0;
407
562
  },
408
563
  get fallback() {
409
- return _$createComponent(Show, {
564
+ return _$ssr(_tmpl$17, _$escape(_$createComponent(Show, {
410
565
  get when() {
411
566
  return props.loading;
412
567
  },
413
568
  get fallback() {
414
- return _$ssr(_tmpl$10, _$ssrAttribute("colspan", _$escape(props.columns.length, true), false), _$escape(_$createComponent(Placeholder, {
415
- get description() {
416
- return props.empty ?? dataTableMessages().noRecords;
417
- }
569
+ return _$ssr(_tmpl$18, _$escape(_$createComponent(Show, {
570
+ get when() {
571
+ return props.query?.trim();
572
+ },
573
+ get fallback() {
574
+ return _$ssr(_tmpl$19, _$ssrAttribute("colspan", _$escape(columnCount(), true), false), _$escape(_$createComponent(Placeholder, {
575
+ get description() {
576
+ return props.empty ?? dataTableMessages().noRecords;
577
+ }
578
+ })));
579
+ },
580
+ children: query => _$ssr(_tmpl$21, _$ssrAttribute("colspan", _$escape(columnCount(), true), false), _$escape(dataTableMessages().noMatch({
581
+ query: query()
582
+ })), _$escape(_$createComponent(Show, {
583
+ get when() {
584
+ return props.onClearQuery;
585
+ },
586
+ get children() {
587
+ return _$ssr(_tmpl$20, _$escape(dataTableMessages().clearSearch));
588
+ }
589
+ })))
418
590
  })));
419
591
  },
420
592
  get children() {
@@ -424,73 +596,110 @@ function DataTableRoot(props) {
424
596
  length: loadingRows()
425
597
  });
426
598
  },
427
- children: () => _$ssr(_tmpl$11, _$escape(_$createComponent(For, {
599
+ children: () => _$ssr(_tmpl$23, _$escape(_$createComponent(For, {
428
600
  get each() {
429
601
  return props.columns;
430
602
  },
431
- children: col => _$ssr(_tmpl$12, _$ssrAttribute("data-align", _$escape(alignAttr(col), true), false))
603
+ children: col => _$ssr(_tmpl$24, _$ssrAttribute("data-align", _$escape(alignAttr(col), true), false) + _$ssrAttribute("data-priority", _$escape(priorityAttr(col), true), false))
604
+ })), _$escape(_$createComponent(Show, {
605
+ get when() {
606
+ return detailsPriority();
607
+ },
608
+ get children() {
609
+ return _$ssr(_tmpl$22);
610
+ }
432
611
  })))
433
612
  }), _$createComponent(Show, {
434
613
  get when() {
435
614
  return props.fillHeight;
436
615
  },
437
616
  get children() {
438
- return _$ssr(_tmpl$8, _$ssrAttribute("colspan", _$escape(props.columns.length, true), false));
617
+ return _$ssr(_tmpl$16, _$ssrAttribute("colspan", _$escape(columnCount(), true), false));
439
618
  }
440
619
  })];
441
620
  }
442
- });
621
+ })));
443
622
  },
444
623
  get children() {
445
- return [_$createComponent(For, {
446
- get each() {
447
- return props.rows;
624
+ return _$createComponent(Show, {
625
+ get when() {
626
+ return groups();
448
627
  },
449
- children: row => {
450
- const id = () => rowId(row);
451
- const isSelected = () => props.selection ? props.selection.selected().has(id() ?? "") : props.selectedRowId && id() === props.selectedRowId;
452
- return _$ssr(_tmpl$13, `k2b-data-table__row ${_$escape(rowClass(row), true)}`, _$ssrAttribute("data-hover", shouldHoverRows() ? "true" : _$escape(undefined, true), false) + _$ssrAttribute("data-clickable", shouldHoverRows() && isInteractive() ? "true" : _$escape(undefined, true), false) + _$ssrAttribute("data-selected", isSelected() ? "true" : _$escape(undefined, true), false) + _$ssrAttribute("aria-selected", props.selection ? !!isSelected() : _$escape(undefined, true), false) + _$ssrAttribute("tabindex", props.selection ? props.selection.focused() === id() ? 0 : -1 : isInteractive() ? 0 : _$escape(undefined, true), false), _$escape(_$createComponent(For, {
628
+ get fallback() {
629
+ return _$ssr(_tmpl$25, _$escape(_$createComponent(For, {
453
630
  get each() {
454
- return props.columns;
631
+ return props.rows;
632
+ },
633
+ children: (row, index) => renderRow(row, () => index() === props.rows.length - 1)
634
+ })), _$escape(_$createComponent(Show, {
635
+ get when() {
636
+ return props.fillHeight;
455
637
  },
456
- children: (col, index) => {
457
- const value = () => valueOf(row, col);
458
- return _$ssr(_tmpl$14, `${_$escape(col.cellClass ?? "", true)} ${_$escape(col.class ?? "", true)}`, _$ssrAttribute("data-nowrap", _$escape(nowrapAttr(col), true), false) + _$ssrAttribute("data-align", _$escape(alignAttr(col), true), false) + _$ssrAttribute("data-valign", props.verticalAlign && props.verticalAlign !== "middle" ? _$escape(props.verticalAlign, true) : _$escape(undefined, true), false) + _$ssrAttribute("data-highlighted", _$escape(columnHighlighted(index()), true), false), _$ssrAttribute("class", _$escape(cellContentClass(), true), false), props.renderCell ? _$escape(props.renderCell({
459
- row,
460
- col,
461
- value: value(),
462
- render: v => renderCellDefault(row, {
463
- ...col,
464
- value: () => v
465
- })
466
- })) : _$escape(renderValueDefault(value())));
638
+ get children() {
639
+ return _$ssr(_tmpl$16, _$ssrAttribute("colspan", _$escape(columnCount(), true), false));
467
640
  }
468
641
  })));
469
- }
470
- }), _$createComponent(Show, {
471
- get when() {
472
- return props.fillHeight;
473
642
  },
474
- get children() {
475
- return _$ssr(_tmpl$8, _$ssrAttribute("colspan", _$escape(props.columns.length, true), false));
476
- }
477
- })];
643
+ children: list => [_$createComponent(For, {
644
+ get each() {
645
+ return list();
646
+ },
647
+ children: group => _$ssr(_tmpl$27, _$ssrAttribute("colspan", _$escape(columnCount(), true), false), _$escape(group.label || "—"), _$escape(group.rows.length), _$escape(dataTableMessages().rowCount({
648
+ count: group.rows.length
649
+ })), _$escape(_$createComponent(For, {
650
+ get each() {
651
+ return group.rows;
652
+ },
653
+ children: (row, index) => renderRow(row, () => index() === group.rows.length - 1)
654
+ })))
655
+ }), _$createComponent(Show, {
656
+ get when() {
657
+ return props.fillHeight;
658
+ },
659
+ get children() {
660
+ return _$ssr(_tmpl$26, _$ssrAttribute("colspan", _$escape(columnCount(), true), false));
661
+ }
662
+ })]
663
+ });
478
664
  }
479
665
  })), _$escape(_$createComponent(Show, {
480
666
  get when() {
481
667
  return props.footer;
482
668
  },
483
- children: footer => _$ssr(_tmpl$15, _$escape(_$createComponent(For, {
669
+ children: footer => _$ssr(_tmpl$30, _$escape(_$createComponent(For, {
484
670
  get each() {
485
671
  return props.columns;
486
672
  },
487
673
  children: (col, index) => {
488
674
  const value = () => footer().values?.[col.id];
489
- return _$ssr(_tmpl$16, _$ssrAttribute("data-nowrap", _$escape(nowrapAttr(col), true), false) + _$ssrAttribute("data-align", _$escape(alignAttr(col), true), false) + _$ssrAttribute("data-highlighted", _$escape(columnHighlighted(index()), true), false), footer().renderCell ? _$escape(footer().renderCell({
675
+ return _$ssr(_tmpl$31, _$ssrAttribute("data-nowrap", _$escape(nowrapAttr(col), true), false) + _$ssrAttribute("data-align", _$escape(alignAttr(col), true), false) + _$ssrAttribute("data-priority", _$escape(priorityAttr(col), true), false) + _$ssrAttribute("data-highlighted", _$escape(columnHighlighted(index()), true), false), footer().renderCell ? _$escape(footer().renderCell({
490
676
  col,
491
677
  value: value(),
492
- render: renderValueDefault
493
- })) : _$escape(renderValueDefault(value())));
678
+ render: v => renderTypedValue(col, v)
679
+ })) : _$escape(renderTypedValue(col, value())));
680
+ }
681
+ })), _$escape(_$createComponent(Show, {
682
+ get when() {
683
+ return detailsPriority();
684
+ },
685
+ get children() {
686
+ return _$ssr(_tmpl$28);
687
+ }
688
+ })), _$escape(_$createComponent(Show, {
689
+ get when() {
690
+ return detailsPriority();
691
+ },
692
+ get children() {
693
+ return _$ssr(_tmpl$29, _$ssrAttribute("colspan", _$escape(columnCount(), true), false), _$escape(_$createComponent(For, {
694
+ get each() {
695
+ return hiddenColumns();
696
+ },
697
+ children: col => _$ssr(_tmpl$10, _$ssrAttribute("data-priority", _$escape(priorityAttr(col), true), false), _$escape(detailLabel(col)), footer().renderCell ? _$escape(footer().renderCell({
698
+ col,
699
+ value: footer().values?.[col.id],
700
+ render: v => renderTypedValue(col, v)
701
+ })) : _$escape(renderTypedValue(col, footer().values?.[col.id])))
702
+ })));
494
703
  }
495
704
  })))
496
705
  })), _$escape(_$createComponent(Show, {
@@ -498,11 +707,11 @@ function DataTableRoot(props) {
498
707
  return shouldRenderLoadMoreSentinel();
499
708
  },
500
709
  get children() {
501
- return _$ssr(_tmpl$9);
710
+ return _$ssr(_tmpl$13);
502
711
  }
503
712
  }))), _$createComponent(For, {
504
713
  each: ["y", "x"],
505
- children: axis => _$ssr(_tmpl$17, _$ssrAttribute("data-axis", _$escape(axis, true), false) + _$ssrAttribute("data-overflow", scrollbars()[axis].overflow ? "true" : _$escape(undefined, true), false), _$ssrStyleProperty("--k2b-data-table-scroll-offset:", `${_$escape(scrollbars()[axis].offset, true)}px`) + _$ssrStyleProperty(";--k2b-data-table-scroll-size:", `${_$escape(scrollbars()[axis].size, true)}px`))
714
+ children: axis => _$ssr(_tmpl$32, _$ssrAttribute("data-axis", _$escape(axis, true), false) + _$ssrAttribute("data-overflow", scrollbars()[axis].overflow ? "true" : _$escape(undefined, true), false), _$ssrStyleProperty("--k2b-data-table-scroll-offset:", `${_$escape(scrollbars()[axis].offset, true)}px`) + _$ssrStyleProperty(";--k2b-data-table-scroll-size:", `${_$escape(scrollbars()[axis].size, true)}px`))
506
715
  })];
507
716
  }
508
717
  });
@@ -535,9 +744,9 @@ const DataTablePanel = props => {
535
744
  const DataTableHeader = props => {
536
745
  const panel = useContext(DataTablePanelContext);
537
746
  panel?.registerHeading();
538
- return _$ssr(_tmpl$18, `k2b-data-panel__header ${_$escape(props.class ?? "", true)}`, _$escape(_$createComponent(PanelHeader, {
747
+ return _$ssr(_tmpl$33, `k2b-data-panel__header ${_$escape(props.class ?? "", true)}`, _$escape(_$createComponent(PanelHeader, {
539
748
  get title() {
540
- return _$ssr(_tmpl$19, _$ssrAttribute("id", _$escape(panel?.headingId, true), false), _$escape(props.title));
749
+ return _$ssr(_tmpl$34, _$ssrAttribute("id", _$escape(panel?.headingId, true), false), _$escape(props.title));
541
750
  },
542
751
  get subtitle() {
543
752
  return props.subtitle;
@@ -553,8 +762,8 @@ const DataTableHeader = props => {
553
762
  }
554
763
  })));
555
764
  };
556
- const DataTableControls = props => _$ssr(_tmpl$18, `k2b-data-panel__controls ${_$escape(props.class ?? "", true)}`, _$escape(props.children));
557
- const DataTablePanelFooter = props => _$ssr(_tmpl$20, `k2b-data-panel__footer ${_$escape(props.class ?? "", true)}`, _$escape(props.children));
765
+ const DataTableControls = props => _$ssr(_tmpl$33, `k2b-data-panel__controls ${_$escape(props.class ?? "", true)}`, _$escape(props.children));
766
+ const DataTablePanelFooter = props => _$ssr(_tmpl$35, `k2b-data-panel__footer ${_$escape(props.class ?? "", true)}`, _$escape(props.children));
558
767
  const DataTable = DataTableRoot;
559
768
  DataTable.Panel = DataTablePanel;
560
769
  DataTable.Header = DataTableHeader;