@k2b/ui 0.48.0 → 0.50.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 (304) hide show
  1. package/dist/base.css +40 -2
  2. package/dist/browser/actions/ContextMenu.js +3 -0
  3. package/dist/browser/actions/ContextMenu.js.map +1 -1
  4. package/dist/browser/actions/CopyButton.js +26 -18
  5. package/dist/browser/actions/CopyButton.js.map +1 -1
  6. package/dist/browser/charts/core/area.js +190 -0
  7. package/dist/browser/charts/core/area.js.map +1 -0
  8. package/dist/browser/charts/core/calendar.js +186 -0
  9. package/dist/browser/charts/core/calendar.js.map +1 -0
  10. package/dist/browser/charts/core/chart-map-data.js +9 -0
  11. package/dist/browser/charts/core/chart-map-data.js.map +1 -0
  12. package/dist/browser/charts/core/index.js +12 -0
  13. package/dist/browser/charts/core/index.js.map +1 -0
  14. package/dist/browser/charts/core/inspection.js +9 -0
  15. package/dist/browser/charts/core/inspection.js.map +1 -0
  16. package/dist/browser/charts/core/registry.js +28 -0
  17. package/dist/browser/charts/core/registry.js.map +1 -0
  18. package/dist/browser/charts/core/render.js +103 -0
  19. package/dist/browser/charts/core/render.js.map +1 -0
  20. package/dist/browser/charts/core/snapshot.js +65 -0
  21. package/dist/browser/charts/core/snapshot.js.map +1 -0
  22. package/dist/browser/charts/core/svg.js +2542 -0
  23. package/dist/browser/charts/core/svg.js.map +1 -0
  24. package/dist/browser/charts/core/termination.test-fixture.js +162 -0
  25. package/dist/browser/charts/core/termination.test-fixture.js.map +1 -0
  26. package/dist/browser/charts/core/text.js +13 -0
  27. package/dist/browser/charts/core/text.js.map +1 -0
  28. package/dist/browser/charts/core/types.js +8 -0
  29. package/dist/browser/charts/core/types.js.map +1 -0
  30. package/dist/browser/charts.js +4 -2
  31. package/dist/browser/charts.js.map +1 -1
  32. package/dist/browser/content/BalanceSummary.js +106 -0
  33. package/dist/browser/content/BalanceSummary.js.map +1 -0
  34. package/dist/browser/content/Chart.js +134 -115
  35. package/dist/browser/content/Chart.js.map +1 -1
  36. package/dist/browser/content/ChartExplorer.js +366 -122
  37. package/dist/browser/content/ChartExplorer.js.map +1 -1
  38. package/dist/browser/content/ChartSnapshotView.js +16 -9
  39. package/dist/browser/content/ChartSnapshotView.js.map +1 -1
  40. package/dist/browser/content/DataTable.js +676 -293
  41. package/dist/browser/content/DataTable.js.map +1 -1
  42. package/dist/browser/content/DataTableTools.js +119 -0
  43. package/dist/browser/content/DataTableTools.js.map +1 -0
  44. package/dist/browser/content/FlowAmount.js +82 -0
  45. package/dist/browser/content/FlowAmount.js.map +1 -0
  46. package/dist/browser/content/balance-summary-messages.js +26 -0
  47. package/dist/browser/content/balance-summary-messages.js.map +1 -0
  48. package/dist/browser/content/chart-bar.js +6 -6
  49. package/dist/browser/content/chart-bar.js.map +1 -1
  50. package/dist/browser/content/chart-calendar.js +43 -0
  51. package/dist/browser/content/chart-calendar.js.map +1 -0
  52. package/dist/browser/content/chart-inspection-core.js +164 -37
  53. package/dist/browser/content/chart-inspection-core.js.map +1 -1
  54. package/dist/browser/content/chart-inspection.js.map +1 -1
  55. package/dist/browser/content/chart-line-gaps.js +2 -2
  56. package/dist/browser/content/chart-line-gaps.js.map +1 -1
  57. package/dist/browser/content/chart-map-viewport.js.map +1 -1
  58. package/dist/browser/content/chart-message-catalog.js +164 -0
  59. package/dist/browser/content/chart-message-catalog.js.map +1 -0
  60. package/dist/browser/content/chart-messages.js +2 -138
  61. package/dist/browser/content/chart-messages.js.map +1 -1
  62. package/dist/browser/content/chart-snapshot.js +1 -62
  63. package/dist/browser/content/chart-snapshot.js.map +1 -1
  64. package/dist/browser/content/chart-state-timeline.js +1 -1
  65. package/dist/browser/content/chart-state-timeline.js.map +1 -1
  66. package/dist/browser/content/chart-svg.js +2 -1
  67. package/dist/browser/content/chart-svg.js.map +1 -1
  68. package/dist/browser/content/chart-time-axis.js +139 -0
  69. package/dist/browser/content/chart-time-axis.js.map +1 -0
  70. package/dist/browser/content/data-table-columns.js +160 -0
  71. package/dist/browser/content/data-table-columns.js.map +1 -0
  72. package/dist/browser/content/data-table-messages.js +38 -2
  73. package/dist/browser/content/data-table-messages.js.map +1 -1
  74. package/dist/browser/content/flow-amount-messages.js +26 -0
  75. package/dist/browser/content/flow-amount-messages.js.map +1 -0
  76. package/dist/browser/content/index.js +4 -0
  77. package/dist/browser/content/index.js.map +1 -1
  78. package/dist/browser/feedback/prompt-confirm.js +7 -4
  79. package/dist/browser/feedback/prompt-confirm.js.map +1 -1
  80. package/dist/browser/feedback/prompts.js +3 -3
  81. package/dist/browser/feedback/prompts.js.map +1 -1
  82. package/dist/browser/inputs/DatePicker.js +5 -4
  83. package/dist/browser/inputs/DatePicker.js.map +1 -1
  84. package/dist/browser/inputs/NumberInput.js +17 -5
  85. package/dist/browser/inputs/NumberInput.js.map +1 -1
  86. package/dist/browser/inputs/SelectChip.js +50 -17
  87. package/dist/browser/inputs/SelectChip.js.map +1 -1
  88. package/dist/browser/inputs/date-picker.js +13 -0
  89. package/dist/browser/inputs/date-picker.js.map +1 -1
  90. package/dist/browser/intl/Format.js +31 -8
  91. package/dist/browser/intl/Format.js.map +1 -1
  92. package/dist/browser/layout/AppWorkspace.js +580 -522
  93. package/dist/browser/layout/AppWorkspace.js.map +1 -1
  94. package/dist/browser/layout/MobileShell.js +26 -0
  95. package/dist/browser/layout/MobileShell.js.map +1 -1
  96. package/dist/browser/layout/index.js +1 -0
  97. package/dist/browser/layout/index.js.map +1 -1
  98. package/dist/browser/layout/sheet-handle.js +155 -0
  99. package/dist/browser/layout/sheet-handle.js.map +1 -0
  100. package/dist/browser/surfaces/BudgetList.js +281 -0
  101. package/dist/browser/surfaces/BudgetList.js.map +1 -0
  102. package/dist/browser/surfaces/NoticeCard.js +48 -29
  103. package/dist/browser/surfaces/NoticeCard.js.map +1 -1
  104. package/dist/browser/surfaces/ProgressBar.js +134 -21
  105. package/dist/browser/surfaces/ProgressBar.js.map +1 -1
  106. package/dist/browser/surfaces/StatCell.js +320 -144
  107. package/dist/browser/surfaces/StatCell.js.map +1 -1
  108. package/dist/browser/surfaces/StatGrid.js +75 -57
  109. package/dist/browser/surfaces/StatGrid.js.map +1 -1
  110. package/dist/browser/surfaces/budget-messages.js +64 -0
  111. package/dist/browser/surfaces/budget-messages.js.map +1 -0
  112. package/dist/browser/surfaces/delta-badge.js +65 -0
  113. package/dist/browser/surfaces/delta-badge.js.map +1 -0
  114. package/dist/browser/surfaces/index.js +2 -1
  115. package/dist/browser/surfaces/index.js.map +1 -1
  116. package/dist/browser/surfaces/person-color.js +2 -2
  117. package/dist/browser/surfaces/person-color.js.map +1 -1
  118. package/dist/browser/surfaces/stat-cell-messages.js +41 -0
  119. package/dist/browser/surfaces/stat-cell-messages.js.map +1 -0
  120. package/dist/browser/widgets/Dashboard.js +137 -0
  121. package/dist/browser/widgets/Dashboard.js.map +1 -0
  122. package/dist/browser/widgets/index.js +1 -0
  123. package/dist/browser/widgets/index.js.map +1 -1
  124. package/dist/ssr/actions/ContextMenu.js +3 -0
  125. package/dist/ssr/actions/ContextMenu.js.map +1 -1
  126. package/dist/ssr/actions/CopyButton.js +13 -8
  127. package/dist/ssr/actions/CopyButton.js.map +1 -1
  128. package/dist/ssr/charts/core/area.js +190 -0
  129. package/dist/ssr/charts/core/area.js.map +1 -0
  130. package/dist/ssr/charts/core/calendar.js +186 -0
  131. package/dist/ssr/charts/core/calendar.js.map +1 -0
  132. package/dist/ssr/charts/core/chart-map-data.js +9 -0
  133. package/dist/ssr/charts/core/chart-map-data.js.map +1 -0
  134. package/dist/ssr/charts/core/index.js +12 -0
  135. package/dist/ssr/charts/core/index.js.map +1 -0
  136. package/dist/ssr/charts/core/inspection.js +9 -0
  137. package/dist/ssr/charts/core/inspection.js.map +1 -0
  138. package/dist/ssr/charts/core/registry.js +28 -0
  139. package/dist/ssr/charts/core/registry.js.map +1 -0
  140. package/dist/ssr/charts/core/render.js +103 -0
  141. package/dist/ssr/charts/core/render.js.map +1 -0
  142. package/dist/ssr/charts/core/snapshot.js +65 -0
  143. package/dist/ssr/charts/core/snapshot.js.map +1 -0
  144. package/dist/ssr/charts/core/svg.js +2542 -0
  145. package/dist/ssr/charts/core/svg.js.map +1 -0
  146. package/dist/ssr/charts/core/termination.test-fixture.js +162 -0
  147. package/dist/ssr/charts/core/termination.test-fixture.js.map +1 -0
  148. package/dist/ssr/charts/core/text.js +13 -0
  149. package/dist/ssr/charts/core/text.js.map +1 -0
  150. package/dist/ssr/charts/core/types.js +8 -0
  151. package/dist/ssr/charts/core/types.js.map +1 -0
  152. package/dist/ssr/charts.js +4 -2
  153. package/dist/ssr/charts.js.map +1 -1
  154. package/dist/ssr/content/BalanceSummary.js +75 -0
  155. package/dist/ssr/content/BalanceSummary.js.map +1 -0
  156. package/dist/ssr/content/Chart.js +90 -95
  157. package/dist/ssr/content/Chart.js.map +1 -1
  158. package/dist/ssr/content/ChartExplorer.js +190 -46
  159. package/dist/ssr/content/ChartExplorer.js.map +1 -1
  160. package/dist/ssr/content/ChartSnapshotView.js +5 -1
  161. package/dist/ssr/content/ChartSnapshotView.js.map +1 -1
  162. package/dist/ssr/content/DataTable.js +287 -78
  163. package/dist/ssr/content/DataTable.js.map +1 -1
  164. package/dist/ssr/content/DataTableTools.js +106 -0
  165. package/dist/ssr/content/DataTableTools.js.map +1 -0
  166. package/dist/ssr/content/FlowAmount.js +58 -0
  167. package/dist/ssr/content/FlowAmount.js.map +1 -0
  168. package/dist/ssr/content/balance-summary-messages.js +26 -0
  169. package/dist/ssr/content/balance-summary-messages.js.map +1 -0
  170. package/dist/ssr/content/chart-bar.js +6 -6
  171. package/dist/ssr/content/chart-bar.js.map +1 -1
  172. package/dist/ssr/content/chart-calendar.js +43 -0
  173. package/dist/ssr/content/chart-calendar.js.map +1 -0
  174. package/dist/ssr/content/chart-inspection-core.js +164 -37
  175. package/dist/ssr/content/chart-inspection-core.js.map +1 -1
  176. package/dist/ssr/content/chart-inspection.js.map +1 -1
  177. package/dist/ssr/content/chart-line-gaps.js +2 -2
  178. package/dist/ssr/content/chart-line-gaps.js.map +1 -1
  179. package/dist/ssr/content/chart-map-viewport.js.map +1 -1
  180. package/dist/ssr/content/chart-message-catalog.js +164 -0
  181. package/dist/ssr/content/chart-message-catalog.js.map +1 -0
  182. package/dist/ssr/content/chart-messages.js +2 -138
  183. package/dist/ssr/content/chart-messages.js.map +1 -1
  184. package/dist/ssr/content/chart-snapshot.js +1 -62
  185. package/dist/ssr/content/chart-snapshot.js.map +1 -1
  186. package/dist/ssr/content/chart-state-timeline.js +1 -1
  187. package/dist/ssr/content/chart-state-timeline.js.map +1 -1
  188. package/dist/ssr/content/chart-svg.js +2 -1
  189. package/dist/ssr/content/chart-svg.js.map +1 -1
  190. package/dist/ssr/content/chart-time-axis.js +139 -0
  191. package/dist/ssr/content/chart-time-axis.js.map +1 -0
  192. package/dist/ssr/content/data-table-columns.js +160 -0
  193. package/dist/ssr/content/data-table-columns.js.map +1 -0
  194. package/dist/ssr/content/data-table-messages.js +38 -2
  195. package/dist/ssr/content/data-table-messages.js.map +1 -1
  196. package/dist/ssr/content/flow-amount-messages.js +26 -0
  197. package/dist/ssr/content/flow-amount-messages.js.map +1 -0
  198. package/dist/ssr/content/index.js +4 -0
  199. package/dist/ssr/content/index.js.map +1 -1
  200. package/dist/ssr/feedback/prompt-confirm.js +7 -4
  201. package/dist/ssr/feedback/prompt-confirm.js.map +1 -1
  202. package/dist/ssr/feedback/prompts.js +3 -3
  203. package/dist/ssr/feedback/prompts.js.map +1 -1
  204. package/dist/ssr/inputs/DatePicker.js +5 -4
  205. package/dist/ssr/inputs/DatePicker.js.map +1 -1
  206. package/dist/ssr/inputs/NumberInput.js +17 -5
  207. package/dist/ssr/inputs/NumberInput.js.map +1 -1
  208. package/dist/ssr/inputs/SelectChip.js +26 -9
  209. package/dist/ssr/inputs/SelectChip.js.map +1 -1
  210. package/dist/ssr/inputs/date-picker.js +13 -0
  211. package/dist/ssr/inputs/date-picker.js.map +1 -1
  212. package/dist/ssr/intl/Format.js +22 -2
  213. package/dist/ssr/intl/Format.js.map +1 -1
  214. package/dist/ssr/layout/AppWorkspace.js +158 -114
  215. package/dist/ssr/layout/AppWorkspace.js.map +1 -1
  216. package/dist/ssr/layout/MobileShell.js +26 -0
  217. package/dist/ssr/layout/MobileShell.js.map +1 -1
  218. package/dist/ssr/layout/index.js +1 -0
  219. package/dist/ssr/layout/index.js.map +1 -1
  220. package/dist/ssr/layout/sheet-handle.js +155 -0
  221. package/dist/ssr/layout/sheet-handle.js.map +1 -0
  222. package/dist/ssr/surfaces/BudgetList.js +170 -0
  223. package/dist/ssr/surfaces/BudgetList.js.map +1 -0
  224. package/dist/ssr/surfaces/NoticeCard.js +25 -10
  225. package/dist/ssr/surfaces/NoticeCard.js.map +1 -1
  226. package/dist/ssr/surfaces/ProgressBar.js +96 -5
  227. package/dist/ssr/surfaces/ProgressBar.js.map +1 -1
  228. package/dist/ssr/surfaces/StatCell.js +157 -51
  229. package/dist/ssr/surfaces/StatCell.js.map +1 -1
  230. package/dist/ssr/surfaces/StatGrid.js +24 -35
  231. package/dist/ssr/surfaces/StatGrid.js.map +1 -1
  232. package/dist/ssr/surfaces/budget-messages.js +64 -0
  233. package/dist/ssr/surfaces/budget-messages.js.map +1 -0
  234. package/dist/ssr/surfaces/delta-badge.js +41 -0
  235. package/dist/ssr/surfaces/delta-badge.js.map +1 -0
  236. package/dist/ssr/surfaces/index.js +2 -1
  237. package/dist/ssr/surfaces/index.js.map +1 -1
  238. package/dist/ssr/surfaces/person-color.js +2 -2
  239. package/dist/ssr/surfaces/person-color.js.map +1 -1
  240. package/dist/ssr/surfaces/stat-cell-messages.js +41 -0
  241. package/dist/ssr/surfaces/stat-cell-messages.js.map +1 -0
  242. package/dist/ssr/widgets/Dashboard.js +84 -0
  243. package/dist/ssr/widgets/Dashboard.js.map +1 -0
  244. package/dist/ssr/widgets/index.js +1 -0
  245. package/dist/ssr/widgets/index.js.map +1 -1
  246. package/dist/styles.css +1 -1
  247. package/dist/types/charts/core/area.d.ts +62 -0
  248. package/dist/types/charts/core/calendar.d.ts +57 -0
  249. package/dist/types/charts/core/chart-map-data.d.ts +3 -0
  250. package/dist/types/charts/core/index.d.ts +11 -0
  251. package/dist/types/charts/core/inspection.d.ts +16 -0
  252. package/dist/types/charts/core/registry.d.ts +27 -0
  253. package/dist/types/charts/core/render.d.ts +40 -0
  254. package/dist/types/charts/core/snapshot.d.ts +27 -0
  255. package/dist/types/charts/core/svg.d.ts +714 -0
  256. package/dist/types/charts/core/termination.test-fixture.d.ts +1 -0
  257. package/dist/types/charts/core/text.d.ts +5 -0
  258. package/dist/types/charts/core/types.d.ts +31 -0
  259. package/dist/types/charts.d.ts +4 -2
  260. package/dist/types/content/BalanceSummary.d.ts +29 -0
  261. package/dist/types/content/Chart.d.ts +26 -36
  262. package/dist/types/content/ChartExplorer.d.ts +43 -2
  263. package/dist/types/content/ChartSnapshotView.d.ts +1 -0
  264. package/dist/types/content/DataTable.d.ts +28 -0
  265. package/dist/types/content/DataTableTools.d.ts +44 -0
  266. package/dist/types/content/FlowAmount.d.ts +28 -0
  267. package/dist/types/content/balance-summary-messages.d.ts +11 -0
  268. package/dist/types/content/chart-bar.d.ts +1 -1
  269. package/dist/types/content/chart-calendar.d.ts +4 -0
  270. package/dist/types/content/chart-inspection-core.d.ts +21 -16
  271. package/dist/types/content/chart-inspection.d.ts +5 -1
  272. package/dist/types/content/chart-map-viewport.d.ts +1 -1
  273. package/dist/types/content/chart-message-catalog.d.ts +84 -0
  274. package/dist/types/content/chart-messages.d.ts +2 -33
  275. package/dist/types/content/chart-snapshot.d.ts +1 -26
  276. package/dist/types/content/chart-svg.d.ts +1 -1
  277. package/dist/types/content/chart-time-axis.d.ts +26 -0
  278. package/dist/types/content/data-table-columns.d.ts +72 -0
  279. package/dist/types/content/data-table-messages.d.ts +18 -0
  280. package/dist/types/content/flow-amount-messages.d.ts +11 -0
  281. package/dist/types/content/index.d.ts +10 -2
  282. package/dist/types/feedback/prompt-confirm.d.ts +3 -1
  283. package/dist/types/feedback/prompts.d.ts +2 -2
  284. package/dist/types/inputs/NumberInput.d.ts +1 -1
  285. package/dist/types/inputs/SelectChip.d.ts +2 -0
  286. package/dist/types/inputs/date-picker.d.ts +6 -0
  287. package/dist/types/intl/Format.d.ts +5 -0
  288. package/dist/types/layout/AppWorkspace.d.ts +21 -1
  289. package/dist/types/layout/MobileShell.d.ts +5 -0
  290. package/dist/types/layout/index.d.ts +2 -1
  291. package/dist/types/layout/sheet-handle.d.ts +21 -0
  292. package/dist/types/surfaces/BudgetList.d.ts +42 -0
  293. package/dist/types/surfaces/NoticeCard.d.ts +5 -2
  294. package/dist/types/surfaces/ProgressBar.d.ts +38 -2
  295. package/dist/types/surfaces/StatCell.d.ts +35 -2
  296. package/dist/types/surfaces/StatGrid.d.ts +3 -1
  297. package/dist/types/surfaces/budget-messages.d.ts +30 -0
  298. package/dist/types/surfaces/delta-badge.d.ts +10 -0
  299. package/dist/types/surfaces/index.d.ts +4 -3
  300. package/dist/types/surfaces/person-color.d.ts +2 -2
  301. package/dist/types/surfaces/stat-cell-messages.d.ts +19 -0
  302. package/dist/types/widgets/Dashboard.d.ts +42 -0
  303. package/dist/types/widgets/index.d.ts +1 -0
  304. package/package.json +7 -1
@@ -1,29 +1,52 @@
1
1
  import { template as _$template } from "solid-js/web";
2
- import { getNextMarker as _$getNextMarker } from "solid-js/web";
3
- import { createComponent as _$createComponent } from "solid-js/web";
2
+ import { delegateEvents as _$delegateEvents } from "solid-js/web";
3
+ import { runHydrationEvents as _$runHydrationEvents } from "solid-js/web";
4
4
  import { memo as _$memo } from "solid-js/web";
5
5
  import { className as _$className } from "solid-js/web";
6
6
  import { setAttribute as _$setAttribute } from "solid-js/web";
7
7
  import { effect as _$effect } from "solid-js/web";
8
8
  import { getNextElement as _$getNextElement } from "solid-js/web";
9
+ import { getNextMarker as _$getNextMarker } from "solid-js/web";
9
10
  import { insert as _$insert } from "solid-js/web";
10
- var _tmpl$ = /*#__PURE__*/_$template(`<span class=k2b-stat-cell__label>`),
11
- _tmpl$2 = /*#__PURE__*/_$template(`<span>`),
12
- _tmpl$3 = /*#__PURE__*/_$template(`<div class=k2b-stat-cell__support><!$><!/><!$><!/>`),
13
- _tmpl$4 = /*#__PURE__*/_$template(`<span class=k2b-stat-cell__sub>`),
14
- _tmpl$5 = /*#__PURE__*/_$template(`<i aria-hidden=true>`),
15
- _tmpl$6 = /*#__PURE__*/_$template(`<span class=k2b-stat-cell__accent><i aria-hidden=true></i><!$><!/>`),
16
- _tmpl$7 = /*#__PURE__*/_$template(`<div class=k2b-stat-cell>`),
17
- _tmpl$8 = /*#__PURE__*/_$template(`<a class="k2b-stat-cell k2b-stat-cell--link"><i class="ti ti-external-link k2b-stat-cell__link-icon"aria-hidden=true></i><!$><!/>`);
18
- import { Show } from "solid-js";
11
+ import { createComponent as _$createComponent } from "solid-js/web";
12
+ var _tmpl$ = /*#__PURE__*/_$template(`<div class=k2b-stat-cell__head><!$><!/><span class=k2b-stat-cell__label>`),
13
+ _tmpl$2 = /*#__PURE__*/_$template(`<span class="k2b-stat-cell__skeleton k2b-skeleton"data-part=value aria-hidden=true>`),
14
+ _tmpl$3 = /*#__PURE__*/_$template(`<span class=k2b-sr-only>`),
15
+ _tmpl$4 = /*#__PURE__*/_$template(`<span class=k2b-stat-cell__error><i class="ti ti-alert-circle"aria-hidden=true></i><!$><!/>`),
16
+ _tmpl$5 = /*#__PURE__*/_$template(`<div class=k2b-stat-cell__main>`),
17
+ _tmpl$6 = /*#__PURE__*/_$template(`<span class="k2b-stat-cell__skeleton k2b-skeleton"data-part=support aria-hidden=true>`),
18
+ _tmpl$7 = /*#__PURE__*/_$template(`<div class=k2b-stat-cell__support>`),
19
+ _tmpl$8 = /*#__PURE__*/_$template(`<span class="k2b-stat-cell__icon k2b-icon-tile"aria-hidden=true><i>`),
20
+ _tmpl$9 = /*#__PURE__*/_$template(`<span>`),
21
+ _tmpl$0 = /*#__PURE__*/_$template(`<span class=k2b-stat-cell__sub><!$><!/> <!$><!/>`),
22
+ _tmpl$1 = /*#__PURE__*/_$template(`<span class=k2b-stat-cell__sub>`),
23
+ _tmpl$10 = /*#__PURE__*/_$template(`<i aria-hidden=true>`),
24
+ _tmpl$11 = /*#__PURE__*/_$template(`<span class=k2b-stat-cell__accent><i aria-hidden=true></i><!$><!/>`),
25
+ _tmpl$12 = /*#__PURE__*/_$template(`<span class=k2b-stat-cell__stale><i class="ti ti-clock-exclamation"aria-hidden=true></i><!$><!/>`),
26
+ _tmpl$13 = /*#__PURE__*/_$template(`<button type=button class=k2b-stat-cell__retry>`),
27
+ _tmpl$14 = /*#__PURE__*/_$template(`<a class="k2b-stat-cell k2b-stat-cell--link"><i class="ti ti-external-link k2b-stat-cell__link-icon"aria-hidden=true></i><!$><!/>`),
28
+ _tmpl$15 = /*#__PURE__*/_$template(`<div class=k2b-stat-cell>`);
29
+ import { Match, Show, Switch } from "solid-js";
19
30
  import Chart from "../content/Chart";
20
31
  import { useLocale } from "../intl/locale";
32
+ import { DeltaBadge } from "./delta-badge";
21
33
  import { useStatGridSize, useStatGridSurface } from "./StatGrid";
34
+ import { useStatCellMessages } from "./stat-cell-messages";
35
+
36
+ /**
37
+ * The change against a comparison period. `unit: "ratio"` (default) reads `0.082` as `+8.2 %`; `"points"` is the
38
+ * difference of two shares in ratio units, so `0.031` reads `+3.1 pts`. Only with `better` does the badge carry a tone
39
+ * and say "better" or "worse"; without it the change stays unrated.
40
+ */
41
+
42
+ /** The value the change compares against, shown under the figure, such as "Last month 44,560". */
43
+
22
44
  function Body(props) {
23
45
  const gridSize = useStatGridSize();
24
46
  const size = () => props.size ?? gridSize;
25
47
  const accent = () => props.accent;
26
48
  const locale = useLocale();
49
+ const t = useStatCellMessages();
27
50
  const defaultTrendTooltip = ({
28
51
  datum
29
52
  }) => {
@@ -37,171 +60,324 @@ function Body(props) {
37
60
  }]
38
61
  };
39
62
  };
63
+ const compareValue = () => {
64
+ const value = props.compare?.value;
65
+ return typeof value === "number" ? new Intl.NumberFormat(locale()).format(value) : value;
66
+ };
67
+ const empty = () => props.value === null || props.value === undefined || props.value === "";
40
68
  return [(() => {
41
- var _el$ = _$getNextElement(_tmpl$);
42
- _$insert(_el$, () => props.label);
43
- _$effect(() => _$setAttribute(_el$, "data-size", size()));
69
+ var _el$ = _$getNextElement(_tmpl$),
70
+ _el$3 = _el$.firstChild,
71
+ [_el$4, _co$] = _$getNextMarker(_el$3.nextSibling),
72
+ _el$2 = _el$4.nextSibling;
73
+ _$insert(_el$, _$createComponent(Show, {
74
+ get when() {
75
+ return props.icon;
76
+ },
77
+ children: icon => (() => {
78
+ var _el$12 = _$getNextElement(_tmpl$8),
79
+ _el$13 = _el$12.firstChild;
80
+ _$effect(_p$ => {
81
+ var _v$ = props.tone ?? "zinc",
82
+ _v$2 = icon();
83
+ _v$ !== _p$.e && _$setAttribute(_el$12, "data-tone", _p$.e = _v$);
84
+ _v$2 !== _p$.t && _$className(_el$13, _p$.t = _v$2);
85
+ return _p$;
86
+ }, {
87
+ e: undefined,
88
+ t: undefined
89
+ });
90
+ return _el$12;
91
+ })()
92
+ }), _el$4, _co$);
93
+ _$insert(_el$2, () => props.label);
94
+ _$effect(() => _$setAttribute(_el$2, "data-size", size()));
44
95
  return _el$;
45
96
  })(), (() => {
46
- var _el$2 = _$getNextElement(_tmpl$2);
47
- _$insert(_el$2, () => props.value);
48
- _$effect(_p$ => {
49
- var _v$ = `k2b-stat-cell__value ${props.valueClass ?? ""}`,
50
- _v$2 = size(),
51
- _v$3 = props.title;
52
- _v$ !== _p$.e && _$className(_el$2, _p$.e = _v$);
53
- _v$2 !== _p$.t && _$setAttribute(_el$2, "data-size", _p$.t = _v$2);
54
- _v$3 !== _p$.a && _$setAttribute(_el$2, "title", _p$.a = _v$3);
55
- return _p$;
56
- }, {
57
- e: undefined,
58
- t: undefined,
59
- a: undefined
60
- });
61
- return _el$2;
62
- })(), _$createComponent(Show, {
63
- get when() {
64
- return _$memo(() => !!props.trend)() && props.trend.length > 1;
65
- },
66
- get children() {
67
- return _$createComponent(Chart, {
68
- kind: "sparkline",
69
- get labels() {
70
- return {
71
- interactiveChart: props.label
72
- };
73
- },
74
- get tooltip() {
75
- return props.trendTooltip ?? defaultTrendTooltip;
76
- },
77
- "class": "k2b-stat-cell__trend",
78
- style: {
79
- height: "32px"
80
- },
81
- get data() {
82
- return Array.from(props.trend ?? []);
83
- },
84
- showLast: true,
85
- showMinMax: true
86
- });
87
- }
88
- }), _$createComponent(Show, {
89
- get when() {
90
- return props.sub || accent();
91
- },
92
- get children() {
93
- var _el$3 = _$getNextElement(_tmpl$3),
94
- _el$4 = _el$3.firstChild,
95
- [_el$5, _co$] = _$getNextMarker(_el$4.nextSibling),
96
- _el$6 = _el$5.nextSibling,
97
- [_el$7, _co$2] = _$getNextMarker(_el$6.nextSibling);
98
- _$insert(_el$3, _$createComponent(Show, {
99
- get when() {
100
- return props.sub;
101
- },
102
- children: sub => (() => {
103
- var _el$8 = _$getNextElement(_tmpl$4);
104
- _$insert(_el$8, sub);
105
- return _el$8;
106
- })()
107
- }), _el$5, _co$);
108
- _$insert(_el$3, _$createComponent(Show, {
109
- get when() {
110
- return accent();
111
- },
112
- children: value => _$createComponent(Show, {
97
+ var _el$5 = _$getNextElement(_tmpl$5);
98
+ _$insert(_el$5, _$createComponent(Switch, {
99
+ get fallback() {
100
+ return [(() => {
101
+ var _el$14 = _$getNextElement(_tmpl$9);
102
+ _$insert(_el$14, (() => {
103
+ var _c$ = _$memo(() => !!empty());
104
+ return () => _c$() ? "–" : props.value;
105
+ })());
106
+ _$effect(_p$ => {
107
+ var _v$3 = `k2b-stat-cell__value ${props.valueClass ?? ""}`,
108
+ _v$4 = size(),
109
+ _v$5 = empty() || undefined,
110
+ _v$6 = props.title;
111
+ _v$3 !== _p$.e && _$className(_el$14, _p$.e = _v$3);
112
+ _v$4 !== _p$.t && _$setAttribute(_el$14, "data-size", _p$.t = _v$4);
113
+ _v$5 !== _p$.a && _$setAttribute(_el$14, "data-empty", _p$.a = _v$5);
114
+ _v$6 !== _p$.o && _$setAttribute(_el$14, "title", _p$.o = _v$6);
115
+ return _p$;
116
+ }, {
117
+ e: undefined,
118
+ t: undefined,
119
+ a: undefined,
120
+ o: undefined
121
+ });
122
+ return _el$14;
123
+ })(), _$createComponent(Show, {
124
+ get when() {
125
+ return _$memo(() => !!!empty())() && props.delta;
126
+ },
127
+ children: delta => _$createComponent(DeltaBadge, {
128
+ get delta() {
129
+ return delta();
130
+ },
131
+ get compare() {
132
+ return props.compare;
133
+ }
134
+ })
135
+ })];
136
+ },
137
+ get children() {
138
+ return [_$createComponent(Match, {
139
+ get when() {
140
+ return props.status === "loading";
141
+ },
142
+ get children() {
143
+ return [_$getNextElement(_tmpl$2), (() => {
144
+ var _el$7 = _$getNextElement(_tmpl$3);
145
+ _$insert(_el$7, () => t().loading);
146
+ return _el$7;
147
+ })()];
148
+ }
149
+ }), _$createComponent(Match, {
113
150
  get when() {
114
- return value().text;
151
+ return props.status === "error";
152
+ },
153
+ get children() {
154
+ var _el$8 = _$getNextElement(_tmpl$4),
155
+ _el$9 = _el$8.firstChild,
156
+ _el$0 = _el$9.nextSibling,
157
+ [_el$1, _co$2] = _$getNextMarker(_el$0.nextSibling);
158
+ _$insert(_el$8, () => t().notLoaded, _el$1, _co$2);
159
+ return _el$8;
160
+ }
161
+ })];
162
+ }
163
+ }));
164
+ return _el$5;
165
+ })(), (() => {
166
+ var _el$10 = _$getNextElement(_tmpl$7);
167
+ _$insert(_el$10, _$createComponent(Switch, {
168
+ get fallback() {
169
+ return _$createComponent(Show, {
170
+ get when() {
171
+ return props.stale;
115
172
  },
116
173
  get fallback() {
117
- return (() => {
118
- var _el$9 = _$getNextElement(_tmpl$5);
119
- _$effect(_p$ => {
120
- var _v$4 = `${value().icon} k2b-stat-cell__accent-icon`,
121
- _v$5 = value().tone;
122
- _v$4 !== _p$.e && _$className(_el$9, _p$.e = _v$4);
123
- _v$5 !== _p$.t && _$setAttribute(_el$9, "data-tone", _p$.t = _v$5);
124
- return _p$;
125
- }, {
126
- e: undefined,
127
- t: undefined
128
- });
129
- return _el$9;
130
- })();
174
+ return [_$createComponent(Show, {
175
+ get when() {
176
+ return props.compare;
177
+ },
178
+ children: compare => (() => {
179
+ var _el$15 = _$getNextElement(_tmpl$0),
180
+ _el$17 = _el$15.firstChild,
181
+ [_el$18, _co$3] = _$getNextMarker(_el$17.nextSibling),
182
+ _el$16 = _el$18.nextSibling,
183
+ _el$19 = _el$16.nextSibling,
184
+ [_el$20, _co$4] = _$getNextMarker(_el$19.nextSibling);
185
+ _$insert(_el$15, () => compare().label, _el$18, _co$3);
186
+ _$insert(_el$15, compareValue, _el$20, _co$4);
187
+ return _el$15;
188
+ })()
189
+ }), _$createComponent(Show, {
190
+ get when() {
191
+ return props.sub;
192
+ },
193
+ children: sub => (() => {
194
+ var _el$21 = _$getNextElement(_tmpl$1);
195
+ _$insert(_el$21, sub);
196
+ return _el$21;
197
+ })()
198
+ }), _$createComponent(Show, {
199
+ get when() {
200
+ return accent();
201
+ },
202
+ children: value => _$createComponent(Show, {
203
+ get when() {
204
+ return value().text;
205
+ },
206
+ get fallback() {
207
+ return (() => {
208
+ var _el$22 = _$getNextElement(_tmpl$10);
209
+ _$effect(_p$ => {
210
+ var _v$7 = `${value().icon} k2b-stat-cell__accent-icon`,
211
+ _v$8 = value().tone;
212
+ _v$7 !== _p$.e && _$className(_el$22, _p$.e = _v$7);
213
+ _v$8 !== _p$.t && _$setAttribute(_el$22, "data-tone", _p$.t = _v$8);
214
+ return _p$;
215
+ }, {
216
+ e: undefined,
217
+ t: undefined
218
+ });
219
+ return _el$22;
220
+ })();
221
+ },
222
+ children: text => (() => {
223
+ var _el$23 = _$getNextElement(_tmpl$11),
224
+ _el$24 = _el$23.firstChild,
225
+ _el$25 = _el$24.nextSibling,
226
+ [_el$26, _co$5] = _$getNextMarker(_el$25.nextSibling);
227
+ _$insert(_el$23, text, _el$26, _co$5);
228
+ _$effect(_p$ => {
229
+ var _v$9 = value().tone,
230
+ _v$0 = value().icon;
231
+ _v$9 !== _p$.e && _$setAttribute(_el$23, "data-tone", _p$.e = _v$9);
232
+ _v$0 !== _p$.t && _$className(_el$24, _p$.t = _v$0);
233
+ return _p$;
234
+ }, {
235
+ e: undefined,
236
+ t: undefined
237
+ });
238
+ return _el$23;
239
+ })()
240
+ })
241
+ }), _$createComponent(Show, {
242
+ get when() {
243
+ return _$memo(() => !!(!empty() && props.trend))() && props.trend.length > 1;
244
+ },
245
+ get children() {
246
+ return _$createComponent(Chart, {
247
+ kind: "sparkline",
248
+ get labels() {
249
+ return {
250
+ interactiveChart: props.label
251
+ };
252
+ },
253
+ get tooltip() {
254
+ return props.trendTooltip ?? defaultTrendTooltip;
255
+ },
256
+ "class": "k2b-stat-cell__trend",
257
+ get data() {
258
+ return Array.from(props.trend ?? []);
259
+ },
260
+ showLast: true
261
+ });
262
+ }
263
+ })];
264
+ },
265
+ children: stale => [(() => {
266
+ var _el$27 = _$getNextElement(_tmpl$12),
267
+ _el$28 = _el$27.firstChild,
268
+ _el$29 = _el$28.nextSibling,
269
+ [_el$30, _co$6] = _$getNextMarker(_el$29.nextSibling);
270
+ _$insert(_el$27, stale, _el$30, _co$6);
271
+ return _el$27;
272
+ })(), _$createComponent(Show, {
273
+ get when() {
274
+ return props.onRetry;
275
+ },
276
+ children: retry => (() => {
277
+ var _el$31 = _$getNextElement(_tmpl$13);
278
+ _el$31.$$click = () => retry()();
279
+ _$insert(_el$31, () => t().reload);
280
+ _$runHydrationEvents();
281
+ return _el$31;
282
+ })()
283
+ })]
284
+ });
285
+ },
286
+ get children() {
287
+ return [_$createComponent(Match, {
288
+ get when() {
289
+ return props.status === "loading";
131
290
  },
132
- children: text => (() => {
133
- var _el$0 = _$getNextElement(_tmpl$6),
134
- _el$1 = _el$0.firstChild,
135
- _el$10 = _el$1.nextSibling,
136
- [_el$11, _co$3] = _$getNextMarker(_el$10.nextSibling);
137
- _$insert(_el$0, text, _el$11, _co$3);
138
- _$effect(_p$ => {
139
- var _v$6 = value().tone,
140
- _v$7 = value().icon;
141
- _v$6 !== _p$.e && _$setAttribute(_el$0, "data-tone", _p$.e = _v$6);
142
- _v$7 !== _p$.t && _$className(_el$1, _p$.t = _v$7);
143
- return _p$;
144
- }, {
145
- e: undefined,
146
- t: undefined
291
+ get children() {
292
+ return _$getNextElement(_tmpl$6);
293
+ }
294
+ }), _$createComponent(Match, {
295
+ get when() {
296
+ return props.status === "error";
297
+ },
298
+ get children() {
299
+ return _$createComponent(Show, {
300
+ get when() {
301
+ return props.onRetry;
302
+ },
303
+ children: retry => (() => {
304
+ var _el$32 = _$getNextElement(_tmpl$13);
305
+ _el$32.$$click = () => retry()();
306
+ _$insert(_el$32, () => t().retry);
307
+ _$runHydrationEvents();
308
+ return _el$32;
309
+ })()
147
310
  });
148
- return _el$0;
149
- })()
150
- })
151
- }), _el$7, _co$2);
152
- return _el$3;
153
- }
154
- })];
311
+ }
312
+ })];
313
+ }
314
+ }));
315
+ return _el$10;
316
+ })()];
155
317
  }
318
+
319
+ /**
320
+ * One key figure as a framed tile: icon and label, the figure with its change, and a support line with the comparison
321
+ * and the trend. Each state (loading, error, stale, empty) keeps the tile's place and size.
322
+ */
156
323
  export function StatCell(props) {
157
324
  const gridSize = useStatGridSize();
158
325
  const size = () => props.size ?? gridSize;
159
326
  const surface = useStatGridSurface();
160
- return _$createComponent(Show, {
327
+ return _$createComponent(Show
328
+ // A tile that offers a retry is no link: the button must not sit inside it.
329
+ , {
161
330
  get when() {
162
- return props.href;
331
+ return _$memo(() => !!(props.href && !props.status))() && !(props.stale && props.onRetry);
163
332
  },
164
333
  get fallback() {
165
334
  return (() => {
166
- var _el$12 = _$getNextElement(_tmpl$7);
167
- _$setAttribute(_el$12, "data-surface", surface);
168
- _$insert(_el$12, _$createComponent(Body, props));
335
+ var _el$37 = _$getNextElement(_tmpl$15);
336
+ _$setAttribute(_el$37, "data-surface", surface);
337
+ _$insert(_el$37, _$createComponent(Body, props));
169
338
  _$effect(_p$ => {
170
- var _v$8 = size(),
171
- _v$9 = props.wrap || undefined;
172
- _v$8 !== _p$.e && _$setAttribute(_el$12, "data-size", _p$.e = _v$8);
173
- _v$9 !== _p$.t && _$setAttribute(_el$12, "data-wrap", _p$.t = _v$9);
339
+ var _v$12 = size(),
340
+ _v$13 = props.wrap || undefined,
341
+ _v$14 = props.status,
342
+ _v$15 = props.status === "loading" || undefined;
343
+ _v$12 !== _p$.e && _$setAttribute(_el$37, "data-size", _p$.e = _v$12);
344
+ _v$13 !== _p$.t && _$setAttribute(_el$37, "data-wrap", _p$.t = _v$13);
345
+ _v$14 !== _p$.a && _$setAttribute(_el$37, "data-status", _p$.a = _v$14);
346
+ _v$15 !== _p$.o && _$setAttribute(_el$37, "aria-busy", _p$.o = _v$15);
174
347
  return _p$;
175
348
  }, {
176
349
  e: undefined,
177
- t: undefined
350
+ t: undefined,
351
+ a: undefined,
352
+ o: undefined
178
353
  });
179
- return _el$12;
354
+ return _el$37;
180
355
  })();
181
356
  },
182
- children: href => (() => {
183
- var _el$13 = _$getNextElement(_tmpl$8),
184
- _el$14 = _el$13.firstChild,
185
- _el$15 = _el$14.nextSibling,
186
- [_el$16, _co$4] = _$getNextMarker(_el$15.nextSibling);
187
- _$setAttribute(_el$13, "data-surface", surface);
188
- _$insert(_el$13, _$createComponent(Body, props), _el$16, _co$4);
357
+ get children() {
358
+ var _el$33 = _$getNextElement(_tmpl$14),
359
+ _el$34 = _el$33.firstChild,
360
+ _el$35 = _el$34.nextSibling,
361
+ [_el$36, _co$7] = _$getNextMarker(_el$35.nextSibling);
362
+ _$setAttribute(_el$33, "data-surface", surface);
363
+ _$insert(_el$33, _$createComponent(Body, props), _el$36, _co$7);
189
364
  _$effect(_p$ => {
190
- var _v$0 = href(),
191
- _v$1 = size(),
192
- _v$10 = props.wrap || undefined;
193
- _v$0 !== _p$.e && _$setAttribute(_el$13, "href", _p$.e = _v$0);
194
- _v$1 !== _p$.t && _$setAttribute(_el$13, "data-size", _p$.t = _v$1);
195
- _v$10 !== _p$.a && _$setAttribute(_el$13, "data-wrap", _p$.a = _v$10);
365
+ var _v$1 = props.href,
366
+ _v$10 = size(),
367
+ _v$11 = props.wrap || undefined;
368
+ _v$1 !== _p$.e && _$setAttribute(_el$33, "href", _p$.e = _v$1);
369
+ _v$10 !== _p$.t && _$setAttribute(_el$33, "data-size", _p$.t = _v$10);
370
+ _v$11 !== _p$.a && _$setAttribute(_el$33, "data-wrap", _p$.a = _v$11);
196
371
  return _p$;
197
372
  }, {
198
373
  e: undefined,
199
374
  t: undefined,
200
375
  a: undefined
201
376
  });
202
- return _el$13;
203
- })()
377
+ return _el$33;
378
+ }
204
379
  });
205
380
  }
206
381
  export default StatCell;
382
+ _$delegateEvents(["click"]);
207
383
  //# sourceMappingURL=StatCell.js.map
@@ -1 +1 @@
1
- {"version":3,"names":[],"sources":["surfaces/StatCell.tsx"],"sourcesContent":["import { type JSX, Show } from \"solid-js\";\nimport Chart from \"../content/Chart\";\nimport type { ChartTooltipFormatter } from \"../content/chart-inspection-core\";\nimport { useLocale } from \"../intl/locale\";\nimport type { AccentColor } from \"../semantics\";\nimport { type StatGridSize, useStatGridSize, useStatGridSurface } from \"./StatGrid\";\n\nexport type StatCellTone = AccentColor;\n\nexport type StatCellAccent = {\n tone: StatCellTone;\n icon: string;\n text?: string;\n};\n\nexport type StatCellProps = {\n label: string;\n value: string | number | JSX.Element;\n sub?: string;\n valueClass?: string;\n accent?: StatCellAccent;\n href?: string;\n title?: string;\n trend?: readonly number[];\n /**\n * Replaces the default trend tooltip in browser code, for example with a period title or a unit.\n * `selection.datum.index` is the source index into `trend`.\n */\n trendTooltip?: ChartTooltipFormatter;\n size?: StatGridSize;\n /**\n * Wraps the label, value and support line instead of truncating them. Use it for a cell whose height nothing\n * reserves, such as one figure on its own; cells compared in a row keep one line each.\n */\n wrap?: boolean;\n};\n\nfunction Body(props: StatCellProps): JSX.Element {\n const gridSize = useStatGridSize();\n const size = () => props.size ?? gridSize;\n const accent = () => props.accent;\n const locale = useLocale();\n const defaultTrendTooltip: ChartTooltipFormatter = ({ datum }) => {\n const y = datum.values.find((field) => field.key === \"y\")?.value ?? \"\";\n return {\n rows: [\n { label: props.label, value: typeof y === \"number\" ? new Intl.NumberFormat(locale(), { maximumFractionDigits: 6 }).format(y) : y },\n ],\n };\n };\n return (\n <>\n <span class=\"k2b-stat-cell__label\" data-size={size()}>\n {props.label}\n </span>\n <span class={`k2b-stat-cell__value ${props.valueClass ?? \"\"}`} data-size={size()} title={props.title}>\n {props.value}\n </span>\n <Show when={props.trend && props.trend.length > 1}>\n <Chart\n kind=\"sparkline\"\n labels={{ interactiveChart: props.label }}\n tooltip={props.trendTooltip ?? defaultTrendTooltip}\n class=\"k2b-stat-cell__trend\"\n style={{ height: \"32px\" }}\n data={Array.from(props.trend ?? [])}\n showLast\n showMinMax\n />\n </Show>\n <Show when={props.sub || accent()}>\n <div class=\"k2b-stat-cell__support\">\n <Show when={props.sub}>{(sub) => <span class=\"k2b-stat-cell__sub\">{sub()}</span>}</Show>\n <Show when={accent()}>\n {(value) => (\n <Show\n when={value().text}\n fallback={<i class={`${value().icon} k2b-stat-cell__accent-icon`} data-tone={value().tone} aria-hidden=\"true\" />}\n >\n {(text) => (\n <span class=\"k2b-stat-cell__accent\" data-tone={value().tone}>\n <i class={value().icon} aria-hidden=\"true\" />\n {text()}\n </span>\n )}\n </Show>\n )}\n </Show>\n </div>\n </Show>\n </>\n );\n}\n\nexport function StatCell(props: StatCellProps): JSX.Element {\n const gridSize = useStatGridSize();\n const size = () => props.size ?? gridSize;\n const surface = useStatGridSurface();\n return (\n <Show\n when={props.href}\n fallback={\n <div class=\"k2b-stat-cell\" data-size={size()} data-surface={surface} data-wrap={props.wrap || undefined}>\n <Body {...props} />\n </div>\n }\n >\n {(href) => (\n <a\n href={href()}\n class=\"k2b-stat-cell k2b-stat-cell--link\"\n data-size={size()}\n data-surface={surface}\n data-wrap={props.wrap || undefined}\n >\n <i class=\"ti ti-external-link k2b-stat-cell__link-icon\" aria-hidden=\"true\" />\n <Body {...props} />\n </a>\n )}\n </Show>\n );\n}\n\nexport default StatCell;\n"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"names":[],"sources":["surfaces/StatCell.tsx"],"sourcesContent":["import { type JSX, Match, Show, Switch } from \"solid-js\";\nimport Chart from \"../content/Chart\";\nimport type { ChartTooltipFormatter } from \"../content/chart-inspection-core\";\nimport { useLocale } from \"../intl/locale\";\nimport type { AccentColor } from \"../semantics\";\nimport { DeltaBadge } from \"./delta-badge\";\nimport { type StatGridSize, useStatGridSize, useStatGridSurface } from \"./StatGrid\";\nimport { useStatCellMessages } from \"./stat-cell-messages\";\n\nexport type StatCellTone = AccentColor;\n\nexport type StatCellAccent = {\n tone: StatCellTone;\n icon: string;\n text?: string;\n};\n\n/**\n * The change against a comparison period. `unit: \"ratio\"` (default) reads `0.082` as `+8.2 %`; `\"points\"` is the\n * difference of two shares in ratio units, so `0.031` reads `+3.1 pts`. Only with `better` does the badge carry a tone\n * and say \"better\" or \"worse\"; without it the change stays unrated.\n */\nexport type StatCellDelta = {\n value: number;\n unit?: \"ratio\" | \"points\";\n better?: \"up\" | \"down\";\n};\n\n/** The value the change compares against, shown under the figure, such as \"Last month 44,560\". */\nexport type StatCellCompare = {\n label: string;\n value: string | number;\n};\n\nexport type StatCellSize = StatGridSize;\n\nexport type StatCellProps = {\n label: string;\n /** The figure. `null` shows the empty dash; `sub` then says why. */\n value: string | number | JSX.Element | null;\n sub?: string;\n valueClass?: string;\n /** An icon in a chip before the label, in `tone`. `\"in\"` and `\"out\"` are the money colours of `FlowAmount`. */\n icon?: string;\n /** The chip colour of `icon`. Defaults to zinc. */\n tone?: StatCellTone | \"in\" | \"out\";\n accent?: StatCellAccent;\n delta?: StatCellDelta;\n compare?: StatCellCompare;\n href?: string;\n title?: string;\n trend?: readonly number[];\n /**\n * Replaces the default trend tooltip in browser code, for example with a period title or a unit.\n * `selection.datum.index` is the source index into `trend`.\n */\n trendTooltip?: ChartTooltipFormatter;\n size?: StatCellSize;\n /**\n * Wraps the label, value and support line instead of truncating them. Use it for a cell whose height nothing\n * reserves, such as one figure on its own; cells compared in a row keep one line each.\n */\n wrap?: boolean;\n /** `\"loading\"` keeps the tile's size with placeholders; `\"error\"` says the figure did not load. */\n status?: \"loading\" | \"error\";\n /** Offers \"Try again\" after an error and \"Reload\" beside `stale`. */\n onRetry?: () => void;\n /** The figure is not current: a short note such as \"As of 09:12 · not current\" replaces the support line. */\n stale?: string;\n};\n\nfunction Body(props: StatCellProps): JSX.Element {\n const gridSize = useStatGridSize();\n const size = () => props.size ?? gridSize;\n const accent = () => props.accent;\n const locale = useLocale();\n const t = useStatCellMessages();\n const defaultTrendTooltip: ChartTooltipFormatter = ({ datum }) => {\n const y = datum.values.find((field) => field.key === \"y\")?.value ?? \"\";\n return {\n rows: [\n { label: props.label, value: typeof y === \"number\" ? new Intl.NumberFormat(locale(), { maximumFractionDigits: 6 }).format(y) : y },\n ],\n };\n };\n const compareValue = () => {\n const value = props.compare?.value;\n return typeof value === \"number\" ? new Intl.NumberFormat(locale()).format(value) : value;\n };\n const empty = () => props.value === null || props.value === undefined || props.value === \"\";\n return (\n <>\n <div class=\"k2b-stat-cell__head\">\n <Show when={props.icon}>\n {(icon) => (\n <span class=\"k2b-stat-cell__icon k2b-icon-tile\" data-tone={props.tone ?? \"zinc\"} aria-hidden=\"true\">\n <i class={icon()} />\n </span>\n )}\n </Show>\n <span class=\"k2b-stat-cell__label\" data-size={size()}>\n {props.label}\n </span>\n </div>\n <div class=\"k2b-stat-cell__main\">\n <Switch\n fallback={\n <>\n <span\n class={`k2b-stat-cell__value ${props.valueClass ?? \"\"}`}\n data-size={size()}\n data-empty={empty() || undefined}\n title={props.title}\n >\n {empty() ? \"–\" : props.value}\n </span>\n <Show when={!empty() && props.delta}>{(delta) => <DeltaBadge delta={delta()} compare={props.compare} />}</Show>\n </>\n }\n >\n <Match when={props.status === \"loading\"}>\n <span class=\"k2b-stat-cell__skeleton k2b-skeleton\" data-part=\"value\" aria-hidden=\"true\" />\n <span class=\"k2b-sr-only\">{t().loading}</span>\n </Match>\n <Match when={props.status === \"error\"}>\n <span class=\"k2b-stat-cell__error\">\n <i class=\"ti ti-alert-circle\" aria-hidden=\"true\" />\n {t().notLoaded}\n </span>\n </Match>\n </Switch>\n </div>\n <div class=\"k2b-stat-cell__support\">\n <Switch\n fallback={\n <Show\n when={props.stale}\n fallback={\n <>\n <Show when={props.compare}>\n {(compare) => (\n <span class=\"k2b-stat-cell__sub\">\n {compare().label} {compareValue()}\n </span>\n )}\n </Show>\n <Show when={props.sub}>{(sub) => <span class=\"k2b-stat-cell__sub\">{sub()}</span>}</Show>\n <Show when={accent()}>\n {(value) => (\n <Show\n when={value().text}\n fallback={<i class={`${value().icon} k2b-stat-cell__accent-icon`} data-tone={value().tone} aria-hidden=\"true\" />}\n >\n {(text) => (\n <span class=\"k2b-stat-cell__accent\" data-tone={value().tone}>\n <i class={value().icon} aria-hidden=\"true\" />\n {text()}\n </span>\n )}\n </Show>\n )}\n </Show>\n {/* No figure, no trend: an empty tile says why in `sub` and keeps the size of its other states. */}\n <Show when={!empty() && props.trend && props.trend.length > 1}>\n <Chart\n kind=\"sparkline\"\n labels={{ interactiveChart: props.label }}\n tooltip={props.trendTooltip ?? defaultTrendTooltip}\n class=\"k2b-stat-cell__trend\"\n data={Array.from(props.trend ?? [])}\n showLast\n />\n </Show>\n </>\n }\n >\n {(stale) => (\n <>\n <span class=\"k2b-stat-cell__stale\">\n <i class=\"ti ti-clock-exclamation\" aria-hidden=\"true\" />\n {stale()}\n </span>\n <Show when={props.onRetry}>\n {(retry) => (\n <button type=\"button\" class=\"k2b-stat-cell__retry\" onClick={() => retry()()}>\n {t().reload}\n </button>\n )}\n </Show>\n </>\n )}\n </Show>\n }\n >\n <Match when={props.status === \"loading\"}>\n <span class=\"k2b-stat-cell__skeleton k2b-skeleton\" data-part=\"support\" aria-hidden=\"true\" />\n </Match>\n <Match when={props.status === \"error\"}>\n <Show when={props.onRetry}>\n {(retry) => (\n <button type=\"button\" class=\"k2b-stat-cell__retry\" onClick={() => retry()()}>\n {t().retry}\n </button>\n )}\n </Show>\n </Match>\n </Switch>\n </div>\n </>\n );\n}\n\n/**\n * One key figure as a framed tile: icon and label, the figure with its change, and a support line with the comparison\n * and the trend. Each state (loading, error, stale, empty) keeps the tile's place and size.\n */\nexport function StatCell(props: StatCellProps): JSX.Element {\n const gridSize = useStatGridSize();\n const size = () => props.size ?? gridSize;\n const surface = useStatGridSurface();\n return (\n <Show\n // A tile that offers a retry is no link: the button must not sit inside it.\n when={props.href && !props.status && !(props.stale && props.onRetry)}\n fallback={\n <div\n class=\"k2b-stat-cell\"\n data-size={size()}\n data-surface={surface}\n data-wrap={props.wrap || undefined}\n data-status={props.status}\n aria-busy={props.status === \"loading\" || undefined}\n >\n <Body {...props} />\n </div>\n }\n >\n <a\n href={props.href}\n class=\"k2b-stat-cell k2b-stat-cell--link\"\n data-size={size()}\n data-surface={surface}\n data-wrap={props.wrap || undefined}\n >\n <i class=\"ti ti-external-link k2b-stat-cell__link-icon\" aria-hidden=\"true\" />\n <Body {...props} />\n </a>\n </Show>\n );\n}\n\nexport default StatCell;\n"],"mappings":"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","ignoreList":[]}