@countermeasure-platform/web-components 1.3.3-dev.33.1 → 1.3.4-dev.35.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 (64) hide show
  1. package/README.md +31 -0
  2. package/dist/component-D5sRm1fq.js +389 -0
  3. package/dist/component-D5sRm1fq.js.map +1 -0
  4. package/dist/components/index.js +27 -27
  5. package/dist/icons/index.d.ts +12 -0
  6. package/dist/icons/index.d.ts.map +1 -1
  7. package/dist/icons/index.js +12 -0
  8. package/dist/icons/index.js.map +1 -1
  9. package/dist/index.d.ts +1 -1
  10. package/dist/index.d.ts.map +1 -1
  11. package/dist/index.js +127 -126
  12. package/dist/layout/app-shell.d.ts +50 -3
  13. package/dist/layout/app-shell.d.ts.map +1 -1
  14. package/dist/layout/app-shell.js +142 -13
  15. package/dist/layout/app-shell.js.map +1 -1
  16. package/dist/layout/core-app-chrome.d.ts +81 -0
  17. package/dist/layout/core-app-chrome.d.ts.map +1 -0
  18. package/dist/layout/core-app-chrome.js +349 -0
  19. package/dist/layout/core-app-chrome.js.map +1 -0
  20. package/dist/layout/index.d.ts +4 -2
  21. package/dist/layout/index.d.ts.map +1 -1
  22. package/dist/layout/index.js +88 -87
  23. package/dist/layout/index.js.map +1 -1
  24. package/dist/react/primitives/badge.d.ts +1 -1
  25. package/dist/react/primitives/button.d.ts +2 -2
  26. package/dist/react/primitives/copy-button.d.ts +1 -1
  27. package/dist/react/primitives/stat-card.d.ts +1 -1
  28. package/dist/react/primitives/toggle.d.ts +1 -1
  29. package/dist/react/sidebar.d.ts +4 -4
  30. package/dist/react/sidebar.d.ts.map +1 -1
  31. package/dist/react/sidebar.js +18 -16
  32. package/dist/react/sidebar.js.map +1 -1
  33. package/dist/sidebar/component.d.ts +24 -2
  34. package/dist/sidebar/component.d.ts.map +1 -1
  35. package/dist/sidebar/enhance.d.ts +8 -0
  36. package/dist/sidebar/enhance.d.ts.map +1 -1
  37. package/dist/sidebar/index.d.ts +3 -0
  38. package/dist/sidebar/index.d.ts.map +1 -1
  39. package/dist/sidebar/index.js +81 -28
  40. package/dist/sidebar/index.js.map +1 -1
  41. package/dist/sidebar/types.d.ts +126 -4
  42. package/dist/sidebar/types.d.ts.map +1 -1
  43. package/dist/styles/layout.css +252 -0
  44. package/dist/styles/sidebar.css +313 -5
  45. package/package.json +6 -1
  46. package/src/icons/icons.test.ts +9 -0
  47. package/src/icons/index.ts +12 -0
  48. package/src/index.ts +11 -0
  49. package/src/layout/app-shell.test.ts +204 -0
  50. package/src/layout/app-shell.ts +362 -3
  51. package/src/layout/core-app-chrome.test.ts +507 -0
  52. package/src/layout/core-app-chrome.ts +662 -0
  53. package/src/layout/index.ts +36 -2
  54. package/src/react/sidebar.test.tsx +104 -3
  55. package/src/react/sidebar.tsx +26 -4
  56. package/src/sidebar/component.test.ts +395 -1
  57. package/src/sidebar/component.ts +661 -86
  58. package/src/sidebar/enhance.ts +118 -0
  59. package/src/sidebar/index.ts +144 -0
  60. package/src/sidebar/types.ts +143 -4
  61. package/src/styles/layout.css +252 -0
  62. package/src/styles/sidebar.css +313 -5
  63. package/dist/component-Bxhxf21c.js +0 -167
  64. package/dist/component-Bxhxf21c.js.map +0 -1
@@ -26,17 +26,29 @@ export declare const SEMANTIC_ICON_ALIASES: {
26
26
  readonly alerts: "Siren";
27
27
  readonly analytics: "BarChart3";
28
28
  readonly api: "Code2";
29
+ readonly 'api-access': "KeyRound";
29
30
  readonly authentication: "Lock";
31
+ readonly actors: "Users";
32
+ readonly bell: "Siren";
33
+ readonly capacity: "Gauge";
34
+ readonly 'circle-help': "CircleAlert";
30
35
  readonly code: "Code2";
31
36
  readonly confidence: "ShieldCheck";
32
37
  readonly coverage: "ShieldCheck";
33
38
  readonly docs: "BookOpen";
39
+ readonly 'intel-reports': "FileText";
34
40
  readonly integrations: "Plug";
35
41
  readonly library: "BookOpen";
42
+ readonly mitre: "Grid3X3";
43
+ readonly notifications: "Siren";
36
44
  readonly passkeys: "KeyRound";
45
+ readonly pipeline: "Workflow";
37
46
  readonly platform: "Building2";
38
47
  readonly reports: "FileText";
48
+ readonly runners: "Server";
39
49
  readonly telemetry: "Activity";
50
+ readonly tenants: "Building2";
51
+ readonly theme: "Sun";
40
52
  readonly topology: "Network";
41
53
  };
42
54
  export type SemanticIconName = keyof typeof SEMANTIC_ICON_ALIASES;
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/icons/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,OAAO,EAKL,KAAK,cAAc,EACpB,MAAM,UAAU,CAAA;AAEjB,MAAM,MAAM,OAAO,GAAG,QAAQ,GAAG,WAAW,GAAG,UAAU,GAAG,UAAU,CAAA;AAEtE,2CAA2C;AAC3C,MAAM,MAAM,OAAO,GAAG,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAA;AAM5C,eAAO,MAAM,qBAAqB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAoCiB,CAAA;AAEnD,MAAM,MAAM,gBAAgB,GAAG,MAAM,OAAO,qBAAqB,CAAA;AACjE,MAAM,MAAM,QAAQ,GAAG,cAAc,GAAG,gBAAgB,CAAA;AACxD,MAAM,MAAM,QAAQ,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,CAAA;AAElD,MAAM,WAAW,WAAW;IAC1B,IAAI,EAAE,MAAM,CAAA;IACZ,IAAI,CAAC,EAAE,QAAQ,CAAA;IACf,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB,KAAK,CAAC,EAAE,MAAM,CAAA;CACf;AAED,wBAAgB,qBAAqB,CAAC,IAAI,EAAE,MAAM,GAAG,cAAc,GAAG,SAAS,CAK9E;AAgKD,eAAO,MAAM,SAAS,EAAE,MAAM,CAAC,OAAO,EAAE,OAAO,CAK9C,CAAA;AAED,wBAAgB,eAAe,CAAC,GAAG,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS,CAE9E;AAED,OAAO,EACL,iBAAiB,EACjB,iBAAiB,EACjB,iBAAiB,EACjB,qBAAqB,EACrB,gBAAgB,GACjB,MAAM,UAAU,CAAA;AACjB,YAAY,EAAE,cAAc,EAAE,MAAM,UAAU,CAAA;AAkC9C,wBAAgB,UAAU,CAAC,OAAO,EAAE,WAAW,GAAG,aAAa,CA8C9D;AAED,wBAAgB,UAAU,CAAC,OAAO,EAAE,WAAW,GAAG,MAAM,CAqCvD;AAED,qBAAa,IAAI;IACf,SAAgB,EAAE,EAAE,aAAa,CAAA;IACjC,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAa;gBAEzB,OAAO,EAAE,WAAW;IAKhC,QAAQ,IAAI,MAAM;CAGnB"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/icons/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,OAAO,EAKL,KAAK,cAAc,EACpB,MAAM,UAAU,CAAA;AAEjB,MAAM,MAAM,OAAO,GAAG,QAAQ,GAAG,WAAW,GAAG,UAAU,GAAG,UAAU,CAAA;AAEtE,2CAA2C;AAC3C,MAAM,MAAM,OAAO,GAAG,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAA;AAM5C,eAAO,MAAM,qBAAqB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAgDiB,CAAA;AAEnD,MAAM,MAAM,gBAAgB,GAAG,MAAM,OAAO,qBAAqB,CAAA;AACjE,MAAM,MAAM,QAAQ,GAAG,cAAc,GAAG,gBAAgB,CAAA;AACxD,MAAM,MAAM,QAAQ,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,CAAA;AAElD,MAAM,WAAW,WAAW;IAC1B,IAAI,EAAE,MAAM,CAAA;IACZ,IAAI,CAAC,EAAE,QAAQ,CAAA;IACf,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB,KAAK,CAAC,EAAE,MAAM,CAAA;CACf;AAED,wBAAgB,qBAAqB,CAAC,IAAI,EAAE,MAAM,GAAG,cAAc,GAAG,SAAS,CAK9E;AAgKD,eAAO,MAAM,SAAS,EAAE,MAAM,CAAC,OAAO,EAAE,OAAO,CAK9C,CAAA;AAED,wBAAgB,eAAe,CAAC,GAAG,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS,CAE9E;AAED,OAAO,EACL,iBAAiB,EACjB,iBAAiB,EACjB,iBAAiB,EACjB,qBAAqB,EACrB,gBAAgB,GACjB,MAAM,UAAU,CAAA;AACjB,YAAY,EAAE,cAAc,EAAE,MAAM,UAAU,CAAA;AAkC9C,wBAAgB,UAAU,CAAC,OAAO,EAAE,WAAW,GAAG,aAAa,CA8C9D;AAED,wBAAgB,UAAU,CAAC,OAAO,EAAE,WAAW,GAAG,MAAM,CAqCvD;AAED,qBAAa,IAAI;IACf,SAAgB,EAAE,EAAE,aAAa,CAAA;IACjC,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAa;gBAEzB,OAAO,EAAE,WAAW;IAKhC,QAAQ,IAAI,MAAM;CAGnB"}
@@ -24,17 +24,29 @@ var a = {
24
24
  alerts: "Siren",
25
25
  analytics: "BarChart3",
26
26
  api: "Code2",
27
+ "api-access": "KeyRound",
27
28
  authentication: "Lock",
29
+ actors: "Users",
30
+ bell: "Siren",
31
+ capacity: "Gauge",
32
+ "circle-help": "CircleAlert",
28
33
  code: "Code2",
29
34
  confidence: "ShieldCheck",
30
35
  coverage: "ShieldCheck",
31
36
  docs: "BookOpen",
37
+ "intel-reports": "FileText",
32
38
  integrations: "Plug",
33
39
  library: "BookOpen",
40
+ mitre: "Grid3X3",
41
+ notifications: "Siren",
34
42
  passkeys: "KeyRound",
43
+ pipeline: "Workflow",
35
44
  platform: "Building2",
36
45
  reports: "FileText",
46
+ runners: "Server",
37
47
  telemetry: "Activity",
48
+ tenants: "Building2",
49
+ theme: "Sun",
38
50
  topology: "Network"
39
51
  };
40
52
  function o(e) {
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","names":[],"sources":["../../src/icons/index.ts"],"sourcesContent":["/**\n * Icon Set Registry\n *\n * Contains SVG inner content (path data only, no wrapping <svg> tag) for 4 icon\n * styles. All icons target a 24x24 viewBox with stroke=\"currentColor\" and\n * fill=\"none\" unless the set specifies otherwise.\n *\n * Icon sets: Lucide (default), Heroicons, Phosphor, Material.\n */\n\nimport {\n LUCIDE_ICON_NAMES,\n getLucideIconPath,\n getLucideIconSvgInner,\n isLucideIconName,\n type LucideIconName,\n} from './lucide'\n\nexport type IconSet = 'lucide' | 'heroicons' | 'phosphor' | 'material'\n\n/** SVG inner markup keyed by icon name. */\nexport type IconMap = Record<string, string>\n\n// ---------------------------------------------------------------------------\n// Lucide — canonical icons plus semantic aliases for existing consumers.\n// ---------------------------------------------------------------------------\n\nexport const SEMANTIC_ICON_ALIASES = {\n dashboard: 'LayoutGrid',\n visibility: 'Eye',\n detections: 'Shield',\n intel: 'Radar',\n 'threat-actors': 'Users',\n opportunities: 'Lightbulb',\n 'threat-library': 'BookOpen',\n connectors: 'Plug',\n jobs: 'Workflow',\n settings: 'Settings',\n logout: 'LogOut',\n search: 'Search',\n help: 'CircleAlert',\n user: 'Users',\n sound: 'Activity',\n appearance: 'Sun',\n profile: 'Users',\n organization: 'Building2',\n about: 'CircleAlert',\n activity: 'Activity',\n alerts: 'Siren',\n analytics: 'BarChart3',\n api: 'Code2',\n authentication: 'Lock',\n code: 'Code2',\n confidence: 'ShieldCheck',\n coverage: 'ShieldCheck',\n docs: 'BookOpen',\n integrations: 'Plug',\n library: 'BookOpen',\n passkeys: 'KeyRound',\n platform: 'Building2',\n reports: 'FileText',\n telemetry: 'Activity',\n topology: 'Network',\n} as const satisfies Record<string, LucideIconName>\n\nexport type SemanticIconName = keyof typeof SEMANTIC_ICON_ALIASES\nexport type IconName = LucideIconName | SemanticIconName\nexport type IconSize = 12 | 14 | 16 | 18 | 20 | 24\n\nexport interface IconOptions {\n name: string\n size?: IconSize\n ariaLabel?: string\n className?: string\n title?: string\n}\n\nexport function resolveLucideIconName(name: string): LucideIconName | undefined {\n if (isLucideIconName(name)) {\n return name\n }\n return SEMANTIC_ICON_ALIASES[name as SemanticIconName]\n}\n\nfunction createLucideIconMap(): IconMap {\n const map: IconMap = {}\n\n for (const iconName of LUCIDE_ICON_NAMES) {\n const inner = getLucideIconSvgInner(iconName)\n if (inner !== undefined) {\n map[iconName] = inner\n }\n }\n\n for (const [alias, canonicalName] of Object.entries(SEMANTIC_ICON_ALIASES)) {\n const inner = getLucideIconSvgInner(canonicalName)\n if (inner !== undefined) {\n map[alias] = inner\n }\n }\n\n return map\n}\n\nconst lucide = createLucideIconMap()\n\n// ---------------------------------------------------------------------------\n// Heroicons — outline style (24x24, stroke-width 1.5)\n// ---------------------------------------------------------------------------\n\nconst heroicons: IconMap = {\n dashboard: `<path stroke-linecap=\"round\" stroke-linejoin=\"round\" stroke-width=\"1.5\" d=\"M3.75 6A2.25 2.25 0 0 1 6 3.75h2.25A2.25 2.25 0 0 1 10.5 6v2.25a2.25 2.25 0 0 1-2.25 2.25H6a2.25 2.25 0 0 1-2.25-2.25V6ZM3.75 15.75A2.25 2.25 0 0 1 6 13.5h2.25a2.25 2.25 0 0 1 2.25 2.25V18a2.25 2.25 0 0 1-2.25 2.25H6A2.25 2.25 0 0 1 3.75 18v-2.25ZM13.5 6a2.25 2.25 0 0 1 2.25-2.25H18A2.25 2.25 0 0 1 20.25 6v2.25A2.25 2.25 0 0 1 18 10.5h-2.25a2.25 2.25 0 0 1-2.25-2.25V6ZM13.5 15.75a2.25 2.25 0 0 1 2.25-2.25H18a2.25 2.25 0 0 1 2.25 2.25V18A2.25 2.25 0 0 1 18 20.25h-2.25a2.25 2.25 0 0 1-2.25-2.25v-2.25Z\"/>`,\n\n visibility: `<path stroke-linecap=\"round\" stroke-linejoin=\"round\" stroke-width=\"1.5\" d=\"M2.036 12.322a1.012 1.012 0 0 1 0-.639C3.423 7.51 7.36 4.5 12 4.5c4.638 0 8.573 3.007 9.963 7.178.07.207.07.431 0 .639C20.577 16.49 16.64 19.5 12 19.5c-4.638 0-8.573-3.007-9.963-7.178Z\"/><path stroke-linecap=\"round\" stroke-linejoin=\"round\" stroke-width=\"1.5\" d=\"M15 12a3 3 0 1 1-6 0 3 3 0 0 1 6 0Z\"/>`,\n\n detections: `<path stroke-linecap=\"round\" stroke-linejoin=\"round\" stroke-width=\"1.5\" d=\"M9 12.75 11.25 15 15 9.75m-3-7.036A11.959 11.959 0 0 1 3.598 6 11.99 11.99 0 0 0 3 9.749c0 5.592 3.824 10.29 9 11.623 5.176-1.332 9-6.03 9-11.622 0-1.31-.21-2.571-.598-3.751h-.152c-3.196 0-6.1-1.248-8.25-3.285Z\"/>`,\n\n intel: `<path stroke-linecap=\"round\" stroke-linejoin=\"round\" stroke-width=\"1.5\" d=\"M20.25 6.375c0 2.278-3.694 4.125-8.25 4.125S3.75 8.653 3.75 6.375m16.5 0c0-2.278-3.694-4.125-8.25-4.125S3.75 4.097 3.75 6.375m16.5 0v11.25c0 2.278-3.694 4.125-8.25 4.125s-8.25-1.847-8.25-4.125V6.375m16.5 5.625c0 2.278-3.694 4.125-8.25 4.125s-8.25-1.847-8.25-4.125\"/>`,\n\n 'threat-actors': `<path stroke-linecap=\"round\" stroke-linejoin=\"round\" stroke-width=\"1.5\" d=\"M12 2.25c-5.385 0-9.75 4.365-9.75 9.75s4.365 9.75 9.75 9.75 9.75-4.365 9.75-9.75S17.385 2.25 12 2.25Zm0 4.5a5.25 5.25 0 1 0 0 10.5 5.25 5.25 0 0 0 0-10.5Zm0 3a2.25 2.25 0 1 0 0 4.5 2.25 2.25 0 0 0 0-4.5Z\"/>`,\n\n opportunities: `<path stroke-linecap=\"round\" stroke-linejoin=\"round\" stroke-width=\"1.5\" d=\"M12 18v-5.25m0 0a6.01 6.01 0 0 0 1.5-.189m-1.5.189a6.01 6.01 0 0 1-1.5-.189m3.75 7.478a12.06 12.06 0 0 1-4.5 0m3.75 2.383a14.406 14.406 0 0 1-3 0M14.25 18v-.192c0-.983.658-1.823 1.508-2.316a7.5 7.5 0 1 0-7.517 0c.85.493 1.509 1.333 1.509 2.316V18\"/>`,\n\n 'threat-library': `<path stroke-linecap=\"round\" stroke-linejoin=\"round\" stroke-width=\"1.5\" d=\"M12 6.042A8.967 8.967 0 0 0 6 3.75c-1.052 0-2.062.18-3 .512v14.25A8.987 8.987 0 0 1 6 18c2.305 0 4.408.867 6 2.292m0-14.25a8.966 8.966 0 0 1 6-2.292c1.052 0 2.062.18 3 .512v14.25A8.987 8.987 0 0 0 18 18a8.967 8.967 0 0 0-6 2.292m0-14.25v14.25\"/>`,\n\n connectors: `<path stroke-linecap=\"round\" stroke-linejoin=\"round\" stroke-width=\"1.5\" d=\"M13.19 8.688a4.5 4.5 0 0 1 1.242 7.244l-4.5 4.5a4.5 4.5 0 0 1-6.364-6.364l1.757-1.757m13.35-.622 1.757-1.757a4.5 4.5 0 0 0-6.364-6.364l-4.5 4.5a4.5 4.5 0 0 0 1.242 7.244\"/>`,\n\n jobs: `<path stroke-linecap=\"round\" stroke-linejoin=\"round\" stroke-width=\"1.5\" d=\"M11.35 3.836c-.065.21-.1.433-.1.664 0 .414.336.75.75.75h4.5a.75.75 0 0 0 .75-.75 2.25 2.25 0 0 0-.1-.664m-5.8 0A2.251 2.251 0 0 1 13.5 2.25H15a2.25 2.25 0 0 1 2.15 1.586m-5.8 0c-.376.023-.75.05-1.124.08C9.095 4.01 8.25 4.973 8.25 6.108V8.25m8.9-4.414c.376.023.75.05 1.124.08 1.131.094 1.976 1.057 1.976 2.192V16.5A2.25 2.25 0 0 1 18 18.75h-2.25m-7.5-10.5H4.875c-.621 0-1.125.504-1.125 1.125v11.25c0 .621.504 1.125 1.125 1.125h9.75c.621 0 1.125-.504 1.125-1.125V18.75m-7.5-10.5h6.375c.621 0 1.125.504 1.125 1.125v9.375m-8.25-3 1.5 1.5 3-3.75\"/>`,\n\n settings: `<path stroke-linecap=\"round\" stroke-linejoin=\"round\" stroke-width=\"1.5\" d=\"M9.594 3.94c.09-.542.56-.94 1.11-.94h2.593c.55 0 1.02.398 1.11.94l.213 1.281c.063.374.313.686.645.87.074.04.147.083.22.127.325.196.72.257 1.075.124l1.217-.456a1.125 1.125 0 0 1 1.37.49l1.296 2.247a1.125 1.125 0 0 1-.26 1.431l-1.003.827c-.293.24-.438.613-.431.992a6.759 6.759 0 0 1 0 .255c-.007.378.138.75.43.99l1.005.828c.424.35.534.954.26 1.43l-1.298 2.247a1.125 1.125 0 0 1-1.369.491l-1.217-.456c-.355-.133-.75-.072-1.076.124a6.57 6.57 0 0 1-.22.128c-.331.183-.581.495-.644.869l-.213 1.28c-.09.543-.56.941-1.11.941h-2.594c-.55 0-1.02-.398-1.11-.94l-.213-1.281c-.062-.374-.312-.686-.644-.87a6.52 6.52 0 0 1-.22-.127c-.325-.196-.72-.257-1.076-.124l-1.217.456a1.125 1.125 0 0 1-1.369-.49l-1.297-2.247a1.125 1.125 0 0 1 .26-1.431l1.004-.827c.292-.24.437-.613.43-.992a6.932 6.932 0 0 1 0-.255c.007-.378-.138-.75-.43-.99l-1.004-.828a1.125 1.125 0 0 1-.26-1.43l1.297-2.247a1.125 1.125 0 0 1 1.37-.491l1.216.456c.356.133.751.072 1.076-.124.072-.044.146-.087.22-.128.332-.183.582-.495.644-.869l.214-1.281Z\"/><path stroke-linecap=\"round\" stroke-linejoin=\"round\" stroke-width=\"1.5\" d=\"M15 12a3 3 0 1 1-6 0 3 3 0 0 1 6 0Z\"/>`,\n\n logout: `<path stroke-linecap=\"round\" stroke-linejoin=\"round\" stroke-width=\"1.5\" d=\"M15.75 9V5.25A2.25 2.25 0 0 0 13.5 3h-6a2.25 2.25 0 0 0-2.25 2.25v13.5A2.25 2.25 0 0 0 7.5 21h6a2.25 2.25 0 0 0 2.25-2.25V15m3 0 3-3m0 0-3-3m3 3H9\"/>`,\n\n search: `<path stroke-linecap=\"round\" stroke-linejoin=\"round\" stroke-width=\"1.5\" d=\"m21 21-5.197-5.197m0 0A7.5 7.5 0 1 0 5.196 5.196a7.5 7.5 0 0 0 10.607 10.607Z\"/>`,\n\n help: `<path stroke-linecap=\"round\" stroke-linejoin=\"round\" stroke-width=\"1.5\" d=\"M9.879 7.519c1.171-1.025 3.071-1.025 4.242 0 1.172 1.025 1.172 2.687 0 3.712-.203.179-.43.326-.67.442-.745.361-1.45.999-1.45 1.827v.75M21 12a9 9 0 1 1-18 0 9 9 0 0 1 18 0Zm-9 5.25h.008v.008H12v-.008Z\"/>`,\n\n user: `<path stroke-linecap=\"round\" stroke-linejoin=\"round\" stroke-width=\"1.5\" d=\"M15.75 6a3.75 3.75 0 1 1-7.5 0 3.75 3.75 0 0 1 7.5 0ZM4.501 20.118a7.5 7.5 0 0 1 14.998 0A17.933 17.933 0 0 1 12 21.75c-2.676 0-5.216-.584-7.499-1.632Z\"/>`,\n\n sound: `<path stroke-linecap=\"round\" stroke-linejoin=\"round\" stroke-width=\"1.5\" d=\"M19.114 5.636a9 9 0 0 1 0 12.728M16.463 8.288a5.25 5.25 0 0 1 0 7.424M6.75 8.25l4.72-4.72a.75.75 0 0 1 1.28.53v15.88a.75.75 0 0 1-1.28.53l-4.72-4.72H4.51c-.88 0-1.704-.507-1.938-1.354A9.009 9.009 0 0 1 2.25 12c0-.83.112-1.633.322-2.396C2.806 8.756 3.63 8.25 4.51 8.25H6.75Z\"/>`,\n\n appearance: `<path stroke-linecap=\"round\" stroke-linejoin=\"round\" stroke-width=\"1.5\" d=\"M21.752 15.002A9.72 9.72 0 0 1 18 15.75c-5.385 0-9.75-4.365-9.75-9.75 0-1.33.266-2.597.748-3.752A9.753 9.753 0 0 0 3 11.25C3 16.635 7.365 21 12.75 21a9.753 9.753 0 0 0 9.002-5.998Z\"/>`,\n\n profile: `<path stroke-linecap=\"round\" stroke-linejoin=\"round\" stroke-width=\"1.5\" d=\"M17.982 18.725A7.488 7.488 0 0 0 12 15.75a7.488 7.488 0 0 0-5.982 2.975m11.963 0a9 9 0 1 0-11.963 0m11.963 0A8.966 8.966 0 0 1 12 21a8.966 8.966 0 0 1-5.982-2.275M15 9.75a3 3 0 1 1-6 0 3 3 0 0 1 6 0Z\"/>`,\n\n organization: `<path stroke-linecap=\"round\" stroke-linejoin=\"round\" stroke-width=\"1.5\" d=\"M19.5 14.25v-2.625a3.375 3.375 0 0 0-3.375-3.375h-1.5A1.125 1.125 0 0 1 13.5 7.125v-1.5a3.375 3.375 0 0 0-3.375-3.375H8.25m0 12.75h7.5m-7.5 3H12M10.5 2.25H5.625c-.621 0-1.125.504-1.125 1.125v17.25c0 .621.504 1.125 1.125 1.125h12.75c.621 0 1.125-.504 1.125-1.125V11.25a9 9 0 0 0-9-9Z\"/>`,\n\n about: `<path stroke-linecap=\"round\" stroke-linejoin=\"round\" stroke-width=\"1.5\" d=\"m11.25 11.25.041-.02a.75.75 0 0 1 1.063.852l-.708 2.836a.75.75 0 0 0 1.063.853l.041-.021M21 12a9 9 0 1 1-18 0 9 9 0 0 1 18 0Zm-9-3.75h.008v.008H12V8.25Z\"/>`,\n}\n\n// ---------------------------------------------------------------------------\n// Phosphor — regular style (24x24, stroke-width 1.5)\n// ---------------------------------------------------------------------------\n\nconst phosphor: IconMap = {\n dashboard: `<rect x=\"3\" y=\"3\" width=\"8\" height=\"8\" rx=\"1\" stroke-width=\"1.5\"/><rect x=\"13\" y=\"3\" width=\"8\" height=\"8\" rx=\"1\" stroke-width=\"1.5\"/><rect x=\"3\" y=\"13\" width=\"8\" height=\"8\" rx=\"1\" stroke-width=\"1.5\"/><rect x=\"13\" y=\"13\" width=\"8\" height=\"8\" rx=\"1\" stroke-width=\"1.5\"/>`,\n\n visibility: `<path stroke-width=\"1.5\" d=\"M12 5C5.636 5 2 12 2 12s3.636 7 10 7 10-7 10-7-3.636-7-10-7Z\"/><circle cx=\"12\" cy=\"12\" r=\"3\" stroke-width=\"1.5\"/>`,\n\n detections: `<path stroke-width=\"1.5\" d=\"M12 2.5 3 7v6c0 5.25 3.75 10.13 9 11.5 5.25-1.37 9-6.25 9-11.5V7l-9-4.5Z\"/>`,\n\n intel: `<ellipse cx=\"12\" cy=\"6\" rx=\"9\" ry=\"3.5\" stroke-width=\"1.5\"/><path stroke-width=\"1.5\" d=\"M3 6v5.5c0 1.933 4.03 3.5 9 3.5s9-1.567 9-3.5V6\"/><path stroke-width=\"1.5\" d=\"M3 11.5V17c0 1.933 4.03 3.5 9 3.5s9-1.567 9-3.5v-5.5\"/>`,\n\n 'threat-actors': `<circle cx=\"12\" cy=\"12\" r=\"10\" stroke-width=\"1.5\"/><circle cx=\"12\" cy=\"12\" r=\"6\" stroke-width=\"1.5\"/><circle cx=\"12\" cy=\"12\" r=\"2\" stroke-width=\"1.5\"/>`,\n\n opportunities: `<path stroke-width=\"1.5\" d=\"M9 21h6M9 18h6\"/><path stroke-width=\"1.5\" d=\"M15 14c.333-1 1.167-1.833 2-2.5S18.5 9.333 18.5 8a6.5 6.5 0 0 0-13 0c0 1.333.667 2.833 1.5 3.5s1.667 1.5 2 2.5\"/>`,\n\n 'threat-library': `<path stroke-width=\"1.5\" d=\"M4 19.5v-15A2.5 2.5 0 0 1 6.5 2H20v15H6.5A2.5 2.5 0 0 0 4 19.5Zm0 0A2.5 2.5 0 0 0 6.5 22H20\"/><path stroke-width=\"1.5\" d=\"M9 7h6\"/>`,\n\n connectors: `<path stroke-width=\"1.5\" d=\"M12 22v-4M9 8V3M15 8V3\"/><rect x=\"6\" y=\"8\" width=\"12\" height=\"8\" rx=\"2\" stroke-width=\"1.5\"/><path stroke-width=\"1.5\" d=\"M6 18h12\"/>`,\n\n jobs: `<rect x=\"8\" y=\"2\" width=\"8\" height=\"4\" rx=\"1\" stroke-width=\"1.5\"/><path stroke-width=\"1.5\" d=\"M16 4h3a1 1 0 0 1 1 1v16a1 1 0 0 1-1 1H5a1 1 0 0 1-1-1V5a1 1 0 0 1 1-1h3\"/><path stroke-width=\"1.5\" d=\"M9 12h6M9 16h4\"/>`,\n\n settings: `<circle cx=\"12\" cy=\"12\" r=\"3\" stroke-width=\"1.5\"/><path stroke-width=\"1.5\" d=\"M13.7 2h-3.4l-.5 2.7a7 7 0 0 0-1.7 1l-2.6-.9-1.7 3 2.1 1.8a7 7 0 0 0 0 2l-2.1 1.8 1.7 3 2.6-.9a7 7 0 0 0 1.7 1l.5 2.5h3.4l.5-2.5a7 7 0 0 0 1.7-1l2.6.9 1.7-3-2.1-1.8a7 7 0 0 0 0-2l2.1-1.8-1.7-3-2.6.9a7 7 0 0 0-1.7-1L13.7 2Z\"/>`,\n\n logout: `<path stroke-width=\"1.5\" d=\"M9 21H5a2 2 0 0 1-2-2V5a2 2 0 0 1 2-2h4\"/><path stroke-width=\"1.5\" d=\"M16 17l5-5-5-5\"/><line x1=\"21\" y1=\"12\" x2=\"9\" y2=\"12\" stroke-width=\"1.5\"/>`,\n\n search: `<circle cx=\"11\" cy=\"11\" r=\"7\" stroke-width=\"1.5\"/><path stroke-width=\"1.5\" d=\"m21 21-4.35-4.35\"/>`,\n\n help: `<circle cx=\"12\" cy=\"12\" r=\"10\" stroke-width=\"1.5\"/><path stroke-width=\"1.5\" d=\"M9.09 9a3 3 0 0 1 5.83 1c0 2-3 3-3 3\"/><circle cx=\"12\" cy=\"17\" r=\"0.5\" fill=\"currentColor\"/>`,\n\n user: `<circle cx=\"12\" cy=\"8\" r=\"4\" stroke-width=\"1.5\"/><path stroke-width=\"1.5\" d=\"M5 20c0-3.5 3.1-6 7-6s7 2.5 7 6\"/>`,\n\n sound: `<path stroke-width=\"1.5\" d=\"M11 5 6 9H2v6h4l5 4V5Z\"/><path stroke-width=\"1.5\" d=\"M15.54 8.46a5 5 0 0 1 0 7.08\"/><path stroke-width=\"1.5\" d=\"M19.07 4.93a10 10 0 0 1 0 14.14\"/>`,\n\n appearance: `<path stroke-width=\"1.5\" d=\"M12 2a10 10 0 1 0 0 20 10 10 0 0 0 0-20Z\"/><path stroke-width=\"1.5\" d=\"M12 2v20\" /><path stroke-width=\"1.5\" d=\"M12 2a10 10 0 0 1 0 20\" fill=\"currentColor\" opacity=\"0.15\"/>`,\n\n profile: `<circle cx=\"12\" cy=\"8\" r=\"4\" stroke-width=\"1.5\"/><path stroke-width=\"1.5\" d=\"M20 21v-1a6 6 0 0 0-6-6h-4a6 6 0 0 0-6 6v1\"/>`,\n\n organization: `<rect x=\"3\" y=\"3\" width=\"18\" height=\"18\" rx=\"2\" stroke-width=\"1.5\"/><path stroke-width=\"1.5\" d=\"M7 8h10M7 12h7M7 16h5\"/>`,\n\n about: `<circle cx=\"12\" cy=\"12\" r=\"10\" stroke-width=\"1.5\"/><path stroke-width=\"1.5\" d=\"M12 16v-4\"/><circle cx=\"12\" cy=\"8\" r=\"0.5\" fill=\"currentColor\"/>`,\n}\n\n// ---------------------------------------------------------------------------\n// Material — symbols outlined style (24x24, stroke-width 2)\n// ---------------------------------------------------------------------------\n\nconst material: IconMap = {\n dashboard: `<path d=\"M3 13h8V3H3v10Zm0 8h8v-6H3v6Zm10 0h8V11h-8v10Zm0-18v6h8V3h-8Z\" fill=\"currentColor\" opacity=\"0.15\"/><path stroke-width=\"1.5\" d=\"M3 13h8V3H3v10Zm0 8h8v-6H3v6Zm10 0h8V11h-8v10Zm0-18v6h8V3h-8Z\"/>`,\n\n visibility: `<path stroke-width=\"1.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M12 4.5C7 4.5 2.73 7.61 1 12c1.73 4.39 6 7.5 11 7.5s9.27-3.11 11-7.5c-1.73-4.39-6-7.5-11-7.5Z\"/><circle cx=\"12\" cy=\"12\" r=\"3.5\" stroke-width=\"1.5\"/>`,\n\n detections: `<path stroke-width=\"1.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M12 2 4 5v6.09c0 5.05 3.41 9.76 8 10.91 4.59-1.15 8-5.86 8-10.91V5l-8-3Z\"/>`,\n\n intel: `<ellipse cx=\"12\" cy=\"5.5\" rx=\"8.5\" ry=\"3\" stroke-width=\"1.5\"/><path stroke-width=\"1.5\" d=\"M3.5 5.5v5c0 1.657 3.806 3 8.5 3s8.5-1.343 8.5-3v-5\"/><path stroke-width=\"1.5\" d=\"M3.5 10.5v5c0 1.657 3.806 3 8.5 3s8.5-1.343 8.5-3v-5\"/>`,\n\n 'threat-actors': `<circle cx=\"12\" cy=\"12\" r=\"10\" stroke-width=\"1.5\"/><circle cx=\"12\" cy=\"12\" r=\"6\" stroke-width=\"1.5\"/><circle cx=\"12\" cy=\"12\" r=\"2.5\" stroke-width=\"1.5\"/>`,\n\n opportunities: `<path stroke-width=\"1.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 21h6M10 17h4\"/><path stroke-width=\"1.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M12 2a7 7 0 0 0-7 7c0 2.38 1.19 4.47 3 5.74V17h8v-2.26c1.81-1.27 3-3.36 3-5.74a7 7 0 0 0-7-7Z\"/>`,\n\n 'threat-library': `<path stroke-width=\"1.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M18 2H6a2 2 0 0 0-2 2v16a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V4a2 2 0 0 0-2-2Z\"/><path stroke-width=\"1.5\" d=\"M8 7h8M8 11h8M8 15h5\"/>`,\n\n connectors: `<path stroke-width=\"1.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M4.5 12.75l6.364-6.364a2.121 2.121 0 0 1 3 0l3.75 3.75a2.121 2.121 0 0 1 0 3L11.25 19.5\"/><path stroke-width=\"1.5\" d=\"M8 8l-4 4M20 12l-4 4M14 6l2-2M12 20l-2 2\"/>`,\n\n jobs: `<path stroke-width=\"1.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 2h6v3H9V2ZM5 5h14a1 1 0 0 1 1 1v15a1 1 0 0 1-1 1H5a1 1 0 0 1-1-1V6a1 1 0 0 1 1-1Z\"/><path stroke-width=\"1.5\" d=\"M9 12h6M9 16h4\"/>`,\n\n settings: `<path stroke-width=\"1.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M12 15a3 3 0 1 0 0-6 3 3 0 0 0 0 6Z\"/><path stroke-width=\"1.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M19.4 15a1.65 1.65 0 0 0 .33 1.82l.06.06a2 2 0 0 1-2.83 2.83l-.06-.06a1.65 1.65 0 0 0-1.82-.33 1.65 1.65 0 0 0-1 1.51V21a2 2 0 0 1-4 0v-.09A1.65 1.65 0 0 0 9 19.4a1.65 1.65 0 0 0-1.82.33l-.06.06a2 2 0 0 1-2.83-2.83l.06-.06a1.65 1.65 0 0 0 .33-1.82 1.65 1.65 0 0 0-1.51-1V14a2 2 0 0 1 0-4h.09A1.65 1.65 0 0 0 4.6 9a1.65 1.65 0 0 0-.33-1.82l-.06-.06a2 2 0 0 1 2.83-2.83l.06.06a1.65 1.65 0 0 0 1.82.33H9a1.65 1.65 0 0 0 1-1.51V3a2 2 0 0 1 4 0v.09a1.65 1.65 0 0 0 1 1.51 1.65 1.65 0 0 0 1.82-.33l.06-.06a2 2 0 0 1 2.83 2.83l-.06.06a1.65 1.65 0 0 0-.33 1.82V9c.26.604.852.997 1.51 1H21a2 2 0 0 1 0 4h-.09a1.65 1.65 0 0 0-1.51 1Z\"/>`,\n\n logout: `<path stroke-width=\"1.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 21H5a2 2 0 0 1-2-2V5a2 2 0 0 1 2-2h4M16 17l5-5-5-5M21 12H9\"/>`,\n\n search: `<circle cx=\"10.5\" cy=\"10.5\" r=\"7\" stroke-width=\"1.5\"/><path stroke-width=\"1.5\" stroke-linecap=\"round\" d=\"m21 21-4.95-4.95\"/>`,\n\n help: `<circle cx=\"12\" cy=\"12\" r=\"10\" stroke-width=\"1.5\"/><path stroke-width=\"1.5\" stroke-linecap=\"round\" d=\"M9 9a3 3 0 1 1 3.6 2.94c-.6.12-1.1.54-1.1 1.16v.9\"/><circle cx=\"12\" cy=\"17\" r=\"0.5\" fill=\"currentColor\"/>`,\n\n user: `<path stroke-width=\"1.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M12 12a4 4 0 1 0 0-8 4 4 0 0 0 0 8Zm-8 9c0-3.5 3.6-6.5 8-6.5s8 3 8 6.5\"/>`,\n\n sound: `<path stroke-width=\"1.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M3 9v6h4l5 5V4L7 9H3Z\"/><path stroke-width=\"1.5\" stroke-linecap=\"round\" d=\"M16.5 7.5a6.5 6.5 0 0 1 0 9M19.5 4.5a11 11 0 0 1 0 15\"/>`,\n\n appearance: `<circle cx=\"12\" cy=\"12\" r=\"10\" stroke-width=\"1.5\"/><path stroke-width=\"1.5\" d=\"M12 2v20\"/><path d=\"M12 2a10 10 0 0 1 0 20\" fill=\"currentColor\" opacity=\"0.15\"/>`,\n\n profile: `<path stroke-width=\"1.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M12 2a10 10 0 1 0 0 20 10 10 0 0 0 0-20Z\"/><circle cx=\"12\" cy=\"9\" r=\"3\" stroke-width=\"1.5\"/><path stroke-width=\"1.5\" d=\"M6.168 18.849A5.992 5.992 0 0 1 12 15a5.992 5.992 0 0 1 5.832 3.849\"/>`,\n\n organization: `<path stroke-width=\"1.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M14 2H6a2 2 0 0 0-2 2v16a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V8l-6-6Z\"/><path stroke-width=\"1.5\" d=\"M14 2v6h6\"/><path stroke-width=\"1.5\" d=\"M8 13h8M8 17h5\"/>`,\n\n about: `<circle cx=\"12\" cy=\"12\" r=\"10\" stroke-width=\"1.5\"/><path stroke-width=\"1.5\" stroke-linecap=\"round\" d=\"M12 16v-4M12 8h.01\"/>`,\n}\n\n// ---------------------------------------------------------------------------\n// Exports\n// ---------------------------------------------------------------------------\n\nexport const ICON_SETS: Record<IconSet, IconMap> = {\n lucide,\n heroicons,\n phosphor,\n material,\n}\n\nexport function getIconSvgInner(set: IconSet, name: string): string | undefined {\n return ICON_SETS[set][name]\n}\n\nexport {\n LUCIDE_ICON_NAMES,\n LUCIDE_ICON_PATHS,\n getLucideIconPath,\n getLucideIconSvgInner,\n isLucideIconName,\n} from './lucide'\nexport type { LucideIconName } from './lucide'\n\nconst SVG_NS = 'http://www.w3.org/2000/svg'\nconst DEFAULT_ICON_SIZE: IconSize = 16\nconst ATTRIBUTE_ESCAPE: Record<string, string> = {\n '&': '&amp;',\n '<': '&lt;',\n '>': '&gt;',\n '\"': '&quot;',\n \"'\": '&#039;',\n}\n\nfunction escapeAttribute(value: string): string {\n return value.replace(/[&<>\"']/g, char => ATTRIBUTE_ESCAPE[char] ?? char)\n}\n\nfunction escapeText(value: string): string {\n return value.replace(/[&<>]/g, char => ATTRIBUTE_ESCAPE[char] ?? char)\n}\n\nfunction getAccessibleLabel(options: IconOptions): string | undefined {\n return options.ariaLabel ?? options.title\n}\n\nfunction buildIconClassName(size: IconSize, className?: string): string {\n return Array.from(\n new Set([\n 'cmm-icon',\n `icon-${String(size)}`,\n ...(className?.split(/\\s+/).filter(Boolean) ?? []),\n ])\n ).join(' ')\n}\n\nexport function createIcon(options: IconOptions): SVGSVGElement {\n const size = options.size ?? DEFAULT_ICON_SIZE\n const className = buildIconClassName(size, options.className)\n const svg = document.createElementNS(SVG_NS, 'svg')\n const resolvedName = resolveLucideIconName(options.name)\n const path = resolvedName === undefined ? undefined : getLucideIconPath(resolvedName)\n const accessibleLabel = getAccessibleLabel(options)\n\n svg.setAttribute('xmlns', SVG_NS)\n svg.setAttribute('width', String(size))\n svg.setAttribute('height', String(size))\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.setAttribute('focusable', 'false')\n svg.setAttribute('data-icon', options.name)\n\n if (resolvedName !== undefined) {\n svg.setAttribute('data-lucide', resolvedName)\n }\n\n svg.setAttribute('class', className)\n\n if (accessibleLabel !== undefined && accessibleLabel.length > 0) {\n svg.setAttribute('role', 'img')\n svg.setAttribute('aria-label', accessibleLabel)\n } else {\n svg.setAttribute('aria-hidden', 'true')\n }\n\n if (options.title !== undefined && options.title.length > 0) {\n const title = document.createElementNS(SVG_NS, 'title')\n title.textContent = options.title\n svg.appendChild(title)\n }\n\n if (path !== undefined) {\n const pathEl = document.createElementNS(SVG_NS, 'path')\n pathEl.setAttribute('d', path)\n svg.appendChild(pathEl)\n }\n\n return svg\n}\n\nexport function renderIcon(options: IconOptions): string {\n const size = options.size ?? DEFAULT_ICON_SIZE\n const resolvedName = resolveLucideIconName(options.name)\n const inner = resolvedName === undefined ? '' : (getLucideIconSvgInner(resolvedName) ?? '')\n const accessibleLabel = getAccessibleLabel(options)\n const className = buildIconClassName(size, options.className)\n const attrs = [\n `xmlns=\"${SVG_NS}\"`,\n `width=\"${String(size)}\"`,\n `height=\"${String(size)}\"`,\n `class=\"${escapeAttribute(className)}\"`,\n 'viewBox=\"0 0 24 24\"',\n 'fill=\"none\"',\n 'stroke=\"currentColor\"',\n 'stroke-width=\"2\"',\n 'stroke-linecap=\"round\"',\n 'stroke-linejoin=\"round\"',\n 'focusable=\"false\"',\n `data-icon=\"${escapeAttribute(options.name)}\"`,\n ]\n\n if (resolvedName !== undefined) {\n attrs.push(`data-lucide=\"${resolvedName}\"`)\n }\n\n if (accessibleLabel !== undefined && accessibleLabel.length > 0) {\n attrs.push('role=\"img\"', `aria-label=\"${escapeAttribute(accessibleLabel)}\"`)\n } else {\n attrs.push('aria-hidden=\"true\"')\n }\n\n const title =\n options.title !== undefined && options.title.length > 0\n ? `<title>${escapeText(options.title)}</title>`\n : ''\n\n return `<svg ${attrs.join(' ')}>${title}${inner}</svg>`\n}\n\nexport class Icon {\n public readonly el: SVGSVGElement\n private readonly options: IconOptions\n\n constructor(options: IconOptions) {\n this.options = { ...options }\n this.el = createIcon(options)\n }\n\n toString(): string {\n return renderIcon(this.options)\n }\n}\n"],"mappings":"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"}
1
+ {"version":3,"file":"index.js","names":[],"sources":["../../src/icons/index.ts"],"sourcesContent":["/**\n * Icon Set Registry\n *\n * Contains SVG inner content (path data only, no wrapping <svg> tag) for 4 icon\n * styles. All icons target a 24x24 viewBox with stroke=\"currentColor\" and\n * fill=\"none\" unless the set specifies otherwise.\n *\n * Icon sets: Lucide (default), Heroicons, Phosphor, Material.\n */\n\nimport {\n LUCIDE_ICON_NAMES,\n getLucideIconPath,\n getLucideIconSvgInner,\n isLucideIconName,\n type LucideIconName,\n} from './lucide'\n\nexport type IconSet = 'lucide' | 'heroicons' | 'phosphor' | 'material'\n\n/** SVG inner markup keyed by icon name. */\nexport type IconMap = Record<string, string>\n\n// ---------------------------------------------------------------------------\n// Lucide — canonical icons plus semantic aliases for existing consumers.\n// ---------------------------------------------------------------------------\n\nexport const SEMANTIC_ICON_ALIASES = {\n dashboard: 'LayoutGrid',\n visibility: 'Eye',\n detections: 'Shield',\n intel: 'Radar',\n 'threat-actors': 'Users',\n opportunities: 'Lightbulb',\n 'threat-library': 'BookOpen',\n connectors: 'Plug',\n jobs: 'Workflow',\n settings: 'Settings',\n logout: 'LogOut',\n search: 'Search',\n help: 'CircleAlert',\n user: 'Users',\n sound: 'Activity',\n appearance: 'Sun',\n profile: 'Users',\n organization: 'Building2',\n about: 'CircleAlert',\n activity: 'Activity',\n alerts: 'Siren',\n analytics: 'BarChart3',\n api: 'Code2',\n 'api-access': 'KeyRound',\n authentication: 'Lock',\n actors: 'Users',\n bell: 'Siren',\n capacity: 'Gauge',\n 'circle-help': 'CircleAlert',\n code: 'Code2',\n confidence: 'ShieldCheck',\n coverage: 'ShieldCheck',\n docs: 'BookOpen',\n 'intel-reports': 'FileText',\n integrations: 'Plug',\n library: 'BookOpen',\n mitre: 'Grid3X3',\n notifications: 'Siren',\n passkeys: 'KeyRound',\n pipeline: 'Workflow',\n platform: 'Building2',\n reports: 'FileText',\n runners: 'Server',\n telemetry: 'Activity',\n tenants: 'Building2',\n theme: 'Sun',\n topology: 'Network',\n} as const satisfies Record<string, LucideIconName>\n\nexport type SemanticIconName = keyof typeof SEMANTIC_ICON_ALIASES\nexport type IconName = LucideIconName | SemanticIconName\nexport type IconSize = 12 | 14 | 16 | 18 | 20 | 24\n\nexport interface IconOptions {\n name: string\n size?: IconSize\n ariaLabel?: string\n className?: string\n title?: string\n}\n\nexport function resolveLucideIconName(name: string): LucideIconName | undefined {\n if (isLucideIconName(name)) {\n return name\n }\n return SEMANTIC_ICON_ALIASES[name as SemanticIconName]\n}\n\nfunction createLucideIconMap(): IconMap {\n const map: IconMap = {}\n\n for (const iconName of LUCIDE_ICON_NAMES) {\n const inner = getLucideIconSvgInner(iconName)\n if (inner !== undefined) {\n map[iconName] = inner\n }\n }\n\n for (const [alias, canonicalName] of Object.entries(SEMANTIC_ICON_ALIASES)) {\n const inner = getLucideIconSvgInner(canonicalName)\n if (inner !== undefined) {\n map[alias] = inner\n }\n }\n\n return map\n}\n\nconst lucide = createLucideIconMap()\n\n// ---------------------------------------------------------------------------\n// Heroicons — outline style (24x24, stroke-width 1.5)\n// ---------------------------------------------------------------------------\n\nconst heroicons: IconMap = {\n dashboard: `<path stroke-linecap=\"round\" stroke-linejoin=\"round\" stroke-width=\"1.5\" d=\"M3.75 6A2.25 2.25 0 0 1 6 3.75h2.25A2.25 2.25 0 0 1 10.5 6v2.25a2.25 2.25 0 0 1-2.25 2.25H6a2.25 2.25 0 0 1-2.25-2.25V6ZM3.75 15.75A2.25 2.25 0 0 1 6 13.5h2.25a2.25 2.25 0 0 1 2.25 2.25V18a2.25 2.25 0 0 1-2.25 2.25H6A2.25 2.25 0 0 1 3.75 18v-2.25ZM13.5 6a2.25 2.25 0 0 1 2.25-2.25H18A2.25 2.25 0 0 1 20.25 6v2.25A2.25 2.25 0 0 1 18 10.5h-2.25a2.25 2.25 0 0 1-2.25-2.25V6ZM13.5 15.75a2.25 2.25 0 0 1 2.25-2.25H18a2.25 2.25 0 0 1 2.25 2.25V18A2.25 2.25 0 0 1 18 20.25h-2.25a2.25 2.25 0 0 1-2.25-2.25v-2.25Z\"/>`,\n\n visibility: `<path stroke-linecap=\"round\" stroke-linejoin=\"round\" stroke-width=\"1.5\" d=\"M2.036 12.322a1.012 1.012 0 0 1 0-.639C3.423 7.51 7.36 4.5 12 4.5c4.638 0 8.573 3.007 9.963 7.178.07.207.07.431 0 .639C20.577 16.49 16.64 19.5 12 19.5c-4.638 0-8.573-3.007-9.963-7.178Z\"/><path stroke-linecap=\"round\" stroke-linejoin=\"round\" stroke-width=\"1.5\" d=\"M15 12a3 3 0 1 1-6 0 3 3 0 0 1 6 0Z\"/>`,\n\n detections: `<path stroke-linecap=\"round\" stroke-linejoin=\"round\" stroke-width=\"1.5\" d=\"M9 12.75 11.25 15 15 9.75m-3-7.036A11.959 11.959 0 0 1 3.598 6 11.99 11.99 0 0 0 3 9.749c0 5.592 3.824 10.29 9 11.623 5.176-1.332 9-6.03 9-11.622 0-1.31-.21-2.571-.598-3.751h-.152c-3.196 0-6.1-1.248-8.25-3.285Z\"/>`,\n\n intel: `<path stroke-linecap=\"round\" stroke-linejoin=\"round\" stroke-width=\"1.5\" d=\"M20.25 6.375c0 2.278-3.694 4.125-8.25 4.125S3.75 8.653 3.75 6.375m16.5 0c0-2.278-3.694-4.125-8.25-4.125S3.75 4.097 3.75 6.375m16.5 0v11.25c0 2.278-3.694 4.125-8.25 4.125s-8.25-1.847-8.25-4.125V6.375m16.5 5.625c0 2.278-3.694 4.125-8.25 4.125s-8.25-1.847-8.25-4.125\"/>`,\n\n 'threat-actors': `<path stroke-linecap=\"round\" stroke-linejoin=\"round\" stroke-width=\"1.5\" d=\"M12 2.25c-5.385 0-9.75 4.365-9.75 9.75s4.365 9.75 9.75 9.75 9.75-4.365 9.75-9.75S17.385 2.25 12 2.25Zm0 4.5a5.25 5.25 0 1 0 0 10.5 5.25 5.25 0 0 0 0-10.5Zm0 3a2.25 2.25 0 1 0 0 4.5 2.25 2.25 0 0 0 0-4.5Z\"/>`,\n\n opportunities: `<path stroke-linecap=\"round\" stroke-linejoin=\"round\" stroke-width=\"1.5\" d=\"M12 18v-5.25m0 0a6.01 6.01 0 0 0 1.5-.189m-1.5.189a6.01 6.01 0 0 1-1.5-.189m3.75 7.478a12.06 12.06 0 0 1-4.5 0m3.75 2.383a14.406 14.406 0 0 1-3 0M14.25 18v-.192c0-.983.658-1.823 1.508-2.316a7.5 7.5 0 1 0-7.517 0c.85.493 1.509 1.333 1.509 2.316V18\"/>`,\n\n 'threat-library': `<path stroke-linecap=\"round\" stroke-linejoin=\"round\" stroke-width=\"1.5\" d=\"M12 6.042A8.967 8.967 0 0 0 6 3.75c-1.052 0-2.062.18-3 .512v14.25A8.987 8.987 0 0 1 6 18c2.305 0 4.408.867 6 2.292m0-14.25a8.966 8.966 0 0 1 6-2.292c1.052 0 2.062.18 3 .512v14.25A8.987 8.987 0 0 0 18 18a8.967 8.967 0 0 0-6 2.292m0-14.25v14.25\"/>`,\n\n connectors: `<path stroke-linecap=\"round\" stroke-linejoin=\"round\" stroke-width=\"1.5\" d=\"M13.19 8.688a4.5 4.5 0 0 1 1.242 7.244l-4.5 4.5a4.5 4.5 0 0 1-6.364-6.364l1.757-1.757m13.35-.622 1.757-1.757a4.5 4.5 0 0 0-6.364-6.364l-4.5 4.5a4.5 4.5 0 0 0 1.242 7.244\"/>`,\n\n jobs: `<path stroke-linecap=\"round\" stroke-linejoin=\"round\" stroke-width=\"1.5\" d=\"M11.35 3.836c-.065.21-.1.433-.1.664 0 .414.336.75.75.75h4.5a.75.75 0 0 0 .75-.75 2.25 2.25 0 0 0-.1-.664m-5.8 0A2.251 2.251 0 0 1 13.5 2.25H15a2.25 2.25 0 0 1 2.15 1.586m-5.8 0c-.376.023-.75.05-1.124.08C9.095 4.01 8.25 4.973 8.25 6.108V8.25m8.9-4.414c.376.023.75.05 1.124.08 1.131.094 1.976 1.057 1.976 2.192V16.5A2.25 2.25 0 0 1 18 18.75h-2.25m-7.5-10.5H4.875c-.621 0-1.125.504-1.125 1.125v11.25c0 .621.504 1.125 1.125 1.125h9.75c.621 0 1.125-.504 1.125-1.125V18.75m-7.5-10.5h6.375c.621 0 1.125.504 1.125 1.125v9.375m-8.25-3 1.5 1.5 3-3.75\"/>`,\n\n settings: `<path stroke-linecap=\"round\" stroke-linejoin=\"round\" stroke-width=\"1.5\" d=\"M9.594 3.94c.09-.542.56-.94 1.11-.94h2.593c.55 0 1.02.398 1.11.94l.213 1.281c.063.374.313.686.645.87.074.04.147.083.22.127.325.196.72.257 1.075.124l1.217-.456a1.125 1.125 0 0 1 1.37.49l1.296 2.247a1.125 1.125 0 0 1-.26 1.431l-1.003.827c-.293.24-.438.613-.431.992a6.759 6.759 0 0 1 0 .255c-.007.378.138.75.43.99l1.005.828c.424.35.534.954.26 1.43l-1.298 2.247a1.125 1.125 0 0 1-1.369.491l-1.217-.456c-.355-.133-.75-.072-1.076.124a6.57 6.57 0 0 1-.22.128c-.331.183-.581.495-.644.869l-.213 1.28c-.09.543-.56.941-1.11.941h-2.594c-.55 0-1.02-.398-1.11-.94l-.213-1.281c-.062-.374-.312-.686-.644-.87a6.52 6.52 0 0 1-.22-.127c-.325-.196-.72-.257-1.076-.124l-1.217.456a1.125 1.125 0 0 1-1.369-.49l-1.297-2.247a1.125 1.125 0 0 1 .26-1.431l1.004-.827c.292-.24.437-.613.43-.992a6.932 6.932 0 0 1 0-.255c.007-.378-.138-.75-.43-.99l-1.004-.828a1.125 1.125 0 0 1-.26-1.43l1.297-2.247a1.125 1.125 0 0 1 1.37-.491l1.216.456c.356.133.751.072 1.076-.124.072-.044.146-.087.22-.128.332-.183.582-.495.644-.869l.214-1.281Z\"/><path stroke-linecap=\"round\" stroke-linejoin=\"round\" stroke-width=\"1.5\" d=\"M15 12a3 3 0 1 1-6 0 3 3 0 0 1 6 0Z\"/>`,\n\n logout: `<path stroke-linecap=\"round\" stroke-linejoin=\"round\" stroke-width=\"1.5\" d=\"M15.75 9V5.25A2.25 2.25 0 0 0 13.5 3h-6a2.25 2.25 0 0 0-2.25 2.25v13.5A2.25 2.25 0 0 0 7.5 21h6a2.25 2.25 0 0 0 2.25-2.25V15m3 0 3-3m0 0-3-3m3 3H9\"/>`,\n\n search: `<path stroke-linecap=\"round\" stroke-linejoin=\"round\" stroke-width=\"1.5\" d=\"m21 21-5.197-5.197m0 0A7.5 7.5 0 1 0 5.196 5.196a7.5 7.5 0 0 0 10.607 10.607Z\"/>`,\n\n help: `<path stroke-linecap=\"round\" stroke-linejoin=\"round\" stroke-width=\"1.5\" d=\"M9.879 7.519c1.171-1.025 3.071-1.025 4.242 0 1.172 1.025 1.172 2.687 0 3.712-.203.179-.43.326-.67.442-.745.361-1.45.999-1.45 1.827v.75M21 12a9 9 0 1 1-18 0 9 9 0 0 1 18 0Zm-9 5.25h.008v.008H12v-.008Z\"/>`,\n\n user: `<path stroke-linecap=\"round\" stroke-linejoin=\"round\" stroke-width=\"1.5\" d=\"M15.75 6a3.75 3.75 0 1 1-7.5 0 3.75 3.75 0 0 1 7.5 0ZM4.501 20.118a7.5 7.5 0 0 1 14.998 0A17.933 17.933 0 0 1 12 21.75c-2.676 0-5.216-.584-7.499-1.632Z\"/>`,\n\n sound: `<path stroke-linecap=\"round\" stroke-linejoin=\"round\" stroke-width=\"1.5\" d=\"M19.114 5.636a9 9 0 0 1 0 12.728M16.463 8.288a5.25 5.25 0 0 1 0 7.424M6.75 8.25l4.72-4.72a.75.75 0 0 1 1.28.53v15.88a.75.75 0 0 1-1.28.53l-4.72-4.72H4.51c-.88 0-1.704-.507-1.938-1.354A9.009 9.009 0 0 1 2.25 12c0-.83.112-1.633.322-2.396C2.806 8.756 3.63 8.25 4.51 8.25H6.75Z\"/>`,\n\n appearance: `<path stroke-linecap=\"round\" stroke-linejoin=\"round\" stroke-width=\"1.5\" d=\"M21.752 15.002A9.72 9.72 0 0 1 18 15.75c-5.385 0-9.75-4.365-9.75-9.75 0-1.33.266-2.597.748-3.752A9.753 9.753 0 0 0 3 11.25C3 16.635 7.365 21 12.75 21a9.753 9.753 0 0 0 9.002-5.998Z\"/>`,\n\n profile: `<path stroke-linecap=\"round\" stroke-linejoin=\"round\" stroke-width=\"1.5\" d=\"M17.982 18.725A7.488 7.488 0 0 0 12 15.75a7.488 7.488 0 0 0-5.982 2.975m11.963 0a9 9 0 1 0-11.963 0m11.963 0A8.966 8.966 0 0 1 12 21a8.966 8.966 0 0 1-5.982-2.275M15 9.75a3 3 0 1 1-6 0 3 3 0 0 1 6 0Z\"/>`,\n\n organization: `<path stroke-linecap=\"round\" stroke-linejoin=\"round\" stroke-width=\"1.5\" d=\"M19.5 14.25v-2.625a3.375 3.375 0 0 0-3.375-3.375h-1.5A1.125 1.125 0 0 1 13.5 7.125v-1.5a3.375 3.375 0 0 0-3.375-3.375H8.25m0 12.75h7.5m-7.5 3H12M10.5 2.25H5.625c-.621 0-1.125.504-1.125 1.125v17.25c0 .621.504 1.125 1.125 1.125h12.75c.621 0 1.125-.504 1.125-1.125V11.25a9 9 0 0 0-9-9Z\"/>`,\n\n about: `<path stroke-linecap=\"round\" stroke-linejoin=\"round\" stroke-width=\"1.5\" d=\"m11.25 11.25.041-.02a.75.75 0 0 1 1.063.852l-.708 2.836a.75.75 0 0 0 1.063.853l.041-.021M21 12a9 9 0 1 1-18 0 9 9 0 0 1 18 0Zm-9-3.75h.008v.008H12V8.25Z\"/>`,\n}\n\n// ---------------------------------------------------------------------------\n// Phosphor — regular style (24x24, stroke-width 1.5)\n// ---------------------------------------------------------------------------\n\nconst phosphor: IconMap = {\n dashboard: `<rect x=\"3\" y=\"3\" width=\"8\" height=\"8\" rx=\"1\" stroke-width=\"1.5\"/><rect x=\"13\" y=\"3\" width=\"8\" height=\"8\" rx=\"1\" stroke-width=\"1.5\"/><rect x=\"3\" y=\"13\" width=\"8\" height=\"8\" rx=\"1\" stroke-width=\"1.5\"/><rect x=\"13\" y=\"13\" width=\"8\" height=\"8\" rx=\"1\" stroke-width=\"1.5\"/>`,\n\n visibility: `<path stroke-width=\"1.5\" d=\"M12 5C5.636 5 2 12 2 12s3.636 7 10 7 10-7 10-7-3.636-7-10-7Z\"/><circle cx=\"12\" cy=\"12\" r=\"3\" stroke-width=\"1.5\"/>`,\n\n detections: `<path stroke-width=\"1.5\" d=\"M12 2.5 3 7v6c0 5.25 3.75 10.13 9 11.5 5.25-1.37 9-6.25 9-11.5V7l-9-4.5Z\"/>`,\n\n intel: `<ellipse cx=\"12\" cy=\"6\" rx=\"9\" ry=\"3.5\" stroke-width=\"1.5\"/><path stroke-width=\"1.5\" d=\"M3 6v5.5c0 1.933 4.03 3.5 9 3.5s9-1.567 9-3.5V6\"/><path stroke-width=\"1.5\" d=\"M3 11.5V17c0 1.933 4.03 3.5 9 3.5s9-1.567 9-3.5v-5.5\"/>`,\n\n 'threat-actors': `<circle cx=\"12\" cy=\"12\" r=\"10\" stroke-width=\"1.5\"/><circle cx=\"12\" cy=\"12\" r=\"6\" stroke-width=\"1.5\"/><circle cx=\"12\" cy=\"12\" r=\"2\" stroke-width=\"1.5\"/>`,\n\n opportunities: `<path stroke-width=\"1.5\" d=\"M9 21h6M9 18h6\"/><path stroke-width=\"1.5\" d=\"M15 14c.333-1 1.167-1.833 2-2.5S18.5 9.333 18.5 8a6.5 6.5 0 0 0-13 0c0 1.333.667 2.833 1.5 3.5s1.667 1.5 2 2.5\"/>`,\n\n 'threat-library': `<path stroke-width=\"1.5\" d=\"M4 19.5v-15A2.5 2.5 0 0 1 6.5 2H20v15H6.5A2.5 2.5 0 0 0 4 19.5Zm0 0A2.5 2.5 0 0 0 6.5 22H20\"/><path stroke-width=\"1.5\" d=\"M9 7h6\"/>`,\n\n connectors: `<path stroke-width=\"1.5\" d=\"M12 22v-4M9 8V3M15 8V3\"/><rect x=\"6\" y=\"8\" width=\"12\" height=\"8\" rx=\"2\" stroke-width=\"1.5\"/><path stroke-width=\"1.5\" d=\"M6 18h12\"/>`,\n\n jobs: `<rect x=\"8\" y=\"2\" width=\"8\" height=\"4\" rx=\"1\" stroke-width=\"1.5\"/><path stroke-width=\"1.5\" d=\"M16 4h3a1 1 0 0 1 1 1v16a1 1 0 0 1-1 1H5a1 1 0 0 1-1-1V5a1 1 0 0 1 1-1h3\"/><path stroke-width=\"1.5\" d=\"M9 12h6M9 16h4\"/>`,\n\n settings: `<circle cx=\"12\" cy=\"12\" r=\"3\" stroke-width=\"1.5\"/><path stroke-width=\"1.5\" d=\"M13.7 2h-3.4l-.5 2.7a7 7 0 0 0-1.7 1l-2.6-.9-1.7 3 2.1 1.8a7 7 0 0 0 0 2l-2.1 1.8 1.7 3 2.6-.9a7 7 0 0 0 1.7 1l.5 2.5h3.4l.5-2.5a7 7 0 0 0 1.7-1l2.6.9 1.7-3-2.1-1.8a7 7 0 0 0 0-2l2.1-1.8-1.7-3-2.6.9a7 7 0 0 0-1.7-1L13.7 2Z\"/>`,\n\n logout: `<path stroke-width=\"1.5\" d=\"M9 21H5a2 2 0 0 1-2-2V5a2 2 0 0 1 2-2h4\"/><path stroke-width=\"1.5\" d=\"M16 17l5-5-5-5\"/><line x1=\"21\" y1=\"12\" x2=\"9\" y2=\"12\" stroke-width=\"1.5\"/>`,\n\n search: `<circle cx=\"11\" cy=\"11\" r=\"7\" stroke-width=\"1.5\"/><path stroke-width=\"1.5\" d=\"m21 21-4.35-4.35\"/>`,\n\n help: `<circle cx=\"12\" cy=\"12\" r=\"10\" stroke-width=\"1.5\"/><path stroke-width=\"1.5\" d=\"M9.09 9a3 3 0 0 1 5.83 1c0 2-3 3-3 3\"/><circle cx=\"12\" cy=\"17\" r=\"0.5\" fill=\"currentColor\"/>`,\n\n user: `<circle cx=\"12\" cy=\"8\" r=\"4\" stroke-width=\"1.5\"/><path stroke-width=\"1.5\" d=\"M5 20c0-3.5 3.1-6 7-6s7 2.5 7 6\"/>`,\n\n sound: `<path stroke-width=\"1.5\" d=\"M11 5 6 9H2v6h4l5 4V5Z\"/><path stroke-width=\"1.5\" d=\"M15.54 8.46a5 5 0 0 1 0 7.08\"/><path stroke-width=\"1.5\" d=\"M19.07 4.93a10 10 0 0 1 0 14.14\"/>`,\n\n appearance: `<path stroke-width=\"1.5\" d=\"M12 2a10 10 0 1 0 0 20 10 10 0 0 0 0-20Z\"/><path stroke-width=\"1.5\" d=\"M12 2v20\" /><path stroke-width=\"1.5\" d=\"M12 2a10 10 0 0 1 0 20\" fill=\"currentColor\" opacity=\"0.15\"/>`,\n\n profile: `<circle cx=\"12\" cy=\"8\" r=\"4\" stroke-width=\"1.5\"/><path stroke-width=\"1.5\" d=\"M20 21v-1a6 6 0 0 0-6-6h-4a6 6 0 0 0-6 6v1\"/>`,\n\n organization: `<rect x=\"3\" y=\"3\" width=\"18\" height=\"18\" rx=\"2\" stroke-width=\"1.5\"/><path stroke-width=\"1.5\" d=\"M7 8h10M7 12h7M7 16h5\"/>`,\n\n about: `<circle cx=\"12\" cy=\"12\" r=\"10\" stroke-width=\"1.5\"/><path stroke-width=\"1.5\" d=\"M12 16v-4\"/><circle cx=\"12\" cy=\"8\" r=\"0.5\" fill=\"currentColor\"/>`,\n}\n\n// ---------------------------------------------------------------------------\n// Material — symbols outlined style (24x24, stroke-width 2)\n// ---------------------------------------------------------------------------\n\nconst material: IconMap = {\n dashboard: `<path d=\"M3 13h8V3H3v10Zm0 8h8v-6H3v6Zm10 0h8V11h-8v10Zm0-18v6h8V3h-8Z\" fill=\"currentColor\" opacity=\"0.15\"/><path stroke-width=\"1.5\" d=\"M3 13h8V3H3v10Zm0 8h8v-6H3v6Zm10 0h8V11h-8v10Zm0-18v6h8V3h-8Z\"/>`,\n\n visibility: `<path stroke-width=\"1.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M12 4.5C7 4.5 2.73 7.61 1 12c1.73 4.39 6 7.5 11 7.5s9.27-3.11 11-7.5c-1.73-4.39-6-7.5-11-7.5Z\"/><circle cx=\"12\" cy=\"12\" r=\"3.5\" stroke-width=\"1.5\"/>`,\n\n detections: `<path stroke-width=\"1.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M12 2 4 5v6.09c0 5.05 3.41 9.76 8 10.91 4.59-1.15 8-5.86 8-10.91V5l-8-3Z\"/>`,\n\n intel: `<ellipse cx=\"12\" cy=\"5.5\" rx=\"8.5\" ry=\"3\" stroke-width=\"1.5\"/><path stroke-width=\"1.5\" d=\"M3.5 5.5v5c0 1.657 3.806 3 8.5 3s8.5-1.343 8.5-3v-5\"/><path stroke-width=\"1.5\" d=\"M3.5 10.5v5c0 1.657 3.806 3 8.5 3s8.5-1.343 8.5-3v-5\"/>`,\n\n 'threat-actors': `<circle cx=\"12\" cy=\"12\" r=\"10\" stroke-width=\"1.5\"/><circle cx=\"12\" cy=\"12\" r=\"6\" stroke-width=\"1.5\"/><circle cx=\"12\" cy=\"12\" r=\"2.5\" stroke-width=\"1.5\"/>`,\n\n opportunities: `<path stroke-width=\"1.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 21h6M10 17h4\"/><path stroke-width=\"1.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M12 2a7 7 0 0 0-7 7c0 2.38 1.19 4.47 3 5.74V17h8v-2.26c1.81-1.27 3-3.36 3-5.74a7 7 0 0 0-7-7Z\"/>`,\n\n 'threat-library': `<path stroke-width=\"1.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M18 2H6a2 2 0 0 0-2 2v16a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V4a2 2 0 0 0-2-2Z\"/><path stroke-width=\"1.5\" d=\"M8 7h8M8 11h8M8 15h5\"/>`,\n\n connectors: `<path stroke-width=\"1.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M4.5 12.75l6.364-6.364a2.121 2.121 0 0 1 3 0l3.75 3.75a2.121 2.121 0 0 1 0 3L11.25 19.5\"/><path stroke-width=\"1.5\" d=\"M8 8l-4 4M20 12l-4 4M14 6l2-2M12 20l-2 2\"/>`,\n\n jobs: `<path stroke-width=\"1.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 2h6v3H9V2ZM5 5h14a1 1 0 0 1 1 1v15a1 1 0 0 1-1 1H5a1 1 0 0 1-1-1V6a1 1 0 0 1 1-1Z\"/><path stroke-width=\"1.5\" d=\"M9 12h6M9 16h4\"/>`,\n\n settings: `<path stroke-width=\"1.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M12 15a3 3 0 1 0 0-6 3 3 0 0 0 0 6Z\"/><path stroke-width=\"1.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M19.4 15a1.65 1.65 0 0 0 .33 1.82l.06.06a2 2 0 0 1-2.83 2.83l-.06-.06a1.65 1.65 0 0 0-1.82-.33 1.65 1.65 0 0 0-1 1.51V21a2 2 0 0 1-4 0v-.09A1.65 1.65 0 0 0 9 19.4a1.65 1.65 0 0 0-1.82.33l-.06.06a2 2 0 0 1-2.83-2.83l.06-.06a1.65 1.65 0 0 0 .33-1.82 1.65 1.65 0 0 0-1.51-1V14a2 2 0 0 1 0-4h.09A1.65 1.65 0 0 0 4.6 9a1.65 1.65 0 0 0-.33-1.82l-.06-.06a2 2 0 0 1 2.83-2.83l.06.06a1.65 1.65 0 0 0 1.82.33H9a1.65 1.65 0 0 0 1-1.51V3a2 2 0 0 1 4 0v.09a1.65 1.65 0 0 0 1 1.51 1.65 1.65 0 0 0 1.82-.33l.06-.06a2 2 0 0 1 2.83 2.83l-.06.06a1.65 1.65 0 0 0-.33 1.82V9c.26.604.852.997 1.51 1H21a2 2 0 0 1 0 4h-.09a1.65 1.65 0 0 0-1.51 1Z\"/>`,\n\n logout: `<path stroke-width=\"1.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 21H5a2 2 0 0 1-2-2V5a2 2 0 0 1 2-2h4M16 17l5-5-5-5M21 12H9\"/>`,\n\n search: `<circle cx=\"10.5\" cy=\"10.5\" r=\"7\" stroke-width=\"1.5\"/><path stroke-width=\"1.5\" stroke-linecap=\"round\" d=\"m21 21-4.95-4.95\"/>`,\n\n help: `<circle cx=\"12\" cy=\"12\" r=\"10\" stroke-width=\"1.5\"/><path stroke-width=\"1.5\" stroke-linecap=\"round\" d=\"M9 9a3 3 0 1 1 3.6 2.94c-.6.12-1.1.54-1.1 1.16v.9\"/><circle cx=\"12\" cy=\"17\" r=\"0.5\" fill=\"currentColor\"/>`,\n\n user: `<path stroke-width=\"1.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M12 12a4 4 0 1 0 0-8 4 4 0 0 0 0 8Zm-8 9c0-3.5 3.6-6.5 8-6.5s8 3 8 6.5\"/>`,\n\n sound: `<path stroke-width=\"1.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M3 9v6h4l5 5V4L7 9H3Z\"/><path stroke-width=\"1.5\" stroke-linecap=\"round\" d=\"M16.5 7.5a6.5 6.5 0 0 1 0 9M19.5 4.5a11 11 0 0 1 0 15\"/>`,\n\n appearance: `<circle cx=\"12\" cy=\"12\" r=\"10\" stroke-width=\"1.5\"/><path stroke-width=\"1.5\" d=\"M12 2v20\"/><path d=\"M12 2a10 10 0 0 1 0 20\" fill=\"currentColor\" opacity=\"0.15\"/>`,\n\n profile: `<path stroke-width=\"1.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M12 2a10 10 0 1 0 0 20 10 10 0 0 0 0-20Z\"/><circle cx=\"12\" cy=\"9\" r=\"3\" stroke-width=\"1.5\"/><path stroke-width=\"1.5\" d=\"M6.168 18.849A5.992 5.992 0 0 1 12 15a5.992 5.992 0 0 1 5.832 3.849\"/>`,\n\n organization: `<path stroke-width=\"1.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M14 2H6a2 2 0 0 0-2 2v16a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V8l-6-6Z\"/><path stroke-width=\"1.5\" d=\"M14 2v6h6\"/><path stroke-width=\"1.5\" d=\"M8 13h8M8 17h5\"/>`,\n\n about: `<circle cx=\"12\" cy=\"12\" r=\"10\" stroke-width=\"1.5\"/><path stroke-width=\"1.5\" stroke-linecap=\"round\" d=\"M12 16v-4M12 8h.01\"/>`,\n}\n\n// ---------------------------------------------------------------------------\n// Exports\n// ---------------------------------------------------------------------------\n\nexport const ICON_SETS: Record<IconSet, IconMap> = {\n lucide,\n heroicons,\n phosphor,\n material,\n}\n\nexport function getIconSvgInner(set: IconSet, name: string): string | undefined {\n return ICON_SETS[set][name]\n}\n\nexport {\n LUCIDE_ICON_NAMES,\n LUCIDE_ICON_PATHS,\n getLucideIconPath,\n getLucideIconSvgInner,\n isLucideIconName,\n} from './lucide'\nexport type { LucideIconName } from './lucide'\n\nconst SVG_NS = 'http://www.w3.org/2000/svg'\nconst DEFAULT_ICON_SIZE: IconSize = 16\nconst ATTRIBUTE_ESCAPE: Record<string, string> = {\n '&': '&amp;',\n '<': '&lt;',\n '>': '&gt;',\n '\"': '&quot;',\n \"'\": '&#039;',\n}\n\nfunction escapeAttribute(value: string): string {\n return value.replace(/[&<>\"']/g, char => ATTRIBUTE_ESCAPE[char] ?? char)\n}\n\nfunction escapeText(value: string): string {\n return value.replace(/[&<>]/g, char => ATTRIBUTE_ESCAPE[char] ?? char)\n}\n\nfunction getAccessibleLabel(options: IconOptions): string | undefined {\n return options.ariaLabel ?? options.title\n}\n\nfunction buildIconClassName(size: IconSize, className?: string): string {\n return Array.from(\n new Set([\n 'cmm-icon',\n `icon-${String(size)}`,\n ...(className?.split(/\\s+/).filter(Boolean) ?? []),\n ])\n ).join(' ')\n}\n\nexport function createIcon(options: IconOptions): SVGSVGElement {\n const size = options.size ?? DEFAULT_ICON_SIZE\n const className = buildIconClassName(size, options.className)\n const svg = document.createElementNS(SVG_NS, 'svg')\n const resolvedName = resolveLucideIconName(options.name)\n const path = resolvedName === undefined ? undefined : getLucideIconPath(resolvedName)\n const accessibleLabel = getAccessibleLabel(options)\n\n svg.setAttribute('xmlns', SVG_NS)\n svg.setAttribute('width', String(size))\n svg.setAttribute('height', String(size))\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.setAttribute('focusable', 'false')\n svg.setAttribute('data-icon', options.name)\n\n if (resolvedName !== undefined) {\n svg.setAttribute('data-lucide', resolvedName)\n }\n\n svg.setAttribute('class', className)\n\n if (accessibleLabel !== undefined && accessibleLabel.length > 0) {\n svg.setAttribute('role', 'img')\n svg.setAttribute('aria-label', accessibleLabel)\n } else {\n svg.setAttribute('aria-hidden', 'true')\n }\n\n if (options.title !== undefined && options.title.length > 0) {\n const title = document.createElementNS(SVG_NS, 'title')\n title.textContent = options.title\n svg.appendChild(title)\n }\n\n if (path !== undefined) {\n const pathEl = document.createElementNS(SVG_NS, 'path')\n pathEl.setAttribute('d', path)\n svg.appendChild(pathEl)\n }\n\n return svg\n}\n\nexport function renderIcon(options: IconOptions): string {\n const size = options.size ?? DEFAULT_ICON_SIZE\n const resolvedName = resolveLucideIconName(options.name)\n const inner = resolvedName === undefined ? '' : (getLucideIconSvgInner(resolvedName) ?? '')\n const accessibleLabel = getAccessibleLabel(options)\n const className = buildIconClassName(size, options.className)\n const attrs = [\n `xmlns=\"${SVG_NS}\"`,\n `width=\"${String(size)}\"`,\n `height=\"${String(size)}\"`,\n `class=\"${escapeAttribute(className)}\"`,\n 'viewBox=\"0 0 24 24\"',\n 'fill=\"none\"',\n 'stroke=\"currentColor\"',\n 'stroke-width=\"2\"',\n 'stroke-linecap=\"round\"',\n 'stroke-linejoin=\"round\"',\n 'focusable=\"false\"',\n `data-icon=\"${escapeAttribute(options.name)}\"`,\n ]\n\n if (resolvedName !== undefined) {\n attrs.push(`data-lucide=\"${resolvedName}\"`)\n }\n\n if (accessibleLabel !== undefined && accessibleLabel.length > 0) {\n attrs.push('role=\"img\"', `aria-label=\"${escapeAttribute(accessibleLabel)}\"`)\n } else {\n attrs.push('aria-hidden=\"true\"')\n }\n\n const title =\n options.title !== undefined && options.title.length > 0\n ? `<title>${escapeText(options.title)}</title>`\n : ''\n\n return `<svg ${attrs.join(' ')}>${title}${inner}</svg>`\n}\n\nexport class Icon {\n public readonly el: SVGSVGElement\n private readonly options: IconOptions\n\n constructor(options: IconOptions) {\n this.options = { ...options }\n this.el = createIcon(options)\n }\n\n toString(): string {\n return renderIcon(this.options)\n }\n}\n"],"mappings":"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"}
package/dist/index.d.ts CHANGED
@@ -16,7 +16,7 @@ export { createConsentManager, getDefaultConsentManager } from './consent/index'
16
16
  export { createAuthManager, getDefaultAuthManager } from './auth/index';
17
17
  export { isWebAuthnSupported, isPlatformAuthenticatorAvailable, registerPasskey, authenticateWithPasskey, } from './passkey/index';
18
18
  export { initTheme, getPreferredTheme, setTheme, toggleTheme, setupAutoDismiss, updateToggleCycle, } from './ui/index';
19
- export { setupSidebar, setupUserMenu, setupCollapsibles, setupSheets, setupNavKeyboard, initLayout, AppShell, createAppShell, PageHeader, createPageHeader, } from './layout/index';
19
+ export { setupSidebar, setupUserMenu, setupCollapsibles, setupSheets, setupNavKeyboard, initLayout, AppShell, TopMenuBar, createAppShell, createCoreAppChromePreset, createCoreAppSidebarConfig, createCoreAppSidebarSections, createCoreAppTopbarActions, createCoreAppTopbarConfig, createProductShell, createTopMenuBar, getCoreAppRouteLabel, mountCoreAppChrome, mountCoreAppChromeFromDom, PageHeader, createPageHeader, } from './layout/index';
20
20
  export { BaseEditor, CodeEditor, LogViewer, JsonViewer, YamlEditor, DiffViewer, } from './editors/index';
21
21
  export type { AutocompleteSchema, TableSchema } from './editors/types';
22
22
  export { DataTable, TreeView, TabPanel, SplitPane, Modal, ToastManager, SearchInput, CommandPalette, Pagination, CopyButton, StatusBar, ContextMenu, } from './components/index';
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
package/dist/index.js CHANGED
@@ -7,139 +7,140 @@ import { applyTheme as J, clearFormErrors as Y, configureTheme as X, displayForm
7
7
  import { a as he, c as ge, i as _e, n as ve, o as ye, r as be, s as xe, t as Se } from "./sanitize-uWpY18N9.js";
8
8
  import { applyAccent as Ce, applyFont as we, applyIconSet as Te, getStoredAccent as Ee, getStoredFont as De, getStoredIconSet as Oe, getStoredQuickSwitcherThemes as ke, initAppearance as Ae, isValidAccent as je, isValidFont as Me, isValidIconSet as Ne, setAccent as Pe, setFont as Fe, setIconSet as Ie, setQuickSwitcherThemes as Le, syncAppearanceFromServer as Re } from "./appearance/index.js";
9
9
  import { t as ze } from "./navigation-DihI8dfX.js";
10
- import { AppShell as Be, createAppShell as Ve } from "./layout/app-shell.js";
11
- import { PageHeader as He, createPageHeader as Ue } from "./layout/page-header.js";
12
- import { initLayout as We, setupCollapsibles as Ge, setupNavKeyboard as Ke, setupSheets as qe, setupSidebar as Je, setupUserMenu as Ye } from "./layout/index.js";
13
- import { a as Xe, c as Ze, i as Qe, n as $e, o as et, r as tt, s as nt, t as rt } from "./date-ZviVeeBg.js";
14
- import { n as it, t as at } from "./selection-CR-KVyA4.js";
15
- import { A as ot, C as st, D as ct, E as lt, F as ut, M as dt, N as ft, O as pt, P as mt, S as ht, T as gt, _ as _t, a as vt, b as yt, c as bt, d as xt, f as St, g as Ct, h as wt, i as Tt, j as Et, k as Dt, l as Ot, m as kt, n as At, o as jt, p as Mt, r as Nt, s as Pt, t as Ft, u as It, v as Lt, w as Rt, x as zt, y as Bt } from "./utils-Bhkxx_Yy.js";
16
- import { n as Vt, r as Ht, t as Ut } from "./sorting-ClExT3HS.js";
17
- import { REGISTRY_ACTION_ORDER as Wt, REGISTRY_SEGMENT_REGEX as Gt, errorMessage as Kt, getCheckedValues as qt, isValidRegistryPattern as Jt, sortRegistryActions as Yt } from "./utils/registry.js";
18
- import { a as Xt, c as Zt, d as Qt, f as $t, i as en, l as tn, n as nn, o as rn, r as an, s as on, t as sn, u as cn } from "./a11y-ZYZ3T617.js";
19
- import { a as ln, c as un, i as dn, n as fn, o as pn, r as mn, s as hn, t as gn } from "./keyboard-BH4fCxA0.js";
20
- import { t as _n } from "./base-iRd9JDTW.js";
21
- import { CodeEditor as vn } from "./editors/code-editor.js";
22
- import { LogViewer as yn } from "./editors/log-viewer.js";
23
- import { JsonViewer as bn } from "./editors/json-viewer.js";
24
- import { YamlEditor as xn } from "./editors/yaml-editor.js";
25
- import { DiffViewer as Sn } from "./editors/diff-viewer.js";
10
+ import { AppShell as Be, TopMenuBar as Ve, createAppShell as He, createProductShell as Ue, createTopMenuBar as We } from "./layout/app-shell.js";
11
+ import { CORE_APP_ROUTE_LABELS as Ge, createCoreAppChromePreset as Ke, createCoreAppSidebarConfig as qe, createCoreAppSidebarSections as Je, createCoreAppTopbarActions as Ye, createCoreAppTopbarConfig as Xe, getCoreAppRouteLabel as Ze, mountCoreAppChrome as Qe, mountCoreAppChromeFromDom as $e } from "./layout/core-app-chrome.js";
12
+ import { PageHeader as et, createPageHeader as tt } from "./layout/page-header.js";
13
+ import { initLayout as nt, setupCollapsibles as rt, setupNavKeyboard as it, setupSheets as at, setupSidebar as ot, setupUserMenu as st } from "./layout/index.js";
14
+ import { a as ct, c as lt, i as ut, n as dt, o as ft, r as pt, s as mt, t as ht } from "./date-ZviVeeBg.js";
15
+ import { n as gt, t as _t } from "./selection-CR-KVyA4.js";
16
+ import { A as vt, C as yt, D as bt, E as xt, F as St, M as Ct, N as wt, O as Tt, P as Et, S as Dt, T as Ot, _ as kt, a as At, b as jt, c as Mt, d as Nt, f as Pt, g as Ft, h as It, i as Lt, j as Rt, k as zt, l as Bt, m as Vt, n as Ht, o as Ut, p as Wt, r as Gt, s as Kt, t as qt, u as Jt, v as Yt, w as Xt, x as Zt, y as Qt } from "./utils-Bhkxx_Yy.js";
17
+ import { n as $t, r as en, t as tn } from "./sorting-ClExT3HS.js";
18
+ import { REGISTRY_ACTION_ORDER as nn, REGISTRY_SEGMENT_REGEX as rn, errorMessage as an, getCheckedValues as on, isValidRegistryPattern as sn, sortRegistryActions as cn } from "./utils/registry.js";
19
+ import { a as ln, c as un, d as dn, f as fn, i as pn, l as mn, n as hn, o as gn, r as _n, s as vn, t as yn, u as bn } from "./a11y-ZYZ3T617.js";
20
+ import { a as xn, c as Sn, i as Cn, n as wn, o as Tn, r as En, s as Dn, t as On } from "./keyboard-BH4fCxA0.js";
21
+ import { t as kn } from "./base-iRd9JDTW.js";
22
+ import { CodeEditor as An } from "./editors/code-editor.js";
23
+ import { LogViewer as jn } from "./editors/log-viewer.js";
24
+ import { JsonViewer as Mn } from "./editors/json-viewer.js";
25
+ import { YamlEditor as Nn } from "./editors/yaml-editor.js";
26
+ import { DiffViewer as Pn } from "./editors/diff-viewer.js";
26
27
  import "./editors/index.js";
27
- import { t as Cn } from "./data-table-DcgJjvnu.js";
28
- import { t as wn } from "./tree-view-CmCxQjBA.js";
29
- import { TabPanel as Tn } from "./components/tabs/index.js";
30
- import { SplitPane as En } from "./components/split-pane/index.js";
31
- import { Modal as Dn } from "./components/modal/index.js";
32
- import { ToastManager as On } from "./components/toast/index.js";
33
- import { CommandPalette as kn } from "./components/search/command-palette.js";
34
- import { SearchInput as An } from "./components/search/index.js";
35
- import { Pagination as jn } from "./components/pagination/index.js";
36
- import { CopyButton as Mn } from "./components/copy-button/index.js";
37
- import { StatusBar as Nn } from "./components/status-bar/index.js";
38
- import { ContextMenu as Pn } from "./components/context-menu/index.js";
28
+ import { t as Fn } from "./data-table-DcgJjvnu.js";
29
+ import { t as In } from "./tree-view-CmCxQjBA.js";
30
+ import { TabPanel as Ln } from "./components/tabs/index.js";
31
+ import { SplitPane as Rn } from "./components/split-pane/index.js";
32
+ import { Modal as zn } from "./components/modal/index.js";
33
+ import { ToastManager as Bn } from "./components/toast/index.js";
34
+ import { CommandPalette as Vn } from "./components/search/command-palette.js";
35
+ import { SearchInput as Hn } from "./components/search/index.js";
36
+ import { Pagination as Un } from "./components/pagination/index.js";
37
+ import { CopyButton as Wn } from "./components/copy-button/index.js";
38
+ import { StatusBar as Gn } from "./components/status-bar/index.js";
39
+ import { ContextMenu as Kn } from "./components/context-menu/index.js";
39
40
  import "./components/index.js";
40
- import { ApiClient as Fn, createApiClient as In } from "./services/api.js";
41
- import { t as Ln } from "./sse-KmoU5o4R.js";
42
- import { KeybindingManager as Rn } from "./services/keybindings.js";
43
- import { a as zn, i as Bn, n as Vn, r as Hn, t as Un } from "./storage-4z3b6Nyu.js";
44
- import { Router as Wn, createRouter as Gn } from "./services/router.js";
41
+ import { ApiClient as qn, createApiClient as Jn } from "./services/api.js";
42
+ import { t as Yn } from "./sse-KmoU5o4R.js";
43
+ import { KeybindingManager as Xn } from "./services/keybindings.js";
44
+ import { a as Zn, i as Qn, n as $n, r as er, t as tr } from "./storage-4z3b6Nyu.js";
45
+ import { Router as nr, createRouter as rr } from "./services/router.js";
45
46
  import "./services/index.js";
46
- import { n as Kn, t as qn } from "./button-DPKopyr2.js";
47
- import { a as Jn, i as Yn, n as Xn, r as Zn, t as Qn } from "./input-B-bTmryu.js";
48
- import { Select as $n } from "./primitives/select/index.js";
49
- import { NativeSelect as er } from "./primitives/select/native.js";
50
- import { Combobox as tr } from "./primitives/select/combobox.js";
51
- import { Checkbox as nr } from "./primitives/checkbox/index.js";
52
- import { CheckboxGroup as rr } from "./primitives/checkbox/group.js";
53
- import { RadioGroup as ir } from "./primitives/radio/index.js";
54
- import { Switch as ar } from "./primitives/switch/index.js";
55
- import { Slider as or } from "./primitives/slider/index.js";
56
- import { n as sr, t as cr } from "./toggle-qcq-JzoE.js";
57
- import { Label as lr } from "./primitives/label/index.js";
58
- import { Field as ur } from "./primitives/field/index.js";
59
- import { Separator as dr } from "./primitives/separator/index.js";
60
- import { Kbd as fr } from "./primitives/kbd/index.js";
61
- import { Spinner as pr } from "./primitives/spinner/index.js";
62
- import { Skeleton as mr } from "./primitives/skeleton/index.js";
63
- import { ScrollArea as hr } from "./primitives/scroll-area/index.js";
47
+ import { n as ir, t as ar } from "./button-DPKopyr2.js";
48
+ import { a as or, i as sr, n as cr, r as lr, t as ur } from "./input-B-bTmryu.js";
49
+ import { Select as dr } from "./primitives/select/index.js";
50
+ import { NativeSelect as fr } from "./primitives/select/native.js";
51
+ import { Combobox as pr } from "./primitives/select/combobox.js";
52
+ import { Checkbox as mr } from "./primitives/checkbox/index.js";
53
+ import { CheckboxGroup as hr } from "./primitives/checkbox/group.js";
54
+ import { RadioGroup as gr } from "./primitives/radio/index.js";
55
+ import { Switch as _r } from "./primitives/switch/index.js";
56
+ import { Slider as vr } from "./primitives/slider/index.js";
57
+ import { n as yr, t as br } from "./toggle-qcq-JzoE.js";
58
+ import { Label as xr } from "./primitives/label/index.js";
59
+ import { Field as Sr } from "./primitives/field/index.js";
60
+ import { Separator as Cr } from "./primitives/separator/index.js";
61
+ import { Kbd as wr } from "./primitives/kbd/index.js";
62
+ import { Spinner as Tr } from "./primitives/spinner/index.js";
63
+ import { Skeleton as Er } from "./primitives/skeleton/index.js";
64
+ import { ScrollArea as Dr } from "./primitives/scroll-area/index.js";
64
65
  import "./primitives/index.js";
65
- import { Alert as gr } from "./display/alert/index.js";
66
- import { AspectRatio as _r } from "./display/aspect-ratio/index.js";
67
- import { n as vr, t as yr } from "./avatar-A4D6CTFY.js";
68
- import { n as br, r as xr, t as Sr } from "./badge-BbDYX_3Y.js";
69
- import { Card as Cr } from "./display/card/index.js";
70
- import { CodeBlock as wr } from "./display/code-block/index.js";
71
- import { EmptyState as Tr } from "./display/empty-state/index.js";
72
- import { HoverCard as Er } from "./display/hover-card/index.js";
73
- import { a as Dr, i as Or, n as kr, o as Ar, r as jr, t as Mr } from "./markdown-viewer-CtWzMYrG.js";
74
- import { MetricTile as Nr } from "./display/metric-tile/index.js";
75
- import { NotificationCenter as Pr } from "./display/notification-center/index.js";
76
- import { Popover as Fr } from "./display/popover/index.js";
77
- import { Progress as Ir } from "./display/progress/index.js";
78
- import { SeverityIndicator as Lr } from "./display/severity-indicator/index.js";
79
- import { StatCard as Rr } from "./display/stat-card/index.js";
80
- import { StatusDot as zr } from "./display/status-dot/index.js";
81
- import { Tooltip as Br } from "./display/tooltip/index.js";
82
- import { Typography as Vr } from "./display/typography/index.js";
83
- import { UptimeBar as Hr } from "./display/uptime-bar/index.js";
66
+ import { Alert as Or } from "./display/alert/index.js";
67
+ import { AspectRatio as kr } from "./display/aspect-ratio/index.js";
68
+ import { n as Ar, t as jr } from "./avatar-A4D6CTFY.js";
69
+ import { n as Mr, r as Nr, t as Pr } from "./badge-BbDYX_3Y.js";
70
+ import { Card as Fr } from "./display/card/index.js";
71
+ import { CodeBlock as Ir } from "./display/code-block/index.js";
72
+ import { EmptyState as Lr } from "./display/empty-state/index.js";
73
+ import { HoverCard as Rr } from "./display/hover-card/index.js";
74
+ import { a as zr, i as Br, n as Vr, o as Hr, r as Ur, t as Wr } from "./markdown-viewer-CtWzMYrG.js";
75
+ import { MetricTile as Gr } from "./display/metric-tile/index.js";
76
+ import { NotificationCenter as Kr } from "./display/notification-center/index.js";
77
+ import { Popover as qr } from "./display/popover/index.js";
78
+ import { Progress as Jr } from "./display/progress/index.js";
79
+ import { SeverityIndicator as Yr } from "./display/severity-indicator/index.js";
80
+ import { StatCard as Xr } from "./display/stat-card/index.js";
81
+ import { StatusDot as Zr } from "./display/status-dot/index.js";
82
+ import { Tooltip as Qr } from "./display/tooltip/index.js";
83
+ import { Typography as $r } from "./display/typography/index.js";
84
+ import { UptimeBar as ei } from "./display/uptime-bar/index.js";
84
85
  import "./display/index.js";
85
- import { Breadcrumb as Ur } from "./navigation/breadcrumb/index.js";
86
- import { Menubar as Wr } from "./navigation/menubar/index.js";
87
- import { DropdownMenu as Gr } from "./navigation/dropdown-menu/index.js";
88
- import { NavigationMenu as Kr } from "./navigation/navigation-menu/index.js";
89
- import { Stepper as qr } from "./navigation/stepper/index.js";
90
- import { Drawer as Jr } from "./navigation/drawer/index.js";
86
+ import { Breadcrumb as ti } from "./navigation/breadcrumb/index.js";
87
+ import { Menubar as ni } from "./navigation/menubar/index.js";
88
+ import { DropdownMenu as ri } from "./navigation/dropdown-menu/index.js";
89
+ import { NavigationMenu as ii } from "./navigation/navigation-menu/index.js";
90
+ import { Stepper as ai } from "./navigation/stepper/index.js";
91
+ import { Drawer as oi } from "./navigation/drawer/index.js";
91
92
  import "./navigation/index.js";
92
- import { AlertDialog as Yr } from "./overlays/alert-dialog/index.js";
93
- import { Sheet as Xr } from "./overlays/sheet/index.js";
94
- import { Carousel as Zr } from "./overlays/carousel/index.js";
93
+ import { AlertDialog as si } from "./overlays/alert-dialog/index.js";
94
+ import { Sheet as ci } from "./overlays/sheet/index.js";
95
+ import { Carousel as li } from "./overlays/carousel/index.js";
95
96
  import "./overlays/index.js";
96
- import { Calendar as Qr } from "./form/calendar/index.js";
97
- import { DateRangePicker as $r } from "./form/date-picker/range.js";
98
- import { TimePicker as ei } from "./form/date-picker/time.js";
99
- import { DatePicker as ti } from "./form/date-picker/index.js";
100
- import { TagInput as ni } from "./form/tag-input/index.js";
101
- import { ColorPicker as ri } from "./form/color-picker/index.js";
102
- import { cronToHuman as ii, formatCron as ai, getNextRuns as oi, isValidCron as si, parseCron as ci } from "./form/cron-editor/parser.js";
103
- import { CronEditor as li } from "./form/cron-editor/index.js";
104
- import { Direction as ui } from "./form/direction/index.js";
97
+ import { Calendar as ui } from "./form/calendar/index.js";
98
+ import { DateRangePicker as di } from "./form/date-picker/range.js";
99
+ import { TimePicker as fi } from "./form/date-picker/time.js";
100
+ import { DatePicker as pi } from "./form/date-picker/index.js";
101
+ import { TagInput as mi } from "./form/tag-input/index.js";
102
+ import { ColorPicker as hi } from "./form/color-picker/index.js";
103
+ import { cronToHuman as gi, formatCron as _i, getNextRuns as vi, isValidCron as yi, parseCron as bi } from "./form/cron-editor/parser.js";
104
+ import { CronEditor as xi } from "./form/cron-editor/index.js";
105
+ import { Direction as Si } from "./form/direction/index.js";
105
106
  import "./form/index.js";
106
- import { BaseChart as di } from "./charts/base.js";
107
- import { ChartLegend as fi } from "./charts/legend.js";
108
- import { ChartTooltip as pi } from "./charts/tooltip.js";
109
- import { clamp as mi, defaultColors as hi, formatNumber as gi, hexToRgba as _i, lerpColor as vi, niceScale as yi, polarToCartesian as bi, scaleBand as xi, scaleLinear as Si } from "./charts/utils.js";
110
- import { drawGridLines as Ci, drawXAxis as wi, drawYAxis as Ti } from "./charts/axis.js";
111
- import { drawAnnotations as Ei } from "./charts/annotations.js";
112
- import { ChartZoom as Di } from "./charts/zoom.js";
113
- import { LineChart as Oi } from "./charts/line/index.js";
114
- import { BarChart as ki } from "./charts/bar/index.js";
115
- import { AreaChart as Ai } from "./charts/area/index.js";
116
- import { PieChart as ji } from "./charts/pie/index.js";
117
- import { SparklineChart as Mi } from "./charts/sparkline/index.js";
118
- import { GaugeChart as Ni } from "./charts/gauge/index.js";
119
- import { HeatmapChart as Pi } from "./charts/heatmap/index.js";
120
- import { TreemapChart as Fi } from "./charts/treemap/index.js";
121
- import { ScatterChart as Ii } from "./charts/scatter/index.js";
122
- import { RadarChart as Li } from "./charts/radar/index.js";
123
- import { WaterfallChart as Ri } from "./charts/waterfall/index.js";
124
- import { SankeyChart as zi } from "./charts/sankey/index.js";
125
- import { FunnelChart as Bi } from "./charts/funnel/index.js";
126
- import { CandlestickChart as Vi } from "./charts/candlestick/index.js";
107
+ import { BaseChart as Ci } from "./charts/base.js";
108
+ import { ChartLegend as wi } from "./charts/legend.js";
109
+ import { ChartTooltip as Ti } from "./charts/tooltip.js";
110
+ import { clamp as Ei, defaultColors as Di, formatNumber as Oi, hexToRgba as ki, lerpColor as Ai, niceScale as ji, polarToCartesian as Mi, scaleBand as Ni, scaleLinear as Pi } from "./charts/utils.js";
111
+ import { drawGridLines as Fi, drawXAxis as Ii, drawYAxis as Li } from "./charts/axis.js";
112
+ import { drawAnnotations as Ri } from "./charts/annotations.js";
113
+ import { ChartZoom as zi } from "./charts/zoom.js";
114
+ import { LineChart as Bi } from "./charts/line/index.js";
115
+ import { BarChart as Vi } from "./charts/bar/index.js";
116
+ import { AreaChart as Hi } from "./charts/area/index.js";
117
+ import { PieChart as Ui } from "./charts/pie/index.js";
118
+ import { SparklineChart as Wi } from "./charts/sparkline/index.js";
119
+ import { GaugeChart as Gi } from "./charts/gauge/index.js";
120
+ import { HeatmapChart as Ki } from "./charts/heatmap/index.js";
121
+ import { TreemapChart as qi } from "./charts/treemap/index.js";
122
+ import { ScatterChart as Ji } from "./charts/scatter/index.js";
123
+ import { RadarChart as Yi } from "./charts/radar/index.js";
124
+ import { WaterfallChart as Xi } from "./charts/waterfall/index.js";
125
+ import { SankeyChart as Zi } from "./charts/sankey/index.js";
126
+ import { FunnelChart as Qi } from "./charts/funnel/index.js";
127
+ import { CandlestickChart as $i } from "./charts/candlestick/index.js";
127
128
  import "./charts/index.js";
128
- import { Timeline as Hi } from "./visualization/timeline/index.js";
129
- import { FlowDiagram as Ui } from "./visualization/flow-diagram/index.js";
130
- import { NetworkGraph as Wi } from "./visualization/network-graph/index.js";
131
- import { ThreatMap as Gi } from "./visualization/map/index.js";
132
- import { FileTree as Ki } from "./visualization/file-tree/index.js";
133
- import { Terminal as qi } from "./visualization/terminal/index.js";
134
- import { Kanban as Ji } from "./visualization/kanban/index.js";
135
- import { JsonPathBrowser as Yi } from "./visualization/json-path-browser/index.js";
136
- import { RuleEditor as Xi } from "./visualization/rule-editor/index.js";
137
- import { MermaidDiagram as Zi, renderMermaidToString as Qi } from "./visualization/mermaid-diagram/index.js";
129
+ import { Timeline as ea } from "./visualization/timeline/index.js";
130
+ import { FlowDiagram as ta } from "./visualization/flow-diagram/index.js";
131
+ import { NetworkGraph as na } from "./visualization/network-graph/index.js";
132
+ import { ThreatMap as ra } from "./visualization/map/index.js";
133
+ import { FileTree as ia } from "./visualization/file-tree/index.js";
134
+ import { Terminal as aa } from "./visualization/terminal/index.js";
135
+ import { Kanban as oa } from "./visualization/kanban/index.js";
136
+ import { JsonPathBrowser as sa } from "./visualization/json-path-browser/index.js";
137
+ import { RuleEditor as ca } from "./visualization/rule-editor/index.js";
138
+ import { MermaidDiagram as la, renderMermaidToString as ua } from "./visualization/mermaid-diagram/index.js";
138
139
  import "./visualization/index.js";
139
- import { n as $i, r as ea, t as ta } from "./security-Bl_v8N_p.js";
140
- import { CvssBadge as na } from "./security/cvss-badge/index.js";
141
- import { VulnerabilityCard as ra } from "./security/vulnerability-card/index.js";
142
- import { AttackPath as ia } from "./security/attack-path/index.js";
143
- import { MitreMatrix as aa } from "./security/mitre-matrix/index.js";
144
- import { DetectionStatus as oa } from "./security/detection-status/index.js";
145
- export { gr as Alert, Yr as AlertDialog, Fn as ApiClient, Be as AppShell, Ai as AreaChart, _r as AspectRatio, ia as AttackPath, yr as Avatar, vr as AvatarGroup, Sr as Badge, ki as BarChart, di as BaseChart, _n as BaseEditor, Ur as Breadcrumb, qn as Button, Kn as ButtonGroup, Qr as Calendar, Vi as CandlestickChart, Cr as Card, Zr as Carousel, fi as ChartLegend, pi as ChartTooltip, Di as ChartZoom, nr as Checkbox, rr as CheckboxGroup, wr as CodeBlock, vn as CodeEditor, ri as ColorPicker, tr as Combobox, kn as CommandPalette, gt as ComponentError, lt as ConfigError, Pn as ContextMenu, Mn as CopyButton, li as CronEditor, na as CvssBadge, rt as DAYS_MON, $e as DAYS_SUN, Cn as DataTable, ti as DatePicker, $r as DateRangePicker, oa as DetectionStatus, Sn as DiffViewer, ui as Direction, Jr as Drawer, Gr as DropdownMenu, Tr as EmptyState, ur as Field, Ki as FileTree, Ui as FlowDiagram, Bi as FunnelChart, Ni as GaugeChart, Pi as HeatmapChart, Er as HoverCard, V as ICON_SETS, Xn as IPInput, H as Icon, Qn as Input, Jn as InputGroup, Zn as InputOTP, Yi as JsonPathBrowser, bn as JsonViewer, Ji as Kanban, fr as Kbd, Rn as KeybindingManager, gn as Keys, I as LUCIDE_ICON_NAMES, L as LUCIDE_ICON_PATHS, lr as Label, Oi as LineChart, yn as LogViewer, ta as MITRE_TACTICS, tt as MONTHS, Mr as MarkdownViewer, Wr as Menubar, Zi as MermaidDiagram, Nr as MetricTile, aa as MitreMatrix, Dn as Modal, er as NativeSelect, Kr as NavigationMenu, ct as NetworkError, Wi as NetworkGraph, Pr as NotificationCenter, He as PageHeader, jn as Pagination, ji as PieChart, Fr as Popover, Ir as Progress, Wt as REGISTRY_ACTION_ORDER, Gt as REGISTRY_SEGMENT_REGEX, Li as RadarChart, ir as RadioGroup, Wn as Router, Xi as RuleEditor, U as SEMANTIC_ICON_ALIASES, Ln as SSEManager, zi as SankeyChart, Ii as ScatterChart, hr as ScrollArea, An as SearchInput, $n as Select, dr as Separator, Lr as SeverityIndicator, Xr as Sheet, mr as Skeleton, or as Slider, Mi as SparklineChart, pr as Spinner, En as SplitPane, Rr as StatCard, Nn as StatusBar, zr as StatusDot, qr as Stepper, Un as StorageManager, ar as Switch, $i as TACTIC_IDS_BY_NAME, ea as TACTIC_SHORT_NAMES, Tn as TabPanel, ni as TagInput, qi as Terminal, Yn as Textarea, Gi as ThreatMap, ei as TimePicker, Hi as Timeline, On as ToastManager, cr as Toggle, sr as ToggleGroup, Br as Tooltip, wn as TreeView, Fi as TreemapChart, Vr as Typography, Hr as UptimeBar, pt as ValidationError, ra as VulnerabilityCard, Ri as WaterfallChart, xn as YamlEditor, e as acceptAll, sn as announce, Ce as applyAccent, we as applyFont, Te as applyIconSet, J as applyTheme, T as arrayBufferToBase64url, E as authenticateWithPasskey, kr as base64Decode, jr as base64Encode, D as base64urlToUint8Array, Qe as buildDayGrid, t as checkConsent, mi as clamp, Y as clearFormErrors, d as clearTokens, Ut as compareValues, X as configureTheme, In as createApiClient, Ve as createAppShell, f as createAuthManager, n as createConsentManager, nn as createFocusTrap, W as createIcon, an as createLiveRegion, p as createLocalStorageTokenStorage, m as createMemoryTokenStorage, Ue as createPageHeader, Gn as createRouter, en as createRovingTabindex, Se as createSafeHtmlFragment, ve as createSafeMarkupFragment, Xt as createSrOnlyElement, fn as createTypeAhead, Dt as createValidator, ii as cronToHuman, Vt as cycleSortDirection, hi as defaultColors, wt as detectLongPress, Ct as detectPan, _t as detectPinch, Lt as detectSwipe, Z as displayFormErrors, Ei as drawAnnotations, Ci as drawGridLines, wi as drawXAxis, Ti as drawYAxis, Kt as errorMessage, be as escapeHtml, r as fetchCategories, h as fetchWithAuth, O as formatAuthenticationCredential, ai as formatCron, gi as formatNumber, k as formatRegistrationCredential, Ft as generateSageAnalysis, i as generateVisitorId, g as getAccessToken, qt as getCheckedValues, Q as getCurrentTheme, _ as getDefaultAuthManager, a as getDefaultConsentManager, rn as getFocusableElements, G as getIconSvgInner, R as getLucideIconPath, z as getLucideIconSvgInner, oi as getNextRuns, $ as getNextTheme, ee as getPreferredTheme, v as getRefreshToken, te as getResolvedTheme, Bt as getSafeAreaInsets, Tt as getScoreBgClass, vt as getScoreBgColor, jt as getScoreBorderClass, Pt as getScoreColorClasses, bt as getScoreHexColor, Ot as getScoreLevel, It as getScoreTextClass, xt as getScoreTextColor, mn as getShortcutFromEvent, Ee as getStoredAccent, o as getStoredConsent, De as getStoredFont, Oe as getStoredIconSet, ke as getStoredQuickSwitcherThemes, ne as getThemeLabel, s as getVisitorId, dn as gridNavigate, yt as handleTouchOrClick, _i as hexToRgba, Ae as initAppearance, We as initLayout, re as initTheme, y as isAuthenticated, Xe as isBetween, et as isDateDisabled, on as isFocusVisibleSupported, ln as isInputElement, B as isLucideIconName, zt as isMobileViewport, A as isPlatformAuthenticatorAvailable, ht as isPortrait, pn as isPrintableKey, nt as isSameDay, b as isTokenExpired, st as isTouchDevice, je as isValidAccent, si as isValidCron, Me as isValidFont, Ne as isValidIconSet, Jt as isValidRegistryPattern, ie as isValidTheme, j as isWebAuthnSupported, vi as lerpColor, Zt as linkControls, tn as linkDescribedBy, cn as linkLabelledBy, Qt as linkOwns, hn as listNavigate, x as logout, $t as manageFocusVisible, Or as markdownParserUtils, Dr as markdownToHtml, ze as navigateDocumentTo, yi as niceScale, Rt as onPointerDown, ci as parseCron, S as parseToken, bi as polarToCartesian, M as prepareAuthenticationOptions, N as prepareRegistrationOptions, C as refreshAccessToken, P as registerPasskey, c as rejectAll, K as renderIcon, Qi as renderMermaidToString, Ar as resetCodeBlockCounter, q as resolveLucideIconName, _e as sanitizeHtml, l as saveConsent, ae as saveTheme, xi as scaleBand, Si as scaleLinear, St as scoreColors, Mt as scoreToColor, kt as scoreToTextColor, Pe as setAccent, oe as setButtonLoading, Fe as setFont, Ie as setIconSet, Le as setQuickSwitcherThemes, he as setSafeHtml, ye as setSafeIconHtml, xe as setSafeIconMarkup, ge as setSafeMarkup, u as setStoredConsent, se as setTheme, w as setTokens, ce as setupAutoDismiss, Ge as setupCollapsibles, Ke as setupNavKeyboard, qe as setupSheets, Je as setupSidebar, le as setupThemeOptions, ue as setupThemeToggle, Ye as setupUserMenu, br as severityBadge, Yt as sortRegistryActions, Ht as sortRows, xr as statusBadge, At as statusToneFromSeverity, Nt as statusToneFromState, Vn as storageGet, Hn as storageHas, Bn as storageRemove, zn as storageSet, Ze as stripTime, de as submitForm, Re as syncAppearanceFromServer, at as toggleSelectAll, it as toggleSelection, fe as toggleTheme, un as treeNavigate, F as uint8ArrayToBase64url, pe as updateToggleCycle, ot as validateEmail, Et as validateMaxLength, dt as validateMinLength, ft as validatePattern, mt as validateRequired, ut as validateUrl, me as watchSystemTheme };
140
+ import { n as da, r as fa, t as pa } from "./security-Bl_v8N_p.js";
141
+ import { CvssBadge as ma } from "./security/cvss-badge/index.js";
142
+ import { VulnerabilityCard as ha } from "./security/vulnerability-card/index.js";
143
+ import { AttackPath as ga } from "./security/attack-path/index.js";
144
+ import { MitreMatrix as _a } from "./security/mitre-matrix/index.js";
145
+ import { DetectionStatus as va } from "./security/detection-status/index.js";
146
+ export { Or as Alert, si as AlertDialog, qn as ApiClient, Be as AppShell, Hi as AreaChart, kr as AspectRatio, ga as AttackPath, jr as Avatar, Ar as AvatarGroup, Pr as Badge, Vi as BarChart, Ci as BaseChart, kn as BaseEditor, ti as Breadcrumb, ar as Button, ir as ButtonGroup, Ge as CORE_APP_ROUTE_LABELS, ui as Calendar, $i as CandlestickChart, Fr as Card, li as Carousel, wi as ChartLegend, Ti as ChartTooltip, zi as ChartZoom, mr as Checkbox, hr as CheckboxGroup, Ir as CodeBlock, An as CodeEditor, hi as ColorPicker, pr as Combobox, Vn as CommandPalette, Ot as ComponentError, xt as ConfigError, Kn as ContextMenu, Wn as CopyButton, xi as CronEditor, ma as CvssBadge, ht as DAYS_MON, dt as DAYS_SUN, Fn as DataTable, pi as DatePicker, di as DateRangePicker, va as DetectionStatus, Pn as DiffViewer, Si as Direction, oi as Drawer, ri as DropdownMenu, Lr as EmptyState, Sr as Field, ia as FileTree, ta as FlowDiagram, Qi as FunnelChart, Gi as GaugeChart, Ki as HeatmapChart, Rr as HoverCard, V as ICON_SETS, cr as IPInput, H as Icon, ur as Input, or as InputGroup, lr as InputOTP, sa as JsonPathBrowser, Mn as JsonViewer, oa as Kanban, wr as Kbd, Xn as KeybindingManager, On as Keys, I as LUCIDE_ICON_NAMES, L as LUCIDE_ICON_PATHS, xr as Label, Bi as LineChart, jn as LogViewer, pa as MITRE_TACTICS, pt as MONTHS, Wr as MarkdownViewer, ni as Menubar, la as MermaidDiagram, Gr as MetricTile, _a as MitreMatrix, zn as Modal, fr as NativeSelect, ii as NavigationMenu, bt as NetworkError, na as NetworkGraph, Kr as NotificationCenter, et as PageHeader, Un as Pagination, Ui as PieChart, qr as Popover, Jr as Progress, nn as REGISTRY_ACTION_ORDER, rn as REGISTRY_SEGMENT_REGEX, Yi as RadarChart, gr as RadioGroup, nr as Router, ca as RuleEditor, U as SEMANTIC_ICON_ALIASES, Yn as SSEManager, Zi as SankeyChart, Ji as ScatterChart, Dr as ScrollArea, Hn as SearchInput, dr as Select, Cr as Separator, Yr as SeverityIndicator, ci as Sheet, Er as Skeleton, vr as Slider, Wi as SparklineChart, Tr as Spinner, Rn as SplitPane, Xr as StatCard, Gn as StatusBar, Zr as StatusDot, ai as Stepper, tr as StorageManager, _r as Switch, da as TACTIC_IDS_BY_NAME, fa as TACTIC_SHORT_NAMES, Ln as TabPanel, mi as TagInput, aa as Terminal, sr as Textarea, ra as ThreatMap, fi as TimePicker, ea as Timeline, Bn as ToastManager, br as Toggle, yr as ToggleGroup, Qr as Tooltip, Ve as TopMenuBar, In as TreeView, qi as TreemapChart, $r as Typography, ei as UptimeBar, Tt as ValidationError, ha as VulnerabilityCard, Xi as WaterfallChart, Nn as YamlEditor, e as acceptAll, yn as announce, Ce as applyAccent, we as applyFont, Te as applyIconSet, J as applyTheme, T as arrayBufferToBase64url, E as authenticateWithPasskey, Vr as base64Decode, Ur as base64Encode, D as base64urlToUint8Array, ut as buildDayGrid, t as checkConsent, Ei as clamp, Y as clearFormErrors, d as clearTokens, tn as compareValues, X as configureTheme, Jn as createApiClient, He as createAppShell, f as createAuthManager, n as createConsentManager, Ke as createCoreAppChromePreset, qe as createCoreAppSidebarConfig, Je as createCoreAppSidebarSections, Ye as createCoreAppTopbarActions, Xe as createCoreAppTopbarConfig, hn as createFocusTrap, W as createIcon, _n as createLiveRegion, p as createLocalStorageTokenStorage, m as createMemoryTokenStorage, tt as createPageHeader, Ue as createProductShell, rr as createRouter, pn as createRovingTabindex, Se as createSafeHtmlFragment, ve as createSafeMarkupFragment, ln as createSrOnlyElement, We as createTopMenuBar, wn as createTypeAhead, zt as createValidator, gi as cronToHuman, $t as cycleSortDirection, Di as defaultColors, It as detectLongPress, Ft as detectPan, kt as detectPinch, Yt as detectSwipe, Z as displayFormErrors, Ri as drawAnnotations, Fi as drawGridLines, Ii as drawXAxis, Li as drawYAxis, an as errorMessage, be as escapeHtml, r as fetchCategories, h as fetchWithAuth, O as formatAuthenticationCredential, _i as formatCron, Oi as formatNumber, k as formatRegistrationCredential, qt as generateSageAnalysis, i as generateVisitorId, g as getAccessToken, on as getCheckedValues, Ze as getCoreAppRouteLabel, Q as getCurrentTheme, _ as getDefaultAuthManager, a as getDefaultConsentManager, gn as getFocusableElements, G as getIconSvgInner, R as getLucideIconPath, z as getLucideIconSvgInner, vi as getNextRuns, $ as getNextTheme, ee as getPreferredTheme, v as getRefreshToken, te as getResolvedTheme, Qt as getSafeAreaInsets, Lt as getScoreBgClass, At as getScoreBgColor, Ut as getScoreBorderClass, Kt as getScoreColorClasses, Mt as getScoreHexColor, Bt as getScoreLevel, Jt as getScoreTextClass, Nt as getScoreTextColor, En as getShortcutFromEvent, Ee as getStoredAccent, o as getStoredConsent, De as getStoredFont, Oe as getStoredIconSet, ke as getStoredQuickSwitcherThemes, ne as getThemeLabel, s as getVisitorId, Cn as gridNavigate, jt as handleTouchOrClick, ki as hexToRgba, Ae as initAppearance, nt as initLayout, re as initTheme, y as isAuthenticated, ct as isBetween, ft as isDateDisabled, vn as isFocusVisibleSupported, xn as isInputElement, B as isLucideIconName, Zt as isMobileViewport, A as isPlatformAuthenticatorAvailable, Dt as isPortrait, Tn as isPrintableKey, mt as isSameDay, b as isTokenExpired, yt as isTouchDevice, je as isValidAccent, yi as isValidCron, Me as isValidFont, Ne as isValidIconSet, sn as isValidRegistryPattern, ie as isValidTheme, j as isWebAuthnSupported, Ai as lerpColor, un as linkControls, mn as linkDescribedBy, bn as linkLabelledBy, dn as linkOwns, Dn as listNavigate, x as logout, fn as manageFocusVisible, Br as markdownParserUtils, zr as markdownToHtml, Qe as mountCoreAppChrome, $e as mountCoreAppChromeFromDom, ze as navigateDocumentTo, ji as niceScale, Xt as onPointerDown, bi as parseCron, S as parseToken, Mi as polarToCartesian, M as prepareAuthenticationOptions, N as prepareRegistrationOptions, C as refreshAccessToken, P as registerPasskey, c as rejectAll, K as renderIcon, ua as renderMermaidToString, Hr as resetCodeBlockCounter, q as resolveLucideIconName, _e as sanitizeHtml, l as saveConsent, ae as saveTheme, Ni as scaleBand, Pi as scaleLinear, Pt as scoreColors, Wt as scoreToColor, Vt as scoreToTextColor, Pe as setAccent, oe as setButtonLoading, Fe as setFont, Ie as setIconSet, Le as setQuickSwitcherThemes, he as setSafeHtml, ye as setSafeIconHtml, xe as setSafeIconMarkup, ge as setSafeMarkup, u as setStoredConsent, se as setTheme, w as setTokens, ce as setupAutoDismiss, rt as setupCollapsibles, it as setupNavKeyboard, at as setupSheets, ot as setupSidebar, le as setupThemeOptions, ue as setupThemeToggle, st as setupUserMenu, Mr as severityBadge, cn as sortRegistryActions, en as sortRows, Nr as statusBadge, Ht as statusToneFromSeverity, Gt as statusToneFromState, $n as storageGet, er as storageHas, Qn as storageRemove, Zn as storageSet, lt as stripTime, de as submitForm, Re as syncAppearanceFromServer, _t as toggleSelectAll, gt as toggleSelection, fe as toggleTheme, Sn as treeNavigate, F as uint8ArrayToBase64url, pe as updateToggleCycle, vt as validateEmail, Rt as validateMaxLength, Ct as validateMinLength, wt as validatePattern, Et as validateRequired, St as validateUrl, me as watchSystemTheme };