@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
@@ -35,17 +35,17 @@ Use the `active` attribute to highlight the current step in the process. The act
35
35
 
36
36
  ### With Custom Icons
37
37
 
38
- Use the `icon` slot to add custom icons or indicators for each step. The icon is centred in the step's 32px circle, so keep it at the default 24px size or smaller.
38
+ Use the `icon` slot to add custom icons or indicators for each step. The icon is centred in the step's 28px marker; use `size="16"`.
39
39
 
40
40
  ```html:preview
41
41
  <zn-vertical-stepper caption="Personal Details" description="Enter your name and contact information" first active>
42
- <zn-icon slot="icon" src="person"></zn-icon>
42
+ <zn-icon slot="icon" src="person" size="16"></zn-icon>
43
43
  </zn-vertical-stepper>
44
44
  <zn-vertical-stepper caption="Address" description="Provide your shipping address">
45
- <zn-icon slot="icon" src="home"></zn-icon>
45
+ <zn-icon slot="icon" src="home" size="16"></zn-icon>
46
46
  </zn-vertical-stepper>
47
47
  <zn-vertical-stepper caption="Payment" description="Add payment method" last>
48
- <zn-icon slot="icon" src="credit_card"></zn-icon>
48
+ <zn-icon slot="icon" src="credit_card" size="16"></zn-icon>
49
49
  </zn-vertical-stepper>
50
50
  ```
51
51
 
@@ -54,17 +54,17 @@ Use the `icon` slot to add custom icons or indicators for each step. The icon is
54
54
  Show completed steps with check marks or success icons.
55
55
 
56
56
  ```html:preview
57
- <zn-vertical-stepper caption="Registration" description="Account created successfully" first>
58
- <zn-icon slot="icon" src="check_circle" style="color: rgb(var(--zn-success))"></zn-icon>
57
+ <zn-vertical-stepper type="success" caption="Registration" description="Account created successfully" first>
58
+ <zn-icon slot="icon" src="check" size="16"></zn-icon>
59
59
  </zn-vertical-stepper>
60
- <zn-vertical-stepper caption="Verification" description="Email verified" active>
61
- <zn-icon slot="icon" src="check_circle" style="color: rgb(var(--zn-success))"></zn-icon>
60
+ <zn-vertical-stepper type="success" caption="Verification" description="Email verified" active>
61
+ <zn-icon slot="icon" src="check" size="16"></zn-icon>
62
62
  </zn-vertical-stepper>
63
63
  <zn-vertical-stepper caption="Payment Setup" description="Add your payment method">
64
- <zn-icon slot="icon" src="pending" style="color: rgb(var(--zn-text-secondary))"></zn-icon>
64
+ <zn-icon slot="icon" src="pending" size="16"></zn-icon>
65
65
  </zn-vertical-stepper>
66
66
  <zn-vertical-stepper caption="Complete Profile" description="Upload profile picture" last>
67
- <zn-icon slot="icon" src="pending" style="color: rgb(var(--zn-text-secondary))"></zn-icon>
67
+ <zn-icon slot="icon" src="pending" size="16"></zn-icon>
68
68
  </zn-vertical-stepper>
69
69
  ```
70
70
 
@@ -73,17 +73,17 @@ Show completed steps with check marks or success icons.
73
73
  A practical example showing an order fulfillment process with different step states.
74
74
 
75
75
  ```html:preview
76
- <zn-vertical-stepper caption="Order Received" description="Order #12345 received on Jan 20, 2026" first>
77
- <zn-icon slot="icon" src="check_circle" style="color: rgb(var(--zn-success))"></zn-icon>
76
+ <zn-vertical-stepper type="success" caption="Order Received" description="Order #12345 received on Jan 20, 2026" first>
77
+ <zn-icon slot="icon" src="check" size="16"></zn-icon>
78
78
  </zn-vertical-stepper>
79
- <zn-vertical-stepper caption="Processing" description="Your order is being prepared" active>
80
- <zn-icon slot="icon" src="shopping_bag" style="color: rgb(var(--zn-primary))"></zn-icon>
79
+ <zn-vertical-stepper type="primary" caption="Processing" description="Your order is being prepared" active>
80
+ <zn-icon slot="icon" src="shopping_bag" size="16"></zn-icon>
81
81
  </zn-vertical-stepper>
82
82
  <zn-vertical-stepper caption="Shipped" description="Estimated delivery: Jan 25, 2026">
83
- <zn-icon slot="icon" src="local_shipping" style="color: rgb(var(--zn-text-secondary))"></zn-icon>
83
+ <zn-icon slot="icon" src="local_shipping" size="16"></zn-icon>
84
84
  </zn-vertical-stepper>
85
85
  <zn-vertical-stepper caption="Delivered" description="Package will arrive at your doorstep" last>
86
- <zn-icon slot="icon" src="home" style="color: rgb(var(--zn-text-secondary))"></zn-icon>
86
+ <zn-icon slot="icon" src="home" size="16"></zn-icon>
87
87
  </zn-vertical-stepper>
88
88
  ```
89
89
 
@@ -102,28 +102,28 @@ Create continuous step lists by omitting the `first` and `last` attributes when
102
102
  Show detailed installation or setup progress with descriptive text for each phase.
103
103
 
104
104
  ```html:preview
105
- <zn-vertical-stepper
105
+ <zn-vertical-stepper type="success"
106
106
  caption="Download"
107
107
  description="Downloading installer files (45 MB)"
108
108
  first>
109
- <zn-icon slot="icon" src="check_circle" style="color: rgb(var(--zn-success))"></zn-icon>
109
+ <zn-icon slot="icon" src="check" size="16"></zn-icon>
110
110
  </zn-vertical-stepper>
111
- <zn-vertical-stepper
111
+ <zn-vertical-stepper type="primary"
112
112
  caption="Extract"
113
113
  description="Extracting packages and dependencies"
114
114
  active>
115
- <zn-icon slot="icon" src="folder_zip" style="color: rgb(var(--zn-primary))"></zn-icon>
115
+ <zn-icon slot="icon" src="folder_zip" size="16"></zn-icon>
116
116
  </zn-vertical-stepper>
117
117
  <zn-vertical-stepper
118
118
  caption="Install"
119
119
  description="Installing application components">
120
- <zn-icon slot="icon" src="pending" style="color: rgb(var(--zn-text-secondary))"></zn-icon>
120
+ <zn-icon slot="icon" src="pending" size="16"></zn-icon>
121
121
  </zn-vertical-stepper>
122
122
  <zn-vertical-stepper
123
123
  caption="Configure"
124
124
  description="Setting up initial configuration"
125
125
  last>
126
- <zn-icon slot="icon" src="pending" style="color: rgb(var(--zn-text-secondary))"></zn-icon>
126
+ <zn-icon slot="icon" src="pending" size="16"></zn-icon>
127
127
  </zn-vertical-stepper>
128
128
  ```
129
129
 
@@ -132,33 +132,33 @@ Show detailed installation or setup progress with descriptive text for each phas
132
132
  A multi-step onboarding flow with clear descriptions for each phase.
133
133
 
134
134
  ```html:preview
135
- <zn-vertical-stepper
135
+ <zn-vertical-stepper type="success"
136
136
  caption="Welcome"
137
137
  description="Introduction to the platform and key features"
138
138
  first>
139
- <zn-icon slot="icon" src="check_circle" style="color: rgb(var(--zn-success))"></zn-icon>
139
+ <zn-icon slot="icon" src="check" size="16"></zn-icon>
140
140
  </zn-vertical-stepper>
141
- <zn-vertical-stepper
141
+ <zn-vertical-stepper type="primary"
142
142
  caption="Team Setup"
143
143
  description="Invite team members and assign roles"
144
144
  active>
145
- <zn-icon slot="icon" src="group_add" style="color: rgb(var(--zn-primary))"></zn-icon>
145
+ <zn-icon slot="icon" src="group_add" size="16"></zn-icon>
146
146
  </zn-vertical-stepper>
147
147
  <zn-vertical-stepper
148
148
  caption="Project Configuration"
149
149
  description="Set up your first project and workspace">
150
- <zn-icon slot="icon" src="settings" style="color: rgb(var(--zn-text-secondary))"></zn-icon>
150
+ <zn-icon slot="icon" src="settings" size="16"></zn-icon>
151
151
  </zn-vertical-stepper>
152
152
  <zn-vertical-stepper
153
153
  caption="Integration"
154
154
  description="Connect external tools and services">
155
- <zn-icon slot="icon" src="link" style="color: rgb(var(--zn-text-secondary))"></zn-icon>
155
+ <zn-icon slot="icon" src="link" size="16"></zn-icon>
156
156
  </zn-vertical-stepper>
157
157
  <zn-vertical-stepper
158
158
  caption="Launch"
159
159
  description="Review settings and go live"
160
160
  last>
161
- <zn-icon slot="icon" src="rocket_launch" style="color: rgb(var(--zn-text-secondary))"></zn-icon>
161
+ <zn-icon slot="icon" src="rocket_launch" size="16"></zn-icon>
162
162
  </zn-vertical-stepper>
163
163
  ```
164
164
 
@@ -167,23 +167,67 @@ A multi-step onboarding flow with clear descriptions for each phase.
167
167
  Show error or warning states in your stepper workflow.
168
168
 
169
169
  ```html:preview
170
- <zn-vertical-stepper
170
+ <zn-vertical-stepper type="success"
171
171
  caption="Validation"
172
172
  description="Form validation passed"
173
173
  first>
174
- <zn-icon slot="icon" src="check_circle" style="color: rgb(var(--zn-success))"></zn-icon>
174
+ <zn-icon slot="icon" src="check" size="16"></zn-icon>
175
175
  </zn-vertical-stepper>
176
- <zn-vertical-stepper
176
+ <zn-vertical-stepper type="error"
177
177
  caption="Payment Processing"
178
178
  description="Payment failed - card declined"
179
179
  active>
180
- <zn-icon slot="icon" src="error" style="color: rgb(var(--zn-error))"></zn-icon>
180
+ <zn-icon slot="icon" src="error" size="16"></zn-icon>
181
181
  </zn-vertical-stepper>
182
182
  <zn-vertical-stepper
183
183
  caption="Confirmation"
184
184
  description="Order confirmation email"
185
185
  last>
186
- <zn-icon slot="icon" src="pending" style="color: rgb(var(--zn-text-secondary))"></zn-icon>
186
+ <zn-icon slot="icon" src="pending" size="16"></zn-icon>
187
+ </zn-vertical-stepper>
188
+ ```
189
+
190
+ ### Content, Suffix and Actions
191
+
192
+ Use the default slot for metadata or chips below the caption, the `suffix` slot for chips inline after it, and the `actions` slot for controls at the end of the step. The line grows with the step, so taller content keeps the steps joined.
193
+
194
+ ```html:preview
195
+ <zn-vertical-stepper caption="Version 4" type="warning" dashed first>
196
+ <span slot="icon">v4</span>
197
+ <zn-chip slot="suffix" size="small" type="warning">Draft</zn-chip>
198
+ <span>Last saved today 09:12</span>
199
+ <zn-button slot="actions" color="secondary">Continue editing</zn-button>
200
+ </zn-vertical-stepper>
201
+ <zn-vertical-stepper caption="Version 3" type="success">
202
+ <span slot="icon">v3</span>
203
+ <zn-chip slot="suffix" size="small" type="success">Live</zn-chip>
204
+ <span>Published 12 Oct 2026 · effective 14 Oct 2026</span>
205
+ <zn-button slot="actions" color="secondary">View</zn-button>
206
+ </zn-vertical-stepper>
207
+ <zn-vertical-stepper caption="Version 2" last>
208
+ <span slot="icon">v2</span>
209
+ <zn-chip slot="suffix" size="small">Superseded</zn-chip>
210
+ <span>Published 30 Sep 2026 · effective 30 Sep 2026</span>
211
+ <zn-button slot="actions" color="secondary">View</zn-button>
212
+ </zn-vertical-stepper>
213
+ ```
214
+
215
+ ### Selected Steps and Highlighted Lines
216
+
217
+ Use `selected` to ring a picked step's marker, and `highlight-line` to colour the line from a step to the next, such as the range between two compared versions. `dashed` draws the marker's border dashed for a step that is not final.
218
+
219
+ ```html:preview
220
+ <zn-vertical-stepper caption="Version 4" description="Draft" type="warning" dashed first>
221
+ <span slot="icon">v4</span>
222
+ </zn-vertical-stepper>
223
+ <zn-vertical-stepper caption="Version 3" description="Compare from here" type="success" selected highlight-line>
224
+ <span slot="icon">v3</span>
225
+ </zn-vertical-stepper>
226
+ <zn-vertical-stepper caption="Version 2" description="Included in the comparison" highlight-line>
227
+ <span slot="icon">v2</span>
228
+ </zn-vertical-stepper>
229
+ <zn-vertical-stepper caption="Version 1" description="Compare to here" selected last>
230
+ <span slot="icon">v1</span>
187
231
  </zn-vertical-stepper>
188
232
  ```
189
233
 
@@ -199,20 +243,20 @@ Update vertical stepper states dynamically based on user actions.
199
243
  description="Complete this step"
200
244
  first
201
245
  active>
202
- <zn-icon slot="icon" src="radio_button_checked"></zn-icon>
246
+ <zn-icon slot="icon" src="radio_button_checked" size="16"></zn-icon>
203
247
  </zn-vertical-stepper>
204
248
  <zn-vertical-stepper
205
249
  id="v-step-2"
206
250
  caption="Step 2"
207
251
  description="Pending">
208
- <zn-icon slot="icon" src="radio_button_unchecked"></zn-icon>
252
+ <zn-icon slot="icon" src="radio_button_unchecked" size="16"></zn-icon>
209
253
  </zn-vertical-stepper>
210
254
  <zn-vertical-stepper
211
255
  id="v-step-3"
212
256
  caption="Step 3"
213
257
  description="Pending"
214
258
  last>
215
- <zn-icon slot="icon" src="radio_button_unchecked"></zn-icon>
259
+ <zn-icon slot="icon" src="radio_button_unchecked" size="16"></zn-icon>
216
260
  </zn-vertical-stepper>
217
261
  </div>
218
262
  <br />
@@ -234,20 +278,20 @@ Update vertical stepper states dynamically based on user actions.
234
278
  if (i < currentVStep) {
235
279
  // Completed step
236
280
  step.removeAttribute('active');
237
- icon.setAttribute('src', 'check_circle');
238
- icon.style.color = 'rgb(var(--zn-success))';
281
+ icon.setAttribute('src', 'check');
282
+ step.type = 'success';
239
283
  step.description = 'Completed';
240
284
  } else if (i === currentVStep) {
241
285
  // Active step
242
286
  step.setAttribute('active', '');
243
287
  icon.setAttribute('src', 'radio_button_checked');
244
- icon.style.color = 'rgb(var(--zn-primary))';
288
+ step.type = 'primary';
245
289
  step.description = 'In Progress';
246
290
  } else {
247
291
  // Future step
248
292
  step.removeAttribute('active');
249
293
  icon.setAttribute('src', 'radio_button_unchecked');
250
- icon.style.color = 'rgb(var(--zn-text-secondary))';
294
+ step.type = 'neutral';
251
295
  step.description = 'Pending';
252
296
  }
253
297
  }
@@ -275,24 +319,24 @@ Update vertical stepper states dynamically based on user actions.
275
319
 
276
320
  ### Compact Vertical Stepper
277
321
 
278
- Create a more compact layout by adjusting spacing with CSS.
322
+ Tighten the space between steps with `--zn-vertical-stepper-gap`.
279
323
 
280
324
  ```html:preview
281
325
  <div class="compact-stepper">
282
- <zn-vertical-stepper caption="Login" description="User authenticated" first>
283
- <zn-icon slot="icon" src="check_circle" style="color: rgb(var(--zn-success))"></zn-icon>
326
+ <zn-vertical-stepper type="success" caption="Login" description="User authenticated" first>
327
+ <zn-icon slot="icon" src="check" size="16"></zn-icon>
284
328
  </zn-vertical-stepper>
285
329
  <zn-vertical-stepper caption="Dashboard" description="Loading user data" active>
286
- <zn-icon slot="icon" src="dashboard"></zn-icon>
330
+ <zn-icon slot="icon" src="dashboard" size="16"></zn-icon>
287
331
  </zn-vertical-stepper>
288
332
  <zn-vertical-stepper caption="Reports" description="View analytics" last>
289
- <zn-icon slot="icon" src="bar_chart"></zn-icon>
333
+ <zn-icon slot="icon" src="bar_chart" size="16"></zn-icon>
290
334
  </zn-vertical-stepper>
291
335
  </div>
292
336
 
293
337
  <style>
294
338
  .compact-stepper zn-vertical-stepper {
295
- margin: 8px 0;
339
+ --zn-vertical-stepper-gap: 4px;
296
340
  }
297
341
  </style>
298
342
  ```
@@ -313,23 +357,23 @@ Combine vertical and horizontal steppers for complex workflows where the horizon
313
357
  </zn-stepper>
314
358
  <br /><br />
315
359
  <div style="padding-left: 20px;">
316
- <zn-vertical-stepper
360
+ <zn-vertical-stepper type="success"
317
361
  caption="Basic Info"
318
362
  description="Name, email, and contact details"
319
363
  first>
320
- <zn-icon slot="icon" src="check_circle" style="color: rgb(var(--zn-success))"></zn-icon>
364
+ <zn-icon slot="icon" src="check" size="16"></zn-icon>
321
365
  </zn-vertical-stepper>
322
- <zn-vertical-stepper
366
+ <zn-vertical-stepper type="primary"
323
367
  caption="Profile Photo"
324
368
  description="Upload your profile picture"
325
369
  active>
326
- <zn-icon slot="icon" src="photo_camera" style="color: rgb(var(--zn-primary))"></zn-icon>
370
+ <zn-icon slot="icon" src="photo_camera" size="16"></zn-icon>
327
371
  </zn-vertical-stepper>
328
372
  <zn-vertical-stepper
329
373
  caption="Preferences"
330
374
  description="Set notification and privacy settings"
331
375
  last>
332
- <zn-icon slot="icon" src="tune" style="color: rgb(var(--zn-text-secondary))"></zn-icon>
376
+ <zn-icon slot="icon" src="tune" size="16"></zn-icon>
333
377
  </zn-vertical-stepper>
334
378
  </div>
335
379
  ```
@@ -346,7 +390,7 @@ Add interactive elements next to each step for expanded functionality.
346
390
  description="Check all modifications before committing"
347
391
  first
348
392
  active>
349
- <zn-icon slot="icon" src="preview"></zn-icon>
393
+ <zn-icon slot="icon" src="preview" size="16"></zn-icon>
350
394
  </zn-vertical-stepper>
351
395
  </div>
352
396
  <zn-button icon="edit" color="transparent">Edit</zn-button>
@@ -356,7 +400,7 @@ Add interactive elements next to each step for expanded functionality.
356
400
  <zn-vertical-stepper
357
401
  caption="Run Tests"
358
402
  description="Execute test suite">
359
- <zn-icon slot="icon" src="pending"></zn-icon>
403
+ <zn-icon slot="icon" src="pending" size="16"></zn-icon>
360
404
  </zn-vertical-stepper>
361
405
  </div>
362
406
  <zn-button icon="play_arrow" color="transparent" disabled>Run</zn-button>
@@ -367,7 +411,7 @@ Add interactive elements next to each step for expanded functionality.
367
411
  caption="Deploy"
368
412
  description="Push changes to production"
369
413
  last>
370
- <zn-icon slot="icon" src="pending"></zn-icon>
414
+ <zn-icon slot="icon" src="pending" size="16"></zn-icon>
371
415
  </zn-vertical-stepper>
372
416
  </div>
373
417
  <zn-button icon="publish" color="transparent" disabled>Deploy</zn-button>
@@ -379,37 +423,37 @@ Add interactive elements next to each step for expanded functionality.
379
423
  Show hierarchical relationships by nesting vertical steppers or indenting them.
380
424
 
381
425
  ```html:preview
382
- <zn-vertical-stepper
426
+ <zn-vertical-stepper type="success"
383
427
  caption="Phase 1: Planning"
384
428
  description="Define project scope and requirements"
385
429
  first>
386
- <zn-icon slot="icon" src="check_circle" style="color: rgb(var(--zn-success))"></zn-icon>
430
+ <zn-icon slot="icon" src="check" size="16"></zn-icon>
387
431
  </zn-vertical-stepper>
388
432
 
389
433
  <div style="padding-left: 40px;">
390
- <zn-vertical-stepper
434
+ <zn-vertical-stepper type="success"
391
435
  caption="1.1 Research"
392
436
  description="Market analysis completed">
393
- <zn-icon slot="icon" src="check_circle" style="color: rgb(var(--zn-success))"></zn-icon>
437
+ <zn-icon slot="icon" src="check" size="16"></zn-icon>
394
438
  </zn-vertical-stepper>
395
- <zn-vertical-stepper
439
+ <zn-vertical-stepper type="success"
396
440
  caption="1.2 Design"
397
441
  description="Wireframes and mockups">
398
- <zn-icon slot="icon" src="check_circle" style="color: rgb(var(--zn-success))"></zn-icon>
442
+ <zn-icon slot="icon" src="check" size="16"></zn-icon>
399
443
  </zn-vertical-stepper>
400
444
  </div>
401
445
 
402
- <zn-vertical-stepper
446
+ <zn-vertical-stepper type="primary"
403
447
  caption="Phase 2: Development"
404
448
  description="Build and test features"
405
449
  active>
406
- <zn-icon slot="icon" src="code" style="color: rgb(var(--zn-primary))"></zn-icon>
450
+ <zn-icon slot="icon" src="code" size="16"></zn-icon>
407
451
  </zn-vertical-stepper>
408
452
 
409
453
  <zn-vertical-stepper
410
454
  caption="Phase 3: Deployment"
411
455
  description="Release to production"
412
456
  last>
413
- <zn-icon slot="icon" src="pending"></zn-icon>
457
+ <zn-icon slot="icon" src="pending" size="16"></zn-icon>
414
458
  </zn-vertical-stepper>
415
459
  ```
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@kubex/zinc",
3
- "version": "1.1.184",
3
+ "version": "2.0.0",
4
4
  "description": "A collection of web components for building web applications based off of @shoelace-style/Shoelace",
5
5
  "keywords": [
6
6
  "web components",
@@ -50,6 +50,7 @@
50
50
  "@shoelace-style/localize": "^3.2.1",
51
51
  "air-datepicker": "^3.5.3",
52
52
  "composed-offset-position": "^0.0.6",
53
+ "country-flag-icons": "^1.6.20",
53
54
  "dompurify": "^3.4.16",
54
55
  "echarts": "^6.0.0",
55
56
  "emoji-mart": "^5.6.0",
@@ -58,7 +58,7 @@
58
58
  .form-spacing {
59
59
  display: grid;
60
60
  grid-template-columns: 1fr;
61
- gap: var(--zn-spacing-medium) var(--zn-spacing-small);
61
+ gap: var(--zn-form-row-gap, var(--zn-spacing-medium)) var(--zn-spacing-small);
62
62
 
63
63
  @include mixins.media-query(md) {
64
64
  grid-template-columns: repeat(6, 1fr);
@@ -73,7 +73,7 @@
73
73
  display: flex;
74
74
  justify-content: flex-end;
75
75
  align-items: center;
76
- gap: var(--zn-spacing-small);
76
+ gap: var(--zn-form-actions-gap, var(--zn-spacing-small));
77
77
  }
78
78
 
79
79
  zn-form-group ~ zn-form-group {
package/scss/_root.scss CHANGED
@@ -7,6 +7,12 @@
7
7
  :root {
8
8
  --zn-base-px: 8px;
9
9
  --zn-base-gap: calc(var(--zn-base-px) * 2);
10
+ // Resolved here, so a modal zn-page can set --zn-base-gap from it without referencing itself.
11
+ --zn-page-modal-gap: var(--zn-base-gap);
12
+ // A modal shell overlays its own close button at --zn-page-modal-gap from the page edge;
13
+ // these describe it so the header can keep clear of it and size its actions to match.
14
+ --zn-page-closer-size: 36px;
15
+ --zn-page-closer-gap: var(--zn-spacing-x-small);
10
16
  --zn-gutter: 2px;
11
17
  --zn-default-margin: 0 auto 0 0;
12
18
  --zn-icon-size: 20px;
@@ -94,6 +100,10 @@
94
100
  --zn-color-on-warning: 255, 255, 255;
95
101
  --zn-color-on-error: 255, 255, 255;
96
102
  --zn-color-on-accent: 255, 255, 255;
103
+ --zn-color-on-ai: 255, 255, 255;
104
+
105
+ // AI-generated content only (badges, alerts, buttons); never a general accent.
106
+ --zn-color-ai: 117, 87, 245;
97
107
 
98
108
  // Brand Colors
99
109
  --zn-red: 237, 84, 109;
@@ -129,7 +139,7 @@
129
139
  }
130
140
 
131
141
  .zn-muted {
132
- color: var(--zn-color-muted-text);
142
+ color: rgb(var(--zn-color-muted-text));
133
143
  }
134
144
 
135
145
  .zn-size-xs {
@@ -322,173 +332,3 @@ ul.disc {
322
332
  ul.square {
323
333
  list-style-type: square;
324
334
  }
325
-
326
- // Aura — soft, light-based theme with a pastel violet identity.
327
- // Appended last so it wins source-order over the :root/light defaults on the
328
- // document element (which carries the `t="aura"` attribute *and* matches :root).
329
- // Only the source colour tokens and the theme-specific leaf tokens are set;
330
- // derived tokens (--zn-body, --zn-text, --zn-panel ...) reference these via
331
- // var() and follow automatically.
332
- //
333
- // Aura ships both palettes: this block is the light one, and the
334
- // `html[t="aura"][m="dark"]` block below re-points every token in it for dark. The
335
- // two must stay token-for-token in step — a token set here and missed there
336
- // leaks a light value into dark mode, because this block is mode-agnostic and
337
- // so applies in both.
338
- html[t="aura"], body[t="aura"], html.theme-aura, body.theme-aura {
339
- --zn-backdrop-color: rgba(30, 27, 60, 0.45);
340
-
341
- --zn-color-text: 42, 32, 89;
342
- --zn-color-muted-text: 128, 118, 158;
343
-
344
- --zn-color-base: 255, 255, 255;
345
- --zn-color-body: 250, 248, 255;
346
- --zn-color-navigation: var(--zn-color-base);
347
- --zn-color-navigation-hightlight: 245, 242, 255;
348
- --zn-color-border: 228, 222, 246;
349
- --zn-color-border-active: 214, 206, 240;
350
- --zn-color-tab: 240, 235, 252;
351
- --zn-color-panel: 255, 255, 255;
352
-
353
- --zn-color-primary: 139, 110, 245;
354
- --zn-color-info: 53, 104, 195;
355
- --zn-color-success: 98, 177, 121;
356
- --zn-color-warning: 241, 168, 80;
357
- --zn-color-error: 236, 68, 91;
358
- --zn-color-disabled: 181, 181, 181;
359
-
360
- // Theme-specific leaf tokens (light/dark declare these in their own blocks,
361
- // so aura must supply its own — they are not inherited from :root).
362
- --zn-panel-opacity: 1;
363
- --zn-shadow: 232, 226, 250;
364
- --zn-panel-secondary: 248 246 255;
365
- --zn-panel-highlight: 245, 242, 255;
366
- --zn-panel-highlight-opacity: 1;
367
- --zn-input-bg-accent: 240, 236, 252;
368
- --zn-bright-bg: 255, 255, 255;
369
- --zn-light-text: 130, 120, 160;
370
- --zn-dark-text: 60, 44, 110;
371
- --zn-purple-text: 124, 92, 246;
372
- --zn-accent: 200, 130, 230;
373
-
374
- // Frosted-glass inactive tabs for the zn-page tab navbar (consumed in
375
- // components/navbar/navbar.scss, scoped there to :host-context(zn-page)).
376
- //
377
- // The translucent background carries the frosted look on its own. Do NOT put a
378
- // backdrop-filter here: navbar.scss applies it per inactive tab, so each tab
379
- // becomes its own render surface and re-samples + re-blurs its backdrop every
380
- // frame. On a page with a normal number of tabs that alone pushed GPU draw to
381
- // ~8ms/frame and dropped frames on every scroll.
382
- --navbar-page-inactive-tab-background: rgba(255, 255, 255, 0.5);
383
- --navbar-page-inactive-tab-filter: none;
384
-
385
- // Aurora gradient behind the zn-page header, plus the weight of the wave
386
- // artwork layered on top of it (components/page/page.scss). Held still — see
387
- // the PERF note there before reintroducing any drift.
388
- --zn-page-header-aurora: linear-gradient(225deg, rgba(233, 227, 255, 1) 0%, rgba(214, 246, 245, 1) 40%, rgba(233, 227, 255, 1) 100%), linear-gradient(180deg, rgba(129, 153, 217, 0) 0%, rgba(0, 0, 0, 1) 100%);
389
- --zn-page-header-wave-opacity: 0.04;
390
-
391
- .zn-primary {
392
- color: rgb(var(--zn-color-primary));
393
- }
394
- }
395
-
396
- // Aura dark — the same violet identity drawn over the dark primitives, on a
397
- // deep navy canvas rather than a bespoke hue.
398
- //
399
- // The canvas colour is deliberate: `--zn-color-body` is the exact navy the
400
- // rubix shell chrome paints itself (`--rx-shell-header-bg: 19, 29, 45`, set in
401
- // the aura-dark block of static/src/scss/shell/_header.scss — deeper than the
402
- // 40, 55, 80 aura light mode uses), so the top bar, the app navigation and the
403
- // page body read as one continuous surface with panels lifted above it.
404
- //
405
- // Specificity note: the selectors are deliberately `html[…]`/`body[…]` (a type
406
- // selector plus attributes) rather than `:root[…]`. That keeps the ordering the
407
- // bare selectors used to have: `html[t="aura"][m="dark"]` (0,2,1) outranks both
408
- // `:root[m="dark"]` (0,2,0) from `#{modes.$dark}` and the mode-agnostic
409
- // `html[t="aura"]` (0,1,1), which in turn still loses to `:root[m="dark"]` the
410
- // way `[t="aura"]` (0,1,0) did. `:root[t="aura"]` would have been (0,2,0) and
411
- // silently started beating the dark block. This one stays last in the file.
412
- html[t="aura"][m="dark"], body[t="aura"][m="dark"],
413
- html.theme-aura.theme-dark, body.theme-aura.theme-dark {
414
- --zn-backdrop-color: rgba(8, 12, 24, 0.65);
415
-
416
- --zn-color-text: 226, 228, 242;
417
- --zn-color-muted-text: 154, 163, 190;
418
-
419
- --zn-color-base: 30, 41, 61;
420
- // Matches --rx-shell-header-bg in the rubix shell (its aura-dark block in
421
- // static/src/scss/shell/_header.scss) — change both together.
422
- --zn-color-body: 19, 29, 45;
423
- --zn-color-navigation: var(--zn-color-base);
424
- --zn-color-navigation-hightlight: 35, 47, 70;
425
- --zn-color-border: 64, 82, 113;
426
- --zn-color-border-active: 92, 111, 145;
427
- --zn-color-tab: 33, 45, 66;
428
- // A few points of lift reads as an outline rather than a surface, so the
429
- // panel steps well clear of the body. #223555 — the top of the ladder:
430
- // body 19,29,45 -> page canvas 31,45,70 -> panel 34,53,85.
431
- --zn-color-panel: 34, 53, 85;
432
-
433
- --zn-color-primary: 163, 140, 250;
434
- --zn-color-info: 96, 148, 232;
435
- --zn-color-success: 116, 199, 140;
436
- --zn-color-warning: 245, 183, 105;
437
- --zn-color-error: 244, 106, 126;
438
- --zn-color-disabled: 118, 130, 152;
439
-
440
- // Theme-specific leaf tokens — the mirror of the light block above.
441
- --zn-panel-opacity: 1;
442
- --zn-shadow: 12, 18, 32;
443
- --zn-panel-secondary: 46 61 88;
444
- --zn-panel-highlight: 66, 86, 120;
445
- // NOT the classic dark 0.1: on a lifted palette a 10% wash leaves hover and
446
- // selected rows indistinguishable from the panel they sit on.
447
- --zn-panel-highlight-opacity: 1;
448
- --zn-input-bg-accent: 34, 46, 68;
449
- --zn-bright-bg: 52, 69, 99;
450
- --zn-light-text: 168, 176, 201;
451
- --zn-dark-text: 226, 228, 242;
452
- --zn-purple-text: 178, 158, 252;
453
- --zn-accent: 96, 196, 220;
454
-
455
- // #{modes.$dark} hardcodes the base dark theme's own accent here; aura owns
456
- // its accent in both modes, so re-point both this and .zn-primary below.
457
- //
458
- // Deliberately NOT var(--zn-color-primary): aura dark's *interactive* accent is
459
- // a cyan, while its identity accent stays violet. --zn-primary is what buttons,
460
- // the navbar, tabs, toggles, radios, progress bars, steppers and pagination
461
- // read; --zn-color-primary (still violet above) is what inputs, checkboxes,
462
- // selects, dialogs and the .zn-primary text utility read.
463
- --zn-primary: 126, 238, 255;
464
- // A fill this light is unreadable under the default white ink (1.35:1), so the
465
- // paired ink drops to the shell navy — 12.6:1 on the cyan. zn-button declares
466
- // the pair as --btn-color / --btn-ink for exactly this case.
467
- --zn-color-on-primary: 19, 29, 45;
468
-
469
- --base: 0, 0, 0;
470
- --inverse-base: 255, 255, 255;
471
-
472
- // Frosted-glass inactive tabs — see the light block for why there is no
473
- // backdrop-filter. Inverted against the light block: on the deep aurora an
474
- // inactive tab recedes by being *darker* than the gradient, not lighter.
475
- --navbar-page-inactive-tab-background: rgba(0, 0, 0, 0.30);
476
- --navbar-page-inactive-tab-filter: none;
477
-
478
- // The page canvas sits a step above the navy shell surface, so the page reads
479
- // as a sheet laid on the chrome rather than a hole in it (components/page/page.scss).
480
- --zn-page-canvas: 31, 45, 70;
481
-
482
- // The dark aurora: the light gradient's violet -> teal -> violet sweep taken
483
- // down to full-strength indigo/teal so the page title's light ink reads on it.
484
- --zn-page-header-aurora: linear-gradient(225deg, rgb(76 42 202) 0%, rgb(0 100 150) 40%, rgb(56 40 115) 100%), linear-gradient(180deg, rgb(31 50 103 / 0%) 0%, rgb(0, 0, 0) 100%);
485
- // The violet wave artwork lifts rather than darkens here, so it can carry
486
- // more weight than the 0.04 the pale light gradient tolerates.
487
- --zn-page-header-wave-opacity: 0.10;
488
-
489
- .zn-primary {
490
- // !important to beat #{modes.$dark}'s own `.zn-primary { ... !important }`,
491
- // which ties on specificity.
492
- color: rgb(var(--zn-color-primary)) !important;
493
- }
494
- }
package/scss/boot.scss CHANGED
@@ -25,3 +25,17 @@
25
25
  opacity: 1;
26
26
  }
27
27
  }
28
+
29
+ // A pull-tab navbar hangs over the bottom of the pane above it, so the scroller there can scroll its end clear of the
30
+ // tabs. 37px is an icon-only pull-tab strip, the taller of the two kinds; hide-one hides a lone tab with an inline style.
31
+ zn-split-pane[vertical]:has(> [slot="secondary"] zn-navbar[hover]:not([style*="display: none"])) > [slot="primary"] {
32
+ --zn-pane-end-inset: 37px;
33
+
34
+ // A tab's content can overflow its panel, so the room goes after the content; a scroll container or app container
35
+ // leaves its own
36
+ zn-tab:not(:has(zn-scroll-container, .app-container))::after {
37
+ content: "";
38
+ display: block;
39
+ height: var(--zn-pane-end-inset);
40
+ }
41
+ }