@kubex/zinc 1.1.184 → 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 (362) 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 +10344 -2583
  6. package/dist/vscode.html-custom-data.json +1102 -125
  7. package/dist/web-types.json +2217 -224
  8. package/dist/zn.d.ts +2306 -417
  9. package/dist/zn.min.css +1 -1
  10. package/dist/zn.min.js +2313 -1635
  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/filter-wrapper.md +20 -0
  33. package/docs/pages/components/icon.md +46 -1
  34. package/docs/pages/components/input.md +30 -11
  35. package/docs/pages/components/item.md +35 -0
  36. package/docs/pages/components/key-value.md +25 -0
  37. package/docs/pages/components/menu.md +74 -7
  38. package/docs/pages/components/nav-item.md +15 -0
  39. package/docs/pages/components/nav-list.md +132 -0
  40. package/docs/pages/components/navbar.md +100 -1
  41. package/docs/pages/components/page.md +242 -74
  42. package/docs/pages/components/priority-list.md +43 -5
  43. package/docs/pages/components/query-builder.md +23 -0
  44. package/docs/pages/components/radio-group.md +33 -1
  45. package/docs/pages/components/radio.md +1 -1
  46. package/docs/pages/components/report-table.md +202 -0
  47. package/docs/pages/components/stat.md +30 -0
  48. package/docs/pages/components/tile.md +11 -0
  49. package/docs/pages/components/tooltip.md +1 -1
  50. package/docs/pages/components/translation-grid.md +86 -0
  51. package/docs/pages/components/vertical-stepper.md +108 -64
  52. package/package.json +2 -1
  53. package/scss/_global-spacing.scss +2 -2
  54. package/scss/_root.scss +11 -171
  55. package/scss/boot.scss +14 -0
  56. package/scss/mixins/_helper-mixins.scss +24 -2
  57. package/scss/mixins/_motion-mixins.scss +126 -0
  58. package/scss/mixins/_spacing-mixins.scss +4 -3
  59. package/scss/mixins/_tab-indicator-mixins.scss +12 -0
  60. package/scss/mixins/_typography-mixins.scss +1 -1
  61. package/scss/mixins/index.scss +14 -0
  62. package/scss/shared/_base.scss +32 -1
  63. package/scss/shared/_button-mixin.scss +7 -5
  64. package/scss/shared/_table.scss +35 -4
  65. package/scss/shared/nav.scss +4 -0
  66. package/scss/shared/shimmer.scss +1 -1
  67. package/scss/table-controls.scss +206 -0
  68. package/scss/themes/_dark.scss +1 -3
  69. package/scss/themes/_index.scss +1 -1
  70. package/scss/themes/_light.scss +46 -6
  71. package/scss/themes/_modes.scss +11 -11
  72. package/scss/themes/_openbyte.scss +944 -0
  73. package/scss/themes/_typography.scss +4 -2
  74. package/scss/variables/index.scss +0 -9
  75. package/src/components/alert/alert.component.ts +14 -4
  76. package/src/components/alert/alert.scss +55 -69
  77. package/src/components/alert/alert.test.ts +8 -0
  78. package/src/components/animated-button/animated-button.component.ts +3 -2
  79. package/src/components/animated-button/animated-button.scss +6 -23
  80. package/src/components/animated-button/animated-button.test.ts +4 -3
  81. package/src/components/avatar-group/avatar-group.component.ts +84 -0
  82. package/src/components/avatar-group/avatar-group.scss +54 -0
  83. package/src/components/avatar-group/avatar-group.test.ts +59 -0
  84. package/src/components/avatar-group/index.ts +12 -0
  85. package/src/components/badge/badge.component.ts +49 -0
  86. package/src/components/badge/badge.scss +80 -0
  87. package/src/components/badge/badge.test.ts +34 -0
  88. package/src/components/badge/index.ts +12 -0
  89. package/src/components/bulk-actions/bulk-actions.component.ts +14 -2
  90. package/src/components/button/button.component.ts +242 -11
  91. package/src/components/button/button.scss +133 -25
  92. package/src/components/button/button.test.ts +122 -0
  93. package/src/components/button-menu/button-menu.component.ts +32 -11
  94. package/src/components/button-menu/button-menu.scss +5 -1
  95. package/src/components/channel-tile/channel-tile.component.ts +34 -27
  96. package/src/components/channel-tile/channel-tile.scss +76 -43
  97. package/src/components/chart/builders.test.ts +46 -0
  98. package/src/components/chart/builders.ts +27 -3
  99. package/src/components/chart/chart-live.test.ts +4 -6
  100. package/src/components/chart/chart.component.ts +125 -5
  101. package/src/components/chart/chart.scss +121 -0
  102. package/src/components/chart/chart.test.ts +81 -0
  103. package/src/components/chat-message/chat-message.component.ts +21 -1
  104. package/src/components/chat-message/chat-message.scss +13 -2
  105. package/src/components/chat-message/chat-message.test.ts +9 -0
  106. package/src/components/checkbox/checkbox.component.ts +61 -27
  107. package/src/components/checkbox/checkbox.scss +58 -25
  108. package/src/components/checkbox-group/checkbox-group.component.ts +7 -1
  109. package/src/components/chip/chip.component.ts +11 -1
  110. package/src/components/chip/chip.scss +91 -26
  111. package/src/components/chip/chip.test.ts +17 -0
  112. package/src/components/collapsible/collapsible.component.ts +17 -3
  113. package/src/components/collapsible/collapsible.scss +19 -10
  114. package/src/components/color-picker/color-picker.component.ts +277 -0
  115. package/src/components/color-picker/color-picker.scss +141 -0
  116. package/src/components/color-picker/color-picker.test.ts +57 -0
  117. package/src/components/color-picker/index.ts +12 -0
  118. package/src/components/cols/cols.component.ts +17 -3
  119. package/src/components/cols/cols.scss +24 -13
  120. package/src/components/cols/cols.test.ts +33 -0
  121. package/src/components/confirm/confirm.component.ts +20 -6
  122. package/src/components/confirm/confirm.test.ts +52 -0
  123. package/src/components/content-block/content-block.component.ts +38 -9
  124. package/src/components/content-block/content-block.scss +11 -5
  125. package/src/components/content-block/content-block.test.ts +26 -0
  126. package/src/components/copy-button/copy-button.component.ts +2 -2
  127. package/src/components/copy-button/copy-button.scss +17 -4
  128. package/src/components/data-select/data-select.component.ts +3 -1
  129. package/src/components/data-table/data-table.component.ts +364 -142
  130. package/src/components/data-table/data-table.scss +133 -60
  131. package/src/components/data-table/data-table.test.ts +356 -4
  132. package/src/components/data-table-filter/data-table-filter.component.ts +426 -406
  133. package/src/components/data-table-filter/data-table-filter.scss +176 -148
  134. package/src/components/data-table-filter/data-table-filter.test.ts +271 -273
  135. package/src/components/data-table-search/data-table-search.component.ts +4 -2
  136. package/src/components/data-table-search/data-table-search.scss +8 -1
  137. package/src/components/data-table-search/data-table-search.test.ts +29 -0
  138. package/src/components/date-range/date-range-math.test.ts +78 -0
  139. package/src/components/date-range/date-range-math.ts +105 -0
  140. package/src/components/date-range/date-range.component.ts +375 -0
  141. package/src/components/date-range/date-range.scss +272 -0
  142. package/src/components/date-range/date-range.test.ts +247 -0
  143. package/src/components/date-range/index.ts +12 -0
  144. package/src/components/datepicker/datepicker.component.ts +44 -7
  145. package/src/components/datepicker/datepicker.scss +9 -0
  146. package/src/components/datepicker/datepicker.test.ts +2 -2
  147. package/src/components/dialog/dialog.component.ts +38 -19
  148. package/src/components/dialog/dialog.scss +65 -36
  149. package/src/components/dialog/dialog.test.ts +14 -0
  150. package/src/components/diff/diff.component.ts +55 -0
  151. package/src/components/diff/diff.scss +46 -0
  152. package/src/components/diff/diff.test.ts +15 -0
  153. package/src/components/diff/index.ts +12 -0
  154. package/src/components/diff-row/diff-row.component.ts +75 -0
  155. package/src/components/diff-row/diff-row.scss +70 -0
  156. package/src/components/diff-row/diff-row.test.ts +37 -0
  157. package/src/components/diff-row/index.ts +12 -0
  158. package/src/components/dropdown/dropdown.component.ts +12 -10
  159. package/src/components/dropdown/dropdown.scss +2 -0
  160. package/src/components/editor/editor.component.ts +159 -11
  161. package/src/components/editor/editor.scss +250 -1
  162. package/src/components/editor/editor.test.ts +31 -3
  163. package/src/components/editor/modules/ai/panel/ai-panel.scss +0 -1
  164. package/src/components/editor/modules/attachment/attachment.ts +53 -31
  165. package/src/components/editor/modules/context-menu/context-menu.ts +17 -0
  166. package/src/components/editor/modules/dialog/dialog.component.ts +23 -1
  167. package/src/components/editor/modules/dialog/dialog.test.ts +28 -0
  168. package/src/components/editor/modules/emoji/emoji.ts +4 -5
  169. package/src/components/editor/modules/merge-field/merge-field.ts +83 -0
  170. package/src/components/editor/modules/toolbar/toolbar.component.ts +121 -68
  171. package/src/components/editor/modules/toolbar/toolbar.scss +38 -0
  172. package/src/components/editor/modules/toolbar/toolbar.ts +25 -1
  173. package/src/components/empty-state/empty-state.component.ts +6 -1
  174. package/src/components/empty-state/empty-state.scss +21 -4
  175. package/src/components/expanding-action/expanding-action.component.ts +22 -34
  176. package/src/components/expanding-action/expanding-action.scss +3 -45
  177. package/src/components/expanding-action/expanding-action.test.ts +2 -1
  178. package/src/components/file/file.component.ts +30 -2
  179. package/src/components/file/file.scss +6 -0
  180. package/src/components/filter-wrapper/filter-wrapper.component.ts +45 -10
  181. package/src/components/filter-wrapper/filter-wrapper.test.ts +58 -2
  182. package/src/components/flow-builder/flow-builder.component.ts +36 -3
  183. package/src/components/flow-builder/flow-builder.scss +0 -6
  184. package/src/components/flow-builder/modules/flow-canvas/flow-canvas.component.ts +8 -0
  185. package/src/components/flow-builder/modules/flow-canvas/flow-canvas.scss +10 -5
  186. package/src/components/flow-builder/modules/flow-node/flow-node.component.ts +17 -0
  187. package/src/components/flow-builder/modules/flow-node/flow-node.scss +10 -0
  188. package/src/components/form-actions/form-actions.component.ts +48 -2
  189. package/src/components/form-actions/form-actions.scss +1 -1
  190. package/src/components/form-group/form-group.component.ts +10 -3
  191. package/src/components/form-group/form-group.scss +37 -4
  192. package/src/components/form-group/form-group.test.ts +10 -0
  193. package/src/components/header/header.component.ts +11 -4
  194. package/src/components/header/header.scss +47 -5
  195. package/src/components/hover-container/hover-container.component.ts +4 -5
  196. package/src/components/icon/icon.component.ts +95 -9
  197. package/src/components/icon/icon.scss +70 -6
  198. package/src/components/icon/icon.test.ts +55 -0
  199. package/src/components/icon-picker/icon-picker.component.ts +35 -1
  200. package/src/components/inline-edit/inline-edit.component.ts +38 -8
  201. package/src/components/inline-edit/inline-edit.scss +128 -19
  202. package/src/components/input/input.component.ts +173 -297
  203. package/src/components/input/input.scss +65 -43
  204. package/src/components/input/input.test.ts +86 -4
  205. package/src/components/item/item.component.ts +12 -0
  206. package/src/components/item/item.scss +102 -3
  207. package/src/components/item/item.test.ts +23 -0
  208. package/src/components/key/key.component.ts +2 -2
  209. package/src/components/key/key.scss +11 -0
  210. package/src/components/key-value/index.ts +12 -0
  211. package/src/components/key-value/key-value.component.ts +160 -0
  212. package/src/components/key-value/key-value.scss +20 -0
  213. package/src/components/key-value/key-value.test.ts +22 -0
  214. package/src/components/markdown-editor/markdown-editor.component.ts +8 -1
  215. package/src/components/menu/menu.component.ts +21 -2
  216. package/src/components/menu/menu.scss +43 -23
  217. package/src/components/menu/menu.test.ts +33 -0
  218. package/src/components/menu-item/menu-item.component.ts +13 -2
  219. package/src/components/menu-item/menu-item.scss +56 -23
  220. package/src/components/menu-item/menu-item.test.ts +31 -0
  221. package/src/components/menu-item/submenu-controller.ts +25 -15
  222. package/src/components/menu-label/index.ts +12 -0
  223. package/src/components/menu-label/menu-label.component.ts +30 -0
  224. package/src/components/menu-label/menu-label.scss +18 -0
  225. package/src/components/nav-item/index.ts +12 -0
  226. package/src/components/nav-item/nav-item.component.ts +83 -0
  227. package/src/components/nav-item/nav-item.scss +128 -0
  228. package/src/components/nav-list/index.ts +12 -0
  229. package/src/components/nav-list/nav-list.component.ts +313 -0
  230. package/src/components/nav-list/nav-list.scss +87 -0
  231. package/src/components/nav-list/nav-list.test.ts +250 -0
  232. package/src/components/navbar/navbar.component.ts +235 -171
  233. package/src/components/navbar/navbar.scss +333 -169
  234. package/src/components/navbar/navbar.test.ts +63 -143
  235. package/src/components/page/page.component.ts +114 -29
  236. package/src/components/page/page.scss +223 -95
  237. package/src/components/page/page.test.ts +214 -3
  238. package/src/components/page-builder/page-builder.component.ts +51 -5
  239. package/src/components/page-builder/page-builder.scss +6 -1
  240. package/src/components/page-nav/page-nav.component.ts +25 -3
  241. package/src/components/page-nav/page-nav.scss +10 -2
  242. package/src/components/pagination/pagination.scss +1 -1
  243. package/src/components/panel/panel.component.ts +14 -13
  244. package/src/components/panel/panel.scss +14 -10
  245. package/src/components/panel/panel.test.ts +42 -0
  246. package/src/components/popup/popup.component.ts +20 -13
  247. package/src/components/popup/popup.test.ts +21 -1
  248. package/src/components/priority-list/priority-list.component.ts +157 -172
  249. package/src/components/priority-list/priority-list.scss +113 -17
  250. package/src/components/priority-list/priority-list.test.ts +301 -3
  251. package/src/components/progress-bar/progress-bar.component.ts +1 -1
  252. package/src/components/progress-bar/progress-bar.scss +16 -4
  253. package/src/components/progress-tile/progress-tile.scss +1 -1
  254. package/src/components/query-builder/query-builder.component.ts +85 -10
  255. package/src/components/query-builder/query-builder.scss +7 -1
  256. package/src/components/query-builder/query-builder.test.ts +40 -0
  257. package/src/components/radio/radio.component.ts +57 -18
  258. package/src/components/radio/radio.scss +101 -26
  259. package/src/components/radio-group/radio-group.component.ts +45 -7
  260. package/src/components/radio-group/radio-group.scss +17 -0
  261. package/src/components/radio-group/radio-group.test.ts +63 -2
  262. package/src/components/rating/rating.component.ts +23 -0
  263. package/src/components/rating/rating.scss +1 -1
  264. package/src/components/remarkd-editor/remarkd-editor.component.ts +60 -5
  265. package/src/components/remarkd-editor/remarkd-editor.scss +12 -4
  266. package/src/components/report-table/index.ts +12 -0
  267. package/src/components/report-table/report-format.test.ts +86 -0
  268. package/src/components/report-table/report-format.ts +72 -0
  269. package/src/components/report-table/report-math.test.ts +74 -0
  270. package/src/components/report-table/report-math.ts +252 -0
  271. package/src/components/report-table/report-table.component.ts +681 -0
  272. package/src/components/report-table/report-table.scss +328 -0
  273. package/src/components/report-table/report-table.test.ts +702 -0
  274. package/src/components/reveal/reveal.component.ts +15 -1
  275. package/src/components/reveal/reveal.scss +5 -0
  276. package/src/components/schedule-builder/schedule-builder.component.ts +23 -8
  277. package/src/components/scroll-container/scroll-container.component.ts +19 -1
  278. package/src/components/scroll-container/scroll-container.scss +6 -1
  279. package/src/components/select/select.component.ts +52 -36
  280. package/src/components/select/select.scss +42 -25
  281. package/src/components/select/select.test.ts +14 -2
  282. package/src/components/settings-container/settings-container.scss +18 -5
  283. package/src/components/sidebar/sidebar.component.ts +8 -1
  284. package/src/components/sidebar/sidebar.scss +6 -1
  285. package/src/components/skeleton/skeleton.component.ts +3 -3
  286. package/src/components/skeleton/skeleton.scss +6 -6
  287. package/src/components/skeleton/skeleton.test.ts +9 -0
  288. package/src/components/slash-menu/slash-menu.scss +1 -1
  289. package/src/components/slideout/slideout.component.ts +20 -3
  290. package/src/components/slideout/slideout.scss +13 -6
  291. package/src/components/slideout/slideout.test.ts +19 -0
  292. package/src/components/split-button/split-button.component.ts +1 -1
  293. package/src/components/split-pane/split-pane.component.ts +71 -8
  294. package/src/components/split-pane/split-pane.scss +145 -41
  295. package/src/components/split-pane/split-pane.test.ts +23 -3
  296. package/src/components/stat/stat.component.ts +209 -14
  297. package/src/components/stat/stat.scss +305 -5
  298. package/src/components/stat/stat.test.ts +143 -2
  299. package/src/components/status-indicator/status-indicator.scss +22 -21
  300. package/src/components/stepper/stepper.scss +3 -3
  301. package/src/components/tab/tab.component.ts +1 -0
  302. package/src/components/table/table.component.ts +12 -1
  303. package/src/components/table/table.scss +21 -13
  304. package/src/components/table/table.test.ts +17 -0
  305. package/src/components/tabs/tabs.component.ts +150 -37
  306. package/src/components/tabs/tabs.scss +48 -7
  307. package/src/components/tabs/tabs.test.ts +169 -0
  308. package/src/components/textarea/textarea.component.ts +25 -3
  309. package/src/components/textarea/textarea.scss +10 -0
  310. package/src/components/textarea/textarea.test.ts +8 -4
  311. package/src/components/theme-editor/theme-editor.scss +0 -6
  312. package/src/components/tile/tile.component.ts +32 -2
  313. package/src/components/tile/tile.scss +40 -7
  314. package/src/components/tile/tile.test.ts +10 -0
  315. package/src/components/toggle/toggle.component.ts +23 -7
  316. package/src/components/toggle/toggle.scss +36 -29
  317. package/src/components/toggle/toggle.test.ts +17 -0
  318. package/src/components/tooltip/tooltip.component.ts +3 -0
  319. package/src/components/tooltip/tooltip.scss +11 -6
  320. package/src/components/tooltip/tooltip.test.ts +12 -0
  321. package/src/components/translation-field/index.ts +12 -0
  322. package/src/components/translation-field/translation-field.component.ts +55 -0
  323. package/src/components/translation-field/translation-field.scss +101 -0
  324. package/src/components/translation-fields/index.ts +12 -0
  325. package/src/components/translation-fields/translation-fields.component.ts +80 -0
  326. package/src/components/translation-fields/translation-fields.scss +60 -0
  327. package/src/components/translation-grid/index.ts +12 -0
  328. package/src/components/translation-grid/translation-grid.component.ts +157 -0
  329. package/src/components/translation-grid/translation-grid.scss +138 -0
  330. package/src/components/translation-grid/translation-grid.test.ts +28 -0
  331. package/src/components/vertical-stepper/vertical-stepper.component.ts +35 -9
  332. package/src/components/vertical-stepper/vertical-stepper.scss +110 -39
  333. package/src/components/vertical-stepper/vertical-stepper.test.ts +35 -0
  334. package/src/components/well/well.scss +2 -2
  335. package/src/events/events.ts +2 -0
  336. package/src/events/zn-chart-click.ts +13 -0
  337. package/src/events/zn-report-change.ts +7 -0
  338. package/src/form-control.scss +36 -3
  339. package/src/internal/anchored-popover.ts +175 -0
  340. package/src/internal/animate.ts +19 -5
  341. package/src/internal/cosmic-border.ts +15 -0
  342. package/src/internal/form.ts +1 -1
  343. package/src/internal/hover-intent.ts +15 -0
  344. package/src/internal/input-modality.ts +15 -0
  345. package/src/internal/pointer-intent.ts +37 -0
  346. package/src/internal/reorder.ts +625 -0
  347. package/src/internal/scroll.ts +51 -3
  348. package/src/internal/selection-card.ts +1 -1
  349. package/src/internal/tab-indicator.ts +92 -0
  350. package/src/internal/table-sort.ts +25 -0
  351. package/src/internal/table-tabs.ts +108 -0
  352. package/src/internal/test-drag.ts +35 -0
  353. package/src/internal/theme-openbyte.test.ts +126 -0
  354. package/src/internal/theme.ts +4 -4
  355. package/src/internal/zinc-element.ts +2 -2
  356. package/src/selection-card.scss +25 -0
  357. package/src/types/web-test-runner-commands.d.ts +1 -0
  358. package/src/utilities/color.test.ts +43 -0
  359. package/src/utilities/color.ts +189 -0
  360. package/src/zinc.ts +14 -0
  361. package/.github/workflows/eleventy_build.yml +0 -42
  362. package/scss/themes/_aura.scss +0 -114
@@ -33,7 +33,7 @@
33
33
  {# Zinc #}
34
34
  <script type="module" src="/dist/zn.min.js"></script>
35
35
  <link rel="stylesheet" href="/dist/zn.min.css"/>
36
- <link rel="stylesheet" href="https://fonts.googleapis.com/css?family=Inter:400,500,600,700&display=swap">
36
+ <link rel="stylesheet" href="https://fonts.googleapis.com/css2?family=Inter:wght@400;500;600;700&family=Plus+Jakarta+Sans:wght@700&display=swap">
37
37
 
38
38
  {# Scripts #}
39
39
  <script src="{{ assetUrl('scripts/turbo.js') }}" type="module"></script>
@@ -73,6 +73,9 @@
73
73
  <zn-menu-item type="checkbox" value="light">Light</zn-menu-item>
74
74
  <zn-menu-item type="checkbox" value="dark">Dark</zn-menu-item>
75
75
  <zn-menu-item type="checkbox" value="auto">System</zn-menu-item>
76
+ <hr style="margin: 0; border: none; border-top: 1px solid rgba(0,0,0,0.1);">
77
+ <zn-menu-item type="checkbox" value="density:compact">Compact</zn-menu-item>
78
+ <zn-menu-item type="checkbox" value="density:comfortable">Comfortable</zn-menu-item>
76
79
  </zn-menu>
77
80
  </zn-dropdown>
78
81
  </div>
@@ -103,9 +103,11 @@
103
103
  {
104
104
  function getTheme()
105
105
  {
106
- return localStorage.getItem('theme') || 'light';
106
+ return localStorage.getItem('theme') || 'auto';
107
107
  }
108
108
 
109
+ let density = localStorage.getItem('theme-density') || 'comfortable';
110
+
109
111
  function isDark()
110
112
  {
111
113
  if(theme === 'auto')
@@ -123,9 +125,12 @@
123
125
  // Update the UI
124
126
  updateSelection();
125
127
 
126
- // Toggle the dark mode class
127
- document.documentElement.setAttribute('t', isDark() ? 'dark' : 'light');
128
- window.dispatchEvent(new CustomEvent('theme-change', {detail: {theme}}));
128
+ const root = document.documentElement;
129
+ const mode = isDark() ? 'dark' : 'light';
130
+ root.setAttribute('t', 'openbyte');
131
+ root.setAttribute('m', mode);
132
+ root.setAttribute('data-density', density);
133
+ window.dispatchEvent(new CustomEvent('theme-change', {detail: {theme: 'openbyte', mode}}));
129
134
  }
130
135
 
131
136
  function updateSelection()
@@ -135,7 +140,8 @@
135
140
  {
136
141
  return;
137
142
  }
138
- [...menu.querySelectorAll('zn-menu-item')].map(item => (item.checked = item.getAttribute('value') === theme));
143
+ const selected = [theme, `density:${density}`];
144
+ [...menu.querySelectorAll('zn-menu-item')].map(item => (item.checked = selected.includes(item.getAttribute('value'))));
139
145
  }
140
146
 
141
147
  let theme = getTheme();
@@ -159,7 +165,17 @@
159
165
  {
160
166
  return;
161
167
  }
162
- setTheme(event.detail.element.value);
168
+ const value = event.detail.element.value;
169
+ if(value.startsWith('density:'))
170
+ {
171
+ density = value.slice(8);
172
+ localStorage.setItem('theme-density', density);
173
+ setTheme(theme);
174
+ }
175
+ else
176
+ {
177
+ setTheme(value);
178
+ }
163
179
  });
164
180
 
165
181
  // Update the theme when the preference changes
@@ -46,8 +46,8 @@ h1, h2, h3, h4, h5, h6, p {
46
46
  }
47
47
 
48
48
  /* Utils */
49
- html[t=dark] .only-light,
50
- html:not([t=dark]) .only-dark {
49
+ html[m=dark] .only-light,
50
+ html:not([m=dark]) .only-dark {
51
51
  display: none !important;
52
52
  }
53
53
 
@@ -1027,6 +1027,13 @@ html.sidebar-open #menu-toggle {
1027
1027
  border-bottom-left-radius: var(--docs-border-radius);
1028
1028
  border-bottom-right-radius: var(--docs-border-radius);
1029
1029
  padding: 0.125rem 0.25rem;
1030
+ align-items: center;
1031
+ }
1032
+
1033
+ /* Matches the plain icon links beside it, whatever button density the theme sets */
1034
+ #theme-selector zn-button {
1035
+ --zn-button-height: 36px;
1036
+ --zn-button-padding: 0 0.5rem;
1030
1037
  }
1031
1038
 
1032
1039
  #icon-toolbar button,
@@ -0,0 +1,380 @@
1
+ {
2
+ "dimension": {
3
+ "label": "Publisher"
4
+ },
5
+ "groups": [
6
+ {
7
+ "label": "Difference between 2026-10-19 and 2026-10-20",
8
+ "columns": [
9
+ {
10
+ "key": "revenue",
11
+ "label": "Revenue",
12
+ "format": "currency",
13
+ "style": "breakeven",
14
+ "formula": "{d2.total.revenue} - {d1.total.revenue}"
15
+ },
16
+ {
17
+ "key": "inbound",
18
+ "label": "Inbound Actions",
19
+ "format": "number",
20
+ "style": "breakeven",
21
+ "formula": "{d2.i.unique} - {d1.i.unique}"
22
+ },
23
+ {
24
+ "key": "leads",
25
+ "label": "Leads",
26
+ "format": "number",
27
+ "style": "breakeven",
28
+ "formula": "{d2.lead.total} - {d1.lead.total}"
29
+ },
30
+ {
31
+ "key": "acquisitions",
32
+ "label": "Acquisitions",
33
+ "format": "number",
34
+ "style": "breakeven",
35
+ "formula": "{d2.acquisition.total} - {d1.acquisition.total}"
36
+ },
37
+ {
38
+ "key": "ca",
39
+ "label": "Click / Acquisition",
40
+ "format": "percent",
41
+ "decimals": 2,
42
+ "style": "breakeven",
43
+ "formula": "({d2.acquisition.total} / {d2.i.unique}) - ({d1.acquisition.total} / {d1.i.unique})"
44
+ },
45
+ {
46
+ "key": "spend",
47
+ "label": "Spend Difference",
48
+ "format": "currency",
49
+ "style": "breakeven",
50
+ "formula": "{d2.total.commission} - {d1.total.commission}"
51
+ }
52
+ ]
53
+ },
54
+ {
55
+ "label": "2026-10-19",
56
+ "columns": [
57
+ {
58
+ "key": "d1Inbound",
59
+ "label": "Inbound Actions",
60
+ "format": "number",
61
+ "value": "d1.i.unique"
62
+ },
63
+ {
64
+ "key": "d1Leads",
65
+ "label": "Leads",
66
+ "format": "number",
67
+ "value": "d1.lead.total"
68
+ },
69
+ {
70
+ "key": "d1Acq",
71
+ "label": "Acquisitions",
72
+ "format": "number",
73
+ "value": "d1.acquisition.total"
74
+ },
75
+ {
76
+ "key": "d1Cl",
77
+ "label": "Click / Lead",
78
+ "format": "percent",
79
+ "decimals": 2,
80
+ "formula": "{d1.lead.total} / {d1.i.unique}"
81
+ },
82
+ {
83
+ "key": "d1Ca",
84
+ "label": "Click / Acquisition",
85
+ "format": "percent",
86
+ "decimals": 2,
87
+ "formula": "{d1.acquisition.total} / {d1.i.unique}"
88
+ },
89
+ {
90
+ "key": "d1La",
91
+ "label": "Lead / Acquisition",
92
+ "format": "percent",
93
+ "decimals": 2,
94
+ "formula": "{d1.acquisition.total} / {d1.lead.total}"
95
+ },
96
+ {
97
+ "key": "d1Spend",
98
+ "label": "Spend",
99
+ "format": "currency",
100
+ "value": "d1.total.commission"
101
+ }
102
+ ]
103
+ },
104
+ {
105
+ "label": "2026-10-20",
106
+ "columns": [
107
+ {
108
+ "key": "d2Inbound",
109
+ "label": "Inbound Actions",
110
+ "format": "number",
111
+ "value": "d2.i.unique"
112
+ },
113
+ {
114
+ "key": "d2Leads",
115
+ "label": "Leads",
116
+ "format": "number",
117
+ "value": "d2.lead.total"
118
+ },
119
+ {
120
+ "key": "d2Acq",
121
+ "label": "Acquisitions",
122
+ "format": "number",
123
+ "value": "d2.acquisition.total"
124
+ },
125
+ {
126
+ "key": "d2Cl",
127
+ "label": "Click / Lead",
128
+ "format": "percent",
129
+ "decimals": 2,
130
+ "formula": "{d2.lead.total} / {d2.i.unique}"
131
+ },
132
+ {
133
+ "key": "d2Ca",
134
+ "label": "Click / Acquisition",
135
+ "format": "percent",
136
+ "decimals": 2,
137
+ "formula": "{d2.acquisition.total} / {d2.i.unique}"
138
+ },
139
+ {
140
+ "key": "d2La",
141
+ "label": "Lead / Acquisition",
142
+ "format": "percent",
143
+ "decimals": 2,
144
+ "formula": "{d2.acquisition.total} / {d2.lead.total}"
145
+ },
146
+ {
147
+ "key": "d2Spend",
148
+ "label": "Spend",
149
+ "format": "currency",
150
+ "value": "d2.total.commission"
151
+ }
152
+ ]
153
+ }
154
+ ],
155
+ "rows": [
156
+ {
157
+ "id": "AFF-1",
158
+ "label": "NovaBeyond - Push/Display - Jake",
159
+ "uri": "#publisher-1",
160
+ "values": {
161
+ "d1": {
162
+ "total": {
163
+ "revenue": 2097.41,
164
+ "commission": 1650.2
165
+ },
166
+ "i": {
167
+ "unique": 1298
168
+ },
169
+ "lead": {
170
+ "total": 592
171
+ },
172
+ "acquisition": {
173
+ "total": 29
174
+ }
175
+ },
176
+ "d2": {
177
+ "total": {
178
+ "revenue": 700.68,
179
+ "commission": 1004.34
180
+ },
181
+ "i": {
182
+ "unique": 9200
183
+ },
184
+ "lead": {
185
+ "total": 1252
186
+ },
187
+ "acquisition": {
188
+ "total": 31
189
+ }
190
+ }
191
+ }
192
+ },
193
+ {
194
+ "id": "AFF-2",
195
+ "label": "AdLion - Bigo/DSP - Priya",
196
+ "uri": "#publisher-2",
197
+ "values": {
198
+ "d1": {
199
+ "total": {
200
+ "revenue": 14820.66,
201
+ "commission": 12410.18
202
+ },
203
+ "i": {
204
+ "unique": 48211
205
+ },
206
+ "lead": {
207
+ "total": 15302
208
+ },
209
+ "acquisition": {
210
+ "total": 402
211
+ }
212
+ },
213
+ "d2": {
214
+ "total": {
215
+ "revenue": 7825.52,
216
+ "commission": 4624.87
217
+ },
218
+ "i": {
219
+ "unique": 16083
220
+ },
221
+ "lead": {
222
+ "total": 5776
223
+ },
224
+ "acquisition": {
225
+ "total": 334
226
+ }
227
+ }
228
+ }
229
+ },
230
+ {
231
+ "id": "AFF-3",
232
+ "label": "UPBeat - Monthly - Dev",
233
+ "uri": "#publisher-3",
234
+ "values": {
235
+ "d1": {
236
+ "total": {
237
+ "revenue": 8211.09,
238
+ "commission": 6120.55
239
+ },
240
+ "i": {
241
+ "unique": 20114
242
+ },
243
+ "lead": {
244
+ "total": 4980
245
+ },
246
+ "acquisition": {
247
+ "total": 171
248
+ }
249
+ },
250
+ "d2": {
251
+ "total": {
252
+ "revenue": 11211.48,
253
+ "commission": 7671.39
254
+ },
255
+ "i": {
256
+ "unique": 13031
257
+ },
258
+ "lead": {
259
+ "total": 3568
260
+ },
261
+ "acquisition": {
262
+ "total": 197
263
+ }
264
+ }
265
+ }
266
+ },
267
+ {
268
+ "id": "AFF-4",
269
+ "label": "MobPlus - Native - Billy",
270
+ "uri": "#publisher-4",
271
+ "values": {
272
+ "d1": {
273
+ "total": {
274
+ "revenue": 22904.18,
275
+ "commission": 19877.42
276
+ },
277
+ "i": {
278
+ "unique": 15871
279
+ },
280
+ "lead": {
281
+ "total": 6215
282
+ },
283
+ "acquisition": {
284
+ "total": 388
285
+ }
286
+ },
287
+ "d2": {
288
+ "total": {
289
+ "revenue": 42857.51,
290
+ "commission": 41658.05
291
+ },
292
+ "i": {
293
+ "unique": 26666
294
+ },
295
+ "lead": {
296
+ "total": 13255
297
+ },
298
+ "acquisition": {
299
+ "total": 706
300
+ }
301
+ }
302
+ }
303
+ },
304
+ {
305
+ "id": "AFF-5",
306
+ "label": "ClickHarbor - Search - Tom",
307
+ "uri": "#publisher-5",
308
+ "values": {
309
+ "d1": {
310
+ "total": {
311
+ "revenue": 4120.77,
312
+ "commission": 3399.01
313
+ },
314
+ "i": {
315
+ "unique": 6122
316
+ },
317
+ "lead": {
318
+ "total": 2080
319
+ },
320
+ "acquisition": {
321
+ "total": 98
322
+ }
323
+ },
324
+ "d2": {
325
+ "total": {
326
+ "revenue": 5153.2,
327
+ "commission": 4949.98
328
+ },
329
+ "i": {
330
+ "unique": 8169
331
+ },
332
+ "lead": {
333
+ "total": 2779
334
+ },
335
+ "acquisition": {
336
+ "total": 109
337
+ }
338
+ }
339
+ }
340
+ },
341
+ {
342
+ "id": "AFF-6",
343
+ "label": "Brightwave - Social - Maya",
344
+ "uri": "#publisher-6",
345
+ "values": {
346
+ "d1": {
347
+ "total": {
348
+ "revenue": 61402.35,
349
+ "commission": 55290.64
350
+ },
351
+ "i": {
352
+ "unique": 26131
353
+ },
354
+ "lead": {
355
+ "total": 11208
356
+ },
357
+ "acquisition": {
358
+ "total": 905
359
+ }
360
+ },
361
+ "d2": {
362
+ "total": {
363
+ "revenue": 20071.26,
364
+ "commission": 16785.52
365
+ },
366
+ "i": {
367
+ "unique": 11673
368
+ },
369
+ "lead": {
370
+ "total": 4661
371
+ },
372
+ "acquisition": {
373
+ "total": 485
374
+ }
375
+ }
376
+ }
377
+ }
378
+ ],
379
+ "currency": "USD"
380
+ }