@countermeasure-platform/web-components 1.2.1-dev.4.1 → 1.2.1-dev.6.1

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 (639) hide show
  1. package/dist/{_basePickBy-BlpD3CIQ.js → _basePickBy-BQMPE4-n.js} +3 -3
  2. package/dist/{_basePickBy-BlpD3CIQ.js.map → _basePickBy-BQMPE4-n.js.map} +1 -1
  3. package/dist/{_baseUniq-CO35kH5B.js → _baseUniq-Bdp_vFUv.js} +3 -3
  4. package/dist/{_baseUniq-CO35kH5B.js.map → _baseUniq-Bdp_vFUv.js.map} +1 -1
  5. package/dist/{alert-dialog-DXa-O6E4.js → alert-dialog-C4dLk25S.js} +5 -5
  6. package/dist/{alert-dialog-DXa-O6E4.js.map → alert-dialog-C4dLk25S.js.map} +1 -1
  7. package/dist/{arc-DyfKNDOh.js → arc-jVbrWVYZ.js} +3 -3
  8. package/dist/{arc-DyfKNDOh.js.map → arc-jVbrWVYZ.js.map} +1 -1
  9. package/dist/architecture-PBZL5I3N-Zk3GmKE8.js +3 -0
  10. package/dist/{architectureDiagram-2XIMDMQ5-B4qk6eh9.js → architectureDiagram-2XIMDMQ5-D5q0ma9h.js} +10 -10
  11. package/dist/{architectureDiagram-2XIMDMQ5-B4qk6eh9.js.map → architectureDiagram-2XIMDMQ5-D5q0ma9h.js.map} +1 -1
  12. package/dist/{array-DPBIBG3p.js → array-DXadUs1s.js} +1 -1
  13. package/dist/{array-DPBIBG3p.js.map → array-DXadUs1s.js.map} +1 -1
  14. package/dist/{arrow-up-BhjinjWg.js → arrow-up-CJJ5q2ht.js} +2 -2
  15. package/dist/{arrow-up-BhjinjWg.js.map → arrow-up-CJJ5q2ht.js.map} +1 -1
  16. package/dist/{avatar-CZGZhjvv.js → avatar-DIhd5zYT.js} +1 -1
  17. package/dist/{avatar-CZGZhjvv.js.map → avatar-DIhd5zYT.js.map} +1 -1
  18. package/dist/{badge-CAvV5GE2.js → badge-C2kAwL41.js} +1 -1
  19. package/dist/{badge-CAvV5GE2.js.map → badge-C2kAwL41.js.map} +1 -1
  20. package/dist/{blockDiagram-WCTKOSBZ-DdPMGZ7X.js → blockDiagram-WCTKOSBZ-BH3jwWeU.js} +13 -13
  21. package/dist/{blockDiagram-WCTKOSBZ-DdPMGZ7X.js.map → blockDiagram-WCTKOSBZ-BH3jwWeU.js.map} +1 -1
  22. package/dist/{button-19KWzy7c.js → button-BtTc7Ncu.js} +1 -1
  23. package/dist/{button-19KWzy7c.js.map → button-BtTc7Ncu.js.map} +1 -1
  24. package/dist/{c4Diagram-IC4MRINW-Du1j-C4R.js → c4Diagram-IC4MRINW-OFLrunYI.js} +7 -7
  25. package/dist/{c4Diagram-IC4MRINW-Du1j-C4R.js.map → c4Diagram-IC4MRINW-OFLrunYI.js.map} +1 -1
  26. package/dist/{carousel-CJ5lxMYs.js → carousel-T96UFALA.js} +3 -3
  27. package/dist/{carousel-CJ5lxMYs.js.map → carousel-T96UFALA.js.map} +1 -1
  28. package/dist/{channel-BHvJxX8j.js → channel-LRbq43st.js} +2 -2
  29. package/dist/{channel-BHvJxX8j.js.map → channel-LRbq43st.js.map} +1 -1
  30. package/dist/charts/area/index.js +1 -1
  31. package/dist/charts/bar/index.js +1 -1
  32. package/dist/charts/index.js +2 -2
  33. package/dist/charts/line/index.js +1 -1
  34. package/dist/charts/pie/index.js +1 -1
  35. package/dist/charts/radar/index.js +1 -1
  36. package/dist/charts/scatter/index.js +1 -1
  37. package/dist/charts/waterfall/index.js +1 -1
  38. package/dist/{check-CybgTpDT.js → check-cGnuDoWp.js} +2 -2
  39. package/dist/{check-CybgTpDT.js.map → check-cGnuDoWp.js.map} +1 -1
  40. package/dist/{chevron-down-C_008JAH.js → chevron-down-m05raooX.js} +2 -2
  41. package/dist/{chevron-down-C_008JAH.js.map → chevron-down-m05raooX.js.map} +1 -1
  42. package/dist/{chevron-right-DuHRAn8w.js → chevron-right-ByWVa5XY.js} +2 -2
  43. package/dist/{chevron-right-DuHRAn8w.js.map → chevron-right-ByWVa5XY.js.map} +1 -1
  44. package/dist/{chevron-up-BY5jyuW2.js → chevron-up-CtvY7fRK.js} +2 -2
  45. package/dist/{chevron-up-BY5jyuW2.js.map → chevron-up-CtvY7fRK.js.map} +1 -1
  46. package/dist/{chunk-4BX2VUAB-CL-dnlxR.js → chunk-4BX2VUAB-BS9gpN-y.js} +2 -2
  47. package/dist/{chunk-4BX2VUAB-CL-dnlxR.js.map → chunk-4BX2VUAB-BS9gpN-y.js.map} +1 -1
  48. package/dist/{chunk-55IACEB6-DxNTqHZ8.js → chunk-55IACEB6-DZ-UBhHX.js} +3 -3
  49. package/dist/{chunk-55IACEB6-DxNTqHZ8.js.map → chunk-55IACEB6-DZ-UBhHX.js.map} +1 -1
  50. package/dist/{chunk-7E7YKBS2-Bewg8t99.js → chunk-7E7YKBS2-BsywoVTt.js} +2 -2
  51. package/dist/{chunk-7E7YKBS2-Bewg8t99.js.map → chunk-7E7YKBS2-BsywoVTt.js.map} +1 -1
  52. package/dist/{chunk-7R4GIKGN-DiZ1HYFd.js → chunk-7R4GIKGN-DJmroLCH.js} +3 -3
  53. package/dist/{chunk-7R4GIKGN-DiZ1HYFd.js.map → chunk-7R4GIKGN-DJmroLCH.js.map} +1 -1
  54. package/dist/{chunk-C72U2L5F-BqOejReq.js → chunk-C72U2L5F-BwPwVDcP.js} +2 -2
  55. package/dist/{chunk-C72U2L5F-BqOejReq.js.map → chunk-C72U2L5F-BwPwVDcP.js.map} +1 -1
  56. package/dist/{chunk-EGIJ26TM-1-wU_wPi.js → chunk-EGIJ26TM-DKd5cEgn.js} +2 -2
  57. package/dist/{chunk-EGIJ26TM-1-wU_wPi.js.map → chunk-EGIJ26TM-DKd5cEgn.js.map} +1 -1
  58. package/dist/{chunk-FMBD7UC4-7bd068zf.js → chunk-FMBD7UC4-1IxrpdPX.js} +2 -2
  59. package/dist/{chunk-FMBD7UC4-7bd068zf.js.map → chunk-FMBD7UC4-1IxrpdPX.js.map} +1 -1
  60. package/dist/{chunk-GEFDOKGD-bXEkwPrJ.js → chunk-GEFDOKGD-DGJJEGSm.js} +7 -7
  61. package/dist/{chunk-GEFDOKGD-bXEkwPrJ.js.map → chunk-GEFDOKGD-DGJJEGSm.js.map} +1 -1
  62. package/dist/{chunk-GLR3WWYH-GIQ55uMn.js → chunk-GLR3WWYH-BDwmgwCA.js} +8 -8
  63. package/dist/{chunk-GLR3WWYH-GIQ55uMn.js.map → chunk-GLR3WWYH-BDwmgwCA.js.map} +1 -1
  64. package/dist/{chunk-HHEYEP7N-BdiTBCvb.js → chunk-HHEYEP7N-DJ1b-gA8.js} +4 -4
  65. package/dist/{chunk-HHEYEP7N-BdiTBCvb.js.map → chunk-HHEYEP7N-DJ1b-gA8.js.map} +1 -1
  66. package/dist/{chunk-JSJVCQXG-p-BUVvps.js → chunk-JSJVCQXG-Do17yYig.js} +5 -5
  67. package/dist/{chunk-JSJVCQXG-p-BUVvps.js.map → chunk-JSJVCQXG-Do17yYig.js.map} +1 -1
  68. package/dist/{chunk-KX2RTZJC-DopwIbE1.js → chunk-KX2RTZJC-d9jFqUAY.js} +3 -3
  69. package/dist/{chunk-KX2RTZJC-DopwIbE1.js.map → chunk-KX2RTZJC-d9jFqUAY.js.map} +1 -1
  70. package/dist/{chunk-KYZI473N-4Y4_4kXL.js → chunk-KYZI473N-BXYCe83A.js} +9 -9
  71. package/dist/{chunk-KYZI473N-4Y4_4kXL.js.map → chunk-KYZI473N-BXYCe83A.js.map} +1 -1
  72. package/dist/{chunk-L3YUKLVL-U6LYvPh7.js → chunk-L3YUKLVL-Y5k8UNMf.js} +2 -2
  73. package/dist/{chunk-L3YUKLVL-U6LYvPh7.js.map → chunk-L3YUKLVL-Y5k8UNMf.js.map} +1 -1
  74. package/dist/{chunk-MX3YWQON-DnBlqD44.js → chunk-MX3YWQON-D43mcq1f.js} +2 -2
  75. package/dist/{chunk-MX3YWQON-DnBlqD44.js.map → chunk-MX3YWQON-D43mcq1f.js.map} +1 -1
  76. package/dist/{chunk-NQ4KR5QH-BSylMz0X.js → chunk-NQ4KR5QH-C0nWShNk.js} +7 -7
  77. package/dist/{chunk-NQ4KR5QH-BSylMz0X.js.map → chunk-NQ4KR5QH-C0nWShNk.js.map} +1 -1
  78. package/dist/{chunk-O4XLMI2P-BcKxBhcn.js → chunk-O4XLMI2P-DtGEm9QX.js} +12 -12
  79. package/dist/{chunk-O4XLMI2P-BcKxBhcn.js.map → chunk-O4XLMI2P-DtGEm9QX.js.map} +1 -1
  80. package/dist/{chunk-OZEHJAEY-D6S6KbwY.js → chunk-OZEHJAEY-BsQ56PV-.js} +2 -2
  81. package/dist/{chunk-OZEHJAEY-D6S6KbwY.js.map → chunk-OZEHJAEY-BsQ56PV-.js.map} +1 -1
  82. package/dist/{chunk-PQ6SQG4A-DPz_e-Es.js → chunk-PQ6SQG4A-Cpfc5F4u.js} +3 -3
  83. package/dist/{chunk-PQ6SQG4A-DPz_e-Es.js.map → chunk-PQ6SQG4A-Cpfc5F4u.js.map} +1 -1
  84. package/dist/{chunk-PU5JKC2W-CAfe4Tg3.js → chunk-PU5JKC2W-DNpn_Yik.js} +5 -5
  85. package/dist/{chunk-PU5JKC2W-CAfe4Tg3.js.map → chunk-PU5JKC2W-DNpn_Yik.js.map} +1 -1
  86. package/dist/{chunk-QZHKN3VN-DMkPzlbH.js → chunk-QZHKN3VN-kDNdTVLo.js} +2 -2
  87. package/dist/{chunk-QZHKN3VN-DMkPzlbH.js.map → chunk-QZHKN3VN-kDNdTVLo.js.map} +1 -1
  88. package/dist/{chunk-R5LLSJPH-C90VQC8y.js → chunk-R5LLSJPH-c1IfaK5D.js} +2 -2
  89. package/dist/{chunk-R5LLSJPH-C90VQC8y.js.map → chunk-R5LLSJPH-c1IfaK5D.js.map} +1 -1
  90. package/dist/{chunk-WL4C6EOR-B2OMxQLL.js → chunk-WL4C6EOR-BV-op7zg.js} +10 -10
  91. package/dist/{chunk-WL4C6EOR-B2OMxQLL.js.map → chunk-WL4C6EOR-BV-op7zg.js.map} +1 -1
  92. package/dist/{chunk-XIRO2GV7-D1_jT4ch.js → chunk-XIRO2GV7-Bv1hlNLi.js} +2 -2
  93. package/dist/{chunk-XIRO2GV7-D1_jT4ch.js.map → chunk-XIRO2GV7-Bv1hlNLi.js.map} +1 -1
  94. package/dist/{chunk-XPW4576I-DkznIIIK.js → chunk-XPW4576I-BqiPnb3d.js} +2 -2
  95. package/dist/{chunk-XPW4576I-DkznIIIK.js.map → chunk-XPW4576I-BqiPnb3d.js.map} +1 -1
  96. package/dist/{chunk-XZSTWKYB-BZB_wvbZ.js → chunk-XZSTWKYB-C7maKWEr.js} +6 -6
  97. package/dist/{chunk-XZSTWKYB-BZB_wvbZ.js.map → chunk-XZSTWKYB-C7maKWEr.js.map} +1 -1
  98. package/dist/{chunk-YBOYWFTD-DVqQ1pen.js → chunk-YBOYWFTD-DkjEOcgZ.js} +4 -4
  99. package/dist/{chunk-YBOYWFTD-DVqQ1pen.js.map → chunk-YBOYWFTD-DkjEOcgZ.js.map} +1 -1
  100. package/dist/classDiagram-VBA2DB6C-DZfC0xPM.js +31 -0
  101. package/dist/{classDiagram-VBA2DB6C-DFfohpM0.js.map → classDiagram-VBA2DB6C-DZfC0xPM.js.map} +1 -1
  102. package/dist/classDiagram-v2-RAHNMMFH-CtWRD1ax.js +31 -0
  103. package/dist/{classDiagram-v2-RAHNMMFH-kUMm28FB.js.map → classDiagram-v2-RAHNMMFH-CtWRD1ax.js.map} +1 -1
  104. package/dist/{clone-DxI1nSTP.js → clone-CliVdNc8.js} +2 -2
  105. package/dist/{clone-DxI1nSTP.js.map → clone-CliVdNc8.js.map} +1 -1
  106. package/dist/{component-x2UxdKEC.js → component-C1Jiz1Ki.js} +1 -1
  107. package/dist/{component-x2UxdKEC.js.map → component-C1Jiz1Ki.js.map} +1 -1
  108. package/dist/components/index.js +3 -3
  109. package/dist/components/theme/accent-switcher.d.ts +2 -0
  110. package/dist/components/theme/accent-switcher.d.ts.map +1 -1
  111. package/dist/components/theme/accent-switcher.js +5 -1
  112. package/dist/components/theme/accent-switcher.js.map +1 -1
  113. package/dist/components/theme/density-switcher.d.ts +2 -0
  114. package/dist/components/theme/density-switcher.d.ts.map +1 -1
  115. package/dist/components/theme/density-switcher.js +5 -1
  116. package/dist/components/theme/density-switcher.js.map +1 -1
  117. package/dist/components/theme/font-stack-picker.d.ts +2 -0
  118. package/dist/components/theme/font-stack-picker.d.ts.map +1 -1
  119. package/dist/components/theme/font-stack-picker.js +5 -1
  120. package/dist/components/theme/font-stack-picker.js.map +1 -1
  121. package/dist/components/theme/glass-slider.d.ts +2 -0
  122. package/dist/components/theme/glass-slider.d.ts.map +1 -1
  123. package/dist/components/theme/glass-slider.js +21 -15
  124. package/dist/components/theme/glass-slider.js.map +1 -1
  125. package/dist/components/theme/icon-gallery-browser.d.ts +16 -0
  126. package/dist/components/theme/icon-gallery-browser.d.ts.map +1 -0
  127. package/dist/components/theme/icon-set-picker.d.ts +2 -0
  128. package/dist/components/theme/icon-set-picker.d.ts.map +1 -1
  129. package/dist/components/theme/icon-set-picker.js +29 -24
  130. package/dist/components/theme/icon-set-picker.js.map +1 -1
  131. package/dist/components/theme/icon-usage-matrix.d.ts +2 -0
  132. package/dist/components/theme/icon-usage-matrix.d.ts.map +1 -1
  133. package/dist/components/theme/icon-usage-matrix.js +11 -7
  134. package/dist/components/theme/icon-usage-matrix.js.map +1 -1
  135. package/dist/components/theme/index.js +3 -3
  136. package/dist/components/theme/radius-slider.d.ts +2 -0
  137. package/dist/components/theme/radius-slider.d.ts.map +1 -1
  138. package/dist/components/theme/radius-slider.js +17 -12
  139. package/dist/components/theme/radius-slider.js.map +1 -1
  140. package/dist/components/theme/theme-preset-grid.d.ts +2 -0
  141. package/dist/components/theme/theme-preset-grid.d.ts.map +1 -1
  142. package/dist/components/theme/theme-preset-grid.js +6 -2
  143. package/dist/components/theme/theme-preset-grid.js.map +1 -1
  144. package/dist/components/theme/theme-preview-tile.d.ts +2 -0
  145. package/dist/components/theme/theme-preview-tile.d.ts.map +1 -1
  146. package/dist/components/theme/theme-preview-tile.js +9 -5
  147. package/dist/components/theme/theme-preview-tile.js.map +1 -1
  148. package/dist/components/theme/theme-studio.d.ts +4 -0
  149. package/dist/components/theme/theme-studio.d.ts.map +1 -1
  150. package/dist/components/theme/theme-studio.js +2 -93
  151. package/dist/components/theme/theme-switcher.d.ts +2 -0
  152. package/dist/components/theme/theme-switcher.d.ts.map +1 -1
  153. package/dist/components/theme/theme-switcher.js +5 -1
  154. package/dist/components/theme/theme-switcher.js.map +1 -1
  155. package/dist/composites/metrics-card.js +1 -1
  156. package/dist/composites/per-case-stats-table.js +1 -1
  157. package/dist/composites/run-monitor.js +2 -2
  158. package/dist/{copy-Hv8btfHH.js → copy-CP6UzCoj.js} +2 -2
  159. package/dist/{copy-Hv8btfHH.js.map → copy-CP6UzCoj.js.map} +1 -1
  160. package/dist/{cose-bilkent-S5V4N54A-DSIl5_e8.js → cose-bilkent-S5V4N54A-DxM02fly.js} +4 -4
  161. package/dist/{cose-bilkent-S5V4N54A-DSIl5_e8.js.map → cose-bilkent-S5V4N54A-DxM02fly.js.map} +1 -1
  162. package/dist/{createLucideIcon-wKpAnzBe.js → createLucideIcon-Cfb5CZJx.js} +1 -1
  163. package/dist/{createLucideIcon-wKpAnzBe.js.map → createLucideIcon-Cfb5CZJx.js.map} +1 -1
  164. package/dist/{cytoscape.esm-klxrH6H1.js → cytoscape.esm-2vKMh7AJ.js} +1 -1
  165. package/dist/{cytoscape.esm-klxrH6H1.js.map → cytoscape.esm-2vKMh7AJ.js.map} +1 -1
  166. package/dist/{dagre-Bm7BZZKB.js → dagre-BqC9mhMk.js} +7 -7
  167. package/dist/{dagre-Bm7BZZKB.js.map → dagre-BqC9mhMk.js.map} +1 -1
  168. package/dist/{dagre-KLK3FWXG-B0rbfsw9.js → dagre-KLK3FWXG-DTKcsol6.js} +15 -15
  169. package/dist/{dagre-KLK3FWXG-B0rbfsw9.js.map → dagre-KLK3FWXG-DTKcsol6.js.map} +1 -1
  170. package/dist/{defaultLocale-Cql_qCPq.js → defaultLocale-PLHpRrsr.js} +1 -1
  171. package/dist/{defaultLocale-Cql_qCPq.js.map → defaultLocale-PLHpRrsr.js.map} +1 -1
  172. package/dist/{diagram-E7M64L7V-DWS26Zbm.js → diagram-E7M64L7V-Co7O3gub.js} +12 -12
  173. package/dist/{diagram-E7M64L7V-DWS26Zbm.js.map → diagram-E7M64L7V-Co7O3gub.js.map} +1 -1
  174. package/dist/{diagram-IFDJBPK2--zOQrB5O.js → diagram-IFDJBPK2-D-Enf1mK.js} +7 -7
  175. package/dist/{diagram-IFDJBPK2--zOQrB5O.js.map → diagram-IFDJBPK2-D-Enf1mK.js.map} +1 -1
  176. package/dist/{diagram-P4PSJMXO-DjNveg1t.js → diagram-P4PSJMXO-O8g_RIkM.js} +7 -7
  177. package/dist/{diagram-P4PSJMXO-DjNveg1t.js.map → diagram-P4PSJMXO-O8g_RIkM.js.map} +1 -1
  178. package/dist/display/avatar/index.js +1 -1
  179. package/dist/display/badge/index.js +1 -1
  180. package/dist/display/index.js +3 -3
  181. package/dist/display/markdown-viewer/index.js +1 -1
  182. package/dist/{dist-Dq1IoZXt.js → dist-B-HCSak9.js} +13 -13
  183. package/dist/{dist-Dq1IoZXt.js.map → dist-B-HCSak9.js.map} +1 -1
  184. package/dist/{dist-CbqFryer.js → dist-BhO08NBU.js} +5 -5
  185. package/dist/{dist-CbqFryer.js.map → dist-BhO08NBU.js.map} +1 -1
  186. package/dist/{dist-D0fg6pif.js → dist-BlNMcPtC.js} +2 -2
  187. package/dist/{dist-D0fg6pif.js.map → dist-BlNMcPtC.js.map} +1 -1
  188. package/dist/{dist-CSE7pO-4.js → dist-BrNloUiz.js} +1 -1
  189. package/dist/{dist-CSE7pO-4.js.map → dist-BrNloUiz.js.map} +1 -1
  190. package/dist/{dist-CcNjOWyQ.js → dist-Br_I_YIY.js} +2 -2
  191. package/dist/{dist-CcNjOWyQ.js.map → dist-Br_I_YIY.js.map} +1 -1
  192. package/dist/{dist-D0hHNX_3.js → dist-CDa1xTf4.js} +9 -9
  193. package/dist/{dist-D0hHNX_3.js.map → dist-CDa1xTf4.js.map} +1 -1
  194. package/dist/{dist-BCCeHAQm.js → dist-CWPamCJD.js} +2 -2
  195. package/dist/{dist-BCCeHAQm.js.map → dist-CWPamCJD.js.map} +1 -1
  196. package/dist/{dist-CVCn7F_m.js → dist-CetkIu6m.js} +1 -1
  197. package/dist/{dist-CVCn7F_m.js.map → dist-CetkIu6m.js.map} +1 -1
  198. package/dist/{dist-koa_pEtu.js → dist-CjZz16VT.js} +2 -2
  199. package/dist/{dist-koa_pEtu.js.map → dist-CjZz16VT.js.map} +1 -1
  200. package/dist/{dist-D5o6xae2.js → dist-DDlxLS_M.js} +2 -2
  201. package/dist/{dist-D5o6xae2.js.map → dist-DDlxLS_M.js.map} +1 -1
  202. package/dist/{dist-Cao8o5bZ.js → dist-DFW2ymX5.js} +1 -1
  203. package/dist/{dist-Cao8o5bZ.js.map → dist-DFW2ymX5.js.map} +1 -1
  204. package/dist/{dist-Dm7Xaded.js → dist-DHTh2jaC.js} +1 -1
  205. package/dist/{dist-Dm7Xaded.js.map → dist-DHTh2jaC.js.map} +1 -1
  206. package/dist/{dist-BBVMDH9A.js → dist-DN5XnB8I.js} +4 -4
  207. package/dist/{dist-BBVMDH9A.js.map → dist-DN5XnB8I.js.map} +1 -1
  208. package/dist/{dist-C0wG5dwG.js → dist-DYQiYO9a.js} +2 -2
  209. package/dist/{dist-C0wG5dwG.js.map → dist-DYQiYO9a.js.map} +1 -1
  210. package/dist/{dist-RmXz0NYF.js → dist-GA_FAY5r.js} +1 -1
  211. package/dist/{dist-RmXz0NYF.js.map → dist-GA_FAY5r.js.map} +1 -1
  212. package/dist/{dist-cMlzVrN6.js → dist-M-TigQUP.js} +3 -3
  213. package/dist/{dist-cMlzVrN6.js.map → dist-M-TigQUP.js.map} +1 -1
  214. package/dist/{dist-DxtM7vvP.js → dist-QzxcNtrD.js} +3 -3
  215. package/dist/{dist-DxtM7vvP.js.map → dist-QzxcNtrD.js.map} +1 -1
  216. package/dist/{dist-CTlQcJNK.js → dist-W53Bo1BJ.js} +1 -1
  217. package/dist/{dist-CTlQcJNK.js.map → dist-W53Bo1BJ.js.map} +1 -1
  218. package/dist/{dist-B1veE5DO.js → dist-bUQfhez2.js} +8 -8
  219. package/dist/{dist-B1veE5DO.js.map → dist-bUQfhez2.js.map} +1 -1
  220. package/dist/{dist-DGayZ3ok2.js → dist-e5OOjxMa.js} +2 -2
  221. package/dist/dist-e5OOjxMa.js.map +1 -0
  222. package/dist/{dist-CpMqmV-i.js → dist-r_mYhsAH.js} +2 -2
  223. package/dist/{dist-CpMqmV-i.js.map → dist-r_mYhsAH.js.map} +1 -1
  224. package/dist/{dropdown-menu-ChWWguC6.js → dropdown-menu-CxFMDZns.js} +7 -7
  225. package/dist/{dropdown-menu-ChWWguC6.js.map → dropdown-menu-CxFMDZns.js.map} +1 -1
  226. package/dist/{ellipsis-QzwbUxFu.js → ellipsis-CLIG9-2m.js} +2 -2
  227. package/dist/{ellipsis-QzwbUxFu.js.map → ellipsis-CLIG9-2m.js.map} +1 -1
  228. package/dist/{erDiagram-INFDFZHY-Ccs6kW39.js → erDiagram-INFDFZHY-C42JeR9I.js} +15 -15
  229. package/dist/{erDiagram-INFDFZHY-Ccs6kW39.js.map → erDiagram-INFDFZHY-C42JeR9I.js.map} +1 -1
  230. package/dist/{es2015-Bv2aaatg.js → es2015-CJnm4_FQ.js} +4 -4
  231. package/dist/{es2015-Bv2aaatg.js.map → es2015-CJnm4_FQ.js.map} +1 -1
  232. package/dist/{flowDiagram-PKNHOUZH-BFdCj6uy.js → flowDiagram-PKNHOUZH-DInJjOz3.js} +18 -18
  233. package/dist/{flowDiagram-PKNHOUZH-BFdCj6uy.js.map → flowDiagram-PKNHOUZH-DInJjOz3.js.map} +1 -1
  234. package/dist/{ganttDiagram-A5KZAMGK-11X4ChEO.js → ganttDiagram-A5KZAMGK-Dgp-4Yss.js} +8 -8
  235. package/dist/{ganttDiagram-A5KZAMGK-11X4ChEO.js.map → ganttDiagram-A5KZAMGK-Dgp-4Yss.js.map} +1 -1
  236. package/dist/gitGraph-HDMCJU4V-D_QsK6Rt.js +3 -0
  237. package/dist/{gitGraphDiagram-K3NZZRJ6-BaZX5GA5.js → gitGraphDiagram-K3NZZRJ6-Dr_X0dND.js} +8 -8
  238. package/dist/{gitGraphDiagram-K3NZZRJ6-BaZX5GA5.js.map → gitGraphDiagram-K3NZZRJ6-Dr_X0dND.js.map} +1 -1
  239. package/dist/{graphlib-DmFENmkJ.js → graphlib-ecencZTG.js} +4 -4
  240. package/dist/{graphlib-DmFENmkJ.js.map → graphlib-ecencZTG.js.map} +1 -1
  241. package/dist/index.d.ts +1 -0
  242. package/dist/index.d.ts.map +1 -1
  243. package/dist/index.js +121 -121
  244. package/dist/info-3K5VOQVL-BbLiZXwn.js +3 -0
  245. package/dist/{infoDiagram-LFFYTUFH-iswGOIAk.js → infoDiagram-LFFYTUFH-DajJJRvc.js} +5 -5
  246. package/dist/{infoDiagram-LFFYTUFH-iswGOIAk.js.map → infoDiagram-LFFYTUFH-DajJJRvc.js.map} +1 -1
  247. package/dist/{init-Bdvvvy1Z.js → init-DcLTaNW1.js} +1 -1
  248. package/dist/{init-Bdvvvy1Z.js.map → init-DcLTaNW1.js.map} +1 -1
  249. package/dist/{input-DwHjxF_w.js → input-BrmncNsd.js} +1 -1
  250. package/dist/{input-DwHjxF_w.js.map → input-BrmncNsd.js.map} +1 -1
  251. package/dist/{interactive-C6OMqZhG.js → interactive-CXfIDzyh.js} +1 -1
  252. package/dist/{interactive-C6OMqZhG.js.map → interactive-CXfIDzyh.js.map} +1 -1
  253. package/dist/{isArrayLikeObject-uEhZQuCW.js → isArrayLikeObject-Bjsxaqj7.js} +1 -1
  254. package/dist/{isArrayLikeObject-uEhZQuCW.js.map → isArrayLikeObject-Bjsxaqj7.js.map} +1 -1
  255. package/dist/{isEmpty-SB7gHWzg.js → isEmpty-CeZZUVts.js} +2 -2
  256. package/dist/{isEmpty-SB7gHWzg.js.map → isEmpty-CeZZUVts.js.map} +1 -1
  257. package/dist/{ishikawaDiagram-PHBUUO56-BYrA8GRt.js → ishikawaDiagram-PHBUUO56-qHBJm2LT.js} +6 -6
  258. package/dist/{ishikawaDiagram-PHBUUO56-BYrA8GRt.js.map → ishikawaDiagram-PHBUUO56-qHBJm2LT.js.map} +1 -1
  259. package/dist/{journeyDiagram-4ABVD52K-BlCQNVun.js → journeyDiagram-4ABVD52K-PgfYdoDM.js} +7 -7
  260. package/dist/{journeyDiagram-4ABVD52K-BlCQNVun.js.map → journeyDiagram-4ABVD52K-PgfYdoDM.js.map} +1 -1
  261. package/dist/{kanban-definition-K7BYSVSG-85hLaVO4.js → kanban-definition-K7BYSVSG-DFRT8j7A.js} +11 -11
  262. package/dist/{kanban-definition-K7BYSVSG-85hLaVO4.js.map → kanban-definition-K7BYSVSG-DFRT8j7A.js.map} +1 -1
  263. package/dist/{katex-DyctUUDD.js → katex-BZdHnXin.js} +1 -1
  264. package/dist/{katex-DyctUUDD.js.map → katex-BZdHnXin.js.map} +1 -1
  265. package/dist/{label-DaoC8KCo.js → label-D_TX0q0F.js} +4 -4
  266. package/dist/{label-DaoC8KCo.js.map → label-D_TX0q0F.js.map} +1 -1
  267. package/dist/layout-DJ2E8nU0.js +135 -0
  268. package/dist/layout-DJ2E8nU0.js.map +1 -0
  269. package/dist/{line-xLJn8e8J.js → line-Cq1AZT4f.js} +4 -4
  270. package/dist/{line-xLJn8e8J.js.map → line-Cq1AZT4f.js.map} +1 -1
  271. package/dist/{linear-BePtLBEt.js → linear-BnJD01Xn.js} +5 -5
  272. package/dist/{linear-BePtLBEt.js.map → linear-BnJD01Xn.js.map} +1 -1
  273. package/dist/{markdown-viewer-DrwjEcXp.js → markdown-viewer-CBRQVRMp.js} +1 -1
  274. package/dist/{markdown-viewer-DrwjEcXp.js.map → markdown-viewer-CBRQVRMp.js.map} +1 -1
  275. package/dist/{math--xT1IZMK.js → math-D4gdAuwG.js} +1 -1
  276. package/dist/{math--xT1IZMK.js.map → math-D4gdAuwG.js.map} +1 -1
  277. package/dist/{menubar-CZie7LCj.js → menubar-lQZ-0ckw.js} +13 -13
  278. package/dist/{menubar-CZie7LCj.js.map → menubar-lQZ-0ckw.js.map} +1 -1
  279. package/dist/{mermaid-parser.core-Bd7Ghv5c.js → mermaid-parser.core-Dz5qv4CI.js} +16 -16
  280. package/dist/{mermaid-parser.core-Bd7Ghv5c.js.map → mermaid-parser.core-Dz5qv4CI.js.map} +1 -1
  281. package/dist/{mermaid.core-beWmNAWY.js → mermaid.core-DTiIXVKa.js} +44 -44
  282. package/dist/{mermaid.core-beWmNAWY.js.map → mermaid.core-DTiIXVKa.js.map} +1 -1
  283. package/dist/{mindmap-definition-YRQLILUH-CNBsYwDI.js → mindmap-definition-YRQLILUH-D95OPRMh.js} +13 -13
  284. package/dist/{mindmap-definition-YRQLILUH-CNBsYwDI.js.map → mindmap-definition-YRQLILUH-D95OPRMh.js.map} +1 -1
  285. package/dist/{navigation-menu-Db2QQ70P.js → navigation-menu-BpZTlEU0.js} +14 -14
  286. package/dist/{navigation-menu-Db2QQ70P.js.map → navigation-menu-BpZTlEU0.js.map} +1 -1
  287. package/dist/{ordinal-BKo-UFaW.js → ordinal-CC9tfh_g.js} +2 -2
  288. package/dist/{ordinal-BKo-UFaW.js.map → ordinal-CC9tfh_g.js.map} +1 -1
  289. package/dist/packet-RMMSAZCW-D72DRs1N.js +3 -0
  290. package/dist/{pagination-BmFjVnmV.js → pagination-CCjNavtQ.js} +5 -5
  291. package/dist/{pagination-BmFjVnmV.js.map → pagination-CCjNavtQ.js.map} +1 -1
  292. package/dist/{path-Z-HG_8i_.js → path-y0uQCOMW.js} +1 -1
  293. package/dist/{path-Z-HG_8i_.js.map → path-y0uQCOMW.js.map} +1 -1
  294. package/dist/pie-UPGHQEXC-C8RDLrEi.js +3 -0
  295. package/dist/{pieDiagram-SKSYHLDU-BMrGgUAv.js → pieDiagram-SKSYHLDU-BREEn_Sk.js} +12 -12
  296. package/dist/{pieDiagram-SKSYHLDU-BMrGgUAv.js.map → pieDiagram-SKSYHLDU-BREEn_Sk.js.map} +1 -1
  297. package/dist/primitives/button/index.js +1 -1
  298. package/dist/primitives/index.js +3 -3
  299. package/dist/primitives/input/index.js +1 -1
  300. package/dist/primitives/live-log-tail.js +1 -1
  301. package/dist/primitives/phase-progress.js +1 -1
  302. package/dist/primitives/sse-live-badge.js +1 -1
  303. package/dist/primitives/toggle/index.js +1 -1
  304. package/dist/primitives/yaml-override-editor.js +1 -1
  305. package/dist/primitives-BzQ6EvIx.js +380 -0
  306. package/dist/primitives-BzQ6EvIx.js.map +1 -0
  307. package/dist/{quadrantDiagram-337W2JSQ-kFO50yPy.js → quadrantDiagram-337W2JSQ-CcKc-h2o.js} +5 -5
  308. package/dist/{quadrantDiagram-337W2JSQ-kFO50yPy.js.map → quadrantDiagram-337W2JSQ-CcKc-h2o.js.map} +1 -1
  309. package/dist/radar-KQ55EAFF-DhmvjiyN.js +3 -0
  310. package/dist/{radio-group-Dum8cfXo.js → radio-group-8GO9_jRN.js} +10 -10
  311. package/dist/{radio-group-Dum8cfXo.js.map → radio-group-8GO9_jRN.js.map} +1 -1
  312. package/dist/react/app-switcher.js +1 -1
  313. package/dist/react/brand.js +1 -1
  314. package/dist/react/consent/preferences.js +1 -1
  315. package/dist/react/editors/code-editor.js +1 -1
  316. package/dist/react/editors/diff-viewer.js +1 -1
  317. package/dist/react/editors/json-viewer.js +1 -1
  318. package/dist/react/editors/log-viewer.js +1 -1
  319. package/dist/react/editors/yaml-editor.js +1 -1
  320. package/dist/react/feedback/notification-banner.js +2 -2
  321. package/dist/react/hooks/useSSE.js +1 -1
  322. package/dist/react/hooks/useStorage.js +1 -1
  323. package/dist/react/layout/app-shell.js +1 -1
  324. package/dist/react/layout/browser-layout.d.ts +12 -0
  325. package/dist/react/layout/browser-layout.d.ts.map +1 -0
  326. package/dist/react/layout/detail-header.d.ts +13 -0
  327. package/dist/react/layout/detail-header.d.ts.map +1 -0
  328. package/dist/react/layout/index.d.ts +4 -0
  329. package/dist/react/layout/index.d.ts.map +1 -1
  330. package/dist/react/layout/index.js +3 -2
  331. package/dist/react/layout/page-frame.d.ts +11 -0
  332. package/dist/react/layout/page-frame.d.ts.map +1 -0
  333. package/dist/react/layout/page-header.js +1 -1
  334. package/dist/react/layout/sub-nav.d.ts +15 -0
  335. package/dist/react/layout/sub-nav.d.ts.map +1 -0
  336. package/dist/react/primitives/alert-dialog.js +1 -1
  337. package/dist/react/primitives/alert.js +3 -3
  338. package/dist/react/primitives/animated-counter.js +1 -1
  339. package/dist/react/primitives/aspect-ratio.js +1 -1
  340. package/dist/react/primitives/attack-path.d.ts +1 -1
  341. package/dist/react/primitives/attack-path.js +2 -2
  342. package/dist/react/primitives/avatar.js +2 -2
  343. package/dist/react/primitives/badge.d.ts +1 -1
  344. package/dist/react/primitives/badge.js +3 -3
  345. package/dist/react/primitives/breadcrumb.js +3 -3
  346. package/dist/react/primitives/button.js +3 -3
  347. package/dist/react/primitives/calendar.js +1 -1
  348. package/dist/react/primitives/card.js +1 -1
  349. package/dist/react/primitives/carousel.js +1 -1
  350. package/dist/react/primitives/chart-area.js +1 -1
  351. package/dist/react/primitives/chart-bar.js +1 -1
  352. package/dist/react/primitives/chart-candlestick.js +1 -1
  353. package/dist/react/primitives/chart-frame.d.ts +14 -0
  354. package/dist/react/primitives/chart-frame.d.ts.map +1 -0
  355. package/dist/react/primitives/chart-funnel.js +1 -1
  356. package/dist/react/primitives/chart-gauge.js +1 -1
  357. package/dist/react/primitives/chart-heatmap.js +1 -1
  358. package/dist/react/primitives/chart-line.js +1 -1
  359. package/dist/react/primitives/chart-pie.js +1 -1
  360. package/dist/react/primitives/chart-radar.js +1 -1
  361. package/dist/react/primitives/chart-sankey.js +1 -1
  362. package/dist/react/primitives/chart-scatter.js +1 -1
  363. package/dist/react/primitives/chart-sparkline.js +1 -1
  364. package/dist/react/primitives/chart-treemap.js +1 -1
  365. package/dist/react/primitives/chart-waterfall.js +1 -1
  366. package/dist/react/primitives/chat-drawer.d.ts +13 -0
  367. package/dist/react/primitives/chat-drawer.d.ts.map +1 -0
  368. package/dist/react/primitives/chat-input.d.ts +10 -0
  369. package/dist/react/primitives/chat-input.d.ts.map +1 -0
  370. package/dist/react/primitives/checkbox.js +1 -1
  371. package/dist/react/primitives/code-block.js +3 -3
  372. package/dist/react/primitives/code-viewer.js +3 -3
  373. package/dist/react/primitives/collapsible.js +3 -3
  374. package/dist/react/primitives/color-picker.js +1 -1
  375. package/dist/react/primitives/context-menu.js +1 -1
  376. package/dist/react/primitives/copy-button.js +4 -4
  377. package/dist/react/primitives/cron-editor.js +1 -1
  378. package/dist/react/primitives/cvss-badge.d.ts +1 -1
  379. package/dist/react/primitives/cvss-badge.js +2 -2
  380. package/dist/react/primitives/dashboard-metric-card.d.ts +18 -0
  381. package/dist/react/primitives/dashboard-metric-card.d.ts.map +1 -0
  382. package/dist/react/primitives/data-field.d.ts +13 -0
  383. package/dist/react/primitives/data-field.d.ts.map +1 -0
  384. package/dist/react/primitives/data-grid.js +4 -4
  385. package/dist/react/primitives/data-table.js +2 -2
  386. package/dist/react/primitives/date-picker.js +1 -1
  387. package/dist/react/primitives/detection-status.d.ts +1 -1
  388. package/dist/react/primitives/detection-status.js +2 -2
  389. package/dist/react/primitives/dialog.js +3 -3
  390. package/dist/react/primitives/drawer.js +3 -3
  391. package/dist/react/primitives/dropdown-menu.js +1 -1
  392. package/dist/react/primitives/empty-state.js +1 -1
  393. package/dist/react/primitives/field.js +1 -1
  394. package/dist/react/primitives/file-tree.js +1 -1
  395. package/dist/react/primitives/flow-diagram.js +1 -1
  396. package/dist/react/primitives/heatmap-legend.js +1 -1
  397. package/dist/react/primitives/heatmap-toolbar.js +2 -2
  398. package/dist/react/primitives/hover-card.js +1 -1
  399. package/dist/react/primitives/index.d.ts +8 -0
  400. package/dist/react/primitives/index.d.ts.map +1 -1
  401. package/dist/react/primitives/index.js +84 -83
  402. package/dist/react/primitives/input.js +1 -1
  403. package/dist/react/primitives/json-path-browser.js +1 -1
  404. package/dist/react/primitives/kanban.js +1 -1
  405. package/dist/react/primitives/kbd.js +1 -1
  406. package/dist/react/primitives/label.js +1 -1
  407. package/dist/react/primitives/map.js +1 -1
  408. package/dist/react/primitives/markdown-viewer.js +0 -0
  409. package/dist/react/primitives/menubar.js +1 -1
  410. package/dist/react/primitives/mermaid-diagram.js +1 -1
  411. package/dist/react/primitives/metric-tile.js +1 -1
  412. package/dist/react/primitives/mitre-matrix.d.ts +1 -1
  413. package/dist/react/primitives/mitre-matrix.js +2 -2
  414. package/dist/react/primitives/modal.js +3 -3
  415. package/dist/react/primitives/navigation-menu.js +1 -1
  416. package/dist/react/primitives/network-graph.js +1 -1
  417. package/dist/react/primitives/notification-center.js +4 -4
  418. package/dist/react/primitives/notification-center.js.map +1 -1
  419. package/dist/react/primitives/pagination.js +1 -1
  420. package/dist/react/primitives/popover.js +1 -1
  421. package/dist/react/primitives/progress.js +2 -2
  422. package/dist/react/primitives/query-boundary.d.ts +15 -0
  423. package/dist/react/primitives/query-boundary.d.ts.map +1 -0
  424. package/dist/react/primitives/radio-group.js +1 -1
  425. package/dist/react/primitives/rule-editor.js +1 -1
  426. package/dist/react/primitives/score-ring.d.ts +13 -0
  427. package/dist/react/primitives/score-ring.d.ts.map +1 -0
  428. package/dist/react/primitives/scroll-area.js +1 -1
  429. package/dist/react/primitives/search.js +3 -3
  430. package/dist/react/primitives/section-panel.d.ts +11 -0
  431. package/dist/react/primitives/section-panel.d.ts.map +1 -0
  432. package/dist/react/primitives/select.js +1 -1
  433. package/dist/react/primitives/separator.js +1 -1
  434. package/dist/react/primitives/severity-indicator.d.ts +1 -1
  435. package/dist/react/primitives/severity-indicator.js +2 -2
  436. package/dist/react/primitives/sheet.js +3 -3
  437. package/dist/react/primitives/skeleton.js +1 -1
  438. package/dist/react/primitives/slide-panel.js +2 -2
  439. package/dist/react/primitives/slider.js +1 -1
  440. package/dist/react/primitives/spinner.js +1 -1
  441. package/dist/react/primitives/split-pane.js +1 -1
  442. package/dist/react/primitives/stat-card.js +2 -2
  443. package/dist/react/primitives/status-bar.js +1 -1
  444. package/dist/react/primitives/status-dot.js +1 -1
  445. package/dist/react/primitives/stepper.js +3 -3
  446. package/dist/react/primitives/switch.js +1 -1
  447. package/dist/react/primitives/table.js +1 -1
  448. package/dist/react/primitives/tabs.js +1 -1
  449. package/dist/react/primitives/tag-input.js +1 -1
  450. package/dist/react/primitives/terminal.js +1 -1
  451. package/dist/react/primitives/textarea.js +1 -1
  452. package/dist/react/primitives/timeline.js +1 -1
  453. package/dist/react/primitives/toast.js +1 -1
  454. package/dist/react/primitives/toggle.js +1 -1
  455. package/dist/react/primitives/tooltip.js +1 -1
  456. package/dist/react/primitives/tree-view.js +2 -2
  457. package/dist/react/primitives/typography.js +1 -1
  458. package/dist/react/primitives/uptime-bar.js +1 -1
  459. package/dist/react/primitives/vulnerability-card.d.ts +1 -1
  460. package/dist/react/primitives/vulnerability-card.js +2 -2
  461. package/dist/react/sidebar.js +2 -2
  462. package/dist/react/theme-studio.js +1 -1
  463. package/dist/react/theme-toggle.js +1 -1
  464. package/dist/react/topology.js +1 -1
  465. package/dist/react.js +103 -103
  466. package/dist/{requirementDiagram-Z7DCOOCP-D2Oxfw6G.js → requirementDiagram-Z7DCOOCP-aPcaPduF.js} +13 -13
  467. package/dist/{requirementDiagram-Z7DCOOCP-D2Oxfw6G.js.map → requirementDiagram-Z7DCOOCP-aPcaPduF.js.map} +1 -1
  468. package/dist/{rough.esm-Czyj4U3Q.js → rough.esm-C9rQ9YkE.js} +1 -1
  469. package/dist/{rough.esm-Czyj4U3Q.js.map → rough.esm-C9rQ9YkE.js.map} +1 -1
  470. package/dist/{sankeyDiagram-WA2Y5GQK-q1_lwNBY.js → sankeyDiagram-WA2Y5GQK-CO_lUqQX.js} +5 -5
  471. package/dist/{sankeyDiagram-WA2Y5GQK-q1_lwNBY.js.map → sankeyDiagram-WA2Y5GQK-CO_lUqQX.js.map} +1 -1
  472. package/dist/{scroll-area-CR1iK8Af.js → scroll-area-C_oeG0js.js} +8 -8
  473. package/dist/{scroll-area-CR1iK8Af.js.map → scroll-area-C_oeG0js.js.map} +1 -1
  474. package/dist/{search-CrxnZfZ5.js → search-Cu20LdaQ.js} +2 -2
  475. package/dist/{search-CrxnZfZ5.js.map → search-Cu20LdaQ.js.map} +1 -1
  476. package/dist/security/index.d.ts +2 -0
  477. package/dist/security/index.d.ts.map +1 -1
  478. package/dist/security/index.js +7 -6
  479. package/dist/security/mitre-data.d.ts +38 -0
  480. package/dist/security/mitre-data.d.ts.map +1 -0
  481. package/dist/security-AzmGrY2-.js +77 -0
  482. package/dist/security-AzmGrY2-.js.map +1 -0
  483. package/dist/{select-BX7KT3VP.js → select-Bc7Gn3Oa.js} +19 -19
  484. package/dist/{select-BX7KT3VP.js.map → select-Bc7Gn3Oa.js.map} +1 -1
  485. package/dist/{separator-C6KfB7ww.js → separator-C-OWzLst.js} +3 -3
  486. package/dist/{separator-C6KfB7ww.js.map → separator-C-OWzLst.js.map} +1 -1
  487. package/dist/{sequenceDiagram-2WXFIKYE-BCEaH0s_.js → sequenceDiagram-2WXFIKYE-D7Vh1Zld.js} +9 -9
  488. package/dist/{sequenceDiagram-2WXFIKYE-BCEaH0s_.js.map → sequenceDiagram-2WXFIKYE-D7Vh1Zld.js.map} +1 -1
  489. package/dist/{series-DMc2ZYyj.js → series-DrBALkNS.js} +2 -2
  490. package/dist/{series-DMc2ZYyj.js.map → series-DrBALkNS.js.map} +1 -1
  491. package/dist/services/index.js +2 -2
  492. package/dist/services/sse-react.js +1 -1
  493. package/dist/services/sse.js +1 -1
  494. package/dist/services/theme-engine/engine.d.ts.map +1 -1
  495. package/dist/services/theme-engine/fonts.d.ts.map +1 -1
  496. package/dist/services/theme-engine/icons.d.ts.map +1 -1
  497. package/dist/services/theme-engine/index.js +120 -48
  498. package/dist/services/theme-engine/index.js.map +1 -1
  499. package/dist/services/theme-engine/test-helpers.d.ts +13 -0
  500. package/dist/services/theme-engine/test-helpers.d.ts.map +1 -0
  501. package/dist/services/toast-react.js +2 -2
  502. package/dist/sidebar/index.js +1 -1
  503. package/dist/{slider-CLgdcoKC.js → slider-CJoWbXQt.js} +10 -10
  504. package/dist/{slider-CLgdcoKC.js.map → slider-CJoWbXQt.js.map} +1 -1
  505. package/dist/{src-hxErHTV1.js → src-BhNgmpel.js} +2 -2
  506. package/dist/{src-hxErHTV1.js.map → src-BhNgmpel.js.map} +1 -1
  507. package/dist/{src-BEYP07TO.js → src-D1EMXotX.js} +1 -1
  508. package/dist/{src-BEYP07TO.js.map → src-D1EMXotX.js.map} +1 -1
  509. package/dist/{sse-D0HLjufB.js → sse-DCaj9UFJ.js} +1 -1
  510. package/dist/{sse-D0HLjufB.js.map → sse-DCaj9UFJ.js.map} +1 -1
  511. package/dist/{stateDiagram-RAJIS63D-B-Mu-_BR.js → stateDiagram-RAJIS63D-DdiY5cf3.js} +18 -18
  512. package/dist/{stateDiagram-RAJIS63D-B-Mu-_BR.js.map → stateDiagram-RAJIS63D-DdiY5cf3.js.map} +1 -1
  513. package/dist/stateDiagram-v2-FVOUBMTO-CAWy0Pkh.js +29 -0
  514. package/dist/{stateDiagram-v2-FVOUBMTO-Cnp2uGxd.js.map → stateDiagram-v2-FVOUBMTO-CAWy0Pkh.js.map} +1 -1
  515. package/dist/{storage-B-gK537W.js → storage-BUlr2J4R.js} +1 -1
  516. package/dist/{storage-B-gK537W.js.map → storage-BUlr2J4R.js.map} +1 -1
  517. package/dist/styles/layout.css +18 -18
  518. package/dist/styles/sidebar.css +31 -19
  519. package/dist/styles/tenant-ui.css +34 -34
  520. package/dist/styles/theme-engine.css +546 -23
  521. package/dist/styles/theme.css +1 -0
  522. package/dist/styles/tokens.css +69 -34
  523. package/dist/styles/ui.css +5 -5
  524. package/dist/{switch-CoTkNGEB.js → switch-Dcd3Fyw_.js} +7 -7
  525. package/dist/{switch-CoTkNGEB.js.map → switch-Dcd3Fyw_.js.map} +1 -1
  526. package/dist/{tabs-BT2WAQcK.js → tabs-8AT2ntg_.js} +8 -8
  527. package/dist/{tabs-BT2WAQcK.js.map → tabs-8AT2ntg_.js.map} +1 -1
  528. package/dist/theme-studio-CN9Ipb9W.js +236 -0
  529. package/dist/theme-studio-CN9Ipb9W.js.map +1 -0
  530. package/dist/{theme-toggle-Csyj-tLm.js → theme-toggle-glKWbKG8.js} +2 -2
  531. package/dist/{theme-toggle-Csyj-tLm.js.map → theme-toggle-glKWbKG8.js.map} +1 -1
  532. package/dist/{timeline-definition-YZTLITO2-B0SegHNN.js → timeline-definition-YZTLITO2-CjxxCuOg.js} +5 -5
  533. package/dist/{timeline-definition-YZTLITO2-B0SegHNN.js.map → timeline-definition-YZTLITO2-CjxxCuOg.js.map} +1 -1
  534. package/dist/{toast-DRNPdj-R.js → toast-CawTm-7V.js} +6 -6
  535. package/dist/{toast-DRNPdj-R.js.map → toast-CawTm-7V.js.map} +1 -1
  536. package/dist/{toggle-DJJEPXXE.js → toggle-C8sazHXX.js} +7 -7
  537. package/dist/{toggle-DJJEPXXE.js.map → toggle-C8sazHXX.js.map} +1 -1
  538. package/dist/{toggle-D-WMiAg3.js → toggle-IUUynh_v.js} +1 -1
  539. package/dist/{toggle-D-WMiAg3.js.map → toggle-IUUynh_v.js.map} +1 -1
  540. package/dist/{tooltip-DuC73a5E.js → tooltip-NKOSxS28.js} +11 -11
  541. package/dist/{tooltip-DuC73a5E.js.map → tooltip-NKOSxS28.js.map} +1 -1
  542. package/dist/{topology-C4Q_kT9X.js → topology-C8cyIHlB.js} +5 -5
  543. package/dist/{topology-C4Q_kT9X.js.map → topology-C8cyIHlB.js.map} +1 -1
  544. package/dist/treemap-KZPCXAKY-BvLvHb2t.js +3 -0
  545. package/dist/{triangle-alert-CKjGAvtd.js → triangle-alert-BtwDDOUp.js} +2 -2
  546. package/dist/{triangle-alert-CKjGAvtd.js.map → triangle-alert-BtwDDOUp.js.map} +1 -1
  547. package/dist/types/confidence.d.ts +66 -0
  548. package/dist/types/confidence.d.ts.map +1 -0
  549. package/dist/types/index.d.ts +2 -0
  550. package/dist/types/index.d.ts.map +1 -0
  551. package/dist/utils/index.d.ts +3 -0
  552. package/dist/utils/index.d.ts.map +1 -1
  553. package/dist/utils/index.js +6 -6
  554. package/dist/utils/sage-analysis.d.ts +51 -0
  555. package/dist/utils/sage-analysis.d.ts.map +1 -0
  556. package/dist/utils/score.d.ts +58 -0
  557. package/dist/utils/score.d.ts.map +1 -0
  558. package/dist/utils/status-tone.d.ts +4 -0
  559. package/dist/utils/status-tone.d.ts.map +1 -0
  560. package/dist/{utils-B7XIe3qq.js → utils-DcOSDVkb.js} +1 -1
  561. package/dist/{utils-B7XIe3qq.js.map → utils-DcOSDVkb.js.map} +1 -1
  562. package/dist/{utils-CHEq9Vpx.js → utils-JB2cYPor.js} +120 -2
  563. package/dist/utils-JB2cYPor.js.map +1 -0
  564. package/dist/{value-CybtvyUg.js → value-gSPnIECy.js} +2 -2
  565. package/dist/{value-CybtvyUg.js.map → value-gSPnIECy.js.map} +1 -1
  566. package/dist/{vennDiagram-LZ73GAT5-ClN0stHq.js → vennDiagram-LZ73GAT5-FqpGoq2s.js} +7 -7
  567. package/dist/{vennDiagram-LZ73GAT5-ClN0stHq.js.map → vennDiagram-LZ73GAT5-FqpGoq2s.js.map} +1 -1
  568. package/dist/visualization/mermaid-diagram/index.js +1 -1
  569. package/dist/{x-BleQvk5v.js → x-D2ovnRiN.js} +2 -2
  570. package/dist/{x-BleQvk5v.js.map → x-D2ovnRiN.js.map} +1 -1
  571. package/dist/{xychartDiagram-JWTSCODW-DjFaG2VD.js → xychartDiagram-JWTSCODW-BNEAK79X.js} +10 -10
  572. package/dist/{xychartDiagram-JWTSCODW-DjFaG2VD.js.map → xychartDiagram-JWTSCODW-BNEAK79X.js.map} +1 -1
  573. package/package.json +1 -1
  574. package/src/components/theme/accent-switcher.ts +9 -2
  575. package/src/components/theme/density-switcher.ts +7 -1
  576. package/src/components/theme/font-stack-picker.ts +7 -1
  577. package/src/components/theme/glass-slider.ts +19 -8
  578. package/src/components/theme/icon-gallery-browser.ts +191 -0
  579. package/src/components/theme/icon-set-picker.ts +19 -8
  580. package/src/components/theme/icon-usage-matrix.ts +15 -1
  581. package/src/components/theme/radius-slider.ts +14 -6
  582. package/src/components/theme/theme-preset-grid.ts +8 -2
  583. package/src/components/theme/theme-preview-tile.ts +11 -3
  584. package/src/components/theme/theme-studio-review.test.ts +253 -0
  585. package/src/components/theme/theme-studio.ts +100 -61
  586. package/src/components/theme/theme-switcher.ts +7 -1
  587. package/src/index.ts +11 -0
  588. package/src/react/layout/browser-layout.tsx +54 -0
  589. package/src/react/layout/detail-header.tsx +42 -0
  590. package/src/react/layout/index.ts +4 -0
  591. package/src/react/layout/page-frame.tsx +32 -0
  592. package/src/react/layout/sub-nav.tsx +72 -0
  593. package/src/react/primitives/chart-frame.tsx +51 -0
  594. package/src/react/primitives/chat-drawer.tsx +94 -0
  595. package/src/react/primitives/chat-input.tsx +134 -0
  596. package/src/react/primitives/dashboard-metric-card.tsx +78 -0
  597. package/src/react/primitives/data-field.tsx +54 -0
  598. package/src/react/primitives/index.ts +13 -0
  599. package/src/react/primitives/notification-center.tsx +3 -3
  600. package/src/react/primitives/query-boundary.tsx +71 -0
  601. package/src/react/primitives/score-ring.tsx +78 -0
  602. package/src/react/primitives/section-panel.tsx +42 -0
  603. package/src/security/index.ts +4 -0
  604. package/src/security/mitre-data.ts +60 -0
  605. package/src/services/theme-engine/engine.test.ts +3 -25
  606. package/src/services/theme-engine/engine.ts +35 -9
  607. package/src/services/theme-engine/fonts.ts +4 -0
  608. package/src/services/theme-engine/icons.ts +76 -9
  609. package/src/services/theme-engine/palettes.ts +2 -2
  610. package/src/services/theme-engine/test-helpers.ts +37 -0
  611. package/src/styles/layout.css +18 -18
  612. package/src/styles/sidebar.css +31 -19
  613. package/src/styles/tenant-ui.css +34 -34
  614. package/src/styles/theme-engine.css +546 -23
  615. package/src/styles/theme.css +1 -0
  616. package/src/styles/tokens.css +69 -34
  617. package/src/styles/ui.css +5 -5
  618. package/src/types/confidence.ts +72 -0
  619. package/src/types/index.ts +9 -0
  620. package/src/utils/__tests__/sage-analysis.test.ts +41 -0
  621. package/src/utils/__tests__/score.test.ts +232 -0
  622. package/src/utils/__tests__/status-tone.test.ts +164 -0
  623. package/src/utils/index.ts +29 -0
  624. package/src/utils/sage-analysis.ts +62 -0
  625. package/src/utils/score.ts +123 -0
  626. package/src/utils/status-tone.ts +48 -0
  627. package/dist/architecture-PBZL5I3N-gCfUhEfQ.js +0 -3
  628. package/dist/classDiagram-VBA2DB6C-DFfohpM0.js +0 -31
  629. package/dist/classDiagram-v2-RAHNMMFH-kUMm28FB.js +0 -31
  630. package/dist/components/theme/theme-studio.js.map +0 -1
  631. package/dist/dist-DGayZ3ok2.js.map +0 -1
  632. package/dist/gitGraph-HDMCJU4V--53HTu2M.js +0 -3
  633. package/dist/info-3K5VOQVL-CmVeZuiG.js +0 -3
  634. package/dist/packet-RMMSAZCW-jFj7IW8A.js +0 -3
  635. package/dist/pie-UPGHQEXC-osqmeuax.js +0 -3
  636. package/dist/radar-KQ55EAFF-Dj2g5Z-W.js +0 -3
  637. package/dist/stateDiagram-v2-FVOUBMTO-Cnp2uGxd.js +0 -29
  638. package/dist/treemap-KZPCXAKY-DQ1GEudW.js +0 -3
  639. package/dist/utils-CHEq9Vpx.js.map +0 -1
@@ -0,0 +1,78 @@
1
+ import { forwardRef, type HTMLAttributes, type ReactNode } from 'react'
2
+ import { cn } from './utils'
3
+
4
+ export interface ScoreRingProps extends HTMLAttributes<HTMLDivElement> {
5
+ score: number
6
+ size?: number
7
+ radius?: number
8
+ strokeWidth?: number
9
+ stroke?: string
10
+ trackStroke?: string
11
+ children?: ReactNode
12
+ }
13
+
14
+ const ScoreRing = forwardRef<HTMLDivElement, ScoreRingProps>(
15
+ (
16
+ {
17
+ score,
18
+ size = 132,
19
+ radius = 56,
20
+ strokeWidth = 6,
21
+ stroke = 'currentColor',
22
+ trackStroke = 'var(--border-2)',
23
+ className,
24
+ children,
25
+ style,
26
+ ...props
27
+ },
28
+ ref
29
+ ) => {
30
+ const clamped = Math.max(0, Math.min(100, score))
31
+ const circumference = 2 * Math.PI * radius
32
+ const offset = circumference - (clamped / 100) * circumference
33
+ const center = size / 2
34
+
35
+ return (
36
+ <div
37
+ ref={ref}
38
+ className={cn('relative inline-flex items-center justify-center', className)}
39
+ style={{ ...style, width: size, height: size }}
40
+ {...props}
41
+ >
42
+ <svg
43
+ width={size}
44
+ height={size}
45
+ viewBox={`0 0 ${size} ${size}`}
46
+ className="-rotate-90"
47
+ aria-hidden="true"
48
+ >
49
+ <circle
50
+ cx={center}
51
+ cy={center}
52
+ r={radius}
53
+ fill="none"
54
+ stroke={trackStroke}
55
+ strokeWidth={strokeWidth}
56
+ />
57
+ <circle
58
+ cx={center}
59
+ cy={center}
60
+ r={radius}
61
+ fill="none"
62
+ stroke={stroke}
63
+ strokeWidth={strokeWidth}
64
+ strokeLinecap="round"
65
+ strokeDasharray={circumference}
66
+ strokeDashoffset={offset}
67
+ className="transition-[stroke-dashoffset] duration-500 ease-out"
68
+ />
69
+ </svg>
70
+ {children && (
71
+ <div className="absolute inset-0 flex items-center justify-center">{children}</div>
72
+ )}
73
+ </div>
74
+ )
75
+ }
76
+ )
77
+ ScoreRing.displayName = 'ScoreRing'
78
+ export { ScoreRing }
@@ -0,0 +1,42 @@
1
+ import { forwardRef, type HTMLAttributes, type ReactNode } from 'react'
2
+ import { cn } from './utils'
3
+
4
+ export interface SectionPanelProps extends Omit<HTMLAttributes<HTMLDivElement>, 'title'> {
5
+ title: string
6
+ icon?: ReactNode
7
+ variant?: 'glass' | 'default'
8
+ headerRight?: ReactNode
9
+ children: ReactNode
10
+ }
11
+
12
+ const SectionPanel = forwardRef<HTMLDivElement, SectionPanelProps>(
13
+ ({ title, icon, variant = 'glass', headerRight, className, children, ...props }, ref) => {
14
+ const isGlass = variant === 'glass'
15
+ return (
16
+ <div
17
+ ref={ref}
18
+ className={cn(
19
+ 'rounded-xl border',
20
+ isGlass
21
+ ? 'border-border-glass bg-glass'
22
+ : 'border-border bg-card text-card-foreground shadow-sm',
23
+ className
24
+ )}
25
+ {...props}
26
+ >
27
+ <div className="flex items-center gap-3 border-b border-inherit px-4 py-3">
28
+ {icon && (
29
+ <div className="flex h-8 w-8 shrink-0 items-center justify-center rounded-lg bg-foreground/[0.06] text-foreground-secondary [&>svg]:size-4">
30
+ {icon}
31
+ </div>
32
+ )}
33
+ <h3 className="text-foreground text-sm font-semibold">{title}</h3>
34
+ {headerRight && <div className="ml-auto">{headerRight}</div>}
35
+ </div>
36
+ <div className="p-4">{children}</div>
37
+ </div>
38
+ )
39
+ }
40
+ )
41
+ SectionPanel.displayName = 'SectionPanel'
42
+ export { SectionPanel }
@@ -3,6 +3,10 @@
3
3
  * @countermeasure/web-components/security
4
4
  */
5
5
 
6
+ // MITRE ATT&CK reference data
7
+ export { MITRE_TACTICS, TACTIC_SHORT_NAMES, TACTIC_IDS_BY_NAME } from './mitre-data'
8
+ export type { MitreTacticDef } from './mitre-data'
9
+
6
10
  // CvssBadge
7
11
  export { CvssBadge } from './cvss-badge/index'
8
12
  export type { CvssBadgeConfig } from './cvss-badge/types'
@@ -0,0 +1,60 @@
1
+ /**
2
+ * MITRE ATT&CK Reference Data
3
+ *
4
+ * Shared constants for all 14 ATT&CK Enterprise tactics.
5
+ * Canonical source of tactic IDs, names, and abbreviations
6
+ * consumed by tenant-ui, threat-library, and web-components.
7
+ *
8
+ * @countermeasure/web-components/security/mitre-data
9
+ */
10
+
11
+ /** A single MITRE ATT&CK tactic definition */
12
+ export interface MitreTacticDef {
13
+ /** ATT&CK tactic ID (e.g. TA0001) */
14
+ readonly id: string
15
+ /** Full tactic name (e.g. "Initial Access") */
16
+ readonly name: string
17
+ /** Abbreviated name for compact UIs (e.g. "Initial") */
18
+ readonly shortName: string
19
+ }
20
+
21
+ /**
22
+ * All 14 MITRE ATT&CK Enterprise tactics in kill-chain order.
23
+ *
24
+ * Order follows the official ATT&CK matrix:
25
+ * Reconnaissance -> Resource Development -> Initial Access -> ... -> Impact
26
+ */
27
+ export const MITRE_TACTICS: readonly MitreTacticDef[] = [
28
+ { id: 'TA0043', name: 'Reconnaissance', shortName: 'Recon' },
29
+ { id: 'TA0042', name: 'Resource Development', shortName: 'Resource' },
30
+ { id: 'TA0001', name: 'Initial Access', shortName: 'Initial' },
31
+ { id: 'TA0002', name: 'Execution', shortName: 'Exec' },
32
+ { id: 'TA0003', name: 'Persistence', shortName: 'Persist' },
33
+ { id: 'TA0004', name: 'Privilege Escalation', shortName: 'PrivEsc' },
34
+ { id: 'TA0005', name: 'Defense Evasion', shortName: 'DefEvas' },
35
+ { id: 'TA0006', name: 'Credential Access', shortName: 'Creds' },
36
+ { id: 'TA0007', name: 'Discovery', shortName: 'Disc' },
37
+ { id: 'TA0008', name: 'Lateral Movement', shortName: 'LatMov' },
38
+ { id: 'TA0009', name: 'Collection', shortName: 'Collect' },
39
+ { id: 'TA0011', name: 'Command and Control', shortName: 'C2' },
40
+ { id: 'TA0010', name: 'Exfiltration', shortName: 'Exfil' },
41
+ { id: 'TA0040', name: 'Impact', shortName: 'Impact' },
42
+ ] as const
43
+
44
+ /**
45
+ * Map of full tactic name to its short abbreviation.
46
+ *
47
+ * Example: `TACTIC_SHORT_NAMES['Defense Evasion']` -> `'DefEvas'`
48
+ */
49
+ export const TACTIC_SHORT_NAMES: Readonly<Record<string, string>> = Object.fromEntries(
50
+ MITRE_TACTICS.map((t) => [t.name, t.shortName]),
51
+ )
52
+
53
+ /**
54
+ * Map of full tactic name to its ATT&CK ID.
55
+ *
56
+ * Example: `TACTIC_IDS_BY_NAME['Initial Access']` -> `'TA0001'`
57
+ */
58
+ export const TACTIC_IDS_BY_NAME: Readonly<Record<string, string>> = Object.fromEntries(
59
+ MITRE_TACTICS.map((t) => [t.name, t.id]),
60
+ )
@@ -2,7 +2,6 @@ import { afterEach, beforeEach, describe, expect, it } from 'vitest'
2
2
 
3
3
  import { FONT_STACKS, THEME_PRESETS, defaultTheme, ensureGoogleFont } from './index'
4
4
  import {
5
- _resetCache,
6
5
  applyTheme,
7
6
  bootstrapTheme,
8
7
  findActivePresetId,
@@ -11,35 +10,14 @@ import {
11
10
  resetTheme,
12
11
  setThemeFull,
13
12
  setThemePartial,
14
- teardownTheme,
15
13
  THEME_LS_KEY,
16
14
  } from './engine'
15
+ import { setupThemeTest, teardownThemeTest } from './test-helpers'
17
16
  import type { Theme } from './types'
18
17
 
19
- function resetDom(): void {
20
- document.documentElement.removeAttribute('data-theme')
21
- document.documentElement.removeAttribute('data-accent')
22
- document.documentElement.removeAttribute('data-density')
23
- document.documentElement.removeAttribute('data-icon-set')
24
- document.documentElement.removeAttribute('style')
25
- document.head.innerHTML = ''
26
- document.body.innerHTML = ''
27
- }
28
-
29
18
  describe('theme engine', () => {
30
- beforeEach(() => {
31
- localStorage.clear()
32
- teardownTheme()
33
- _resetCache()
34
- resetDom()
35
- })
36
-
37
- afterEach(() => {
38
- teardownTheme()
39
- _resetCache()
40
- localStorage.clear()
41
- resetDom()
42
- })
19
+ beforeEach(() => setupThemeTest(false))
20
+ afterEach(() => teardownThemeTest())
43
21
 
44
22
  it('loads the default preset and returns a detached clone', () => {
45
23
  const first = defaultTheme()
@@ -80,15 +80,28 @@ export function loadTheme(): Theme {
80
80
  }
81
81
  }
82
82
 
83
+ function sanitizeThemeEnums(theme: Theme): Theme {
84
+ const has = Object.prototype.hasOwnProperty
85
+ let t = theme
86
+ if (!has.call(COLOR_MODES, t.mode)) t = { ...t, mode: 'dark' }
87
+ if (!has.call(ACCENT_PALETTES, t.accent)) t = { ...t, accent: 'orange' }
88
+ if (!has.call(FONT_STACKS, t.font)) t = { ...t, font: 'inter' }
89
+ if (!has.call(ICON_SETS, t.iconSet)) t = { ...t, iconSet: 'lucide' }
90
+ const validDensities = ['compact', 'comfortable', 'cozy'] as const
91
+ if (!validDensities.includes(t.density)) t = { ...t, density: 'comfortable' }
92
+ return t
93
+ }
94
+
83
95
  export function saveTheme(theme: Theme): void {
96
+ const sanitized = sanitizeThemeEnums(theme)
84
97
  try {
85
98
  if (typeof localStorage !== 'undefined') {
86
- localStorage.setItem(THEME_LS_KEY, JSON.stringify(theme))
99
+ localStorage.setItem(THEME_LS_KEY, JSON.stringify(sanitized))
87
100
  }
88
101
  } catch {
89
102
  /* ignore */
90
103
  }
91
- applyTheme(theme)
104
+ applyTheme(sanitized)
92
105
  }
93
106
 
94
107
  // ---------------------------------------------------------------------------
@@ -140,11 +153,16 @@ export function applyTheme(theme: Theme): void {
140
153
  root.style.setProperty('--bg-glass-2', `rgba(${tint}, ${t.toFixed(4)})`)
141
154
  root.style.setProperty('--bg-glass-3', `rgba(${tint}, ${(t * 1.75).toFixed(4)})`)
142
155
 
143
- // 5) Brand / accent
144
- root.style.setProperty('--brand', accent.brand)
145
- root.style.setProperty('--brand-hot', accent.hot)
146
- root.style.setProperty('--brand-soft', accent.soft)
147
- root.style.setProperty('--accent-rgb', accent.rgb)
156
+ // 5) Brand / accent — Monokai overrides emerald with its signature green
157
+ const isMonokai = theme.mode === 'monokai'
158
+ const brandColor = isMonokai && theme.accent === 'emerald' ? '#a6e22e' : accent.brand
159
+ const brandHot = isMonokai && theme.accent === 'emerald' ? '#b8e85b' : accent.hot
160
+ const brandSoft = isMonokai && theme.accent === 'emerald' ? 'rgba(166,226,46,0.12)' : accent.soft
161
+ const brandRgb = isMonokai && theme.accent === 'emerald' ? '166,226,46' : accent.rgb
162
+ root.style.setProperty('--brand', brandColor)
163
+ root.style.setProperty('--brand-hot', brandHot)
164
+ root.style.setProperty('--brand-soft', brandSoft)
165
+ root.style.setProperty('--accent-rgb', brandRgb)
148
166
 
149
167
  // 6) Radius
150
168
  const r = clamp(Number(theme.radius) || 0, 0, 32)
@@ -153,9 +171,17 @@ export function applyTheme(theme: Theme): void {
153
171
  root.style.setProperty('--radius-lg', `${r * 1.5}px`)
154
172
  root.style.setProperty('--radius-xl', `${r * 2}px`)
155
173
 
156
- // 7) Density row height
157
- const rowHeight = theme.density === 'compact' ? 32 : theme.density === 'cozy' ? 42 : 36
174
+ // 7) Density tokens
175
+ const isCompact = theme.density === 'compact'
176
+ const isCozy = theme.density === 'cozy'
177
+ const rowHeight = isCompact ? 32 : isCozy ? 42 : 36
158
178
  root.style.setProperty('--density-row', `${rowHeight}px`)
179
+ root.style.setProperty('--density-padding-y', isCompact ? '0.375rem' : isCozy ? '0.75rem' : '0.55rem')
180
+ root.style.setProperty('--density-padding-x', isCompact ? '0.5rem' : isCozy ? '1rem' : '0.75rem')
181
+ root.style.setProperty('--density-gap', isCompact ? '0.25rem' : isCozy ? '0.625rem' : '0.5rem')
182
+ root.style.setProperty('--density-section-gap', isCompact ? '0.5rem' : isCozy ? '1.25rem' : '1rem')
183
+ root.style.setProperty('--density-font', isCompact ? '0.8125rem' : isCozy ? '0.9375rem' : '0.875rem')
184
+ root.style.setProperty('--density-icon', isCompact ? '1.75rem' : isCozy ? '2.5rem' : '2.25rem')
159
185
 
160
186
  // 8) Typography (lazy-load Google fonts, then write CSS vars)
161
187
  ensureGoogleFont(font.google)
@@ -74,5 +74,9 @@ export function ensureGoogleFont(spec: string | null): void {
74
74
  .map(s => `family=${s}`)
75
75
  .join('&') +
76
76
  '&display=swap'
77
+ link.onerror = () => {
78
+ link.remove()
79
+ // Allow retry by removing the element so the ID check passes next time
80
+ }
77
81
  document.head.appendChild(link)
78
82
  }
@@ -56,23 +56,90 @@ export const ICON_SETS: Record<IconSetId, IconSet> = {
56
56
 
57
57
  /** Brand glyph paths — used when `iconSet === 'countermeasure'`. */
58
58
  export const CM_ICON_PATHS: Record<string, string> = {
59
+ // Shields & security
59
60
  Shield: 'M12 2l9 4-3 11-6 5-6-5-3-11z M12 7v10 M7.5 10l9 4 M16.5 10l-9 4',
60
61
  ShieldCheck: 'M12 2l9 4-3 11-6 5-6-5-3-11z M8.5 12l3 3 4-5',
61
62
  Crosshair:
62
- 'M12 12m-9 0a9 9 0 1 0 18 0 9 9 0 1 0-18 0 M12 12m-5 0a5 5 0 1 0 10 0 5 5 0 1 0-10 0 M22 12h-2 M4 12H2 M12 4V2 M12 22v-2 M12 12v.01',
63
+ 'M12 2l9 5v10l-9 5-9-5V7z M12 7l5 5-5 5-5-5z M22 12h-2 M4 12H2 M12 4V2 M12 22v-2 M12 12v.01',
64
+ Target:
65
+ 'M12 2l9 5v10l-9 5-9-5V7z M12 7l5 5-5 5-5-5z M12 10l2 2-2 2-2-2z',
66
+ Lock: 'M5 11h14v10H5z M8 11V7l4-5 4 5v4 M12 15l1 2h-2z',
67
+ KeyRound: 'M16 2l5 5-3 3-2-1-2 2-1-1-2 2H9v-2l7-8z M9 13v4h3',
68
+ Eye: 'M2 12l4-6h12l4 6-4 6H6z M12 9l3 3-3 3-3-3z',
69
+
70
+ // Status — hexagonal frames
71
+ CircleCheck: 'M12 2l9 5v10l-9 5-9-5V7z M9 12l2 2 4-4',
72
+ CircleX: 'M12 2l9 5v10l-9 5-9-5V7z M9 9l6 6 M15 9l-6 6',
73
+ CircleAlert: 'M12 2l9 5v10l-9 5-9-5V7z M12 8v5 M12 16h.01',
74
+ TriangleAlert: 'M12 2l10 18H2z M12 9v5 M12 17h.01',
75
+
76
+ // Threat & intel
63
77
  Bug: 'M12 3l4 5h-8z M12 8v13 M5 12l-2 2 2 2 M19 12l2 2-2 2 M8 21h8',
78
+ Skull: 'M12 3l8 7v6l-3 3v3h-2v-3h-2v3h-2v-3h-2v3H7v-3l-3-3v-6z M9 12h.01 M15 12h.01',
79
+ Radar: 'M12 2l10 10-10 10L2 12z M12 7l5 5-5 5-5-5z M12 12v.01',
80
+ Siren: 'M7 18l3-6h4l3 6z M12 2v4 M5 7l2 3 M19 7l-2 3 M4 21h16',
81
+
82
+ // Data & infrastructure
64
83
  Database: 'M4 4h16v5H4z M4 9.5h16v5H4z M4 15h16v5H4z M9 6.5h.01 M9 12h.01 M9 17.5h.01',
65
- Plug: 'M12 2l4 4-4 4-4-4z M12 10v4 M9 14h6v3a3 3 0 0 1-3 3 3 3 0 0 1-3-3z',
84
+ Server: 'M3 3h18v7H3z M3 14h18v7H3z M7 6.5h.01 M7 17.5h.01 M17 6.5h-4 M17 17.5h-4',
85
+ Network: 'M9 2h6v5H9z M3 17h6v5H3z M15 17h6v5h-6z M12 7v4 M6 17v-3l6-3 6 3v3',
86
+ Globe: 'M12 2l9 5v10l-9 5-9-5V7z M12 2v20 M3 7l9 5 9-5 M3 17l9-5 9 5',
87
+
88
+ // Navigation & actions
89
+ Search: 'M11 4l5 3v6l-5 3-5-3V7z M20 21l-4-4',
90
+ Plus: 'M12 5v14 M5 12h14',
91
+ X: 'M6 6l12 12 M18 6L6 18',
92
+ ChevronDown: 'M5 9l7 7 7-7',
93
+ ChevronRight: 'M9 5l7 7-7 7',
94
+ Maximize2: 'M15 3h6v6 M3 15v6h6 M21 3l-7 7 M3 21l7-7',
95
+ ArrowUpRight: 'M7 7h10v10 M7 17L17 7',
96
+ Download: 'M12 3v13 M6 11l6 6 6-6 M4 21h16',
97
+ RefreshCw: 'M4 8h4V4 M20 16h-4v4 M8 4l8 0 4 4 M16 20l-8 0-4-4',
98
+ LogOut: 'M14 3h5v18h-5 M3 12h12 M11 8l4 4-4 4',
99
+ PanelLeftClose: 'M3 3h18v18H3z M9 3v18 M16 15l-3-3 3-3',
100
+
101
+ // Connectors & workflow
102
+ Plug: 'M12 2l4 4-4 4-4-4z M12 10v4 M9 14h6v3l-3 4-3-4z',
103
+ Workflow: 'M3 3h6v6H3z M15 15h6v6h-6z M21 3h-6v6h6z M6 9v3l6 3 6-3V9',
104
+ GitBranch: 'M6 3v12 M18 3v6 M6 18l3-3h6l3-3',
105
+
106
+ // Files & content
107
+ FileCode2: 'M6 2h8l5 5v14H6V2z M14 2v5h5 M10 13l-2 2 2 2 M14 13l2 2-2 2',
108
+ FileText: 'M6 2h8l5 5v14H6V2z M14 2v5h5 M9 13h6 M9 17h4',
109
+ Folder: 'M2 7l2-4h7l2 2h7l2 2v13H2z',
110
+ BookOpen: 'M2 3h8l2 2 2-2h8v16h-8l-2 2-2-2H2z M12 5v16',
111
+ Tag: 'M2 4h9l10 8-6 6-10-8V4z M6 8h.01',
112
+ Package: 'M12 2l9 5v10l-9 5-9-5V7z M12 12l9-5 M12 12v10 M12 12L3 7',
113
+ Boxes: 'M2 7l5-3 5 3v6l-5 3-5-3z M12 7l5-3 5 3v6l-5 3-5-3z M7 13l5 3 5-3',
114
+
115
+ // Analytics & data viz
116
+ BarChart3: 'M3 3v18h18 M8 21v-7 M13 21V8 M18 21v-4',
117
+ Gauge: 'M4 19l4-7 4 2 4-9 4 3 M2 21h20',
118
+ ListFilter: 'M2 5h20 M6 12h12 M9 19h6',
119
+ Grid3X3: 'M2 2h20v20H2z M2 9h20 M2 16h20 M9 2v20 M16 2v20',
120
+ LayoutGrid: 'M3 3h8v8H3z M13 3h8v8h-8z M3 13h8v8H3z M13 13h8v8h-8z',
121
+
122
+ // Tools & settings
123
+ Settings:
124
+ 'M12 2l1.5 2.6L16 4l.5 3 3 .5L19 10l2.6 1.5L20 14l1 3-3 1-1 3-3-1-1.5 2.6L11 20l-1 2-3-1L6 18l-3-1 1-3-2.6-1.5L4 11 2 9.5 5 8l-1-3 3-1z M12 9l3 3-3 3-3-3z',
125
+ Cog: 'M12 2v2 M12 20v2 M4.93 4.93l1.41 1.41 M17.66 17.66l1.41 1.41 M2 12h2 M20 12h2 M4.93 19.07l1.41-1.41 M17.66 6.34l1.41-1.41 M12 8l4 4-4 4-4-4z',
126
+
127
+ // Objects & concepts
128
+ Lightbulb: 'M12 3l5 6-5 8-5-8z M9 18h6 M10 21h4',
66
129
  Sparkles: 'M12 2l3 7 7 3-7 3-3 7-3-7-7-3 7-3z',
67
130
  Rocket: 'M12 2l5 8h-3v8h-4v-8H7z M9 22h6',
68
- Settings:
69
- 'M12 2l1.5 2.6L16 4l.5 3 3 .5L19 10l2.6 1.5L20 14l1 3-3 1-1 3-3-1-1.5 2.6L11 20l-1 2-3-1L6 18l-3-1 1-3-2.6-1.5L4 11 2 9.5 5 8l-1-3 3-1z M12 12m-3 0a3 3 0 1 0 6 0 3 3 0 1 0-6 0',
70
131
  Activity: 'M2 12h4l3 8 3-16 3 8 3-4h4',
71
- Skull: 'M12 3l8 7v6l-3 3v3h-2v-3h-2v3h-2v-3h-2v3H7v-3l-3-3v-6z M9 12h.01 M15 12h.01',
72
- Lightbulb: 'M12 3l5 6-5 8-5-8z M9 18h6 M10 21h4',
73
- Target:
74
- 'M12 12m-10 0a10 10 0 1 0 20 0 10 10 0 1 0-20 0 M12 12m-5 0a5 5 0 1 0 10 0 5 5 0 1 0-10 0 M12 7l3 3 M12 17l3-3',
75
- Globe: 'M12 2l9 5v10l-9 5-9-5V7z M12 2v20 M3 7l9 5 9-5 M3 17l9-5 9 5',
132
+ Layers: 'M12 2l10 5-10 5L2 7z M2 12l10 5 10-5 M2 17l10 5 10-5',
133
+ Sun: 'M12 6l5 3v6l-5 3-5-3V9z M12 2v2 M12 20v2 M4 4l1.5 1.5 M18.5 18.5L20 20 M2 12h2 M20 12h2 M4 20l1.5-1.5 M18.5 5.5L20 4',
134
+ Clock: 'M12 2l9 5v10l-9 5-9-5V7z M12 7v5l3 3',
135
+ History: 'M12 2l9 5v10l-9 5-9-5V7z M12 7v5l3 2 M3 4l1 4h3',
136
+
137
+ // People & places
138
+ Users: 'M8 10l4 3-4 3V10z M14 7l4 3-4 3V7z M4 21v-2l4-2 4 2 4-2 4 2v2',
139
+ Building2: 'M6 22V4l6-2 6 2v18 M2 22h20 M10 8h4 M10 12h4 M10 16h4',
140
+
141
+ // Code & dev
142
+ Code2: 'M8 4L2 12l6 8 M16 4l6 8-6 8',
76
143
  }
77
144
 
78
145
  /** Semantic icon-usage slots driving the per-icon override matrix. */
@@ -25,8 +25,8 @@ export const COLOR_MODES: Record<ColorMode, ColorModeMeta> = {
25
25
  id: 'monokai',
26
26
  label: 'Monokai',
27
27
  icon: 'Code2',
28
- swatch: ['#0a0a0a', '#1a1a1a', '#272822'],
29
- surfaceTint: '255, 255, 255',
28
+ swatch: ['#272822', '#3e3d32', '#49483e'],
29
+ surfaceTint: '248, 248, 242',
30
30
  },
31
31
  glass: {
32
32
  id: 'glass',
@@ -0,0 +1,37 @@
1
+ /**
2
+ * Shared test utilities for theme-engine tests.
3
+ *
4
+ * Provides common DOM reset, setup, and teardown helpers used across
5
+ * theme-studio-review.test.ts and engine.test.ts.
6
+ */
7
+
8
+ import { _resetCache, applyTheme, teardownTheme } from './engine'
9
+ import { defaultTheme } from './presets'
10
+
11
+ /** Strip all theme-related attributes and content from the document. */
12
+ export function resetDom(): void {
13
+ document.head.innerHTML = ''
14
+ document.body.innerHTML = ''
15
+ document.documentElement.removeAttribute('data-theme')
16
+ document.documentElement.removeAttribute('data-accent')
17
+ document.documentElement.removeAttribute('data-density')
18
+ document.documentElement.removeAttribute('data-icon-set')
19
+ document.documentElement.removeAttribute('style')
20
+ }
21
+
22
+ /** Clear storage, reset engine cache, reset DOM, optionally apply the default theme. */
23
+ export function setupThemeTest(applyDefault = true): void {
24
+ localStorage.clear()
25
+ teardownTheme()
26
+ _resetCache()
27
+ resetDom()
28
+ if (applyDefault) applyTheme(defaultTheme())
29
+ }
30
+
31
+ /** Disconnect observer, reset cache, clear storage, reset DOM. */
32
+ export function teardownThemeTest(): void {
33
+ teardownTheme()
34
+ _resetCache()
35
+ localStorage.clear()
36
+ resetDom()
37
+ }
@@ -247,8 +247,8 @@
247
247
  display: flex;
248
248
  height: 100%;
249
249
  flex-direction: column;
250
- gap: 1rem;
251
- padding: 1rem 0.75rem;
250
+ gap: var(--density-section-gap);
251
+ padding: var(--density-section-gap) var(--density-padding-x);
252
252
  }
253
253
 
254
254
  /* Sidebar Brand */
@@ -342,7 +342,7 @@
342
342
  }
343
343
 
344
344
  .cmm-sidebar__group {
345
- padding: 0.75rem 0.75rem 0.25rem;
345
+ padding: var(--density-padding-y) var(--density-padding-x) 0.25rem;
346
346
  }
347
347
 
348
348
  .cmm-sidebar__heading {
@@ -364,10 +364,10 @@
364
364
  position: relative;
365
365
  display: flex;
366
366
  align-items: center;
367
- gap: 0.75rem;
367
+ gap: var(--density-gap);
368
368
  border-radius: 0.75rem;
369
- padding: 0.625rem 0.75rem;
370
- font-size: 0.875rem;
369
+ padding: var(--density-padding-y) var(--density-padding-x);
370
+ font-size: var(--density-font);
371
371
  font-weight: 500;
372
372
  transition: all var(--transition-normal);
373
373
  color: hsl(var(--muted-foreground));
@@ -411,8 +411,8 @@
411
411
  /* Navigation Icons */
412
412
  .cmm-sidebar__icon {
413
413
  display: inline-flex;
414
- height: 2.25rem;
415
- width: 2.25rem;
414
+ height: var(--density-icon);
415
+ width: var(--density-icon);
416
416
  flex-shrink: 0;
417
417
  align-items: center;
418
418
  justify-content: center;
@@ -437,7 +437,7 @@
437
437
  overflow: hidden;
438
438
  text-overflow: ellipsis;
439
439
  white-space: nowrap;
440
- font-size: 0.875rem;
440
+ font-size: var(--density-font);
441
441
  font-weight: 500;
442
442
  line-height: 1.2;
443
443
  }
@@ -459,9 +459,9 @@
459
459
  .cmm-user-menu__trigger {
460
460
  display: flex;
461
461
  align-items: center;
462
- gap: 0.75rem;
462
+ gap: var(--density-gap);
463
463
  width: 100%;
464
- padding: 0.5rem;
464
+ padding: var(--density-padding-y);
465
465
  border-radius: 0.75rem;
466
466
  background: transparent;
467
467
  border: none;
@@ -476,15 +476,15 @@
476
476
 
477
477
  .cmm-user-menu__avatar {
478
478
  display: flex;
479
- height: 2.25rem;
480
- width: 2.25rem;
479
+ height: var(--density-icon);
480
+ width: var(--density-icon);
481
481
  align-items: center;
482
482
  justify-content: center;
483
483
  border-radius: 0.5rem;
484
484
  background: linear-gradient(to bottom right, hsl(var(--gradient-from)), hsl(var(--gradient-to)));
485
485
  color: white;
486
486
  font-weight: 600;
487
- font-size: 0.875rem;
487
+ font-size: var(--density-font);
488
488
  }
489
489
 
490
490
  .cmm-user-menu__info {
@@ -547,10 +547,10 @@
547
547
  .cmm-user-menu__dropdown-item {
548
548
  display: flex;
549
549
  align-items: center;
550
- gap: 0.75rem;
550
+ gap: var(--density-gap);
551
551
  width: 100%;
552
- padding: 0.75rem 1rem;
553
- font-size: 0.875rem;
552
+ padding: var(--density-padding-y) var(--density-padding-x);
553
+ font-size: var(--density-font);
554
554
  color: hsl(var(--foreground));
555
555
  background: transparent;
556
556
  border: none;
@@ -601,7 +601,7 @@
601
601
  align-items: center;
602
602
  justify-content: space-between;
603
603
  width: 100%;
604
- padding: 0.75rem 1rem;
604
+ padding: var(--density-padding-y) var(--density-padding-x);
605
605
  background: transparent;
606
606
  border: none;
607
607
  cursor: pointer;