@kubex/zinc 1.1.185 → 2.0.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 (358) hide show
  1. package/.browserslistrc +2 -0
  2. package/.github/workflows/js_build_and_deploy.yaml +54 -1
  3. package/.github/workflows/test.yaml +27 -0
  4. package/dist/chunks/zn.UWJLIXDT.js +1 -0
  5. package/dist/custom-elements.json +9998 -2345
  6. package/dist/vscode.html-custom-data.json +1022 -67
  7. package/dist/web-types.json +2129 -177
  8. package/dist/zn.d.ts +2293 -416
  9. package/dist/zn.min.css +1 -1
  10. package/dist/zn.min.js +2310 -1637
  11. package/docs/_includes/default.njk +4 -1
  12. package/docs/assets/scripts/docs.js +22 -6
  13. package/docs/assets/styles/docs.css +9 -2
  14. package/docs/data/report-table-day-compare.json +380 -0
  15. package/docs/data/report-table.json +314 -0
  16. package/docs/pages/components/avatar-group.md +57 -0
  17. package/docs/pages/components/badge.md +67 -0
  18. package/docs/pages/components/button.md +41 -1
  19. package/docs/pages/components/chat-message.md +16 -0
  20. package/docs/pages/components/checkbox.md +1 -1
  21. package/docs/pages/components/chip.md +25 -13
  22. package/docs/pages/components/color-picker.md +37 -0
  23. package/docs/pages/components/copy-button.md +2 -2
  24. package/docs/pages/components/data-table-filter.md +33 -50
  25. package/docs/pages/components/data-table-search.md +4 -4
  26. package/docs/pages/components/data-table.md +27 -3
  27. package/docs/pages/components/date-range.md +116 -0
  28. package/docs/pages/components/dialog.md +29 -37
  29. package/docs/pages/components/diff-row.md +28 -0
  30. package/docs/pages/components/diff.md +46 -0
  31. package/docs/pages/components/editor.md +55 -0
  32. package/docs/pages/components/icon.md +46 -1
  33. package/docs/pages/components/input.md +30 -11
  34. package/docs/pages/components/item.md +35 -0
  35. package/docs/pages/components/key-value.md +25 -0
  36. package/docs/pages/components/menu.md +74 -7
  37. package/docs/pages/components/nav-item.md +15 -0
  38. package/docs/pages/components/nav-list.md +132 -0
  39. package/docs/pages/components/navbar.md +100 -1
  40. package/docs/pages/components/page.md +242 -74
  41. package/docs/pages/components/priority-list.md +43 -5
  42. package/docs/pages/components/query-builder.md +23 -0
  43. package/docs/pages/components/radio-group.md +33 -1
  44. package/docs/pages/components/radio.md +1 -1
  45. package/docs/pages/components/report-table.md +202 -0
  46. package/docs/pages/components/stat.md +30 -0
  47. package/docs/pages/components/tile.md +11 -0
  48. package/docs/pages/components/tooltip.md +1 -1
  49. package/docs/pages/components/translation-grid.md +86 -0
  50. package/docs/pages/components/vertical-stepper.md +108 -64
  51. package/package.json +2 -1
  52. package/scss/_global-spacing.scss +2 -2
  53. package/scss/_root.scss +11 -171
  54. package/scss/boot.scss +14 -0
  55. package/scss/mixins/_helper-mixins.scss +24 -2
  56. package/scss/mixins/_motion-mixins.scss +126 -0
  57. package/scss/mixins/_spacing-mixins.scss +4 -3
  58. package/scss/mixins/_tab-indicator-mixins.scss +12 -0
  59. package/scss/mixins/_typography-mixins.scss +1 -1
  60. package/scss/mixins/index.scss +14 -0
  61. package/scss/shared/_base.scss +32 -1
  62. package/scss/shared/_button-mixin.scss +7 -5
  63. package/scss/shared/_table.scss +35 -4
  64. package/scss/shared/nav.scss +4 -0
  65. package/scss/shared/shimmer.scss +1 -1
  66. package/scss/table-controls.scss +206 -0
  67. package/scss/themes/_dark.scss +1 -3
  68. package/scss/themes/_index.scss +1 -1
  69. package/scss/themes/_light.scss +46 -6
  70. package/scss/themes/_modes.scss +11 -11
  71. package/scss/themes/_openbyte.scss +944 -0
  72. package/scss/themes/_typography.scss +4 -2
  73. package/scss/variables/index.scss +0 -9
  74. package/src/components/alert/alert.component.ts +14 -4
  75. package/src/components/alert/alert.scss +55 -69
  76. package/src/components/alert/alert.test.ts +8 -0
  77. package/src/components/animated-button/animated-button.component.ts +3 -2
  78. package/src/components/animated-button/animated-button.scss +6 -23
  79. package/src/components/animated-button/animated-button.test.ts +4 -3
  80. package/src/components/avatar-group/avatar-group.component.ts +84 -0
  81. package/src/components/avatar-group/avatar-group.scss +54 -0
  82. package/src/components/avatar-group/avatar-group.test.ts +59 -0
  83. package/src/components/avatar-group/index.ts +12 -0
  84. package/src/components/badge/badge.component.ts +49 -0
  85. package/src/components/badge/badge.scss +80 -0
  86. package/src/components/badge/badge.test.ts +34 -0
  87. package/src/components/badge/index.ts +12 -0
  88. package/src/components/bulk-actions/bulk-actions.component.ts +14 -2
  89. package/src/components/button/button.component.ts +228 -8
  90. package/src/components/button/button.scss +115 -32
  91. package/src/components/button/button.test.ts +122 -0
  92. package/src/components/button-menu/button-menu.component.ts +32 -11
  93. package/src/components/button-menu/button-menu.scss +5 -1
  94. package/src/components/channel-tile/channel-tile.component.ts +34 -27
  95. package/src/components/channel-tile/channel-tile.scss +76 -43
  96. package/src/components/chart/builders.test.ts +46 -0
  97. package/src/components/chart/builders.ts +27 -3
  98. package/src/components/chart/chart-live.test.ts +4 -6
  99. package/src/components/chart/chart.component.ts +125 -5
  100. package/src/components/chart/chart.scss +121 -0
  101. package/src/components/chart/chart.test.ts +81 -0
  102. package/src/components/chat-message/chat-message.component.ts +21 -1
  103. package/src/components/chat-message/chat-message.scss +13 -2
  104. package/src/components/chat-message/chat-message.test.ts +9 -0
  105. package/src/components/checkbox/checkbox.component.ts +61 -27
  106. package/src/components/checkbox/checkbox.scss +58 -25
  107. package/src/components/checkbox-group/checkbox-group.component.ts +7 -1
  108. package/src/components/chip/chip.component.ts +11 -1
  109. package/src/components/chip/chip.scss +91 -26
  110. package/src/components/chip/chip.test.ts +17 -0
  111. package/src/components/collapsible/collapsible.component.ts +17 -3
  112. package/src/components/collapsible/collapsible.scss +19 -10
  113. package/src/components/color-picker/color-picker.component.ts +277 -0
  114. package/src/components/color-picker/color-picker.scss +141 -0
  115. package/src/components/color-picker/color-picker.test.ts +57 -0
  116. package/src/components/color-picker/index.ts +12 -0
  117. package/src/components/cols/cols.component.ts +10 -0
  118. package/src/components/cols/cols.test.ts +17 -0
  119. package/src/components/confirm/confirm.component.ts +20 -6
  120. package/src/components/confirm/confirm.test.ts +52 -0
  121. package/src/components/content-block/content-block.component.ts +38 -9
  122. package/src/components/content-block/content-block.scss +11 -5
  123. package/src/components/content-block/content-block.test.ts +26 -0
  124. package/src/components/copy-button/copy-button.component.ts +2 -2
  125. package/src/components/copy-button/copy-button.scss +17 -4
  126. package/src/components/data-select/data-select.component.ts +3 -1
  127. package/src/components/data-table/data-table.component.ts +362 -140
  128. package/src/components/data-table/data-table.scss +133 -60
  129. package/src/components/data-table/data-table.test.ts +356 -4
  130. package/src/components/data-table-filter/data-table-filter.component.ts +426 -406
  131. package/src/components/data-table-filter/data-table-filter.scss +176 -148
  132. package/src/components/data-table-filter/data-table-filter.test.ts +271 -273
  133. package/src/components/data-table-search/data-table-search.component.ts +4 -2
  134. package/src/components/data-table-search/data-table-search.scss +8 -1
  135. package/src/components/data-table-search/data-table-search.test.ts +29 -0
  136. package/src/components/date-range/date-range-math.test.ts +78 -0
  137. package/src/components/date-range/date-range-math.ts +105 -0
  138. package/src/components/date-range/date-range.component.ts +375 -0
  139. package/src/components/date-range/date-range.scss +272 -0
  140. package/src/components/date-range/date-range.test.ts +247 -0
  141. package/src/components/date-range/index.ts +12 -0
  142. package/src/components/datepicker/datepicker.component.ts +44 -7
  143. package/src/components/datepicker/datepicker.scss +9 -0
  144. package/src/components/datepicker/datepicker.test.ts +2 -2
  145. package/src/components/dialog/dialog.component.ts +38 -19
  146. package/src/components/dialog/dialog.scss +65 -36
  147. package/src/components/dialog/dialog.test.ts +14 -0
  148. package/src/components/diff/diff.component.ts +55 -0
  149. package/src/components/diff/diff.scss +46 -0
  150. package/src/components/diff/diff.test.ts +15 -0
  151. package/src/components/diff/index.ts +12 -0
  152. package/src/components/diff-row/diff-row.component.ts +75 -0
  153. package/src/components/diff-row/diff-row.scss +70 -0
  154. package/src/components/diff-row/diff-row.test.ts +37 -0
  155. package/src/components/diff-row/index.ts +12 -0
  156. package/src/components/dropdown/dropdown.component.ts +12 -10
  157. package/src/components/dropdown/dropdown.scss +2 -0
  158. package/src/components/editor/editor.component.ts +159 -11
  159. package/src/components/editor/editor.scss +250 -1
  160. package/src/components/editor/editor.test.ts +31 -3
  161. package/src/components/editor/modules/ai/panel/ai-panel.scss +0 -1
  162. package/src/components/editor/modules/attachment/attachment.ts +53 -31
  163. package/src/components/editor/modules/context-menu/context-menu.ts +17 -0
  164. package/src/components/editor/modules/dialog/dialog.component.ts +23 -1
  165. package/src/components/editor/modules/dialog/dialog.test.ts +28 -0
  166. package/src/components/editor/modules/emoji/emoji.ts +4 -5
  167. package/src/components/editor/modules/merge-field/merge-field.ts +83 -0
  168. package/src/components/editor/modules/toolbar/toolbar.component.ts +121 -68
  169. package/src/components/editor/modules/toolbar/toolbar.scss +38 -0
  170. package/src/components/editor/modules/toolbar/toolbar.ts +25 -1
  171. package/src/components/empty-state/empty-state.component.ts +6 -1
  172. package/src/components/empty-state/empty-state.scss +21 -4
  173. package/src/components/expanding-action/expanding-action.component.ts +22 -34
  174. package/src/components/expanding-action/expanding-action.scss +3 -45
  175. package/src/components/expanding-action/expanding-action.test.ts +2 -1
  176. package/src/components/file/file.component.ts +30 -2
  177. package/src/components/file/file.scss +6 -0
  178. package/src/components/flow-builder/flow-builder.component.ts +36 -3
  179. package/src/components/flow-builder/flow-builder.scss +0 -6
  180. package/src/components/flow-builder/modules/flow-canvas/flow-canvas.component.ts +8 -0
  181. package/src/components/flow-builder/modules/flow-canvas/flow-canvas.scss +10 -5
  182. package/src/components/flow-builder/modules/flow-node/flow-node.component.ts +17 -0
  183. package/src/components/flow-builder/modules/flow-node/flow-node.scss +10 -0
  184. package/src/components/form-actions/form-actions.component.ts +48 -2
  185. package/src/components/form-actions/form-actions.scss +1 -1
  186. package/src/components/form-group/form-group.component.ts +10 -3
  187. package/src/components/form-group/form-group.scss +37 -4
  188. package/src/components/form-group/form-group.test.ts +10 -0
  189. package/src/components/header/header.component.ts +11 -4
  190. package/src/components/header/header.scss +47 -5
  191. package/src/components/hover-container/hover-container.component.ts +4 -5
  192. package/src/components/icon/icon.component.ts +95 -9
  193. package/src/components/icon/icon.scss +70 -6
  194. package/src/components/icon/icon.test.ts +55 -0
  195. package/src/components/icon-picker/icon-picker.component.ts +35 -1
  196. package/src/components/inline-edit/inline-edit.component.ts +38 -8
  197. package/src/components/inline-edit/inline-edit.scss +128 -19
  198. package/src/components/input/input.component.ts +173 -297
  199. package/src/components/input/input.scss +65 -43
  200. package/src/components/input/input.test.ts +86 -4
  201. package/src/components/item/item.component.ts +12 -0
  202. package/src/components/item/item.scss +102 -3
  203. package/src/components/item/item.test.ts +23 -0
  204. package/src/components/key/key.component.ts +2 -2
  205. package/src/components/key/key.scss +11 -0
  206. package/src/components/key-value/index.ts +12 -0
  207. package/src/components/key-value/key-value.component.ts +160 -0
  208. package/src/components/key-value/key-value.scss +20 -0
  209. package/src/components/key-value/key-value.test.ts +22 -0
  210. package/src/components/markdown-editor/markdown-editor.component.ts +8 -1
  211. package/src/components/menu/menu.component.ts +21 -2
  212. package/src/components/menu/menu.scss +43 -23
  213. package/src/components/menu/menu.test.ts +33 -0
  214. package/src/components/menu-item/menu-item.component.ts +13 -2
  215. package/src/components/menu-item/menu-item.scss +56 -23
  216. package/src/components/menu-item/menu-item.test.ts +31 -0
  217. package/src/components/menu-item/submenu-controller.ts +25 -15
  218. package/src/components/menu-label/index.ts +12 -0
  219. package/src/components/menu-label/menu-label.component.ts +30 -0
  220. package/src/components/menu-label/menu-label.scss +18 -0
  221. package/src/components/nav-item/index.ts +12 -0
  222. package/src/components/nav-item/nav-item.component.ts +83 -0
  223. package/src/components/nav-item/nav-item.scss +128 -0
  224. package/src/components/nav-list/index.ts +12 -0
  225. package/src/components/nav-list/nav-list.component.ts +313 -0
  226. package/src/components/nav-list/nav-list.scss +87 -0
  227. package/src/components/nav-list/nav-list.test.ts +250 -0
  228. package/src/components/navbar/navbar.component.ts +235 -171
  229. package/src/components/navbar/navbar.scss +333 -169
  230. package/src/components/navbar/navbar.test.ts +63 -143
  231. package/src/components/page/page.component.ts +114 -29
  232. package/src/components/page/page.scss +223 -95
  233. package/src/components/page/page.test.ts +214 -3
  234. package/src/components/page-builder/page-builder.component.ts +51 -5
  235. package/src/components/page-builder/page-builder.scss +6 -1
  236. package/src/components/page-nav/page-nav.component.ts +25 -3
  237. package/src/components/page-nav/page-nav.scss +10 -2
  238. package/src/components/pagination/pagination.scss +1 -1
  239. package/src/components/panel/panel.component.ts +14 -13
  240. package/src/components/panel/panel.scss +14 -10
  241. package/src/components/panel/panel.test.ts +42 -0
  242. package/src/components/popup/popup.component.ts +20 -13
  243. package/src/components/popup/popup.test.ts +21 -1
  244. package/src/components/priority-list/priority-list.component.ts +157 -172
  245. package/src/components/priority-list/priority-list.scss +113 -17
  246. package/src/components/priority-list/priority-list.test.ts +301 -3
  247. package/src/components/progress-bar/progress-bar.component.ts +1 -1
  248. package/src/components/progress-bar/progress-bar.scss +16 -4
  249. package/src/components/progress-tile/progress-tile.scss +1 -1
  250. package/src/components/query-builder/query-builder.component.ts +85 -10
  251. package/src/components/query-builder/query-builder.scss +7 -1
  252. package/src/components/query-builder/query-builder.test.ts +40 -0
  253. package/src/components/radio/radio.component.ts +57 -18
  254. package/src/components/radio/radio.scss +101 -26
  255. package/src/components/radio-group/radio-group.component.ts +45 -7
  256. package/src/components/radio-group/radio-group.scss +17 -0
  257. package/src/components/radio-group/radio-group.test.ts +63 -2
  258. package/src/components/rating/rating.component.ts +23 -0
  259. package/src/components/rating/rating.scss +1 -1
  260. package/src/components/remarkd-editor/remarkd-editor.component.ts +60 -5
  261. package/src/components/remarkd-editor/remarkd-editor.scss +12 -4
  262. package/src/components/report-table/index.ts +12 -0
  263. package/src/components/report-table/report-format.test.ts +86 -0
  264. package/src/components/report-table/report-format.ts +72 -0
  265. package/src/components/report-table/report-math.test.ts +74 -0
  266. package/src/components/report-table/report-math.ts +252 -0
  267. package/src/components/report-table/report-table.component.ts +681 -0
  268. package/src/components/report-table/report-table.scss +328 -0
  269. package/src/components/report-table/report-table.test.ts +702 -0
  270. package/src/components/reveal/reveal.component.ts +15 -1
  271. package/src/components/reveal/reveal.scss +5 -0
  272. package/src/components/schedule-builder/schedule-builder.component.ts +23 -8
  273. package/src/components/scroll-container/scroll-container.component.ts +19 -1
  274. package/src/components/scroll-container/scroll-container.scss +6 -1
  275. package/src/components/select/select.component.ts +52 -36
  276. package/src/components/select/select.scss +42 -25
  277. package/src/components/select/select.test.ts +14 -2
  278. package/src/components/settings-container/settings-container.scss +18 -5
  279. package/src/components/sidebar/sidebar.component.ts +8 -1
  280. package/src/components/sidebar/sidebar.scss +6 -1
  281. package/src/components/skeleton/skeleton.component.ts +3 -3
  282. package/src/components/skeleton/skeleton.scss +6 -6
  283. package/src/components/skeleton/skeleton.test.ts +9 -0
  284. package/src/components/slash-menu/slash-menu.scss +1 -1
  285. package/src/components/slideout/slideout.component.ts +20 -3
  286. package/src/components/slideout/slideout.scss +13 -6
  287. package/src/components/slideout/slideout.test.ts +19 -0
  288. package/src/components/split-button/split-button.component.ts +1 -1
  289. package/src/components/split-pane/split-pane.component.ts +71 -8
  290. package/src/components/split-pane/split-pane.scss +145 -41
  291. package/src/components/split-pane/split-pane.test.ts +23 -3
  292. package/src/components/stat/stat.component.ts +209 -14
  293. package/src/components/stat/stat.scss +305 -5
  294. package/src/components/stat/stat.test.ts +143 -2
  295. package/src/components/status-indicator/status-indicator.scss +22 -21
  296. package/src/components/stepper/stepper.scss +3 -3
  297. package/src/components/tab/tab.component.ts +1 -0
  298. package/src/components/table/table.component.ts +12 -1
  299. package/src/components/table/table.scss +21 -13
  300. package/src/components/table/table.test.ts +17 -0
  301. package/src/components/tabs/tabs.component.ts +150 -37
  302. package/src/components/tabs/tabs.scss +48 -7
  303. package/src/components/tabs/tabs.test.ts +169 -0
  304. package/src/components/textarea/textarea.component.ts +25 -3
  305. package/src/components/textarea/textarea.scss +10 -0
  306. package/src/components/textarea/textarea.test.ts +8 -4
  307. package/src/components/theme-editor/theme-editor.scss +0 -6
  308. package/src/components/tile/tile.component.ts +32 -2
  309. package/src/components/tile/tile.scss +40 -7
  310. package/src/components/tile/tile.test.ts +10 -0
  311. package/src/components/toggle/toggle.component.ts +23 -7
  312. package/src/components/toggle/toggle.scss +36 -29
  313. package/src/components/toggle/toggle.test.ts +17 -0
  314. package/src/components/tooltip/tooltip.component.ts +3 -0
  315. package/src/components/tooltip/tooltip.scss +11 -6
  316. package/src/components/tooltip/tooltip.test.ts +12 -0
  317. package/src/components/translation-field/index.ts +12 -0
  318. package/src/components/translation-field/translation-field.component.ts +55 -0
  319. package/src/components/translation-field/translation-field.scss +101 -0
  320. package/src/components/translation-fields/index.ts +12 -0
  321. package/src/components/translation-fields/translation-fields.component.ts +80 -0
  322. package/src/components/translation-fields/translation-fields.scss +60 -0
  323. package/src/components/translation-grid/index.ts +12 -0
  324. package/src/components/translation-grid/translation-grid.component.ts +157 -0
  325. package/src/components/translation-grid/translation-grid.scss +138 -0
  326. package/src/components/translation-grid/translation-grid.test.ts +28 -0
  327. package/src/components/vertical-stepper/vertical-stepper.component.ts +35 -9
  328. package/src/components/vertical-stepper/vertical-stepper.scss +110 -39
  329. package/src/components/vertical-stepper/vertical-stepper.test.ts +35 -0
  330. package/src/components/well/well.scss +2 -2
  331. package/src/events/events.ts +2 -0
  332. package/src/events/zn-chart-click.ts +13 -0
  333. package/src/events/zn-report-change.ts +7 -0
  334. package/src/form-control.scss +36 -3
  335. package/src/internal/anchored-popover.ts +175 -0
  336. package/src/internal/animate.ts +19 -5
  337. package/src/internal/cosmic-border.ts +15 -0
  338. package/src/internal/form.ts +1 -1
  339. package/src/internal/hover-intent.ts +15 -0
  340. package/src/internal/input-modality.ts +15 -0
  341. package/src/internal/pointer-intent.ts +37 -0
  342. package/src/internal/reorder.ts +625 -0
  343. package/src/internal/scroll.ts +51 -3
  344. package/src/internal/selection-card.ts +1 -1
  345. package/src/internal/tab-indicator.ts +92 -0
  346. package/src/internal/table-sort.ts +25 -0
  347. package/src/internal/table-tabs.ts +108 -0
  348. package/src/internal/test-drag.ts +35 -0
  349. package/src/internal/theme-openbyte.test.ts +126 -0
  350. package/src/internal/theme.ts +4 -4
  351. package/src/internal/zinc-element.ts +2 -2
  352. package/src/selection-card.scss +25 -0
  353. package/src/types/web-test-runner-commands.d.ts +1 -0
  354. package/src/utilities/color.test.ts +43 -0
  355. package/src/utilities/color.ts +189 -0
  356. package/src/zinc.ts +14 -0
  357. package/.github/workflows/eleventy_build.yml +0 -42
  358. package/scss/themes/_aura.scss +0 -114
@@ -0,0 +1,328 @@
1
+ @use "../../wc";
2
+
3
+ :host {
4
+ display: block;
5
+
6
+ --_divider: var(--zn-table-row-divider-color, rgb(var(--zn-border-color)));
7
+ --_head: rgb(var(--zn-table-header-background-color));
8
+ --_group: color-mix(in srgb, rgb(var(--zn-border-color)) 25%, var(--_head));
9
+ }
10
+
11
+ .report__scroll {
12
+ overflow-x: auto;
13
+ @include wc.scrollbars;
14
+ }
15
+
16
+ .report__scroll tbody td,
17
+ .report__scroll tfoot td {
18
+ transition: opacity var(--zn-transition-fast, 150ms);
19
+ }
20
+
21
+ // The frozen column stays opaque, or the scrolling cells would show through it
22
+ .report__scroll--busy tbody td:not(.report__dim),
23
+ .report__scroll--busy tfoot td:not(.report__dim) {
24
+ opacity: 0.3;
25
+ }
26
+
27
+ .report__alert {
28
+ display: block;
29
+ margin: var(--zn-spacing-small) var(--zn-table-edge-padding, var(--zn-spacing-medium));
30
+ }
31
+
32
+ .report__skeleton {
33
+ display: flex;
34
+ flex-direction: column;
35
+ gap: var(--zn-spacing-small);
36
+ padding: var(--zn-table-edge-padding, var(--zn-spacing-medium));
37
+ }
38
+
39
+ .report {
40
+ width: 100%;
41
+ border-collapse: separate;
42
+ border-spacing: 0;
43
+ @include wc.text-style(table-content);
44
+ color: rgb(var(--zn-text-heading));
45
+
46
+ th, td {
47
+ padding: 0 var(--zn-density-cell-padding-x, var(--zn-spacing-medium));
48
+ text-align: left;
49
+ white-space: nowrap;
50
+ }
51
+
52
+ th:first-child, td:first-child {
53
+ padding-inline-start: var(--zn-table-edge-padding, var(--zn-spacing-medium));
54
+ }
55
+
56
+ th:last-child, td:last-child {
57
+ padding-inline-end: var(--zn-table-edge-padding, var(--zn-spacing-medium));
58
+ }
59
+
60
+ th {
61
+ height: var(--zn-table-header-height, 32px);
62
+ font-size: var(--zn-table-header-font-size, var(--zn-font-size-x-small));
63
+ font-weight: var(--zn-font-weight-semibold);
64
+ color: var(--zn-table-header-color, rgb(var(--zn-text)));
65
+ background-color: var(--_head);
66
+ border-bottom: 1px solid rgb(var(--zn-border-color));
67
+ }
68
+
69
+ td {
70
+ height: var(--zn-table-row-height, 40px);
71
+ border-bottom: 1px solid var(--_divider);
72
+ }
73
+
74
+ tbody tr:last-child td {
75
+ border-bottom: 0;
76
+ }
77
+ }
78
+
79
+ .report__groups th {
80
+ font-weight: var(--zn-font-weight-medium);
81
+ background-color: var(--_group);
82
+ }
83
+
84
+ // Keeps each group's label in view beside the frozen column while its group is scrolled past
85
+ .report__glabel {
86
+ position: sticky;
87
+ left: calc(var(--_dim-width, 0px) + var(--zn-density-cell-padding-x, var(--zn-spacing-medium)));
88
+ display: inline-block;
89
+ }
90
+
91
+ .report thead tr:not(.report__groups) th {
92
+ cursor: pointer;
93
+ user-select: none;
94
+
95
+ &:focus-visible {
96
+ outline: var(--zn-focus-ring);
97
+ outline-offset: calc(-1 * var(--zn-focus-ring-width));
98
+ }
99
+ }
100
+
101
+ .report__head {
102
+ display: inline-flex;
103
+ align-items: center;
104
+ gap: 4px;
105
+ }
106
+
107
+ .report__unit {
108
+ font-weight: var(--zn-font-weight-normal);
109
+ color: rgb(var(--zn-text-muted));
110
+ }
111
+
112
+ .report thead .report__num .report__head {
113
+ justify-content: flex-end;
114
+ }
115
+
116
+ .report .report__num {
117
+ text-align: right;
118
+ font-variant-numeric: tabular-nums;
119
+ }
120
+
121
+ .report__sep {
122
+ border-left: 1px solid var(--_divider);
123
+ }
124
+
125
+ th.report__sep {
126
+ border-left-color: rgb(var(--zn-border-color));
127
+ }
128
+
129
+ // Above the scrolling cells, opaque so they pass behind it
130
+ .report__dim {
131
+ position: sticky;
132
+ left: 0;
133
+ z-index: 2;
134
+ background-color: rgb(var(--zn-panel));
135
+ box-shadow: inset -1px 0 0 var(--_divider);
136
+ }
137
+
138
+ th.report__dim {
139
+ z-index: 3;
140
+ background-color: var(--_head);
141
+ }
142
+
143
+ .report__groups th.report__dim {
144
+ background-color: var(--_group);
145
+ border-bottom-color: transparent;
146
+ }
147
+
148
+ .report tbody a {
149
+ color: var(--zn-color-primary-fg, rgb(var(--zn-primary)));
150
+ font-weight: var(--zn-font-weight-medium);
151
+ text-decoration: none;
152
+
153
+ &:hover {
154
+ text-decoration: underline;
155
+ }
156
+ }
157
+
158
+ // A lone blue digit beside black ones barely reads as a link
159
+ .report tbody .report__num a {
160
+ font-weight: var(--zn-font-weight-semibold);
161
+ text-decoration: underline;
162
+ text-decoration-color: color-mix(in srgb, currentColor 35%, transparent);
163
+ text-underline-offset: 3px;
164
+
165
+ &:hover {
166
+ text-decoration-color: currentColor;
167
+ }
168
+ }
169
+
170
+ // Lighter than the headings, and opaque so cells scrolling behind the frozen column don't show through
171
+ .report tbody tr:hover td {
172
+ background-color: color-mix(in srgb, var(--_head) 50%, rgb(var(--zn-panel)));
173
+ }
174
+
175
+ // After the hover rule, so a hovered row keeps its shading
176
+ .report tbody tr td.report__heat {
177
+ --_heat-color: rgb(var(--zn-primary));
178
+ background-color: color-mix(in srgb, var(--_heat-color) calc(var(--_heat) * 32%), rgb(var(--zn-panel)));
179
+ }
180
+
181
+ .report tbody tr td.report__heat--neg {
182
+ --_heat-color: var(--zn-color-success-fg, rgb(var(--zn-color-success)));
183
+ }
184
+
185
+ .report tbody tr[aria-selected="true"] td {
186
+ background-color: var(--zn-table-row-selected-background, var(--zn-color-primary-50, color-mix(in srgb, rgb(var(--zn-primary)) 8%, rgb(var(--zn-panel)))));
187
+ }
188
+
189
+ .report__total td {
190
+ font-weight: var(--zn-font-weight-bold);
191
+ border-top: 1px solid rgb(var(--zn-border-color));
192
+ border-bottom: 0;
193
+ background-color: rgb(var(--zn-panel));
194
+ }
195
+
196
+ .report__bold {
197
+ font-weight: var(--zn-font-weight-bold);
198
+ }
199
+
200
+ .report__pos {
201
+ color: var(--zn-color-success-fg, rgb(var(--zn-color-success)));
202
+ }
203
+
204
+ .report__neg {
205
+ color: var(--zn-color-danger-fg, rgb(var(--zn-color-error)));
206
+ }
207
+
208
+ zn-panel::part(header-left) {
209
+ flex-shrink: 0;
210
+ }
211
+
212
+ // zn-date-range sizes its controls small, so small is raised to the funnel's height
213
+ .report__actions {
214
+ --zn-button-height-small: var(--zn-button-height);
215
+ --zn-input-height-small: var(--zn-input-height-medium);
216
+
217
+ display: flex;
218
+ flex: 1 1 auto;
219
+ flex-wrap: wrap;
220
+ align-items: center;
221
+ justify-content: flex-end;
222
+ gap: var(--zn-spacing-x-small);
223
+ }
224
+
225
+ .report__search {
226
+ flex: 0 1 220px;
227
+ min-width: 180px;
228
+ }
229
+
230
+ .report__groupby {
231
+ --zn-text-button-label-transform: none;
232
+ --zn-text-button-label-font-weight: var(--zn-font-weight-medium, 500);
233
+ }
234
+
235
+ .report__groupby::part(label) {
236
+ display: inline-flex;
237
+ align-items: center;
238
+ gap: 6px;
239
+ }
240
+
241
+ .report__groupby strong {
242
+ font-weight: var(--zn-font-weight-bold);
243
+ }
244
+
245
+ .report__gpop {
246
+ position: fixed;
247
+ z-index: var(--zn-z-index-dropdown, 900);
248
+ width: min(506px, 94vw);
249
+ box-sizing: border-box;
250
+ max-height: min(28rem, 70vh);
251
+ overflow: auto;
252
+ padding: var(--zn-spacing-x-small);
253
+ background: rgb(var(--zn-panel));
254
+ border: 1px solid rgb(var(--zn-border-color));
255
+ border-radius: var(--zn-menu-border-radius, var(--zn-border-radius-medium, 8px));
256
+ box-shadow: var(--zn-menu-shadow, var(--zn-shadow-large, 0 12px 32px rgb(15 23 42 / 0.14)));
257
+ }
258
+
259
+ .report__gpop--categories {
260
+ width: min(560px, 94vw);
261
+ }
262
+
263
+ .report__ggrid {
264
+ display: grid;
265
+ grid-template-columns: repeat(3, minmax(0, 1fr));
266
+ gap: var(--zn-spacing-small);
267
+ }
268
+
269
+ .report__ggrid--flow {
270
+ row-gap: 0;
271
+ }
272
+
273
+ .report__gcat {
274
+ display: flex;
275
+ flex-direction: column;
276
+ min-width: 0;
277
+ }
278
+
279
+ .report__gcat__head {
280
+ padding: 6px 10px 4px;
281
+ font-size: var(--zn-font-size-x-small);
282
+ font-weight: var(--zn-font-weight-semibold);
283
+ text-transform: uppercase;
284
+ letter-spacing: 0.04em;
285
+ color: color-mix(in srgb, rgb(var(--zn-text)) 65%, transparent);
286
+ }
287
+
288
+ // Native buttons: reset what the shared button mixin applies
289
+ .report__gopt {
290
+ display: flex;
291
+ align-items: center;
292
+ margin: 0;
293
+ width: 100%;
294
+ height: var(--zn-density-control-height, 36px);
295
+ min-height: 0;
296
+ max-height: none;
297
+ padding: var(--zn-menu-item-padding, 0 10px);
298
+ border: 0;
299
+ border-radius: var(--zn-menu-item-border-radius, var(--zn-border-radius, 6px));
300
+ background: none;
301
+ box-shadow: none;
302
+ font: inherit;
303
+ font-size: var(--zn-font-size-small);
304
+ font-weight: var(--zn-font-weight-medium);
305
+ text-align: left;
306
+ text-transform: none;
307
+ letter-spacing: normal;
308
+ white-space: nowrap;
309
+ overflow: hidden;
310
+ text-overflow: ellipsis;
311
+ color: rgb(var(--zn-text-heading));
312
+ cursor: pointer;
313
+
314
+ &:hover:not([disabled]) {
315
+ background: var(--zn-menu-item-hover-background, color-mix(in srgb, rgb(var(--zn-text)) 6%, transparent));
316
+ color: rgb(var(--zn-text-heading));
317
+ }
318
+
319
+ &:focus-visible {
320
+ outline: var(--zn-focus-ring);
321
+ outline-offset: calc(-1 * var(--zn-focus-ring-width));
322
+ }
323
+
324
+ &[aria-current="true"] {
325
+ font-weight: var(--zn-font-weight-semibold);
326
+ color: var(--zn-color-primary-600, rgb(var(--zn-primary)));
327
+ }
328
+ }