@countermeasure-platform/web-components 1.3.5-dev.36.1 → 1.3.6-dev.37.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 (82) hide show
  1. package/dist/{component-D5sRm1fq.js → component-D_asjmrt.js} +5 -3
  2. package/dist/component-D_asjmrt.js.map +1 -0
  3. package/dist/components/brand/index.d.ts.map +1 -1
  4. package/dist/components/brand/index.js +11 -5
  5. package/dist/components/brand/index.js.map +1 -1
  6. package/dist/components/brand/types.d.ts +2 -0
  7. package/dist/components/brand/types.d.ts.map +1 -1
  8. package/dist/icons/index.d.ts +7 -2
  9. package/dist/icons/index.d.ts.map +1 -1
  10. package/dist/icons/index.js +7 -2
  11. package/dist/icons/index.js.map +1 -1
  12. package/dist/icons/lucide.d.ts +3 -0
  13. package/dist/icons/lucide.d.ts.map +1 -1
  14. package/dist/icons/lucide.js +3 -0
  15. package/dist/icons/lucide.js.map +1 -1
  16. package/dist/index.d.ts +1 -1
  17. package/dist/index.d.ts.map +1 -1
  18. package/dist/index.js +126 -125
  19. package/dist/layout/app-shell.d.ts +7 -0
  20. package/dist/layout/app-shell.d.ts.map +1 -1
  21. package/dist/layout/app-shell.js +24 -6
  22. package/dist/layout/app-shell.js.map +1 -1
  23. package/dist/layout/core-app-chrome.d.ts.map +1 -1
  24. package/dist/layout/core-app-chrome.js +8 -5
  25. package/dist/layout/core-app-chrome.js.map +1 -1
  26. package/dist/layout/core-app-library-dashboard.d.ts +72 -0
  27. package/dist/layout/core-app-library-dashboard.d.ts.map +1 -0
  28. package/dist/layout/core-app-library-dashboard.js +160 -0
  29. package/dist/layout/core-app-library-dashboard.js.map +1 -0
  30. package/dist/layout/index.d.ts +2 -0
  31. package/dist/layout/index.d.ts.map +1 -1
  32. package/dist/layout/index.js +38 -37
  33. package/dist/layout/index.js.map +1 -1
  34. package/dist/react/brand/index.d.ts +3 -1
  35. package/dist/react/brand/index.d.ts.map +1 -1
  36. package/dist/react/brand.js +19 -13
  37. package/dist/react/brand.js.map +1 -1
  38. package/dist/react/layout/core-app-library-dashboard.d.ts +13 -0
  39. package/dist/react/layout/core-app-library-dashboard.d.ts.map +1 -0
  40. package/dist/react/layout/core-app-library-dashboard.js +27 -0
  41. package/dist/react/layout/core-app-library-dashboard.js.map +1 -0
  42. package/dist/react/layout/index.d.ts +1 -0
  43. package/dist/react/layout/index.d.ts.map +1 -1
  44. package/dist/react/layout/index.js +3 -2
  45. package/dist/react/primitives/alert.d.ts +1 -1
  46. package/dist/react/primitives/toast.d.ts +1 -1
  47. package/dist/react/sidebar.js +1 -1
  48. package/dist/react.js +97 -96
  49. package/dist/sidebar/component.d.ts.map +1 -1
  50. package/dist/sidebar/index.js +1 -1
  51. package/dist/sidebar/types.d.ts +7 -0
  52. package/dist/sidebar/types.d.ts.map +1 -1
  53. package/dist/styles/components/brand.css +22 -0
  54. package/dist/styles/layout.css +577 -0
  55. package/dist/styles/sidebar.css +26 -0
  56. package/package.json +11 -1
  57. package/src/components/brand/index.ts +22 -4
  58. package/src/components/brand/types.ts +2 -0
  59. package/src/icons/icons.test.ts +1 -1
  60. package/src/icons/index.ts +7 -2
  61. package/src/icons/lucide.ts +4 -0
  62. package/src/index.ts +2 -0
  63. package/src/layout/app-shell.test.ts +76 -0
  64. package/src/layout/app-shell.ts +38 -7
  65. package/src/layout/core-app-chrome.test.ts +17 -5
  66. package/src/layout/core-app-chrome.ts +8 -3
  67. package/src/layout/core-app-library-dashboard.test.ts +397 -0
  68. package/src/layout/core-app-library-dashboard.ts +519 -0
  69. package/src/layout/index.ts +18 -0
  70. package/src/react/brand/index.test.tsx +10 -0
  71. package/src/react/brand/index.tsx +25 -4
  72. package/src/react/layout/core-app-chrome.test.tsx +2 -2
  73. package/src/react/layout/core-app-library-dashboard.test.tsx +42 -0
  74. package/src/react/layout/core-app-library-dashboard.tsx +56 -0
  75. package/src/react/layout/index.ts +6 -0
  76. package/src/sidebar/component.test.ts +21 -1
  77. package/src/sidebar/component.ts +14 -8
  78. package/src/sidebar/types.ts +7 -0
  79. package/src/styles/components/brand.css +22 -0
  80. package/src/styles/layout.css +577 -0
  81. package/src/styles/sidebar.css +26 -0
  82. package/dist/component-D5sRm1fq.js.map +0 -1
@@ -1 +1 @@
1
- {"version":3,"file":"lucide.js","names":[],"sources":["../../src/icons/lucide.ts"],"sourcesContent":["/**\n * Canonical Lucide path data bundled with the package.\n */\n\nexport const LUCIDE_ICON_PATHS = {\n FileCode2:\n 'M5 21V3a2 2 0 0 1 2-2h7l5 5v15a2 2 0 0 1-2 2H7a2 2 0 0 1-2-2zM14 3v5h5M10 13l-2 2 2 2M14 13l2 2-2 2',\n Shield: 'M12 22s8-4 8-10V5l-8-3-8 3v7c0 6 8 10 8 10z',\n ShieldCheck: 'M12 22s8-4 8-10V5l-8-3-8 3v7c0 6 8 10 8 10zM9 12l2 2 4-4',\n Radar: 'M19.07 4.93A10 10 0 0 0 6.99 3.34M4 6h.01M22 12A10 10 0 1 1 12 2M12 12 4.93 4.93',\n Grid3X3: 'M3 3h18v18H3zM9 3v18M15 3v18M3 9h18M3 15h18',\n Globe:\n 'M12 2a10 10 0 1 0 0 20 10 10 0 0 0 0-20zM2 12h20M12 2a15.3 15.3 0 0 1 4 10 15.3 15.3 0 0 1-4 10 15.3 15.3 0 0 1-4-10 15.3 15.3 0 0 1 4-10z',\n CircleCheck: 'M22 11.08V12a10 10 0 1 1-5.93-9.14M22 4 12 14.01l-3-3',\n TriangleAlert:\n 'm21.73 18-8-14a2 2 0 0 0-3.48 0l-8 14A2 2 0 0 0 4 21h16a2 2 0 0 0 1.73-3zM12 9v4M12 17h.01',\n CircleX: 'M12 22a10 10 0 1 0 0-20 10 10 0 0 0 0 20zM15 9l-6 6M9 9l6 6',\n CircleAlert: 'M12 22a10 10 0 1 0 0-20 10 10 0 0 0 0 20zM12 8v4M12 16h.01',\n Lightbulb:\n 'M9 18h6M10 22h4M15 14a4 4 0 0 0 1-3 4 4 0 1 0-8 0 4 4 0 0 0 1 3 5 5 0 0 1 1 3h4a5 5 0 0 1 1-3z',\n Building2:\n 'M6 22V4a2 2 0 0 1 2-2h8a2 2 0 0 1 2 2v18ZM6 12H4a2 2 0 0 0-2 2v6a2 2 0 0 0 2 2h2M18 9h2a2 2 0 0 1 2 2v9a2 2 0 0 1-2 2h-2M10 6h4M10 10h4M10 14h4M10 18h4',\n History: 'M3 12a9 9 0 1 0 9-9 9.74 9.74 0 0 0-7 3M3 3v6h6M12 7v5l4 2',\n Clock: 'M12 22a10 10 0 1 0 0-20 10 10 0 0 0 0 20zM12 6v6l4 2',\n Layers: 'M12 2 2 7l10 5 10-5-10-5zM2 17l10 5 10-5M2 12l10 5 10-5',\n Plug: 'M12 22v-5M9 7V2M15 7V2M6 13h12M6 13a4 4 0 0 1-4-4V7h20v2a4 4 0 0 1-4 4H6z',\n Workflow: 'M3 4h6v6H3zM15 14h6v6h-6zM6 14v3a3 3 0 0 0 3 3h3M21 4h-6v6h6V4z',\n Network: 'M9 2h6v6H9zM3 16h6v6H3zM15 16h6v6h-6zM12 8v3M5 16v-3a2 2 0 0 1 2-2h10a2 2 0 0 1 2 2v3',\n Server: 'M2 4h20v6H2zM2 14h20v6H2zM6 7h.01M6 17h.01',\n Cog: 'M12 2v2M12 20v2M4.93 4.93l1.41 1.41M17.66 17.66l1.41 1.41M2 12h2M20 12h2M4.93 19.07l1.41-1.41M17.66 6.34l1.41-1.41M12 8a4 4 0 1 0 0 8 4 4 0 0 0 0-8z',\n ListFilter: 'M3 6h18M7 12h10M10 18h4',\n BookOpen: 'M2 3h6a4 4 0 0 1 4 4v14a3 3 0 0 0-3-3H2zM22 3h-6a4 4 0 0 0-4 4v14a3 3 0 0 1 3-3h7z',\n BarChart3: 'M3 3v18h18M7 16v-5M12 16v-9M17 16v-3',\n Activity: 'M22 12h-4l-3 9L9 3l-3 9H2',\n Siren: 'M7 18a5 5 0 1 1 10 0M5 21h14M21 12h1M3 12H2M5.6 5.6l-.7-.7M18.4 5.6l.7-.7M11 4h2v3h-2z',\n Users:\n 'M16 21v-2a4 4 0 0 0-4-4H6a4 4 0 0 0-4 4v2M9 11a4 4 0 1 0 0-8 4 4 0 0 0 0 8zM22 21v-2a4 4 0 0 0-3-3.87M16 3.13a4 4 0 0 1 0 7.75',\n LayoutGrid: 'M3 3h7v7H3zM14 3h7v7h-7zM14 14h7v7h-7zM3 14h7v7H3z',\n Code2: 'm18 16 4-4-4-4M6 8l-4 4 4 4M14.5 4l-5 16',\n Settings:\n 'M12.22 2h-.44a2 2 0 0 0-2 2v.18a2 2 0 0 1-1 1.73l-.43.25a2 2 0 0 1-2 0l-.15-.08a2 2 0 0 0-2.73.73l-.22.38a2 2 0 0 0 .73 2.73l.15.1a2 2 0 0 1 1 1.72v.51a2 2 0 0 1-1 1.74l-.15.09a2 2 0 0 0-.73 2.73l.22.38a2 2 0 0 0 2.73.73l.15-.08a2 2 0 0 1 2 0l.43.25a2 2 0 0 1 1 1.73V20a2 2 0 0 0 2 2h.44a2 2 0 0 0 2-2v-.18a2 2 0 0 1 1-1.73l.43-.25a2 2 0 0 1 2 0l.15.08a2 2 0 0 0 2.73-.73l.22-.39a2 2 0 0 0-.73-2.73l-.15-.08a2 2 0 0 1-1-1.74v-.5a2 2 0 0 1 1-1.74l.15-.09a2 2 0 0 0 .73-2.73l-.22-.38a2 2 0 0 0-2.73-.73l-.15.08a2 2 0 0 1-2 0l-.43-.25a2 2 0 0 1-1-1.73V4a2 2 0 0 0-2-2zM12 15a3 3 0 1 0 0-6 3 3 0 0 0 0 6z',\n PanelLeftClose: 'M3 3h18v18H3zM9 3v18M16 15l-3-3 3-3',\n LogOut: 'M9 21H5a2 2 0 0 1-2-2V5a2 2 0 0 1 2-2h4M16 17l5-5-5-5M21 12H9',\n Sun: 'M12 2v2M12 20v2M4.93 4.93l1.41 1.41M17.66 17.66l1.41 1.41M2 12h2M20 12h2M4.93 19.07l1.41-1.41M17.66 6.34l1.41-1.41M12 7a5 5 0 1 0 0 10 5 5 0 0 0 0-10z',\n ChevronDown: 'm6 9 6 6 6-6',\n ChevronRight: 'm9 6 6 6-6 6',\n Search: 'M21 21l-4.3-4.3M11 19a8 8 0 1 0 0-16 8 8 0 0 0 0 16z',\n Plus: 'M12 5v14M5 12h14',\n X: 'M18 6 6 18M6 6l12 12',\n Maximize2: 'M21 3h-6M21 3v6M21 3l-7 7M3 21h6M3 21v-6M3 21l7-7',\n RefreshCw: 'M3 12a9 9 0 0 1 15-6.7L21 8M21 3v5h-5M21 12a9 9 0 0 1-15 6.7L3 16M3 21v-5h5',\n Download: 'M21 15v4a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2v-4M7 10l5 5 5-5M12 15V3',\n ArrowUpRight: 'M7 7h10v10M7 17 17 7',\n Sparkles:\n 'M9.94 14.34 12 20l2.06-5.66L20 12l-5.94-2.06L12 4l-2.06 5.94L4 12zM18 4l.5 1.5L20 6l-1.5.5L18 8l-.5-1.5L16 6l1.5-.5zM4 18l.5 1.5L6 20l-1.5.5L4 22l-.5-1.5L2 20l1.5-.5z',\n Lock: 'M5 11h14v10H5zM7 11V7a5 5 0 0 1 10 0v4M12 16v2',\n Eye: 'M2 12s3.5-7 10-7 10 7 10 7-3.5 7-10 7S2 12 2 12zM12 15a3 3 0 1 0 0-6 3 3 0 0 0 0 6z',\n Boxes:\n 'M2.97 12.92 7 14.5v6L3 19v-5.5l-.03-.58zM7 14.5l4-1.5M7 14.5v6l4-1.5v-6L7 14.5zM3 7l4-1.5L11 7v5.5L7 14.03 3 12.5V7zM21 12.5V7l-4-1.5L13 7v5.5L17 14l4-1.5zM17 14v6l4-1.5V13l-4 1zM13 13l4 1.5v6L13 19v-6z',\n GitBranch:\n 'M6 3v12M18 9a3 3 0 1 0 0-6 3 3 0 0 0 0 6zM6 21a3 3 0 1 0 0-6 3 3 0 0 0 0 6zM18 9a9 9 0 0 1-9 9',\n Gauge: 'M12 14l4-4M3.34 19a10 10 0 1 1 17.32 0',\n Tag: 'M12.59 2.59A2 2 0 0 0 11.17 2H4a2 2 0 0 0-2 2v7.17a2 2 0 0 0 .59 1.42l9 9a2 2 0 0 0 2.83 0l7.17-7.17a2 2 0 0 0 0-2.83l-9-9zM7 7h.01',\n Folder: 'M3 7a2 2 0 0 1 2-2h4l2 2h8a2 2 0 0 1 2 2v9a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2V7z',\n FileText:\n 'M14 2H6a2 2 0 0 0-2 2v16a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V8l-6-6zM14 2v6h6M8 13h8M8 17h8M8 9h2',\n Package:\n 'M16.5 9.4 7.55 4.24M21 16V8a2 2 0 0 0-1-1.73l-7-4a2 2 0 0 0-2 0l-7 4A2 2 0 0 0 3 8v8a2 2 0 0 0 1 1.73l7 4a2 2 0 0 0 2 0l7-4A2 2 0 0 0 21 16zM3.27 6.96 12 12.01l8.73-5.05M12 22.08V12',\n Rocket:\n 'M4.5 16.5c-1.5 1.26-2 5-2 5s3.74-.5 5-2c.71-.84.7-2.13-.09-2.91a2.18 2.18 0 0 0-2.91-.09zM12 15l-3-3a22 22 0 0 1 2-3.95A12.88 12.88 0 0 1 22 2c0 2.72-.78 7.5-6 11a22 22 0 0 1-4 2zM9 12H4s.55-3.03 2-4c1.62-1.08 5 0 5 0M15 9a1 1 0 1 0 0-2 1 1 0 0 0 0 2z',\n KeyRound: 'M2 18 1 22h4l1-1v-3h3v-3h3l3.5-3.5a5 5 0 1 0-3-3L2 18zM16.5 7.5h.01',\n} as const\n\nexport type LucideIconName = keyof typeof LUCIDE_ICON_PATHS\n\nexport const LUCIDE_ICON_NAMES = Object.keys(LUCIDE_ICON_PATHS) as LucideIconName[]\n\nexport function isLucideIconName(name: string): name is LucideIconName {\n return Object.prototype.hasOwnProperty.call(LUCIDE_ICON_PATHS, name)\n}\n\nexport function getLucideIconPath(name: string): string | undefined {\n return isLucideIconName(name) ? LUCIDE_ICON_PATHS[name] : undefined\n}\n\nexport function getLucideIconSvgInner(name: string): string | undefined {\n const path = getLucideIconPath(name)\n return path === undefined ? undefined : `<path d=\"${path}\"/>`\n}\n"],"mappings":";AAIA,IAAa,IAAoB;CAC/B,WACE;CACF,QAAQ;CACR,aAAa;CACb,OAAO;CACP,SAAS;CACT,OACE;CACF,aAAa;CACb,eACE;CACF,SAAS;CACT,aAAa;CACb,WACE;CACF,WACE;CACF,SAAS;CACT,OAAO;CACP,QAAQ;CACR,MAAM;CACN,UAAU;CACV,SAAS;CACT,QAAQ;CACR,KAAK;CACL,YAAY;CACZ,UAAU;CACV,WAAW;CACX,UAAU;CACV,OAAO;CACP,OACE;CACF,YAAY;CACZ,OAAO;CACP,UACE;CACF,gBAAgB;CAChB,QAAQ;CACR,KAAK;CACL,aAAa;CACb,cAAc;CACd,QAAQ;CACR,MAAM;CACN,GAAG;CACH,WAAW;CACX,WAAW;CACX,UAAU;CACV,cAAc;CACd,UACE;CACF,MAAM;CACN,KAAK;CACL,OACE;CACF,WACE;CACF,OAAO;CACP,KAAK;CACL,QAAQ;CACR,UACE;CACF,SACE;CACF,QACE;CACF,UAAU;AACZ,GAIa,IAAoB,OAAO,KAAK,CAAiB;AAE9D,SAAgB,EAAiB,GAAsC;CACrE,OAAO,OAAO,UAAU,eAAe,KAAK,GAAmB,CAAI;AACrE;AAEA,SAAgB,EAAkB,GAAkC;CAClE,OAAO,EAAiB,CAAI,IAAI,EAAkB,KAAQ,KAAA;AAC5D;AAEA,SAAgB,EAAsB,GAAkC;CACtE,IAAM,IAAO,EAAkB,CAAI;CACnC,OAAO,MAAS,KAAA,IAAY,KAAA,IAAY,YAAY,EAAK;AAC3D"}
1
+ {"version":3,"file":"lucide.js","names":[],"sources":["../../src/icons/lucide.ts"],"sourcesContent":["/**\n * Canonical Lucide path data bundled with the package.\n */\n\nexport const LUCIDE_ICON_PATHS = {\n FileCode2:\n 'M5 21V3a2 2 0 0 1 2-2h7l5 5v15a2 2 0 0 1-2 2H7a2 2 0 0 1-2-2zM14 3v5h5M10 13l-2 2 2 2M14 13l2 2-2 2',\n Shield: 'M12 22s8-4 8-10V5l-8-3-8 3v7c0 6 8 10 8 10z',\n ShieldCheck: 'M12 22s8-4 8-10V5l-8-3-8 3v7c0 6 8 10 8 10zM9 12l2 2 4-4',\n Radar: 'M19.07 4.93A10 10 0 0 0 6.99 3.34M4 6h.01M22 12A10 10 0 1 1 12 2M12 12 4.93 4.93',\n Grid3X3: 'M3 3h18v18H3zM9 3v18M15 3v18M3 9h18M3 15h18',\n Globe:\n 'M12 2a10 10 0 1 0 0 20 10 10 0 0 0 0-20zM2 12h20M12 2a15.3 15.3 0 0 1 4 10 15.3 15.3 0 0 1-4 10 15.3 15.3 0 0 1-4-10 15.3 15.3 0 0 1 4-10z',\n CircleCheck: 'M22 11.08V12a10 10 0 1 1-5.93-9.14M22 4 12 14.01l-3-3',\n TriangleAlert:\n 'm21.73 18-8-14a2 2 0 0 0-3.48 0l-8 14A2 2 0 0 0 4 21h16a2 2 0 0 0 1.73-3zM12 9v4M12 17h.01',\n CircleX: 'M12 22a10 10 0 1 0 0-20 10 10 0 0 0 0 20zM15 9l-6 6M9 9l6 6',\n CircleAlert: 'M12 22a10 10 0 1 0 0-20 10 10 0 0 0 0 20zM12 8v4M12 16h.01',\n Lightbulb:\n 'M9 18h6M10 22h4M15 14a4 4 0 0 0 1-3 4 4 0 1 0-8 0 4 4 0 0 0 1 3 5 5 0 0 1 1 3h4a5 5 0 0 1 1-3z',\n Building2:\n 'M6 22V4a2 2 0 0 1 2-2h8a2 2 0 0 1 2 2v18ZM6 12H4a2 2 0 0 0-2 2v6a2 2 0 0 0 2 2h2M18 9h2a2 2 0 0 1 2 2v9a2 2 0 0 1-2 2h-2M10 6h4M10 10h4M10 14h4M10 18h4',\n History: 'M3 12a9 9 0 1 0 9-9 9.74 9.74 0 0 0-7 3M3 3v6h6M12 7v5l4 2',\n Clock: 'M12 22a10 10 0 1 0 0-20 10 10 0 0 0 0 20zM12 6v6l4 2',\n Layers: 'M12 2 2 7l10 5 10-5-10-5zM2 17l10 5 10-5M2 12l10 5 10-5',\n Plug: 'M12 22v-5M9 7V2M15 7V2M6 13h12M6 13a4 4 0 0 1-4-4V7h20v2a4 4 0 0 1-4 4H6z',\n Workflow: 'M3 4h6v6H3zM15 14h6v6h-6zM6 14v3a3 3 0 0 0 3 3h3M21 4h-6v6h6V4z',\n Network: 'M9 2h6v6H9zM3 16h6v6H3zM15 16h6v6h-6zM12 8v3M5 16v-3a2 2 0 0 1 2-2h10a2 2 0 0 1 2 2v3',\n Server: 'M2 4h20v6H2zM2 14h20v6H2zM6 7h.01M6 17h.01',\n Cog: 'M12 2v2M12 20v2M4.93 4.93l1.41 1.41M17.66 17.66l1.41 1.41M2 12h2M20 12h2M4.93 19.07l1.41-1.41M17.66 6.34l1.41-1.41M12 8a4 4 0 1 0 0 8 4 4 0 0 0 0-8z',\n ListFilter: 'M3 6h18M7 12h10M10 18h4',\n BookOpen: 'M2 3h6a4 4 0 0 1 4 4v14a3 3 0 0 0-3-3H2zM22 3h-6a4 4 0 0 0-4 4v14a3 3 0 0 1 3-3h7z',\n BarChart3: 'M3 3v18h18M7 16v-5M12 16v-9M17 16v-3',\n Activity: 'M22 12h-4l-3 9L9 3l-3 9H2',\n Bell: 'M18 8A6 6 0 0 0 6 8c0 7-3 9-3 9h18s-3-2-3-9M13.73 21a2 2 0 0 1-3.46 0',\n Siren: 'M7 18a5 5 0 1 1 10 0M5 21h14M21 12h1M3 12H2M5.6 5.6l-.7-.7M18.4 5.6l.7-.7M11 4h2v3h-2z',\n Users:\n 'M16 21v-2a4 4 0 0 0-4-4H6a4 4 0 0 0-4 4v2M9 11a4 4 0 1 0 0-8 4 4 0 0 0 0 8zM22 21v-2a4 4 0 0 0-3-3.87M16 3.13a4 4 0 0 1 0 7.75',\n LayoutGrid: 'M3 3h7v7H3zM14 3h7v7h-7zM14 14h7v7h-7zM3 14h7v7H3z',\n Code2: 'm18 16 4-4-4-4M6 8l-4 4 4 4M14.5 4l-5 16',\n Settings:\n 'M12.22 2h-.44a2 2 0 0 0-2 2v.18a2 2 0 0 1-1 1.73l-.43.25a2 2 0 0 1-2 0l-.15-.08a2 2 0 0 0-2.73.73l-.22.38a2 2 0 0 0 .73 2.73l.15.1a2 2 0 0 1 1 1.72v.51a2 2 0 0 1-1 1.74l-.15.09a2 2 0 0 0-.73 2.73l.22.38a2 2 0 0 0 2.73.73l.15-.08a2 2 0 0 1 2 0l.43.25a2 2 0 0 1 1 1.73V20a2 2 0 0 0 2 2h.44a2 2 0 0 0 2-2v-.18a2 2 0 0 1 1-1.73l.43-.25a2 2 0 0 1 2 0l.15.08a2 2 0 0 0 2.73-.73l.22-.39a2 2 0 0 0-.73-2.73l-.15-.08a2 2 0 0 1-1-1.74v-.5a2 2 0 0 1 1-1.74l.15-.09a2 2 0 0 0 .73-2.73l-.22-.38a2 2 0 0 0-2.73-.73l-.15.08a2 2 0 0 1-2 0l-.43-.25a2 2 0 0 1-1-1.73V4a2 2 0 0 0-2-2zM12 15a3 3 0 1 0 0-6 3 3 0 0 0 0 6z',\n PanelLeftClose: 'M3 3h18v18H3zM9 3v18M16 15l-3-3 3-3',\n LogOut: 'M9 21H5a2 2 0 0 1-2-2V5a2 2 0 0 1 2-2h4M16 17l5-5-5-5M21 12H9',\n Monitor:\n 'M20 3H4a2 2 0 0 0-2 2v11a2 2 0 0 0 2 2h16a2 2 0 0 0 2-2V5a2 2 0 0 0-2-2zM8 21h8M12 17v4',\n Moon: 'M12 3a6 6 0 0 0 9 9 9 9 0 1 1-9-9',\n Sun: 'M12 2v2M12 20v2M4.93 4.93l1.41 1.41M17.66 17.66l1.41 1.41M2 12h2M20 12h2M4.93 19.07l1.41-1.41M17.66 6.34l1.41-1.41M12 7a5 5 0 1 0 0 10 5 5 0 0 0 0-10z',\n ChevronDown: 'm6 9 6 6 6-6',\n ChevronRight: 'm9 6 6 6-6 6',\n Search: 'M21 21l-4.3-4.3M11 19a8 8 0 1 0 0-16 8 8 0 0 0 0 16z',\n Plus: 'M12 5v14M5 12h14',\n X: 'M18 6 6 18M6 6l12 12',\n Maximize2: 'M21 3h-6M21 3v6M21 3l-7 7M3 21h6M3 21v-6M3 21l7-7',\n RefreshCw: 'M3 12a9 9 0 0 1 15-6.7L21 8M21 3v5h-5M21 12a9 9 0 0 1-15 6.7L3 16M3 21v-5h5',\n Download: 'M21 15v4a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2v-4M7 10l5 5 5-5M12 15V3',\n ArrowUpRight: 'M7 7h10v10M7 17 17 7',\n Sparkles:\n 'M9.94 14.34 12 20l2.06-5.66L20 12l-5.94-2.06L12 4l-2.06 5.94L4 12zM18 4l.5 1.5L20 6l-1.5.5L18 8l-.5-1.5L16 6l1.5-.5zM4 18l.5 1.5L6 20l-1.5.5L4 22l-.5-1.5L2 20l1.5-.5z',\n Lock: 'M5 11h14v10H5zM7 11V7a5 5 0 0 1 10 0v4M12 16v2',\n Eye: 'M2 12s3.5-7 10-7 10 7 10 7-3.5 7-10 7S2 12 2 12zM12 15a3 3 0 1 0 0-6 3 3 0 0 0 0 6z',\n Boxes:\n 'M2.97 12.92 7 14.5v6L3 19v-5.5l-.03-.58zM7 14.5l4-1.5M7 14.5v6l4-1.5v-6L7 14.5zM3 7l4-1.5L11 7v5.5L7 14.03 3 12.5V7zM21 12.5V7l-4-1.5L13 7v5.5L17 14l4-1.5zM17 14v6l4-1.5V13l-4 1zM13 13l4 1.5v6L13 19v-6z',\n GitBranch:\n 'M6 3v12M18 9a3 3 0 1 0 0-6 3 3 0 0 0 0 6zM6 21a3 3 0 1 0 0-6 3 3 0 0 0 0 6zM18 9a9 9 0 0 1-9 9',\n Gauge: 'M12 14l4-4M3.34 19a10 10 0 1 1 17.32 0',\n Tag: 'M12.59 2.59A2 2 0 0 0 11.17 2H4a2 2 0 0 0-2 2v7.17a2 2 0 0 0 .59 1.42l9 9a2 2 0 0 0 2.83 0l7.17-7.17a2 2 0 0 0 0-2.83l-9-9zM7 7h.01',\n Folder: 'M3 7a2 2 0 0 1 2-2h4l2 2h8a2 2 0 0 1 2 2v9a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2V7z',\n FileText:\n 'M14 2H6a2 2 0 0 0-2 2v16a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V8l-6-6zM14 2v6h6M8 13h8M8 17h8M8 9h2',\n Package:\n 'M16.5 9.4 7.55 4.24M21 16V8a2 2 0 0 0-1-1.73l-7-4a2 2 0 0 0-2 0l-7 4A2 2 0 0 0 3 8v8a2 2 0 0 0 1 1.73l7 4a2 2 0 0 0 2 0l7-4A2 2 0 0 0 21 16zM3.27 6.96 12 12.01l8.73-5.05M12 22.08V12',\n Rocket:\n 'M4.5 16.5c-1.5 1.26-2 5-2 5s3.74-.5 5-2c.71-.84.7-2.13-.09-2.91a2.18 2.18 0 0 0-2.91-.09zM12 15l-3-3a22 22 0 0 1 2-3.95A12.88 12.88 0 0 1 22 2c0 2.72-.78 7.5-6 11a22 22 0 0 1-4 2zM9 12H4s.55-3.03 2-4c1.62-1.08 5 0 5 0M15 9a1 1 0 1 0 0-2 1 1 0 0 0 0 2z',\n KeyRound: 'M2 18 1 22h4l1-1v-3h3v-3h3l3.5-3.5a5 5 0 1 0-3-3L2 18zM16.5 7.5h.01',\n} as const\n\nexport type LucideIconName = keyof typeof LUCIDE_ICON_PATHS\n\nexport const LUCIDE_ICON_NAMES = Object.keys(LUCIDE_ICON_PATHS) as LucideIconName[]\n\nexport function isLucideIconName(name: string): name is LucideIconName {\n return Object.prototype.hasOwnProperty.call(LUCIDE_ICON_PATHS, name)\n}\n\nexport function getLucideIconPath(name: string): string | undefined {\n return isLucideIconName(name) ? LUCIDE_ICON_PATHS[name] : undefined\n}\n\nexport function getLucideIconSvgInner(name: string): string | undefined {\n const path = getLucideIconPath(name)\n return path === undefined ? undefined : `<path d=\"${path}\"/>`\n}\n"],"mappings":";AAIA,IAAa,IAAoB;CAC/B,WACE;CACF,QAAQ;CACR,aAAa;CACb,OAAO;CACP,SAAS;CACT,OACE;CACF,aAAa;CACb,eACE;CACF,SAAS;CACT,aAAa;CACb,WACE;CACF,WACE;CACF,SAAS;CACT,OAAO;CACP,QAAQ;CACR,MAAM;CACN,UAAU;CACV,SAAS;CACT,QAAQ;CACR,KAAK;CACL,YAAY;CACZ,UAAU;CACV,WAAW;CACX,UAAU;CACV,MAAM;CACN,OAAO;CACP,OACE;CACF,YAAY;CACZ,OAAO;CACP,UACE;CACF,gBAAgB;CAChB,QAAQ;CACR,SACE;CACF,MAAM;CACN,KAAK;CACL,aAAa;CACb,cAAc;CACd,QAAQ;CACR,MAAM;CACN,GAAG;CACH,WAAW;CACX,WAAW;CACX,UAAU;CACV,cAAc;CACd,UACE;CACF,MAAM;CACN,KAAK;CACL,OACE;CACF,WACE;CACF,OAAO;CACP,KAAK;CACL,QAAQ;CACR,UACE;CACF,SACE;CACF,QACE;CACF,UAAU;AACZ,GAIa,IAAoB,OAAO,KAAK,CAAiB;AAE9D,SAAgB,EAAiB,GAAsC;CACrE,OAAO,OAAO,UAAU,eAAe,KAAK,GAAmB,CAAI;AACrE;AAEA,SAAgB,EAAkB,GAAkC;CAClE,OAAO,EAAiB,CAAI,IAAI,EAAkB,KAAQ,KAAA;AAC5D;AAEA,SAAgB,EAAsB,GAAkC;CACtE,IAAM,IAAO,EAAkB,CAAI;CACnC,OAAO,MAAS,KAAA,IAAY,KAAA,IAAY,YAAY,EAAK;AAC3D"}
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, TopMenuBar, createAppShell, createCoreAppChromePreset, createCoreAppSidebarConfig, createCoreAppSidebarSections, createCoreAppTopbarActions, createCoreAppTopbarConfig, createProductShell, createTopMenuBar, getCoreAppRouteLabel, mountCoreAppChrome, mountCoreAppChromeFromDom, 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, mountCoreAppLibraryDashboard, mountCoreAppLibraryDashboardFromDom, 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
@@ -9,138 +9,139 @@ import { applyAccent as Ce, applyFont as we, applyIconSet as Te, getStoredAccent
9
9
  import { t as ze } from "./navigation-DihI8dfX.js";
10
10
  import { AppShell as Be, TopMenuBar as Ve, createAppShell as He, createProductShell as Ue, createTopMenuBar as We } from "./layout/app-shell.js";
11
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";
12
+ import { mountCoreAppLibraryDashboard as et, mountCoreAppLibraryDashboardFromDom as tt } from "./layout/core-app-library-dashboard.js";
13
+ import { PageHeader as nt, createPageHeader as rt } from "./layout/page-header.js";
14
+ import { initLayout as it, setupCollapsibles as at, setupNavKeyboard as ot, setupSheets as st, setupSidebar as ct, setupUserMenu as lt } from "./layout/index.js";
15
+ import { a as ut, c as dt, i as ft, n as pt, o as mt, r as ht, s as gt, t as _t } from "./date-ZviVeeBg.js";
16
+ import { n as vt, t as yt } from "./selection-CR-KVyA4.js";
17
+ import { A as bt, C as xt, D as St, E as Ct, F as wt, M as Tt, N as Et, O as Dt, P as Ot, S as kt, T as At, _ as jt, a as Mt, b as Nt, c as Pt, d as Ft, f as It, g as Lt, h as Rt, i as zt, j as Bt, k as Vt, l as Ht, m as Ut, n as Wt, o as Gt, p as Kt, r as qt, s as Jt, t as Yt, u as Xt, v as Zt, w as Qt, x as $t, y as en } from "./utils-Bhkxx_Yy.js";
18
+ import { n as tn, r as nn, t as rn } from "./sorting-ClExT3HS.js";
19
+ import { REGISTRY_ACTION_ORDER as an, REGISTRY_SEGMENT_REGEX as on, errorMessage as sn, getCheckedValues as cn, isValidRegistryPattern as ln, sortRegistryActions as un } from "./utils/registry.js";
20
+ import { a as dn, c as fn, d as pn, f as mn, i as hn, l as gn, n as _n, o as vn, r as yn, s as bn, t as xn, u as Sn } from "./a11y-ZYZ3T617.js";
21
+ import { a as Cn, c as wn, i as Tn, n as En, o as Dn, r as On, s as kn, t as An } from "./keyboard-BH4fCxA0.js";
22
+ import { t as jn } from "./base-iRd9JDTW.js";
23
+ import { CodeEditor as Mn } from "./editors/code-editor.js";
24
+ import { LogViewer as Nn } from "./editors/log-viewer.js";
25
+ import { JsonViewer as Pn } from "./editors/json-viewer.js";
26
+ import { YamlEditor as Fn } from "./editors/yaml-editor.js";
27
+ import { DiffViewer as In } from "./editors/diff-viewer.js";
27
28
  import "./editors/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";
29
+ import { t as Ln } from "./data-table-DcgJjvnu.js";
30
+ import { t as Rn } from "./tree-view-CmCxQjBA.js";
31
+ import { TabPanel as zn } from "./components/tabs/index.js";
32
+ import { SplitPane as Bn } from "./components/split-pane/index.js";
33
+ import { Modal as Vn } from "./components/modal/index.js";
34
+ import { ToastManager as Hn } from "./components/toast/index.js";
35
+ import { CommandPalette as Un } from "./components/search/command-palette.js";
36
+ import { SearchInput as Wn } from "./components/search/index.js";
37
+ import { Pagination as Gn } from "./components/pagination/index.js";
38
+ import { CopyButton as Kn } from "./components/copy-button/index.js";
39
+ import { StatusBar as qn } from "./components/status-bar/index.js";
40
+ import { ContextMenu as Jn } from "./components/context-menu/index.js";
40
41
  import "./components/index.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";
42
+ import { ApiClient as Yn, createApiClient as Xn } from "./services/api.js";
43
+ import { t as Zn } from "./sse-KmoU5o4R.js";
44
+ import { KeybindingManager as Qn } from "./services/keybindings.js";
45
+ import { a as $n, i as er, n as tr, r as nr, t as rr } from "./storage-4z3b6Nyu.js";
46
+ import { Router as ir, createRouter as ar } from "./services/router.js";
46
47
  import "./services/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";
48
+ import { n as or, t as sr } from "./button-DPKopyr2.js";
49
+ import { a as cr, i as lr, n as ur, r as dr, t as fr } from "./input-B-bTmryu.js";
50
+ import { Select as pr } from "./primitives/select/index.js";
51
+ import { NativeSelect as mr } from "./primitives/select/native.js";
52
+ import { Combobox as hr } from "./primitives/select/combobox.js";
53
+ import { Checkbox as gr } from "./primitives/checkbox/index.js";
54
+ import { CheckboxGroup as _r } from "./primitives/checkbox/group.js";
55
+ import { RadioGroup as vr } from "./primitives/radio/index.js";
56
+ import { Switch as yr } from "./primitives/switch/index.js";
57
+ import { Slider as br } from "./primitives/slider/index.js";
58
+ import { n as xr, t as Sr } from "./toggle-qcq-JzoE.js";
59
+ import { Label as Cr } from "./primitives/label/index.js";
60
+ import { Field as wr } from "./primitives/field/index.js";
61
+ import { Separator as Tr } from "./primitives/separator/index.js";
62
+ import { Kbd as Er } from "./primitives/kbd/index.js";
63
+ import { Spinner as Dr } from "./primitives/spinner/index.js";
64
+ import { Skeleton as Or } from "./primitives/skeleton/index.js";
65
+ import { ScrollArea as kr } from "./primitives/scroll-area/index.js";
65
66
  import "./primitives/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";
67
+ import { Alert as Ar } from "./display/alert/index.js";
68
+ import { AspectRatio as jr } from "./display/aspect-ratio/index.js";
69
+ import { n as Mr, t as Nr } from "./avatar-A4D6CTFY.js";
70
+ import { n as Pr, r as Fr, t as Ir } from "./badge-BbDYX_3Y.js";
71
+ import { Card as Lr } from "./display/card/index.js";
72
+ import { CodeBlock as Rr } from "./display/code-block/index.js";
73
+ import { EmptyState as zr } from "./display/empty-state/index.js";
74
+ import { HoverCard as Br } from "./display/hover-card/index.js";
75
+ import { a as Vr, i as Hr, n as Ur, o as Wr, r as Gr, t as Kr } from "./markdown-viewer-CtWzMYrG.js";
76
+ import { MetricTile as qr } from "./display/metric-tile/index.js";
77
+ import { NotificationCenter as Jr } from "./display/notification-center/index.js";
78
+ import { Popover as Yr } from "./display/popover/index.js";
79
+ import { Progress as Xr } from "./display/progress/index.js";
80
+ import { SeverityIndicator as Zr } from "./display/severity-indicator/index.js";
81
+ import { StatCard as Qr } from "./display/stat-card/index.js";
82
+ import { StatusDot as $r } from "./display/status-dot/index.js";
83
+ import { Tooltip as ei } from "./display/tooltip/index.js";
84
+ import { Typography as ti } from "./display/typography/index.js";
85
+ import { UptimeBar as ni } from "./display/uptime-bar/index.js";
85
86
  import "./display/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";
87
+ import { Breadcrumb as ri } from "./navigation/breadcrumb/index.js";
88
+ import { Menubar as ii } from "./navigation/menubar/index.js";
89
+ import { DropdownMenu as ai } from "./navigation/dropdown-menu/index.js";
90
+ import { NavigationMenu as oi } from "./navigation/navigation-menu/index.js";
91
+ import { Stepper as si } from "./navigation/stepper/index.js";
92
+ import { Drawer as ci } from "./navigation/drawer/index.js";
92
93
  import "./navigation/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";
94
+ import { AlertDialog as li } from "./overlays/alert-dialog/index.js";
95
+ import { Sheet as ui } from "./overlays/sheet/index.js";
96
+ import { Carousel as di } from "./overlays/carousel/index.js";
96
97
  import "./overlays/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";
98
+ import { Calendar as fi } from "./form/calendar/index.js";
99
+ import { DateRangePicker as pi } from "./form/date-picker/range.js";
100
+ import { TimePicker as mi } from "./form/date-picker/time.js";
101
+ import { DatePicker as hi } from "./form/date-picker/index.js";
102
+ import { TagInput as gi } from "./form/tag-input/index.js";
103
+ import { ColorPicker as _i } from "./form/color-picker/index.js";
104
+ import { cronToHuman as vi, formatCron as yi, getNextRuns as bi, isValidCron as xi, parseCron as Si } from "./form/cron-editor/parser.js";
105
+ import { CronEditor as Ci } from "./form/cron-editor/index.js";
106
+ import { Direction as wi } from "./form/direction/index.js";
106
107
  import "./form/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";
108
+ import { BaseChart as Ti } from "./charts/base.js";
109
+ import { ChartLegend as Ei } from "./charts/legend.js";
110
+ import { ChartTooltip as Di } from "./charts/tooltip.js";
111
+ import { clamp as Oi, defaultColors as ki, formatNumber as Ai, hexToRgba as ji, lerpColor as Mi, niceScale as Ni, polarToCartesian as Pi, scaleBand as Fi, scaleLinear as Ii } from "./charts/utils.js";
112
+ import { drawGridLines as Li, drawXAxis as Ri, drawYAxis as zi } from "./charts/axis.js";
113
+ import { drawAnnotations as Bi } from "./charts/annotations.js";
114
+ import { ChartZoom as Vi } from "./charts/zoom.js";
115
+ import { LineChart as Hi } from "./charts/line/index.js";
116
+ import { BarChart as Ui } from "./charts/bar/index.js";
117
+ import { AreaChart as Wi } from "./charts/area/index.js";
118
+ import { PieChart as Gi } from "./charts/pie/index.js";
119
+ import { SparklineChart as Ki } from "./charts/sparkline/index.js";
120
+ import { GaugeChart as qi } from "./charts/gauge/index.js";
121
+ import { HeatmapChart as Ji } from "./charts/heatmap/index.js";
122
+ import { TreemapChart as Yi } from "./charts/treemap/index.js";
123
+ import { ScatterChart as Xi } from "./charts/scatter/index.js";
124
+ import { RadarChart as Zi } from "./charts/radar/index.js";
125
+ import { WaterfallChart as Qi } from "./charts/waterfall/index.js";
126
+ import { SankeyChart as $i } from "./charts/sankey/index.js";
127
+ import { FunnelChart as ea } from "./charts/funnel/index.js";
128
+ import { CandlestickChart as ta } from "./charts/candlestick/index.js";
128
129
  import "./charts/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";
130
+ import { Timeline as na } from "./visualization/timeline/index.js";
131
+ import { FlowDiagram as ra } from "./visualization/flow-diagram/index.js";
132
+ import { NetworkGraph as ia } from "./visualization/network-graph/index.js";
133
+ import { ThreatMap as aa } from "./visualization/map/index.js";
134
+ import { FileTree as oa } from "./visualization/file-tree/index.js";
135
+ import { Terminal as sa } from "./visualization/terminal/index.js";
136
+ import { Kanban as ca } from "./visualization/kanban/index.js";
137
+ import { JsonPathBrowser as la } from "./visualization/json-path-browser/index.js";
138
+ import { RuleEditor as ua } from "./visualization/rule-editor/index.js";
139
+ import { MermaidDiagram as da, renderMermaidToString as fa } from "./visualization/mermaid-diagram/index.js";
139
140
  import "./visualization/index.js";
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 };
141
+ import { n as pa, r as ma, t as ha } from "./security-Bl_v8N_p.js";
142
+ import { CvssBadge as ga } from "./security/cvss-badge/index.js";
143
+ import { VulnerabilityCard as _a } from "./security/vulnerability-card/index.js";
144
+ import { AttackPath as va } from "./security/attack-path/index.js";
145
+ import { MitreMatrix as ya } from "./security/mitre-matrix/index.js";
146
+ import { DetectionStatus as ba } from "./security/detection-status/index.js";
147
+ export { Ar as Alert, li as AlertDialog, Yn as ApiClient, Be as AppShell, Wi as AreaChart, jr as AspectRatio, va as AttackPath, Nr as Avatar, Mr as AvatarGroup, Ir as Badge, Ui as BarChart, Ti as BaseChart, jn as BaseEditor, ri as Breadcrumb, sr as Button, or as ButtonGroup, Ge as CORE_APP_ROUTE_LABELS, fi as Calendar, ta as CandlestickChart, Lr as Card, di as Carousel, Ei as ChartLegend, Di as ChartTooltip, Vi as ChartZoom, gr as Checkbox, _r as CheckboxGroup, Rr as CodeBlock, Mn as CodeEditor, _i as ColorPicker, hr as Combobox, Un as CommandPalette, At as ComponentError, Ct as ConfigError, Jn as ContextMenu, Kn as CopyButton, Ci as CronEditor, ga as CvssBadge, _t as DAYS_MON, pt as DAYS_SUN, Ln as DataTable, hi as DatePicker, pi as DateRangePicker, ba as DetectionStatus, In as DiffViewer, wi as Direction, ci as Drawer, ai as DropdownMenu, zr as EmptyState, wr as Field, oa as FileTree, ra as FlowDiagram, ea as FunnelChart, qi as GaugeChart, Ji as HeatmapChart, Br as HoverCard, V as ICON_SETS, ur as IPInput, H as Icon, fr as Input, cr as InputGroup, dr as InputOTP, la as JsonPathBrowser, Pn as JsonViewer, ca as Kanban, Er as Kbd, Qn as KeybindingManager, An as Keys, I as LUCIDE_ICON_NAMES, L as LUCIDE_ICON_PATHS, Cr as Label, Hi as LineChart, Nn as LogViewer, ha as MITRE_TACTICS, ht as MONTHS, Kr as MarkdownViewer, ii as Menubar, da as MermaidDiagram, qr as MetricTile, ya as MitreMatrix, Vn as Modal, mr as NativeSelect, oi as NavigationMenu, St as NetworkError, ia as NetworkGraph, Jr as NotificationCenter, nt as PageHeader, Gn as Pagination, Gi as PieChart, Yr as Popover, Xr as Progress, an as REGISTRY_ACTION_ORDER, on as REGISTRY_SEGMENT_REGEX, Zi as RadarChart, vr as RadioGroup, ir as Router, ua as RuleEditor, U as SEMANTIC_ICON_ALIASES, Zn as SSEManager, $i as SankeyChart, Xi as ScatterChart, kr as ScrollArea, Wn as SearchInput, pr as Select, Tr as Separator, Zr as SeverityIndicator, ui as Sheet, Or as Skeleton, br as Slider, Ki as SparklineChart, Dr as Spinner, Bn as SplitPane, Qr as StatCard, qn as StatusBar, $r as StatusDot, si as Stepper, rr as StorageManager, yr as Switch, pa as TACTIC_IDS_BY_NAME, ma as TACTIC_SHORT_NAMES, zn as TabPanel, gi as TagInput, sa as Terminal, lr as Textarea, aa as ThreatMap, mi as TimePicker, na as Timeline, Hn as ToastManager, Sr as Toggle, xr as ToggleGroup, ei as Tooltip, Ve as TopMenuBar, Rn as TreeView, Yi as TreemapChart, ti as Typography, ni as UptimeBar, Dt as ValidationError, _a as VulnerabilityCard, Qi as WaterfallChart, Fn as YamlEditor, e as acceptAll, xn as announce, Ce as applyAccent, we as applyFont, Te as applyIconSet, J as applyTheme, T as arrayBufferToBase64url, E as authenticateWithPasskey, Ur as base64Decode, Gr as base64Encode, D as base64urlToUint8Array, ft as buildDayGrid, t as checkConsent, Oi as clamp, Y as clearFormErrors, d as clearTokens, rn as compareValues, X as configureTheme, Xn 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, _n as createFocusTrap, W as createIcon, yn as createLiveRegion, p as createLocalStorageTokenStorage, m as createMemoryTokenStorage, rt as createPageHeader, Ue as createProductShell, ar as createRouter, hn as createRovingTabindex, Se as createSafeHtmlFragment, ve as createSafeMarkupFragment, dn as createSrOnlyElement, We as createTopMenuBar, En as createTypeAhead, Vt as createValidator, vi as cronToHuman, tn as cycleSortDirection, ki as defaultColors, Rt as detectLongPress, Lt as detectPan, jt as detectPinch, Zt as detectSwipe, Z as displayFormErrors, Bi as drawAnnotations, Li as drawGridLines, Ri as drawXAxis, zi as drawYAxis, sn as errorMessage, be as escapeHtml, r as fetchCategories, h as fetchWithAuth, O as formatAuthenticationCredential, yi as formatCron, Ai as formatNumber, k as formatRegistrationCredential, Yt as generateSageAnalysis, i as generateVisitorId, g as getAccessToken, cn as getCheckedValues, Ze as getCoreAppRouteLabel, Q as getCurrentTheme, _ as getDefaultAuthManager, a as getDefaultConsentManager, vn as getFocusableElements, G as getIconSvgInner, R as getLucideIconPath, z as getLucideIconSvgInner, bi as getNextRuns, $ as getNextTheme, ee as getPreferredTheme, v as getRefreshToken, te as getResolvedTheme, en as getSafeAreaInsets, zt as getScoreBgClass, Mt as getScoreBgColor, Gt as getScoreBorderClass, Jt as getScoreColorClasses, Pt as getScoreHexColor, Ht as getScoreLevel, Xt as getScoreTextClass, Ft as getScoreTextColor, On as getShortcutFromEvent, Ee as getStoredAccent, o as getStoredConsent, De as getStoredFont, Oe as getStoredIconSet, ke as getStoredQuickSwitcherThemes, ne as getThemeLabel, s as getVisitorId, Tn as gridNavigate, Nt as handleTouchOrClick, ji as hexToRgba, Ae as initAppearance, it as initLayout, re as initTheme, y as isAuthenticated, ut as isBetween, mt as isDateDisabled, bn as isFocusVisibleSupported, Cn as isInputElement, B as isLucideIconName, $t as isMobileViewport, A as isPlatformAuthenticatorAvailable, kt as isPortrait, Dn as isPrintableKey, gt as isSameDay, b as isTokenExpired, xt as isTouchDevice, je as isValidAccent, xi as isValidCron, Me as isValidFont, Ne as isValidIconSet, ln as isValidRegistryPattern, ie as isValidTheme, j as isWebAuthnSupported, Mi as lerpColor, fn as linkControls, gn as linkDescribedBy, Sn as linkLabelledBy, pn as linkOwns, kn as listNavigate, x as logout, mn as manageFocusVisible, Hr as markdownParserUtils, Vr as markdownToHtml, Qe as mountCoreAppChrome, $e as mountCoreAppChromeFromDom, et as mountCoreAppLibraryDashboard, tt as mountCoreAppLibraryDashboardFromDom, ze as navigateDocumentTo, Ni as niceScale, Qt as onPointerDown, Si as parseCron, S as parseToken, Pi as polarToCartesian, M as prepareAuthenticationOptions, N as prepareRegistrationOptions, C as refreshAccessToken, P as registerPasskey, c as rejectAll, K as renderIcon, fa as renderMermaidToString, Wr as resetCodeBlockCounter, q as resolveLucideIconName, _e as sanitizeHtml, l as saveConsent, ae as saveTheme, Fi as scaleBand, Ii as scaleLinear, It as scoreColors, Kt as scoreToColor, Ut 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, at as setupCollapsibles, ot as setupNavKeyboard, st as setupSheets, ct as setupSidebar, le as setupThemeOptions, ue as setupThemeToggle, lt as setupUserMenu, Pr as severityBadge, un as sortRegistryActions, nn as sortRows, Fr as statusBadge, Wt as statusToneFromSeverity, qt as statusToneFromState, tr as storageGet, nr as storageHas, er as storageRemove, $n as storageSet, dt as stripTime, de as submitForm, Re as syncAppearanceFromServer, yt as toggleSelectAll, vt as toggleSelection, fe as toggleTheme, wn as treeNavigate, F as uint8ArrayToBase64url, pe as updateToggleCycle, bt as validateEmail, Bt as validateMaxLength, Tt as validateMinLength, Et as validatePattern, Ot as validateRequired, wt as validateUrl, me as watchSystemTheme };
@@ -50,8 +50,15 @@ export interface AppShellConfig {
50
50
  export declare class TopMenuBar {
51
51
  readonly el: HTMLElement;
52
52
  private readonly cleanupFns;
53
+ private readonly iconSet;
54
+ private readonly actionsEl;
55
+ private readonly userAnchor;
56
+ private userMenuEl;
57
+ private userCleanupFns;
53
58
  constructor(config?: TopMenuBarConfig);
54
59
  destroy(): void;
60
+ updateUser(user: TopMenuBarUser): void;
61
+ private clearUserMenu;
55
62
  private createUserMenu;
56
63
  }
57
64
  export declare class AppShell {
@@ -1 +1 @@
1
- {"version":3,"file":"app-shell.d.ts","sourceRoot":"","sources":["../../src/layout/app-shell.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"app-shell.d.ts","sourceRoot":"","sources":["../../src/layout/app-shell.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAmB,KAAK,OAAO,EAAE,MAAM,gBAAgB,CAAA;AAI9D,MAAM,WAAW,oBAAoB;IACnC,KAAK,EAAE,MAAM,CAAA;IACb,IAAI,CAAC,EAAE,MAAM,CAAA;CACd;AAED,MAAM,WAAW,gBAAgB;IAC/B,EAAE,EAAE,MAAM,CAAA;IACV,KAAK,EAAE,MAAM,CAAA;IACb,IAAI,CAAC,EAAE,MAAM,CAAA;IACb,IAAI,CAAC,EAAE,MAAM,CAAA;IACb,MAAM,CAAC,EAAE,MAAM,CAAA;IACf,KAAK,CAAC,EAAE,OAAO,GAAG,MAAM,GAAG,MAAM,CAAA;IACjC,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB,SAAS,CAAC,EAAE,OAAO,CAAA;IACnB,UAAU,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,GAAG,OAAO,GAAG,IAAI,GAAG,SAAS,CAAC,CAAA;IACzE,OAAO,CAAC,EAAE,MAAM,IAAI,CAAA;CACrB;AAED,MAAM,MAAM,qBAAqB,GAAG,gBAAgB,GAAG,WAAW,CAAA;AAElE,MAAM,WAAW,cAAc;IAC7B,IAAI,EAAE,MAAM,CAAA;IACZ,MAAM,CAAC,EAAE,MAAM,CAAA;IACf,QAAQ,CAAC,EAAE,MAAM,CAAA;IACjB,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB,OAAO,CAAC,EAAE,gBAAgB,EAAE,CAAA;CAC7B;AAED,MAAM,WAAW,gBAAgB;IAC/B,SAAS,CAAC,EAAE,WAAW,GAAG,MAAM,CAAA;IAChC,OAAO,CAAC,EAAE,MAAM,CAAA;IAChB,OAAO,CAAC,EAAE,MAAM,CAAA;IAChB,WAAW,CAAC,EAAE,oBAAoB,EAAE,CAAA;IACpC,aAAa,CAAC,EAAE,WAAW,GAAG,WAAW,EAAE,CAAA;IAC3C,OAAO,CAAC,EAAE,qBAAqB,EAAE,CAAA;IACjC,YAAY,CAAC,EAAE,WAAW,GAAG,WAAW,EAAE,CAAA;IAC1C,IAAI,CAAC,EAAE,cAAc,CAAA;IACrB,OAAO,CAAC,EAAE,OAAO,CAAA;IACjB,SAAS,CAAC,EAAE,MAAM,CAAA;CACnB;AAED,MAAM,WAAW,cAAc;IAC7B,SAAS,CAAC,EAAE,WAAW,GAAG,MAAM,CAAA;IAChC,OAAO,CAAC,EAAE,WAAW,CAAA;IACrB,MAAM,CAAC,EAAE,WAAW,CAAA;IACpB,MAAM,CAAC,EAAE,WAAW,GAAG,gBAAgB,CAAA;IACvC,OAAO,CAAC,EAAE,WAAW,CAAA;IACrB,OAAO,CAAC,EAAE,WAAW,CAAA;IACrB,OAAO,CAAC,EAAE,SAAS,GAAG,SAAS,CAAA;IAC/B,gBAAgB,CAAC,EAAE,OAAO,CAAA;IAC1B,SAAS,CAAC,EAAE,MAAM,CAAA;CACnB;AAuHD,qBAAa,UAAU;IACrB,SAAgB,EAAE,EAAE,WAAW,CAAA;IAC/B,OAAO,CAAC,QAAQ,CAAC,UAAU,CAAqB;IAChD,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAS;IACjC,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAa;IACvC,OAAO,CAAC,QAAQ,CAAC,UAAU,CAAS;IACpC,OAAO,CAAC,UAAU,CAA2B;IAC7C,OAAO,CAAC,cAAc,CAAqB;gBAE/B,MAAM,GAAE,gBAAqB;IA2EzC,OAAO,IAAI,IAAI;IAQf,UAAU,CAAC,IAAI,EAAE,cAAc,GAAG,IAAI;IAQtC,OAAO,CAAC,aAAa;IAQrB,OAAO,CAAC,cAAc;CA6FvB;AAED,qBAAa,QAAQ;IACnB,SAAgB,EAAE,EAAE,WAAW,CAAA;IAC/B,SAAgB,MAAM,EAAE,WAAW,CAAA;IACnC,SAAgB,SAAS,EAAE,WAAW,CAAA;gBAE1B,MAAM,GAAE,cAAmB;CAsDxC;AAED,wBAAgB,cAAc,CAAC,MAAM,GAAE,cAAmB,GAAG,WAAW,CAEvE;AAED,wBAAgB,gBAAgB,CAAC,MAAM,GAAE,gBAAqB,GAAG,WAAW,CAE3E;AAED,wBAAgB,kBAAkB,CAAC,MAAM,GAAE,cAAmB,GAAG,WAAW,CAE3E"}
@@ -36,9 +36,14 @@ function s(e, t) {
36
36
  var c = class {
37
37
  el;
38
38
  cleanupFns = [];
39
+ iconSet;
40
+ actionsEl;
41
+ userAnchor;
42
+ userMenuEl = null;
43
+ userCleanupFns = [];
39
44
  constructor(e = {}) {
40
45
  let t = e.iconSet ?? "lucide";
41
- this.el = document.createElement("header"), this.el.className = ["cmm-topbar", e.className].filter(Boolean).join(" ");
46
+ this.iconSet = t, this.el = document.createElement("header"), this.el.className = ["cmm-topbar", e.className].filter(Boolean).join(" ");
42
47
  let r = document.createElement("div");
43
48
  r.classList.add("cmm-topbar__breadcrumbs");
44
49
  let i = e.product ?? e.breadcrumbs?.[0]?.label;
@@ -60,14 +65,24 @@ var c = class {
60
65
  n.classList.add("cmm-topbar__current"), n.textContent = e.current, r.appendChild(n);
61
66
  }
62
67
  let l = document.createElement("div");
63
- l.classList.add("cmm-topbar__actions"), a(l, e.beforeActions);
68
+ l.classList.add("cmm-topbar__actions"), this.actionsEl = l, this.userAnchor = document.createComment("cmm-topbar-user"), a(l, e.beforeActions);
64
69
  for (let n of e.actions ?? []) l.appendChild(s(n, t));
65
- e.user !== void 0 && l.appendChild(this.createUserMenu(e.user, t)), a(l, e.afterActions), this.el.appendChild(r), this.el.appendChild(l), e.container !== void 0 && n(e.container).appendChild(this.el);
70
+ l.appendChild(this.userAnchor), e.user !== void 0 && this.updateUser(e.user), a(l, e.afterActions), this.el.appendChild(r), this.el.appendChild(l), e.container !== void 0 && n(e.container).appendChild(this.el);
66
71
  }
67
72
  destroy() {
73
+ this.clearUserMenu();
68
74
  for (let e of this.cleanupFns.splice(0)) e();
69
75
  this.el.remove();
70
76
  }
77
+ updateUser(e) {
78
+ this.clearUserMenu();
79
+ let t = this.createUserMenu(e, this.iconSet);
80
+ this.actionsEl.insertBefore(t.element, this.userAnchor), this.userMenuEl = t.element, this.userCleanupFns = t.cleanup;
81
+ }
82
+ clearUserMenu() {
83
+ for (let e of this.userCleanupFns.splice(0)) e();
84
+ this.userMenuEl?.remove(), this.userMenuEl = null;
85
+ }
71
86
  createUserMenu(e, t) {
72
87
  let n = document.createElement("div");
73
88
  n.classList.add("cmm-topbar__user");
@@ -108,9 +123,12 @@ var c = class {
108
123
  }, p = (e) => {
109
124
  e.key === "Escape" && d(!1);
110
125
  };
111
- return document.addEventListener("pointerdown", f), document.addEventListener("keydown", p), this.cleanupFns.push(() => {
112
- document.removeEventListener("pointerdown", f), document.removeEventListener("keydown", p);
113
- }), n.appendChild(a), n.appendChild(c), n;
126
+ return document.addEventListener("pointerdown", f), document.addEventListener("keydown", p), n.appendChild(a), n.appendChild(c), {
127
+ element: n,
128
+ cleanup: [() => {
129
+ document.removeEventListener("pointerdown", f), document.removeEventListener("keydown", p);
130
+ }]
131
+ };
114
132
  }
115
133
  }, l = class {
116
134
  el;
@@ -1 +1 @@
1
- {"version":3,"file":"app-shell.js","names":[],"sources":["../../src/layout/app-shell.ts"],"sourcesContent":["/**\n * AppShell - Layout composition for app chrome.\n */\n\nimport { getIconSvgInner, type IconSet } from '../icons/index'\nimport { resolveContainer } from '../primitives/utils'\nimport { setSafeIconHtml } from '../utils/sanitize'\n\nexport interface TopMenuBarBreadcrumb {\n label: string\n href?: string\n}\n\nexport interface TopMenuBarAction {\n id: string\n label: string\n icon?: string\n href?: string\n target?: string\n badge?: boolean | string | number\n className?: string\n showLabel?: boolean\n attributes?: Record<string, string | number | boolean | null | undefined>\n onClick?: () => void\n}\n\nexport type TopMenuBarActionInput = TopMenuBarAction | HTMLElement\n\nexport interface TopMenuBarUser {\n name: string\n detail?: string\n initials?: string\n avatarUrl?: string\n menuLabel?: string\n actions?: TopMenuBarAction[]\n}\n\nexport interface TopMenuBarConfig {\n container?: HTMLElement | string\n product?: string\n current?: string\n breadcrumbs?: TopMenuBarBreadcrumb[]\n beforeActions?: HTMLElement | HTMLElement[]\n actions?: TopMenuBarActionInput[]\n afterActions?: HTMLElement | HTMLElement[]\n user?: TopMenuBarUser\n iconSet?: IconSet\n className?: string\n}\n\nexport interface AppShellConfig {\n container?: HTMLElement | string\n sidebar?: HTMLElement\n header?: HTMLElement\n topbar?: HTMLElement | TopMenuBarConfig\n content?: HTMLElement\n metrics?: HTMLElement\n variant?: 'default' | 'product'\n sidebarCollapsed?: boolean\n className?: string\n}\n\nfunction createIconSvg(iconSet: IconSet, name: string): SVGElement {\n const svgNs = 'http://www.w3.org/2000/svg'\n const svg = document.createElementNS(svgNs, 'svg')\n svg.setAttribute('xmlns', svgNs)\n svg.setAttribute('width', '16')\n svg.setAttribute('height', '16')\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('aria-hidden', 'true')\n\n const inner = getIconSvgInner(iconSet, name)\n if (inner) {\n setSafeIconHtml(svg, inner)\n }\n\n return svg\n}\n\nfunction toInitials(name: string): string {\n const parts = name.trim().split(/\\s+/).filter(Boolean)\n\n if (parts.length >= 2) {\n return `${parts[0]?.charAt(0) ?? ''}${parts[parts.length - 1]?.charAt(0) ?? ''}`.toUpperCase()\n }\n\n return name.slice(0, 2).toUpperCase()\n}\n\nfunction appendElements(\n parent: HTMLElement,\n elementOrElements: HTMLElement | HTMLElement[] | undefined\n): void {\n if (elementOrElements === undefined) {\n return\n }\n\n const elements = Array.isArray(elementOrElements) ? elementOrElements : [elementOrElements]\n for (const element of elements) {\n parent.appendChild(element)\n }\n}\n\nfunction applyAttributes(\n element: HTMLElement,\n attributes: TopMenuBarAction['attributes'] | undefined\n): void {\n if (attributes === undefined) {\n return\n }\n\n for (const [name, value] of Object.entries(attributes)) {\n if (value === undefined || value === null || value === false) {\n continue\n }\n\n element.setAttribute(name, value === true ? '' : String(value))\n }\n}\n\nfunction createActionElement(action: TopMenuBarActionInput, iconSet: IconSet): HTMLElement {\n if (action instanceof HTMLElement) {\n return action\n }\n\n const element =\n action.href !== undefined ? document.createElement('a') : document.createElement('button')\n\n element.classList.add('cmm-topbar__action')\n if (action.className !== undefined) {\n element.classList.add(...action.className.split(/\\s+/).filter(Boolean))\n }\n element.setAttribute('aria-label', action.label)\n element.setAttribute('title', action.label)\n element.setAttribute('data-action-id', action.id)\n applyAttributes(element, action.attributes)\n\n if (element instanceof HTMLAnchorElement) {\n element.href = action.href ?? '#'\n if (action.target !== undefined) {\n element.target = action.target\n }\n if (action.target === '_blank') {\n element.rel = 'noreferrer noopener'\n }\n } else if (element instanceof HTMLButtonElement) {\n element.type = 'button'\n }\n\n if (action.onClick !== undefined) {\n element.addEventListener('click', action.onClick)\n }\n\n if (action.icon !== undefined) {\n element.appendChild(createIconSvg(iconSet, action.icon))\n }\n\n if (action.showLabel === true || action.icon === undefined) {\n const label = document.createElement('span')\n label.classList.add('cmm-topbar__action-label')\n label.textContent = action.label\n element.appendChild(label)\n }\n\n if (action.badge !== undefined && action.badge !== false) {\n const badge = document.createElement('span')\n badge.classList.add('cmm-topbar__action-badge')\n badge.textContent = action.badge === true ? '' : String(action.badge)\n element.appendChild(badge)\n }\n\n return element\n}\n\nexport class TopMenuBar {\n public readonly el: HTMLElement\n private readonly cleanupFns: (() => void)[] = []\n\n constructor(config: TopMenuBarConfig = {}) {\n const iconSet = config.iconSet ?? 'lucide'\n this.el = document.createElement('header')\n this.el.className = ['cmm-topbar', config.className].filter(Boolean).join(' ')\n\n const crumbWrap = document.createElement('div')\n crumbWrap.classList.add('cmm-topbar__breadcrumbs')\n\n const product = config.product ?? config.breadcrumbs?.[0]?.label\n if (product !== undefined) {\n const productEl = document.createElement('span')\n productEl.classList.add('cmm-topbar__product')\n productEl.textContent = product\n crumbWrap.appendChild(productEl)\n }\n\n const crumbs = config.breadcrumbs ?? []\n const crumbStart = config.product === undefined && product !== undefined ? 1 : 0\n for (const crumb of crumbs.slice(crumbStart)) {\n const separator = document.createElement('span')\n separator.classList.add('cmm-topbar__separator')\n separator.setAttribute('aria-hidden', 'true')\n separator.textContent = '•'\n crumbWrap.appendChild(separator)\n\n const crumbEl =\n crumb.href !== undefined ? document.createElement('a') : document.createElement('span')\n crumbEl.classList.add('cmm-topbar__breadcrumb')\n crumbEl.textContent = crumb.label\n if (crumbEl instanceof HTMLAnchorElement) {\n crumbEl.href = crumb.href ?? '#'\n }\n crumbWrap.appendChild(crumbEl)\n }\n\n if (config.current !== undefined) {\n const separator = document.createElement('span')\n separator.classList.add('cmm-topbar__separator')\n separator.setAttribute('aria-hidden', 'true')\n separator.textContent = '•'\n crumbWrap.appendChild(separator)\n\n const current = document.createElement('span')\n current.classList.add('cmm-topbar__current')\n current.textContent = config.current\n crumbWrap.appendChild(current)\n }\n\n const actions = document.createElement('div')\n actions.classList.add('cmm-topbar__actions')\n\n appendElements(actions, config.beforeActions)\n\n for (const action of config.actions ?? []) {\n actions.appendChild(createActionElement(action, iconSet))\n }\n\n if (config.user !== undefined) {\n actions.appendChild(this.createUserMenu(config.user, iconSet))\n }\n\n appendElements(actions, config.afterActions)\n\n this.el.appendChild(crumbWrap)\n this.el.appendChild(actions)\n\n if (config.container !== undefined) {\n resolveContainer(config.container).appendChild(this.el)\n }\n }\n\n destroy(): void {\n for (const cleanup of this.cleanupFns.splice(0)) {\n cleanup()\n }\n this.el.remove()\n }\n\n private createUserMenu(user: TopMenuBarUser, iconSet: IconSet): HTMLElement {\n const root = document.createElement('div')\n root.classList.add('cmm-topbar__user')\n\n const trigger = document.createElement('button')\n trigger.type = 'button'\n trigger.classList.add('cmm-topbar__user-trigger')\n trigger.setAttribute('aria-haspopup', 'menu')\n trigger.setAttribute('aria-expanded', 'false')\n trigger.setAttribute('aria-label', user.menuLabel ?? `User menu for ${user.name}`)\n\n const avatar = document.createElement('span')\n avatar.classList.add('cmm-topbar__avatar')\n if (user.avatarUrl !== undefined) {\n const image = document.createElement('img')\n image.src = user.avatarUrl\n image.alt = ''\n avatar.appendChild(image)\n } else {\n avatar.textContent = user.initials ?? toInitials(user.name)\n }\n trigger.appendChild(avatar)\n trigger.appendChild(createIconSvg(iconSet, 'chevron-down'))\n\n const menu = document.createElement('div')\n menu.classList.add('cmm-topbar__user-menu')\n menu.setAttribute('role', 'menu')\n menu.hidden = true\n\n const profile = document.createElement('div')\n profile.classList.add('cmm-topbar__user-profile')\n const name = document.createElement('span')\n name.classList.add('cmm-topbar__user-name')\n name.textContent = user.name\n profile.appendChild(name)\n if (user.detail !== undefined) {\n const detail = document.createElement('span')\n detail.classList.add('cmm-topbar__user-detail')\n detail.textContent = user.detail\n profile.appendChild(detail)\n }\n menu.appendChild(profile)\n\n for (const action of user.actions ?? []) {\n const item = createActionElement(action, iconSet)\n item.classList.remove('cmm-topbar__action')\n item.classList.add('cmm-topbar__menu-item')\n item.setAttribute('role', 'menuitem')\n if (item.querySelector('.cmm-topbar__action-label') === null) {\n const label = document.createElement('span')\n label.classList.add('cmm-topbar__action-label')\n label.textContent = action.label\n item.appendChild(label)\n }\n menu.appendChild(item)\n }\n\n const setOpen = (open: boolean): void => {\n menu.hidden = !open\n trigger.setAttribute('aria-expanded', String(open))\n }\n\n trigger.addEventListener('click', () => {\n setOpen(menu.hidden === true)\n })\n\n const closeOnOutsidePointer = (event: PointerEvent): void => {\n if (!root.contains(event.target as Node)) {\n setOpen(false)\n }\n }\n const closeOnEscape = (event: KeyboardEvent): void => {\n if (event.key === 'Escape') {\n setOpen(false)\n }\n }\n\n document.addEventListener('pointerdown', closeOnOutsidePointer)\n document.addEventListener('keydown', closeOnEscape)\n this.cleanupFns.push(() => {\n document.removeEventListener('pointerdown', closeOnOutsidePointer)\n document.removeEventListener('keydown', closeOnEscape)\n })\n\n root.appendChild(trigger)\n root.appendChild(menu)\n return root\n }\n}\n\nexport class AppShell {\n public readonly el: HTMLElement\n public readonly mainEl: HTMLElement\n public readonly contentEl: HTMLElement\n\n constructor(config: AppShellConfig = {}) {\n this.el = document.createElement('div')\n this.el.className = [\n 'cmm-app-shell',\n config.variant === 'product' && 'cmm-app-shell--product',\n config.className,\n ]\n .filter(Boolean)\n .join(' ')\n this.el.setAttribute('data-shell-layout', '')\n if (config.sidebarCollapsed !== undefined) {\n this.el.setAttribute('data-sidebar-collapsed', String(config.sidebarCollapsed))\n }\n\n if (config.sidebar !== undefined) {\n const sidebarSlot = document.createElement('aside')\n sidebarSlot.className = 'cmm-app-shell__sidebar'\n sidebarSlot.setAttribute('data-shell-sidebar', '')\n sidebarSlot.appendChild(config.sidebar)\n this.el.appendChild(sidebarSlot)\n }\n\n this.mainEl = document.createElement('div')\n this.mainEl.className = 'cmm-app-shell__main'\n\n if (config.topbar !== undefined) {\n const topbar =\n config.topbar instanceof HTMLElement ? config.topbar : new TopMenuBar(config.topbar).el\n this.mainEl.appendChild(topbar)\n } else if (config.header !== undefined) {\n this.mainEl.appendChild(config.header)\n }\n\n this.contentEl = document.createElement('main')\n this.contentEl.className = 'cmm-app-shell__content'\n\n if (config.metrics !== undefined) {\n const metrics = document.createElement('div')\n metrics.className = 'cmm-app-shell__metric-strip'\n metrics.appendChild(config.metrics)\n this.contentEl.appendChild(metrics)\n }\n\n if (config.content !== undefined) {\n this.contentEl.appendChild(config.content)\n }\n\n this.mainEl.appendChild(this.contentEl)\n this.el.appendChild(this.mainEl)\n\n if (config.container !== undefined) {\n resolveContainer(config.container).appendChild(this.el)\n }\n }\n}\n\nexport function createAppShell(config: AppShellConfig = {}): HTMLElement {\n return new AppShell(config).el\n}\n\nexport function createTopMenuBar(config: TopMenuBarConfig = {}): HTMLElement {\n return new TopMenuBar(config).el\n}\n\nexport function createProductShell(config: AppShellConfig = {}): HTMLElement {\n return new AppShell({ ...config, variant: 'product' }).el\n}\n"],"mappings":"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"}
1
+ {"version":3,"file":"app-shell.js","names":[],"sources":["../../src/layout/app-shell.ts"],"sourcesContent":["/**\n * AppShell - Layout composition for app chrome.\n */\n\nimport { getIconSvgInner, type IconSet } from '../icons/index'\nimport { resolveContainer } from '../primitives/utils'\nimport { setSafeIconHtml } from '../utils/sanitize'\n\nexport interface TopMenuBarBreadcrumb {\n label: string\n href?: string\n}\n\nexport interface TopMenuBarAction {\n id: string\n label: string\n icon?: string\n href?: string\n target?: string\n badge?: boolean | string | number\n className?: string\n showLabel?: boolean\n attributes?: Record<string, string | number | boolean | null | undefined>\n onClick?: () => void\n}\n\nexport type TopMenuBarActionInput = TopMenuBarAction | HTMLElement\n\nexport interface TopMenuBarUser {\n name: string\n detail?: string\n initials?: string\n avatarUrl?: string\n menuLabel?: string\n actions?: TopMenuBarAction[]\n}\n\nexport interface TopMenuBarConfig {\n container?: HTMLElement | string\n product?: string\n current?: string\n breadcrumbs?: TopMenuBarBreadcrumb[]\n beforeActions?: HTMLElement | HTMLElement[]\n actions?: TopMenuBarActionInput[]\n afterActions?: HTMLElement | HTMLElement[]\n user?: TopMenuBarUser\n iconSet?: IconSet\n className?: string\n}\n\nexport interface AppShellConfig {\n container?: HTMLElement | string\n sidebar?: HTMLElement\n header?: HTMLElement\n topbar?: HTMLElement | TopMenuBarConfig\n content?: HTMLElement\n metrics?: HTMLElement\n variant?: 'default' | 'product'\n sidebarCollapsed?: boolean\n className?: string\n}\n\nfunction createIconSvg(iconSet: IconSet, name: string): SVGElement {\n const svgNs = 'http://www.w3.org/2000/svg'\n const svg = document.createElementNS(svgNs, 'svg')\n svg.setAttribute('xmlns', svgNs)\n svg.setAttribute('width', '16')\n svg.setAttribute('height', '16')\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('aria-hidden', 'true')\n\n const inner = getIconSvgInner(iconSet, name)\n if (inner) {\n setSafeIconHtml(svg, inner)\n }\n\n return svg\n}\n\nfunction toInitials(name: string): string {\n const parts = name.trim().split(/\\s+/).filter(Boolean)\n\n if (parts.length >= 2) {\n return `${parts[0]?.charAt(0) ?? ''}${parts[parts.length - 1]?.charAt(0) ?? ''}`.toUpperCase()\n }\n\n return name.slice(0, 2).toUpperCase()\n}\n\nfunction appendElements(\n parent: HTMLElement,\n elementOrElements: HTMLElement | HTMLElement[] | undefined\n): void {\n if (elementOrElements === undefined) {\n return\n }\n\n const elements = Array.isArray(elementOrElements) ? elementOrElements : [elementOrElements]\n for (const element of elements) {\n parent.appendChild(element)\n }\n}\n\nfunction applyAttributes(\n element: HTMLElement,\n attributes: TopMenuBarAction['attributes'] | undefined\n): void {\n if (attributes === undefined) {\n return\n }\n\n for (const [name, value] of Object.entries(attributes)) {\n if (value === undefined || value === null || value === false) {\n continue\n }\n\n element.setAttribute(name, value === true ? '' : String(value))\n }\n}\n\nfunction createActionElement(action: TopMenuBarActionInput, iconSet: IconSet): HTMLElement {\n if (action instanceof HTMLElement) {\n return action\n }\n\n const element =\n action.href !== undefined ? document.createElement('a') : document.createElement('button')\n\n element.classList.add('cmm-topbar__action')\n if (action.className !== undefined) {\n element.classList.add(...action.className.split(/\\s+/).filter(Boolean))\n }\n element.setAttribute('aria-label', action.label)\n element.setAttribute('title', action.label)\n element.setAttribute('data-action-id', action.id)\n applyAttributes(element, action.attributes)\n\n if (element instanceof HTMLAnchorElement) {\n element.href = action.href ?? '#'\n if (action.target !== undefined) {\n element.target = action.target\n }\n if (action.target === '_blank') {\n element.rel = 'noreferrer noopener'\n }\n } else if (element instanceof HTMLButtonElement) {\n element.type = 'button'\n }\n\n if (action.onClick !== undefined) {\n element.addEventListener('click', action.onClick)\n }\n\n if (action.icon !== undefined) {\n element.appendChild(createIconSvg(iconSet, action.icon))\n }\n\n if (action.showLabel === true || action.icon === undefined) {\n const label = document.createElement('span')\n label.classList.add('cmm-topbar__action-label')\n label.textContent = action.label\n element.appendChild(label)\n }\n\n if (action.badge !== undefined && action.badge !== false) {\n const badge = document.createElement('span')\n badge.classList.add('cmm-topbar__action-badge')\n badge.textContent = action.badge === true ? '' : String(action.badge)\n element.appendChild(badge)\n }\n\n return element\n}\n\nexport class TopMenuBar {\n public readonly el: HTMLElement\n private readonly cleanupFns: (() => void)[] = []\n private readonly iconSet: IconSet\n private readonly actionsEl: HTMLElement\n private readonly userAnchor: Comment\n private userMenuEl: HTMLElement | null = null\n private userCleanupFns: (() => void)[] = []\n\n constructor(config: TopMenuBarConfig = {}) {\n const iconSet = config.iconSet ?? 'lucide'\n this.iconSet = iconSet\n this.el = document.createElement('header')\n this.el.className = ['cmm-topbar', config.className].filter(Boolean).join(' ')\n\n const crumbWrap = document.createElement('div')\n crumbWrap.classList.add('cmm-topbar__breadcrumbs')\n\n const product = config.product ?? config.breadcrumbs?.[0]?.label\n if (product !== undefined) {\n const productEl = document.createElement('span')\n productEl.classList.add('cmm-topbar__product')\n productEl.textContent = product\n crumbWrap.appendChild(productEl)\n }\n\n const crumbs = config.breadcrumbs ?? []\n const crumbStart = config.product === undefined && product !== undefined ? 1 : 0\n for (const crumb of crumbs.slice(crumbStart)) {\n const separator = document.createElement('span')\n separator.classList.add('cmm-topbar__separator')\n separator.setAttribute('aria-hidden', 'true')\n separator.textContent = '•'\n crumbWrap.appendChild(separator)\n\n const crumbEl =\n crumb.href !== undefined ? document.createElement('a') : document.createElement('span')\n crumbEl.classList.add('cmm-topbar__breadcrumb')\n crumbEl.textContent = crumb.label\n if (crumbEl instanceof HTMLAnchorElement) {\n crumbEl.href = crumb.href ?? '#'\n }\n crumbWrap.appendChild(crumbEl)\n }\n\n if (config.current !== undefined) {\n const separator = document.createElement('span')\n separator.classList.add('cmm-topbar__separator')\n separator.setAttribute('aria-hidden', 'true')\n separator.textContent = '•'\n crumbWrap.appendChild(separator)\n\n const current = document.createElement('span')\n current.classList.add('cmm-topbar__current')\n current.textContent = config.current\n crumbWrap.appendChild(current)\n }\n\n const actions = document.createElement('div')\n actions.classList.add('cmm-topbar__actions')\n this.actionsEl = actions\n this.userAnchor = document.createComment('cmm-topbar-user')\n\n appendElements(actions, config.beforeActions)\n\n for (const action of config.actions ?? []) {\n actions.appendChild(createActionElement(action, iconSet))\n }\n\n actions.appendChild(this.userAnchor)\n if (config.user !== undefined) {\n this.updateUser(config.user)\n }\n\n appendElements(actions, config.afterActions)\n\n this.el.appendChild(crumbWrap)\n this.el.appendChild(actions)\n\n if (config.container !== undefined) {\n resolveContainer(config.container).appendChild(this.el)\n }\n }\n\n destroy(): void {\n this.clearUserMenu()\n for (const cleanup of this.cleanupFns.splice(0)) {\n cleanup()\n }\n this.el.remove()\n }\n\n updateUser(user: TopMenuBarUser): void {\n this.clearUserMenu()\n const userMenu = this.createUserMenu(user, this.iconSet)\n this.actionsEl.insertBefore(userMenu.element, this.userAnchor)\n this.userMenuEl = userMenu.element\n this.userCleanupFns = userMenu.cleanup\n }\n\n private clearUserMenu(): void {\n for (const cleanup of this.userCleanupFns.splice(0)) {\n cleanup()\n }\n this.userMenuEl?.remove()\n this.userMenuEl = null\n }\n\n private createUserMenu(\n user: TopMenuBarUser,\n iconSet: IconSet\n ): { element: HTMLElement; cleanup: (() => void)[] } {\n const root = document.createElement('div')\n root.classList.add('cmm-topbar__user')\n\n const trigger = document.createElement('button')\n trigger.type = 'button'\n trigger.classList.add('cmm-topbar__user-trigger')\n trigger.setAttribute('aria-haspopup', 'menu')\n trigger.setAttribute('aria-expanded', 'false')\n trigger.setAttribute('aria-label', user.menuLabel ?? `User menu for ${user.name}`)\n\n const avatar = document.createElement('span')\n avatar.classList.add('cmm-topbar__avatar')\n if (user.avatarUrl !== undefined) {\n const image = document.createElement('img')\n image.src = user.avatarUrl\n image.alt = ''\n avatar.appendChild(image)\n } else {\n avatar.textContent = user.initials ?? toInitials(user.name)\n }\n trigger.appendChild(avatar)\n trigger.appendChild(createIconSvg(iconSet, 'chevron-down'))\n\n const menu = document.createElement('div')\n menu.classList.add('cmm-topbar__user-menu')\n menu.setAttribute('role', 'menu')\n menu.hidden = true\n\n const profile = document.createElement('div')\n profile.classList.add('cmm-topbar__user-profile')\n const name = document.createElement('span')\n name.classList.add('cmm-topbar__user-name')\n name.textContent = user.name\n profile.appendChild(name)\n if (user.detail !== undefined) {\n const detail = document.createElement('span')\n detail.classList.add('cmm-topbar__user-detail')\n detail.textContent = user.detail\n profile.appendChild(detail)\n }\n menu.appendChild(profile)\n\n for (const action of user.actions ?? []) {\n const item = createActionElement(action, iconSet)\n item.classList.remove('cmm-topbar__action')\n item.classList.add('cmm-topbar__menu-item')\n item.setAttribute('role', 'menuitem')\n if (item.querySelector('.cmm-topbar__action-label') === null) {\n const label = document.createElement('span')\n label.classList.add('cmm-topbar__action-label')\n label.textContent = action.label\n item.appendChild(label)\n }\n menu.appendChild(item)\n }\n\n const setOpen = (open: boolean): void => {\n menu.hidden = !open\n trigger.setAttribute('aria-expanded', String(open))\n }\n\n trigger.addEventListener('click', () => {\n setOpen(menu.hidden === true)\n })\n\n const closeOnOutsidePointer = (event: PointerEvent): void => {\n if (!root.contains(event.target as Node)) {\n setOpen(false)\n }\n }\n const closeOnEscape = (event: KeyboardEvent): void => {\n if (event.key === 'Escape') {\n setOpen(false)\n }\n }\n\n document.addEventListener('pointerdown', closeOnOutsidePointer)\n document.addEventListener('keydown', closeOnEscape)\n const cleanup = [\n (): void => {\n document.removeEventListener('pointerdown', closeOnOutsidePointer)\n document.removeEventListener('keydown', closeOnEscape)\n },\n ]\n\n root.appendChild(trigger)\n root.appendChild(menu)\n return { element: root, cleanup }\n }\n}\n\nexport class AppShell {\n public readonly el: HTMLElement\n public readonly mainEl: HTMLElement\n public readonly contentEl: HTMLElement\n\n constructor(config: AppShellConfig = {}) {\n this.el = document.createElement('div')\n this.el.className = [\n 'cmm-app-shell',\n config.variant === 'product' && 'cmm-app-shell--product',\n config.className,\n ]\n .filter(Boolean)\n .join(' ')\n this.el.setAttribute('data-shell-layout', '')\n if (config.sidebarCollapsed !== undefined) {\n this.el.setAttribute('data-sidebar-collapsed', String(config.sidebarCollapsed))\n }\n\n if (config.sidebar !== undefined) {\n const sidebarSlot = document.createElement('aside')\n sidebarSlot.className = 'cmm-app-shell__sidebar'\n sidebarSlot.setAttribute('data-shell-sidebar', '')\n sidebarSlot.appendChild(config.sidebar)\n this.el.appendChild(sidebarSlot)\n }\n\n this.mainEl = document.createElement('div')\n this.mainEl.className = 'cmm-app-shell__main'\n\n if (config.topbar !== undefined) {\n const topbar =\n config.topbar instanceof HTMLElement ? config.topbar : new TopMenuBar(config.topbar).el\n this.mainEl.appendChild(topbar)\n } else if (config.header !== undefined) {\n this.mainEl.appendChild(config.header)\n }\n\n this.contentEl = document.createElement('main')\n this.contentEl.className = 'cmm-app-shell__content'\n\n if (config.metrics !== undefined) {\n const metrics = document.createElement('div')\n metrics.className = 'cmm-app-shell__metric-strip'\n metrics.appendChild(config.metrics)\n this.contentEl.appendChild(metrics)\n }\n\n if (config.content !== undefined) {\n this.contentEl.appendChild(config.content)\n }\n\n this.mainEl.appendChild(this.contentEl)\n this.el.appendChild(this.mainEl)\n\n if (config.container !== undefined) {\n resolveContainer(config.container).appendChild(this.el)\n }\n }\n}\n\nexport function createAppShell(config: AppShellConfig = {}): HTMLElement {\n return new AppShell(config).el\n}\n\nexport function createTopMenuBar(config: TopMenuBarConfig = {}): HTMLElement {\n return new TopMenuBar(config).el\n}\n\nexport function createProductShell(config: AppShellConfig = {}): HTMLElement {\n return new AppShell({ ...config, variant: 'product' }).el\n}\n"],"mappings":"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"}