@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
@@ -1,6 +1,6 @@
1
- import { f as e } from "./chunk-GEFDOKGD-bXEkwPrJ.js";
2
- import { n as t } from "./src-hxErHTV1.js";
3
- import { b as n, d as r } from "./chunk-7R4GIKGN-DiZ1HYFd.js";
1
+ import { f as e } from "./chunk-GEFDOKGD-DGJJEGSm.js";
2
+ import { n as t } from "./src-BhNgmpel.js";
3
+ import { b as n, d as r } from "./chunk-7R4GIKGN-DJmroLCH.js";
4
4
  //#region node_modules/mermaid/dist/chunks/mermaid.core/chunk-YBOYWFTD.mjs
5
5
  var i = /* @__PURE__ */ t(({ flowchart: e }) => {
6
6
  let t = e?.subGraphTitleMargin?.top ?? 0, n = e?.subGraphTitleMargin?.bottom ?? 0;
@@ -31,4 +31,4 @@ t(a, "configureLabelImages");
31
31
  //#endregion
32
32
  export { i as n, a as t };
33
33
 
34
- //# sourceMappingURL=chunk-YBOYWFTD-DVqQ1pen.js.map
34
+ //# sourceMappingURL=chunk-YBOYWFTD-DkjEOcgZ.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"chunk-YBOYWFTD-DVqQ1pen.js","names":["getConfig"],"sources":["../node_modules/mermaid/dist/chunks/mermaid.core/chunk-YBOYWFTD.mjs"],"sourcesContent":["import {\n parseFontSize\n} from \"./chunk-GEFDOKGD.mjs\";\nimport {\n defaultConfig_default,\n getConfig2 as getConfig\n} from \"./chunk-7R4GIKGN.mjs\";\nimport {\n __name\n} from \"./chunk-AGHRB4JF.mjs\";\n\n// src/utils/subGraphTitleMargins.ts\nvar getSubGraphTitleMargins = /* @__PURE__ */ __name(({\n flowchart\n}) => {\n const subGraphTitleTopMargin = flowchart?.subGraphTitleMargin?.top ?? 0;\n const subGraphTitleBottomMargin = flowchart?.subGraphTitleMargin?.bottom ?? 0;\n const subGraphTitleTotalMargin = subGraphTitleTopMargin + subGraphTitleBottomMargin;\n return {\n subGraphTitleTopMargin,\n subGraphTitleBottomMargin,\n subGraphTitleTotalMargin\n };\n}, \"getSubGraphTitleMargins\");\n\n// src/rendering-util/rendering-elements/shapes/labelImageUtils.ts\nasync function configureLabelImages(container, labelText) {\n const images = container.getElementsByTagName(\"img\");\n if (!images || images.length === 0) {\n return;\n }\n const noImgText = labelText.replace(/<img[^>]*>/g, \"\").trim() === \"\";\n await Promise.all(\n [...images].map(\n (img) => new Promise((res) => {\n function setupImage() {\n img.style.display = \"flex\";\n img.style.flexDirection = \"column\";\n if (noImgText) {\n const bodyFontSize = getConfig().fontSize ? getConfig().fontSize : window.getComputedStyle(document.body).fontSize;\n const enlargingFactor = 5;\n const [parsedBodyFontSize = defaultConfig_default.fontSize] = parseFontSize(bodyFontSize);\n const width = parsedBodyFontSize * enlargingFactor + \"px\";\n img.style.minWidth = width;\n img.style.maxWidth = width;\n } else {\n img.style.width = \"100%\";\n }\n res(img);\n }\n __name(setupImage, \"setupImage\");\n setTimeout(() => {\n if (img.complete) {\n setupImage();\n }\n });\n img.addEventListener(\"error\", setupImage);\n img.addEventListener(\"load\", setupImage);\n })\n )\n );\n}\n__name(configureLabelImages, \"configureLabelImages\");\n\nexport {\n configureLabelImages,\n getSubGraphTitleMargins\n};\n"],"x_google_ignoreList":[0],"mappings":";;;;AAYA,IAAI,IAA0C,mBAAQ,EACpD,mBACI;CACJ,IAAM,IAAyB,GAAW,qBAAqB,OAAO,GAChE,IAA4B,GAAW,qBAAqB,UAAU;AAE5E,QAAO;EACL;EACA;EACA,0BAJ+B,IAAyB;EAKzD;GACA,0BAA0B;AAG7B,eAAe,EAAqB,GAAW,GAAW;CACxD,IAAM,IAAS,EAAU,qBAAqB,MAAM;AACpD,KAAI,CAAC,KAAU,EAAO,WAAW,EAC/B;CAEF,IAAM,IAAY,EAAU,QAAQ,eAAe,GAAG,CAAC,MAAM,KAAK;AAClE,OAAM,QAAQ,IACZ,CAAC,GAAG,EAAO,CAAC,KACT,MAAQ,IAAI,SAAS,MAAQ;EAC5B,SAAS,IAAa;AAGpB,OAFA,EAAI,MAAM,UAAU,QACpB,EAAI,MAAM,gBAAgB,UACtB,GAAW;IACb,IAEM,CAAC,IAAqB,EAAsB,YAAY,EAFzCA,GAAW,CAAC,WAAWA,GAAW,CAAC,WAAW,OAAO,iBAAiB,SAAS,KAAK,CAAC,SAEjB,EACnF,IAAQ,IAAqB,IAAkB;AAErD,IADA,EAAI,MAAM,WAAW,GACrB,EAAI,MAAM,WAAW;SAErB,GAAI,MAAM,QAAQ;AAEpB,KAAI,EAAI;;AASV,EAPA,EAAO,GAAY,aAAa,EAChC,iBAAiB;AACf,GAAI,EAAI,YACN,GAAY;IAEd,EACF,EAAI,iBAAiB,SAAS,EAAW,EACzC,EAAI,iBAAiB,QAAQ,EAAW;GACxC,CACH,CACF;;AAEH,EAAO,GAAsB,uBAAuB"}
1
+ {"version":3,"file":"chunk-YBOYWFTD-DkjEOcgZ.js","names":["getConfig"],"sources":["../node_modules/mermaid/dist/chunks/mermaid.core/chunk-YBOYWFTD.mjs"],"sourcesContent":["import {\n parseFontSize\n} from \"./chunk-GEFDOKGD.mjs\";\nimport {\n defaultConfig_default,\n getConfig2 as getConfig\n} from \"./chunk-7R4GIKGN.mjs\";\nimport {\n __name\n} from \"./chunk-AGHRB4JF.mjs\";\n\n// src/utils/subGraphTitleMargins.ts\nvar getSubGraphTitleMargins = /* @__PURE__ */ __name(({\n flowchart\n}) => {\n const subGraphTitleTopMargin = flowchart?.subGraphTitleMargin?.top ?? 0;\n const subGraphTitleBottomMargin = flowchart?.subGraphTitleMargin?.bottom ?? 0;\n const subGraphTitleTotalMargin = subGraphTitleTopMargin + subGraphTitleBottomMargin;\n return {\n subGraphTitleTopMargin,\n subGraphTitleBottomMargin,\n subGraphTitleTotalMargin\n };\n}, \"getSubGraphTitleMargins\");\n\n// src/rendering-util/rendering-elements/shapes/labelImageUtils.ts\nasync function configureLabelImages(container, labelText) {\n const images = container.getElementsByTagName(\"img\");\n if (!images || images.length === 0) {\n return;\n }\n const noImgText = labelText.replace(/<img[^>]*>/g, \"\").trim() === \"\";\n await Promise.all(\n [...images].map(\n (img) => new Promise((res) => {\n function setupImage() {\n img.style.display = \"flex\";\n img.style.flexDirection = \"column\";\n if (noImgText) {\n const bodyFontSize = getConfig().fontSize ? getConfig().fontSize : window.getComputedStyle(document.body).fontSize;\n const enlargingFactor = 5;\n const [parsedBodyFontSize = defaultConfig_default.fontSize] = parseFontSize(bodyFontSize);\n const width = parsedBodyFontSize * enlargingFactor + \"px\";\n img.style.minWidth = width;\n img.style.maxWidth = width;\n } else {\n img.style.width = \"100%\";\n }\n res(img);\n }\n __name(setupImage, \"setupImage\");\n setTimeout(() => {\n if (img.complete) {\n setupImage();\n }\n });\n img.addEventListener(\"error\", setupImage);\n img.addEventListener(\"load\", setupImage);\n })\n )\n );\n}\n__name(configureLabelImages, \"configureLabelImages\");\n\nexport {\n configureLabelImages,\n getSubGraphTitleMargins\n};\n"],"x_google_ignoreList":[0],"mappings":";;;;AAYA,IAAI,IAA0C,mBAAQ,EACpD,mBACI;CACJ,IAAM,IAAyB,GAAW,qBAAqB,OAAO,GAChE,IAA4B,GAAW,qBAAqB,UAAU;AAE5E,QAAO;EACL;EACA;EACA,0BAJ+B,IAAyB;EAKzD;GACA,0BAA0B;AAG7B,eAAe,EAAqB,GAAW,GAAW;CACxD,IAAM,IAAS,EAAU,qBAAqB,MAAM;AACpD,KAAI,CAAC,KAAU,EAAO,WAAW,EAC/B;CAEF,IAAM,IAAY,EAAU,QAAQ,eAAe,GAAG,CAAC,MAAM,KAAK;AAClE,OAAM,QAAQ,IACZ,CAAC,GAAG,EAAO,CAAC,KACT,MAAQ,IAAI,SAAS,MAAQ;EAC5B,SAAS,IAAa;AAGpB,OAFA,EAAI,MAAM,UAAU,QACpB,EAAI,MAAM,gBAAgB,UACtB,GAAW;IACb,IAEM,CAAC,IAAqB,EAAsB,YAAY,EAFzCA,GAAW,CAAC,WAAWA,GAAW,CAAC,WAAW,OAAO,iBAAiB,SAAS,KAAK,CAAC,SAEjB,EACnF,IAAQ,IAAqB,IAAkB;AAErD,IADA,EAAI,MAAM,WAAW,GACrB,EAAI,MAAM,WAAW;SAErB,GAAI,MAAM,QAAQ;AAEpB,KAAI,EAAI;;AASV,EAPA,EAAO,GAAY,aAAa,EAChC,iBAAiB;AACf,GAAI,EAAI,YACN,GAAY;IAEd,EACF,EAAI,iBAAiB,SAAS,EAAW,EACzC,EAAI,iBAAiB,QAAQ,EAAW;GACxC,CACH,CACF;;AAEH,EAAO,GAAsB,uBAAuB"}
@@ -0,0 +1,31 @@
1
+ import "./chunk-GEFDOKGD-DGJJEGSm.js";
2
+ import { n as e } from "./src-BhNgmpel.js";
3
+ import "./chunk-7R4GIKGN-DJmroLCH.js";
4
+ import "./chunk-PU5JKC2W-DNpn_Yik.js";
5
+ import "./chunk-FMBD7UC4-1IxrpdPX.js";
6
+ import "./chunk-MX3YWQON-D43mcq1f.js";
7
+ import "./chunk-YBOYWFTD-DkjEOcgZ.js";
8
+ import "./chunk-JSJVCQXG-Do17yYig.js";
9
+ import "./chunk-55IACEB6-DZ-UBhHX.js";
10
+ import "./chunk-KX2RTZJC-d9jFqUAY.js";
11
+ import "./chunk-PQ6SQG4A-Cpfc5F4u.js";
12
+ import "./chunk-KYZI473N-BXYCe83A.js";
13
+ import "./chunk-O4XLMI2P-DtGEm9QX.js";
14
+ import "./chunk-GLR3WWYH-BDwmgwCA.js";
15
+ import { i as t, n, r, t as i } from "./chunk-WL4C6EOR-BV-op7zg.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-DZfC0xPM.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"classDiagram-VBA2DB6C-DFfohpM0.js","names":[],"sources":["../node_modules/mermaid/dist/chunks/mermaid.core/classDiagram-VBA2DB6C.mjs"],"sourcesContent":["import {\n ClassDB,\n classDiagram_default,\n classRenderer_v3_unified_default,\n styles_default\n} from \"./chunk-WL4C6EOR.mjs\";\nimport \"./chunk-FMBD7UC4.mjs\";\nimport \"./chunk-JSJVCQXG.mjs\";\nimport \"./chunk-55IACEB6.mjs\";\nimport \"./chunk-KX2RTZJC.mjs\";\nimport \"./chunk-GLR3WWYH.mjs\";\nimport \"./chunk-O4XLMI2P.mjs\";\nimport \"./chunk-MX3YWQON.mjs\";\nimport \"./chunk-KYZI473N.mjs\";\nimport \"./chunk-YBOYWFTD.mjs\";\nimport \"./chunk-PQ6SQG4A.mjs\";\nimport \"./chunk-PU5JKC2W.mjs\";\nimport \"./chunk-GEFDOKGD.mjs\";\nimport \"./chunk-7R4GIKGN.mjs\";\nimport {\n __name\n} from \"./chunk-AGHRB4JF.mjs\";\n\n// src/diagrams/class/classDiagram.ts\nvar diagram = {\n parser: classDiagram_default,\n get db() {\n return new ClassDB();\n },\n renderer: classRenderer_v3_unified_default,\n styles: styles_default,\n init: /* @__PURE__ */ __name((cnf) => {\n if (!cnf.class) {\n cnf.class = {};\n }\n cnf.class.arrowMarkerAbsolute = cnf.arrowMarkerAbsolute;\n }, \"init\")\n};\nexport {\n diagram\n};\n"],"x_google_ignoreList":[0],"mappings":";;;;;;;;;;;;;;;;AAwBA,IAAI,IAAU;CACZ,QAAQ;CACR,IAAI,KAAK;AACP,SAAO,IAAI,GAAS;;CAEtB,UAAU;CACV,QAAQ;CACR,MAAsB,mBAAQ,MAAQ;AAIpC,EAHA,AACE,EAAI,UAAQ,EAAE,EAEhB,EAAI,MAAM,sBAAsB,EAAI;IACnC,OAAO;CACX"}
1
+ {"version":3,"file":"classDiagram-VBA2DB6C-DZfC0xPM.js","names":[],"sources":["../node_modules/mermaid/dist/chunks/mermaid.core/classDiagram-VBA2DB6C.mjs"],"sourcesContent":["import {\n ClassDB,\n classDiagram_default,\n classRenderer_v3_unified_default,\n styles_default\n} from \"./chunk-WL4C6EOR.mjs\";\nimport \"./chunk-FMBD7UC4.mjs\";\nimport \"./chunk-JSJVCQXG.mjs\";\nimport \"./chunk-55IACEB6.mjs\";\nimport \"./chunk-KX2RTZJC.mjs\";\nimport \"./chunk-GLR3WWYH.mjs\";\nimport \"./chunk-O4XLMI2P.mjs\";\nimport \"./chunk-MX3YWQON.mjs\";\nimport \"./chunk-KYZI473N.mjs\";\nimport \"./chunk-YBOYWFTD.mjs\";\nimport \"./chunk-PQ6SQG4A.mjs\";\nimport \"./chunk-PU5JKC2W.mjs\";\nimport \"./chunk-GEFDOKGD.mjs\";\nimport \"./chunk-7R4GIKGN.mjs\";\nimport {\n __name\n} from \"./chunk-AGHRB4JF.mjs\";\n\n// src/diagrams/class/classDiagram.ts\nvar diagram = {\n parser: classDiagram_default,\n get db() {\n return new ClassDB();\n },\n renderer: classRenderer_v3_unified_default,\n styles: styles_default,\n init: /* @__PURE__ */ __name((cnf) => {\n if (!cnf.class) {\n cnf.class = {};\n }\n cnf.class.arrowMarkerAbsolute = cnf.arrowMarkerAbsolute;\n }, \"init\")\n};\nexport {\n diagram\n};\n"],"x_google_ignoreList":[0],"mappings":";;;;;;;;;;;;;;;;AAwBA,IAAI,IAAU;CACZ,QAAQ;CACR,IAAI,KAAK;AACP,SAAO,IAAI,GAAS;;CAEtB,UAAU;CACV,QAAQ;CACR,MAAsB,mBAAQ,MAAQ;AAIpC,EAHA,AACE,EAAI,UAAQ,EAAE,EAEhB,EAAI,MAAM,sBAAsB,EAAI;IACnC,OAAO;CACX"}
@@ -0,0 +1,31 @@
1
+ import "./chunk-GEFDOKGD-DGJJEGSm.js";
2
+ import { n as e } from "./src-BhNgmpel.js";
3
+ import "./chunk-7R4GIKGN-DJmroLCH.js";
4
+ import "./chunk-PU5JKC2W-DNpn_Yik.js";
5
+ import "./chunk-FMBD7UC4-1IxrpdPX.js";
6
+ import "./chunk-MX3YWQON-D43mcq1f.js";
7
+ import "./chunk-YBOYWFTD-DkjEOcgZ.js";
8
+ import "./chunk-JSJVCQXG-Do17yYig.js";
9
+ import "./chunk-55IACEB6-DZ-UBhHX.js";
10
+ import "./chunk-KX2RTZJC-d9jFqUAY.js";
11
+ import "./chunk-PQ6SQG4A-Cpfc5F4u.js";
12
+ import "./chunk-KYZI473N-BXYCe83A.js";
13
+ import "./chunk-O4XLMI2P-DtGEm9QX.js";
14
+ import "./chunk-GLR3WWYH-BDwmgwCA.js";
15
+ import { i as t, n, r, t as i } from "./chunk-WL4C6EOR-BV-op7zg.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-CtWRD1ax.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"classDiagram-v2-RAHNMMFH-kUMm28FB.js","names":[],"sources":["../node_modules/mermaid/dist/chunks/mermaid.core/classDiagram-v2-RAHNMMFH.mjs"],"sourcesContent":["import {\n ClassDB,\n classDiagram_default,\n classRenderer_v3_unified_default,\n styles_default\n} from \"./chunk-WL4C6EOR.mjs\";\nimport \"./chunk-FMBD7UC4.mjs\";\nimport \"./chunk-JSJVCQXG.mjs\";\nimport \"./chunk-55IACEB6.mjs\";\nimport \"./chunk-KX2RTZJC.mjs\";\nimport \"./chunk-GLR3WWYH.mjs\";\nimport \"./chunk-O4XLMI2P.mjs\";\nimport \"./chunk-MX3YWQON.mjs\";\nimport \"./chunk-KYZI473N.mjs\";\nimport \"./chunk-YBOYWFTD.mjs\";\nimport \"./chunk-PQ6SQG4A.mjs\";\nimport \"./chunk-PU5JKC2W.mjs\";\nimport \"./chunk-GEFDOKGD.mjs\";\nimport \"./chunk-7R4GIKGN.mjs\";\nimport {\n __name\n} from \"./chunk-AGHRB4JF.mjs\";\n\n// src/diagrams/class/classDiagram-v2.ts\nvar diagram = {\n parser: classDiagram_default,\n get db() {\n return new ClassDB();\n },\n renderer: classRenderer_v3_unified_default,\n styles: styles_default,\n init: /* @__PURE__ */ __name((cnf) => {\n if (!cnf.class) {\n cnf.class = {};\n }\n cnf.class.arrowMarkerAbsolute = cnf.arrowMarkerAbsolute;\n }, \"init\")\n};\nexport {\n diagram\n};\n"],"x_google_ignoreList":[0],"mappings":";;;;;;;;;;;;;;;;AAwBA,IAAI,IAAU;CACZ,QAAQ;CACR,IAAI,KAAK;AACP,SAAO,IAAI,GAAS;;CAEtB,UAAU;CACV,QAAQ;CACR,MAAsB,mBAAQ,MAAQ;AAIpC,EAHA,AACE,EAAI,UAAQ,EAAE,EAEhB,EAAI,MAAM,sBAAsB,EAAI;IACnC,OAAO;CACX"}
1
+ {"version":3,"file":"classDiagram-v2-RAHNMMFH-CtWRD1ax.js","names":[],"sources":["../node_modules/mermaid/dist/chunks/mermaid.core/classDiagram-v2-RAHNMMFH.mjs"],"sourcesContent":["import {\n ClassDB,\n classDiagram_default,\n classRenderer_v3_unified_default,\n styles_default\n} from \"./chunk-WL4C6EOR.mjs\";\nimport \"./chunk-FMBD7UC4.mjs\";\nimport \"./chunk-JSJVCQXG.mjs\";\nimport \"./chunk-55IACEB6.mjs\";\nimport \"./chunk-KX2RTZJC.mjs\";\nimport \"./chunk-GLR3WWYH.mjs\";\nimport \"./chunk-O4XLMI2P.mjs\";\nimport \"./chunk-MX3YWQON.mjs\";\nimport \"./chunk-KYZI473N.mjs\";\nimport \"./chunk-YBOYWFTD.mjs\";\nimport \"./chunk-PQ6SQG4A.mjs\";\nimport \"./chunk-PU5JKC2W.mjs\";\nimport \"./chunk-GEFDOKGD.mjs\";\nimport \"./chunk-7R4GIKGN.mjs\";\nimport {\n __name\n} from \"./chunk-AGHRB4JF.mjs\";\n\n// src/diagrams/class/classDiagram-v2.ts\nvar diagram = {\n parser: classDiagram_default,\n get db() {\n return new ClassDB();\n },\n renderer: classRenderer_v3_unified_default,\n styles: styles_default,\n init: /* @__PURE__ */ __name((cnf) => {\n if (!cnf.class) {\n cnf.class = {};\n }\n cnf.class.arrowMarkerAbsolute = cnf.arrowMarkerAbsolute;\n }, \"init\")\n};\nexport {\n diagram\n};\n"],"x_google_ignoreList":[0],"mappings":";;;;;;;;;;;;;;;;AAwBA,IAAI,IAAU;CACZ,QAAQ;CACR,IAAI,KAAK;AACP,SAAO,IAAI,GAAS;;CAEtB,UAAU;CACV,QAAQ;CACR,MAAsB,mBAAQ,MAAQ;AAIpC,EAHA,AACE,EAAI,UAAQ,EAAE,EAEhB,EAAI,MAAM,sBAAsB,EAAI;IACnC,OAAO;CACX"}
@@ -1,4 +1,4 @@
1
- import { y as e } from "./_baseUniq-CO35kH5B.js";
1
+ import { y as e } from "./_baseUniq-Bdp_vFUv.js";
2
2
  //#region node_modules/lodash-es/clone.js
3
3
  var t = 4;
4
4
  function n(n) {
@@ -7,4 +7,4 @@ function n(n) {
7
7
  //#endregion
8
8
  export { n as t };
9
9
 
10
- //# sourceMappingURL=clone-DxI1nSTP.js.map
10
+ //# sourceMappingURL=clone-CliVdNc8.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"clone-DxI1nSTP.js","names":[],"sources":["../node_modules/lodash-es/clone.js"],"sourcesContent":["import baseClone from './_baseClone.js';\n\n/** Used to compose bitmasks for cloning. */\nvar CLONE_SYMBOLS_FLAG = 4;\n\n/**\n * Creates a shallow clone of `value`.\n *\n * **Note:** This method is loosely based on the\n * [structured clone algorithm](https://mdn.io/Structured_clone_algorithm)\n * and supports cloning arrays, array buffers, booleans, date objects, maps,\n * numbers, `Object` objects, regexes, sets, strings, symbols, and typed\n * arrays. The own enumerable properties of `arguments` objects are cloned\n * as plain objects. An empty object is returned for uncloneable values such\n * as error objects, functions, DOM nodes, and WeakMaps.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to clone.\n * @returns {*} Returns the cloned value.\n * @see _.cloneDeep\n * @example\n *\n * var objects = [{ 'a': 1 }, { 'b': 2 }];\n *\n * var shallow = _.clone(objects);\n * console.log(shallow[0] === objects[0]);\n * // => true\n */\nfunction clone(value) {\n return baseClone(value, CLONE_SYMBOLS_FLAG);\n}\n\nexport default clone;\n"],"x_google_ignoreList":[0],"mappings":";;AAGA,IAAI,IAAqB;AA4BzB,SAAS,EAAM,GAAO;AACpB,QAAO,EAAU,GAAO,EAAmB"}
1
+ {"version":3,"file":"clone-CliVdNc8.js","names":[],"sources":["../node_modules/lodash-es/clone.js"],"sourcesContent":["import baseClone from './_baseClone.js';\n\n/** Used to compose bitmasks for cloning. */\nvar CLONE_SYMBOLS_FLAG = 4;\n\n/**\n * Creates a shallow clone of `value`.\n *\n * **Note:** This method is loosely based on the\n * [structured clone algorithm](https://mdn.io/Structured_clone_algorithm)\n * and supports cloning arrays, array buffers, booleans, date objects, maps,\n * numbers, `Object` objects, regexes, sets, strings, symbols, and typed\n * arrays. The own enumerable properties of `arguments` objects are cloned\n * as plain objects. An empty object is returned for uncloneable values such\n * as error objects, functions, DOM nodes, and WeakMaps.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to clone.\n * @returns {*} Returns the cloned value.\n * @see _.cloneDeep\n * @example\n *\n * var objects = [{ 'a': 1 }, { 'b': 2 }];\n *\n * var shallow = _.clone(objects);\n * console.log(shallow[0] === objects[0]);\n * // => true\n */\nfunction clone(value) {\n return baseClone(value, CLONE_SYMBOLS_FLAG);\n}\n\nexport default clone;\n"],"x_google_ignoreList":[0],"mappings":";;AAGA,IAAI,IAAqB;AA4BzB,SAAS,EAAM,GAAO;AACpB,QAAO,EAAU,GAAO,EAAmB"}
@@ -100,4 +100,4 @@ var r = class {
100
100
  //#endregion
101
101
  export { r as t };
102
102
 
103
- //# sourceMappingURL=component-x2UxdKEC.js.map
103
+ //# sourceMappingURL=component-C1Jiz1Ki.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"component-x2UxdKEC.js","names":[],"sources":["../src/sidebar/component.ts"],"sourcesContent":["/**\n * SidebarComponent - Programmatic sidebar with sections, badges, and footer\n * @countermeasure/web-components/sidebar/component\n *\n * Unlike sidebar/enhance (which enhances server-rendered HTML), this module\n * builds the sidebar DOM from a config object. Use it when the sidebar\n * structure is driven entirely by client-side data.\n *\n * Usage:\n * import { SidebarComponent } from '@countermeasure/web-components/sidebar/component'\n *\n * const sidebar = new SidebarComponent({\n * container: '#sidebar-root',\n * sections: [{ id: 'main', label: 'Nav', items: [...] }],\n * user: { name: 'Alice' },\n * onNavigate: item => console.log(item.id),\n * })\n * sidebar.setActive('dashboard')\n */\n\nimport { getIconSvgInner, type IconSet } from '../icons/index'\nimport { resolveContainer } from '../primitives/utils'\nimport { type SidebarComponentConfig } from './types'\n\n/** Create an SVG element populated with icon content from the registry. */\nfunction createIconSvg(iconSet: IconSet, name: string): SVGElement {\n const svgNs = 'http://www.w3.org/2000/svg'\n const svg = document.createElementNS(svgNs, 'svg')\n svg.setAttribute('xmlns', svgNs)\n svg.setAttribute('width', '18')\n svg.setAttribute('height', '18')\n svg.setAttribute('viewBox', '0 0 24 24')\n svg.setAttribute('fill', 'none')\n svg.setAttribute('stroke', 'currentColor')\n svg.setAttribute('stroke-width', '2')\n svg.setAttribute('stroke-linecap', 'round')\n svg.setAttribute('stroke-linejoin', 'round')\n svg.classList.add('sidebar__item-icon')\n svg.setAttribute('data-icon', name)\n svg.setAttribute('aria-hidden', 'true')\n\n const inner = getIconSvgInner(iconSet, name)\n if (inner) {\n svg.innerHTML = inner\n }\n\n return svg\n}\n\nexport class SidebarComponent {\n private readonly container: HTMLElement\n private readonly aside: HTMLElement\n private readonly config: SidebarComponentConfig\n private readonly iconSet: IconSet\n\n constructor(config: SidebarComponentConfig) {\n this.config = config\n this.container = resolveContainer(config.container)\n this.iconSet = config.iconSet ?? 'lucide'\n\n this.aside = document.createElement('aside')\n this.aside.classList.add('sidebar')\n this.aside.setAttribute('data-sidebar', config.variant ?? 'app')\n\n this.render()\n this.container.appendChild(this.aside)\n }\n\n private render(): void {\n for (const section of this.config.sections) {\n const sectionEl = document.createElement('div')\n sectionEl.classList.add('sidebar__section')\n\n if (section.label) {\n const labelEl = document.createElement('div')\n labelEl.classList.add('sidebar__section-label')\n labelEl.textContent = section.label\n sectionEl.appendChild(labelEl)\n }\n\n for (const item of section.items) {\n const link = document.createElement('a')\n link.classList.add('sidebar__item')\n link.setAttribute('data-item-id', item.id)\n\n if (item.icon) {\n const icon = createIconSvg(this.iconSet, item.icon)\n link.appendChild(icon)\n }\n\n const label = document.createElement('span')\n label.classList.add('sidebar__item-label')\n label.textContent = item.label\n link.appendChild(label)\n\n if (item.badge !== undefined && item.badge > 0) {\n const badge = document.createElement('span')\n badge.classList.add('sidebar__badge')\n badge.setAttribute('data-badge', item.id)\n badge.textContent = String(item.badge)\n link.appendChild(badge)\n }\n\n link.addEventListener('click', () => {\n if (this.config.onNavigate) {\n this.config.onNavigate(item)\n }\n if (item.onClick) {\n item.onClick()\n }\n })\n\n sectionEl.appendChild(link)\n }\n\n this.aside.appendChild(sectionEl)\n }\n\n this.renderFooter()\n }\n\n private renderFooter(): void {\n const hasUser = this.config.user !== undefined\n const hasActions =\n this.config.footerActions !== undefined && this.config.footerActions.length > 0\n\n if (!hasUser && !hasActions) {\n return\n }\n\n const footer = document.createElement('div')\n footer.classList.add('sidebar__footer')\n\n const footerBar = document.createElement('div')\n footerBar.classList.add('sidebar__footer-bar')\n\n if (hasUser && this.config.user) {\n const userSpan = document.createElement('span')\n userSpan.classList.add('sidebar__footer-user')\n\n const nameSpan = document.createElement('span')\n nameSpan.classList.add('sidebar__footer-name')\n nameSpan.textContent = this.config.user.name\n userSpan.appendChild(nameSpan)\n\n footerBar.appendChild(userSpan)\n }\n\n if (hasActions && this.config.footerActions) {\n const iconsSpan = document.createElement('span')\n iconsSpan.classList.add('sidebar__footer-icons')\n\n for (const action of this.config.footerActions) {\n const button = document.createElement('button')\n button.classList.add('sidebar__footer-icon')\n if (action.danger === true) {\n button.classList.add('sidebar__footer-icon--danger')\n }\n button.setAttribute('aria-label', action.label)\n\n const icon = createIconSvg(this.iconSet, action.icon)\n button.appendChild(icon)\n\n if (action.onClick) {\n const handler = action.onClick\n button.addEventListener('click', () => {\n handler()\n })\n }\n\n iconsSpan.appendChild(button)\n }\n\n footerBar.appendChild(iconsSpan)\n }\n\n footer.appendChild(footerBar)\n this.aside.appendChild(footer)\n }\n\n /** Mark a nav item as active, removing active state from all others. */\n setActive(itemId: string): void {\n this.aside.querySelectorAll<HTMLElement>('.sidebar__item').forEach(el => {\n el.classList.remove('sidebar__item--active')\n })\n\n const target = this.aside.querySelector<HTMLElement>(`[data-item-id=\"${itemId}\"]`)\n if (target) {\n target.classList.add('sidebar__item--active')\n }\n }\n\n /** Update the badge count for a nav item (empty string when count is 0). */\n updateBadge(itemId: string, count: number): void {\n const badge = this.aside.querySelector<HTMLElement>(`[data-badge=\"${itemId}\"]`)\n if (badge) {\n badge.textContent = count > 0 ? String(count) : ''\n }\n }\n\n /** Toggle the sidebar between collapsed and expanded states. */\n toggleCollapse(): void {\n const isCollapsed = this.aside.classList.toggle('sidebar--collapsed')\n if (this.config.onCollapse) {\n this.config.onCollapse(isCollapsed)\n }\n }\n\n /** Collapse the sidebar. */\n collapse(): void {\n this.aside.classList.add('sidebar--collapsed')\n }\n\n /** Expand the sidebar. */\n expand(): void {\n this.aside.classList.remove('sidebar--collapsed')\n }\n\n /** Remove the sidebar from the DOM. */\n destroy(): void {\n this.aside.remove()\n }\n}\n"],"mappings":"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"}
1
+ {"version":3,"file":"component-C1Jiz1Ki.js","names":[],"sources":["../src/sidebar/component.ts"],"sourcesContent":["/**\n * SidebarComponent - Programmatic sidebar with sections, badges, and footer\n * @countermeasure/web-components/sidebar/component\n *\n * Unlike sidebar/enhance (which enhances server-rendered HTML), this module\n * builds the sidebar DOM from a config object. Use it when the sidebar\n * structure is driven entirely by client-side data.\n *\n * Usage:\n * import { SidebarComponent } from '@countermeasure/web-components/sidebar/component'\n *\n * const sidebar = new SidebarComponent({\n * container: '#sidebar-root',\n * sections: [{ id: 'main', label: 'Nav', items: [...] }],\n * user: { name: 'Alice' },\n * onNavigate: item => console.log(item.id),\n * })\n * sidebar.setActive('dashboard')\n */\n\nimport { getIconSvgInner, type IconSet } from '../icons/index'\nimport { resolveContainer } from '../primitives/utils'\nimport { type SidebarComponentConfig } from './types'\n\n/** Create an SVG element populated with icon content from the registry. */\nfunction createIconSvg(iconSet: IconSet, name: string): SVGElement {\n const svgNs = 'http://www.w3.org/2000/svg'\n const svg = document.createElementNS(svgNs, 'svg')\n svg.setAttribute('xmlns', svgNs)\n svg.setAttribute('width', '18')\n svg.setAttribute('height', '18')\n svg.setAttribute('viewBox', '0 0 24 24')\n svg.setAttribute('fill', 'none')\n svg.setAttribute('stroke', 'currentColor')\n svg.setAttribute('stroke-width', '2')\n svg.setAttribute('stroke-linecap', 'round')\n svg.setAttribute('stroke-linejoin', 'round')\n svg.classList.add('sidebar__item-icon')\n svg.setAttribute('data-icon', name)\n svg.setAttribute('aria-hidden', 'true')\n\n const inner = getIconSvgInner(iconSet, name)\n if (inner) {\n svg.innerHTML = inner\n }\n\n return svg\n}\n\nexport class SidebarComponent {\n private readonly container: HTMLElement\n private readonly aside: HTMLElement\n private readonly config: SidebarComponentConfig\n private readonly iconSet: IconSet\n\n constructor(config: SidebarComponentConfig) {\n this.config = config\n this.container = resolveContainer(config.container)\n this.iconSet = config.iconSet ?? 'lucide'\n\n this.aside = document.createElement('aside')\n this.aside.classList.add('sidebar')\n this.aside.setAttribute('data-sidebar', config.variant ?? 'app')\n\n this.render()\n this.container.appendChild(this.aside)\n }\n\n private render(): void {\n for (const section of this.config.sections) {\n const sectionEl = document.createElement('div')\n sectionEl.classList.add('sidebar__section')\n\n if (section.label) {\n const labelEl = document.createElement('div')\n labelEl.classList.add('sidebar__section-label')\n labelEl.textContent = section.label\n sectionEl.appendChild(labelEl)\n }\n\n for (const item of section.items) {\n const link = document.createElement('a')\n link.classList.add('sidebar__item')\n link.setAttribute('data-item-id', item.id)\n\n if (item.icon) {\n const icon = createIconSvg(this.iconSet, item.icon)\n link.appendChild(icon)\n }\n\n const label = document.createElement('span')\n label.classList.add('sidebar__item-label')\n label.textContent = item.label\n link.appendChild(label)\n\n if (item.badge !== undefined && item.badge > 0) {\n const badge = document.createElement('span')\n badge.classList.add('sidebar__badge')\n badge.setAttribute('data-badge', item.id)\n badge.textContent = String(item.badge)\n link.appendChild(badge)\n }\n\n link.addEventListener('click', () => {\n if (this.config.onNavigate) {\n this.config.onNavigate(item)\n }\n if (item.onClick) {\n item.onClick()\n }\n })\n\n sectionEl.appendChild(link)\n }\n\n this.aside.appendChild(sectionEl)\n }\n\n this.renderFooter()\n }\n\n private renderFooter(): void {\n const hasUser = this.config.user !== undefined\n const hasActions =\n this.config.footerActions !== undefined && this.config.footerActions.length > 0\n\n if (!hasUser && !hasActions) {\n return\n }\n\n const footer = document.createElement('div')\n footer.classList.add('sidebar__footer')\n\n const footerBar = document.createElement('div')\n footerBar.classList.add('sidebar__footer-bar')\n\n if (hasUser && this.config.user) {\n const userSpan = document.createElement('span')\n userSpan.classList.add('sidebar__footer-user')\n\n const nameSpan = document.createElement('span')\n nameSpan.classList.add('sidebar__footer-name')\n nameSpan.textContent = this.config.user.name\n userSpan.appendChild(nameSpan)\n\n footerBar.appendChild(userSpan)\n }\n\n if (hasActions && this.config.footerActions) {\n const iconsSpan = document.createElement('span')\n iconsSpan.classList.add('sidebar__footer-icons')\n\n for (const action of this.config.footerActions) {\n const button = document.createElement('button')\n button.classList.add('sidebar__footer-icon')\n if (action.danger === true) {\n button.classList.add('sidebar__footer-icon--danger')\n }\n button.setAttribute('aria-label', action.label)\n\n const icon = createIconSvg(this.iconSet, action.icon)\n button.appendChild(icon)\n\n if (action.onClick) {\n const handler = action.onClick\n button.addEventListener('click', () => {\n handler()\n })\n }\n\n iconsSpan.appendChild(button)\n }\n\n footerBar.appendChild(iconsSpan)\n }\n\n footer.appendChild(footerBar)\n this.aside.appendChild(footer)\n }\n\n /** Mark a nav item as active, removing active state from all others. */\n setActive(itemId: string): void {\n this.aside.querySelectorAll<HTMLElement>('.sidebar__item').forEach(el => {\n el.classList.remove('sidebar__item--active')\n })\n\n const target = this.aside.querySelector<HTMLElement>(`[data-item-id=\"${itemId}\"]`)\n if (target) {\n target.classList.add('sidebar__item--active')\n }\n }\n\n /** Update the badge count for a nav item (empty string when count is 0). */\n updateBadge(itemId: string, count: number): void {\n const badge = this.aside.querySelector<HTMLElement>(`[data-badge=\"${itemId}\"]`)\n if (badge) {\n badge.textContent = count > 0 ? String(count) : ''\n }\n }\n\n /** Toggle the sidebar between collapsed and expanded states. */\n toggleCollapse(): void {\n const isCollapsed = this.aside.classList.toggle('sidebar--collapsed')\n if (this.config.onCollapse) {\n this.config.onCollapse(isCollapsed)\n }\n }\n\n /** Collapse the sidebar. */\n collapse(): void {\n this.aside.classList.add('sidebar--collapsed')\n }\n\n /** Expand the sidebar. */\n expand(): void {\n this.aside.classList.remove('sidebar--collapsed')\n }\n\n /** Remove the sidebar from the DOM. */\n destroy(): void {\n this.aside.remove()\n }\n}\n"],"mappings":"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"}
@@ -21,7 +21,7 @@ import { IconUsageMatrix as S } from "./theme/icon-usage-matrix.js";
21
21
  import { RadiusSlider as C } from "./theme/radius-slider.js";
22
22
  import { ThemePresetGrid as w } from "./theme/theme-preset-grid.js";
23
23
  import { ThemePreviewTile as T } from "./theme/theme-preview-tile.js";
24
- import { ThemeSwitcher as E } from "./theme/theme-switcher.js";
25
- import { ThemeStudio as D, renderThemeStudio as O } from "./theme/theme-studio.js";
24
+ import { n as E, t as D } from "../theme-studio-CN9Ipb9W.js";
25
+ import { ThemeSwitcher as O } from "./theme/theme-switcher.js";
26
26
  import { CONNECTOR_LOGO_PALETTE as k, ConnectorLogo as A, Diamond as j, Wordmark as M, createDiamondSvg as N, createWordmarkSvg as P, getBrandSizeClass as F, getConnectorLogoColor as I, getConnectorLogoInitial as L, getConnectorLogoSizeClass as R, getConnectorLogoTone as z } from "./brand/index.js";
27
- export { m as AccentSwitcher, k as CONNECTOR_LOGO_PALETTE, o as CommandPalette, A as ConnectorLogo, d as ContextMenu, l as CopyButton, e as DataTable, v as DensitySwitcher, p as DetailHeader, j as Diamond, y as FontStackPicker, b as GlassSlider, x as IconSetPicker, S as IconUsageMatrix, f as LogToolbar, i as Modal, c as Pagination, C as RadiusSlider, s as SearchInput, r as SplitPane, u as StatusBar, n as TabPanel, w as ThemePresetGrid, T as ThemePreviewTile, D as ThemeStudio, E as ThemeSwitcher, a as ToastManager, t as TreeView, M as Wordmark, h as applyAccentFromUrl, N as createDiamondSvg, P as createWordmarkSvg, F as getBrandSizeClass, I as getConnectorLogoColor, L as getConnectorLogoInitial, R as getConnectorLogoSizeClass, z as getConnectorLogoTone, g as getCurrentAccent, O as renderThemeStudio, _ as setPreviewAccent };
27
+ export { m as AccentSwitcher, k as CONNECTOR_LOGO_PALETTE, o as CommandPalette, A as ConnectorLogo, d as ContextMenu, l as CopyButton, e as DataTable, v as DensitySwitcher, p as DetailHeader, j as Diamond, y as FontStackPicker, b as GlassSlider, x as IconSetPicker, S as IconUsageMatrix, f as LogToolbar, i as Modal, c as Pagination, C as RadiusSlider, s as SearchInput, r as SplitPane, u as StatusBar, n as TabPanel, w as ThemePresetGrid, T as ThemePreviewTile, D as ThemeStudio, O as ThemeSwitcher, a as ToastManager, t as TreeView, M as Wordmark, h as applyAccentFromUrl, N as createDiamondSvg, P as createWordmarkSvg, F as getBrandSizeClass, I as getConnectorLogoColor, L as getConnectorLogoInitial, R as getConnectorLogoSizeClass, z as getConnectorLogoTone, g as getCurrentAccent, E as renderThemeStudio, _ as setPreviewAccent };
@@ -4,7 +4,9 @@ export declare function setPreviewAccent(accent: AccentId): void;
4
4
  export declare function applyAccentFromUrl(): void;
5
5
  export declare class AccentSwitcher {
6
6
  readonly el: HTMLElement;
7
+ private readonly _onThemeChange;
7
8
  constructor();
9
+ destroy(): void;
8
10
  private updateActive;
9
11
  }
10
12
  //# sourceMappingURL=accent-switcher.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"accent-switcher.d.ts","sourceRoot":"","sources":["../../../src/components/theme/accent-switcher.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAGH,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,6BAA6B,CAAA;AAe3D,wBAAgB,gBAAgB,IAAI,QAAQ,CAE3C;AAED,wBAAgB,gBAAgB,CAAC,MAAM,EAAE,QAAQ,GAAG,IAAI,CAKvD;AAED,wBAAgB,kBAAkB,IAAI,IAAI,CAMzC;AAED,qBAAa,cAAc;IACzB,SAAgB,EAAE,EAAE,WAAW,CAAA;;IAwC/B,OAAO,CAAC,YAAY;CASrB"}
1
+ {"version":3,"file":"accent-switcher.d.ts","sourceRoot":"","sources":["../../../src/components/theme/accent-switcher.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAGH,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,6BAA6B,CAAA;AAe3D,wBAAgB,gBAAgB,IAAI,QAAQ,CAE3C;AAED,wBAAgB,gBAAgB,CAAC,MAAM,EAAE,QAAQ,GAAG,IAAI,CAKvD;AAED,wBAAgB,kBAAkB,IAAI,IAAI,CAMzC;AAED,qBAAa,cAAc;IACzB,SAAgB,EAAE,EAAE,WAAW,CAAA;IAC/B,OAAO,CAAC,QAAQ,CAAC,cAAc,CAAY;;IAyC3C,OAAO,IAAI,IAAI;IAKf,OAAO,CAAC,YAAY;CASrB"}
@@ -48,6 +48,7 @@ function s() {
48
48
  }
49
49
  var c = class {
50
50
  el;
51
+ _onThemeChange;
51
52
  constructor() {
52
53
  this.el = document.createElement("div"), this.el.className = "preview-accent-switcher";
53
54
  let e = document.createElement("span");
@@ -62,7 +63,10 @@ var c = class {
62
63
  o(e.id);
63
64
  }), t.appendChild(n);
64
65
  }
65
- this.el.appendChild(t), document.addEventListener("preview:accent-change", () => this.updateActive()), document.addEventListener("cm:theme-change", () => this.updateActive()), this.updateActive();
66
+ this.el.appendChild(t), this._onThemeChange = () => this.updateActive(), document.addEventListener("preview:accent-change", this._onThemeChange), document.addEventListener("cm:theme-change", this._onThemeChange), this.updateActive();
67
+ }
68
+ destroy() {
69
+ document.removeEventListener("preview:accent-change", this._onThemeChange), document.removeEventListener("cm:theme-change", this._onThemeChange);
66
70
  }
67
71
  updateActive() {
68
72
  let e = a(), t = this.el.querySelectorAll(".preview-accent-switcher__btn");
@@ -1 +1 @@
1
- {"version":3,"file":"accent-switcher.js","names":[],"sources":["../../../src/components/theme/accent-switcher.ts"],"sourcesContent":["/**\n * Accent Switcher — preview-only accent selector for design-system adoption checks.\n *\n * Reads/writes through the theme engine. Listens to `cm:theme-change` to\n * refresh pressed state when presets / theme studio change the accent.\n */\n\nimport { ACCENT_PALETTES, getTheme, setThemePartial } from '../../services/theme-engine'\nimport type { AccentId } from '../../services/theme-engine'\n\nconst ACCENTS: ReadonlyArray<{ id: AccentId; label: string; color: string }> = [\n { id: 'orange', label: 'Orange', color: ACCENT_PALETTES.orange.brand },\n { id: 'cyan', label: 'Cyan', color: ACCENT_PALETTES.cyan.brand },\n { id: 'violet', label: 'Violet', color: ACCENT_PALETTES.violet.brand },\n { id: 'rose', label: 'Rose', color: ACCENT_PALETTES.rose.brand },\n { id: 'emerald', label: 'Emerald', color: ACCENT_PALETTES.emerald.brand },\n { id: 'amber', label: 'Amber', color: ACCENT_PALETTES.amber.brand },\n]\n\nfunction isAccent(value: string | null | undefined): value is AccentId {\n return ACCENTS.some(accent => accent.id === value)\n}\n\nexport function getCurrentAccent(): AccentId {\n return getTheme().accent\n}\n\nexport function setPreviewAccent(accent: AccentId): void {\n setThemePartial({ accent })\n if (typeof document !== 'undefined') {\n document.dispatchEvent(new CustomEvent('preview:accent-change', { detail: { accent } }))\n }\n}\n\nexport function applyAccentFromUrl(): void {\n if (typeof window === 'undefined') return\n const accent = new URLSearchParams(window.location.search).get('accent')\n if (isAccent(accent)) {\n setPreviewAccent(accent)\n }\n}\n\nexport class AccentSwitcher {\n public readonly el: HTMLElement\n\n constructor() {\n this.el = document.createElement('div')\n this.el.className = 'preview-accent-switcher'\n\n const label = document.createElement('span')\n label.className = 'preview-accent-switcher__label'\n label.textContent = 'Accent'\n this.el.appendChild(label)\n\n const buttons = document.createElement('div')\n buttons.className = 'preview-accent-switcher__buttons'\n\n for (const accent of ACCENTS) {\n const btn = document.createElement('button')\n btn.type = 'button'\n btn.className = 'preview-accent-switcher__btn'\n btn.dataset.accent = accent.id\n btn.title = accent.label\n btn.setAttribute('aria-label', `Use ${accent.label} accent`)\n\n const swatch = document.createElement('span')\n swatch.className = 'preview-accent-swatch'\n swatch.style.background = accent.color\n btn.appendChild(swatch)\n\n btn.addEventListener('click', () => {\n setPreviewAccent(accent.id)\n })\n\n buttons.appendChild(btn)\n }\n\n this.el.appendChild(buttons)\n document.addEventListener('preview:accent-change', () => this.updateActive())\n document.addEventListener('cm:theme-change', () => this.updateActive())\n this.updateActive()\n }\n\n private updateActive(): void {\n const current = getCurrentAccent()\n const buttons = this.el.querySelectorAll<HTMLButtonElement>('.preview-accent-switcher__btn')\n for (const btn of buttons) {\n const isActive = btn.dataset.accent === current\n btn.classList.toggle('preview-accent-switcher__btn--active', isActive)\n btn.setAttribute('aria-pressed', String(isActive))\n }\n }\n}\n"],"mappings":";;AAUA,IAAM,IAAyE;CAC7E;EAAE,IAAI;EAAU,OAAO;EAAU,OAAO,EAAgB,OAAO;EAAO;CACtE;EAAE,IAAI;EAAQ,OAAO;EAAQ,OAAO,EAAgB,KAAK;EAAO;CAChE;EAAE,IAAI;EAAU,OAAO;EAAU,OAAO,EAAgB,OAAO;EAAO;CACtE;EAAE,IAAI;EAAQ,OAAO;EAAQ,OAAO,EAAgB,KAAK;EAAO;CAChE;EAAE,IAAI;EAAW,OAAO;EAAW,OAAO,EAAgB,QAAQ;EAAO;CACzE;EAAE,IAAI;EAAS,OAAO;EAAS,OAAO,EAAgB,MAAM;EAAO;CACpE;AAED,SAAS,EAAS,GAAqD;AACrE,QAAO,EAAQ,MAAK,MAAU,EAAO,OAAO,EAAM;;AAGpD,SAAgB,IAA6B;AAC3C,QAAO,GAAU,CAAC;;AAGpB,SAAgB,EAAiB,GAAwB;AAEvD,CADA,EAAgB,EAAE,WAAQ,CAAC,EACvB,OAAO,WAAa,OACtB,SAAS,cAAc,IAAI,YAAY,yBAAyB,EAAE,QAAQ,EAAE,WAAQ,EAAE,CAAC,CAAC;;AAI5F,SAAgB,IAA2B;AACzC,KAAI,OAAO,SAAW,IAAa;CACnC,IAAM,IAAS,IAAI,gBAAgB,OAAO,SAAS,OAAO,CAAC,IAAI,SAAS;AACxE,CAAI,EAAS,EAAO,IAClB,EAAiB,EAAO;;AAI5B,IAAa,IAAb,MAA4B;CAC1B;CAEA,cAAc;AAEZ,EADA,KAAK,KAAK,SAAS,cAAc,MAAM,EACvC,KAAK,GAAG,YAAY;EAEpB,IAAM,IAAQ,SAAS,cAAc,OAAO;AAG5C,EAFA,EAAM,YAAY,kCAClB,EAAM,cAAc,UACpB,KAAK,GAAG,YAAY,EAAM;EAE1B,IAAM,IAAU,SAAS,cAAc,MAAM;AAC7C,IAAQ,YAAY;AAEpB,OAAK,IAAM,KAAU,GAAS;GAC5B,IAAM,IAAM,SAAS,cAAc,SAAS;AAK5C,GAJA,EAAI,OAAO,UACX,EAAI,YAAY,gCAChB,EAAI,QAAQ,SAAS,EAAO,IAC5B,EAAI,QAAQ,EAAO,OACnB,EAAI,aAAa,cAAc,OAAO,EAAO,MAAM,SAAS;GAE5D,IAAM,IAAS,SAAS,cAAc,OAAO;AAS7C,GARA,EAAO,YAAY,yBACnB,EAAO,MAAM,aAAa,EAAO,OACjC,EAAI,YAAY,EAAO,EAEvB,EAAI,iBAAiB,eAAe;AAClC,MAAiB,EAAO,GAAG;KAC3B,EAEF,EAAQ,YAAY,EAAI;;AAM1B,EAHA,KAAK,GAAG,YAAY,EAAQ,EAC5B,SAAS,iBAAiB,+BAA+B,KAAK,cAAc,CAAC,EAC7E,SAAS,iBAAiB,yBAAyB,KAAK,cAAc,CAAC,EACvE,KAAK,cAAc;;CAGrB,eAA6B;EAC3B,IAAM,IAAU,GAAkB,EAC5B,IAAU,KAAK,GAAG,iBAAoC,gCAAgC;AAC5F,OAAK,IAAM,KAAO,GAAS;GACzB,IAAM,IAAW,EAAI,QAAQ,WAAW;AAExC,GADA,EAAI,UAAU,OAAO,wCAAwC,EAAS,EACtE,EAAI,aAAa,gBAAgB,OAAO,EAAS,CAAC"}
1
+ {"version":3,"file":"accent-switcher.js","names":[],"sources":["../../../src/components/theme/accent-switcher.ts"],"sourcesContent":["/**\n * Accent Switcher — preview-only accent selector for design-system adoption checks.\n *\n * Reads/writes through the theme engine. Listens to `cm:theme-change` to\n * refresh pressed state when presets / theme studio change the accent.\n */\n\nimport { ACCENT_PALETTES, getTheme, setThemePartial } from '../../services/theme-engine'\nimport type { AccentId } from '../../services/theme-engine'\n\nconst ACCENTS: ReadonlyArray<{ id: AccentId; label: string; color: string }> = [\n { id: 'orange', label: 'Orange', color: ACCENT_PALETTES.orange.brand },\n { id: 'cyan', label: 'Cyan', color: ACCENT_PALETTES.cyan.brand },\n { id: 'violet', label: 'Violet', color: ACCENT_PALETTES.violet.brand },\n { id: 'rose', label: 'Rose', color: ACCENT_PALETTES.rose.brand },\n { id: 'emerald', label: 'Emerald', color: ACCENT_PALETTES.emerald.brand },\n { id: 'amber', label: 'Amber', color: ACCENT_PALETTES.amber.brand },\n]\n\nfunction isAccent(value: string | null | undefined): value is AccentId {\n return ACCENTS.some(accent => accent.id === value)\n}\n\nexport function getCurrentAccent(): AccentId {\n return getTheme().accent\n}\n\nexport function setPreviewAccent(accent: AccentId): void {\n setThemePartial({ accent })\n if (typeof document !== 'undefined') {\n document.dispatchEvent(new CustomEvent('preview:accent-change', { detail: { accent } }))\n }\n}\n\nexport function applyAccentFromUrl(): void {\n if (typeof window === 'undefined') return\n const accent = new URLSearchParams(window.location.search).get('accent')\n if (isAccent(accent)) {\n setPreviewAccent(accent)\n }\n}\n\nexport class AccentSwitcher {\n public readonly el: HTMLElement\n private readonly _onThemeChange: () => void\n\n constructor() {\n this.el = document.createElement('div')\n this.el.className = 'preview-accent-switcher'\n\n const label = document.createElement('span')\n label.className = 'preview-accent-switcher__label'\n label.textContent = 'Accent'\n this.el.appendChild(label)\n\n const buttons = document.createElement('div')\n buttons.className = 'preview-accent-switcher__buttons'\n\n for (const accent of ACCENTS) {\n const btn = document.createElement('button')\n btn.type = 'button'\n btn.className = 'preview-accent-switcher__btn'\n btn.dataset.accent = accent.id\n btn.title = accent.label\n btn.setAttribute('aria-label', `Use ${accent.label} accent`)\n\n const swatch = document.createElement('span')\n swatch.className = 'preview-accent-swatch'\n swatch.style.background = accent.color\n btn.appendChild(swatch)\n\n btn.addEventListener('click', () => {\n setPreviewAccent(accent.id)\n })\n\n buttons.appendChild(btn)\n }\n\n this.el.appendChild(buttons)\n this._onThemeChange = () => this.updateActive()\n document.addEventListener('preview:accent-change', this._onThemeChange)\n document.addEventListener('cm:theme-change', this._onThemeChange)\n this.updateActive()\n }\n\n destroy(): void {\n document.removeEventListener('preview:accent-change', this._onThemeChange)\n document.removeEventListener('cm:theme-change', this._onThemeChange)\n }\n\n private updateActive(): void {\n const current = getCurrentAccent()\n const buttons = this.el.querySelectorAll<HTMLButtonElement>('.preview-accent-switcher__btn')\n for (const btn of buttons) {\n const isActive = btn.dataset.accent === current\n btn.classList.toggle('preview-accent-switcher__btn--active', isActive)\n btn.setAttribute('aria-pressed', String(isActive))\n }\n }\n}\n"],"mappings":";;AAUA,IAAM,IAAyE;CAC7E;EAAE,IAAI;EAAU,OAAO;EAAU,OAAO,EAAgB,OAAO;EAAO;CACtE;EAAE,IAAI;EAAQ,OAAO;EAAQ,OAAO,EAAgB,KAAK;EAAO;CAChE;EAAE,IAAI;EAAU,OAAO;EAAU,OAAO,EAAgB,OAAO;EAAO;CACtE;EAAE,IAAI;EAAQ,OAAO;EAAQ,OAAO,EAAgB,KAAK;EAAO;CAChE;EAAE,IAAI;EAAW,OAAO;EAAW,OAAO,EAAgB,QAAQ;EAAO;CACzE;EAAE,IAAI;EAAS,OAAO;EAAS,OAAO,EAAgB,MAAM;EAAO;CACpE;AAED,SAAS,EAAS,GAAqD;AACrE,QAAO,EAAQ,MAAK,MAAU,EAAO,OAAO,EAAM;;AAGpD,SAAgB,IAA6B;AAC3C,QAAO,GAAU,CAAC;;AAGpB,SAAgB,EAAiB,GAAwB;AAEvD,CADA,EAAgB,EAAE,WAAQ,CAAC,EACvB,OAAO,WAAa,OACtB,SAAS,cAAc,IAAI,YAAY,yBAAyB,EAAE,QAAQ,EAAE,WAAQ,EAAE,CAAC,CAAC;;AAI5F,SAAgB,IAA2B;AACzC,KAAI,OAAO,SAAW,IAAa;CACnC,IAAM,IAAS,IAAI,gBAAgB,OAAO,SAAS,OAAO,CAAC,IAAI,SAAS;AACxE,CAAI,EAAS,EAAO,IAClB,EAAiB,EAAO;;AAI5B,IAAa,IAAb,MAA4B;CAC1B;CACA;CAEA,cAAc;AAEZ,EADA,KAAK,KAAK,SAAS,cAAc,MAAM,EACvC,KAAK,GAAG,YAAY;EAEpB,IAAM,IAAQ,SAAS,cAAc,OAAO;AAG5C,EAFA,EAAM,YAAY,kCAClB,EAAM,cAAc,UACpB,KAAK,GAAG,YAAY,EAAM;EAE1B,IAAM,IAAU,SAAS,cAAc,MAAM;AAC7C,IAAQ,YAAY;AAEpB,OAAK,IAAM,KAAU,GAAS;GAC5B,IAAM,IAAM,SAAS,cAAc,SAAS;AAK5C,GAJA,EAAI,OAAO,UACX,EAAI,YAAY,gCAChB,EAAI,QAAQ,SAAS,EAAO,IAC5B,EAAI,QAAQ,EAAO,OACnB,EAAI,aAAa,cAAc,OAAO,EAAO,MAAM,SAAS;GAE5D,IAAM,IAAS,SAAS,cAAc,OAAO;AAS7C,GARA,EAAO,YAAY,yBACnB,EAAO,MAAM,aAAa,EAAO,OACjC,EAAI,YAAY,EAAO,EAEvB,EAAI,iBAAiB,eAAe;AAClC,MAAiB,EAAO,GAAG;KAC3B,EAEF,EAAQ,YAAY,EAAI;;AAO1B,EAJA,KAAK,GAAG,YAAY,EAAQ,EAC5B,KAAK,uBAAuB,KAAK,cAAc,EAC/C,SAAS,iBAAiB,yBAAyB,KAAK,eAAe,EACvE,SAAS,iBAAiB,mBAAmB,KAAK,eAAe,EACjE,KAAK,cAAc;;CAGrB,UAAgB;AAEd,EADA,SAAS,oBAAoB,yBAAyB,KAAK,eAAe,EAC1E,SAAS,oBAAoB,mBAAmB,KAAK,eAAe;;CAGtE,eAA6B;EAC3B,IAAM,IAAU,GAAkB,EAC5B,IAAU,KAAK,GAAG,iBAAoC,gCAAgC;AAC5F,OAAK,IAAM,KAAO,GAAS;GACzB,IAAM,IAAW,EAAI,QAAQ,WAAW;AAExC,GADA,EAAI,UAAU,OAAO,wCAAwC,EAAS,EACtE,EAAI,aAAa,gBAAgB,OAAO,EAAS,CAAC"}
@@ -6,7 +6,9 @@
6
6
  */
7
7
  export declare class DensitySwitcher {
8
8
  readonly el: HTMLElement;
9
+ private readonly _onThemeChange;
9
10
  constructor();
11
+ destroy(): void;
10
12
  private updateActive;
11
13
  }
12
14
  //# sourceMappingURL=density-switcher.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"density-switcher.d.ts","sourceRoot":"","sources":["../../../src/components/theme/density-switcher.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAWH,qBAAa,eAAe;IAC1B,SAAgB,EAAE,EAAE,WAAW,CAAA;;IAiC/B,OAAO,CAAC,YAAY;CASrB"}
1
+ {"version":3,"file":"density-switcher.d.ts","sourceRoot":"","sources":["../../../src/components/theme/density-switcher.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAWH,qBAAa,eAAe;IAC1B,SAAgB,EAAE,EAAE,WAAW,CAAA;IAC/B,OAAO,CAAC,QAAQ,CAAC,cAAc,CAAY;;IAkC3C,OAAO,IAAI,IAAI;IAIf,OAAO,CAAC,YAAY;CASrB"}
@@ -18,6 +18,7 @@ var n = [
18
18
  }
19
19
  ], r = class {
20
20
  el;
21
+ _onThemeChange;
21
22
  constructor() {
22
23
  this.el = document.createElement("div"), this.el.className = "preview-density-switcher";
23
24
  let e = document.createElement("span");
@@ -30,7 +31,10 @@ var n = [
30
31
  t({ density: e.id });
31
32
  }), r.appendChild(n);
32
33
  }
33
- this.el.appendChild(r), document.addEventListener("cm:theme-change", () => this.updateActive()), this.updateActive();
34
+ this.el.appendChild(r), this._onThemeChange = () => this.updateActive(), document.addEventListener("cm:theme-change", this._onThemeChange), this.updateActive();
35
+ }
36
+ destroy() {
37
+ document.removeEventListener("cm:theme-change", this._onThemeChange);
34
38
  }
35
39
  updateActive() {
36
40
  let t = e().density, n = this.el.querySelectorAll(".preview-density-switcher__btn");
@@ -1 +1 @@
1
- {"version":3,"file":"density-switcher.js","names":[],"sources":["../../../src/components/theme/density-switcher.ts"],"sourcesContent":["/**\n * Density Switcher — three-state pill (compact / comfortable / cozy).\n * Drives `density` on the theme engine; the engine writes `--density-row`.\n *\n * Mirrors Theme.jsx density step: 32 / 36 / 42px row heights.\n */\n\nimport { getTheme, setThemePartial } from '../../services/theme-engine'\nimport type { Density } from '../../services/theme-engine'\n\nconst DENSITIES: ReadonlyArray<{ id: Density; label: string; px: number }> = [\n { id: 'compact', label: 'Compact', px: 32 },\n { id: 'comfortable', label: 'Comfortable', px: 36 },\n { id: 'cozy', label: 'Cozy', px: 42 },\n]\n\nexport class DensitySwitcher {\n public readonly el: HTMLElement\n\n constructor() {\n this.el = document.createElement('div')\n this.el.className = 'preview-density-switcher'\n\n const label = document.createElement('span')\n label.className = 'preview-density-switcher__label'\n label.textContent = 'Density'\n this.el.appendChild(label)\n\n const buttons = document.createElement('div')\n buttons.className = 'preview-density-switcher__buttons'\n\n for (const d of DENSITIES) {\n const btn = document.createElement('button')\n btn.type = 'button'\n btn.className = 'preview-density-switcher__btn'\n btn.dataset.density = d.id\n btn.textContent = d.label\n btn.title = `${d.label} (${d.px}px)`\n btn.setAttribute('aria-label', `Use ${d.label} density`)\n btn.addEventListener('click', () => {\n setThemePartial({ density: d.id })\n })\n buttons.appendChild(btn)\n }\n\n this.el.appendChild(buttons)\n document.addEventListener('cm:theme-change', () => this.updateActive())\n this.updateActive()\n }\n\n private updateActive(): void {\n const current = getTheme().density\n const buttons = this.el.querySelectorAll<HTMLButtonElement>('.preview-density-switcher__btn')\n for (const btn of buttons) {\n const active = btn.dataset.density === current\n btn.classList.toggle('preview-density-switcher__btn--active', active)\n btn.setAttribute('aria-pressed', String(active))\n }\n }\n}\n"],"mappings":";;AAUA,IAAM,IAAuE;CAC3E;EAAE,IAAI;EAAW,OAAO;EAAW,IAAI;EAAI;CAC3C;EAAE,IAAI;EAAe,OAAO;EAAe,IAAI;EAAI;CACnD;EAAE,IAAI;EAAQ,OAAO;EAAQ,IAAI;EAAI;CACtC,EAEY,IAAb,MAA6B;CAC3B;CAEA,cAAc;AAEZ,EADA,KAAK,KAAK,SAAS,cAAc,MAAM,EACvC,KAAK,GAAG,YAAY;EAEpB,IAAM,IAAQ,SAAS,cAAc,OAAO;AAG5C,EAFA,EAAM,YAAY,mCAClB,EAAM,cAAc,WACpB,KAAK,GAAG,YAAY,EAAM;EAE1B,IAAM,IAAU,SAAS,cAAc,MAAM;AAC7C,IAAQ,YAAY;AAEpB,OAAK,IAAM,KAAK,GAAW;GACzB,IAAM,IAAM,SAAS,cAAc,SAAS;AAU5C,GATA,EAAI,OAAO,UACX,EAAI,YAAY,iCAChB,EAAI,QAAQ,UAAU,EAAE,IACxB,EAAI,cAAc,EAAE,OACpB,EAAI,QAAQ,GAAG,EAAE,MAAM,IAAI,EAAE,GAAG,MAChC,EAAI,aAAa,cAAc,OAAO,EAAE,MAAM,UAAU,EACxD,EAAI,iBAAiB,eAAe;AAClC,MAAgB,EAAE,SAAS,EAAE,IAAI,CAAC;KAClC,EACF,EAAQ,YAAY,EAAI;;AAK1B,EAFA,KAAK,GAAG,YAAY,EAAQ,EAC5B,SAAS,iBAAiB,yBAAyB,KAAK,cAAc,CAAC,EACvE,KAAK,cAAc;;CAGrB,eAA6B;EAC3B,IAAM,IAAU,GAAU,CAAC,SACrB,IAAU,KAAK,GAAG,iBAAoC,iCAAiC;AAC7F,OAAK,IAAM,KAAO,GAAS;GACzB,IAAM,IAAS,EAAI,QAAQ,YAAY;AAEvC,GADA,EAAI,UAAU,OAAO,yCAAyC,EAAO,EACrE,EAAI,aAAa,gBAAgB,OAAO,EAAO,CAAC"}
1
+ {"version":3,"file":"density-switcher.js","names":[],"sources":["../../../src/components/theme/density-switcher.ts"],"sourcesContent":["/**\n * Density Switcher — three-state pill (compact / comfortable / cozy).\n * Drives `density` on the theme engine; the engine writes `--density-row`.\n *\n * Mirrors Theme.jsx density step: 32 / 36 / 42px row heights.\n */\n\nimport { getTheme, setThemePartial } from '../../services/theme-engine'\nimport type { Density } from '../../services/theme-engine'\n\nconst DENSITIES: ReadonlyArray<{ id: Density; label: string; px: number }> = [\n { id: 'compact', label: 'Compact', px: 32 },\n { id: 'comfortable', label: 'Comfortable', px: 36 },\n { id: 'cozy', label: 'Cozy', px: 42 },\n]\n\nexport class DensitySwitcher {\n public readonly el: HTMLElement\n private readonly _onThemeChange: () => void\n\n constructor() {\n this.el = document.createElement('div')\n this.el.className = 'preview-density-switcher'\n\n const label = document.createElement('span')\n label.className = 'preview-density-switcher__label'\n label.textContent = 'Density'\n this.el.appendChild(label)\n\n const buttons = document.createElement('div')\n buttons.className = 'preview-density-switcher__buttons'\n\n for (const d of DENSITIES) {\n const btn = document.createElement('button')\n btn.type = 'button'\n btn.className = 'preview-density-switcher__btn'\n btn.dataset.density = d.id\n btn.textContent = d.label\n btn.title = `${d.label} (${d.px}px)`\n btn.setAttribute('aria-label', `Use ${d.label} density`)\n btn.addEventListener('click', () => {\n setThemePartial({ density: d.id })\n })\n buttons.appendChild(btn)\n }\n\n this.el.appendChild(buttons)\n this._onThemeChange = () => this.updateActive()\n document.addEventListener('cm:theme-change', this._onThemeChange)\n this.updateActive()\n }\n\n destroy(): void {\n document.removeEventListener('cm:theme-change', this._onThemeChange)\n }\n\n private updateActive(): void {\n const current = getTheme().density\n const buttons = this.el.querySelectorAll<HTMLButtonElement>('.preview-density-switcher__btn')\n for (const btn of buttons) {\n const active = btn.dataset.density === current\n btn.classList.toggle('preview-density-switcher__btn--active', active)\n btn.setAttribute('aria-pressed', String(active))\n }\n }\n}\n"],"mappings":";;AAUA,IAAM,IAAuE;CAC3E;EAAE,IAAI;EAAW,OAAO;EAAW,IAAI;EAAI;CAC3C;EAAE,IAAI;EAAe,OAAO;EAAe,IAAI;EAAI;CACnD;EAAE,IAAI;EAAQ,OAAO;EAAQ,IAAI;EAAI;CACtC,EAEY,IAAb,MAA6B;CAC3B;CACA;CAEA,cAAc;AAEZ,EADA,KAAK,KAAK,SAAS,cAAc,MAAM,EACvC,KAAK,GAAG,YAAY;EAEpB,IAAM,IAAQ,SAAS,cAAc,OAAO;AAG5C,EAFA,EAAM,YAAY,mCAClB,EAAM,cAAc,WACpB,KAAK,GAAG,YAAY,EAAM;EAE1B,IAAM,IAAU,SAAS,cAAc,MAAM;AAC7C,IAAQ,YAAY;AAEpB,OAAK,IAAM,KAAK,GAAW;GACzB,IAAM,IAAM,SAAS,cAAc,SAAS;AAU5C,GATA,EAAI,OAAO,UACX,EAAI,YAAY,iCAChB,EAAI,QAAQ,UAAU,EAAE,IACxB,EAAI,cAAc,EAAE,OACpB,EAAI,QAAQ,GAAG,EAAE,MAAM,IAAI,EAAE,GAAG,MAChC,EAAI,aAAa,cAAc,OAAO,EAAE,MAAM,UAAU,EACxD,EAAI,iBAAiB,eAAe;AAClC,MAAgB,EAAE,SAAS,EAAE,IAAI,CAAC;KAClC,EACF,EAAQ,YAAY,EAAI;;AAM1B,EAHA,KAAK,GAAG,YAAY,EAAQ,EAC5B,KAAK,uBAAuB,KAAK,cAAc,EAC/C,SAAS,iBAAiB,mBAAmB,KAAK,eAAe,EACjE,KAAK,cAAc;;CAGrB,UAAgB;AACd,WAAS,oBAAoB,mBAAmB,KAAK,eAAe;;CAGtE,eAA6B;EAC3B,IAAM,IAAU,GAAU,CAAC,SACrB,IAAU,KAAK,GAAG,iBAAoC,iCAAiC;AAC7F,OAAK,IAAM,KAAO,GAAS;GACzB,IAAM,IAAS,EAAI,QAAQ,YAAY;AAEvC,GADA,EAAI,UAAU,OAAO,yCAAyC,EAAO,EACrE,EAAI,aAAa,gBAAgB,OAAO,EAAO,CAAC"}
@@ -7,7 +7,9 @@
7
7
  */
8
8
  export declare class FontStackPicker {
9
9
  readonly el: HTMLElement;
10
+ private readonly _onThemeChange;
10
11
  constructor();
12
+ destroy(): void;
11
13
  private render;
12
14
  private updateActive;
13
15
  }
@@ -1 +1 @@
1
- {"version":3,"file":"font-stack-picker.d.ts","sourceRoot":"","sources":["../../../src/components/theme/font-stack-picker.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAUH,qBAAa,eAAe;IAC1B,SAAgB,EAAE,EAAE,WAAW,CAAA;;IAS/B,OAAO,CAAC,MAAM;IAqCd,OAAO,CAAC,YAAY;CASrB"}
1
+ {"version":3,"file":"font-stack-picker.d.ts","sourceRoot":"","sources":["../../../src/components/theme/font-stack-picker.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAUH,qBAAa,eAAe;IAC1B,SAAgB,EAAE,EAAE,WAAW,CAAA;IAC/B,OAAO,CAAC,QAAQ,CAAC,cAAc,CAAY;;IAU3C,OAAO,IAAI,IAAI;IAIf,OAAO,CAAC,MAAM;IAqCd,OAAO,CAAC,YAAY;CASrB"}
@@ -2,8 +2,12 @@ import { FONT_STACKS as e, ensureGoogleFont as t, getTheme as n, setThemePartial
2
2
  //#region src/components/theme/font-stack-picker.ts
3
3
  var i = class {
4
4
  el;
5
+ _onThemeChange;
5
6
  constructor() {
6
- this.el = document.createElement("div"), this.el.className = "theme-studio-fonts", this.render(), document.addEventListener("cm:theme-change", () => this.updateActive());
7
+ this.el = document.createElement("div"), this.el.className = "theme-studio-fonts", this.render(), this._onThemeChange = () => this.updateActive(), document.addEventListener("cm:theme-change", this._onThemeChange);
8
+ }
9
+ destroy() {
10
+ document.removeEventListener("cm:theme-change", this._onThemeChange);
7
11
  }
8
12
  render() {
9
13
  this.el.innerHTML = "";
@@ -1 +1 @@
1
- {"version":3,"file":"font-stack-picker.js","names":[],"sources":["../../../src/components/theme/font-stack-picker.ts"],"sourcesContent":["/**\n * Font Stack Picker — 5 typography tiles (Inter / Sora / Roboto / JetBrains Mono / System).\n *\n * Each tile renders the actual font, a sample line, and a one-line description.\n * Hovering preloads the Google Font so the click feels instant. Clicking\n * commits the selection to the theme engine.\n */\n\nimport {\n FONT_STACKS,\n ensureGoogleFont,\n getTheme,\n setThemePartial,\n} from '../../services/theme-engine'\nimport type { FontId } from '../../services/theme-engine'\n\nexport class FontStackPicker {\n public readonly el: HTMLElement\n\n constructor() {\n this.el = document.createElement('div')\n this.el.className = 'theme-studio-fonts'\n this.render()\n document.addEventListener('cm:theme-change', () => this.updateActive())\n }\n\n private render(): void {\n this.el.innerHTML = ''\n const current = getTheme().font\n for (const id of Object.keys(FONT_STACKS) as FontId[]) {\n const stack = FONT_STACKS[id]\n const tile = document.createElement('button')\n tile.type = 'button'\n tile.className = 'theme-studio-font-tile'\n tile.dataset.font = id\n if (id === current) tile.classList.add('is-active')\n tile.setAttribute('aria-pressed', String(id === current))\n tile.setAttribute('aria-label', `Use ${stack.label} typeface`)\n tile.style.fontFamily = stack.display\n\n const name = document.createElement('div')\n name.className = 'theme-studio-font-tile__name'\n name.textContent = stack.label\n tile.appendChild(name)\n\n const sample = document.createElement('div')\n sample.className = 'theme-studio-font-tile__sample'\n sample.textContent = stack.sample\n tile.appendChild(sample)\n\n const desc = document.createElement('div')\n desc.className = 'theme-studio-font-tile__desc'\n desc.textContent = stack.description\n tile.appendChild(desc)\n\n tile.addEventListener('mouseenter', () => ensureGoogleFont(stack.google), { once: true })\n tile.addEventListener('focus', () => ensureGoogleFont(stack.google), { once: true })\n tile.addEventListener('click', () => setThemePartial({ font: id }))\n\n this.el.appendChild(tile)\n }\n }\n\n private updateActive(): void {\n const current = getTheme().font\n const tiles = this.el.querySelectorAll<HTMLButtonElement>('.theme-studio-font-tile')\n for (const tile of tiles) {\n const isActive = tile.dataset.font === current\n tile.classList.toggle('is-active', isActive)\n tile.setAttribute('aria-pressed', String(isActive))\n }\n }\n}\n"],"mappings":";;AAgBA,IAAa,IAAb,MAA6B;CAC3B;CAEA,cAAc;AAIZ,EAHA,KAAK,KAAK,SAAS,cAAc,MAAM,EACvC,KAAK,GAAG,YAAY,sBACpB,KAAK,QAAQ,EACb,SAAS,iBAAiB,yBAAyB,KAAK,cAAc,CAAC;;CAGzE,SAAuB;AACrB,OAAK,GAAG,YAAY;EACpB,IAAM,IAAU,GAAU,CAAC;AAC3B,OAAK,IAAM,KAAM,OAAO,KAAK,EAAY,EAAc;GACrD,IAAM,IAAQ,EAAY,IACpB,IAAO,SAAS,cAAc,SAAS;AAO7C,GANA,EAAK,OAAO,UACZ,EAAK,YAAY,0BACjB,EAAK,QAAQ,OAAO,GAChB,MAAO,KAAS,EAAK,UAAU,IAAI,YAAY,EACnD,EAAK,aAAa,gBAAgB,OAAO,MAAO,EAAQ,CAAC,EACzD,EAAK,aAAa,cAAc,OAAO,EAAM,MAAM,WAAW,EAC9D,EAAK,MAAM,aAAa,EAAM;GAE9B,IAAM,IAAO,SAAS,cAAc,MAAM;AAG1C,GAFA,EAAK,YAAY,gCACjB,EAAK,cAAc,EAAM,OACzB,EAAK,YAAY,EAAK;GAEtB,IAAM,IAAS,SAAS,cAAc,MAAM;AAG5C,GAFA,EAAO,YAAY,kCACnB,EAAO,cAAc,EAAM,QAC3B,EAAK,YAAY,EAAO;GAExB,IAAM,IAAO,SAAS,cAAc,MAAM;AAS1C,GARA,EAAK,YAAY,gCACjB,EAAK,cAAc,EAAM,aACzB,EAAK,YAAY,EAAK,EAEtB,EAAK,iBAAiB,oBAAoB,EAAiB,EAAM,OAAO,EAAE,EAAE,MAAM,IAAM,CAAC,EACzF,EAAK,iBAAiB,eAAe,EAAiB,EAAM,OAAO,EAAE,EAAE,MAAM,IAAM,CAAC,EACpF,EAAK,iBAAiB,eAAe,EAAgB,EAAE,MAAM,GAAI,CAAC,CAAC,EAEnE,KAAK,GAAG,YAAY,EAAK;;;CAI7B,eAA6B;EAC3B,IAAM,IAAU,GAAU,CAAC,MACrB,IAAQ,KAAK,GAAG,iBAAoC,0BAA0B;AACpF,OAAK,IAAM,KAAQ,GAAO;GACxB,IAAM,IAAW,EAAK,QAAQ,SAAS;AAEvC,GADA,EAAK,UAAU,OAAO,aAAa,EAAS,EAC5C,EAAK,aAAa,gBAAgB,OAAO,EAAS,CAAC"}
1
+ {"version":3,"file":"font-stack-picker.js","names":[],"sources":["../../../src/components/theme/font-stack-picker.ts"],"sourcesContent":["/**\n * Font Stack Picker — 5 typography tiles (Inter / Sora / Roboto / JetBrains Mono / System).\n *\n * Each tile renders the actual font, a sample line, and a one-line description.\n * Hovering preloads the Google Font so the click feels instant. Clicking\n * commits the selection to the theme engine.\n */\n\nimport {\n FONT_STACKS,\n ensureGoogleFont,\n getTheme,\n setThemePartial,\n} from '../../services/theme-engine'\nimport type { FontId } from '../../services/theme-engine'\n\nexport class FontStackPicker {\n public readonly el: HTMLElement\n private readonly _onThemeChange: () => void\n\n constructor() {\n this.el = document.createElement('div')\n this.el.className = 'theme-studio-fonts'\n this.render()\n this._onThemeChange = () => this.updateActive()\n document.addEventListener('cm:theme-change', this._onThemeChange)\n }\n\n destroy(): void {\n document.removeEventListener('cm:theme-change', this._onThemeChange)\n }\n\n private render(): void {\n this.el.innerHTML = ''\n const current = getTheme().font\n for (const id of Object.keys(FONT_STACKS) as FontId[]) {\n const stack = FONT_STACKS[id]\n const tile = document.createElement('button')\n tile.type = 'button'\n tile.className = 'theme-studio-font-tile'\n tile.dataset.font = id\n if (id === current) tile.classList.add('is-active')\n tile.setAttribute('aria-pressed', String(id === current))\n tile.setAttribute('aria-label', `Use ${stack.label} typeface`)\n tile.style.fontFamily = stack.display\n\n const name = document.createElement('div')\n name.className = 'theme-studio-font-tile__name'\n name.textContent = stack.label\n tile.appendChild(name)\n\n const sample = document.createElement('div')\n sample.className = 'theme-studio-font-tile__sample'\n sample.textContent = stack.sample\n tile.appendChild(sample)\n\n const desc = document.createElement('div')\n desc.className = 'theme-studio-font-tile__desc'\n desc.textContent = stack.description\n tile.appendChild(desc)\n\n tile.addEventListener('mouseenter', () => ensureGoogleFont(stack.google), { once: true })\n tile.addEventListener('focus', () => ensureGoogleFont(stack.google), { once: true })\n tile.addEventListener('click', () => setThemePartial({ font: id }))\n\n this.el.appendChild(tile)\n }\n }\n\n private updateActive(): void {\n const current = getTheme().font\n const tiles = this.el.querySelectorAll<HTMLButtonElement>('.theme-studio-font-tile')\n for (const tile of tiles) {\n const isActive = tile.dataset.font === current\n tile.classList.toggle('is-active', isActive)\n tile.setAttribute('aria-pressed', String(isActive))\n }\n }\n}\n"],"mappings":";;AAgBA,IAAa,IAAb,MAA6B;CAC3B;CACA;CAEA,cAAc;AAKZ,EAJA,KAAK,KAAK,SAAS,cAAc,MAAM,EACvC,KAAK,GAAG,YAAY,sBACpB,KAAK,QAAQ,EACb,KAAK,uBAAuB,KAAK,cAAc,EAC/C,SAAS,iBAAiB,mBAAmB,KAAK,eAAe;;CAGnE,UAAgB;AACd,WAAS,oBAAoB,mBAAmB,KAAK,eAAe;;CAGtE,SAAuB;AACrB,OAAK,GAAG,YAAY;EACpB,IAAM,IAAU,GAAU,CAAC;AAC3B,OAAK,IAAM,KAAM,OAAO,KAAK,EAAY,EAAc;GACrD,IAAM,IAAQ,EAAY,IACpB,IAAO,SAAS,cAAc,SAAS;AAO7C,GANA,EAAK,OAAO,UACZ,EAAK,YAAY,0BACjB,EAAK,QAAQ,OAAO,GAChB,MAAO,KAAS,EAAK,UAAU,IAAI,YAAY,EACnD,EAAK,aAAa,gBAAgB,OAAO,MAAO,EAAQ,CAAC,EACzD,EAAK,aAAa,cAAc,OAAO,EAAM,MAAM,WAAW,EAC9D,EAAK,MAAM,aAAa,EAAM;GAE9B,IAAM,IAAO,SAAS,cAAc,MAAM;AAG1C,GAFA,EAAK,YAAY,gCACjB,EAAK,cAAc,EAAM,OACzB,EAAK,YAAY,EAAK;GAEtB,IAAM,IAAS,SAAS,cAAc,MAAM;AAG5C,GAFA,EAAO,YAAY,kCACnB,EAAO,cAAc,EAAM,QAC3B,EAAK,YAAY,EAAO;GAExB,IAAM,IAAO,SAAS,cAAc,MAAM;AAS1C,GARA,EAAK,YAAY,gCACjB,EAAK,cAAc,EAAM,aACzB,EAAK,YAAY,EAAK,EAEtB,EAAK,iBAAiB,oBAAoB,EAAiB,EAAM,OAAO,EAAE,EAAE,MAAM,IAAM,CAAC,EACzF,EAAK,iBAAiB,eAAe,EAAiB,EAAM,OAAO,EAAE,EAAE,MAAM,IAAM,CAAC,EACpF,EAAK,iBAAiB,eAAe,EAAgB,EAAE,MAAM,GAAI,CAAC,CAAC,EAEnE,KAAK,GAAG,YAAY,EAAK;;;CAI7B,eAA6B;EAC3B,IAAM,IAAU,GAAU,CAAC,MACrB,IAAQ,KAAK,GAAG,iBAAoC,0BAA0B;AACpF,OAAK,IAAM,KAAQ,GAAO;GACxB,IAAM,IAAW,EAAK,QAAQ,SAAS;AAEvC,GADA,EAAK,UAAU,OAAO,aAAa,EAAS,EAC5C,EAAK,aAAa,gBAAgB,OAAO,EAAS,CAAC"}
@@ -16,7 +16,9 @@ export declare class GlassSlider {
16
16
  readonly el: HTMLElement;
17
17
  private readonly input;
18
18
  private readonly value;
19
+ private readonly _onThemeChange;
19
20
  constructor(options?: GlassSliderOptions);
21
+ destroy(): void;
20
22
  private applySliderFill;
21
23
  }
22
24
  export {};
@@ -1 +1 @@
1
- {"version":3,"file":"glass-slider.d.ts","sourceRoot":"","sources":["../../../src/components/theme/glass-slider.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAQH,UAAU,kBAAkB;IAC1B,yFAAyF;IACzF,QAAQ,CAAC,EAAE,OAAO,CAAA;CACnB;AAED,qBAAa,WAAW;IACtB,SAAgB,EAAE,EAAE,WAAW,CAAA;IAC/B,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAkB;IACxC,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAiB;gBAE3B,OAAO,GAAE,kBAAuB;IAgE5C,OAAO,CAAC,eAAe;CAIxB"}
1
+ {"version":3,"file":"glass-slider.d.ts","sourceRoot":"","sources":["../../../src/components/theme/glass-slider.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAYH,UAAU,kBAAkB;IAC1B,yFAAyF;IACzF,QAAQ,CAAC,EAAE,OAAO,CAAA;CACnB;AAED,qBAAa,WAAW;IACtB,SAAgB,EAAE,EAAE,WAAW,CAAA;IAC/B,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAkB;IACxC,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAiB;IACvC,OAAO,CAAC,QAAQ,CAAC,cAAc,CAAY;gBAE/B,OAAO,GAAE,kBAAuB;IAuE5C,OAAO,IAAI,IAAI;IAIf,OAAO,CAAC,eAAe;CAIxB"}
@@ -1,11 +1,15 @@
1
1
  import { getTheme as e, setThemePartial as t } from "../../services/theme-engine/index.js";
2
2
  //#region src/components/theme/glass-slider.ts
3
- var n = 0, r = .2, i = .01, a = class {
3
+ function n(e, t, n) {
4
+ return Math.max(t, Math.min(n, e));
5
+ }
6
+ var r = 0, i = .2, a = .01, o = class {
4
7
  el;
5
8
  input;
6
9
  value;
7
- constructor(a = {}) {
8
- let c = a.expanded === !0, l = o(e().transparency, n, r);
10
+ _onThemeChange;
11
+ constructor(o = {}) {
12
+ let c = o.expanded === !0, l = n(e().transparency, r, i);
9
13
  if (this.el = document.createElement("div"), this.el.className = c ? "preview-glass-slider preview-glass-slider--expanded" : "preview-glass-slider", !c) {
10
14
  let e = document.createElement("span");
11
15
  e.className = "preview-glass-slider__label", e.textContent = "Glass", this.el.appendChild(e);
@@ -15,29 +19,31 @@ var n = 0, r = .2, i = .01, a = class {
15
19
  let e = document.createElement("span");
16
20
  e.className = "preview-glass-slider__edge", e.textContent = "Solid", u.appendChild(e);
17
21
  }
18
- if (this.input = document.createElement("input"), this.input.type = "range", this.input.min = String(n), this.input.max = String(r), this.input.step = String(i), this.input.value = String(l), this.input.className = "preview-glass-slider__input", this.input.setAttribute("aria-label", "Surface transparency"), u.appendChild(this.input), c) {
22
+ this.input = document.createElement("input"), this.input.type = "range", this.input.min = String(r), this.input.max = String(i), this.input.step = String(a), this.input.value = String(l), this.input.className = "preview-glass-slider__input", this.input.setAttribute("aria-label", "Surface transparency");
23
+ let d = `cm-glass-value-${Math.random().toString(36).slice(2, 8)}`;
24
+ if (this.input.setAttribute("aria-describedby", d), this.input.setAttribute("aria-valuetext", `${Math.round(l * 100)}% transparency`), u.appendChild(this.input), c) {
19
25
  let e = document.createElement("span");
20
26
  e.className = "preview-glass-slider__edge", e.textContent = "Frosted", u.appendChild(e);
21
27
  }
22
- this.value = document.createElement("span"), this.value.className = "preview-glass-slider__value", this.value.textContent = s(l), u.appendChild(this.value), this.el.appendChild(u), this.applySliderFill(l), this.input.addEventListener("input", () => {
23
- t({ transparency: o(Number(this.input.value), n, r) });
24
- }), document.addEventListener("cm:theme-change", () => {
25
- let t = o(e().transparency, n, r);
26
- Number(this.input.value) !== t && (this.input.value = String(t)), this.value.textContent = s(t), this.applySliderFill(t);
27
- });
28
+ this.value = document.createElement("span"), this.value.className = "preview-glass-slider__value", this.value.id = d, this.value.setAttribute("aria-live", "polite"), this.value.textContent = s(l), u.appendChild(this.value), this.el.appendChild(u), this.applySliderFill(l), this.input.addEventListener("input", () => {
29
+ t({ transparency: n(Number(this.input.value), r, i) });
30
+ }), this._onThemeChange = () => {
31
+ let t = n(e().transparency, r, i);
32
+ this.input.value !== String(t) && (this.input.value = String(t)), this.input.setAttribute("aria-valuetext", `${Math.round(t * 100)}% transparency`), this.value.textContent = s(t), this.applySliderFill(t);
33
+ }, document.addEventListener("cm:theme-change", this._onThemeChange);
34
+ }
35
+ destroy() {
36
+ document.removeEventListener("cm:theme-change", this._onThemeChange);
28
37
  }
29
38
  applySliderFill(e) {
30
- let t = (e - n) / (r - n) * 100;
39
+ let t = (e - r) / (i - r) * 100;
31
40
  this.input.style.setProperty("--slider-pct", `${t}%`);
32
41
  }
33
42
  };
34
- function o(e, t, n) {
35
- return Number.isFinite(e) ? Math.max(t, Math.min(n, e)) : t;
36
- }
37
43
  function s(e) {
38
44
  return `${Math.round(e * 100)}%`;
39
45
  }
40
46
  //#endregion
41
- export { a as GlassSlider };
47
+ export { o as GlassSlider };
42
48
 
43
49
  //# sourceMappingURL=glass-slider.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"glass-slider.js","names":[],"sources":["../../../src/components/theme/glass-slider.ts"],"sourcesContent":["/**\n * Glass Slider — surface-transparency slider that drives `transparency` on the\n * theme engine; the engine writes `--bg-glass`, `--bg-glass-2`, `--bg-glass-3`.\n *\n * Mirrors Theme.jsx applyTheme L354-358:\n * const t = clamp(transparency, 0, 0.30);\n * root.style.setProperty('--bg-glass', `rgba(${tint}, ${t * 0.5})`);\n * root.style.setProperty('--bg-glass-2', `rgba(${tint}, ${t})`);\n * root.style.setProperty('--bg-glass-3', `rgba(${tint}, ${t * 1.75})`);\n */\n\nimport { getTheme, setThemePartial } from '../../services/theme-engine'\n\nconst MIN = 0\nconst MAX = 0.2\nconst STEP = 0.01\n\ninterface GlassSliderOptions {\n /** When true, render an inline \"Solid · slider · Frosted\" layout (Theme Studio body). */\n expanded?: boolean\n}\n\nexport class GlassSlider {\n public readonly el: HTMLElement\n private readonly input: HTMLInputElement\n private readonly value: HTMLSpanElement\n\n constructor(options: GlassSliderOptions = {}) {\n const expanded = options.expanded === true\n const initial = clamp(getTheme().transparency, MIN, MAX)\n\n this.el = document.createElement('div')\n this.el.className = expanded\n ? 'preview-glass-slider preview-glass-slider--expanded'\n : 'preview-glass-slider'\n\n if (!expanded) {\n const label = document.createElement('span')\n label.className = 'preview-glass-slider__label'\n label.textContent = 'Glass'\n this.el.appendChild(label)\n }\n\n const row = document.createElement('div')\n row.className = 'preview-glass-slider__row'\n\n if (expanded) {\n const left = document.createElement('span')\n left.className = 'preview-glass-slider__edge'\n left.textContent = 'Solid'\n row.appendChild(left)\n }\n\n this.input = document.createElement('input')\n this.input.type = 'range'\n this.input.min = String(MIN)\n this.input.max = String(MAX)\n this.input.step = String(STEP)\n this.input.value = String(initial)\n this.input.className = 'preview-glass-slider__input'\n this.input.setAttribute('aria-label', 'Surface transparency')\n row.appendChild(this.input)\n\n if (expanded) {\n const right = document.createElement('span')\n right.className = 'preview-glass-slider__edge'\n right.textContent = 'Frosted'\n row.appendChild(right)\n }\n\n this.value = document.createElement('span')\n this.value.className = 'preview-glass-slider__value'\n this.value.textContent = formatLevel(initial)\n row.appendChild(this.value)\n\n this.el.appendChild(row)\n this.applySliderFill(initial)\n\n this.input.addEventListener('input', () => {\n const next = clamp(Number(this.input.value), MIN, MAX)\n setThemePartial({ transparency: next })\n })\n\n document.addEventListener('cm:theme-change', () => {\n const t = clamp(getTheme().transparency, MIN, MAX)\n if (Number(this.input.value) !== t) this.input.value = String(t)\n this.value.textContent = formatLevel(t)\n this.applySliderFill(t)\n })\n }\n\n private applySliderFill(level: number): void {\n const pct = ((level - MIN) / (MAX - MIN)) * 100\n this.input.style.setProperty('--slider-pct', `${pct}%`)\n }\n}\n\nfunction clamp(value: number, min: number, max: number): number {\n if (!Number.isFinite(value)) return min\n return Math.max(min, Math.min(max, value))\n}\n\nfunction formatLevel(level: number): string {\n return `${Math.round(level * 100)}%`\n}\n"],"mappings":";;AAaA,IAAM,IAAM,GACN,IAAM,IACN,IAAO,KAOA,IAAb,MAAyB;CACvB;CACA;CACA;CAEA,YAAY,IAA8B,EAAE,EAAE;EAC5C,IAAM,IAAW,EAAQ,aAAa,IAChC,IAAU,EAAM,GAAU,CAAC,cAAc,GAAK,EAAI;AAOxD,MALA,KAAK,KAAK,SAAS,cAAc,MAAM,EACvC,KAAK,GAAG,YAAY,IAChB,wDACA,wBAEA,CAAC,GAAU;GACb,IAAM,IAAQ,SAAS,cAAc,OAAO;AAG5C,GAFA,EAAM,YAAY,+BAClB,EAAM,cAAc,SACpB,KAAK,GAAG,YAAY,EAAM;;EAG5B,IAAM,IAAM,SAAS,cAAc,MAAM;AAGzC,MAFA,EAAI,YAAY,6BAEZ,GAAU;GACZ,IAAM,IAAO,SAAS,cAAc,OAAO;AAG3C,GAFA,EAAK,YAAY,8BACjB,EAAK,cAAc,SACnB,EAAI,YAAY,EAAK;;AAavB,MAVA,KAAK,QAAQ,SAAS,cAAc,QAAQ,EAC5C,KAAK,MAAM,OAAO,SAClB,KAAK,MAAM,MAAM,OAAO,EAAI,EAC5B,KAAK,MAAM,MAAM,OAAO,EAAI,EAC5B,KAAK,MAAM,OAAO,OAAO,EAAK,EAC9B,KAAK,MAAM,QAAQ,OAAO,EAAQ,EAClC,KAAK,MAAM,YAAY,+BACvB,KAAK,MAAM,aAAa,cAAc,uBAAuB,EAC7D,EAAI,YAAY,KAAK,MAAM,EAEvB,GAAU;GACZ,IAAM,IAAQ,SAAS,cAAc,OAAO;AAG5C,GAFA,EAAM,YAAY,8BAClB,EAAM,cAAc,WACpB,EAAI,YAAY,EAAM;;AAgBxB,EAbA,KAAK,QAAQ,SAAS,cAAc,OAAO,EAC3C,KAAK,MAAM,YAAY,+BACvB,KAAK,MAAM,cAAc,EAAY,EAAQ,EAC7C,EAAI,YAAY,KAAK,MAAM,EAE3B,KAAK,GAAG,YAAY,EAAI,EACxB,KAAK,gBAAgB,EAAQ,EAE7B,KAAK,MAAM,iBAAiB,eAAe;AAEzC,KAAgB,EAAE,cADL,EAAM,OAAO,KAAK,MAAM,MAAM,EAAE,GAAK,EAAI,EAChB,CAAC;IACvC,EAEF,SAAS,iBAAiB,yBAAyB;GACjD,IAAM,IAAI,EAAM,GAAU,CAAC,cAAc,GAAK,EAAI;AAGlD,GAFI,OAAO,KAAK,MAAM,MAAM,KAAK,MAAG,KAAK,MAAM,QAAQ,OAAO,EAAE,GAChE,KAAK,MAAM,cAAc,EAAY,EAAE,EACvC,KAAK,gBAAgB,EAAE;IACvB;;CAGJ,gBAAwB,GAAqB;EAC3C,IAAM,KAAQ,IAAQ,MAAQ,IAAM,KAAQ;AAC5C,OAAK,MAAM,MAAM,YAAY,gBAAgB,GAAG,EAAI,GAAG;;;AAI3D,SAAS,EAAM,GAAe,GAAa,GAAqB;AAE9D,QADK,OAAO,SAAS,EAAM,GACpB,KAAK,IAAI,GAAK,KAAK,IAAI,GAAK,EAAM,CAAC,GADN;;AAItC,SAAS,EAAY,GAAuB;AAC1C,QAAO,GAAG,KAAK,MAAM,IAAQ,IAAI,CAAC"}
1
+ {"version":3,"file":"glass-slider.js","names":[],"sources":["../../../src/components/theme/glass-slider.ts"],"sourcesContent":["/**\n * Glass Slider — surface-transparency slider that drives `transparency` on the\n * theme engine; the engine writes `--bg-glass`, `--bg-glass-2`, `--bg-glass-3`.\n *\n * Mirrors Theme.jsx applyTheme L354-358:\n * const t = clamp(transparency, 0, 0.30);\n * root.style.setProperty('--bg-glass', `rgba(${tint}, ${t * 0.5})`);\n * root.style.setProperty('--bg-glass-2', `rgba(${tint}, ${t})`);\n * root.style.setProperty('--bg-glass-3', `rgba(${tint}, ${t * 1.75})`);\n */\n\nimport { getTheme, setThemePartial } from '../../services/theme-engine'\n\nfunction clamp(v: number, min: number, max: number): number {\n return Math.max(min, Math.min(max, v))\n}\n\nconst MIN = 0\nconst MAX = 0.2\nconst STEP = 0.01\n\ninterface GlassSliderOptions {\n /** When true, render an inline \"Solid · slider · Frosted\" layout (Theme Studio body). */\n expanded?: boolean\n}\n\nexport class GlassSlider {\n public readonly el: HTMLElement\n private readonly input: HTMLInputElement\n private readonly value: HTMLSpanElement\n private readonly _onThemeChange: () => void\n\n constructor(options: GlassSliderOptions = {}) {\n const expanded = options.expanded === true\n const initial = clamp(getTheme().transparency, MIN, MAX)\n\n this.el = document.createElement('div')\n this.el.className = expanded\n ? 'preview-glass-slider preview-glass-slider--expanded'\n : 'preview-glass-slider'\n\n if (!expanded) {\n const label = document.createElement('span')\n label.className = 'preview-glass-slider__label'\n label.textContent = 'Glass'\n this.el.appendChild(label)\n }\n\n const row = document.createElement('div')\n row.className = 'preview-glass-slider__row'\n\n if (expanded) {\n const left = document.createElement('span')\n left.className = 'preview-glass-slider__edge'\n left.textContent = 'Solid'\n row.appendChild(left)\n }\n\n this.input = document.createElement('input')\n this.input.type = 'range'\n this.input.min = String(MIN)\n this.input.max = String(MAX)\n this.input.step = String(STEP)\n this.input.value = String(initial)\n this.input.className = 'preview-glass-slider__input'\n this.input.setAttribute('aria-label', 'Surface transparency')\n const valueId = `cm-glass-value-${Math.random().toString(36).slice(2, 8)}`\n this.input.setAttribute('aria-describedby', valueId)\n this.input.setAttribute('aria-valuetext', `${Math.round(initial * 100)}% transparency`)\n row.appendChild(this.input)\n\n if (expanded) {\n const right = document.createElement('span')\n right.className = 'preview-glass-slider__edge'\n right.textContent = 'Frosted'\n row.appendChild(right)\n }\n\n this.value = document.createElement('span')\n this.value.className = 'preview-glass-slider__value'\n this.value.id = valueId\n this.value.setAttribute('aria-live', 'polite')\n this.value.textContent = formatLevel(initial)\n row.appendChild(this.value)\n\n this.el.appendChild(row)\n this.applySliderFill(initial)\n\n this.input.addEventListener('input', () => {\n const next = clamp(Number(this.input.value), MIN, MAX)\n setThemePartial({ transparency: next })\n })\n\n this._onThemeChange = () => {\n const t = clamp(getTheme().transparency, MIN, MAX)\n if (this.input.value !== String(t)) this.input.value = String(t)\n this.input.setAttribute('aria-valuetext', `${Math.round(t * 100)}% transparency`)\n this.value.textContent = formatLevel(t)\n this.applySliderFill(t)\n }\n document.addEventListener('cm:theme-change', this._onThemeChange)\n }\n\n destroy(): void {\n document.removeEventListener('cm:theme-change', this._onThemeChange)\n }\n\n private applySliderFill(level: number): void {\n const pct = ((level - MIN) / (MAX - MIN)) * 100\n this.input.style.setProperty('--slider-pct', `${pct}%`)\n }\n}\n\nfunction formatLevel(level: number): string {\n return `${Math.round(level * 100)}%`\n}\n"],"mappings":";;AAaA,SAAS,EAAM,GAAW,GAAa,GAAqB;AAC1D,QAAO,KAAK,IAAI,GAAK,KAAK,IAAI,GAAK,EAAE,CAAC;;AAGxC,IAAM,IAAM,GACN,IAAM,IACN,IAAO,KAOA,IAAb,MAAyB;CACvB;CACA;CACA;CACA;CAEA,YAAY,IAA8B,EAAE,EAAE;EAC5C,IAAM,IAAW,EAAQ,aAAa,IAChC,IAAU,EAAM,GAAU,CAAC,cAAc,GAAK,EAAI;AAOxD,MALA,KAAK,KAAK,SAAS,cAAc,MAAM,EACvC,KAAK,GAAG,YAAY,IAChB,wDACA,wBAEA,CAAC,GAAU;GACb,IAAM,IAAQ,SAAS,cAAc,OAAO;AAG5C,GAFA,EAAM,YAAY,+BAClB,EAAM,cAAc,SACpB,KAAK,GAAG,YAAY,EAAM;;EAG5B,IAAM,IAAM,SAAS,cAAc,MAAM;AAGzC,MAFA,EAAI,YAAY,6BAEZ,GAAU;GACZ,IAAM,IAAO,SAAS,cAAc,OAAO;AAG3C,GAFA,EAAK,YAAY,8BACjB,EAAK,cAAc,SACnB,EAAI,YAAY,EAAK;;AAUvB,EAPA,KAAK,QAAQ,SAAS,cAAc,QAAQ,EAC5C,KAAK,MAAM,OAAO,SAClB,KAAK,MAAM,MAAM,OAAO,EAAI,EAC5B,KAAK,MAAM,MAAM,OAAO,EAAI,EAC5B,KAAK,MAAM,OAAO,OAAO,EAAK,EAC9B,KAAK,MAAM,QAAQ,OAAO,EAAQ,EAClC,KAAK,MAAM,YAAY,+BACvB,KAAK,MAAM,aAAa,cAAc,uBAAuB;EAC7D,IAAM,IAAU,kBAAkB,KAAK,QAAQ,CAAC,SAAS,GAAG,CAAC,MAAM,GAAG,EAAE;AAKxE,MAJA,KAAK,MAAM,aAAa,oBAAoB,EAAQ,EACpD,KAAK,MAAM,aAAa,kBAAkB,GAAG,KAAK,MAAM,IAAU,IAAI,CAAC,gBAAgB,EACvF,EAAI,YAAY,KAAK,MAAM,EAEvB,GAAU;GACZ,IAAM,IAAQ,SAAS,cAAc,OAAO;AAG5C,GAFA,EAAM,YAAY,8BAClB,EAAM,cAAc,WACpB,EAAI,YAAY,EAAM;;AAyBxB,EAtBA,KAAK,QAAQ,SAAS,cAAc,OAAO,EAC3C,KAAK,MAAM,YAAY,+BACvB,KAAK,MAAM,KAAK,GAChB,KAAK,MAAM,aAAa,aAAa,SAAS,EAC9C,KAAK,MAAM,cAAc,EAAY,EAAQ,EAC7C,EAAI,YAAY,KAAK,MAAM,EAE3B,KAAK,GAAG,YAAY,EAAI,EACxB,KAAK,gBAAgB,EAAQ,EAE7B,KAAK,MAAM,iBAAiB,eAAe;AAEzC,KAAgB,EAAE,cADL,EAAM,OAAO,KAAK,MAAM,MAAM,EAAE,GAAK,EAAI,EAChB,CAAC;IACvC,EAEF,KAAK,uBAAuB;GAC1B,IAAM,IAAI,EAAM,GAAU,CAAC,cAAc,GAAK,EAAI;AAIlD,GAHI,KAAK,MAAM,UAAU,OAAO,EAAE,KAAE,KAAK,MAAM,QAAQ,OAAO,EAAE,GAChE,KAAK,MAAM,aAAa,kBAAkB,GAAG,KAAK,MAAM,IAAI,IAAI,CAAC,gBAAgB,EACjF,KAAK,MAAM,cAAc,EAAY,EAAE,EACvC,KAAK,gBAAgB,EAAE;KAEzB,SAAS,iBAAiB,mBAAmB,KAAK,eAAe;;CAGnE,UAAgB;AACd,WAAS,oBAAoB,mBAAmB,KAAK,eAAe;;CAGtE,gBAAwB,GAAqB;EAC3C,IAAM,KAAQ,IAAQ,MAAQ,IAAM,KAAQ;AAC5C,OAAK,MAAM,MAAM,YAAY,gBAAgB,GAAG,EAAI,GAAG;;;AAI3D,SAAS,EAAY,GAAuB;AAC1C,QAAO,GAAG,KAAK,MAAM,IAAQ,IAAI,CAAC"}
@@ -0,0 +1,16 @@
1
+ export declare class IconGalleryBrowser {
2
+ readonly el: HTMLElement;
3
+ private gallery;
4
+ private toggle;
5
+ private expanded;
6
+ private readonly onThemeChange;
7
+ constructor();
8
+ destroy(): void;
9
+ private render;
10
+ private toggleGallery;
11
+ private renderGallery;
12
+ private buildBrandGallerySection;
13
+ private buildGallerySection;
14
+ private buildSectionShell;
15
+ }
16
+ //# sourceMappingURL=icon-gallery-browser.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"icon-gallery-browser.d.ts","sourceRoot":"","sources":["../../../src/components/theme/icon-gallery-browser.ts"],"names":[],"mappings":"AAoEA,qBAAa,kBAAkB;IAC7B,SAAgB,EAAE,EAAE,WAAW,CAAA;IAC/B,OAAO,CAAC,OAAO,CAA2B;IAC1C,OAAO,CAAC,MAAM,CAAiC;IAC/C,OAAO,CAAC,QAAQ,CAAQ;IACxB,OAAO,CAAC,QAAQ,CAAC,aAAa,CAAY;;IAY1C,OAAO,IAAI,IAAI;IAIf,OAAO,CAAC,MAAM;IAsCd,OAAO,CAAC,aAAa;IAcrB,OAAO,CAAC,aAAa;IASrB,OAAO,CAAC,wBAAwB;IAgBhC,OAAO,CAAC,mBAAmB;IAS3B,OAAO,CAAC,iBAAiB;CAe1B"}
@@ -6,7 +6,9 @@
6
6
  */
7
7
  export declare class IconSetPicker {
8
8
  readonly el: HTMLElement;
9
+ private _onThemeChange;
9
10
  constructor();
11
+ destroy(): void;
10
12
  private render;
11
13
  private updateActive;
12
14
  }
@@ -1 +1 @@
1
- {"version":3,"file":"icon-set-picker.d.ts","sourceRoot":"","sources":["../../../src/components/theme/icon-set-picker.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AA6CH,qBAAa,aAAa;IACxB,SAAgB,EAAE,EAAE,WAAW,CAAA;;IAS/B,OAAO,CAAC,MAAM;IA0Cd,OAAO,CAAC,YAAY;CASrB"}
1
+ {"version":3,"file":"icon-set-picker.d.ts","sourceRoot":"","sources":["../../../src/components/theme/icon-set-picker.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAmDH,qBAAa,aAAa;IACxB,SAAgB,EAAE,EAAE,WAAW,CAAA;IAC/B,OAAO,CAAC,cAAc,CAA4B;;IASlD,OAAO,IAAI,IAAI;IAIf,OAAO,CAAC,MAAM;IA0Cd,OAAO,CAAC,YAAY;CASrB"}