@countermeasure-platform/web-components 1.2.1-dev.4.1 → 1.2.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,164 @@
1
+ import { describe, expect, it } from 'vitest'
2
+ import { statusToneFromSeverity, statusToneFromState } from '../status-tone'
3
+
4
+ describe('statusToneFromSeverity', () => {
5
+ it('returns rose for critical', () => {
6
+ expect(statusToneFromSeverity('critical')).toBe('rose')
7
+ })
8
+
9
+ it('returns orange for high', () => {
10
+ expect(statusToneFromSeverity('high')).toBe('orange')
11
+ })
12
+
13
+ it('returns amber for medium', () => {
14
+ expect(statusToneFromSeverity('medium')).toBe('amber')
15
+ })
16
+
17
+ it('returns cyan for low', () => {
18
+ expect(statusToneFromSeverity('low')).toBe('cyan')
19
+ })
20
+
21
+ it('returns glass for info', () => {
22
+ expect(statusToneFromSeverity('info')).toBe('glass')
23
+ })
24
+
25
+ it('is case-insensitive (Critical)', () => {
26
+ expect(statusToneFromSeverity('Critical')).toBe('rose')
27
+ })
28
+
29
+ it('is case-insensitive (CRITICAL)', () => {
30
+ expect(statusToneFromSeverity('CRITICAL')).toBe('rose')
31
+ })
32
+
33
+ it('is case-insensitive (mixed case HIGH)', () => {
34
+ expect(statusToneFromSeverity('HiGh')).toBe('orange')
35
+ })
36
+
37
+ it('falls back to glass for unknown values', () => {
38
+ expect(statusToneFromSeverity('unknown')).toBe('glass')
39
+ expect(statusToneFromSeverity('severe')).toBe('glass')
40
+ })
41
+
42
+ it('falls back to glass for empty string', () => {
43
+ expect(statusToneFromSeverity('')).toBe('glass')
44
+ })
45
+ })
46
+
47
+ describe('statusToneFromState', () => {
48
+ it('returns emerald for active', () => {
49
+ expect(statusToneFromState('active')).toBe('emerald')
50
+ })
51
+
52
+ it('returns emerald for connected', () => {
53
+ expect(statusToneFromState('connected')).toBe('emerald')
54
+ })
55
+
56
+ it('returns emerald for passing', () => {
57
+ expect(statusToneFromState('passing')).toBe('emerald')
58
+ })
59
+
60
+ it('returns emerald for enabled', () => {
61
+ expect(statusToneFromState('enabled')).toBe('emerald')
62
+ })
63
+
64
+ it('returns emerald for healthy', () => {
65
+ expect(statusToneFromState('healthy')).toBe('emerald')
66
+ })
67
+
68
+ it('returns cyan for running', () => {
69
+ expect(statusToneFromState('running')).toBe('cyan')
70
+ })
71
+
72
+ it('returns cyan for testing', () => {
73
+ expect(statusToneFromState('testing')).toBe('cyan')
74
+ })
75
+
76
+ it('returns cyan for completed', () => {
77
+ expect(statusToneFromState('completed')).toBe('cyan')
78
+ })
79
+
80
+ it('returns rose for error', () => {
81
+ expect(statusToneFromState('error')).toBe('rose')
82
+ })
83
+
84
+ it('returns rose for failed', () => {
85
+ expect(statusToneFromState('failed')).toBe('rose')
86
+ })
87
+
88
+ it('returns rose for disconnected', () => {
89
+ expect(statusToneFromState('disconnected')).toBe('rose')
90
+ })
91
+
92
+ it('returns rose for attention', () => {
93
+ expect(statusToneFromState('attention')).toBe('rose')
94
+ })
95
+
96
+ it('returns amber for pending', () => {
97
+ expect(statusToneFromState('pending')).toBe('amber')
98
+ })
99
+
100
+ it('returns amber for needs_setup', () => {
101
+ expect(statusToneFromState('needs_setup')).toBe('amber')
102
+ })
103
+
104
+ it('returns amber for needs_review', () => {
105
+ expect(statusToneFromState('needs_review')).toBe('amber')
106
+ })
107
+
108
+ it('returns amber for stale', () => {
109
+ expect(statusToneFromState('stale')).toBe('amber')
110
+ })
111
+
112
+ it('returns amber for available', () => {
113
+ expect(statusToneFromState('available')).toBe('amber')
114
+ })
115
+
116
+ it('returns amber for queued', () => {
117
+ expect(statusToneFromState('queued')).toBe('amber')
118
+ })
119
+
120
+ it('returns amber for generating', () => {
121
+ expect(statusToneFromState('generating')).toBe('amber')
122
+ })
123
+
124
+ it('returns amber for purging', () => {
125
+ expect(statusToneFromState('purging')).toBe('amber')
126
+ })
127
+
128
+ it('returns violet for quarantined', () => {
129
+ expect(statusToneFromState('quarantined')).toBe('violet')
130
+ })
131
+
132
+ it('returns glass for disabled', () => {
133
+ expect(statusToneFromState('disabled')).toBe('glass')
134
+ })
135
+
136
+ it('returns glass for inactive', () => {
137
+ expect(statusToneFromState('inactive')).toBe('glass')
138
+ })
139
+
140
+ it('returns glass for decommissioned', () => {
141
+ expect(statusToneFromState('decommissioned')).toBe('glass')
142
+ })
143
+
144
+ it('is case-insensitive (Active)', () => {
145
+ expect(statusToneFromState('Active')).toBe('emerald')
146
+ })
147
+
148
+ it('is case-insensitive (ERROR)', () => {
149
+ expect(statusToneFromState('ERROR')).toBe('rose')
150
+ })
151
+
152
+ it('is case-insensitive (Pending)', () => {
153
+ expect(statusToneFromState('Pending')).toBe('amber')
154
+ })
155
+
156
+ it('falls back to glass for unknown values', () => {
157
+ expect(statusToneFromState('unknown')).toBe('glass')
158
+ expect(statusToneFromState('something')).toBe('glass')
159
+ })
160
+
161
+ it('falls back to glass for empty string', () => {
162
+ expect(statusToneFromState('')).toBe('glass')
163
+ })
164
+ })
@@ -158,3 +158,32 @@ export {
158
158
  isPortrait,
159
159
  getSafeAreaInsets,
160
160
  } from './touch'
161
+
162
+ // Score utilities
163
+ export {
164
+ getScoreLevel,
165
+ scoreColors,
166
+ scoreToColor,
167
+ scoreToTextColor,
168
+ getScoreBgClass,
169
+ getScoreTextClass,
170
+ getScoreBorderClass,
171
+ getScoreBgColor,
172
+ getScoreTextColor,
173
+ getScoreHexColor,
174
+ getScoreColorClasses,
175
+ type ScoreLevel,
176
+ } from './score'
177
+
178
+ // Status tone utilities
179
+ export {
180
+ statusToneFromSeverity,
181
+ statusToneFromState,
182
+ type StatusTone,
183
+ } from './status-tone'
184
+
185
+ // Sage analysis utilities
186
+ export {
187
+ generateSageAnalysis,
188
+ type SageAnalysisThresholds,
189
+ } from './sage-analysis'
@@ -0,0 +1,62 @@
1
+ /**
2
+ * Sage Analysis Utility
3
+ *
4
+ * Generates contextual narrative strings for Sage insight cards based on
5
+ * a numeric score and domain-specific thresholds. Consolidates the repeated
6
+ * getSageAnalysis() pattern found across DetectionInsightsCard,
7
+ * ValidationInsightsCard, and VisibilityInsightsCard in tenant-ui.
8
+ *
9
+ * Usage:
10
+ * const thresholds: SageAnalysisThresholds = {
11
+ * excellent: 'Strong detection posture...',
12
+ * good: 'Moderate coverage with room to improve...',
13
+ * moderate: 'Gaps exist across several techniques...',
14
+ * poor: 'Significant exposure requires immediate action...',
15
+ * critical: 'Critical gaps demand urgent remediation...',
16
+ * }
17
+ * const narrative = generateSageAnalysis(score, thresholds, hasCritical)
18
+ */
19
+
20
+ /** Threshold-based narrative messages for Sage analysis. */
21
+ export interface SageAnalysisThresholds {
22
+ /** Narrative when score >= 80 */
23
+ excellent: string
24
+ /** Narrative when score >= 60 */
25
+ good: string
26
+ /** Narrative when score >= 40 */
27
+ moderate: string
28
+ /** Narrative when score < 40 */
29
+ poor: string
30
+ /** Override narrative when critical issues are detected */
31
+ critical?: string
32
+ }
33
+
34
+ /**
35
+ * Generate a Sage analysis narrative string from a numeric score and
36
+ * threshold-based messages.
37
+ *
38
+ * When `hasCriticalIssues` is true and a `critical` threshold message is
39
+ * provided, the critical message takes precedence over score-based tiers.
40
+ *
41
+ * Score tiers:
42
+ * - 80+ -> excellent
43
+ * - 60+ -> good
44
+ * - 40+ -> moderate
45
+ * - <40 -> poor
46
+ *
47
+ * @param score - Numeric score (0-100)
48
+ * @param thresholds - Tier-based narrative messages
49
+ * @param hasCriticalIssues - Whether critical issues override the score tier
50
+ * @returns The narrative string for the matching tier
51
+ */
52
+ export function generateSageAnalysis(
53
+ score: number,
54
+ thresholds: SageAnalysisThresholds,
55
+ hasCriticalIssues?: boolean,
56
+ ): string {
57
+ if (hasCriticalIssues && thresholds.critical) return thresholds.critical
58
+ if (score >= 80) return thresholds.excellent
59
+ if (score >= 60) return thresholds.good
60
+ if (score >= 40) return thresholds.moderate
61
+ return thresholds.poor
62
+ }
@@ -0,0 +1,123 @@
1
+ export type ScoreLevel = 'good' | 'warning' | 'concerning' | 'critical'
2
+
3
+ /**
4
+ * Global score-to-level mapping for consistent health indicators.
5
+ *
6
+ * Thresholds (aligned with tenant-ui):
7
+ * - 80+: good (healthy)
8
+ * - 60-79: warning (needs attention)
9
+ * - 40-59: concerning (degraded)
10
+ * - <40: critical
11
+ */
12
+ export function getScoreLevel(score: number): ScoreLevel {
13
+ if (score >= 80) return 'good'
14
+ if (score >= 60) return 'warning'
15
+ if (score >= 40) return 'concerning'
16
+ return 'critical'
17
+ }
18
+
19
+ /** Pre-built Tailwind class and CSS var map keyed by score level. */
20
+ export const scoreColors = {
21
+ good: {
22
+ bg: 'bg-score-good',
23
+ text: 'text-score-good',
24
+ hex: 'var(--color-score-good)',
25
+ },
26
+ warning: {
27
+ bg: 'bg-score-warning',
28
+ text: 'text-score-warning',
29
+ hex: 'var(--color-score-warning)',
30
+ },
31
+ concerning: {
32
+ bg: 'bg-score-concerning',
33
+ text: 'text-score-concerning',
34
+ hex: 'var(--color-score-concerning)',
35
+ },
36
+ critical: {
37
+ bg: 'bg-score-critical',
38
+ text: 'text-score-critical',
39
+ hex: 'var(--color-score-critical)',
40
+ },
41
+ } as const
42
+
43
+ // ---------------------------------------------------------------------------
44
+ // CSS custom-property helpers (for inline styles)
45
+ // ---------------------------------------------------------------------------
46
+
47
+ export function scoreToColor(score: number): string {
48
+ const level = getScoreLevel(score)
49
+ return `var(--color-score-${level})`
50
+ }
51
+
52
+ export function scoreToTextColor(score: number): string {
53
+ return scoreToColor(score)
54
+ }
55
+
56
+ // ---------------------------------------------------------------------------
57
+ // Tailwind class helpers (single class strings)
58
+ // ---------------------------------------------------------------------------
59
+
60
+ /** Returns `bg-score-<level>` */
61
+ export function getScoreBgClass(score: number): string {
62
+ return `bg-score-${getScoreLevel(score)}`
63
+ }
64
+
65
+ /** Returns `text-score-<level>` */
66
+ export function getScoreTextClass(score: number): string {
67
+ return `text-score-${getScoreLevel(score)}`
68
+ }
69
+
70
+ /** Returns `border-score-<level>` */
71
+ export function getScoreBorderClass(score: number): string {
72
+ return `border-score-${getScoreLevel(score)}`
73
+ }
74
+
75
+ // ---------------------------------------------------------------------------
76
+ // Lookup helpers (match tenant-ui API)
77
+ // ---------------------------------------------------------------------------
78
+
79
+ /** Returns the Tailwind `bg-score-*` class for a numeric score. */
80
+ export function getScoreBgColor(score: number): string {
81
+ return scoreColors[getScoreLevel(score)].bg
82
+ }
83
+
84
+ /** Returns the Tailwind `text-score-*` class for a numeric score. */
85
+ export function getScoreTextColor(score: number): string {
86
+ return scoreColors[getScoreLevel(score)].text
87
+ }
88
+
89
+ /** Returns the CSS variable reference (`var(--color-score-*)`) for a numeric score. */
90
+ export function getScoreHexColor(score: number): string {
91
+ return scoreColors[getScoreLevel(score)].hex
92
+ }
93
+
94
+ /**
95
+ * Returns composite Tailwind classes (text, bg with 10% opacity, border with 20% opacity)
96
+ * suitable for badge / pill styling.
97
+ */
98
+ export function getScoreColorClasses(score: number): {
99
+ text: string
100
+ bg: string
101
+ border: string
102
+ } {
103
+ const level = getScoreLevel(score)
104
+ const colorMap = {
105
+ good: { text: 'text-score-good', bg: 'bg-score-good/10', border: 'border-score-good/20' },
106
+ warning: {
107
+ text: 'text-score-warning',
108
+ bg: 'bg-score-warning/10',
109
+ border: 'border-score-warning/20',
110
+ },
111
+ concerning: {
112
+ text: 'text-score-concerning',
113
+ bg: 'bg-score-concerning/10',
114
+ border: 'border-score-concerning/20',
115
+ },
116
+ critical: {
117
+ text: 'text-score-critical',
118
+ bg: 'bg-score-critical/10',
119
+ border: 'border-score-critical/20',
120
+ },
121
+ }
122
+ return colorMap[level]
123
+ }
@@ -0,0 +1,48 @@
1
+ export type StatusTone = 'emerald' | 'cyan' | 'rose' | 'amber' | 'violet' | 'orange' | 'glass'
2
+
3
+ export function statusToneFromSeverity(severity: string): StatusTone {
4
+ switch (severity.toLowerCase()) {
5
+ case 'critical': return 'rose'
6
+ case 'high': return 'orange'
7
+ case 'medium': return 'amber'
8
+ case 'low': return 'cyan'
9
+ case 'info': return 'glass'
10
+ default: return 'glass'
11
+ }
12
+ }
13
+
14
+ export function statusToneFromState(state: string): StatusTone {
15
+ switch (state.toLowerCase()) {
16
+ case 'active':
17
+ case 'connected':
18
+ case 'passing':
19
+ case 'enabled':
20
+ case 'healthy':
21
+ return 'emerald'
22
+ case 'running':
23
+ case 'testing':
24
+ case 'completed':
25
+ return 'cyan'
26
+ case 'error':
27
+ case 'failed':
28
+ case 'disconnected':
29
+ case 'attention':
30
+ return 'rose'
31
+ case 'pending':
32
+ case 'needs_setup':
33
+ case 'needs_review':
34
+ case 'stale':
35
+ case 'available':
36
+ case 'queued':
37
+ case 'generating':
38
+ case 'purging':
39
+ return 'amber'
40
+ case 'quarantined':
41
+ return 'violet'
42
+ case 'disabled':
43
+ case 'inactive':
44
+ case 'decommissioned':
45
+ default:
46
+ return 'glass'
47
+ }
48
+ }
@@ -1,3 +0,0 @@
1
- import "./chunk-XZSTWKYB-BZB_wvbZ.js";
2
- import { n as e } from "./chunk-R5LLSJPH-C90VQC8y.js";
3
- export { e as createArchitectureServices };
@@ -1,31 +0,0 @@
1
- import "./chunk-GEFDOKGD-bXEkwPrJ.js";
2
- import { n as e } from "./src-hxErHTV1.js";
3
- import "./chunk-7R4GIKGN-DiZ1HYFd.js";
4
- import "./chunk-PU5JKC2W-CAfe4Tg3.js";
5
- import "./chunk-FMBD7UC4-7bd068zf.js";
6
- import "./chunk-MX3YWQON-DnBlqD44.js";
7
- import "./chunk-YBOYWFTD-DVqQ1pen.js";
8
- import "./chunk-JSJVCQXG-p-BUVvps.js";
9
- import "./chunk-55IACEB6-DxNTqHZ8.js";
10
- import "./chunk-KX2RTZJC-DopwIbE1.js";
11
- import "./chunk-PQ6SQG4A-DPz_e-Es.js";
12
- import "./chunk-KYZI473N-4Y4_4kXL.js";
13
- import "./chunk-O4XLMI2P-BcKxBhcn.js";
14
- import "./chunk-GLR3WWYH-GIQ55uMn.js";
15
- import { i as t, n, r, t as i } from "./chunk-WL4C6EOR-B2OMxQLL.js";
16
- //#region node_modules/mermaid/dist/chunks/mermaid.core/classDiagram-VBA2DB6C.mjs
17
- var a = {
18
- parser: n,
19
- get db() {
20
- return new i();
21
- },
22
- renderer: r,
23
- styles: t,
24
- init: /* @__PURE__ */ e((e) => {
25
- e.class ||= {}, e.class.arrowMarkerAbsolute = e.arrowMarkerAbsolute;
26
- }, "init")
27
- };
28
- //#endregion
29
- export { a as diagram };
30
-
31
- //# sourceMappingURL=classDiagram-VBA2DB6C-DFfohpM0.js.map
@@ -1,31 +0,0 @@
1
- import "./chunk-GEFDOKGD-bXEkwPrJ.js";
2
- import { n as e } from "./src-hxErHTV1.js";
3
- import "./chunk-7R4GIKGN-DiZ1HYFd.js";
4
- import "./chunk-PU5JKC2W-CAfe4Tg3.js";
5
- import "./chunk-FMBD7UC4-7bd068zf.js";
6
- import "./chunk-MX3YWQON-DnBlqD44.js";
7
- import "./chunk-YBOYWFTD-DVqQ1pen.js";
8
- import "./chunk-JSJVCQXG-p-BUVvps.js";
9
- import "./chunk-55IACEB6-DxNTqHZ8.js";
10
- import "./chunk-KX2RTZJC-DopwIbE1.js";
11
- import "./chunk-PQ6SQG4A-DPz_e-Es.js";
12
- import "./chunk-KYZI473N-4Y4_4kXL.js";
13
- import "./chunk-O4XLMI2P-BcKxBhcn.js";
14
- import "./chunk-GLR3WWYH-GIQ55uMn.js";
15
- import { i as t, n, r, t as i } from "./chunk-WL4C6EOR-B2OMxQLL.js";
16
- //#region node_modules/mermaid/dist/chunks/mermaid.core/classDiagram-v2-RAHNMMFH.mjs
17
- var a = {
18
- parser: n,
19
- get db() {
20
- return new i();
21
- },
22
- renderer: r,
23
- styles: t,
24
- init: /* @__PURE__ */ e((e) => {
25
- e.class ||= {}, e.class.arrowMarkerAbsolute = e.arrowMarkerAbsolute;
26
- }, "init")
27
- };
28
- //#endregion
29
- export { a as diagram };
30
-
31
- //# sourceMappingURL=classDiagram-v2-RAHNMMFH-kUMm28FB.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"theme-studio.js","names":[],"sources":["../../../src/components/theme/theme-studio.ts"],"sourcesContent":["import { resetTheme } from '../../services/theme-engine'\nimport { AccentSwitcher } from './accent-switcher'\nimport { DensitySwitcher } from './density-switcher'\nimport { FontStackPicker } from './font-stack-picker'\nimport { GlassSlider } from './glass-slider'\nimport { IconSetPicker } from './icon-set-picker'\nimport { IconUsageMatrix } from './icon-usage-matrix'\nimport { RadiusSlider } from './radius-slider'\nimport { ThemePresetGrid } from './theme-preset-grid'\nimport { ThemePreviewTile } from './theme-preview-tile'\nimport { ThemeSwitcher } from './theme-switcher'\n\nexport interface ThemeStudioOptions {\n showTabs?: boolean\n showHeader?: boolean\n showBrandSection?: boolean\n}\n\nconst DEFAULT_OPTIONS: Required<ThemeStudioOptions> = {\n showTabs: true,\n showHeader: true,\n showBrandSection: true,\n}\n\nfunction el<K extends keyof HTMLElementTagNameMap>(\n tag: K,\n className?: string,\n text?: string\n): HTMLElementTagNameMap[K] {\n const node = document.createElement(tag)\n if (className) node.className = className\n if (text !== undefined) node.textContent = text\n return node\n}\n\nfunction buildSection(\n title: string,\n helper: string,\n body: HTMLElement,\n rightSlot?: HTMLElement\n): HTMLElement {\n const section = el('section', 'theme-studio-section')\n const head = el('div', 'theme-studio-section__head')\n const titles = el('div', 'theme-studio-section__titles')\n titles.appendChild(el('h3', 'theme-studio-section__title', title))\n titles.appendChild(el('div', 'theme-studio-section__helper', helper))\n head.appendChild(titles)\n if (rightSlot) head.appendChild(rightSlot)\n section.appendChild(head)\n section.appendChild(body)\n return section\n}\n\nfunction buildTabStrip(): HTMLElement {\n const strip = el('div', 'theme-studio-tabs')\n const tabs = ['Profile', 'Organization', 'Appearance', 'About'] as const\n for (const tab of tabs) {\n const button = el('button', 'theme-studio-tab', tab)\n button.type = 'button'\n if (tab === 'Appearance') button.classList.add('is-active')\n button.disabled = tab !== 'Appearance'\n strip.appendChild(button)\n }\n return strip\n}\n\nfunction buildResetLink(): HTMLButtonElement {\n const button = el('button', 'theme-studio-link', 'Reset to default')\n button.type = 'button'\n button.addEventListener('click', () => {\n resetTheme()\n })\n return button\n}\n\nfunction buildAdvanced(): HTMLElement {\n const wrap = el('div', 'theme-studio-advanced')\n\n const densityRow = el('div', 'theme-studio-advanced__row')\n densityRow.appendChild(new DensitySwitcher().el)\n wrap.appendChild(densityRow)\n\n const radiusRow = el('div', 'theme-studio-advanced__row')\n radiusRow.appendChild(new RadiusSlider().el)\n wrap.appendChild(radiusRow)\n\n const matrixHead = el('div', 'theme-studio-advanced__matrix-head')\n matrixHead.appendChild(el('h4', 'theme-studio-advanced__matrix-title', 'Per-icon mapping'))\n matrixHead.appendChild(\n el(\n 'p',\n 'theme-studio-advanced__matrix-helper',\n 'Rebind any icon slot. Useful if your team thinks of detection as a bug instead of a shield.'\n )\n )\n wrap.appendChild(matrixHead)\n\n wrap.appendChild(new IconUsageMatrix().el)\n return wrap\n}\n\nfunction buildAdvancedSection(): HTMLElement {\n const details = document.createElement('details')\n details.className = 'theme-studio-section theme-studio-section--advanced'\n\n const summary = document.createElement('summary')\n summary.className = 'theme-studio-section__head theme-studio-section__head--summary'\n\n const titles = el('div', 'theme-studio-section__titles')\n titles.appendChild(el('h3', 'theme-studio-section__title', 'Advanced'))\n titles.appendChild(\n el('div', 'theme-studio-section__helper', 'Density, corner radius, and per-icon overrides')\n )\n summary.appendChild(titles)\n\n const toggle = el('span', 'theme-studio-section__chev', 'Show')\n summary.appendChild(toggle)\n\n details.appendChild(summary)\n details.appendChild(buildAdvanced())\n\n details.addEventListener('toggle', () => {\n toggle.textContent = details.open ? 'Hide' : 'Show'\n })\n\n return details\n}\n\nexport class ThemeStudio {\n public readonly el: HTMLElement\n private readonly options: Required<ThemeStudioOptions>\n\n constructor(options: ThemeStudioOptions = {}) {\n this.options = { ...DEFAULT_OPTIONS, ...options }\n this.el = document.createElement('section')\n this.el.className = 'theme-studio-pane'\n this.render()\n }\n\n render(): void {\n this.el.innerHTML = ''\n\n if (this.options.showTabs) {\n this.el.appendChild(buildTabStrip())\n }\n\n if (this.options.showHeader) {\n const header = el('header', 'theme-studio-pane__header')\n header.appendChild(el('h1', 'theme-studio-pane__title', 'Appearance'))\n header.appendChild(\n el(\n 'p',\n 'theme-studio-pane__subtitle',\n 'Customize how CounterMeasure looks. Pick a preset, tweak the color mode, accent, transparency, typography, and icons. Changes apply immediately and persist on this device.'\n )\n )\n this.el.appendChild(header)\n }\n\n this.el.appendChild(\n buildSection(\n 'Start from a preset',\n 'Curated combinations of mode, accent, font, and icon style.',\n new ThemePresetGrid().el,\n buildResetLink()\n )\n )\n\n this.el.appendChild(\n buildSection(\n 'Live preview',\n 'A miniature app shell that re-renders as you tweak settings below.',\n new ThemePreviewTile().el\n )\n )\n\n this.el.appendChild(\n buildSection('Color Mode', 'Choose how the interface looks.', new ThemeSwitcher().el)\n )\n this.el.appendChild(\n buildSection(\n 'Accent Color',\n 'Pick a color that highlights actions and links.',\n new AccentSwitcher().el\n )\n )\n this.el.appendChild(\n buildSection(\n 'Surface Transparency',\n 'How translucent panels, hover states, and overlays appear.',\n new GlassSlider({ expanded: true }).el\n )\n )\n this.el.appendChild(\n buildSection(\n 'Typography',\n 'Select the typeface used throughout the app.',\n new FontStackPicker().el\n )\n )\n this.el.appendChild(\n buildSection(\n 'Icon Set',\n 'Choose the icon style for navigation and content.',\n new IconSetPicker().el\n )\n )\n\n if (this.options.showBrandSection) {\n const brandBody = el('div', 'theme-studio-brand-note')\n brandBody.appendChild(\n el(\n 'p',\n 'theme-studio-brand-note__text',\n 'Brand assets live under design-system brand resources. Switch icon sets to CounterMeasure above to apply the bespoke security glyphs.'\n )\n )\n this.el.appendChild(\n buildSection('Brand', 'Logo, wordmark, and brand glyph references.', brandBody)\n )\n }\n this.el.appendChild(buildAdvancedSection())\n }\n}\n\nexport function renderThemeStudio(\n container: HTMLElement,\n options?: ThemeStudioOptions\n): ThemeStudio {\n const studio = new ThemeStudio(options)\n container.innerHTML = ''\n container.appendChild(studio.el)\n return studio\n}\n"],"mappings":"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"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"dist-DGayZ3ok2.js","names":["React"],"sources":["../node_modules/@radix-ui/react-portal/dist/index.mjs"],"sourcesContent":["\"use client\";\n\n// src/portal.tsx\nimport * as React from \"react\";\nimport ReactDOM from \"react-dom\";\nimport { Primitive } from \"@radix-ui/react-primitive\";\nimport { useLayoutEffect } from \"@radix-ui/react-use-layout-effect\";\nimport { jsx } from \"react/jsx-runtime\";\nvar PORTAL_NAME = \"Portal\";\nvar Portal = React.forwardRef((props, forwardedRef) => {\n const { container: containerProp, ...portalProps } = props;\n const [mounted, setMounted] = React.useState(false);\n useLayoutEffect(() => setMounted(true), []);\n const container = containerProp || mounted && globalThis?.document?.body;\n return container ? ReactDOM.createPortal(/* @__PURE__ */ jsx(Primitive.div, { ...portalProps, ref: forwardedRef }), container) : null;\n});\nPortal.displayName = PORTAL_NAME;\nvar Root = Portal;\nexport {\n Portal,\n Root\n};\n//# sourceMappingURL=index.mjs.map\n"],"x_google_ignoreList":[0],"mappings":";;;;;AAQA,IAAI,IAAc,UACd,IAASA,EAAM,YAAY,GAAO,MAAiB;CACrD,IAAM,EAAE,WAAW,GAAe,GAAG,MAAgB,GAC/C,CAAC,GAAS,KAAcA,EAAM,SAAS,GAAM;AACnD,SAAsB,EAAW,GAAK,EAAE,EAAE,CAAC;CAC3C,IAAM,IAAY,KAAiB,KAAW,YAAY,UAAU;AACpE,QAAO,IAAY,EAAS,aAA6B,kBAAI,EAAU,KAAK;EAAE,GAAG;EAAa,KAAK;EAAc,CAAC,EAAE,EAAU,GAAG;EACjI;AACF,EAAO,cAAc"}
@@ -1,3 +0,0 @@
1
- import "./chunk-XZSTWKYB-BZB_wvbZ.js";
2
- import { n as e } from "./chunk-7E7YKBS2-Bewg8t99.js";
3
- export { e as createGitGraphServices };
@@ -1,3 +0,0 @@
1
- import "./chunk-XZSTWKYB-BZB_wvbZ.js";
2
- import { n as e } from "./chunk-EGIJ26TM-1-wU_wPi.js";
3
- export { e as createInfoServices };
@@ -1,3 +0,0 @@
1
- import "./chunk-XZSTWKYB-BZB_wvbZ.js";
2
- import { n as e } from "./chunk-C72U2L5F-BqOejReq.js";
3
- export { e as createPacketServices };
@@ -1,3 +0,0 @@
1
- import "./chunk-XZSTWKYB-BZB_wvbZ.js";
2
- import { n as e } from "./chunk-XIRO2GV7-D1_jT4ch.js";
3
- export { e as createPieServices };
@@ -1,3 +0,0 @@
1
- import "./chunk-XZSTWKYB-BZB_wvbZ.js";
2
- import { n as e } from "./chunk-L3YUKLVL-U6LYvPh7.js";
3
- export { e as createRadarServices };
@@ -1,29 +0,0 @@
1
- import "./chunk-GEFDOKGD-bXEkwPrJ.js";
2
- import { n as e } from "./src-hxErHTV1.js";
3
- import "./chunk-7R4GIKGN-DiZ1HYFd.js";
4
- import "./chunk-PU5JKC2W-CAfe4Tg3.js";
5
- import "./chunk-MX3YWQON-DnBlqD44.js";
6
- import "./chunk-YBOYWFTD-DVqQ1pen.js";
7
- import "./chunk-55IACEB6-DxNTqHZ8.js";
8
- import "./chunk-KX2RTZJC-DopwIbE1.js";
9
- import "./chunk-PQ6SQG4A-DPz_e-Es.js";
10
- import "./chunk-KYZI473N-4Y4_4kXL.js";
11
- import "./chunk-O4XLMI2P-BcKxBhcn.js";
12
- import "./chunk-GLR3WWYH-GIQ55uMn.js";
13
- import { i as t, n, r, t as i } from "./chunk-NQ4KR5QH-BSylMz0X.js";
14
- //#region node_modules/mermaid/dist/chunks/mermaid.core/stateDiagram-v2-FVOUBMTO.mjs
15
- var a = {
16
- parser: n,
17
- get db() {
18
- return new i(2);
19
- },
20
- renderer: r,
21
- styles: t,
22
- init: /* @__PURE__ */ e((e) => {
23
- e.state ||= {}, e.state.arrowMarkerAbsolute = e.arrowMarkerAbsolute;
24
- }, "init")
25
- };
26
- //#endregion
27
- export { a as diagram };
28
-
29
- //# sourceMappingURL=stateDiagram-v2-FVOUBMTO-Cnp2uGxd.js.map
@@ -1,3 +0,0 @@
1
- import "./chunk-XZSTWKYB-BZB_wvbZ.js";
2
- import { n as e } from "./chunk-OZEHJAEY-D6S6KbwY.js";
3
- export { e as createTreemapServices };
@@ -1 +0,0 @@
1
- {"version":3,"file":"utils-CHEq9Vpx.js","names":[],"sources":["../src/utils/validation.ts","../src/utils/errors.ts","../src/utils/touch.ts"],"sourcesContent":["/**\n * Shared input validation utilities\n * @countermeasure/web-components/utils/validation\n */\n\nexport interface ValidationResult {\n valid: boolean\n message?: string\n}\n\nexport interface ValidationRule {\n validate: (value: unknown) => boolean\n message: string\n}\n\n/** Validate that a value is not empty */\nexport function validateRequired(value: unknown): boolean {\n if (value === null || value === undefined) return false\n if (typeof value === 'string') return value.trim().length > 0\n return true\n}\n\n/** Validate an email address format */\nexport function validateEmail(value: string): boolean {\n return /^[^\\s@]+@[^\\s@]+\\.[^\\s@]+$/.test(value)\n}\n\n/** Validate a URL format */\nexport function validateUrl(value: string): boolean {\n try {\n new URL(value)\n return true\n } catch {\n return false\n }\n}\n\n/** Validate minimum length */\nexport function validateMinLength(value: string, min: number): boolean {\n return value.length >= min\n}\n\n/** Validate maximum length */\nexport function validateMaxLength(value: string, max: number): boolean {\n return value.length <= max\n}\n\n/** Validate a value matches a regex pattern */\nexport function validatePattern(value: string, pattern: RegExp): boolean {\n return pattern.test(value)\n}\n\n/**\n * Create a composite validator from an array of rules.\n * Returns the first failing validation result, or valid if all pass.\n */\nexport function createValidator(rules: ValidationRule[]): (value: unknown) => ValidationResult {\n return (value: unknown): ValidationResult => {\n for (const rule of rules) {\n if (!rule.validate(value)) {\n return { valid: false, message: rule.message }\n }\n }\n return { valid: true }\n }\n}\n","/**\n * Shared error classes for consistent error handling\n * @countermeasure/web-components/utils/errors\n */\n\n/** Base error class for all component library errors */\nexport class ComponentError extends Error {\n constructor(message: string) {\n super(message)\n this.name = 'ComponentError'\n }\n}\n\n/** Error thrown when configuration is invalid */\nexport class ConfigError extends ComponentError {\n constructor(component: string, message: string) {\n super(`[${component}] ${message}`)\n this.name = 'ConfigError'\n }\n}\n\n/** Error thrown during input validation */\nexport class ValidationError extends ComponentError {\n public readonly field: string\n\n constructor(field: string, message: string) {\n super(`Validation failed for \"${field}\": ${message}`)\n this.name = 'ValidationError'\n this.field = field\n }\n}\n\n/** Error thrown during network operations */\nexport class NetworkError extends ComponentError {\n public readonly status: number\n public readonly statusText: string\n\n constructor(status: number, statusText: string, message?: string) {\n super(message ?? `HTTP ${String(status)}: ${statusText}`)\n this.name = 'NetworkError'\n this.status = status\n this.statusText = statusText\n }\n}\n","/**\n * Touch and gesture utilities for web components\n * @countermeasure/web-components/utils/touch\n *\n * Provides swipe detection, touch-or-click handling,\n * and pinch-to-zoom support for mobile accessibility.\n */\n\n// ============================================================================\n// Types\n// ============================================================================\n\nexport type SwipeDirection = 'left' | 'right' | 'up' | 'down'\n\nexport interface SwipeOptions {\n /** Minimum distance in pixels to trigger a swipe (default: 50) */\n threshold?: number\n /** Maximum time in ms for a swipe gesture (default: 300) */\n timeout?: number\n /** Callback when swipe is detected */\n onSwipe?: (direction: SwipeDirection, event: TouchEvent) => void\n /** Callback when swipe starts */\n onSwipeStart?: (event: TouchEvent) => void\n /** Callback when swipe ends without triggering */\n onSwipeEnd?: (event: TouchEvent) => void\n /** Whether to prevent default behavior during swipe */\n preventDefault?: boolean\n}\n\nexport interface SwipeDetector {\n /** Enable swipe detection */\n enable: () => void\n /** Disable swipe detection */\n disable: () => void\n /** Check if detection is enabled */\n isEnabled: () => boolean\n /** Clean up event listeners */\n destroy: () => void\n}\n\nexport interface PinchOptions {\n /** Minimum scale change to trigger callback (default: 0.1) */\n threshold?: number\n /** Callback when pinch is detected */\n onPinch?: (scale: number, event: TouchEvent) => void\n /** Callback when pinch starts */\n onPinchStart?: (event: TouchEvent) => void\n /** Callback when pinch ends */\n onPinchEnd?: (event: TouchEvent) => void\n}\n\nexport interface PinchDetector {\n /** Enable pinch detection */\n enable: () => void\n /** Disable pinch detection */\n disable: () => void\n /** Get the current pinch scale */\n getScale: () => number\n /** Reset scale to 1 */\n resetScale: () => void\n /** Clean up event listeners */\n destroy: () => void\n}\n\nexport interface PanOptions {\n /** Callback when pan occurs */\n onPan?: (deltaX: number, deltaY: number, event: TouchEvent) => void\n /** Callback when pan starts */\n onPanStart?: (event: TouchEvent) => void\n /** Callback when pan ends */\n onPanEnd?: (event: TouchEvent) => void\n /** Whether to prevent default behavior during pan */\n preventDefault?: boolean\n}\n\nexport interface PanDetector {\n /** Enable pan detection */\n enable: () => void\n /** Disable pan detection */\n disable: () => void\n /** Clean up event listeners */\n destroy: () => void\n}\n\n// ============================================================================\n// Swipe Detection\n// ============================================================================\n\n/**\n * Create a swipe gesture detector for an element.\n * Detects horizontal and vertical swipes with configurable threshold.\n */\nexport function detectSwipe(element: HTMLElement, options: SwipeOptions = {}): SwipeDetector {\n const {\n threshold = 50,\n timeout = 300,\n onSwipe,\n onSwipeStart,\n onSwipeEnd,\n preventDefault = false,\n } = options\n\n let enabled = true\n let startX = 0\n let startY = 0\n let startTime = 0\n\n const handleTouchStart = (event: TouchEvent): void => {\n if (!enabled) {\n return\n }\n\n const touch = event.touches[0]\n if (touch === undefined) {\n return\n }\n\n startX = touch.clientX\n startY = touch.clientY\n startTime = Date.now()\n\n onSwipeStart?.(event)\n }\n\n const handleTouchEnd = (event: TouchEvent): void => {\n if (!enabled || startTime === 0) {\n return\n }\n\n const touch = event.changedTouches[0]\n if (touch === undefined) {\n return\n }\n\n const endX = touch.clientX\n const endY = touch.clientY\n const endTime = Date.now()\n\n const deltaX = endX - startX\n const deltaY = endY - startY\n const elapsed = endTime - startTime\n\n // Reset start time\n startTime = 0\n\n // Check if gesture was within timeout\n if (elapsed > timeout) {\n onSwipeEnd?.(event)\n return\n }\n\n const absX = Math.abs(deltaX)\n const absY = Math.abs(deltaY)\n\n // Determine swipe direction\n if (absX >= threshold || absY >= threshold) {\n if (preventDefault) {\n event.preventDefault()\n }\n\n let direction: SwipeDirection\n if (absX > absY) {\n direction = deltaX > 0 ? 'right' : 'left'\n } else {\n direction = deltaY > 0 ? 'down' : 'up'\n }\n\n onSwipe?.(direction, event)\n } else {\n onSwipeEnd?.(event)\n }\n }\n\n const handleTouchMove = (event: TouchEvent): void => {\n if (!enabled || !preventDefault) {\n return\n }\n\n const touch = event.touches[0]\n if (touch === undefined) {\n return\n }\n\n const deltaX = Math.abs(touch.clientX - startX)\n const deltaY = Math.abs(touch.clientY - startY)\n\n // Prevent scrolling if swipe seems intentional\n if (deltaX > 10 || deltaY > 10) {\n event.preventDefault()\n }\n }\n\n element.addEventListener('touchstart', handleTouchStart, { passive: true })\n element.addEventListener('touchend', handleTouchEnd, { passive: !preventDefault })\n if (preventDefault) {\n element.addEventListener('touchmove', handleTouchMove, { passive: false })\n }\n\n return {\n enable: () => {\n enabled = true\n },\n disable: () => {\n enabled = false\n },\n isEnabled: () => enabled,\n destroy: () => {\n element.removeEventListener('touchstart', handleTouchStart)\n element.removeEventListener('touchend', handleTouchEnd)\n element.removeEventListener('touchmove', handleTouchMove)\n },\n }\n}\n\n// ============================================================================\n// Touch or Click Handler\n// ============================================================================\n\n/**\n * Handle both touch and click events without double-firing.\n * Uses touch events on touch devices, click events otherwise.\n */\nexport function handleTouchOrClick(\n element: HTMLElement,\n callback: (event: TouchEvent | MouseEvent) => void\n): () => void {\n let touchHandled = false\n\n const handleTouchStart = (event: TouchEvent): void => {\n touchHandled = true\n callback(event)\n }\n\n const handleClick = (event: MouseEvent): void => {\n // Ignore if touch already handled (prevents double-firing on touch devices)\n if (touchHandled) {\n touchHandled = false\n return\n }\n callback(event)\n }\n\n element.addEventListener('touchstart', handleTouchStart, { passive: true })\n element.addEventListener('click', handleClick)\n\n return () => {\n element.removeEventListener('touchstart', handleTouchStart)\n element.removeEventListener('click', handleClick)\n }\n}\n\n/**\n * Add a touchstart handler that also works with mouse for accessibility.\n * Returns a cleanup function.\n */\nexport function onPointerDown(\n element: HTMLElement,\n callback: (event: PointerEvent | TouchEvent | MouseEvent) => void\n): () => void {\n // Prefer PointerEvent if supported\n if ('PointerEvent' in window) {\n const handler = (event: PointerEvent): void => {\n callback(event)\n }\n element.addEventListener('pointerdown', handler)\n return () => {\n element.removeEventListener('pointerdown', handler)\n }\n }\n\n // Fallback for older browsers\n let touchHandled = false\n\n const handleTouchStart = (event: TouchEvent): void => {\n touchHandled = true\n callback(event)\n }\n\n const handleMouseDown = (event: MouseEvent): void => {\n if (touchHandled) {\n touchHandled = false\n return\n }\n callback(event)\n }\n\n element.addEventListener('touchstart', handleTouchStart, { passive: true })\n element.addEventListener('mousedown', handleMouseDown)\n\n return () => {\n element.removeEventListener('touchstart', handleTouchStart)\n element.removeEventListener('mousedown', handleMouseDown)\n }\n}\n\n// ============================================================================\n// Pinch-to-Zoom Detection\n// ============================================================================\n\n/**\n * Get the distance between two touch points.\n */\nfunction getTouchDistance(touches: TouchList): number {\n if (touches.length < 2) {\n return 0\n }\n const touch1 = touches[0]\n const touch2 = touches[1]\n if (touch1 === undefined || touch2 === undefined) {\n return 0\n }\n const dx = touch1.clientX - touch2.clientX\n const dy = touch1.clientY - touch2.clientY\n return Math.sqrt(dx * dx + dy * dy)\n}\n\n/**\n * Create a pinch-to-zoom detector for an element.\n */\nexport function detectPinch(element: HTMLElement, options: PinchOptions = {}): PinchDetector {\n const { threshold = 0.1, onPinch, onPinchStart, onPinchEnd } = options\n\n let enabled = true\n let isPinching = false\n let initialDistance = 0\n let currentScale = 1\n\n const handleTouchStart = (event: TouchEvent): void => {\n if (!enabled || event.touches.length < 2) {\n return\n }\n\n isPinching = true\n initialDistance = getTouchDistance(event.touches)\n currentScale = 1\n\n onPinchStart?.(event)\n }\n\n const handleTouchMove = (event: TouchEvent): void => {\n if (!enabled || !isPinching || event.touches.length < 2) {\n return\n }\n\n const currentDistance = getTouchDistance(event.touches)\n if (initialDistance === 0) {\n return\n }\n\n const newScale = currentDistance / initialDistance\n const scaleDelta = Math.abs(newScale - currentScale)\n\n if (scaleDelta >= threshold) {\n currentScale = newScale\n onPinch?.(currentScale, event)\n }\n }\n\n const handleTouchEnd = (event: TouchEvent): void => {\n if (!enabled || !isPinching) {\n return\n }\n\n if (event.touches.length < 2) {\n isPinching = false\n onPinchEnd?.(event)\n }\n }\n\n element.addEventListener('touchstart', handleTouchStart, { passive: true })\n element.addEventListener('touchmove', handleTouchMove, { passive: true })\n element.addEventListener('touchend', handleTouchEnd, { passive: true })\n element.addEventListener('touchcancel', handleTouchEnd, { passive: true })\n\n return {\n enable: () => {\n enabled = true\n },\n disable: () => {\n enabled = false\n isPinching = false\n },\n getScale: () => currentScale,\n resetScale: () => {\n currentScale = 1\n },\n destroy: () => {\n element.removeEventListener('touchstart', handleTouchStart)\n element.removeEventListener('touchmove', handleTouchMove)\n element.removeEventListener('touchend', handleTouchEnd)\n element.removeEventListener('touchcancel', handleTouchEnd)\n },\n }\n}\n\n// ============================================================================\n// Pan Detection\n// ============================================================================\n\n/**\n * Create a pan (single-finger drag) detector for an element.\n */\nexport function detectPan(element: HTMLElement, options: PanOptions = {}): PanDetector {\n const { onPan, onPanStart, onPanEnd, preventDefault = false } = options\n\n let enabled = true\n let isPanning = false\n let lastX = 0\n let lastY = 0\n\n const handleTouchStart = (event: TouchEvent): void => {\n if (!enabled || event.touches.length !== 1) {\n return\n }\n\n const touch = event.touches[0]\n if (touch === undefined) {\n return\n }\n\n isPanning = true\n lastX = touch.clientX\n lastY = touch.clientY\n\n onPanStart?.(event)\n }\n\n const handleTouchMove = (event: TouchEvent): void => {\n if (!enabled || !isPanning || event.touches.length !== 1) {\n return\n }\n\n const touch = event.touches[0]\n if (touch === undefined) {\n return\n }\n\n if (preventDefault) {\n event.preventDefault()\n }\n\n const deltaX = touch.clientX - lastX\n const deltaY = touch.clientY - lastY\n\n lastX = touch.clientX\n lastY = touch.clientY\n\n onPan?.(deltaX, deltaY, event)\n }\n\n const handleTouchEnd = (event: TouchEvent): void => {\n if (!enabled || !isPanning) {\n return\n }\n\n isPanning = false\n onPanEnd?.(event)\n }\n\n element.addEventListener('touchstart', handleTouchStart, { passive: true })\n element.addEventListener('touchmove', handleTouchMove, { passive: !preventDefault })\n element.addEventListener('touchend', handleTouchEnd, { passive: true })\n element.addEventListener('touchcancel', handleTouchEnd, { passive: true })\n\n return {\n enable: () => {\n enabled = true\n },\n disable: () => {\n enabled = false\n isPanning = false\n },\n destroy: () => {\n element.removeEventListener('touchstart', handleTouchStart)\n element.removeEventListener('touchmove', handleTouchMove)\n element.removeEventListener('touchend', handleTouchEnd)\n element.removeEventListener('touchcancel', handleTouchEnd)\n },\n }\n}\n\n// ============================================================================\n// Long Press Detection\n// ============================================================================\n\nexport interface LongPressOptions {\n /** Duration in ms to trigger long press (default: 500) */\n duration?: number\n /** Callback when long press is triggered */\n onLongPress?: (event: TouchEvent) => void\n /** Movement threshold in pixels to cancel long press (default: 10) */\n moveThreshold?: number\n}\n\nexport interface LongPressDetector {\n /** Enable detection */\n enable: () => void\n /** Disable detection */\n disable: () => void\n /** Clean up */\n destroy: () => void\n}\n\n/**\n * Create a long press detector for context menu or similar actions.\n */\nexport function detectLongPress(\n element: HTMLElement,\n options: LongPressOptions = {}\n): LongPressDetector {\n const { duration = 500, onLongPress, moveThreshold = 10 } = options\n\n let enabled = true\n let timeoutId: ReturnType<typeof setTimeout> | null = null\n let startX = 0\n let startY = 0\n\n const handleTouchStart = (event: TouchEvent): void => {\n if (!enabled) {\n return\n }\n\n const touch = event.touches[0]\n if (touch === undefined) {\n return\n }\n\n startX = touch.clientX\n startY = touch.clientY\n\n timeoutId = setTimeout(() => {\n onLongPress?.(event)\n }, duration)\n }\n\n const handleTouchMove = (event: TouchEvent): void => {\n if (timeoutId === null) {\n return\n }\n\n const touch = event.touches[0]\n if (touch === undefined) {\n return\n }\n\n const deltaX = Math.abs(touch.clientX - startX)\n const deltaY = Math.abs(touch.clientY - startY)\n\n if (deltaX > moveThreshold || deltaY > moveThreshold) {\n clearTimeout(timeoutId)\n timeoutId = null\n }\n }\n\n const handleTouchEnd = (): void => {\n if (timeoutId !== null) {\n clearTimeout(timeoutId)\n timeoutId = null\n }\n }\n\n element.addEventListener('touchstart', handleTouchStart, { passive: true })\n element.addEventListener('touchmove', handleTouchMove, { passive: true })\n element.addEventListener('touchend', handleTouchEnd, { passive: true })\n element.addEventListener('touchcancel', handleTouchEnd, { passive: true })\n\n return {\n enable: () => {\n enabled = true\n },\n disable: () => {\n enabled = false\n if (timeoutId !== null) {\n clearTimeout(timeoutId)\n timeoutId = null\n }\n },\n destroy: () => {\n if (timeoutId !== null) {\n clearTimeout(timeoutId)\n }\n element.removeEventListener('touchstart', handleTouchStart)\n element.removeEventListener('touchmove', handleTouchMove)\n element.removeEventListener('touchend', handleTouchEnd)\n element.removeEventListener('touchcancel', handleTouchEnd)\n },\n }\n}\n\n// ============================================================================\n// Device Detection Helpers\n// ============================================================================\n\n/**\n * Check if the device supports touch events.\n */\nexport function isTouchDevice(): boolean {\n return 'ontouchstart' in window || navigator.maxTouchPoints > 0\n}\n\n/**\n * Check if the device is likely a mobile device based on screen size.\n */\nexport function isMobileViewport(): boolean {\n return window.innerWidth < 768\n}\n\n/**\n * Check if the device is in portrait orientation.\n */\nexport function isPortrait(): boolean {\n return window.innerHeight > window.innerWidth\n}\n\n/**\n * Get the safe area insets for notched devices.\n */\nexport function getSafeAreaInsets(): {\n top: number\n right: number\n bottom: number\n left: number\n} {\n const style = getComputedStyle(document.documentElement)\n\n const parseValue = (prop: string): number => {\n const value = style.getPropertyValue(prop)\n const parsed = parseInt(value, 10)\n return isNaN(parsed) ? 0 : parsed\n }\n\n const getValue = (customProp: string, envProp: string): number => {\n const custom = parseValue(customProp)\n return custom !== 0 ? custom : parseValue(envProp)\n }\n\n return {\n top: getValue('--safe-area-inset-top', 'env(safe-area-inset-top)'),\n right: getValue('--safe-area-inset-right', 'env(safe-area-inset-right)'),\n bottom: getValue('--safe-area-inset-bottom', 'env(safe-area-inset-bottom)'),\n left: getValue('--safe-area-inset-left', 'env(safe-area-inset-left)'),\n }\n}\n"],"mappings":"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"}