@adia-ai/web-modules 0.8.39 → 0.8.41

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 (120) hide show
  1. package/CHANGELOG.md +37 -0
  2. package/README.md +6 -6
  3. package/agent-admin/admin-roster/admin-roster.a2ui.json +1 -0
  4. package/agent-admin/admin-roster/admin-roster.css +10 -2
  5. package/agent-admin/admin-roster/admin-roster.js +70 -22
  6. package/agent-admin/admin-settings/admin-settings.a2ui.json +1 -0
  7. package/agent-admin/agent-admin/agent-admin.a2ui.json +1 -0
  8. package/billing/billing-overview/billing-overview.a2ui.json +10 -1
  9. package/billing/billing-overview/billing-overview.class.js +142 -73
  10. package/billing/billing-overview/billing-overview.css +70 -57
  11. package/billing/billing-overview/billing-overview.yaml +5 -0
  12. package/billing/invoice-detail/invoice-detail.a2ui.json +9 -4
  13. package/billing/invoice-detail/invoice-detail.class.js +22 -5
  14. package/billing/invoice-detail/invoice-detail.yaml +9 -4
  15. package/billing/invoice-history/invoice-history.a2ui.json +7 -4
  16. package/billing/invoice-history/invoice-history.class.js +45 -12
  17. package/billing/invoice-history/invoice-history.css +18 -15
  18. package/billing/invoice-history/invoice-history.yaml +10 -4
  19. package/billing/payment-method-form/payment-method-form.a2ui.json +1 -0
  20. package/billing/payment-method-form/payment-method-form.class.js +3 -3
  21. package/billing/payment-method-form/payment-method-form.css +4 -4
  22. package/billing/payment-method-list/payment-method-list.a2ui.json +4 -0
  23. package/billing/payment-method-list/payment-method-list.class.js +31 -11
  24. package/billing/payment-method-list/payment-method-list.css +13 -10
  25. package/billing/payment-method-list/payment-method-list.yaml +3 -0
  26. package/billing/plan-picker/plan-picker.a2ui.json +6 -0
  27. package/billing/plan-picker/plan-picker.class.js +70 -22
  28. package/billing/plan-picker/plan-picker.css +21 -38
  29. package/billing/plan-picker/plan-picker.yaml +5 -0
  30. package/chat/chat-composer/chat-composer.a2ui.json +1 -0
  31. package/chat/chat-empty/chat-empty.a2ui.json +4 -0
  32. package/chat/chat-empty/chat-empty.yaml +2 -0
  33. package/chat/chat-header/chat-header.a2ui.json +5 -0
  34. package/chat/chat-header/chat-header.yaml +3 -0
  35. package/chat/chat-shell/chat-shell.a2ui.json +4 -0
  36. package/chat/chat-shell/chat-shell.yaml +2 -0
  37. package/chat/chat-shell/css/chat-shell.tokens.css +1 -1
  38. package/chat/chat-sidebar/chat-sidebar.a2ui.json +4 -0
  39. package/chat/chat-sidebar/chat-sidebar.yaml +2 -0
  40. package/chat/chat-status/chat-status.a2ui.json +4 -0
  41. package/chat/chat-status/chat-status.yaml +2 -0
  42. package/chat/chat-thread/chat-thread.a2ui.json +4 -0
  43. package/chat/chat-thread/chat-thread.yaml +2 -0
  44. package/dashboard/dashboard-layout/dashboard-layout.a2ui.json +8 -8
  45. package/dashboard/dashboard-layout/dashboard-layout.css +4 -4
  46. package/dashboard/dashboard-layout/dashboard-layout.js +10 -9
  47. package/dashboard/dashboard-layout/dashboard-layout.yaml +19 -7
  48. package/dashboard/date-range-selector/date-range-selector.a2ui.json +4 -3
  49. package/dashboard/date-range-selector/date-range-selector.yaml +6 -4
  50. package/dist/chat/chat-shell.min.css +1 -1
  51. package/dist/chat/chat-shell.min.js +25 -25
  52. package/dist/editor/editor-shell.min.js +3 -3
  53. package/dist/everything.min.js +118 -131
  54. package/dist/shell/admin-shell.min.css +1 -1
  55. package/dist/shell/admin-shell.min.js +6 -6
  56. package/dist/simple/simple-shell.min.js +5 -5
  57. package/dist/web-modules.min.css +1 -1
  58. package/dist/web-modules.sheet.js +1 -1
  59. package/editor/editor-canvas/editor-canvas.a2ui.json +4 -0
  60. package/editor/editor-canvas/editor-canvas.yaml +2 -0
  61. package/editor/editor-canvas-empty/editor-canvas-empty.a2ui.json +4 -0
  62. package/editor/editor-canvas-empty/editor-canvas-empty.yaml +2 -0
  63. package/editor/editor-canvas-toolbar/editor-canvas-toolbar.a2ui.json +4 -0
  64. package/editor/editor-canvas-toolbar/editor-canvas-toolbar.yaml +2 -0
  65. package/editor/editor-shell/editor-shell.a2ui.json +5 -0
  66. package/editor/editor-shell/editor-shell.yaml +3 -0
  67. package/editor/editor-sidebar/editor-sidebar.a2ui.json +4 -0
  68. package/editor/editor-sidebar/editor-sidebar.yaml +2 -0
  69. package/editor/editor-statusbar/editor-statusbar.a2ui.json +4 -0
  70. package/editor/editor-statusbar/editor-statusbar.yaml +2 -0
  71. package/editor/editor-toolbar/editor-toolbar.a2ui.json +4 -0
  72. package/editor/editor-toolbar/editor-toolbar.yaml +2 -0
  73. package/feedback/confirm-dialog/confirm-dialog.a2ui.json +1 -0
  74. package/form/form-popover/form-popover.a2ui.json +1 -0
  75. package/onboarding/onboarding-checklist/onboarding-checklist.a2ui.json +2 -1
  76. package/onboarding/onboarding-checklist/onboarding-checklist.js +2 -2
  77. package/onboarding/onboarding-checklist/onboarding-checklist.yaml +1 -1
  78. package/package.json +6 -6
  79. package/runtime/a2ui-root/a2ui-root.a2ui.json +6 -5
  80. package/runtime/a2ui-root/a2ui-root.css +75 -0
  81. package/runtime/a2ui-root/a2ui-root.js +118 -10
  82. package/runtime/a2ui-root/a2ui-root.yaml +7 -2
  83. package/runtime/gen-root/gen-root.a2ui.json +6 -5
  84. package/runtime/gen-root/gen-root.yaml +10 -2
  85. package/settings/integrations-page/integrations-page.a2ui.json +3 -2
  86. package/settings/integrations-page/integrations-page.js +8 -8
  87. package/settings/integrations-page/integrations-page.yaml +2 -2
  88. package/settings/notification-preferences/notification-preferences.a2ui.json +1 -0
  89. package/shell/admin-command/admin-command.a2ui.json +5 -1
  90. package/shell/admin-command/admin-command.yaml +3 -1
  91. package/shell/admin-content/admin-content.a2ui.json +4 -0
  92. package/shell/admin-content/admin-content.yaml +2 -0
  93. package/shell/admin-entity-item/admin-entity-item.a2ui.json +1 -0
  94. package/shell/admin-page/admin-page.a2ui.json +5 -0
  95. package/shell/admin-page/admin-page.yaml +3 -0
  96. package/shell/admin-page-body/admin-page-body.a2ui.json +4 -0
  97. package/shell/admin-page-body/admin-page-body.yaml +2 -0
  98. package/shell/admin-page-footer/admin-page-footer.a2ui.json +4 -0
  99. package/shell/admin-page-footer/admin-page-footer.yaml +2 -0
  100. package/shell/admin-page-header/admin-page-header.a2ui.json +4 -0
  101. package/shell/admin-page-header/admin-page-header.yaml +2 -0
  102. package/shell/admin-scroll/admin-scroll.a2ui.json +4 -0
  103. package/shell/admin-scroll/admin-scroll.yaml +2 -0
  104. package/shell/admin-shell/admin-shell.a2ui.json +7 -3
  105. package/shell/admin-shell/admin-shell.yaml +3 -1
  106. package/shell/admin-shell/css/admin-shell.sidebar.css +2 -2
  107. package/shell/admin-sidebar/admin-sidebar.a2ui.json +4 -0
  108. package/shell/admin-sidebar/admin-sidebar.yaml +2 -0
  109. package/shell/admin-statusbar/admin-statusbar.a2ui.json +6 -0
  110. package/shell/admin-statusbar/admin-statusbar.yaml +4 -0
  111. package/shell/admin-topbar/admin-topbar.a2ui.json +6 -0
  112. package/shell/admin-topbar/admin-topbar.yaml +4 -0
  113. package/shell/embed-shell/embed-shell.a2ui.json +1 -0
  114. package/simple/simple-content/simple-content.a2ui.json +4 -0
  115. package/simple/simple-content/simple-content.yaml +2 -0
  116. package/simple/simple-hero/simple-hero.a2ui.json +4 -0
  117. package/simple/simple-hero/simple-hero.yaml +2 -0
  118. package/simple/simple-shell/simple-shell.a2ui.json +4 -0
  119. package/simple/simple-shell/simple-shell.yaml +2 -0
  120. package/theme/theme-panel/theme-panel.a2ui.json +1 -0
@@ -1 +1 @@
1
- :where(admin-shell){--page-bg:var(--a-canvas-0);--page-border:1px solid var(--md-sys-color-neutral-outline-variant);--page-main-border:var(--page-border);--page-header-height:var(--a-chrome-app-header-height);--page-header-px:var(--a-space-3);--page-header-gap:var(--a-space-3);--page-header-font:var(--a-ui-size);--page-header-fg-muted:var(--a-fg-muted);--page-sidebar-px:var(--a-space-1);--page-sidebar-gap:var(--a-space-1);--page-sidebar-font:var(--a-ui-size);--page-sidebar-min-width:48px;--page-sidebar-max-width:480px;--page-sidebar-resize-accent:var(--md-sys-color-primary);--page-sidebar-bg:var(--md-sys-color-neutral-surface-dimmest);--page-sidebar-divider-bg:var(--md-sys-color-neutral-outline-variant);--page-sidebar-width-leading:clamp(var(--page-sidebar-min-width), 200px, 240px);--page-sidebar-width-trailing:clamp(var(--page-sidebar-min-width), 200px, 240px);--page-content-bg:var(--a-canvas-2);--page-content-header-bg:var(--page-content-bg);--page-content-radius:var(--a-radius-lg);--page-content-inset:var(--a-space-10);--page-content-max-width:1540px;--page-content-border:1px solid var(--md-sys-color-neutral-outline-variant);--page-content-shadow:var(--a-shadow-sm);--page-content-bp-sm:480px;--page-content-bp-md:720px;--page-content-bp-lg:1024px;--page-section-gap:var(--a-space-6);--page-block-gap:var(--a-space-4);--page-deck-gap:var(--a-space-1);--page-section-size:var(--a-kicker-size);--page-section-weight:var(--a-kicker-weight);--page-section-leading:var(--a-kicker-leading);--page-section-tracking:var(--a-kicker-tracking);--page-section-case:var(--a-kicker-case);--page-section-color:var(--a-kicker-color);--page-section-mb:var(--a-space-3);--page-section-pb:var(--a-space-2);--page-subsection-size:var(--a-subsection-size);--page-subsection-weight:var(--a-subsection-weight);--page-subsection-color:var(--a-subsection-color);--page-sidebar-collapsed-icon:1.0625rem;--page-sidebar-collapsed-avatar:1.875rem;--page-actions-gap:var(--a-space-2);--page-grid-gap:var(--a-space-3);--page-duration:var(--a-duration);--page-duration-fast:var(--a-duration-fast);--page-easing:var(--a-easing);--page-font-family:var(--a-font-family);--page-body-size:var(--a-body-size);--nav-duration:var(--a-duration);--nav-duration-fast:var(--a-duration-fast);--nav-easing:var(--a-easing);--nav-label-px:var(--a-space-2);--nav-label-py:var(--a-space-1);--nav-label-font-size:var(--a-kicker-sm);--nav-label-weight:var(--a-weight-medium);--nav-label-fg:var(--a-fg-muted);--nav-divider-bg:var(--md-sys-color-neutral-outline-variant);--nav-divider-my:var(--a-space-1);--nav-group-indent-rail-bg:var(--md-sys-color-neutral-outline-variant);--nav-group-icon-font-size:var(--a-ui-size);--nav-group-text-weight:var(--a-weight-medium);--nav-group-badge-bg:var(--a-bg-muted);--nav-group-badge-px:var(--a-space-1);--nav-group-badge-radius:var(--a-radius-full);--nav-item-icon-font-size:var(--a-ui-size);--nav-item-selected-weight:var(--a-weight-medium);--nav-item-badge-fg:var(--a-fg-muted);--nav-item-badge-bg:var(--a-bg-muted);--nav-item-badge-px:var(--a-space-1);--nav-item-badge-radius:var(--a-radius-full);--nav-item-trailing-font:var(--a-ui-sm);--nav-item-trailing-fg:var(--a-fg-muted);--nav-item-trailing-border:var(--md-sys-color-neutral-outline-variant);--nav-item-trailing-radius:var(--a-radius-sm);--nav-item-trailing-px:var(--a-space-0-5);--a-icon-size:18px}admin-shell[mode~=borderless]{--page-main-border:none;--page-border:none}admin-shell{background:var(--page-bg);overscroll-behavior:none;height:100dvh;font-family:var(--page-font-family);font-size:var(--page-body-size);display:flex;position:fixed;inset:0;overflow:hidden}admin-shell:not(:has(>:is(asideadmin-sidebar[slot=trailing],admin-sidebar[slot=trailing]):not([hidden])))>admin-content>admin-scroll{margin-inline-end:var(--a-space-2)}admin-shell:not(:has(>:is(header,header-ui,admin-topbar):not([hidden]),>admin-content>admin-topbar:not([hidden])))>admin-content>admin-scroll{margin-block-start:var(--a-space-2)}admin-shell:not(:has(>:is(footer,footer-ui,admin-statusbar):not([hidden]),>admin-content>admin-statusbar:not([hidden])))>admin-content>admin-scroll{margin-block-end:var(--a-space-2)}admin-shell>admin-content>admin-scroll::-webkit-scrollbar{display:none}admin-shell>admin-content>admin-scroll:has(>[data-subnav]:not([hidden])){grid-template-columns:var(--subnav-width,14rem) 1fr;grid-template-rows:minmax(0,1fr);gap:0;display:grid}admin-shell>admin-content>admin-scroll>[data-subnav]{overscroll-behavior:contain;border-inline-end:1px solid var(--md-sys-color-neutral-outline-variant);min-height:0;padding-block:var(--a-space-2);padding-inline:var(--a-space-2);overflow-y:auto}@container (width<=40rem){admin-shell>admin-content>admin-scroll:has(>[data-subnav]:not([hidden])){grid-template-columns:1fr}admin-shell>admin-content>admin-scroll>[data-subnav]{border-inline-end:none;border-block-end:1px solid var(--md-sys-color-neutral-outline-variant)}}:is(admin-sidebar[slot=leading],admin-sidebar[slot=trailing]){background:var(--page-sidebar-bg);min-width:var(--page-sidebar-min-width);max-width:var(--page-sidebar-max-width);min-height:0;font-size:var(--page-sidebar-font);transition:width var(--page-duration) var(--page-easing);flex-direction:column;flex-shrink:0;display:flex;position:relative;container:sidebar/inline-size}:is(admin-sidebar[slot=leading],admin-sidebar[slot=trailing])>[data-resize]{cursor:col-resize;width:6px;transition:background var(--page-duration-fast) var(--page-easing);z-index:3;background:0 0;position:absolute;top:0;bottom:0}:is(admin-sidebar[slot=leading],admin-sidebar[slot=trailing])>[data-resize]:hover,:is(admin-sidebar[slot=leading],admin-sidebar[slot=trailing])[data-resizing]>[data-resize]{background:var(--page-sidebar-resize-accent)}:is(admin-sidebar[slot=leading],admin-sidebar[slot=trailing])[data-resizing]{-webkit-user-select:none;user-select:none;transition:none}admin-sidebar[slot=leading]{width:var(--page-sidebar-width-leading)}admin-sidebar[slot=trailing]{width:var(--page-sidebar-width-trailing)}:is(admin-sidebar[slot=leading],admin-sidebar[slot=trailing])>:is(header,header-ui),:is(admin-sidebar[slot=leading],admin-sidebar[slot=trailing])>:is(footer,footer-ui){align-items:center;gap:var(--page-sidebar-gap);padding:var(--page-sidebar-px);flex-shrink:0;min-width:0;display:flex;overflow:hidden}:is(admin-sidebar[slot=leading],admin-sidebar[slot=trailing])>:is(header,header-ui){min-height:var(--page-header-height);border-bottom:var(--page-border)}:is(admin-sidebar[slot=leading],admin-sidebar[slot=trailing])>:is(footer,footer-ui){min-height:var(--page-header-height);border-top:var(--page-border);margin-top:auto}:is(admin-sidebar[slot=leading],admin-sidebar[slot=trailing])>:is(header,header-ui)>[slot=icon],:is(admin-sidebar[slot=leading],admin-sidebar[slot=trailing])>:is(footer,footer-ui)>[slot=icon]{color:var(--page-header-fg-muted);flex-shrink:0;align-items:center;display:flex}:is(admin-sidebar[slot=leading],admin-sidebar[slot=trailing])>:is(header,header-ui)>[slot=heading],:is(admin-sidebar[slot=leading],admin-sidebar[slot=trailing])>:is(footer,footer-ui)>[slot=heading]{font-weight:var(--a-weight-medium);color:var(--md-sys-color-neutral-on-surface)}:is(admin-sidebar[slot=leading],admin-sidebar[slot=trailing])>:is(header,header-ui)>[slot=description],:is(admin-sidebar[slot=leading],admin-sidebar[slot=trailing])>:is(footer,footer-ui)>[slot=description]{color:var(--page-header-fg-muted);font-size:var(--a-ui-sm)}:is(admin-sidebar[slot=leading],admin-sidebar[slot=trailing])>:is(header,header-ui)>[slot=action],:is(admin-sidebar[slot=leading],admin-sidebar[slot=trailing])>:is(footer,footer-ui)>[slot=action]{align-items:center;gap:var(--page-actions-gap);flex-shrink:0;margin-inline-start:auto;display:flex}:is(admin-sidebar[slot=leading],admin-sidebar[slot=trailing])>:is(header,header-ui)>[slot=action]~[slot=action],:is(admin-sidebar[slot=leading],admin-sidebar[slot=trailing])>:is(footer,footer-ui)>[slot=action]~[slot=action]{margin-inline-start:0}:is(admin-sidebar[slot=leading],admin-sidebar[slot=trailing])>:is(header,header-ui)>[slot=action-leading],:is(admin-sidebar[slot=leading],admin-sidebar[slot=trailing])>:is(footer,footer-ui)>[slot=action-leading]{align-items:center;gap:var(--page-actions-gap);flex-shrink:0;margin-inline-end:auto;display:flex}:is(admin-sidebar[slot=leading],admin-sidebar[slot=trailing])>:is(section,section-ui){padding:var(--page-sidebar-px);scrollbar-width:none;flex:1;min-height:0;overflow-y:auto}:is(admin-sidebar[slot=leading],admin-sidebar[slot=trailing])>:is(section,section-ui)::-webkit-scrollbar{display:none}:is(admin-sidebar[slot=leading],admin-sidebar[slot=trailing]) span[slot=pad]{padding:var(--page-sidebar-px);display:block}:is(admin-sidebar[slot=leading],admin-sidebar[slot=trailing]) nav-ui{border:none;padding:0}:is(admin-sidebar[slot=leading],admin-sidebar[slot=trailing])>:is(section,section-ui)>hr[data-nav-divider]{background:var(--page-sidebar-divider-bg);height:1px;margin:var(--page-sidebar-gap) var(--page-sidebar-px);border:none}@container sidebar (width<=96px){:is(admin-topbar,admin-statusbar){padding:var(--page-sidebar-px);justify-content:center}:is(section,section-ui){flex-direction:column;align-items:center;display:flex}select-ui [slot=display],select-ui [slot=caret],select-ui [data-chips]{display:none}select-ui [slot=trigger]{width:100%;min-height:var(--page-header-height);justify-content:center;padding:0}select-ui [slot=leading]{--a-icon-size:var(--page-sidebar-collapsed-icon);font-size:var(--page-sidebar-collapsed-icon)}select-ui img[slot=leading]{width:var(--page-sidebar-collapsed-avatar);height:var(--page-sidebar-collapsed-avatar)}select-ui adia-mark-ui[slot=leading]{--adia-mark-size:var(--page-sidebar-collapsed-avatar)}nav-ui [slot=text],nav-ui [slot=badge],nav-ui [slot=caret],nav-ui [slot=trailing],nav-ui [data-nav-label],nav-ui [data-nav-divider]{display:none!important}nav-group-ui [slot=header]{min-width:var(--nav-group-row-height);min-height:var(--nav-group-row-height);justify-content:center;padding:0}nav-item-ui{min-width:var(--nav-item-row-height);min-height:var(--nav-item-row-height);justify-content:center;padding:0}nav-ui{align-items:center;width:100%}button-ui{--button-px:0;justify-content:center;width:auto!important}button-ui [slot=trailing]{display:none}:scope,:is(admin-topbar,admin-statusbar),:is(section,section-ui,nav){overflow:hidden}:is(span,p,div,h1,h2,h3,h4,h5,h6)[slot=heading],[slot=heading]:not(:has(>[slot])){display:none}button.nav-item,a.nav-item,[data-nav]{text-indent:-9999px;white-space:nowrap;justify-content:center;overflow:hidden}button.nav-item>icon-ui,a.nav-item>icon-ui,[data-nav]>icon-ui,button.nav-item>:has(>icon-ui),a.nav-item>:has(>icon-ui),[data-nav]>:has(>icon-ui){text-indent:0}}admin-page-header>:is(header,header-ui),admin-page-body>:is(section,section-ui),admin-page-footer>:is(footer,footer-ui){max-width:var(--page-content-max-width);box-sizing:border-box;width:100%;margin-inline:auto}admin-page-header>:is(header,header-ui){padding-inline:var(--page-content-inset)}admin-page-body>:is(section,section-ui):not(:last-child){border-bottom:var(--page-content-border)}admin-page-header[data-content-full]>:is(header,header-ui),admin-page-body[data-content-full]>:is(section,section-ui),admin-page-footer[data-content-full]>:is(footer,footer-ui),admin-page-header>:is(header,header-ui)[data-content-full],admin-page-body>:is(section,section-ui)[data-content-full],admin-page-footer>:is(footer,footer-ui)[data-content-full]{max-width:100%}admin-page-header>:is(header,header-ui){gap:var(--page-header-gap);padding-block:var(--page-content-inset) var(--page-header-gap);flex-direction:column;display:flex}admin-page-header>:is(header,header-ui):has(tabs-ui){padding-bottom:0}admin-page-header:has(>:is(header,header-ui)[data-flush]){background:0 0;border-bottom:none;position:static}admin-page-header>:is(header,header-ui)[data-compact]{padding-block:var(--page-header-px)}admin-page-header>:is(header,header-ui)>div:first-of-type{justify-content:space-between;align-items:center;gap:var(--page-header-gap);display:flex}admin-page-header h1,admin-page-header>:is(header,header-ui)>p{margin:0}admin-page-body>:is(section,section-ui){padding:var(--page-content-inset);gap:var(--page-section-gap,var(--a-space-8));flex-direction:column;display:flex}admin-page-footer>:is(footer,footer-ui){justify-content:flex-end;align-items:center;gap:var(--page-header-gap);padding-inline:var(--page-content-inset);padding-block:var(--page-header-gap);display:flex}admin-page-body>iframe{border:0;flex:1;block-size:100%;inline-size:100%;display:block}admin-page-body>section:has(>iframe[data-standalone-frame]){flex:1;min-height:0}admin-page-body>section>iframe[data-standalone-frame]{border:0;flex:1;block-size:100%;inline-size:100%;display:block}[data-tab-content]>section{margin-bottom:var(--page-section-gap)}[data-tab-content]>section>h2{font-size:var(--page-section-size);font-weight:var(--page-section-weight);line-height:var(--page-section-leading);letter-spacing:var(--page-section-tracking);text-transform:var(--page-section-case);color:var(--page-section-color);margin:0 0 var(--page-section-mb);padding-bottom:var(--page-section-pb);border-bottom:var(--page-content-border)}[data-tab-content]>section>[data-section]{gap:var(--page-section-gap) var(--page-header-gap);grid-template-columns:1fr 2fr;display:grid}[data-tab-content]>section>[data-section]>aside>h3{font-size:var(--page-subsection-size);font-weight:var(--page-subsection-weight);color:var(--page-subsection-color);margin:0 0 var(--page-section-pb)}[data-tab-content]>section>[data-section]>aside>p{margin:0}@container page-content (width<=720px){[data-tab-content]>section>[data-section]{gap:var(--page-block-gap) 0;grid-template-columns:minmax(0,1fr)}}@container page-content (width<=768px){admin-page-header>:is(header,header-ui),admin-page-body>:is(section,section-ui){padding-inline:var(--a-space-8)}admin-page-body>:is(section,section-ui){padding-block:var(--a-space-8)}}@container page-content (width<=480px){admin-page-header>:is(header,header-ui),admin-page-body>:is(section,section-ui){padding-inline:var(--a-space-6)}admin-page-body>:is(section,section-ui){padding-block:var(--a-space-6)}}admin-shell [data-spacer]{flex:1}admin-shell [data-actions]{align-items:center;gap:var(--page-actions-gap);display:flex}admin-shell [data-grid]{gap:var(--page-grid-gap);grid-template-columns:1fr 1fr;display:grid}admin-shell [data-grid="3"]{grid-template-columns:1fr 1fr 1fr}admin-shell [data-col]{gap:var(--page-grid-gap);flex-direction:column;display:flex}admin-shell [data-row]{align-items:center;gap:var(--page-grid-gap);display:flex}admin-shell>admin-content{border-inline:var(--page-main-border);flex-direction:column;flex:1;min-width:0;min-height:0;display:flex}admin-content>admin-topbar,admin-shell>admin-topbar,admin-sidebar>admin-topbar{align-items:center;gap:var(--page-header-gap);padding:0 var(--a-space-3);height:var(--page-header-height);font-size:var(--page-header-font);border-bottom:var(--page-border);flex-shrink:0;display:flex}admin-content>admin-statusbar,admin-shell>admin-statusbar,admin-sidebar>admin-statusbar{align-items:center;gap:var(--page-header-gap);padding:0 var(--a-space-3);height:var(--page-header-height);font-size:var(--page-header-font);color:var(--page-header-fg-muted);border-top:var(--page-border);flex-shrink:0;display:flex}admin-sidebar>:is(admin-topbar,admin-statusbar){padding-inline:var(--page-sidebar-px)}admin-sidebar>:is(admin-topbar,admin-statusbar)>:where(span,p,small,time,text-ui,code-ui){padding-inline:var(--a-space-2)}admin-content>admin-scroll{overscroll-behavior:contain;scrollbar-width:none;background:var(--page-content-bg);border:var(--page-content-border);min-height:0;box-shadow:var(--page-content-shadow);flex:1;overflow-y:auto}admin-shell[mode~=rounded]>admin-content>admin-scroll{border-radius:var(--page-content-radius)}:is(admin-scroll,admin-content) admin-page{flex-direction:column;min-height:100%;display:flex;container:page-content/inline-size}admin-page>admin-page-header{z-index:1;background:var(--page-content-header-bg);border-bottom:var(--page-content-border);flex-shrink:0;position:sticky;top:0}admin-page>admin-page-body{box-sizing:border-box;flex-direction:column;flex:1;width:100%;min-height:0;display:flex}admin-page>admin-page-footer{z-index:1;background:var(--page-content-header-bg);border-top:var(--page-content-border);flex-shrink:0;position:sticky;bottom:0}:is(admin-sidebar[slot=leading],admin-sidebar[slot=trailing]){min-width:var(--page-sidebar-min-width);max-width:var(--page-sidebar-max-width);min-height:0;font-size:var(--page-sidebar-font);transition:width var(--page-duration) var(--page-easing);background:var(--page-bg);flex-direction:column;flex-shrink:0;display:flex;position:relative;container:sidebar/inline-size}admin-sidebar[slot=leading]{width:var(--page-sidebar-width-leading);border-right:var(--page-border)}admin-sidebar[slot=trailing]{width:var(--page-sidebar-width-trailing);border-left:var(--page-border)}:is(admin-sidebar[slot=leading],admin-sidebar[slot=trailing])>[data-resize]{cursor:col-resize;z-index:3;-webkit-user-select:none;user-select:none;width:6px;position:absolute;top:0;bottom:0}admin-sidebar[slot=leading]>[data-resize]{right:-3px}admin-sidebar[slot=trailing]>[data-resize]{left:-3px}:is(admin-sidebar[slot=leading],admin-sidebar[slot=trailing])>[data-resize]:hover{background:var(--page-sidebar-resize-accent);opacity:.5}admin-sidebar[resizing]{transition:none}admin-sidebar[resizing]>[data-resize]{background:var(--page-sidebar-resize-accent);opacity:.8}:is(admin-topbar,admin-statusbar)>[slot=action]:first-of-type{margin-inline-start:auto}:is(admin-topbar,admin-statusbar)>[slot=action-leading]{margin-inline-end:var(--page-actions-gap)}:is(admin-topbar,admin-statusbar)>[slot=icon]{color:var(--page-header-fg-muted);flex-shrink:0}:is(admin-topbar,admin-statusbar)>[slot=heading]{font-weight:var(--a-weight-medium,500);color:var(--md-sys-color-neutral-on-surface)}:is(admin-topbar,admin-statusbar)>[slot=description]{color:var(--page-header-fg-muted);font-size:var(--a-ui-sm)}:is(admin-topbar,admin-statusbar)>[slot=action],:is(admin-topbar,admin-statusbar)>[slot=action-leading]{align-items:center;gap:var(--page-actions-gap);flex-shrink:0;display:flex}:is(admin-topbar,admin-statusbar)>[slot=action]~[slot=action]{margin-inline-start:0}:is(admin-topbar,admin-statusbar)>[slot=icon]{align-items:center;display:flex}admin-entity-item{--entity-item-gap:var(--a-space-1);--entity-item-px:var(--a-ui-px);--entity-item-icon-size:calc(var(--a-size) - var(--a-space-2));--entity-item-icon-color:var(--a-fg-muted);--entity-item-avatar-size:1.5rem;align-items:center;gap:var(--entity-item-gap);padding:0 var(--entity-item-px);min-width:0;display:inline-flex;overflow:hidden}admin-entity-item>[slot=icon]{color:var(--entity-item-icon-color);--a-icon-size:var(--entity-item-icon-size);flex-shrink:0;align-items:center;line-height:1;display:inline-flex}admin-entity-item>img[slot=icon]{width:var(--entity-item-avatar-size);height:var(--entity-item-avatar-size);border-radius:var(--a-radius-full);object-fit:cover}admin-entity-item>[slot=label]{text-overflow:ellipsis;white-space:nowrap;min-width:0;font-size:var(--a-ui-sm);font-weight:var(--a-weight-medium,500);color:var(--md-sys-color-neutral-on-surface);flex:1;overflow:hidden}admin-entity-item>[slot=badge]{flex-shrink:0}@container sidebar (width<=96px){admin-entity-item>[slot=label],admin-entity-item>[slot=badge]{display:none}}
1
+ :where(admin-shell){--page-bg:var(--a-canvas-0);--page-border:1px solid var(--md-sys-color-neutral-outline-variant);--page-main-border:var(--page-border);--page-header-height:var(--a-chrome-app-header-height);--page-header-px:var(--a-space-3);--page-header-gap:var(--a-space-3);--page-header-font:var(--a-ui-size);--page-header-fg-muted:var(--a-fg-muted);--page-sidebar-px:var(--a-space-1);--page-sidebar-gap:var(--a-space-1);--page-sidebar-font:var(--a-ui-size);--page-sidebar-min-width:48px;--page-sidebar-max-width:480px;--page-sidebar-resize-accent:var(--md-sys-color-primary);--page-sidebar-bg:var(--md-sys-color-neutral-surface-dimmest);--page-sidebar-divider-bg:var(--md-sys-color-neutral-outline-variant);--page-sidebar-width-leading:clamp(var(--page-sidebar-min-width), 200px, 240px);--page-sidebar-width-trailing:clamp(var(--page-sidebar-min-width), 200px, 240px);--page-content-bg:var(--a-canvas-2);--page-content-header-bg:var(--page-content-bg);--page-content-radius:var(--a-radius-lg);--page-content-inset:var(--a-space-10);--page-content-max-width:1540px;--page-content-border:1px solid var(--md-sys-color-neutral-outline-variant);--page-content-shadow:var(--a-shadow-sm);--page-content-bp-sm:480px;--page-content-bp-md:720px;--page-content-bp-lg:1024px;--page-section-gap:var(--a-space-6);--page-block-gap:var(--a-space-4);--page-deck-gap:var(--a-space-1);--page-section-size:var(--a-kicker-size);--page-section-weight:var(--a-kicker-weight);--page-section-leading:var(--a-kicker-leading);--page-section-tracking:var(--a-kicker-tracking);--page-section-case:var(--a-kicker-case);--page-section-color:var(--a-kicker-color);--page-section-mb:var(--a-space-3);--page-section-pb:var(--a-space-2);--page-subsection-size:var(--a-subsection-size);--page-subsection-weight:var(--a-subsection-weight);--page-subsection-color:var(--a-subsection-color);--page-sidebar-collapsed-icon:1.0625rem;--page-sidebar-collapsed-avatar:1.875rem;--page-actions-gap:var(--a-space-2);--page-grid-gap:var(--a-space-3);--page-duration:var(--a-duration);--page-duration-fast:var(--a-duration-fast);--page-easing:var(--a-easing);--page-font-family:var(--a-font-family);--page-body-size:var(--a-body-size);--nav-duration:var(--a-duration);--nav-duration-fast:var(--a-duration-fast);--nav-easing:var(--a-easing);--nav-label-px:var(--a-space-2);--nav-label-py:var(--a-space-1);--nav-label-font-size:var(--a-kicker-sm);--nav-label-weight:var(--a-weight-medium);--nav-label-fg:var(--a-fg-muted);--nav-divider-bg:var(--md-sys-color-neutral-outline-variant);--nav-divider-my:var(--a-space-1);--nav-group-indent-rail-bg:var(--md-sys-color-neutral-outline-variant);--nav-group-icon-font-size:var(--a-ui-size);--nav-group-text-weight:var(--a-weight-medium);--nav-group-badge-bg:var(--a-bg-muted);--nav-group-badge-px:var(--a-space-1);--nav-group-badge-radius:var(--a-radius-full);--nav-item-icon-font-size:var(--a-ui-size);--nav-item-selected-weight:var(--a-weight-medium);--nav-item-badge-fg:var(--a-fg-muted);--nav-item-badge-bg:var(--a-bg-muted);--nav-item-badge-px:var(--a-space-1);--nav-item-badge-radius:var(--a-radius-full);--nav-item-trailing-font:var(--a-ui-sm);--nav-item-trailing-fg:var(--a-fg-muted);--nav-item-trailing-border:var(--md-sys-color-neutral-outline-variant);--nav-item-trailing-radius:var(--a-radius-sm);--nav-item-trailing-px:var(--a-space-0-5);--a-icon-size:18px}admin-shell[mode~=borderless]{--page-main-border:none;--page-border:none}admin-shell{background:var(--page-bg);overscroll-behavior:none;height:100dvh;font-family:var(--page-font-family);font-size:var(--page-body-size);display:flex;position:fixed;inset:0;overflow:hidden}admin-shell:not(:has(>:is(asideadmin-sidebar[slot=trailing],admin-sidebar[slot=trailing]):not([hidden])))>admin-content>admin-scroll{margin-inline-end:var(--a-space-2)}admin-shell:not(:has(>:is(header,header-ui,admin-topbar):not([hidden]),>admin-content>admin-topbar:not([hidden])))>admin-content>admin-scroll{margin-block-start:var(--a-space-2)}admin-shell:not(:has(>:is(footer,footer-ui,admin-statusbar):not([hidden]),>admin-content>admin-statusbar:not([hidden])))>admin-content>admin-scroll{margin-block-end:var(--a-space-2)}admin-shell>admin-content>admin-scroll::-webkit-scrollbar{display:none}admin-shell>admin-content>admin-scroll:has(>[data-subnav]:not([hidden])){grid-template-columns:var(--subnav-width,14rem) 1fr;grid-template-rows:minmax(0,1fr);gap:0;display:grid}admin-shell>admin-content>admin-scroll>[data-subnav]{overscroll-behavior:contain;border-inline-end:1px solid var(--md-sys-color-neutral-outline-variant);min-height:0;padding-block:var(--a-space-2);padding-inline:var(--a-space-2);overflow-y:auto}@container (width<=40rem){admin-shell>admin-content>admin-scroll:has(>[data-subnav]:not([hidden])){grid-template-columns:1fr}admin-shell>admin-content>admin-scroll>[data-subnav]{border-inline-end:none;border-block-end:1px solid var(--md-sys-color-neutral-outline-variant)}}:is(admin-sidebar[slot=leading],admin-sidebar[slot=trailing]){background:var(--page-sidebar-bg);min-width:var(--page-sidebar-min-width);max-width:var(--page-sidebar-max-width);min-height:0;font-size:var(--page-sidebar-font);transition:width var(--page-duration) var(--page-easing);flex-direction:column;flex-shrink:0;display:flex;position:relative;container:sidebar/inline-size}:is(admin-sidebar[slot=leading],admin-sidebar[slot=trailing])>[data-resize]{cursor:col-resize;width:6px;transition:background var(--page-duration-fast) var(--page-easing);z-index:3;background:0 0;position:absolute;top:0;bottom:0}:is(admin-sidebar[slot=leading],admin-sidebar[slot=trailing])>[data-resize]:hover,:is(admin-sidebar[slot=leading],admin-sidebar[slot=trailing])[resizing]>[data-resize]{background:var(--page-sidebar-resize-accent)}:is(admin-sidebar[slot=leading],admin-sidebar[slot=trailing])[resizing]{-webkit-user-select:none;user-select:none;transition:none}admin-sidebar[slot=leading]{width:var(--page-sidebar-width-leading)}admin-sidebar[slot=trailing]{width:var(--page-sidebar-width-trailing)}:is(admin-sidebar[slot=leading],admin-sidebar[slot=trailing])>:is(header,header-ui),:is(admin-sidebar[slot=leading],admin-sidebar[slot=trailing])>:is(footer,footer-ui){align-items:center;gap:var(--page-sidebar-gap);padding:var(--page-sidebar-px);flex-shrink:0;min-width:0;display:flex;overflow:hidden}:is(admin-sidebar[slot=leading],admin-sidebar[slot=trailing])>:is(header,header-ui){min-height:var(--page-header-height);border-bottom:var(--page-border)}:is(admin-sidebar[slot=leading],admin-sidebar[slot=trailing])>:is(footer,footer-ui){min-height:var(--page-header-height);border-top:var(--page-border);margin-top:auto}:is(admin-sidebar[slot=leading],admin-sidebar[slot=trailing])>:is(header,header-ui)>[slot=icon],:is(admin-sidebar[slot=leading],admin-sidebar[slot=trailing])>:is(footer,footer-ui)>[slot=icon]{color:var(--page-header-fg-muted);flex-shrink:0;align-items:center;display:flex}:is(admin-sidebar[slot=leading],admin-sidebar[slot=trailing])>:is(header,header-ui)>[slot=heading],:is(admin-sidebar[slot=leading],admin-sidebar[slot=trailing])>:is(footer,footer-ui)>[slot=heading]{font-weight:var(--a-weight-medium);color:var(--md-sys-color-neutral-on-surface)}:is(admin-sidebar[slot=leading],admin-sidebar[slot=trailing])>:is(header,header-ui)>[slot=description],:is(admin-sidebar[slot=leading],admin-sidebar[slot=trailing])>:is(footer,footer-ui)>[slot=description]{color:var(--page-header-fg-muted);font-size:var(--a-ui-sm)}:is(admin-sidebar[slot=leading],admin-sidebar[slot=trailing])>:is(header,header-ui)>[slot=action],:is(admin-sidebar[slot=leading],admin-sidebar[slot=trailing])>:is(footer,footer-ui)>[slot=action]{align-items:center;gap:var(--page-actions-gap);flex-shrink:0;margin-inline-start:auto;display:flex}:is(admin-sidebar[slot=leading],admin-sidebar[slot=trailing])>:is(header,header-ui)>[slot=action]~[slot=action],:is(admin-sidebar[slot=leading],admin-sidebar[slot=trailing])>:is(footer,footer-ui)>[slot=action]~[slot=action]{margin-inline-start:0}:is(admin-sidebar[slot=leading],admin-sidebar[slot=trailing])>:is(header,header-ui)>[slot=action-leading],:is(admin-sidebar[slot=leading],admin-sidebar[slot=trailing])>:is(footer,footer-ui)>[slot=action-leading]{align-items:center;gap:var(--page-actions-gap);flex-shrink:0;margin-inline-end:auto;display:flex}:is(admin-sidebar[slot=leading],admin-sidebar[slot=trailing])>:is(section,section-ui){padding:var(--page-sidebar-px);scrollbar-width:none;flex:1;min-height:0;overflow-y:auto}:is(admin-sidebar[slot=leading],admin-sidebar[slot=trailing])>:is(section,section-ui)::-webkit-scrollbar{display:none}:is(admin-sidebar[slot=leading],admin-sidebar[slot=trailing]) span[slot=pad]{padding:var(--page-sidebar-px);display:block}:is(admin-sidebar[slot=leading],admin-sidebar[slot=trailing]) nav-ui{border:none;padding:0}:is(admin-sidebar[slot=leading],admin-sidebar[slot=trailing])>:is(section,section-ui)>hr[data-nav-divider]{background:var(--page-sidebar-divider-bg);height:1px;margin:var(--page-sidebar-gap) var(--page-sidebar-px);border:none}@container sidebar (width<=96px){:is(admin-topbar,admin-statusbar){padding:var(--page-sidebar-px);justify-content:center}:is(section,section-ui){flex-direction:column;align-items:center;display:flex}select-ui [slot=display],select-ui [slot=caret],select-ui [data-chips]{display:none}select-ui [slot=trigger]{width:100%;min-height:var(--page-header-height);justify-content:center;padding:0}select-ui [slot=leading]{--a-icon-size:var(--page-sidebar-collapsed-icon);font-size:var(--page-sidebar-collapsed-icon)}select-ui img[slot=leading]{width:var(--page-sidebar-collapsed-avatar);height:var(--page-sidebar-collapsed-avatar)}select-ui adia-mark-ui[slot=leading]{--adia-mark-size:var(--page-sidebar-collapsed-avatar)}nav-ui [slot=text],nav-ui [slot=badge],nav-ui [slot=caret],nav-ui [slot=trailing],nav-ui [data-nav-label],nav-ui [data-nav-divider]{display:none!important}nav-group-ui [slot=header]{min-width:var(--nav-group-row-height);min-height:var(--nav-group-row-height);justify-content:center;padding:0}nav-item-ui{min-width:var(--nav-item-row-height);min-height:var(--nav-item-row-height);justify-content:center;padding:0}nav-ui{align-items:center;width:100%}button-ui{--button-px:0;justify-content:center;width:auto!important}button-ui [slot=trailing]{display:none}:scope,:is(admin-topbar,admin-statusbar),:is(section,section-ui,nav){overflow:hidden}:is(span,p,div,h1,h2,h3,h4,h5,h6)[slot=heading],[slot=heading]:not(:has(>[slot])){display:none}button.nav-item,a.nav-item,[data-nav]{text-indent:-9999px;white-space:nowrap;justify-content:center;overflow:hidden}button.nav-item>icon-ui,a.nav-item>icon-ui,[data-nav]>icon-ui,button.nav-item>:has(>icon-ui),a.nav-item>:has(>icon-ui),[data-nav]>:has(>icon-ui){text-indent:0}}admin-page-header>:is(header,header-ui),admin-page-body>:is(section,section-ui),admin-page-footer>:is(footer,footer-ui){max-width:var(--page-content-max-width);box-sizing:border-box;width:100%;margin-inline:auto}admin-page-header>:is(header,header-ui){padding-inline:var(--page-content-inset)}admin-page-body>:is(section,section-ui):not(:last-child){border-bottom:var(--page-content-border)}admin-page-header[data-content-full]>:is(header,header-ui),admin-page-body[data-content-full]>:is(section,section-ui),admin-page-footer[data-content-full]>:is(footer,footer-ui),admin-page-header>:is(header,header-ui)[data-content-full],admin-page-body>:is(section,section-ui)[data-content-full],admin-page-footer>:is(footer,footer-ui)[data-content-full]{max-width:100%}admin-page-header>:is(header,header-ui){gap:var(--page-header-gap);padding-block:var(--page-content-inset) var(--page-header-gap);flex-direction:column;display:flex}admin-page-header>:is(header,header-ui):has(tabs-ui){padding-bottom:0}admin-page-header:has(>:is(header,header-ui)[data-flush]){background:0 0;border-bottom:none;position:static}admin-page-header>:is(header,header-ui)[data-compact]{padding-block:var(--page-header-px)}admin-page-header>:is(header,header-ui)>div:first-of-type{justify-content:space-between;align-items:center;gap:var(--page-header-gap);display:flex}admin-page-header h1,admin-page-header>:is(header,header-ui)>p{margin:0}admin-page-body>:is(section,section-ui){padding:var(--page-content-inset);gap:var(--page-section-gap,var(--a-space-8));flex-direction:column;display:flex}admin-page-footer>:is(footer,footer-ui){justify-content:flex-end;align-items:center;gap:var(--page-header-gap);padding-inline:var(--page-content-inset);padding-block:var(--page-header-gap);display:flex}admin-page-body>iframe{border:0;flex:1;block-size:100%;inline-size:100%;display:block}admin-page-body>section:has(>iframe[data-standalone-frame]){flex:1;min-height:0}admin-page-body>section>iframe[data-standalone-frame]{border:0;flex:1;block-size:100%;inline-size:100%;display:block}[data-tab-content]>section{margin-bottom:var(--page-section-gap)}[data-tab-content]>section>h2{font-size:var(--page-section-size);font-weight:var(--page-section-weight);line-height:var(--page-section-leading);letter-spacing:var(--page-section-tracking);text-transform:var(--page-section-case);color:var(--page-section-color);margin:0 0 var(--page-section-mb);padding-bottom:var(--page-section-pb);border-bottom:var(--page-content-border)}[data-tab-content]>section>[data-section]{gap:var(--page-section-gap) var(--page-header-gap);grid-template-columns:1fr 2fr;display:grid}[data-tab-content]>section>[data-section]>aside>h3{font-size:var(--page-subsection-size);font-weight:var(--page-subsection-weight);color:var(--page-subsection-color);margin:0 0 var(--page-section-pb)}[data-tab-content]>section>[data-section]>aside>p{margin:0}@container page-content (width<=720px){[data-tab-content]>section>[data-section]{gap:var(--page-block-gap) 0;grid-template-columns:minmax(0,1fr)}}@container page-content (width<=768px){admin-page-header>:is(header,header-ui),admin-page-body>:is(section,section-ui){padding-inline:var(--a-space-8)}admin-page-body>:is(section,section-ui){padding-block:var(--a-space-8)}}@container page-content (width<=480px){admin-page-header>:is(header,header-ui),admin-page-body>:is(section,section-ui){padding-inline:var(--a-space-6)}admin-page-body>:is(section,section-ui){padding-block:var(--a-space-6)}}admin-shell [data-spacer]{flex:1}admin-shell [data-actions]{align-items:center;gap:var(--page-actions-gap);display:flex}admin-shell [data-grid]{gap:var(--page-grid-gap);grid-template-columns:1fr 1fr;display:grid}admin-shell [data-grid="3"]{grid-template-columns:1fr 1fr 1fr}admin-shell [data-col]{gap:var(--page-grid-gap);flex-direction:column;display:flex}admin-shell [data-row]{align-items:center;gap:var(--page-grid-gap);display:flex}admin-shell>admin-content{border-inline:var(--page-main-border);flex-direction:column;flex:1;min-width:0;min-height:0;display:flex}admin-content>admin-topbar,admin-shell>admin-topbar,admin-sidebar>admin-topbar{align-items:center;gap:var(--page-header-gap);padding:0 var(--a-space-3);height:var(--page-header-height);font-size:var(--page-header-font);border-bottom:var(--page-border);flex-shrink:0;display:flex}admin-content>admin-statusbar,admin-shell>admin-statusbar,admin-sidebar>admin-statusbar{align-items:center;gap:var(--page-header-gap);padding:0 var(--a-space-3);height:var(--page-header-height);font-size:var(--page-header-font);color:var(--page-header-fg-muted);border-top:var(--page-border);flex-shrink:0;display:flex}admin-sidebar>:is(admin-topbar,admin-statusbar){padding-inline:var(--page-sidebar-px)}admin-sidebar>:is(admin-topbar,admin-statusbar)>:where(span,p,small,time,text-ui,code-ui){padding-inline:var(--a-space-2)}admin-content>admin-scroll{overscroll-behavior:contain;scrollbar-width:none;background:var(--page-content-bg);border:var(--page-content-border);min-height:0;box-shadow:var(--page-content-shadow);flex:1;overflow-y:auto}admin-shell[mode~=rounded]>admin-content>admin-scroll{border-radius:var(--page-content-radius)}:is(admin-scroll,admin-content) admin-page{flex-direction:column;min-height:100%;display:flex;container:page-content/inline-size}admin-page>admin-page-header{z-index:1;background:var(--page-content-header-bg);border-bottom:var(--page-content-border);flex-shrink:0;position:sticky;top:0}admin-page>admin-page-body{box-sizing:border-box;flex-direction:column;flex:1;width:100%;min-height:0;display:flex}admin-page>admin-page-footer{z-index:1;background:var(--page-content-header-bg);border-top:var(--page-content-border);flex-shrink:0;position:sticky;bottom:0}:is(admin-sidebar[slot=leading],admin-sidebar[slot=trailing]){min-width:var(--page-sidebar-min-width);max-width:var(--page-sidebar-max-width);min-height:0;font-size:var(--page-sidebar-font);transition:width var(--page-duration) var(--page-easing);background:var(--page-bg);flex-direction:column;flex-shrink:0;display:flex;position:relative;container:sidebar/inline-size}admin-sidebar[slot=leading]{width:var(--page-sidebar-width-leading);border-right:var(--page-border)}admin-sidebar[slot=trailing]{width:var(--page-sidebar-width-trailing);border-left:var(--page-border)}:is(admin-sidebar[slot=leading],admin-sidebar[slot=trailing])>[data-resize]{cursor:col-resize;z-index:3;-webkit-user-select:none;user-select:none;width:6px;position:absolute;top:0;bottom:0}admin-sidebar[slot=leading]>[data-resize]{right:-3px}admin-sidebar[slot=trailing]>[data-resize]{left:-3px}:is(admin-sidebar[slot=leading],admin-sidebar[slot=trailing])>[data-resize]:hover{background:var(--page-sidebar-resize-accent);opacity:.5}admin-sidebar[resizing]{transition:none}admin-sidebar[resizing]>[data-resize]{background:var(--page-sidebar-resize-accent);opacity:.8}:is(admin-topbar,admin-statusbar)>[slot=action]:first-of-type{margin-inline-start:auto}:is(admin-topbar,admin-statusbar)>[slot=action-leading]{margin-inline-end:var(--page-actions-gap)}:is(admin-topbar,admin-statusbar)>[slot=icon]{color:var(--page-header-fg-muted);flex-shrink:0}:is(admin-topbar,admin-statusbar)>[slot=heading]{font-weight:var(--a-weight-medium,500);color:var(--md-sys-color-neutral-on-surface)}:is(admin-topbar,admin-statusbar)>[slot=description]{color:var(--page-header-fg-muted);font-size:var(--a-ui-sm)}:is(admin-topbar,admin-statusbar)>[slot=action],:is(admin-topbar,admin-statusbar)>[slot=action-leading]{align-items:center;gap:var(--page-actions-gap);flex-shrink:0;display:flex}:is(admin-topbar,admin-statusbar)>[slot=action]~[slot=action]{margin-inline-start:0}:is(admin-topbar,admin-statusbar)>[slot=icon]{align-items:center;display:flex}admin-entity-item{--entity-item-gap:var(--a-space-1);--entity-item-px:var(--a-ui-px);--entity-item-icon-size:calc(var(--a-size) - var(--a-space-2));--entity-item-icon-color:var(--a-fg-muted);--entity-item-avatar-size:1.5rem;align-items:center;gap:var(--entity-item-gap);padding:0 var(--entity-item-px);min-width:0;display:inline-flex;overflow:hidden}admin-entity-item>[slot=icon]{color:var(--entity-item-icon-color);--a-icon-size:var(--entity-item-icon-size);flex-shrink:0;align-items:center;line-height:1;display:inline-flex}admin-entity-item>img[slot=icon]{width:var(--entity-item-avatar-size);height:var(--entity-item-avatar-size);border-radius:var(--a-radius-full);object-fit:cover}admin-entity-item>[slot=label]{text-overflow:ellipsis;white-space:nowrap;min-width:0;font-size:var(--a-ui-sm);font-weight:var(--a-weight-medium,500);color:var(--md-sys-color-neutral-on-surface);flex:1;overflow:hidden}admin-entity-item>[slot=badge]{flex-shrink:0}@container sidebar (width<=96px){admin-entity-item>[slot=label],admin-entity-item>[slot=badge]{display:none}}
@@ -1,10 +1,10 @@
1
- function fe(t,e){customElements.define(t,e)}function P(t,e){return customElements.get(t)?!1:(customElements.define(t,e),!0)}function de(t){return!!customElements.get(t)}var S=Symbol("signal"),f=null,h=null,A=!1;function I(t){for(let e of t){if(e.disposed){t.delete(e);continue}e.dirty=!0,h||(h=new Set,A||queueMicrotask(q)),h.add(e)}}function q(){let t,e=0;for(;t=h;){if(++e>100){h=null,console.error("signals: drain loop exceeded 100 iterations",JSON.stringify([...t].map(n=>n.host||"?")));break}h=null;for(let n of t)if(!n.disposed&&n.dirty){n.dirty=!1;try{n.run()}catch(r){n.onError?n.onError(r):(n.disposed=!0,queueMicrotask(()=>{throw r}))}}}}function X(t){if(A){t();return}A=!0;try{t()}finally{A=!1,h&&q()}}function _(t){let e=f;f=null;try{return t()}finally{f=e}}function p(t){let e=new Set;return{[S]:!0,get value(){return f&&e.add(f),t},set value(n){Object.is(t,n)||(t=n,I(e))},peek(){return t}}}function T(t){let e=new Set,n,r=!0,i={dirty:!1,disposed:!1,run(){r=!0,I(e)}};return{[S]:!0,get value(){if(f&&e.add(f),r){let s=f;f=i;try{n=t(),r=!1}finally{f=s}}return n},peek(){return n}}}function m(t,e){let n={dirty:!1,disposed:!1,host:e?.host??null,onError:e?.onError??null,run(){let r=f;f=n;try{t()}finally{f=r}}};return n.run(),()=>{n.disposed=!0}}function k(t){return t!=null&&typeof t=="object"&&t[S]===!0}var[v,b]=[Symbol(),Symbol()];function Y(t,...e){return{strings:t,values:e}}function J(t,...e){let n="";for(let i=0;i<t.length;i++)n+=t[i],i<e.length&&(n+=e[i]);let r=new CSSStyleSheet;return r.replaceSync(n),r}var R=new WeakMap;function Q(t){let e=0,n=0,r=0;for(;r<t.length;){if(e===0&&t.charCodeAt(r)===60&&t.charCodeAt(r+1)===33&&t.charCodeAt(r+2)===45&&t.charCodeAt(r+3)===45){let s=t.indexOf("-->",r+4);if(s===-1){n=0;break}r=s+3,n=0;continue}let i=t.charCodeAt(r);e?i===(e===1?39:34)&&(e=0):i===39?e=1:i===34?e=2:i===60?n=1:i===62&&(n=0),r++}return n===1}function Z(t){let e=R.get(t);if(e)return e;let n="";for(let r=0;r<t.length;r++)n+=t[r],r<t.length-1&&(n+=Q(n)?`{{p:${r}}}`:`<!--p:${r}-->`);return e=document.createElement("template"),e.innerHTML=n,R.set(t,e),e}var B={classname:"className",innertext:"innerText",innerhtml:"innerHTML",outerhtml:"outerHTML",textcontent:"textContent",tabindex:"tabIndex",arialabel:"ariaLabel",ariadescribedby:"ariaDescribedBy",arialabelledby:"ariaLabelledBy",ariarole:"role",contenteditable:"contentEditable",readonly:"readOnly",maxlength:"maxLength",minlength:"minLength",colspan:"colSpan",rowspan:"rowSpan",cellpadding:"cellPadding",cellspacing:"cellSpacing",usemap:"useMap",ismap:"isMap",accesskey:"accessKey",defaultchecked:"defaultChecked",defaultvalue:"defaultValue",defaultselected:"defaultSelected"};function D(t,e){if(B[e])return B[e];let n=Object.getOwnPropertyNames(t);for(let i=0;i<n.length;i++){let s=n[i];if(s!==e&&s.toLowerCase()===e)return s}let r=Object.getPrototypeOf(t);for(;r&&r!==Object.prototype;){let i=Object.getOwnPropertyNames(r);for(let s=0;s<i.length;s++){let l=i[s];if(l!==e&&l.toLowerCase()===e)return l}r=Object.getPrototypeOf(r)}return e}function g(t,e){let n=e._i;(!n||n.s!==t.strings)&&(n&&E(n.p),n=ee(t,e),e._i=n),ie(n.p,t.values)}function ee(t,e){let{strings:n}=t,i=Z(n).content.cloneNode(!0),s=te(e);s&&(i=ne(i,s));let l=re(i,t.values.length);return e.replaceChildren(i),{s:n,p:l}}var C="http://www.w3.org/2000/svg",y="http://www.w3.org/1998/Math/MathML",F="http://www.w3.org/1999/xhtml";function te(t){if(!t||t.nodeType!==1)return null;if(t.namespaceURI===C)return C;if(t.namespaceURI===y)return y;if(typeof t.closest!="function")return null;let e=t.closest("svg, math, foreignObject, annotation-xml");if(!e)return null;let n=e.localName;if(n==="foreignobject"||n==="foreignObject")return null;if(n==="annotation-xml"){let r=(e.getAttribute("encoding")||"").toLowerCase();return r==="text/html"||r==="application/xhtml+xml"?null:y}return n==="svg"?C:n==="math"?y:null}function ne(t,e){let n=document.createDocumentFragment();return H(t,n,e),n}function H(t,e,n){for(let r of[...t.childNodes])if(r.nodeType===1){let s=document.createElementNS(n,r.localName);for(let o of r.attributes)o.namespaceURI?s.setAttributeNS(o.namespaceURI,o.name,o.value):s.setAttribute(o.name,o.value);e.appendChild(s);let l=r.localName,c=n;if(n===C&&(l==="foreignObject"||l==="foreignobject"))c=F;else if(n===y&&l==="annotation-xml"){let o=(r.getAttribute("encoding")||"").toLowerCase();(o==="text/html"||o==="application/xhtml+xml")&&(c=F)}H(r,s,c)}else e.appendChild(r.cloneNode(!0))}function re(t,e){let n=new Array(e),r=document.createTreeWalker(t,129),i;for(;i=r.nextNode();)if(i.nodeType===8){let s=i.data.match(/^p:(\d+)$/);if(s){let l=document.createTextNode("");i.replaceWith(l),r.currentNode=l,n[+s[1]]={t:"n",n:l,c:void 0,_fx:null}}}else if(i.nodeType===1)for(let s of[...i.attributes]){let l=s.value.match(/^\{\{p:(\d+)\}\}$/);if(!l){if(s.value.includes("{{p:")){let a=s.name,u=a==="class"?' class="${expression}" \u2190 full replacement (whole class string is the expression)\n .className=${expression} \u2190 writes to the className property (resolved camelCase since FB-55 fix)\n':a==="style"?' style="${expression}" \u2190 full replacement of the style string\n .style.cssText=${expression} \u2190 write CSS text via the style.cssText accessor\n':` ${a}="\${expression}" \u2190 full replacement (whole attr is the placeholder)
2
- .${a}=\${expression} \u2190 property assignment (preferred for objects/functions)
1
+ function ge(e,t){customElements.define(e,t)}function R(e,t){return customElements.get(e)?!1:(customElements.define(e,t),!0)}function ye(e){return!!customElements.get(e)}var $=Symbol("signal"),f=null,h=null,A=!1;function I(e){for(let t of e){if(t.disposed){e.delete(t);continue}t.dirty=!0,h||(h=new Set,A||queueMicrotask(q)),h.add(t)}}function q(){let e,t=0;for(;e=h;){if(++t>100){h=null,console.error("signals: drain loop exceeded 100 iterations",JSON.stringify([...e].map(n=>n.host||"?")));break}h=null;for(let n of e)if(!n.disposed&&n.dirty){n.dirty=!1;try{n.run()}catch(r){n.onError?n.onError(r):(n.disposed=!0,queueMicrotask(()=>{throw r}))}}}}function J(e){if(A){e();return}A=!0;try{e()}finally{A=!1,h&&q()}}function E(e){let t=f;f=null;try{return e()}finally{f=t}}function p(e){let t=new Set;return{[$]:!0,get value(){return f&&t.add(f),e},set value(n){Object.is(e,n)||(e=n,I(t))},peek(){return e}}}function N(e){let t=new Set,n,r=!0,i={dirty:!1,disposed:!1,run(){r=!0,I(t)}};return{[$]:!0,get value(){if(f&&t.add(f),r){let o=f;f=i;try{n=e(),r=!1}finally{f=o}}return n},peek(){return n}}}function m(e,t){let n={dirty:!1,disposed:!1,host:t?.host??null,onError:t?.onError??null,run(){let r=f;f=n;try{e()}finally{f=r}}};return n.run(),()=>{n.disposed=!0}}function k(e){return e!=null&&typeof e=="object"&&e[$]===!0}function v(e){return e!=null&&typeof e=="object"&&typeof e.nodeType=="number"}function we(e){return v(e)&&e.nodeType===1}var[j,y]=[Symbol(),Symbol()];function Q(e,...t){return{strings:e,values:t}}function Z(e,...t){let n="";for(let i=0;i<e.length;i++)n+=e[i],i<t.length&&(n+=t[i]);let r=new CSSStyleSheet;return r.replaceSync(n),r}var D=new WeakMap;function ee(e){let t=0,n=0,r=0;for(;r<e.length;){if(t===0&&e.charCodeAt(r)===60&&e.charCodeAt(r+1)===33&&e.charCodeAt(r+2)===45&&e.charCodeAt(r+3)===45){let o=e.indexOf("-->",r+4);if(o===-1){n=0;break}r=o+3,n=0;continue}let i=e.charCodeAt(r);t?i===(t===1?39:34)&&(t=0):i===39?t=1:i===34?t=2:i===60?n=1:i===62&&(n=0),r++}return n===1}function te(e){let t=D.get(e);if(t)return t;let n="";for(let r=0;r<e.length;r++)n+=e[r],r<e.length-1&&(n+=ee(n)?`{{p:${r}}}`:`<!--p:${r}-->`);return t=document.createElement("template"),t.innerHTML=n,D.set(e,t),t}var B={classname:"className",innertext:"innerText",innerhtml:"innerHTML",outerhtml:"outerHTML",textcontent:"textContent",tabindex:"tabIndex",arialabel:"ariaLabel",ariadescribedby:"ariaDescribedBy",arialabelledby:"ariaLabelledBy",ariarole:"role",contenteditable:"contentEditable",readonly:"readOnly",maxlength:"maxLength",minlength:"minLength",colspan:"colSpan",rowspan:"rowSpan",cellpadding:"cellPadding",cellspacing:"cellSpacing",usemap:"useMap",ismap:"isMap",accesskey:"accessKey",defaultchecked:"defaultChecked",defaultvalue:"defaultValue",defaultselected:"defaultSelected"};function W(e,t){if(B[t])return B[t];let n=Object.getOwnPropertyNames(e);for(let i=0;i<n.length;i++){let o=n[i];if(o!==t&&o.toLowerCase()===t)return o}let r=Object.getPrototypeOf(e);for(;r&&r!==Object.prototype;){let i=Object.getOwnPropertyNames(r);for(let o=0;o<i.length;o++){let a=i[o];if(a!==t&&a.toLowerCase()===t)return a}r=Object.getPrototypeOf(r)}return t}function g(e,t){let n=t._i;(!n||n.s!==e.strings)&&(n&&C(n.p),n=ne(e,t),t._i=n),se(n.p,e.values)}function ne(e,t){let{strings:n}=e,i=te(n).content.cloneNode(!0),o=re(t);o&&(i=ie(i,o));let a=oe(i,e.values.length);return t.replaceChildren(i),{s:n,p:a}}var _="http://www.w3.org/2000/svg",b="http://www.w3.org/1998/Math/MathML",F="http://www.w3.org/1999/xhtml";function re(e){if(!e||e.nodeType!==1)return null;if(e.namespaceURI===_)return _;if(e.namespaceURI===b)return b;if(typeof e.closest!="function")return null;let t=e.closest("svg, math, foreignObject, annotation-xml");if(!t)return null;let n=t.localName;if(n==="foreignobject"||n==="foreignObject")return null;if(n==="annotation-xml"){let r=(t.getAttribute("encoding")||"").toLowerCase();return r==="text/html"||r==="application/xhtml+xml"?null:b}return n==="svg"?_:n==="math"?b:null}function ie(e,t){let n=document.createDocumentFragment();return H(e,n,t),n}function H(e,t,n){for(let r of[...e.childNodes])if(r.nodeType===1){let o=document.createElementNS(n,r.localName);for(let s of r.attributes)s.namespaceURI?o.setAttributeNS(s.namespaceURI,s.name,s.value):o.setAttribute(s.name,s.value);t.appendChild(o);let a=r.localName,c=n;if(n===_&&(a==="foreignObject"||a==="foreignobject"))c=F;else if(n===b&&a==="annotation-xml"){let s=(r.getAttribute("encoding")||"").toLowerCase();(s==="text/html"||s==="application/xhtml+xml")&&(c=F)}H(r,o,c)}else t.appendChild(r.cloneNode(!0))}function oe(e,t){let n=new Array(t),r=document.createTreeWalker(e,129),i;for(;i=r.nextNode();)if(i.nodeType===8){let o=i.data.match(/^p:(\d+)$/);if(o){let a=document.createTextNode("");i.replaceWith(a),r.currentNode=a,n[+o[1]]={t:"n",n:a,c:void 0,_fx:null}}}else if(i.nodeType===1)for(let o of[...i.attributes]){let a=o.value.match(/^\{\{p:(\d+)\}\}$/);if(!a){if(o.value.includes("{{p:")){let l=o.name,u=l==="class"?' class="${expression}" \u2190 full replacement (whole class string is the expression)\n .className=${expression} \u2190 writes to the className property (resolved camelCase since FB-55 fix)\n':l==="style"?' style="${expression}" \u2190 full replacement of the style string\n .style.cssText=${expression} \u2190 write CSS text via the style.cssText accessor\n':` ${l}="\${expression}" \u2190 full replacement (whole attr is the placeholder)
2
+ .${l}=\${expression} \u2190 property assignment (preferred for objects/functions)
3
3
  `;console.warn(`[template] Partial attribute interpolation is not supported.
4
4
  Element: <${i.tagName.toLowerCase()}>
5
- Attribute: ${a}="${s.value.slice(0,80)}${s.value.length>80?"\u2026":""}"
5
+ Attribute: ${l}="${o.value.slice(0,80)}${o.value.length>80?"\u2026":""}"
6
6
  Use one of:
7
- `+u+" Compute the full attr value as a single expression and interpolate the whole.")}continue}let c=+l[1],o=s.name;o[0]==="@"?(i.removeAttribute(o),n[c]={t:"e",n:i,name:o.slice(1),c:void 0,_fx:null}):o[0]==="."?(i.removeAttribute(o),n[c]={t:"p",n:i,name:D(i,o.slice(1)),c:void 0,_fx:null,_resolved:!1}):o[0]==="?"?(i.removeAttribute(o),console.warn(`[template] Lit-style boolean attribute "${o}=" is not supported.
7
+ `+u+" Compute the full attr value as a single expression and interpolate the whole.")}continue}let c=+a[1],s=o.name;s[0]==="@"?(i.removeAttribute(s),n[c]={t:"e",n:i,name:s.slice(1),c:void 0,_fx:null}):s[0]==="."?(i.removeAttribute(s),n[c]={t:"p",n:i,name:W(i,s.slice(1)),c:void 0,_fx:null,_resolved:!1}):s[0]==="?"?(i.removeAttribute(s),console.warn(`[template] Lit-style boolean attribute "${s}=" is not supported.
8
8
  Element: <${i.tagName.toLowerCase()}>
9
- Use .${o.slice(1)}=\${value} (property binding) instead \u2014 the primitive reflects the property to the DOM attribute for you.
10
- See USAGE.md \xA7 Template parser \u2014 invariants + unsupported syntaxes.`),n[c]={t:"n",n:document.createTextNode(""),c:void 0,_fx:null}):n[c]={t:"a",n:i,name:o,c:void 0,_fx:null}}return n}function E(t){for(let e of t)e&&e._fx&&(e._fx(),e._fx=null)}function M(t){if(t.n.nodeType===1&&t.n[v])return t.n;let e=document.createElement("span");return e.style.display="contents",e.setAttribute("role","presentation"),e[v]=!0,t.n.replaceWith(e),t.n=e,e}var U=t=>t!=null&&typeof t=="object"&&t.strings,V=t=>typeof t=="function"||t!=null&&typeof t.handleEvent=="function";function j(t,e){if(e!==t.c){if(t.t==="n")if(e!=null&&e._directive)e._commit(M(t));else if(U(e))g(e,M(t));else if(Array.isArray(e)){let n=M(t);n.replaceChildren();for(let r of e)if(U(r)){let i=document.createElement("span");i.style.display="contents",i.setAttribute("role","presentation"),n.appendChild(i),g(r,i)}else n.appendChild(document.createTextNode(r??""))}else if(e instanceof Node)t.n.replaceWith(e),t.n=e;else if(t.n[v]){let n=document.createTextNode(e??"");t.n.replaceWith(n),t.n=n}else t.n.textContent=e??"";else if(t.t==="a")e==null||e===!1?t.n.removeAttribute(t.name):t.n.setAttribute(t.name,e===!0?"":e);else if(t.t==="p"){if(!t._resolved){let n=D(t.n,t.name);n!==t.name&&(t.name=n),t._resolved=!0}t.n[t.name]=e}else t.t==="e"&&(V(t.c)&&t.n.removeEventListener(t.name,t.c),V(e)&&t.n.addEventListener(t.name,e));t.c=e}}function ie(t,e){for(let n=0;n<t.length;n++){let r=t[n];if(!r)continue;let i=e[n],s=r.t!=="e"&&typeof i=="function",l=!s&&r.t!=="e"&&k(i);if(r._fx&&!s&&!l&&(r._fx(),r._fx=null),s){r._fx||(r._fx=m(()=>j(r,i())));continue}if(l){r._fx||(r._fx=m(()=>j(r,i.value)));continue}j(r,i)}}function se(t,e,n){return{_directive:!0,_commit(r){let i=r[b]||new Map,s=new Map,l=[];for(let o=0;o<t.length;o++){let a=e(t[o],o);if(s.has(a))continue;l.push(a);let u=n(t[o],o);if(i.has(a)){let d=i.get(a);g(u,d),s.set(a,d)}else{let d=document.createElement("span");d.style.display="contents",d.setAttribute("role","presentation"),g(u,d),s.set(a,d)}}for(let[o,a]of i)s.has(o)||(a._i&&E(a._i.p),a.remove());let c=null;for(let o=l.length-1;o>=0;o--){let a=s.get(l[o]);(a.nextSibling!==c||a.parentNode!==r)&&r.insertBefore(a,c),c=a}r[b]=s}}}var O=new Map,W=new Set(["input-interaction","keyboard-navigation","forms-data","layout-measurement","motion-positioning","animation-feedback","visual-dynamics","interaction-delight","audio-haptics-sensory"]);function be(t){if(!t.name)throw new Error("Trait requires a name");if(!t.setup)throw new Error(`Trait "${t.name}" requires a setup function`);if(!t.category)throw new Error(`Trait "${t.name}" requires a category`);if(!W.has(t.category))throw new Error(`Trait "${t.name}" has unknown category "${t.category}". Known: ${[...W].join(", ")}`);if(!t.description)throw new Error(`Trait "${t.name}" requires a description`);let e=Object.freeze({name:t.name,category:t.category,description:t.description,attributes:Object.freeze(t.attributes||[]),events:Object.freeze(t.events||[]),config:Object.freeze(t.config||[])});function n(){let r=null;return{schema:e,connect(i,s){r=t.setup({host:i,...s||{}})},disconnect(i){r&&(r(),r=null);for(let s of e.attributes)i.hasAttribute(s)&&(console.warn(`Trait "${e.name}": attribute "${s}" still present after disconnect`),i.removeAttribute(s))}}}return n.schema=e,O.set(t.name,n),n}function z(t){return O.get(t)||null}function ye(t){return O.get(t)?.schema||null}function we(){return[...O.keys()]}var L=Symbol(),w=Symbol();function oe(t,e){t[w]=new Map,t[L]=new Map;for(let[n,r]of Object.entries(e)){let i=r.attribute??n.toLowerCase(),s=r.type??String,l=Object.prototype.hasOwnProperty.call(t,n),c=l?t[n]:void 0;l&&delete t[n];let o=p(r.default??void 0);t[L].set(n,o),Object.defineProperty(t,n,{get(){return o.value},set(a){let u=o.peek();Object.is(u,a)||(t[w].set(n,u),o.value=a,r.reflect&&le(t,i,a,s))},configurable:!0}),l&&(o.value=c)}}var ae=Object.freeze({setFormValue(){},setValidity(){},checkValidity(){return!0},reportValidity(){return!0},get form(){return null},get labels(){return[]},get validity(){return{}},get validationMessage(){return""},get willValidate(){return!1}});function le(t,e,n,r){r===Boolean?n?t.setAttribute(e,""):t.removeAttribute(e):n==null?t.removeAttribute(e):t.setAttribute(e,String(n))}var G=(t,e)=>e===Boolean?t!==null:e===Number?t===null?null:+t:t;function ce(t){if(Object.hasOwn(t,"_sa"))return;t._sa=!0;let e=t.styles;if(!e||!("adoptedStyleSheets"in document))return;let n=Array.isArray(e)?e:[e];document.adoptedStyleSheets=[...document.adoptedStyleSheets,...n.filter(r=>!document.adoptedStyleSheets.includes(r))]}function K(t){if(Object.hasOwn(t,"_pp"))return;t._pp={};let e=t.parts;if(e)for(let[n,r]of Object.entries(e)){let i=document.createElement("template");i.innerHTML=r,t._pp[n]=i.content.firstElementChild}}var N=class extends HTMLElement{static get properties(){return{}}static get traits(){return[]}static get observedAttributes(){let e=Object.entries(this.properties).map(([n,r])=>r.attribute??n.toLowerCase());return e.includes("traits")?e:[...e,"traits"]}#i=[];#n=[];#s=[];#t=null;#r=null;#e=null;#a=p(0);constructor(){super(),this.internals=typeof this.attachInternals=="function"?this.attachInternals():ae,oe(this,this.constructor.properties)}connectedCallback(){let e=this.constructor;e._tag||(e._tag=this.localName),ce(e),K(e),_(()=>{for(let[n,r]of Object.entries(e.properties)){let i=r.attribute??n.toLowerCase();this.hasAttribute(i)?this[n]=G(this.getAttribute(i),r.type??String):r.reflect&&r.type===Boolean&&this[n]===!0&&this.setAttribute(i,"")}}),_(()=>this.connected()),this.#i.push(m(()=>{for(let r of this[L].values())r.value;this.#a.value;let n=e.template(this);if(n&&g(n,this),this.render(),this[w].size){let r=new Map(this[w]);this[w].clear(),this.updated(r)}},{host:this.localName,onError:this.onError?n=>this.onError(n):null})),this.#e||(this.#e=new Set);for(let n of e.traits)this.#o(n);this.#c(),this.#t&&this.#l()}disconnectedCallback(){this._i&&E(this._i.p);for(let e of this.#i)e();this.#i.length=0;for(let e of this.#s)e.value=void 0;this.#s.length=0;for(let e of this.#n)e.disconnect(this);this.#n.length=0,this.#e?.clear(),this.#r?.(),this.#r=null,this.#t?.disconnect?.(this),this.disconnected()}#l(){let e=this.#t;e.connect?.(this),this.#r=e.subscribe?.(()=>{this.#a.value++})}get controller(){return this.#t}set controller(e){this.#r?.(),this.#r=null,this.#t?.disconnect?.(this),this.#t=e,e&&this.isConnected&&this.#l()}#o(e,{declarative:n=!1}={}){this.#e.add(e);let r=e();r.connect(this,{host:this,signal:p,computed:T,effect:m}),n&&(r._declarative=!0),this.#n.push(r)}addTrait(e){return this.#e||(this.#e=new Set),this.#e.has(e)?this:(this.#o(e),this)}#c(){let e=this.getAttribute("traits");if(e)for(let n of e.split(/\s+/).filter(Boolean)){let r=z(n);if(!r){console.warn(`<${this.localName}> traits="${n}" \u2014 trait not found. Did you forget to import it?`);continue}this.#e.has(r)||this.#o(r,{declarative:!0})}}#f(){if(!this.#e)return;let e=[];for(let n of this.#n)if(n._declarative){n.disconnect(this);for(let r of this.#e)if(r.schema?.name&&n.schema?.name===r.schema.name){this.#e.delete(r);break}}else e.push(n);this.#n.length=0,this.#n.push(...e),this.#c()}attributeChangedCallback(e,n,r){if(e==="traits"){this.isConnected&&this.#f();return}for(let[i,s]of Object.entries(this.constructor.properties))if((s.attribute??i.toLowerCase())===e){this[i]=G(r,s.type??String);break}}static template=()=>null;static create(e={}){let n=this._tag??customElements.getName?.(this);if(!n)throw new Error("Component not registered");let r=document.createElement(n);for(let[i,s]of Object.entries(e))r[i]=s;return r}signal(e){let n=p(e);return this.#s.push(n),n}ensure(e){for(let s of this.children)if(s.getAttribute("slot")===e)return s;let n=this.#u(e);if(n)return n;K(this.constructor);let r=this.constructor._pp?.[e];if(!r)return null;let i=r.cloneNode(!0);return i._uiPart=!0,this.appendChild(i),i}drop(e){for(let r of this.children)if(r.getAttribute("slot")===e){r.remove();return}let n=this.#u(e);n&&n.remove()}#u(e){for(let n of this.querySelectorAll(`[slot="${e}"]`)){let r=n.parentElement,i=!0;for(;r&&r!==this;){if(r.localName.includes("-")){i=!1;break}r=r.parentElement}if(i&&r===this)return n}return null}reconcile(e,n,r,i){let s=e[b]||new Map,l=new Map,c=[];for(let a=0;a<n.length;a++){let u=n[a],d=r(u,a);if(l.has(d))continue;let x=s.get(d);x?i(u,a,x):x=i(u,a,null),l.set(d,x),c.push(d)}for(let[a,u]of s)l.has(a)||u.remove();let o=null;for(let a=c.length-1;a>=0;a--){let u=l.get(c[a]);(u.nextSibling!==o||u.parentNode!==e)&&e.insertBefore(u,o),o=u}e[b]=l}connected(){}render(){}disconnected(){}updated(e){}};var ue="rounded borderless",$=class t extends N{static properties={mode:{type:String,default:"",reflect:!0}};static template=()=>null;connected(){this.hasAttribute("mode")||(this.mode=ue),this.addEventListener("click",this.#n),this.#s()}#i(e){return this.querySelector(`admin-sidebar[slot="${e}"], admin-sidebar[name="${e}"]`)}#n=e=>{let n=e.target.closest("[data-sidebar-toggle]");if(n&&this.contains(n)){let i=n.getAttribute("data-sidebar-toggle"),s=this.#i(i);s&&typeof s.toggle!="function"&&this.#r("admin-sidebar",`slot="${i}"`,"Sidebar toggle"),s?.toggle?.();return}let r=e.target.closest("[data-command-trigger]");if(r&&this.contains(r)){e.stopPropagation();let i=this.querySelector("admin-command");if(!i)return;if(typeof i.show!="function"){this.#r("admin-command","","Command palette");return}i.show()}};#s(){let e=this.querySelector("admin-command"),n=this.querySelector("nav-ui");!e||!n||e.addEventListener("command-select",r=>{let i=n.querySelector(`nav-item-ui[value="${r.detail.value}"]`);i&&n.select(i)})}static#t=new WeakSet;#r(e,n,r){let i=n?this.querySelector(`${e}[${n}], ${e}[${n.replace("slot=","name=")}]`):this.querySelector(e);if(!i||t.#t.has(i))return;t.#t.add(i);let s=e==="admin-sidebar"?"shell/admin-sidebar":"shell/admin-command";console.warn(`[admin-shell] <${e}${n?" "+n:""}> is in the DOM but ${e==="admin-sidebar"?"AdminSidebar":"AdminCommand"} is NOT registered \u2014 ${r} will not work. Import the cluster barrel \`@adia-ai/web-modules/shell\` (which registers all shell elements), OR add \`@adia-ai/web-modules/${s}\` alongside \`@adia-ai/web-modules/shell/admin-shell\` on the per-component path. Closes FB-55 silent-failure trap.`)}};P("admin-shell",$);export{$ as AdminShell};
9
+ Use .${s.slice(1)}=\${value} (property binding) instead \u2014 the primitive reflects the property to the DOM attribute for you.
10
+ See USAGE.md \xA7 Template parser \u2014 invariants + unsupported syntaxes.`),n[c]={t:"n",n:document.createTextNode(""),c:void 0,_fx:null}):n[c]={t:"a",n:i,name:s,c:void 0,_fx:null}}return n}function C(e){for(let t of e)t&&t._fx&&(t._fx(),t._fx=null)}function M(e){if(e.n.nodeType===1&&e.n[j])return e.n;let t=document.createElement("span");return t.style.display="contents",t.setAttribute("role","presentation"),t[j]=!0,e.n.replaceWith(t),e.n=t,t}var U=e=>e!=null&&typeof e=="object"&&e.strings,V=e=>typeof e=="function"||e!=null&&typeof e.handleEvent=="function";function L(e,t){if(t!==e.c){if(e.t==="n")if(t!=null&&t._directive)t._commit(M(e));else if(U(t))g(t,M(e));else if(Array.isArray(t)){let n=M(e);n.replaceChildren();for(let r of t)if(U(r)){let i=document.createElement("span");i.style.display="contents",i.setAttribute("role","presentation"),n.appendChild(i),g(r,i)}else n.appendChild(document.createTextNode(r??""))}else if(v(t))e.n.replaceWith(t),e.n=t;else if(e.n[j]){let n=document.createTextNode(t??"");e.n.replaceWith(n),e.n=n}else e.n.textContent=t??"";else if(e.t==="a")t==null||t===!1?e.n.removeAttribute(e.name):e.n.setAttribute(e.name,t===!0?"":t);else if(e.t==="p"){if(!e._resolved){let n=W(e.n,e.name);n!==e.name&&(e.name=n),e._resolved=!0}e.n[e.name]=t}else e.t==="e"&&(V(e.c)&&e.n.removeEventListener(e.name,e.c),V(t)&&e.n.addEventListener(e.name,t));e.c=t}}function se(e,t){for(let n=0;n<e.length;n++){let r=e[n];if(!r)continue;let i=t[n],o=r.t!=="e"&&typeof i=="function",a=!o&&r.t!=="e"&&k(i);if(r._fx&&!o&&!a&&(r._fx(),r._fx=null),o){r._fx||(r._fx=m(()=>L(r,i())));continue}if(a){r._fx||(r._fx=m(()=>L(r,i.value)));continue}L(r,i)}}function ae(e,t,n){return{_directive:!0,_commit(r){let i=r[y]||new Map,o=new Map,a=[];for(let s=0;s<e.length;s++){let l=t(e[s],s);if(o.has(l))continue;a.push(l);let u=n(e[s],s);if(i.has(l)){let d=i.get(l);g(u,d),o.set(l,d)}else{let d=document.createElement("span");d.style.display="contents",d.setAttribute("role","presentation"),g(u,d),o.set(l,d)}}for(let[s,l]of i)o.has(s)||(l._i&&C(l._i.p),l.remove());let c=null;for(let s=a.length-1;s>=0;s--){let l=o.get(a[s]);(l.nextSibling!==c||l.parentNode!==r)&&r.insertBefore(l,c),c=l}r[y]=o}}}var x=new Map;function le(e,t){return t===`data-${e}`||t.startsWith(`data-${e}-`)}function z(e,t){return e===t||e.startsWith(`${t}-`)||t.startsWith(`${e}-`)}function ce(e){let t=[e.name,...e.prefixes||[]],n=[...e.attributes||[],...e.config||[]].filter(r=>!t.some(i=>le(i,r)));if(n.length>0)throw new Error(`Trait "${e.name}" declares attribute(s) outside its owned data-* namespace: ${n.join(", ")}. A trait owns "data-${e.name}" / "data-${e.name}-*" by default; register any other prefix via defineTrait({ ..., prefixes: [...] }) (ADR-0060) or rename the attribute.`)}function ue(e){let t=e.prefixes||[];for(let[n,r]of x){if(n===e.name)continue;let i=r.schema,o=[i.name,...i.prefixes||[]];for(let a of t)for(let c of o)if(z(a,c))throw new Error(`Trait "${e.name}"'s registered prefix "${a}" overlaps trait "${i.name}"'s owned namespace ("${c}"). Registered prefixes must be globally exclusive across the trait registry (ADR-0060).`);for(let a of i.prefixes||[])if(z(a,e.name))throw new Error(`Trait "${e.name}"'s name overlaps trait "${i.name}"'s registered prefix "${a}". Registered prefixes must be globally exclusive across the trait registry (ADR-0060).`)}}var G=new Set(["input-interaction","keyboard-navigation","forms-data","layout-measurement","motion-positioning","animation-feedback","visual-dynamics","interaction-delight","audio-haptics-sensory"]);function _e(e){if(!e.name)throw new Error("Trait requires a name");if(!e.setup)throw new Error(`Trait "${e.name}" requires a setup function`);if(!e.category)throw new Error(`Trait "${e.name}" requires a category`);if(!G.has(e.category))throw new Error(`Trait "${e.name}" has unknown category "${e.category}". Known: ${[...G].join(", ")}`);if(!e.description)throw new Error(`Trait "${e.name}" requires a description`);ce(e),ue(e);let t=Object.freeze({name:e.name,category:e.category,description:e.description,attributes:Object.freeze(e.attributes||[]),events:Object.freeze(e.events||[]),config:Object.freeze(e.config||[]),prefixes:Object.freeze(e.prefixes||[])});function n(){let r=null;return{schema:t,connect(i,o){r=e.setup({host:i,...o||{}})},disconnect(i){r&&(r(),r=null);for(let o of t.attributes)i.hasAttribute(o)&&(console.warn(`Trait "${t.name}": attribute "${o}" still present after disconnect`),i.removeAttribute(o))}}}return n.schema=t,x.set(e.name,n),n}function K(e){return x.get(e)||null}function Ce(e){return x.get(e)?.schema||null}function Oe(){return[...x.keys()]}var P=Symbol(),w=Symbol();function fe(e,t){e[w]=new Map,e[P]=new Map;for(let[n,r]of Object.entries(t)){let i=r.attribute??n.toLowerCase(),o=r.type??String,a=Object.prototype.hasOwnProperty.call(e,n),c=a?e[n]:void 0;a&&delete e[n];let s=p(r.default??void 0);e[P].set(n,s),Object.defineProperty(e,n,{get(){return s.value},set(l){let u=s.peek();Object.is(u,l)||(e[w].set(n,u),s.value=l,r.reflect&&he(e,i,l,o))},configurable:!0}),a&&(s.value=c)}}var de=Object.freeze({setFormValue(){},setValidity(){},checkValidity(){return!0},reportValidity(){return!0},get form(){return null},get labels(){return[]},get validity(){return{}},get validationMessage(){return""},get willValidate(){return!1}});function he(e,t,n,r){r===Boolean?n?e.setAttribute(t,""):e.removeAttribute(t):n==null?e.removeAttribute(t):e.setAttribute(t,String(n))}var X=(e,t)=>t===Boolean?e!==null:t===Number?e===null?null:+e:e;function me(e){if(Object.hasOwn(e,"_sa"))return;e._sa=!0;let t=e.styles;if(!t||!("adoptedStyleSheets"in document))return;let n=Array.isArray(t)?t:[t];document.adoptedStyleSheets=[...document.adoptedStyleSheets,...n.filter(r=>!document.adoptedStyleSheets.includes(r))]}function Y(e){if(Object.hasOwn(e,"_pp"))return;e._pp={};let t=e.parts;if(t)for(let[n,r]of Object.entries(t)){let i=document.createElement("template");i.innerHTML=r,e._pp[n]=i.content.firstElementChild}}var O=class extends HTMLElement{static get properties(){return{}}static get traits(){return[]}static get observedAttributes(){let t=Object.entries(this.properties).map(([n,r])=>r.attribute??n.toLowerCase());return t.includes("traits")?t:[...t,"traits"]}#i=[];#n=[];#o=[];#t=null;#r=null;#e=null;#a=p(0);constructor(){super(),this.internals=typeof this.attachInternals=="function"?this.attachInternals():de,fe(this,this.constructor.properties)}connectedCallback(){let t=this.constructor;t._tag||(t._tag=this.localName),me(t),Y(t),E(()=>{for(let[n,r]of Object.entries(t.properties)){let i=r.attribute??n.toLowerCase();this.hasAttribute(i)?this[n]=X(this.getAttribute(i),r.type??String):r.reflect&&r.type===Boolean&&this[n]===!0&&this.setAttribute(i,"")}}),E(()=>this.connected()),this.#i.push(m(()=>{for(let r of this[P].values())r.value;this.#a.value;let n=t.template(this);if(n&&g(n,this),this.render(),this[w].size){let r=new Map(this[w]);this[w].clear(),this.updated(r)}},{host:this.localName,onError:this.onError?n=>this.onError(n):null})),this.#e||(this.#e=new Set);for(let n of t.traits)this.#s(n);this.#c(),this.#t&&this.#l()}disconnectedCallback(){this._i&&C(this._i.p);for(let t of this.#i)t();this.#i.length=0;for(let t of this.#o)t.value=void 0;this.#o.length=0;for(let t of this.#n)t.disconnect(this);this.#n.length=0,this.#e?.clear(),this.#r?.(),this.#r=null,this.#t?.disconnect?.(this),this.disconnected()}#l(){let t=this.#t;t.connect?.(this),this.#r=t.subscribe?.(()=>{this.#a.value++})}get controller(){return this.#t}set controller(t){this.#r?.(),this.#r=null,this.#t?.disconnect?.(this),this.#t=t,t&&this.isConnected&&this.#l()}#s(t,{declarative:n=!1}={}){this.#e.add(t);let r=t();r.connect(this,{host:this,signal:p,computed:N,effect:m}),n&&(r._declarative=!0),this.#n.push(r)}addTrait(t){return this.#e||(this.#e=new Set),this.#e.has(t)?this:(this.#s(t),this)}#c(){let t=this.getAttribute("traits");if(t)for(let n of t.split(/\s+/).filter(Boolean)){let r=K(n);if(!r){console.warn(`<${this.localName}> traits="${n}" \u2014 trait not found. Did you forget to import it?`);continue}this.#e.has(r)||this.#s(r,{declarative:!0})}}#f(){if(!this.#e)return;let t=[];for(let n of this.#n)if(n._declarative){n.disconnect(this);for(let r of this.#e)if(r.schema?.name&&n.schema?.name===r.schema.name){this.#e.delete(r);break}}else t.push(n);this.#n.length=0,this.#n.push(...t),this.#c()}attributeChangedCallback(t,n,r){if(t==="traits"){this.isConnected&&this.#f();return}for(let[i,o]of Object.entries(this.constructor.properties))if((o.attribute??i.toLowerCase())===t){this[i]=X(r,o.type??String);break}}static template=()=>null;static create(t={}){let n=this._tag??customElements.getName?.(this);if(!n)throw new Error("Component not registered");let r=document.createElement(n);for(let[i,o]of Object.entries(t))r[i]=o;return r}signal(t){let n=p(t);return this.#o.push(n),n}ensure(t){for(let o of this.children)if(o.getAttribute("slot")===t)return o;let n=this.#u(t);if(n)return n;Y(this.constructor);let r=this.constructor._pp?.[t];if(!r)return null;let i=r.cloneNode(!0);return i._uiPart=!0,this.appendChild(i),i}drop(t){for(let r of this.children)if(r.getAttribute("slot")===t){r.remove();return}let n=this.#u(t);n&&n.remove()}#u(t){for(let n of this.querySelectorAll(`[slot="${t}"]`)){let r=n.parentElement,i=!0;for(;r&&r!==this;){if(r.localName.includes("-")){i=!1;break}r=r.parentElement}if(i&&r===this)return n}return null}reconcile(t,n,r,i){let o=t[y]||new Map,a=new Map,c=[];for(let l=0;l<n.length;l++){let u=n[l],d=r(u,l);if(a.has(d))continue;let S=o.get(d);S?i(u,l,S):S=i(u,l,null),a.set(d,S),c.push(d)}for(let[l,u]of o)a.has(l)||u.remove();let s=null;for(let l=c.length-1;l>=0;l--){let u=a.get(c[l]);(u.nextSibling!==s||u.parentNode!==t)&&t.insertBefore(u,s),s=u}t[y]=a}connected(){}render(){}disconnected(){}updated(t){}};var pe="rounded borderless",T=class e extends O{static properties={mode:{type:String,default:"",reflect:!0}};static template=()=>null;connected(){this.hasAttribute("mode")||(this.mode=pe),this.addEventListener("click",this.#n),this.#o()}#i(t){return this.querySelector(`admin-sidebar[slot="${t}"], admin-sidebar[name="${t}"]`)}#n=t=>{let n=t.target.closest("[data-sidebar-toggle]");if(n&&this.contains(n)){let i=n.getAttribute("data-sidebar-toggle"),o=this.#i(i);o&&typeof o.toggle!="function"&&this.#r("admin-sidebar",`slot="${i}"`,"Sidebar toggle"),o?.toggle?.();return}let r=t.target.closest("[data-command-trigger]");if(r&&this.contains(r)){t.stopPropagation();let i=this.querySelector("admin-command");if(!i)return;if(typeof i.show!="function"){this.#r("admin-command","","Command palette");return}i.show()}};#o(){let t=this.querySelector("admin-command"),n=this.querySelector("nav-ui");!t||!n||t.addEventListener("command-select",r=>{let i=n.querySelector(`nav-item-ui[value="${r.detail.value}"]`);i&&n.select(i)})}static#t=new WeakSet;#r(t,n,r){let i=n?this.querySelector(`${t}[${n}], ${t}[${n.replace("slot=","name=")}]`):this.querySelector(t);if(!i||e.#t.has(i))return;e.#t.add(i);let o=t==="admin-sidebar"?"shell/admin-sidebar":"shell/admin-command";console.warn(`[admin-shell] <${t}${n?" "+n:""}> is in the DOM but ${t==="admin-sidebar"?"AdminSidebar":"AdminCommand"} is NOT registered \u2014 ${r} will not work. Import the cluster barrel \`@adia-ai/web-modules/shell\` (which registers all shell elements), OR add \`@adia-ai/web-modules/${o}\` alongside \`@adia-ai/web-modules/shell/admin-shell\` on the per-component path. Closes FB-55 silent-failure trap.`)}};R("admin-shell",T);export{T as AdminShell};
@@ -1,10 +1,10 @@
1
- var S=Symbol("signal"),f=null,h=null,_=!1;function P(t){for(let e of t){if(e.disposed){t.delete(e);continue}e.dirty=!0,h||(h=new Set,_||queueMicrotask(I)),h.add(e)}}function I(){let t,e=0;for(;t=h;){if(++e>100){h=null,console.error("signals: drain loop exceeded 100 iterations",JSON.stringify([...t].map(n=>n.host||"?")));break}h=null;for(let n of t)if(!n.disposed&&n.dirty){n.dirty=!1;try{n.run()}catch(r){n.onError?n.onError(r):(n.disposed=!0,queueMicrotask(()=>{throw r}))}}}}function K(t){if(_){t();return}_=!0;try{t()}finally{_=!1,h&&I()}}function A(t){let e=f;f=null;try{return t()}finally{f=e}}function m(t){let e=new Set;return{[S]:!0,get value(){return f&&e.add(f),t},set value(n){Object.is(t,n)||(t=n,P(e))},peek(){return t}}}function k(t){let e=new Set,n,r=!0,i={dirty:!1,disposed:!1,run(){r=!0,P(e)}};return{[S]:!0,get value(){if(f&&e.add(f),r){let s=f;f=i;try{n=t(),r=!1}finally{f=s}}return n},peek(){return n}}}function p(t,e){let n={dirty:!1,disposed:!1,host:e?.host??null,onError:e?.onError??null,run(){let r=f;f=n;try{t()}finally{f=r}}};return n.run(),()=>{n.disposed=!0}}function j(t){return t!=null&&typeof t=="object"&&t[S]===!0}var[M,y]=[Symbol(),Symbol()];function X(t,...e){return{strings:t,values:e}}function Y(t,...e){let n="";for(let i=0;i<t.length;i++)n+=t[i],i<e.length&&(n+=e[i]);let r=new CSSStyleSheet;return r.replaceSync(n),r}var B=new WeakMap;function J(t){let e=0,n=0,r=0;for(;r<t.length;){if(e===0&&t.charCodeAt(r)===60&&t.charCodeAt(r+1)===33&&t.charCodeAt(r+2)===45&&t.charCodeAt(r+3)===45){let s=t.indexOf("-->",r+4);if(s===-1){n=0;break}r=s+3,n=0;continue}let i=t.charCodeAt(r);e?i===(e===1?39:34)&&(e=0):i===39?e=1:i===34?e=2:i===60?n=1:i===62&&(n=0),r++}return n===1}function Q(t){let e=B.get(t);if(e)return e;let n="";for(let r=0;r<t.length;r++)n+=t[r],r<t.length-1&&(n+=J(n)?`{{p:${r}}}`:`<!--p:${r}-->`);return e=document.createElement("template"),e.innerHTML=n,B.set(t,e),e}var q={classname:"className",innertext:"innerText",innerhtml:"innerHTML",outerhtml:"outerHTML",textcontent:"textContent",tabindex:"tabIndex",arialabel:"ariaLabel",ariadescribedby:"ariaDescribedBy",arialabelledby:"ariaLabelledBy",ariarole:"role",contenteditable:"contentEditable",readonly:"readOnly",maxlength:"maxLength",minlength:"minLength",colspan:"colSpan",rowspan:"rowSpan",cellpadding:"cellPadding",cellspacing:"cellSpacing",usemap:"useMap",ismap:"isMap",accesskey:"accessKey",defaultchecked:"defaultChecked",defaultvalue:"defaultValue",defaultselected:"defaultSelected"};function H(t,e){if(q[e])return q[e];let n=Object.getOwnPropertyNames(t);for(let i=0;i<n.length;i++){let s=n[i];if(s!==e&&s.toLowerCase()===e)return s}let r=Object.getPrototypeOf(t);for(;r&&r!==Object.prototype;){let i=Object.getOwnPropertyNames(r);for(let s=0;s<i.length;s++){let a=i[s];if(a!==e&&a.toLowerCase()===e)return a}r=Object.getPrototypeOf(r)}return e}function g(t,e){let n=e._i;(!n||n.s!==t.strings)&&(n&&C(n.p),n=Z(t,e),e._i=n),re(n.p,t.values)}function Z(t,e){let{strings:n}=t,i=Q(n).content.cloneNode(!0),s=ee(e);s&&(i=te(i,s));let a=ne(i,t.values.length);return e.replaceChildren(i),{s:n,p:a}}var N="http://www.w3.org/2000/svg",b="http://www.w3.org/1998/Math/MathML",R="http://www.w3.org/1999/xhtml";function ee(t){if(!t||t.nodeType!==1)return null;if(t.namespaceURI===N)return N;if(t.namespaceURI===b)return b;if(typeof t.closest!="function")return null;let e=t.closest("svg, math, foreignObject, annotation-xml");if(!e)return null;let n=e.localName;if(n==="foreignobject"||n==="foreignObject")return null;if(n==="annotation-xml"){let r=(e.getAttribute("encoding")||"").toLowerCase();return r==="text/html"||r==="application/xhtml+xml"?null:b}return n==="svg"?N:n==="math"?b:null}function te(t,e){let n=document.createDocumentFragment();return V(t,n,e),n}function V(t,e,n){for(let r of[...t.childNodes])if(r.nodeType===1){let s=document.createElementNS(n,r.localName);for(let o of r.attributes)o.namespaceURI?s.setAttributeNS(o.namespaceURI,o.name,o.value):s.setAttribute(o.name,o.value);e.appendChild(s);let a=r.localName,c=n;if(n===N&&(a==="foreignObject"||a==="foreignobject"))c=R;else if(n===b&&a==="annotation-xml"){let o=(r.getAttribute("encoding")||"").toLowerCase();(o==="text/html"||o==="application/xhtml+xml")&&(c=R)}V(r,s,c)}else e.appendChild(r.cloneNode(!0))}function ne(t,e){let n=new Array(e),r=document.createTreeWalker(t,129),i;for(;i=r.nextNode();)if(i.nodeType===8){let s=i.data.match(/^p:(\d+)$/);if(s){let a=document.createTextNode("");i.replaceWith(a),r.currentNode=a,n[+s[1]]={t:"n",n:a,c:void 0,_fx:null}}}else if(i.nodeType===1)for(let s of[...i.attributes]){let a=s.value.match(/^\{\{p:(\d+)\}\}$/);if(!a){if(s.value.includes("{{p:")){let l=s.name,u=l==="class"?' class="${expression}" \u2190 full replacement (whole class string is the expression)\n .className=${expression} \u2190 writes to the className property (resolved camelCase since FB-55 fix)\n':l==="style"?' style="${expression}" \u2190 full replacement of the style string\n .style.cssText=${expression} \u2190 write CSS text via the style.cssText accessor\n':` ${l}="\${expression}" \u2190 full replacement (whole attr is the placeholder)
1
+ var A=Symbol("signal"),u=null,h=null,_=!1;function R(e){for(let t of e){if(t.disposed){e.delete(t);continue}t.dirty=!0,h||(h=new Set,_||queueMicrotask(I)),h.add(t)}}function I(){let e,t=0;for(;e=h;){if(++t>100){h=null,console.error("signals: drain loop exceeded 100 iterations",JSON.stringify([...e].map(n=>n.host||"?")));break}h=null;for(let n of e)if(!n.disposed&&n.dirty){n.dirty=!1;try{n.run()}catch(r){n.onError?n.onError(r):(n.disposed=!0,queueMicrotask(()=>{throw r}))}}}}function Y(e){if(_){e();return}_=!0;try{e()}finally{_=!1,h&&I()}}function N(e){let t=u;u=null;try{return e()}finally{u=t}}function m(e){let t=new Set;return{[A]:!0,get value(){return u&&t.add(u),e},set value(n){Object.is(e,n)||(e=n,R(t))},peek(){return e}}}function C(e){let t=new Set,n,r=!0,i={dirty:!1,disposed:!1,run(){r=!0,R(t)}};return{[A]:!0,get value(){if(u&&t.add(u),r){let o=u;u=i;try{n=e(),r=!1}finally{u=o}}return n},peek(){return n}}}function p(e,t){let n={dirty:!1,disposed:!1,host:t?.host??null,onError:t?.onError??null,run(){let r=u;u=n;try{e()}finally{u=r}}};return n.run(),()=>{n.disposed=!0}}function k(e){return e!=null&&typeof e=="object"&&e[A]===!0}function j(e){return e!=null&&typeof e=="object"&&typeof e.nodeType=="number"}function me(e){return j(e)&&e.nodeType===1}var[v,y]=[Symbol(),Symbol()];function J(e,...t){return{strings:e,values:t}}function Q(e,...t){let n="";for(let i=0;i<e.length;i++)n+=e[i],i<t.length&&(n+=t[i]);let r=new CSSStyleSheet;return r.replaceSync(n),r}var B=new WeakMap;function Z(e){let t=0,n=0,r=0;for(;r<e.length;){if(t===0&&e.charCodeAt(r)===60&&e.charCodeAt(r+1)===33&&e.charCodeAt(r+2)===45&&e.charCodeAt(r+3)===45){let o=e.indexOf("-->",r+4);if(o===-1){n=0;break}r=o+3,n=0;continue}let i=e.charCodeAt(r);t?i===(t===1?39:34)&&(t=0):i===39?t=1:i===34?t=2:i===60?n=1:i===62&&(n=0),r++}return n===1}function ee(e){let t=B.get(e);if(t)return t;let n="";for(let r=0;r<e.length;r++)n+=e[r],r<e.length-1&&(n+=Z(n)?`{{p:${r}}}`:`<!--p:${r}-->`);return t=document.createElement("template"),t.innerHTML=n,B.set(e,t),t}var W={classname:"className",innertext:"innerText",innerhtml:"innerHTML",outerhtml:"outerHTML",textcontent:"textContent",tabindex:"tabIndex",arialabel:"ariaLabel",ariadescribedby:"ariaDescribedBy",arialabelledby:"ariaLabelledBy",ariarole:"role",contenteditable:"contentEditable",readonly:"readOnly",maxlength:"maxLength",minlength:"minLength",colspan:"colSpan",rowspan:"rowSpan",cellpadding:"cellPadding",cellspacing:"cellSpacing",usemap:"useMap",ismap:"isMap",accesskey:"accessKey",defaultchecked:"defaultChecked",defaultvalue:"defaultValue",defaultselected:"defaultSelected"};function q(e,t){if(W[t])return W[t];let n=Object.getOwnPropertyNames(e);for(let i=0;i<n.length;i++){let o=n[i];if(o!==t&&o.toLowerCase()===t)return o}let r=Object.getPrototypeOf(e);for(;r&&r!==Object.prototype;){let i=Object.getOwnPropertyNames(r);for(let o=0;o<i.length;o++){let a=i[o];if(a!==t&&a.toLowerCase()===t)return a}r=Object.getPrototypeOf(r)}return t}function g(e,t){let n=t._i;(!n||n.s!==e.strings)&&(n&&$(n.p),n=te(e,t),t._i=n),oe(n.p,e.values)}function te(e,t){let{strings:n}=e,i=ee(n).content.cloneNode(!0),o=ne(t);o&&(i=re(i,o));let a=ie(i,e.values.length);return t.replaceChildren(i),{s:n,p:a}}var T="http://www.w3.org/2000/svg",b="http://www.w3.org/1998/Math/MathML",D="http://www.w3.org/1999/xhtml";function ne(e){if(!e||e.nodeType!==1)return null;if(e.namespaceURI===T)return T;if(e.namespaceURI===b)return b;if(typeof e.closest!="function")return null;let t=e.closest("svg, math, foreignObject, annotation-xml");if(!t)return null;let n=t.localName;if(n==="foreignobject"||n==="foreignObject")return null;if(n==="annotation-xml"){let r=(t.getAttribute("encoding")||"").toLowerCase();return r==="text/html"||r==="application/xhtml+xml"?null:b}return n==="svg"?T:n==="math"?b:null}function re(e,t){let n=document.createDocumentFragment();return H(e,n,t),n}function H(e,t,n){for(let r of[...e.childNodes])if(r.nodeType===1){let o=document.createElementNS(n,r.localName);for(let s of r.attributes)s.namespaceURI?o.setAttributeNS(s.namespaceURI,s.name,s.value):o.setAttribute(s.name,s.value);t.appendChild(o);let a=r.localName,c=n;if(n===T&&(a==="foreignObject"||a==="foreignobject"))c=D;else if(n===b&&a==="annotation-xml"){let s=(r.getAttribute("encoding")||"").toLowerCase();(s==="text/html"||s==="application/xhtml+xml")&&(c=D)}H(r,o,c)}else t.appendChild(r.cloneNode(!0))}function ie(e,t){let n=new Array(t),r=document.createTreeWalker(e,129),i;for(;i=r.nextNode();)if(i.nodeType===8){let o=i.data.match(/^p:(\d+)$/);if(o){let a=document.createTextNode("");i.replaceWith(a),r.currentNode=a,n[+o[1]]={t:"n",n:a,c:void 0,_fx:null}}}else if(i.nodeType===1)for(let o of[...i.attributes]){let a=o.value.match(/^\{\{p:(\d+)\}\}$/);if(!a){if(o.value.includes("{{p:")){let l=o.name,f=l==="class"?' class="${expression}" \u2190 full replacement (whole class string is the expression)\n .className=${expression} \u2190 writes to the className property (resolved camelCase since FB-55 fix)\n':l==="style"?' style="${expression}" \u2190 full replacement of the style string\n .style.cssText=${expression} \u2190 write CSS text via the style.cssText accessor\n':` ${l}="\${expression}" \u2190 full replacement (whole attr is the placeholder)
2
2
  .${l}=\${expression} \u2190 property assignment (preferred for objects/functions)
3
3
  `;console.warn(`[template] Partial attribute interpolation is not supported.
4
4
  Element: <${i.tagName.toLowerCase()}>
5
- Attribute: ${l}="${s.value.slice(0,80)}${s.value.length>80?"\u2026":""}"
5
+ Attribute: ${l}="${o.value.slice(0,80)}${o.value.length>80?"\u2026":""}"
6
6
  Use one of:
7
- `+u+" Compute the full attr value as a single expression and interpolate the whole.")}continue}let c=+a[1],o=s.name;o[0]==="@"?(i.removeAttribute(o),n[c]={t:"e",n:i,name:o.slice(1),c:void 0,_fx:null}):o[0]==="."?(i.removeAttribute(o),n[c]={t:"p",n:i,name:H(i,o.slice(1)),c:void 0,_fx:null,_resolved:!1}):o[0]==="?"?(i.removeAttribute(o),console.warn(`[template] Lit-style boolean attribute "${o}=" is not supported.
7
+ `+f+" Compute the full attr value as a single expression and interpolate the whole.")}continue}let c=+a[1],s=o.name;s[0]==="@"?(i.removeAttribute(s),n[c]={t:"e",n:i,name:s.slice(1),c:void 0,_fx:null}):s[0]==="."?(i.removeAttribute(s),n[c]={t:"p",n:i,name:q(i,s.slice(1)),c:void 0,_fx:null,_resolved:!1}):s[0]==="?"?(i.removeAttribute(s),console.warn(`[template] Lit-style boolean attribute "${s}=" is not supported.
8
8
  Element: <${i.tagName.toLowerCase()}>
9
- Use .${o.slice(1)}=\${value} (property binding) instead \u2014 the primitive reflects the property to the DOM attribute for you.
10
- See USAGE.md \xA7 Template parser \u2014 invariants + unsupported syntaxes.`),n[c]={t:"n",n:document.createTextNode(""),c:void 0,_fx:null}):n[c]={t:"a",n:i,name:o,c:void 0,_fx:null}}return n}function C(t){for(let e of t)e&&e._fx&&(e._fx(),e._fx=null)}function $(t){if(t.n.nodeType===1&&t.n[M])return t.n;let e=document.createElement("span");return e.style.display="contents",e.setAttribute("role","presentation"),e[M]=!0,t.n.replaceWith(e),t.n=e,e}var U=t=>t!=null&&typeof t=="object"&&t.strings,W=t=>typeof t=="function"||t!=null&&typeof t.handleEvent=="function";function v(t,e){if(e!==t.c){if(t.t==="n")if(e!=null&&e._directive)e._commit($(t));else if(U(e))g(e,$(t));else if(Array.isArray(e)){let n=$(t);n.replaceChildren();for(let r of e)if(U(r)){let i=document.createElement("span");i.style.display="contents",i.setAttribute("role","presentation"),n.appendChild(i),g(r,i)}else n.appendChild(document.createTextNode(r??""))}else if(e instanceof Node)t.n.replaceWith(e),t.n=e;else if(t.n[M]){let n=document.createTextNode(e??"");t.n.replaceWith(n),t.n=n}else t.n.textContent=e??"";else if(t.t==="a")e==null||e===!1?t.n.removeAttribute(t.name):t.n.setAttribute(t.name,e===!0?"":e);else if(t.t==="p"){if(!t._resolved){let n=H(t.n,t.name);n!==t.name&&(t.name=n),t._resolved=!0}t.n[t.name]=e}else t.t==="e"&&(W(t.c)&&t.n.removeEventListener(t.name,t.c),W(e)&&t.n.addEventListener(t.name,e));t.c=e}}function re(t,e){for(let n=0;n<t.length;n++){let r=t[n];if(!r)continue;let i=e[n],s=r.t!=="e"&&typeof i=="function",a=!s&&r.t!=="e"&&j(i);if(r._fx&&!s&&!a&&(r._fx(),r._fx=null),s){r._fx||(r._fx=p(()=>v(r,i())));continue}if(a){r._fx||(r._fx=p(()=>v(r,i.value)));continue}v(r,i)}}function ie(t,e,n){return{_directive:!0,_commit(r){let i=r[y]||new Map,s=new Map,a=[];for(let o=0;o<t.length;o++){let l=e(t[o],o);if(s.has(l))continue;a.push(l);let u=n(t[o],o);if(i.has(l)){let d=i.get(l);g(u,d),s.set(l,d)}else{let d=document.createElement("span");d.style.display="contents",d.setAttribute("role","presentation"),g(u,d),s.set(l,d)}}for(let[o,l]of i)s.has(o)||(l._i&&C(l._i.p),l.remove());let c=null;for(let o=a.length-1;o>=0;o--){let l=s.get(a[o]);(l.nextSibling!==c||l.parentNode!==r)&&r.insertBefore(l,c),c=l}r[y]=s}}}var O=new Map,z=new Set(["input-interaction","keyboard-navigation","forms-data","layout-measurement","motion-positioning","animation-feedback","visual-dynamics","interaction-delight","audio-haptics-sensory"]);function de(t){if(!t.name)throw new Error("Trait requires a name");if(!t.setup)throw new Error(`Trait "${t.name}" requires a setup function`);if(!t.category)throw new Error(`Trait "${t.name}" requires a category`);if(!z.has(t.category))throw new Error(`Trait "${t.name}" has unknown category "${t.category}". Known: ${[...z].join(", ")}`);if(!t.description)throw new Error(`Trait "${t.name}" requires a description`);let e=Object.freeze({name:t.name,category:t.category,description:t.description,attributes:Object.freeze(t.attributes||[]),events:Object.freeze(t.events||[]),config:Object.freeze(t.config||[])});function n(){let r=null;return{schema:e,connect(i,s){r=t.setup({host:i,...s||{}})},disconnect(i){r&&(r(),r=null);for(let s of e.attributes)i.hasAttribute(s)&&(console.warn(`Trait "${e.name}": attribute "${s}" still present after disconnect`),i.removeAttribute(s))}}}return n.schema=e,O.set(t.name,n),n}function D(t){return O.get(t)||null}function he(t){return O.get(t)?.schema||null}function pe(){return[...O.keys()]}var L=Symbol(),x=Symbol();function se(t,e){t[x]=new Map,t[L]=new Map;for(let[n,r]of Object.entries(e)){let i=r.attribute??n.toLowerCase(),s=r.type??String,a=Object.prototype.hasOwnProperty.call(t,n),c=a?t[n]:void 0;a&&delete t[n];let o=m(r.default??void 0);t[L].set(n,o),Object.defineProperty(t,n,{get(){return o.value},set(l){let u=o.peek();Object.is(u,l)||(t[x].set(n,u),o.value=l,r.reflect&&le(t,i,l,s))},configurable:!0}),a&&(o.value=c)}}var oe=Object.freeze({setFormValue(){},setValidity(){},checkValidity(){return!0},reportValidity(){return!0},get form(){return null},get labels(){return[]},get validity(){return{}},get validationMessage(){return""},get willValidate(){return!1}});function le(t,e,n,r){r===Boolean?n?t.setAttribute(e,""):t.removeAttribute(e):n==null?t.removeAttribute(e):t.setAttribute(e,String(n))}var F=(t,e)=>e===Boolean?t!==null:e===Number?t===null?null:+t:t;function ae(t){if(Object.hasOwn(t,"_sa"))return;t._sa=!0;let e=t.styles;if(!e||!("adoptedStyleSheets"in document))return;let n=Array.isArray(e)?e:[e];document.adoptedStyleSheets=[...document.adoptedStyleSheets,...n.filter(r=>!document.adoptedStyleSheets.includes(r))]}function G(t){if(Object.hasOwn(t,"_pp"))return;t._pp={};let e=t.parts;if(e)for(let[n,r]of Object.entries(e)){let i=document.createElement("template");i.innerHTML=r,t._pp[n]=i.content.firstElementChild}}var T=class extends HTMLElement{static get properties(){return{}}static get traits(){return[]}static get observedAttributes(){let e=Object.entries(this.properties).map(([n,r])=>r.attribute??n.toLowerCase());return e.includes("traits")?e:[...e,"traits"]}#i=[];#t=[];#s=[];#n=null;#r=null;#e=null;#l=m(0);constructor(){super(),this.internals=typeof this.attachInternals=="function"?this.attachInternals():oe,se(this,this.constructor.properties)}connectedCallback(){let e=this.constructor;e._tag||(e._tag=this.localName),ae(e),G(e),A(()=>{for(let[n,r]of Object.entries(e.properties)){let i=r.attribute??n.toLowerCase();this.hasAttribute(i)?this[n]=F(this.getAttribute(i),r.type??String):r.reflect&&r.type===Boolean&&this[n]===!0&&this.setAttribute(i,"")}}),A(()=>this.connected()),this.#i.push(p(()=>{for(let r of this[L].values())r.value;this.#l.value;let n=e.template(this);if(n&&g(n,this),this.render(),this[x].size){let r=new Map(this[x]);this[x].clear(),this.updated(r)}},{host:this.localName,onError:this.onError?n=>this.onError(n):null})),this.#e||(this.#e=new Set);for(let n of e.traits)this.#o(n);this.#c(),this.#n&&this.#a()}disconnectedCallback(){this._i&&C(this._i.p);for(let e of this.#i)e();this.#i.length=0;for(let e of this.#s)e.value=void 0;this.#s.length=0;for(let e of this.#t)e.disconnect(this);this.#t.length=0,this.#e?.clear(),this.#r?.(),this.#r=null,this.#n?.disconnect?.(this),this.disconnected()}#a(){let e=this.#n;e.connect?.(this),this.#r=e.subscribe?.(()=>{this.#l.value++})}get controller(){return this.#n}set controller(e){this.#r?.(),this.#r=null,this.#n?.disconnect?.(this),this.#n=e,e&&this.isConnected&&this.#a()}#o(e,{declarative:n=!1}={}){this.#e.add(e);let r=e();r.connect(this,{host:this,signal:m,computed:k,effect:p}),n&&(r._declarative=!0),this.#t.push(r)}addTrait(e){return this.#e||(this.#e=new Set),this.#e.has(e)?this:(this.#o(e),this)}#c(){let e=this.getAttribute("traits");if(e)for(let n of e.split(/\s+/).filter(Boolean)){let r=D(n);if(!r){console.warn(`<${this.localName}> traits="${n}" \u2014 trait not found. Did you forget to import it?`);continue}this.#e.has(r)||this.#o(r,{declarative:!0})}}#f(){if(!this.#e)return;let e=[];for(let n of this.#t)if(n._declarative){n.disconnect(this);for(let r of this.#e)if(r.schema?.name&&n.schema?.name===r.schema.name){this.#e.delete(r);break}}else e.push(n);this.#t.length=0,this.#t.push(...e),this.#c()}attributeChangedCallback(e,n,r){if(e==="traits"){this.isConnected&&this.#f();return}for(let[i,s]of Object.entries(this.constructor.properties))if((s.attribute??i.toLowerCase())===e){this[i]=F(r,s.type??String);break}}static template=()=>null;static create(e={}){let n=this._tag??customElements.getName?.(this);if(!n)throw new Error("Component not registered");let r=document.createElement(n);for(let[i,s]of Object.entries(e))r[i]=s;return r}signal(e){let n=m(e);return this.#s.push(n),n}ensure(e){for(let s of this.children)if(s.getAttribute("slot")===e)return s;let n=this.#u(e);if(n)return n;G(this.constructor);let r=this.constructor._pp?.[e];if(!r)return null;let i=r.cloneNode(!0);return i._uiPart=!0,this.appendChild(i),i}drop(e){for(let r of this.children)if(r.getAttribute("slot")===e){r.remove();return}let n=this.#u(e);n&&n.remove()}#u(e){for(let n of this.querySelectorAll(`[slot="${e}"]`)){let r=n.parentElement,i=!0;for(;r&&r!==this;){if(r.localName.includes("-")){i=!1;break}r=r.parentElement}if(i&&r===this)return n}return null}reconcile(e,n,r,i){let s=e[y]||new Map,a=new Map,c=[];for(let l=0;l<n.length;l++){let u=n[l],d=r(u,l);if(a.has(d))continue;let w=s.get(d);w?i(u,l,w):w=i(u,l,null),a.set(d,w),c.push(d)}for(let[l,u]of s)a.has(l)||u.remove();let o=null;for(let l=c.length-1;l>=0;l--){let u=a.get(c[l]);(u.nextSibling!==o||u.parentNode!==e)&&e.insertBefore(u,o),o=u}e[y]=a}connected(){}render(){}disconnected(){}updated(e){}};var E=class extends T{static properties={centered:{type:Boolean,default:!1,reflect:!0},"full-bleed":{type:Boolean,default:!1,reflect:!0}};static template=()=>null};customElements.get("simple-shell")||customElements.define("simple-shell",E);export{E as SimpleShell};
9
+ Use .${s.slice(1)}=\${value} (property binding) instead \u2014 the primitive reflects the property to the DOM attribute for you.
10
+ See USAGE.md \xA7 Template parser \u2014 invariants + unsupported syntaxes.`),n[c]={t:"n",n:document.createTextNode(""),c:void 0,_fx:null}):n[c]={t:"a",n:i,name:s,c:void 0,_fx:null}}return n}function $(e){for(let t of e)t&&t._fx&&(t._fx(),t._fx=null)}function M(e){if(e.n.nodeType===1&&e.n[v])return e.n;let t=document.createElement("span");return t.style.display="contents",t.setAttribute("role","presentation"),t[v]=!0,e.n.replaceWith(t),e.n=t,t}var V=e=>e!=null&&typeof e=="object"&&e.strings,z=e=>typeof e=="function"||e!=null&&typeof e.handleEvent=="function";function L(e,t){if(t!==e.c){if(e.t==="n")if(t!=null&&t._directive)t._commit(M(e));else if(V(t))g(t,M(e));else if(Array.isArray(t)){let n=M(e);n.replaceChildren();for(let r of t)if(V(r)){let i=document.createElement("span");i.style.display="contents",i.setAttribute("role","presentation"),n.appendChild(i),g(r,i)}else n.appendChild(document.createTextNode(r??""))}else if(j(t))e.n.replaceWith(t),e.n=t;else if(e.n[v]){let n=document.createTextNode(t??"");e.n.replaceWith(n),e.n=n}else e.n.textContent=t??"";else if(e.t==="a")t==null||t===!1?e.n.removeAttribute(e.name):e.n.setAttribute(e.name,t===!0?"":t);else if(e.t==="p"){if(!e._resolved){let n=q(e.n,e.name);n!==e.name&&(e.name=n),e._resolved=!0}e.n[e.name]=t}else e.t==="e"&&(z(e.c)&&e.n.removeEventListener(e.name,e.c),z(t)&&e.n.addEventListener(e.name,t));e.c=t}}function oe(e,t){for(let n=0;n<e.length;n++){let r=e[n];if(!r)continue;let i=t[n],o=r.t!=="e"&&typeof i=="function",a=!o&&r.t!=="e"&&k(i);if(r._fx&&!o&&!a&&(r._fx(),r._fx=null),o){r._fx||(r._fx=p(()=>L(r,i())));continue}if(a){r._fx||(r._fx=p(()=>L(r,i.value)));continue}L(r,i)}}function se(e,t,n){return{_directive:!0,_commit(r){let i=r[y]||new Map,o=new Map,a=[];for(let s=0;s<e.length;s++){let l=t(e[s],s);if(o.has(l))continue;a.push(l);let f=n(e[s],s);if(i.has(l)){let d=i.get(l);g(f,d),o.set(l,d)}else{let d=document.createElement("span");d.style.display="contents",d.setAttribute("role","presentation"),g(f,d),o.set(l,d)}}for(let[s,l]of i)o.has(s)||(l._i&&$(l._i.p),l.remove());let c=null;for(let s=a.length-1;s>=0;s--){let l=o.get(a[s]);(l.nextSibling!==c||l.parentNode!==r)&&r.insertBefore(l,c),c=l}r[y]=o}}}var x=new Map;function ae(e,t){return t===`data-${e}`||t.startsWith(`data-${e}-`)}function U(e,t){return e===t||e.startsWith(`${t}-`)||t.startsWith(`${e}-`)}function le(e){let t=[e.name,...e.prefixes||[]],n=[...e.attributes||[],...e.config||[]].filter(r=>!t.some(i=>ae(i,r)));if(n.length>0)throw new Error(`Trait "${e.name}" declares attribute(s) outside its owned data-* namespace: ${n.join(", ")}. A trait owns "data-${e.name}" / "data-${e.name}-*" by default; register any other prefix via defineTrait({ ..., prefixes: [...] }) (ADR-0060) or rename the attribute.`)}function ce(e){let t=e.prefixes||[];for(let[n,r]of x){if(n===e.name)continue;let i=r.schema,o=[i.name,...i.prefixes||[]];for(let a of t)for(let c of o)if(U(a,c))throw new Error(`Trait "${e.name}"'s registered prefix "${a}" overlaps trait "${i.name}"'s owned namespace ("${c}"). Registered prefixes must be globally exclusive across the trait registry (ADR-0060).`);for(let a of i.prefixes||[])if(U(a,e.name))throw new Error(`Trait "${e.name}"'s name overlaps trait "${i.name}"'s registered prefix "${a}". Registered prefixes must be globally exclusive across the trait registry (ADR-0060).`)}}var F=new Set(["input-interaction","keyboard-navigation","forms-data","layout-measurement","motion-positioning","animation-feedback","visual-dynamics","interaction-delight","audio-haptics-sensory"]);function we(e){if(!e.name)throw new Error("Trait requires a name");if(!e.setup)throw new Error(`Trait "${e.name}" requires a setup function`);if(!e.category)throw new Error(`Trait "${e.name}" requires a category`);if(!F.has(e.category))throw new Error(`Trait "${e.name}" has unknown category "${e.category}". Known: ${[...F].join(", ")}`);if(!e.description)throw new Error(`Trait "${e.name}" requires a description`);le(e),ce(e);let t=Object.freeze({name:e.name,category:e.category,description:e.description,attributes:Object.freeze(e.attributes||[]),events:Object.freeze(e.events||[]),config:Object.freeze(e.config||[]),prefixes:Object.freeze(e.prefixes||[])});function n(){let r=null;return{schema:t,connect(i,o){r=e.setup({host:i,...o||{}})},disconnect(i){r&&(r(),r=null);for(let o of t.attributes)i.hasAttribute(o)&&(console.warn(`Trait "${t.name}": attribute "${o}" still present after disconnect`),i.removeAttribute(o))}}}return n.schema=t,x.set(e.name,n),n}function G(e){return x.get(e)||null}function Se(e){return x.get(e)?.schema||null}function Ae(){return[...x.keys()]}var P=Symbol(),w=Symbol();function fe(e,t){e[w]=new Map,e[P]=new Map;for(let[n,r]of Object.entries(t)){let i=r.attribute??n.toLowerCase(),o=r.type??String,a=Object.prototype.hasOwnProperty.call(e,n),c=a?e[n]:void 0;a&&delete e[n];let s=m(r.default??void 0);e[P].set(n,s),Object.defineProperty(e,n,{get(){return s.value},set(l){let f=s.peek();Object.is(f,l)||(e[w].set(n,f),s.value=l,r.reflect&&de(e,i,l,o))},configurable:!0}),a&&(s.value=c)}}var ue=Object.freeze({setFormValue(){},setValidity(){},checkValidity(){return!0},reportValidity(){return!0},get form(){return null},get labels(){return[]},get validity(){return{}},get validationMessage(){return""},get willValidate(){return!1}});function de(e,t,n,r){r===Boolean?n?e.setAttribute(t,""):e.removeAttribute(t):n==null?e.removeAttribute(t):e.setAttribute(t,String(n))}var K=(e,t)=>t===Boolean?e!==null:t===Number?e===null?null:+e:e;function he(e){if(Object.hasOwn(e,"_sa"))return;e._sa=!0;let t=e.styles;if(!t||!("adoptedStyleSheets"in document))return;let n=Array.isArray(t)?t:[t];document.adoptedStyleSheets=[...document.adoptedStyleSheets,...n.filter(r=>!document.adoptedStyleSheets.includes(r))]}function X(e){if(Object.hasOwn(e,"_pp"))return;e._pp={};let t=e.parts;if(t)for(let[n,r]of Object.entries(t)){let i=document.createElement("template");i.innerHTML=r,e._pp[n]=i.content.firstElementChild}}var E=class extends HTMLElement{static get properties(){return{}}static get traits(){return[]}static get observedAttributes(){let t=Object.entries(this.properties).map(([n,r])=>r.attribute??n.toLowerCase());return t.includes("traits")?t:[...t,"traits"]}#i=[];#t=[];#o=[];#n=null;#r=null;#e=null;#a=m(0);constructor(){super(),this.internals=typeof this.attachInternals=="function"?this.attachInternals():ue,fe(this,this.constructor.properties)}connectedCallback(){let t=this.constructor;t._tag||(t._tag=this.localName),he(t),X(t),N(()=>{for(let[n,r]of Object.entries(t.properties)){let i=r.attribute??n.toLowerCase();this.hasAttribute(i)?this[n]=K(this.getAttribute(i),r.type??String):r.reflect&&r.type===Boolean&&this[n]===!0&&this.setAttribute(i,"")}}),N(()=>this.connected()),this.#i.push(p(()=>{for(let r of this[P].values())r.value;this.#a.value;let n=t.template(this);if(n&&g(n,this),this.render(),this[w].size){let r=new Map(this[w]);this[w].clear(),this.updated(r)}},{host:this.localName,onError:this.onError?n=>this.onError(n):null})),this.#e||(this.#e=new Set);for(let n of t.traits)this.#s(n);this.#c(),this.#n&&this.#l()}disconnectedCallback(){this._i&&$(this._i.p);for(let t of this.#i)t();this.#i.length=0;for(let t of this.#o)t.value=void 0;this.#o.length=0;for(let t of this.#t)t.disconnect(this);this.#t.length=0,this.#e?.clear(),this.#r?.(),this.#r=null,this.#n?.disconnect?.(this),this.disconnected()}#l(){let t=this.#n;t.connect?.(this),this.#r=t.subscribe?.(()=>{this.#a.value++})}get controller(){return this.#n}set controller(t){this.#r?.(),this.#r=null,this.#n?.disconnect?.(this),this.#n=t,t&&this.isConnected&&this.#l()}#s(t,{declarative:n=!1}={}){this.#e.add(t);let r=t();r.connect(this,{host:this,signal:m,computed:C,effect:p}),n&&(r._declarative=!0),this.#t.push(r)}addTrait(t){return this.#e||(this.#e=new Set),this.#e.has(t)?this:(this.#s(t),this)}#c(){let t=this.getAttribute("traits");if(t)for(let n of t.split(/\s+/).filter(Boolean)){let r=G(n);if(!r){console.warn(`<${this.localName}> traits="${n}" \u2014 trait not found. Did you forget to import it?`);continue}this.#e.has(r)||this.#s(r,{declarative:!0})}}#u(){if(!this.#e)return;let t=[];for(let n of this.#t)if(n._declarative){n.disconnect(this);for(let r of this.#e)if(r.schema?.name&&n.schema?.name===r.schema.name){this.#e.delete(r);break}}else t.push(n);this.#t.length=0,this.#t.push(...t),this.#c()}attributeChangedCallback(t,n,r){if(t==="traits"){this.isConnected&&this.#u();return}for(let[i,o]of Object.entries(this.constructor.properties))if((o.attribute??i.toLowerCase())===t){this[i]=K(r,o.type??String);break}}static template=()=>null;static create(t={}){let n=this._tag??customElements.getName?.(this);if(!n)throw new Error("Component not registered");let r=document.createElement(n);for(let[i,o]of Object.entries(t))r[i]=o;return r}signal(t){let n=m(t);return this.#o.push(n),n}ensure(t){for(let o of this.children)if(o.getAttribute("slot")===t)return o;let n=this.#f(t);if(n)return n;X(this.constructor);let r=this.constructor._pp?.[t];if(!r)return null;let i=r.cloneNode(!0);return i._uiPart=!0,this.appendChild(i),i}drop(t){for(let r of this.children)if(r.getAttribute("slot")===t){r.remove();return}let n=this.#f(t);n&&n.remove()}#f(t){for(let n of this.querySelectorAll(`[slot="${t}"]`)){let r=n.parentElement,i=!0;for(;r&&r!==this;){if(r.localName.includes("-")){i=!1;break}r=r.parentElement}if(i&&r===this)return n}return null}reconcile(t,n,r,i){let o=t[y]||new Map,a=new Map,c=[];for(let l=0;l<n.length;l++){let f=n[l],d=r(f,l);if(a.has(d))continue;let S=o.get(d);S?i(f,l,S):S=i(f,l,null),a.set(d,S),c.push(d)}for(let[l,f]of o)a.has(l)||f.remove();let s=null;for(let l=c.length-1;l>=0;l--){let f=a.get(c[l]);(f.nextSibling!==s||f.parentNode!==t)&&t.insertBefore(f,s),s=f}t[y]=a}connected(){}render(){}disconnected(){}updated(t){}};var O=class extends E{static properties={centered:{type:Boolean,default:!1,reflect:!0},"full-bleed":{type:Boolean,default:!1,reflect:!0}};static template=()=>null};customElements.get("simple-shell")||customElements.define("simple-shell",O);export{O as SimpleShell};