@agent-ui-kit/web-components 0.0.8 → 0.0.15
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.
- package/README.md +67 -4
- package/dist/agent-ui.css +1 -1
- package/dist/api.colors.json +2 -2
- package/dist/api.colors.yaml +2 -2
- package/dist/api.components.json +8214 -2794
- package/dist/api.tokens.json +35 -3
- package/dist/api.tokens.yaml +27 -3
- package/dist/blocks/agent-chat/agent-chat.d.ts +0 -0
- package/dist/blocks/announcement-card/announcement-card.d.ts +0 -0
- package/dist/blocks/bpm-process/bpm-process.d.ts +0 -0
- package/dist/blocks/chart-activity/chart-activity.d.ts +0 -0
- package/dist/blocks/chart-card/chart-card.d.ts +0 -0
- package/dist/blocks/chart-donut/chart-donut.d.ts +0 -0
- package/dist/blocks/chart-grouped/chart-grouped.d.ts +0 -0
- package/dist/blocks/chart-horizontal/chart-horizontal.d.ts +0 -0
- package/dist/blocks/chart-interactive/chart-interactive.d.ts +0 -0
- package/dist/blocks/chart-labeled/chart-labeled.d.ts +0 -0
- package/dist/blocks/checkout-form/checkout-form.d.ts +0 -0
- package/dist/blocks/clinical-trial/clinical-trial.d.ts +0 -0
- package/dist/blocks/contributors/contributors.d.ts +0 -0
- package/dist/blocks/cyber-threat/cyber-threat.d.ts +0 -0
- package/dist/blocks/dashboard-layout/dashboard-layout.d.ts +0 -0
- package/dist/blocks/data-eng-dag/data-eng-dag.d.ts +0 -0
- package/dist/blocks/date-picker/date-picker.d.ts +0 -0
- package/dist/blocks/ddx-workflow/ddx-workflow.d.ts +0 -0
- package/dist/blocks/empty-state/empty-state.d.ts +0 -0
- package/dist/blocks/env-variables/env-variables.d.ts +0 -0
- package/dist/blocks/feature-upgrade/feature-upgrade.d.ts +0 -0
- package/dist/blocks/financial-risk/financial-risk.d.ts +0 -0
- package/dist/blocks/flow-editor/flow-editor.d.ts +0 -0
- package/dist/blocks/gen-ai-pipeline/gen-ai-pipeline.d.ts +0 -0
- package/dist/blocks/index.d.ts +0 -0
- package/dist/blocks/issue-assign/issue-assign.d.ts +0 -0
- package/dist/blocks/keyboard-shortcuts/keyboard-shortcuts.d.ts +0 -0
- package/dist/blocks/login-branded/login-branded.d.ts +0 -0
- package/dist/blocks/login-email-only/login-email-only.d.ts +0 -0
- package/dist/blocks/login-form/login-form.d.ts +0 -0
- package/dist/blocks/login-simple/login-simple.d.ts +0 -0
- package/dist/blocks/login-social/login-social.d.ts +0 -0
- package/dist/blocks/login-two-column/login-two-column.d.ts +0 -0
- package/dist/blocks/marketing-automation/marketing-automation.d.ts +0 -0
- package/dist/blocks/member-list/member-list.d.ts +0 -0
- package/dist/blocks/ml-pipeline/ml-pipeline.d.ts +0 -0
- package/dist/blocks/nav-card/nav-card.d.ts +0 -0
- package/dist/blocks/notification-list/notification-list.d.ts +0 -0
- package/dist/blocks/oncology-pathway/oncology-pathway.d.ts +0 -0
- package/dist/blocks/pricing-card/pricing-card.d.ts +0 -0
- package/dist/blocks/processing-state/processing-state.d.ts +0 -0
- package/dist/blocks/profile-card/profile-card.d.ts +0 -0
- package/dist/blocks/saas-onboarding/saas-onboarding.d.ts +0 -0
- package/dist/blocks/settings-form/settings-form.d.ts +0 -0
- package/dist/blocks/settings-panel/settings-panel.d.ts +0 -0
- package/dist/blocks/sidebar-nav/sidebar-nav.d.ts +0 -0
- package/dist/blocks/signup-form/signup-form.d.ts +0 -0
- package/dist/blocks/stat-cards/stat-cards.d.ts +0 -0
- package/dist/blocks/status-card/status-card.d.ts +0 -0
- package/dist/blocks/suggested-labs/suggested-labs.d.ts +0 -0
- package/dist/blocks/supply-chain/supply-chain.d.ts +0 -0
- package/dist/blocks/survey-card/survey-card.d.ts +0 -0
- package/dist/blocks/tabbed-panel/tabbed-panel.d.ts +0 -0
- package/dist/blocks/team-empty/team-empty.d.ts +0 -0
- package/dist/blocks/usage-billing/usage-billing.d.ts +0 -0
- package/dist/blocks-incoming/action-toolbar/action-toolbar.d.ts +0 -0
- package/dist/blocks-incoming/agent-artifact-card/agent-artifact-card.d.ts +0 -0
- package/dist/blocks-incoming/agent-chat-response/agent-chat-response.d.ts +0 -0
- package/dist/blocks-incoming/agent-code-result/agent-code-result.d.ts +0 -0
- package/dist/blocks-incoming/agent-context-panel/agent-context-panel.d.ts +0 -0
- package/dist/blocks-incoming/agent-feedback-controls/agent-feedback-controls.d.ts +0 -0
- package/dist/blocks-incoming/agent-follow-up-chips/agent-follow-up-chips.d.ts +0 -0
- package/dist/blocks-incoming/agent-model-selector/agent-model-selector.d.ts +0 -0
- package/dist/blocks-incoming/agent-prompt-input/agent-prompt-input.d.ts +0 -0
- package/dist/blocks-incoming/agent-streaming-message/agent-streaming-message.d.ts +0 -0
- package/dist/blocks-incoming/agent-suggestion-card/agent-suggestion-card.d.ts +0 -0
- package/dist/blocks-incoming/agent-task-card/agent-task-card.d.ts +0 -0
- package/dist/blocks-incoming/agent-thinking-state/agent-thinking-state.d.ts +0 -0
- package/dist/blocks-incoming/agent-tool-use-card/agent-tool-use-card.d.ts +0 -0
- package/dist/blocks-incoming/auth-card/auth-card.d.ts +0 -0
- package/dist/blocks-incoming/commerce-pricing-table/commerce-pricing-table.d.ts +0 -0
- package/dist/blocks-incoming/comms-chat-thread/comms-chat-thread.d.ts +0 -0
- package/dist/blocks-incoming/comms-notification-list/comms-notification-list.d.ts +0 -0
- package/dist/blocks-incoming/content-article-card/content-article-card.d.ts +0 -0
- package/dist/blocks-incoming/dashboard-kpi-grid/dashboard-kpi-grid.d.ts +0 -0
- package/dist/blocks-incoming/data-activity-log/data-activity-log.d.ts +0 -0
- package/dist/blocks-incoming/data-metric-card/data-metric-card.d.ts +0 -0
- package/dist/blocks-incoming/data-table/data-table.d.ts +0 -0
- package/dist/blocks-incoming/data-timeline/data-timeline.d.ts +0 -0
- package/dist/blocks-incoming/feedback-alert-banner/feedback-alert-banner.d.ts +0 -0
- package/dist/blocks-incoming/feedback-empty-state/feedback-empty-state.d.ts +0 -0
- package/dist/blocks-incoming/feedback-progress-stepper/feedback-progress-stepper.d.ts +0 -0
- package/dist/blocks-incoming/form-settings-section/form-settings-section.d.ts +0 -0
- package/dist/blocks-incoming/game-battleship/game-battleship.d.ts +0 -0
- package/dist/blocks-incoming/game-chess/game-chess.d.ts +0 -0
- package/dist/blocks-incoming/game-connect-four/game-connect-four.d.ts +0 -0
- package/dist/blocks-incoming/game-tic-tac-toe/game-tic-tac-toe.d.ts +0 -0
- package/dist/blocks-incoming/list-kanban-board/list-kanban-board.d.ts +0 -0
- package/dist/blocks-incoming/media-image-gallery/media-image-gallery.d.ts +0 -0
- package/dist/blocks-incoming/nav-sidebar/nav-sidebar.d.ts +0 -0
- package/dist/blocks-incoming/onboard-stepper/onboard-stepper.d.ts +0 -0
- package/dist/blocks-incoming/overlay-confirmation-modal/overlay-confirmation-modal.d.ts +0 -0
- package/dist/blocks-incoming/overlay-dropdown-menu/overlay-dropdown-menu.d.ts +0 -0
- package/dist/blocks-incoming/user-profile-card/user-profile-card.d.ts +0 -0
- package/dist/blocks-incoming/user-team-list/user-team-list.d.ts +0 -0
- package/dist/chunks/{agent-ciCayeod.js → agent-BF_R_HJk.js} +68 -64
- package/dist/chunks/{agent-ciCayeod.js.map → agent-BF_R_HJk.js.map} +1 -1
- package/dist/chunks/meter-Dju8ik6C.js +5395 -0
- package/dist/chunks/meter-Dju8ik6C.js.map +1 -0
- package/dist/components/accordion/accordion-item.d.ts +9 -0
- package/dist/components/accordion/accordion.d.ts +9 -0
- package/dist/components/accordion/index.d.ts +2 -0
- package/dist/components/agent/agent-activity.d.ts +13 -0
- package/dist/components/agent/agent-feed.d.ts +13 -0
- package/dist/components/agent/agent-input.d.ts +18 -0
- package/dist/components/agent/agent-message.d.ts +22 -0
- package/dist/components/agent/agent-panel.d.ts +16 -0
- package/dist/components/agent/agent-prompt.d.ts +7 -0
- package/dist/components/agent/agent-seeds.d.ts +15 -0
- package/dist/components/agent/agent-text.d.ts +14 -0
- package/dist/components/agent/agent-thread.d.ts +11 -0
- package/dist/components/agent/index.d.ts +9 -0
- package/dist/components/agent.js +6 -6
- package/dist/components/alert/alert.d.ts +3 -0
- package/dist/components/alert/index.d.ts +1 -0
- package/dist/components/app-shell/app-shell.d.ts +4 -0
- package/dist/components/app-shell/index.d.ts +1 -0
- package/dist/components/avatar/avatar.d.ts +0 -0
- package/dist/components/avatar-group/avatar-group.d.ts +10 -0
- package/dist/components/avatar-group/index.d.ts +1 -0
- package/dist/components/badge/badge.d.ts +0 -0
- package/dist/components/bar/bar.d.ts +0 -0
- package/dist/components/breadcrumb/breadcrumb-item.d.ts +8 -0
- package/dist/components/breadcrumb/breadcrumb.d.ts +9 -0
- package/dist/components/breadcrumb/index.d.ts +2 -0
- package/dist/components/button/button.d.ts +17 -0
- package/dist/components/button/index.d.ts +1 -0
- package/dist/components/button-group/button-group.d.ts +0 -0
- package/dist/components/calendar/calendar.d.ts +26 -0
- package/dist/components/calendar/index.d.ts +3 -0
- package/dist/components/calendar/store/calendar-store.d.ts +60 -0
- package/dist/components/calendar-picker/calendar-picker.d.ts +14 -0
- package/dist/components/calendar-picker/index.d.ts +1 -0
- package/dist/components/calendar-range-picker/calendar-range-picker.d.ts +14 -0
- package/dist/components/calendar-range-picker/index.d.ts +1 -0
- package/dist/components/canvas/canvas.d.ts +19 -0
- package/dist/components/canvas/index.d.ts +1 -0
- package/dist/components/carousel/carousel.d.ts +13 -0
- package/dist/components/carousel/index.d.ts +1 -0
- package/dist/components/checkbox/checkbox.d.ts +18 -0
- package/dist/components/checkbox/index.d.ts +1 -0
- package/dist/components/chip/chip.d.ts +8 -0
- package/dist/components/chip/index.d.ts +1 -0
- package/dist/components/code/code.d.ts +0 -0
- package/dist/components/code-block/code-block.d.ts +10 -0
- package/dist/components/code-block/index.d.ts +1 -0
- package/dist/components/color-area/color-area.d.ts +12 -0
- package/dist/components/color-area/index.d.ts +1 -0
- package/dist/components/color-field/color-field.d.ts +10 -0
- package/dist/components/color-field/index.d.ts +1 -0
- package/dist/components/color-picker/color-picker.d.ts +11 -0
- package/dist/components/color-picker/index.d.ts +1 -0
- package/dist/components/color-picker/oklch-utils.d.ts +18 -0
- package/dist/components/color-slider/color-slider.d.ts +15 -0
- package/dist/components/color-slider/index.d.ts +1 -0
- package/dist/components/color-swatch/color-swatch.d.ts +0 -0
- package/dist/components/command/command-empty.d.ts +4 -0
- package/dist/components/command/command-group.d.ts +6 -0
- package/dist/components/command/command-input.d.ts +12 -0
- package/dist/components/command/command-item.d.ts +10 -0
- package/dist/components/command/command-list.d.ts +4 -0
- package/dist/components/command/command.d.ts +6 -0
- package/dist/components/command/index.d.ts +6 -0
- package/dist/components/container/container.d.ts +11 -0
- package/dist/components/container/index.d.ts +1 -0
- package/dist/components/content/content.d.ts +0 -0
- package/dist/components/context-menu/context-menu.d.ts +12 -0
- package/dist/components/context-menu/index.d.ts +1 -0
- package/dist/components/copy-button/copy-button.d.ts +10 -0
- package/dist/components/copy-button/index.d.ts +1 -0
- package/dist/components/date-field/date-field.d.ts +13 -0
- package/dist/components/date-field/index.d.ts +1 -0
- package/dist/components/description-list/description-list.d.ts +0 -0
- package/dist/components/dialog/dialog.d.ts +12 -0
- package/dist/components/dialog/index.d.ts +1 -0
- package/dist/components/disclosure/disclosure.d.ts +10 -0
- package/dist/components/disclosure/index.d.ts +1 -0
- package/dist/components/disclosure-group/disclosure-group.d.ts +8 -0
- package/dist/components/disclosure-group/index.d.ts +1 -0
- package/dist/components/divider/divider.d.ts +0 -0
- package/dist/components/drawer/drawer.d.ts +13 -0
- package/dist/components/drawer/index.d.ts +1 -0
- package/dist/components/dropdown-menu/dropdown-menu.d.ts +12 -0
- package/dist/components/dropdown-menu/index.d.ts +1 -0
- package/dist/components/editor/context.d.ts +15 -0
- package/dist/components/editor/editor-layer.d.ts +11 -0
- package/dist/components/editor/editor.d.ts +32 -0
- package/dist/components/editor/index.d.ts +4 -0
- package/dist/components/editor.js +1 -1
- package/dist/components/empty-state/empty-state.d.ts +10 -0
- package/dist/components/empty-state/index.d.ts +1 -0
- package/dist/components/feed/feed.d.ts +11 -0
- package/dist/components/feed/index.d.ts +1 -0
- package/dist/components/field/index.d.ts +0 -0
- package/dist/components/fieldset/fieldset.d.ts +0 -0
- package/dist/components/file-upload/file-upload.d.ts +13 -0
- package/dist/components/file-upload/index.d.ts +1 -0
- package/dist/components/footer/footer.d.ts +0 -0
- package/dist/components/graph/graph-layer.d.ts +3 -0
- package/dist/components/graph/graph-node.d.ts +13 -0
- package/dist/components/graph/graph-noodle.d.ts +19 -0
- package/dist/components/graph/graph-port.d.ts +17 -0
- package/dist/components/graph/graph-ui.d.ts +10 -0
- package/dist/components/graph/index.d.ts +5 -0
- package/dist/components/graph.js +1 -1
- package/dist/components/grid/grid.d.ts +0 -0
- package/dist/components/gripper/gripper.d.ts +9 -0
- package/dist/components/gripper/index.d.ts +1 -0
- package/dist/components/header/header.d.ts +0 -0
- package/dist/components/heading/heading.d.ts +0 -0
- package/dist/components/hover-card/hover-card.d.ts +11 -0
- package/dist/components/hover-card/index.d.ts +1 -0
- package/dist/components/icon/icon.d.ts +12 -0
- package/dist/components/icon/index.d.ts +2 -0
- package/dist/components/icon/registry.d.ts +8 -0
- package/dist/components/image/image.d.ts +13 -0
- package/dist/components/image/index.d.ts +1 -0
- package/dist/components/index.d.ts +72 -0
- package/dist/components/input/index.d.ts +2 -0
- package/dist/components/input/input-otp.d.ts +17 -0
- package/dist/components/input/input.d.ts +29 -0
- package/dist/components/input-group/input-group.d.ts +0 -0
- package/dist/components/inset/inset.d.ts +0 -0
- package/dist/components/kbd/kbd.d.ts +0 -0
- package/dist/components/link/index.d.ts +1 -0
- package/dist/components/link/link.d.ts +3 -0
- package/dist/components/meter/index.d.ts +1 -0
- package/dist/components/meter/meter.d.ts +8 -0
- package/dist/components/nav-item/index.d.ts +1 -0
- package/dist/components/nav-item/nav-item.d.ts +3 -0
- package/dist/components/noodles/datasets.d.ts +16 -0
- package/dist/components/noodles/index.d.ts +3 -0
- package/dist/components/noodles/noodle-controller.d.ts +71 -0
- package/dist/components/noodles/noodles.d.ts +30 -0
- package/dist/components/notification-center/index.d.ts +2 -0
- package/dist/components/notification-center/notification-center.d.ts +27 -0
- package/dist/components/optgroup/index.d.ts +1 -0
- package/dist/components/optgroup/optgroup.d.ts +9 -0
- package/dist/components/option/index.d.ts +1 -0
- package/dist/components/option/option.d.ts +11 -0
- package/dist/components/page/index.d.ts +3 -0
- package/dist/components/page/page-context.d.ts +4 -0
- package/dist/components/page/page-main.d.ts +3 -0
- package/dist/components/page/page.d.ts +4 -0
- package/dist/components/pagination/index.d.ts +1 -0
- package/dist/components/pagination/pagination.d.ts +10 -0
- package/dist/components/pane/index.d.ts +2 -0
- package/dist/components/pane/pane.d.ts +27 -0
- package/dist/components/pane/panes.d.ts +10 -0
- package/dist/components/preview-app/index.d.ts +1 -0
- package/dist/components/preview-app/preview-app.d.ts +8 -0
- package/dist/components/progress/index.d.ts +1 -0
- package/dist/components/progress/progress.d.ts +6 -0
- package/dist/components/progress-circle/index.d.ts +1 -0
- package/dist/components/progress-circle/progress-circle.d.ts +9 -0
- package/dist/components/radio/index.d.ts +2 -0
- package/dist/components/radio/radio-group.d.ts +10 -0
- package/dist/components/radio/radio.d.ts +17 -0
- package/dist/components/range/index.d.ts +1 -0
- package/dist/components/range/range.d.ts +18 -0
- package/dist/components/root/index.d.ts +1 -0
- package/dist/components/root/root.d.ts +4 -0
- package/dist/components/segmented-control/index.d.ts +2 -0
- package/dist/components/segmented-control/segment.d.ts +8 -0
- package/dist/components/segmented-control/segmented-control.d.ts +13 -0
- package/dist/components/select/index.d.ts +1 -0
- package/dist/components/select/select.d.ts +37 -0
- package/dist/components/sidebar/index.d.ts +4 -0
- package/dist/components/sidebar/sidebar-content.d.ts +4 -0
- package/dist/components/sidebar/sidebar-footer.d.ts +4 -0
- package/dist/components/sidebar/sidebar-header.d.ts +4 -0
- package/dist/components/sidebar/sidebar.d.ts +14 -0
- package/dist/components/skeleton/index.d.ts +1 -0
- package/dist/components/skeleton/skeleton.d.ts +3 -0
- package/dist/components/sparkline/index.d.ts +1 -0
- package/dist/components/sparkline/sparkline.d.ts +8 -0
- package/dist/components/spinner/index.d.ts +1 -0
- package/dist/components/spinner/spinner.d.ts +3 -0
- package/dist/components/stack/stack.d.ts +0 -0
- package/dist/components/stat/index.d.ts +1 -0
- package/dist/components/stat/stat.d.ts +15 -0
- package/dist/components/stepper/index.d.ts +2 -0
- package/dist/components/stepper/step.d.ts +3 -0
- package/dist/components/stepper/stepper.d.ts +3 -0
- package/dist/components/switch/index.d.ts +1 -0
- package/dist/components/switch/switch.d.ts +16 -0
- package/dist/components/tab/index.d.ts +3 -0
- package/dist/components/tab/tab-panel.d.ts +7 -0
- package/dist/components/tab/tab.d.ts +8 -0
- package/dist/components/tab/tabs.d.ts +9 -0
- package/dist/components/table/index.d.ts +7 -0
- package/dist/components/table/table-body.d.ts +3 -0
- package/dist/components/table/table-cell.d.ts +3 -0
- package/dist/components/table/table-column.d.ts +11 -0
- package/dist/components/table/table-head.d.ts +3 -0
- package/dist/components/table/table-header.d.ts +3 -0
- package/dist/components/table/table-row.d.ts +3 -0
- package/dist/components/table/table.d.ts +16 -0
- package/dist/components/tag-group/index.d.ts +1 -0
- package/dist/components/tag-group/tag-group.d.ts +10 -0
- package/dist/components/text/text.d.ts +0 -0
- package/dist/components/textarea/index.d.ts +1 -0
- package/dist/components/textarea/textarea.d.ts +23 -0
- package/dist/components/time-field/index.d.ts +1 -0
- package/dist/components/time-field/time-field.d.ts +15 -0
- package/dist/components/toast/index.d.ts +2 -0
- package/dist/components/toast/toast.d.ts +19 -0
- package/dist/components/tooltip/index.d.ts +1 -0
- package/dist/components/tooltip/tooltip.d.ts +9 -0
- package/dist/components/tree/index.d.ts +2 -0
- package/dist/components/tree/tree-item.d.ts +11 -0
- package/dist/components/tree/tree.d.ts +6 -0
- package/dist/components/wrap/wrap.d.ts +0 -0
- package/dist/components.js +117 -3127
- package/dist/components.js.map +1 -1
- package/dist/docs/blocks/chart-interactive.yaml +4 -10
- package/dist/docs/blocks/checkout-form.yaml +13 -13
- package/dist/docs/blocks/contributors.yaml +25 -26
- package/dist/docs/blocks/dashboard-layout.yaml +24 -42
- package/dist/docs/blocks/empty-state.yaml +4 -9
- package/dist/docs/blocks/env-variables.yaml +2 -2
- package/dist/docs/blocks/feature-upgrade.yaml +4 -4
- package/dist/docs/blocks/issue-assign.yaml +7 -7
- package/dist/docs/blocks/login-two-column.yaml +6 -6
- package/dist/docs/blocks/profile-card.yaml +12 -21
- package/dist/docs/blocks/settings-form.yaml +4 -4
- package/dist/docs/blocks/sidebar-nav.yaml +19 -19
- package/dist/docs/blocks/stat-cards.yaml +9 -26
- package/dist/docs/blocks/status-card.yaml +3 -3
- package/dist/docs/blocks/suggested-labs.yaml +4 -4
- package/dist/docs/blocks/survey-card.yaml +9 -9
- package/dist/docs/blocks/tabbed-panel.yaml +1 -1
- package/dist/docs/blocks/team-empty.yaml +6 -14
- package/dist/docs/blocks/usage-billing.yaml +12 -37
- package/dist/docs/components/accordion-item.yaml +13 -21
- package/dist/docs/components/accordion.yaml +23 -29
- package/dist/docs/components/agent-activity.yaml +27 -39
- package/dist/docs/components/agent-feed.yaml +15 -22
- package/dist/docs/components/agent-input.yaml +238 -0
- package/dist/docs/components/agent-message.yaml +29 -48
- package/dist/docs/components/agent-panel.yaml +21 -24
- package/dist/docs/components/agent-prompt.yaml +28 -46
- package/dist/docs/components/agent-seeds.yaml +15 -23
- package/dist/docs/components/agent-text.yaml +14 -24
- package/dist/docs/components/agent-thread.yaml +15 -24
- package/dist/docs/components/alert.yaml +81 -0
- package/dist/docs/components/avatar-group.yaml +113 -0
- package/dist/docs/components/avatar.yaml +99 -0
- package/dist/docs/components/badge.yaml +110 -0
- package/dist/docs/components/bar.yaml +84 -0
- package/dist/docs/components/breadcrumb-item.yaml +8 -17
- package/dist/docs/components/breadcrumb.yaml +60 -25
- package/dist/docs/components/button-group.yaml +93 -0
- package/dist/docs/components/button.yaml +177 -261
- package/dist/docs/components/calendar-picker.yaml +122 -0
- package/dist/docs/components/calendar-range-picker.yaml +121 -0
- package/dist/docs/components/calendar.yaml +11 -29
- package/dist/docs/components/canvas.yaml +44 -61
- package/dist/docs/components/checkbox.yaml +37 -49
- package/dist/docs/components/chip.yaml +125 -0
- package/dist/docs/components/code-block.yaml +127 -0
- package/dist/docs/components/code.yaml +37 -0
- package/dist/docs/components/color-area.yaml +119 -0
- package/dist/docs/components/color-field.yaml +121 -0
- package/dist/docs/components/color-picker.yaml +104 -0
- package/dist/docs/components/color-slider.yaml +153 -0
- package/dist/docs/components/color-swatch.yaml +98 -0
- package/dist/docs/components/command.yaml +13 -18
- package/dist/docs/components/container.yaml +83 -73
- package/dist/docs/components/content.yaml +100 -0
- package/dist/docs/components/context-menu.yaml +93 -0
- package/dist/docs/components/date-field.yaml +163 -0
- package/dist/docs/components/description-list.yaml +81 -0
- package/dist/docs/components/disclosure-group.yaml +88 -0
- package/dist/docs/components/disclosure.yaml +95 -0
- package/dist/docs/components/divider.yaml +63 -0
- package/dist/docs/components/dropdown-menu.yaml +137 -0
- package/dist/docs/components/feed.yaml +15 -24
- package/dist/docs/components/field.yaml +50 -71
- package/dist/docs/components/fieldset.yaml +92 -0
- package/dist/docs/components/footer.yaml +147 -0
- package/dist/docs/components/grid.yaml +87 -0
- package/dist/docs/components/gripper.yaml +11 -23
- package/dist/docs/components/header.yaml +168 -0
- package/dist/docs/components/heading.yaml +54 -0
- package/dist/docs/components/hover-card.yaml +77 -0
- package/dist/docs/components/icon.yaml +32 -65
- package/dist/docs/components/index.yaml +168 -0
- package/dist/docs/components/input-group.yaml +102 -0
- package/dist/docs/components/input-otp.yaml +20 -19
- package/dist/docs/components/input.yaml +103 -118
- package/dist/docs/components/inset.yaml +59 -0
- package/dist/docs/components/kbd.yaml +57 -0
- package/dist/docs/components/link.yaml +76 -0
- package/dist/docs/components/meter.yaml +78 -0
- package/dist/docs/components/nav-item.yaml +104 -0
- package/dist/docs/components/noodles.yaml +72 -104
- package/dist/docs/components/option.yaml +12 -23
- package/dist/docs/components/pagination.yaml +21 -18
- package/dist/docs/components/pane.yaml +18 -32
- package/dist/docs/components/panes.yaml +19 -27
- package/dist/docs/components/progress-circle.yaml +114 -0
- package/dist/docs/components/progress.yaml +88 -0
- package/dist/docs/components/radio-group.yaml +99 -40
- package/dist/docs/components/radio.yaml +40 -41
- package/dist/docs/components/range.yaml +24 -27
- package/dist/docs/components/segmented-control.yaml +58 -17
- package/dist/docs/components/select.yaml +80 -100
- package/dist/docs/components/skeleton.yaml +81 -0
- package/dist/docs/components/sparkline.yaml +71 -0
- package/dist/docs/components/spinner.yaml +74 -0
- package/dist/docs/components/stack.yaml +126 -0
- package/dist/docs/components/step.yaml +91 -0
- package/dist/docs/components/stepper.yaml +84 -0
- package/dist/docs/components/switch.yaml +36 -47
- package/dist/docs/components/tab-panel.yaml +27 -18
- package/dist/docs/components/tab.yaml +25 -22
- package/dist/docs/components/table-header.yaml +22 -12
- package/dist/docs/components/tabs.yaml +103 -20
- package/dist/docs/components/tag-group.yaml +106 -0
- package/dist/docs/components/text.yaml +67 -0
- package/dist/docs/components/textarea.yaml +43 -60
- package/dist/docs/components/time-field.yaml +161 -0
- package/dist/docs/components/toast.yaml +13 -30
- package/dist/docs/components/tooltip.yaml +56 -49
- package/dist/docs/components/tree-item.yaml +9 -10
- package/dist/docs/components/tree.yaml +127 -10
- package/dist/docs/components/wrap.yaml +60 -0
- package/dist/docs/traits/toggle-theme.yaml +34 -0
- package/dist/element/agent-element.d.ts +29 -0
- package/dist/element/context.d.ts +20 -0
- package/dist/element/define.d.ts +2 -0
- package/dist/element/index.d.ts +4 -0
- package/dist/element/types.d.ts +23 -0
- package/dist/element.js +1 -1
- package/dist/icons.d.ts +1 -0
- package/dist/icons.js +85 -59
- package/dist/icons.js.map +1 -1
- package/dist/reactivity.js +2 -2
- package/dist/register.d.ts +0 -0
- package/dist/register.js +417 -376
- package/dist/register.js.map +1 -1
- package/dist/store.js +1 -1
- package/dist/styles-entry.d.ts +0 -0
- package/dist/traits/attach.d.ts +12 -0
- package/dist/traits/auto-dismiss/auto-dismiss.d.ts +0 -0
- package/dist/traits/auto-dismiss/auto-dismiss.trait.d.ts +2 -0
- package/dist/traits/backtick-wrap/backtick-wrap.d.ts +0 -0
- package/dist/traits/backtick-wrap/backtick-wrap.trait.d.ts +2 -0
- package/dist/traits/clipboard/clipboard.d.ts +0 -0
- package/dist/traits/clipboard/clipboard.trait.d.ts +2 -0
- package/dist/traits/collapsible/collapsible.d.ts +0 -0
- package/dist/traits/collapsible/collapsible.trait.d.ts +2 -0
- package/dist/traits/confetti/confetti.d.ts +0 -0
- package/dist/traits/confetti/confetti.trait.d.ts +2 -0
- package/dist/traits/copy/copy.d.ts +0 -0
- package/dist/traits/copy/copy.trait.d.ts +2 -0
- package/dist/traits/css-inspect/css-inspect-controller.d.ts +38 -0
- package/dist/traits/css-inspect/css-inspect.d.ts +0 -0
- package/dist/traits/css-inspect/css-inspect.trait.d.ts +2 -0
- package/dist/traits/dismiss/dismiss.d.ts +0 -0
- package/dist/traits/dismiss/dismiss.trait.d.ts +2 -0
- package/dist/traits/drag/drag.d.ts +0 -0
- package/dist/traits/drag/drag.trait.d.ts +2 -0
- package/dist/traits/drop-zone/drop-zone.d.ts +0 -0
- package/dist/traits/drop-zone/drop-zone.trait.d.ts +2 -0
- package/dist/traits/edit/edit.d.ts +0 -0
- package/dist/traits/edit/edit.trait.d.ts +2 -0
- package/dist/traits/flip/flip.d.ts +0 -0
- package/dist/traits/flip/flip.trait.d.ts +2 -0
- package/dist/traits/gateway/gateway.d.ts +0 -0
- package/dist/traits/gateway/gateway.trait.d.ts +2 -0
- package/dist/traits/hover/hover.d.ts +0 -0
- package/dist/traits/hover/hover.trait.d.ts +2 -0
- package/dist/traits/index.d.ts +6 -0
- package/dist/traits/intersect/intersect.d.ts +0 -0
- package/dist/traits/intersect/intersect.trait.d.ts +2 -0
- package/dist/traits/link-paste/link-paste.d.ts +0 -0
- package/dist/traits/link-paste/link-paste.trait.d.ts +2 -0
- package/dist/traits/linked-scroll/linked-scroll.d.ts +0 -0
- package/dist/traits/linked-scroll/linked-scroll.trait.d.ts +2 -0
- package/dist/traits/list-navigate/list-navigate.d.ts +0 -0
- package/dist/traits/list-navigate/list-navigate.trait.d.ts +2 -0
- package/dist/traits/magnet/magnet.d.ts +0 -0
- package/dist/traits/magnet/magnet.trait.d.ts +2 -0
- package/dist/traits/mention/mention.d.ts +0 -0
- package/dist/traits/mention/mention.trait.d.ts +2 -0
- package/dist/traits/modal/modal.d.ts +0 -0
- package/dist/traits/modal/modal.trait.d.ts +2 -0
- package/dist/traits/noodle/noodle.d.ts +0 -0
- package/dist/traits/noodle/noodle.trait.d.ts +2 -0
- package/dist/traits/overlay/overlay.d.ts +0 -0
- package/dist/traits/overlay/overlay.trait.d.ts +3 -0
- package/dist/traits/pan-zoom/pan-zoom.d.ts +0 -0
- package/dist/traits/pan-zoom/pan-zoom.trait.d.ts +2 -0
- package/dist/traits/parallax/parallax.d.ts +0 -0
- package/dist/traits/parallax/parallax.trait.d.ts +2 -0
- package/dist/traits/parse.d.ts +3 -0
- package/dist/traits/persist/persist.d.ts +0 -0
- package/dist/traits/persist/persist.trait.d.ts +2 -0
- package/dist/traits/popover/overlay.d.ts +2 -0
- package/dist/traits/popover/popover.d.ts +0 -0
- package/dist/traits/popover/popover.trait.d.ts +2 -0
- package/dist/traits/present/present.d.ts +0 -0
- package/dist/traits/present/present.trait.d.ts +2 -0
- package/dist/traits/press-hold/press-hold.d.ts +0 -0
- package/dist/traits/press-hold/press-hold.trait.d.ts +2 -0
- package/dist/traits/range-select/range-select.d.ts +0 -0
- package/dist/traits/range-select/range-select.trait.d.ts +2 -0
- package/dist/traits/registry.d.ts +17 -0
- package/dist/traits/resize/resize.d.ts +0 -0
- package/dist/traits/resize/resize.trait.d.ts +2 -0
- package/dist/traits/ripple/ripple.d.ts +0 -0
- package/dist/traits/ripple/ripple.trait.d.ts +2 -0
- package/dist/traits/roving-focus/roving-focus.d.ts +0 -0
- package/dist/traits/roving-focus/roving-focus.trait.d.ts +2 -0
- package/dist/traits/search/search.d.ts +0 -0
- package/dist/traits/search/search.trait.d.ts +2 -0
- package/dist/traits/selection/selection.d.ts +0 -0
- package/dist/traits/selection/selection.trait.d.ts +2 -0
- package/dist/traits/shortcut/shortcut.d.ts +0 -0
- package/dist/traits/shortcut/shortcut.trait.d.ts +2 -0
- package/dist/traits/slash-command/slash-command.d.ts +0 -0
- package/dist/traits/slash-command/slash-command.trait.d.ts +2 -0
- package/dist/traits/snap-resize/snap-resize.d.ts +0 -0
- package/dist/traits/snap-resize/snap-resize.trait.d.ts +2 -0
- package/dist/traits/sort/sort.d.ts +0 -0
- package/dist/traits/sort/sort.trait.d.ts +2 -0
- package/dist/traits/store/store.d.ts +0 -0
- package/dist/traits/store/store.trait.d.ts +2 -0
- package/dist/traits/swipe/swipe.d.ts +0 -0
- package/dist/traits/swipe/swipe.trait.d.ts +2 -0
- package/dist/traits/text-trigger/text-trigger.d.ts +0 -0
- package/dist/traits/text-trigger/text-trigger.trait.d.ts +2 -0
- package/dist/traits/toast/toast.d.ts +0 -0
- package/dist/traits/toast/toast.trait.d.ts +2 -0
- package/dist/traits/toggle-scheme/toggle-scheme.d.ts +0 -0
- package/dist/traits/toggle-scheme/toggle-scheme.trait.d.ts +2 -0
- package/dist/traits/toggle-state/toggle-state.d.ts +0 -0
- package/dist/traits/toggle-state/toggle-state.trait.d.ts +2 -0
- package/dist/traits/toggle-theme/toggle-theme.d.ts +0 -0
- package/dist/traits/toggle-theme/toggle-theme.trait.d.ts +2 -0
- package/dist/traits/tooltip/tooltip.d.ts +0 -0
- package/dist/traits/tooltip/tooltip.trait.d.ts +2 -0
- package/dist/traits/toss/toss.d.ts +0 -0
- package/dist/traits/toss/toss.trait.d.ts +2 -0
- package/dist/traits/trap-focus/trap-focus.d.ts +0 -0
- package/dist/traits/trap-focus/trap-focus.trait.d.ts +2 -0
- package/dist/traits/types.d.ts +45 -0
- package/dist/traits/validate/validate.d.ts +0 -0
- package/dist/traits/validate/validate.trait.d.ts +2 -0
- package/dist/traits/virtual-scroll/virtual-scroll.d.ts +0 -0
- package/dist/traits/virtual-scroll/virtual-scroll.trait.d.ts +2 -0
- package/dist/traits.js +553 -510
- package/dist/traits.js.map +1 -1
- package/package.json +52 -13
package/dist/components.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"components.js","sources":["../src/components/button/button.ts","../src/components/input/input.ts","../src/components/input/input-otp.ts","../src/components/checkbox/checkbox.ts","../src/components/switch/switch.ts","../src/components/radio/radio.ts","../src/components/radio/radio-group.ts","../src/components/textarea/textarea.ts","../src/components/container/container.ts","../src/components/dialog/dialog.ts","../src/components/drawer/drawer.ts","../src/components/icon/icon.ts","../src/components/tooltip/tooltip.ts","../src/components/range/range.ts","../src/components/gripper/gripper.ts","../src/components/option/option.ts","../src/components/optgroup/optgroup.ts","../src/components/select/select.ts","../src/components/toast/toast.ts","../src/components/tab/tabs.ts","../src/components/tab/tab.ts","../src/components/tab/tab-panel.ts","../src/components/accordion/accordion.ts","../src/components/accordion/accordion-item.ts","../src/components/breadcrumb/breadcrumb.ts","../src/components/breadcrumb/breadcrumb-item.ts","../src/components/segmented-control/segmented-control.ts","../src/components/segmented-control/segment.ts","../src/components/pagination/pagination.ts","../src/components/command/command.ts","../src/components/command/command-empty.ts","../src/components/command/command-group.ts","../src/components/command/command-input.ts","../src/components/command/command-item.ts","../src/components/command/command-list.ts","../src/components/pane/panes.ts","../src/components/pane/pane.ts","../src/components/table/table.ts","../src/components/table/table-body.ts","../src/components/table/table-cell.ts","../src/components/table/table-head.ts","../src/components/table/table-header.ts","../src/components/table/table-row.ts","../src/components/tree/tree.ts","../src/components/tree/tree-item.ts","../src/components/feed/feed.ts","../src/components/root/root.ts","../src/components/app-shell/app-shell.ts","../src/components/page/page.ts","../src/components/page/page-main.ts","../src/components/page/page-context.ts","../src/components/sidebar/sidebar.ts","../src/components/sidebar/sidebar-header.ts","../src/components/sidebar/sidebar-content.ts","../src/components/sidebar/sidebar-footer.ts"],"sourcesContent":["// ── aui-button ───────────────────────────────────────────────\n//\n// Polymorphic action trigger.\n// Touches every API surface: variants, intents, sizes, density,\n// radius, slots (leading/trailing), hide-label, link mode, disabled,\n// loading, form association.\n//\n// This is intentionally the first real component — if the pattern\n// works here, it scales to every other component.\n\nimport { AgentElement } from '#element'\nimport type { AttributeSchema } from '#element'\n\nexport class AuiButton extends AgentElement {\n static override attributes: AttributeSchema = {\n disabled: { type: 'boolean', default: false },\n loading: { type: 'boolean', default: false },\n type: { type: 'enum', values: ['button', 'submit', 'reset'], default: 'button' },\n label: { type: 'string', default: '' },\n icon: { type: 'string', default: '' },\n 'icon-leading': { type: 'string', default: '' },\n 'icon-trailing': { type: 'string', default: '' },\n 'text-leading': { type: 'string', default: '' },\n 'text-trailing': { type: 'string', default: '' },\n href: { type: 'string', default: '' },\n }\n\n declare disabled: boolean\n declare loading: boolean\n declare type: 'button' | 'submit' | 'reset'\n declare label: string\n declare icon: string\n declare 'icon-leading': string\n declare 'icon-trailing': string\n declare 'text-leading': string\n declare 'text-trailing': string\n declare href: string\n\n #stampedLeading: HTMLElement | null = null\n #stampedLeadingText: HTMLElement | null = null\n #stampedTrailing: HTMLElement | null = null\n #stampedTrailingText: HTMLElement | null = null\n\n protected override activate(): void {\n this.addEventListener('click', this.#handleClick)\n this.addEventListener('keydown', this.#handleKeydown)\n\n if (!this.hasAttribute('tabindex')) {\n this.setAttribute('tabindex', '0')\n }\n\n this.setAttribute('role', 'button')\n\n // Detect inline text content (CSS can't see text nodes)\n const hasTextContent = Array.from(this.childNodes).some(\n n => n.nodeType === 3 && n.textContent!.trim()\n )\n if (hasTextContent) this.setAttribute('data-has-text', '')\n\n // Sync disabled → aria-disabled\n this.addEffect(() => {\n this.setAttribute('aria-disabled', String(this.disabled))\n this.setAttribute('tabindex', this.disabled ? '-1' : '0')\n })\n\n // Sync label → aria-label (CSS handles the visual via ::after)\n this.addEffect(() => {\n if (this.label) {\n this.setAttribute('aria-label', this.label)\n } else {\n this.removeAttribute('aria-label')\n }\n })\n\n // Stamp leading icon\n this.addEffect(() => {\n const name = this['icon-leading'] || this.icon\n const text = this['text-leading']\n if (name && !this.#stampedLeading) {\n this.#stampedLeading = document.createElement('aui-icon')\n this.#stampedLeading.setAttribute('slot', 'leading')\n this.prepend(this.#stampedLeading)\n }\n if (this.#stampedLeading) {\n if (name) {\n this.#stampedLeading.setAttribute('name', name)\n } else {\n this.#stampedLeading.remove()\n this.#stampedLeading = null\n }\n }\n // Stamp leading text as separate span\n if (text && !this.#stampedLeadingText) {\n this.#stampedLeadingText = document.createElement('span')\n this.#stampedLeadingText.setAttribute('slot', 'leading-text')\n const leading = this.#stampedLeading\n if (leading) leading.after(this.#stampedLeadingText)\n else this.prepend(this.#stampedLeadingText)\n }\n if (this.#stampedLeadingText) {\n if (text) {\n this.#stampedLeadingText.textContent = text\n } else {\n this.#stampedLeadingText.remove()\n this.#stampedLeadingText = null\n }\n }\n })\n\n // Stamp trailing icon\n this.addEffect(() => {\n const name = this['icon-trailing']\n const text = this['text-trailing']\n if (name && !this.#stampedTrailing) {\n this.#stampedTrailing = document.createElement('aui-icon')\n this.#stampedTrailing.setAttribute('slot', 'trailing')\n this.append(this.#stampedTrailing)\n }\n if (this.#stampedTrailing) {\n if (name) {\n this.#stampedTrailing.setAttribute('name', name)\n } else {\n this.#stampedTrailing.remove()\n this.#stampedTrailing = null\n }\n }\n // Stamp trailing text as separate span\n if (text && !this.#stampedTrailingText) {\n this.#stampedTrailingText = document.createElement('span')\n this.#stampedTrailingText.setAttribute('slot', 'trailing-text')\n const trailing = this.#stampedTrailing\n if (trailing) trailing.before(this.#stampedTrailingText)\n else this.append(this.#stampedTrailingText)\n }\n if (this.#stampedTrailingText) {\n if (text) {\n this.#stampedTrailingText.textContent = text\n } else {\n this.#stampedTrailingText.remove()\n this.#stampedTrailingText = null\n }\n }\n })\n }\n\n protected override dispose(): void {\n this.removeEventListener('click', this.#handleClick)\n this.removeEventListener('keydown', this.#handleKeydown)\n }\n\n #handleClick = (e: Event): void => {\n if ((this as any).disabled || (this as any).loading) {\n e.preventDefault()\n e.stopPropagation()\n return\n }\n\n // Link mode — navigate\n const href = (this as any).href as string\n if (href) {\n window.location.href = href\n return\n }\n\n // Form submit/reset\n const btnType = (this as any).type as string\n if (btnType === 'submit' || btnType === 'reset') {\n const form = this.closest('form')\n if (form) {\n if (btnType === 'submit') form.requestSubmit()\n else form.reset()\n }\n }\n }\n\n #handleKeydown = (e: KeyboardEvent): void => {\n if (e.key === 'Enter' || e.key === ' ') {\n e.preventDefault()\n this.click()\n }\n }\n}\n","// ── aui-input ────────────────────────────────────────────────\n//\n// Text input using contenteditable surface — no native <input>.\n//\n// Architecture (following native-ui pattern):\n// - Host element: flex container, owns visual chrome (border,\n// radius, padding) and slot layout (leading/trailing).\n// - Inner <span data-surface contenteditable=\"plaintext-only\">:\n// the actual editing surface. Separate from host because\n// contenteditable breaks when the editable element uses\n// display: flex with child elements.\n// - ElementInternals: form participation, constraint validation,\n// custom states (:state(empty) for placeholder).\n//\n// No <input>, <button>, or any native form element.\n\nimport { AgentElement } from '#element'\nimport type { AttributeSchema } from '#element'\n\nexport class AuiInput extends AgentElement {\n static formAssociated = true\n\n static override attributes: AttributeSchema = {\n disabled: { type: 'boolean', default: false },\n readonly: { type: 'boolean', default: false },\n required: { type: 'boolean', default: false },\n clearable: { type: 'boolean', default: false },\n autofocus: { type: 'boolean', default: false },\n type: { type: 'enum', values: ['text', 'email', 'password', 'search', 'url', 'tel', 'number'], default: 'text' },\n placeholder: { type: 'string', default: '' },\n value: { type: 'string', default: '' },\n name: { type: 'string', default: '' },\n pattern: { type: 'string', default: '' },\n maxlength: { type: 'string', default: '' },\n font: { type: 'string', default: 'sans' },\n }\n\n declare disabled: boolean\n declare readonly: boolean\n declare required: boolean\n declare clearable: boolean\n declare autofocus: boolean\n declare type: string\n declare placeholder: string\n declare value: string\n declare name: string\n declare pattern: string\n declare maxlength: string\n declare font: string\n\n #internals: ElementInternals\n #surface: HTMLElement | null = null\n #clearEl: HTMLElement | null = null\n #syncing = false\n\n constructor() {\n super()\n this.#internals = this.attachInternals()\n this.#internals.role = 'textbox'\n }\n\n protected override activate(): void {\n // Stamp the editing surface\n this.#surface = this.querySelector('[data-surface]')\n if (!this.#surface) {\n this.#surface = document.createElement('span')\n this.#surface.setAttribute('data-surface', '')\n this.#surface.setAttribute('contenteditable', 'plaintext-only')\n this.#surface.setAttribute('spellcheck', 'false')\n this.#surface.setAttribute('tabindex', '0')\n\n // Insert before trailing slot if present\n const trailing = this.querySelector('[slot=\"trailing\"]')\n if (trailing) {\n this.insertBefore(this.#surface, trailing)\n } else {\n this.appendChild(this.#surface)\n }\n }\n\n // Stamp clear indicator (not a <button>)\n if (this.clearable && !this.querySelector('[data-clear]')) {\n this.#clearEl = document.createElement('span')\n this.#clearEl.setAttribute('data-clear', '')\n this.#clearEl.setAttribute('role', 'button')\n this.#clearEl.setAttribute('tabindex', '-1')\n this.#clearEl.setAttribute('aria-label', 'Clear')\n this.#clearEl.textContent = '✕'\n const trailing = this.querySelector('[slot=\"trailing\"]')\n if (trailing) {\n this.insertBefore(this.#clearEl, trailing)\n } else {\n this.appendChild(this.#clearEl)\n }\n } else {\n this.#clearEl = this.querySelector('[data-clear]')\n }\n\n // Pre-fill value\n if (this.value && this.#surface) {\n this.#surface.textContent = this.value\n }\n\n // Sync reactive state\n this.addEffect(() => {\n const locked = this.disabled || this.readonly\n this.#surface?.setAttribute('contenteditable', locked ? 'false' : 'plaintext-only')\n\n if (this.disabled) {\n this.#surface?.setAttribute('tabindex', '-1')\n } else {\n this.#surface?.setAttribute('tabindex', '0')\n }\n\n // Sync placeholder to data attribute for CSS ::before\n this.#surface?.setAttribute('data-placeholder', this.placeholder || '')\n\n // Form internals\n this.#internals.setFormValue(this.value || null)\n this.#updateEmptyState()\n this.#validate()\n })\n\n // Sync value attribute → surface (only when not typing)\n this.addEffect(() => {\n const val = this.value\n if (!this.#syncing && this.#surface && this.#surface.textContent !== val) {\n this.#surface.textContent = val\n this.#updateEmptyState()\n }\n })\n\n // Events on surface\n this.#surface.addEventListener('input', this.#handleInput)\n this.#surface.addEventListener('keydown', this.#handleKeydown)\n this.#surface.addEventListener('focus', this.#handleFocus)\n this.#surface.addEventListener('blur', this.#handleBlur)\n this.#surface.addEventListener('paste', this.#handlePaste)\n\n // Click on wrapper focuses surface\n this.addEventListener('click', this.#handleWrapperClick)\n\n // Clear handler\n this.#clearEl?.addEventListener('click', this.#handleClear)\n\n // Autofocus\n if (this.autofocus) {\n requestAnimationFrame(() => this.#surface?.focus())\n }\n }\n\n protected override dispose(): void {\n this.#surface?.removeEventListener('input', this.#handleInput)\n this.#surface?.removeEventListener('keydown', this.#handleKeydown)\n this.#surface?.removeEventListener('focus', this.#handleFocus)\n this.#surface?.removeEventListener('blur', this.#handleBlur)\n this.#surface?.removeEventListener('paste', this.#handlePaste)\n this.removeEventListener('click', this.#handleWrapperClick)\n this.#clearEl?.removeEventListener('click', this.#handleClear)\n }\n\n // ── Public API ──────────────────────────────────────────\n\n focus(options?: FocusOptions): void {\n this.#surface?.focus(options)\n }\n\n blur(): void {\n this.#surface?.blur()\n }\n\n select(): void {\n if (!this.#surface) return\n const range = document.createRange()\n range.selectNodeContents(this.#surface)\n const sel = window.getSelection()\n sel?.removeAllRanges()\n sel?.addRange(range)\n }\n\n // ── Form callbacks ────────────────────────────────────\n\n formDisabledCallback(disabled: boolean): void {\n this.disabled = disabled\n }\n\n formResetCallback(): void {\n this.value = ''\n if (this.#surface) this.#surface.textContent = ''\n this.#updateEmptyState()\n }\n\n formStateRestoreCallback(state: string): void {\n this.value = state ?? ''\n if (this.#surface) this.#surface.textContent = this.value\n }\n\n // ── Internal ──────────────────────────────────────────\n\n #updateEmptyState(): void {\n const empty = !(this.#surface?.textContent?.trim())\n try {\n if (empty) {\n this.#internals.states?.add('empty')\n } else {\n this.#internals.states?.delete('empty')\n }\n } catch {\n // CustomStateSet not supported\n }\n // Fallback: data attribute for browsers without :state()\n this.toggleAttribute('data-input-empty', empty)\n }\n\n #validate(): void {\n if (this.required && !this.value?.trim()) {\n this.#internals.setValidity(\n { valueMissing: true },\n 'This field is required',\n this.#surface ?? undefined,\n )\n } else if (this.pattern && this.value) {\n try {\n const re = new RegExp(`^(?:${this.pattern})$`)\n if (!re.test(this.value)) {\n this.#internals.setValidity(\n { patternMismatch: true },\n `Please match the requested format`,\n this.#surface ?? undefined,\n )\n return\n }\n } catch { /* invalid regex — skip */ }\n this.#internals.setValidity({})\n } else {\n this.#internals.setValidity({})\n }\n }\n\n #resetCaretIfEmpty(): void {\n if (!this.#surface || this.#surface.textContent?.trim()) return\n const sel = window.getSelection()\n if (!sel) return\n sel.setPosition(this.#surface, 0)\n }\n\n // ── Event handlers ────────────────────────────────────\n\n #handleInput = (): void => {\n this.#syncing = true\n this.value = this.#surface?.textContent ?? ''\n this.#internals.setFormValue(this.value || null)\n this.#updateEmptyState()\n this.#syncing = false\n\n this.dispatchEvent(new Event('input', { bubbles: true, composed: true }))\n }\n\n #handleKeydown = (e: KeyboardEvent): void => {\n // Single-line: block Enter\n if (e.key === 'Enter') {\n e.preventDefault()\n // Submit form if inside one\n this.#internals.form?.requestSubmit()\n return\n }\n\n // Maxlength enforcement\n if (this.maxlength) {\n const max = parseInt(this.maxlength, 10)\n const len = this.#surface?.textContent?.length ?? 0\n if (len >= max && e.key.length === 1 && !e.ctrlKey && !e.metaKey) {\n const sel = window.getSelection()\n // Allow typing if there's a selection (will replace)\n if (!sel?.toString()) {\n e.preventDefault()\n }\n }\n }\n }\n\n #handleFocus = (): void => {\n this.#resetCaretIfEmpty()\n }\n\n #handleBlur = (): void => {\n this.dispatchEvent(new Event('change', { bubbles: true }))\n }\n\n #handlePaste = (e: ClipboardEvent): void => {\n // Enforce single-line: strip newlines from pasted content\n e.preventDefault()\n let text = e.clipboardData?.getData('text/plain') ?? ''\n text = text.replace(/[\\r\\n]+/g, ' ')\n\n // Maxlength enforcement on paste\n if (this.maxlength) {\n const max = parseInt(this.maxlength, 10)\n const current = this.#surface?.textContent?.length ?? 0\n const sel = window.getSelection()\n const selLen = sel?.toString().length ?? 0\n const available = max - current + selLen\n text = text.slice(0, Math.max(0, available))\n }\n\n document.execCommand('insertText', false, text)\n }\n\n #handleWrapperClick = (e: Event): void => {\n const target = e.target as HTMLElement\n if (target === this || target.getAttribute('slot') === 'leading') {\n this.#surface?.focus()\n this.#resetCaretIfEmpty()\n } else if (target === this.#surface) {\n // Clicking on the surface when empty (placeholder visible):\n // the caret may land after the ::before pseudo-element content.\n // Force it to position 0.\n this.#resetCaretIfEmpty()\n }\n }\n\n #handleClear = (e: Event): void => {\n e.stopPropagation()\n if (this.#surface) {\n this.#surface.textContent = ''\n }\n this.value = ''\n this.#internals.setFormValue(null)\n this.#updateEmptyState()\n this.#surface?.focus()\n this.dispatchEvent(new Event('input', { bubbles: true, composed: true }))\n this.dispatchEvent(new Event('change', { bubbles: true }))\n }\n}\n","// ── aui-input-otp ────────────────────────────────────────────\n//\n// Segmented OTP input — no native <input> elements.\n// Stamps N contenteditable spans as cells. Handles auto-advance,\n// backspace navigation, paste distribution.\n// Uses ElementInternals for form participation.\n\nimport { AgentElement } from '#element'\nimport type { AttributeSchema } from '#element'\n\nexport class AuiInputOtp extends AgentElement {\n static formAssociated = true\n\n static override attributes: AttributeSchema = {\n length: { type: 'string', default: '6' },\n disabled: { type: 'boolean', default: false },\n value: { type: 'string', default: '' },\n name: { type: 'string', default: '' },\n }\n\n declare length: string\n declare disabled: boolean\n declare value: string\n declare name: string\n\n #internals: ElementInternals\n #cells: HTMLElement[] = []\n\n constructor() {\n super()\n this.#internals = this.attachInternals()\n }\n\n protected override activate(): void {\n const len = parseInt(this.length, 10) || 6\n\n this.setAttribute('role', 'group')\n this.setAttribute('aria-label', 'One-time code')\n\n // Stamp cells\n for (let i = 0; i < len; i++) {\n const cell = document.createElement('span')\n cell.setAttribute('data-cell', String(i))\n cell.setAttribute('contenteditable', 'plaintext-only')\n cell.setAttribute('inputmode', 'numeric')\n cell.setAttribute('tabindex', '0')\n cell.setAttribute('aria-label', `Digit ${i + 1} of ${len}`)\n this.appendChild(cell)\n this.#cells.push(cell)\n }\n\n // Sync disabled\n this.addEffect(() => {\n for (const cell of this.#cells) {\n cell.setAttribute('contenteditable', this.disabled ? 'false' : 'plaintext-only')\n cell.setAttribute('tabindex', this.disabled ? '-1' : '0')\n }\n this.#internals.setFormValue(this.value || null)\n })\n\n // Pre-fill\n if (this.value) this.#distributeValue(this.value)\n\n // Wire events\n for (const cell of this.#cells) {\n cell.addEventListener('input', this.#handleCellInput)\n cell.addEventListener('keydown', this.#handleCellKeydown)\n cell.addEventListener('paste', this.#handlePaste)\n cell.addEventListener('focus', this.#handleFocus)\n }\n }\n\n protected override dispose(): void {\n for (const cell of this.#cells) {\n cell.removeEventListener('input', this.#handleCellInput)\n cell.removeEventListener('keydown', this.#handleCellKeydown)\n cell.removeEventListener('paste', this.#handlePaste)\n cell.removeEventListener('focus', this.#handleFocus)\n }\n this.#cells = []\n }\n\n formDisabledCallback(disabled: boolean): void { this.disabled = disabled }\n formResetCallback(): void { this.clear() }\n\n focus(options?: FocusOptions): void {\n const first = this.#cells.find(c => !c.textContent) ?? this.#cells[0]\n first?.focus(options)\n }\n\n clear(): void {\n for (const cell of this.#cells) cell.textContent = ''\n this.#syncValue()\n this.#cells[0]?.focus()\n }\n\n #distributeValue(val: string): void {\n for (let i = 0; i < this.#cells.length; i++) {\n this.#cells[i].textContent = val[i] ?? ''\n }\n }\n\n #syncValue(): void {\n const val = this.#cells.map(c => c.textContent ?? '').join('')\n this.value = val\n this.#internals.setFormValue(val || null)\n\n if (val.length === this.#cells.length) {\n this.dispatchEvent(new CustomEvent('aui:complete', { bubbles: true, detail: { value: val } }))\n }\n }\n\n #getCellIndex(cell: HTMLElement): number {\n return this.#cells.indexOf(cell)\n }\n\n #handleCellInput = (e: Event): void => {\n const cell = e.target as HTMLElement\n const idx = this.#getCellIndex(cell)\n\n // Keep only last character\n const text = cell.textContent ?? ''\n if (text.length > 1) {\n cell.textContent = text.slice(-1)\n }\n\n this.#syncValue()\n\n // Auto-advance\n if (cell.textContent && idx < this.#cells.length - 1) {\n this.#cells[idx + 1].focus()\n }\n }\n\n #handleCellKeydown = (e: KeyboardEvent): void => {\n const cell = e.target as HTMLElement\n const idx = this.#getCellIndex(cell)\n\n if (e.key === 'Backspace') {\n if (!cell.textContent && idx > 0) {\n e.preventDefault()\n this.#cells[idx - 1].textContent = ''\n this.#cells[idx - 1].focus()\n this.#syncValue()\n }\n } else if (e.key === 'ArrowLeft' && idx > 0) {\n e.preventDefault()\n this.#cells[idx - 1].focus()\n } else if (e.key === 'ArrowRight' && idx < this.#cells.length - 1) {\n e.preventDefault()\n this.#cells[idx + 1].focus()\n } else if (e.key === 'Enter') {\n e.preventDefault()\n }\n }\n\n #handlePaste = (e: ClipboardEvent): void => {\n e.preventDefault()\n const text = e.clipboardData?.getData('text') ?? ''\n const digits = text.replace(/\\D/g, '').slice(0, this.#cells.length)\n this.#distributeValue(digits)\n this.#syncValue()\n const focusIdx = Math.min(digits.length, this.#cells.length - 1)\n this.#cells[focusIdx]?.focus()\n }\n\n #handleFocus = (e: Event): void => {\n const cell = e.target as HTMLElement\n // Select all content in cell\n const range = document.createRange()\n range.selectNodeContents(cell)\n const sel = window.getSelection()\n sel?.removeAllRanges()\n sel?.addRange(range)\n }\n}\n","// ── aui-checkbox ─────────────────────────────────────────────\n//\n// Custom checkbox — no native <input>.\n// Uses ElementInternals for form participation.\n// Visual box + check icon via CSS pseudo-element.\n\nimport { AgentElement } from '#element'\nimport type { AttributeSchema } from '#element'\n\nexport class AuiCheckbox extends AgentElement {\n static formAssociated = true\n\n static override attributes: AttributeSchema = {\n disabled: { type: 'boolean', default: false },\n checked: { type: 'boolean', default: false },\n indeterminate: { type: 'boolean', default: false },\n required: { type: 'boolean', default: false },\n label: { type: 'string', default: '' },\n name: { type: 'string', default: '' },\n value: { type: 'string', default: 'on' },\n }\n\n declare disabled: boolean\n declare checked: boolean\n declare indeterminate: boolean\n declare required: boolean\n declare label: string\n declare name: string\n declare value: string\n\n #internals: ElementInternals\n\n constructor() {\n super()\n this.#internals = this.attachInternals()\n this.#internals.role = 'checkbox'\n }\n\n protected override activate(): void {\n // Stamp visual box\n if (!this.querySelector('[data-box]')) {\n const box = document.createElement('span')\n box.setAttribute('data-box', '')\n this.prepend(box)\n }\n\n // Sync state\n this.addEffect(() => {\n this.setAttribute('aria-checked', this.indeterminate ? 'mixed' : String(this.checked))\n this.setAttribute('aria-disabled', String(this.disabled))\n\n // Form value\n this.#internals.setFormValue(this.checked ? (this.value || 'on') : null)\n\n // Validation\n if (this.required && !this.checked) {\n this.#internals.setValidity({ valueMissing: true }, 'Please check this box')\n } else {\n this.#internals.setValidity({})\n }\n })\n\n // Sync label → aria-label\n this.addEffect(() => {\n if (this.label) this.setAttribute('aria-label', this.label)\n else this.removeAttribute('aria-label')\n })\n\n if (!this.hasAttribute('tabindex')) {\n this.setAttribute('tabindex', '0')\n }\n\n this.addEventListener('click', this.#handleClick)\n this.addEventListener('keydown', this.#handleKeydown)\n }\n\n protected override dispose(): void {\n this.removeEventListener('click', this.#handleClick)\n this.removeEventListener('keydown', this.#handleKeydown)\n }\n\n formDisabledCallback(disabled: boolean): void { this.disabled = disabled }\n formResetCallback(): void { this.checked = false; this.indeterminate = false }\n\n #toggle(): void {\n if (this.disabled) return\n this.indeterminate = false\n this.checked = !this.checked\n this.dispatchEvent(new Event('change', { bubbles: true }))\n }\n\n #handleClick = (e: Event): void => {\n e.preventDefault()\n this.#toggle()\n }\n\n #handleKeydown = (e: KeyboardEvent): void => {\n if (e.key === ' ' || e.key === 'Enter') {\n e.preventDefault()\n this.#toggle()\n }\n }\n}\n","// ── aui-switch ──────────────────────────────────────────────\n//\n// Toggle switch — no native <input>.\n// Uses ElementInternals for form participation.\n// Visual track + thumb via CSS pseudo-element.\n\nimport { AgentElement } from '#element'\nimport type { AttributeSchema } from '#element'\n\nexport class AuiSwitch extends AgentElement {\n static formAssociated = true\n\n static override attributes: AttributeSchema = {\n disabled: { type: 'boolean', default: false },\n checked: { type: 'boolean', default: false },\n label: { type: 'string', default: '' },\n name: { type: 'string', default: '' },\n value: { type: 'string', default: 'on' },\n }\n\n declare disabled: boolean\n declare checked: boolean\n declare label: string\n declare name: string\n declare value: string\n\n #internals: ElementInternals\n\n constructor() {\n super()\n this.#internals = this.attachInternals()\n this.#internals.role = 'switch'\n }\n\n protected override activate(): void {\n // Stamp track\n if (!this.querySelector('[data-track]')) {\n const track = document.createElement('span')\n track.setAttribute('data-track', '')\n this.prepend(track)\n }\n\n this.addEffect(() => {\n this.setAttribute('aria-checked', String(this.checked))\n this.setAttribute('aria-disabled', String(this.disabled))\n this.#internals.setFormValue(this.checked ? (this.value || 'on') : null)\n })\n\n // Sync label → aria-label (CSS handles visual via ::after)\n this.addEffect(() => {\n if (this.label) this.setAttribute('aria-label', this.label)\n else this.removeAttribute('aria-label')\n })\n\n if (!this.hasAttribute('tabindex')) {\n this.setAttribute('tabindex', '0')\n }\n\n this.addEventListener('click', this.#handleClick)\n this.addEventListener('keydown', this.#handleKeydown)\n }\n\n protected override dispose(): void {\n this.removeEventListener('click', this.#handleClick)\n this.removeEventListener('keydown', this.#handleKeydown)\n }\n\n formDisabledCallback(disabled: boolean): void { this.disabled = disabled }\n formResetCallback(): void { this.checked = false }\n\n #toggle(): void {\n if (this.disabled) return\n this.checked = !this.checked\n this.dispatchEvent(new Event('change', { bubbles: true }))\n }\n\n #handleClick = (e: Event): void => {\n e.preventDefault()\n this.#toggle()\n }\n\n #handleKeydown = (e: KeyboardEvent): void => {\n if (e.key === ' ' || e.key === 'Enter') {\n e.preventDefault()\n this.#toggle()\n }\n }\n}\n","// ── aui-radio ───────────────────────────────────────────────\n//\n// Radio button — no native <input>.\n// Uses ElementInternals for form participation.\n// Selection coordination via aui-radio-group.\n\nimport { AgentElement } from '#element'\nimport type { AttributeSchema } from '#element'\n\nexport class AuiRadio extends AgentElement {\n static formAssociated = true\n\n static override attributes: AttributeSchema = {\n disabled: { type: 'boolean', default: false },\n checked: { type: 'boolean', default: false },\n required: { type: 'boolean', default: false },\n label: { type: 'string', default: '' },\n name: { type: 'string', default: '' },\n value: { type: 'string', default: '' },\n }\n\n declare disabled: boolean\n declare checked: boolean\n declare required: boolean\n declare label: string\n declare name: string\n declare value: string\n\n #internals: ElementInternals\n\n constructor() {\n super()\n this.#internals = this.attachInternals()\n this.#internals.role = 'radio'\n }\n\n protected override activate(): void {\n // Stamp visual circle\n if (!this.querySelector('[data-circle]')) {\n const circle = document.createElement('span')\n circle.setAttribute('data-circle', '')\n this.prepend(circle)\n }\n\n this.addEffect(() => {\n this.setAttribute('aria-checked', String(this.checked))\n this.setAttribute('aria-disabled', String(this.disabled))\n this.#internals.setFormValue(this.checked ? (this.value || '') : null)\n })\n\n // Sync label → aria-label (CSS handles visual via ::after)\n this.addEffect(() => {\n if (this.label) this.setAttribute('aria-label', this.label)\n else this.removeAttribute('aria-label')\n })\n\n if (!this.hasAttribute('tabindex')) {\n this.setAttribute('tabindex', '0')\n }\n\n this.addEventListener('click', this.#handleClick)\n this.addEventListener('keydown', this.#handleKeydown)\n }\n\n protected override dispose(): void {\n this.removeEventListener('click', this.#handleClick)\n this.removeEventListener('keydown', this.#handleKeydown)\n }\n\n formDisabledCallback(disabled: boolean): void { this.disabled = disabled }\n formResetCallback(): void { this.checked = false }\n\n #select(): void {\n if (this.disabled || this.checked) return\n this.checked = true\n this.dispatchEvent(new Event('change', { bubbles: true }))\n }\n\n #handleClick = (e: Event): void => {\n e.preventDefault()\n this.#select()\n }\n\n #handleKeydown = (e: KeyboardEvent): void => {\n if (e.key === ' ' || e.key === 'Enter') {\n e.preventDefault()\n this.#select()\n }\n }\n}\n","// ── aui-radio-group ─────────────────────────────────────────\n//\n// Container that coordinates aui-radio children.\n// Manages name propagation, single-selection enforcement,\n// and keyboard navigation (arrow keys).\n\nimport { AgentElement } from '#element'\nimport type { AttributeSchema } from '#element'\n\nexport class AuiRadioGroup extends AgentElement {\n static override attributes: AttributeSchema = {\n disabled: { type: 'boolean', default: false },\n name: { type: 'string', default: '' },\n value: { type: 'string', default: '' },\n }\n\n declare disabled: boolean\n declare name: string\n declare value: string\n\n protected override activate(): void {\n this.setAttribute('role', 'radiogroup')\n\n // Propagate name and disabled to child radios\n this.addEffect(() => {\n for (const radio of this.#radios()) {\n if (this.name) radio.setAttribute('name', this.name)\n if (this.disabled) {\n radio.setAttribute('disabled', '')\n }\n }\n })\n\n // Sync value → check the matching radio\n this.addEffect(() => {\n if (!this.value) return\n for (const radio of this.#radios()) {\n const isMatch = radio.getAttribute('value') === this.value\n if (isMatch && !radio.hasAttribute('checked')) {\n radio.setAttribute('checked', '')\n } else if (!isMatch && radio.hasAttribute('checked')) {\n radio.removeAttribute('checked')\n }\n }\n })\n\n // Listen for change events from child radios\n this.addEventListener('change', this.#handleChange)\n this.addEventListener('keydown', this.#handleKeydown)\n }\n\n protected override dispose(): void {\n this.removeEventListener('change', this.#handleChange)\n this.removeEventListener('keydown', this.#handleKeydown)\n }\n\n #radios(): HTMLElement[] {\n return Array.from(this.querySelectorAll('aui-radio'))\n }\n\n #handleChange = (e: Event): void => {\n const target = e.target as HTMLElement\n if (target.tagName !== 'AUI-RADIO') return\n\n const val = target.getAttribute('value') || ''\n this.value = val\n\n // Uncheck siblings\n for (const radio of this.#radios()) {\n if (radio !== target && radio.hasAttribute('checked')) {\n radio.removeAttribute('checked')\n }\n }\n }\n\n #handleKeydown = (e: KeyboardEvent): void => {\n const radios = this.#radios().filter(r => !r.hasAttribute('disabled'))\n if (radios.length === 0) return\n\n const current = radios.findIndex(r => r.hasAttribute('checked'))\n let next = -1\n\n switch (e.key) {\n case 'ArrowDown':\n case 'ArrowRight':\n e.preventDefault()\n next = current < radios.length - 1 ? current + 1 : 0\n break\n case 'ArrowUp':\n case 'ArrowLeft':\n e.preventDefault()\n next = current > 0 ? current - 1 : radios.length - 1\n break\n default:\n return\n }\n\n if (next >= 0) {\n radios[next].click()\n radios[next].focus()\n }\n }\n}\n","// ── aui-textarea ────────────────────────────────────────────\n//\n// Multi-line text input using contenteditable — no native <textarea>.\n// Stamps a div[data-surface] as the editing area.\n// Supports autogrow via scrollHeight measurement.\n\nimport { AgentElement } from '#element'\nimport type { AttributeSchema } from '#element'\n\nexport class AuiTextarea extends AgentElement {\n static formAssociated = true\n\n static override attributes: AttributeSchema = {\n disabled: { type: 'boolean', default: false },\n readonly: { type: 'boolean', default: false },\n required: { type: 'boolean', default: false },\n autogrow: { type: 'boolean', default: false },\n autofocus: { type: 'boolean', default: false },\n placeholder: { type: 'string', default: '' },\n value: { type: 'string', default: '' },\n name: { type: 'string', default: '' },\n rows: { type: 'string', default: '3' },\n maxlength: { type: 'string', default: '' },\n }\n\n declare disabled: boolean\n declare readonly: boolean\n declare required: boolean\n declare autogrow: boolean\n declare autofocus: boolean\n declare placeholder: string\n declare value: string\n declare name: string\n declare rows: string\n declare maxlength: string\n\n #internals: ElementInternals\n #surface: HTMLElement | null = null\n #syncing = false\n #autogrowRaf: number | null = null\n\n constructor() {\n super()\n this.#internals = this.attachInternals()\n this.#internals.role = 'textbox'\n this.#internals.ariaMultiLine = 'true'\n }\n\n protected override activate(): void {\n this.#surface = this.querySelector('[data-surface]')\n if (!this.#surface) {\n this.#surface = document.createElement('div')\n this.#surface.setAttribute('data-surface', '')\n this.#surface.setAttribute('contenteditable', 'plaintext-only')\n this.#surface.setAttribute('spellcheck', 'false')\n this.#surface.setAttribute('tabindex', '0')\n this.appendChild(this.#surface)\n }\n\n if (this.value && this.#surface) {\n this.#surface.textContent = this.value\n }\n\n this.addEffect(() => {\n const locked = this.disabled || this.readonly\n this.#surface?.setAttribute('contenteditable', locked ? 'false' : 'plaintext-only')\n this.#surface?.setAttribute('tabindex', this.disabled ? '-1' : '0')\n this.#surface?.setAttribute('data-placeholder', this.placeholder || '')\n\n const rows = parseInt(this.rows, 10) || 3\n this.style.setProperty('--_rows', String(rows))\n\n this.#internals.setFormValue(this.value || null)\n this.#updateEmptyState()\n })\n\n this.addEffect(() => {\n const val = this.value\n if (!this.#syncing && this.#surface && this.#surface.textContent !== val) {\n this.#surface.textContent = val\n this.#updateEmptyState()\n if (this.autogrow) this.#autoResize()\n }\n })\n\n this.#surface.addEventListener('input', this.#handleInput)\n this.#surface.addEventListener('blur', this.#handleBlur)\n this.addEventListener('click', this.#handleWrapperClick)\n\n if (this.autofocus) {\n requestAnimationFrame(() => this.#surface?.focus())\n }\n }\n\n protected override dispose(): void {\n this.#surface?.removeEventListener('input', this.#handleInput)\n this.#surface?.removeEventListener('blur', this.#handleBlur)\n this.removeEventListener('click', this.#handleWrapperClick)\n if (this.#autogrowRaf !== null) cancelAnimationFrame(this.#autogrowRaf)\n }\n\n focus(options?: FocusOptions): void { this.#surface?.focus(options) }\n blur(): void { this.#surface?.blur() }\n\n formDisabledCallback(disabled: boolean): void { this.disabled = disabled }\n formResetCallback(): void {\n this.value = ''\n if (this.#surface) this.#surface.textContent = ''\n this.#updateEmptyState()\n }\n\n #updateEmptyState(): void {\n const empty = !(this.#surface?.textContent?.trim())\n try {\n if (empty) this.#internals.states?.add('empty')\n else this.#internals.states?.delete('empty')\n } catch { /* CustomStateSet not supported */ }\n this.toggleAttribute('data-input-empty', empty)\n }\n\n #autoResize(): void {\n if (this.#autogrowRaf !== null) cancelAnimationFrame(this.#autogrowRaf)\n this.#autogrowRaf = requestAnimationFrame(() => {\n if (!this.#surface) return\n this.#surface.style.height = 'auto'\n this.#surface.style.height = this.#surface.scrollHeight + 'px'\n })\n }\n\n #handleInput = (): void => {\n this.#syncing = true\n this.value = this.#surface?.textContent ?? ''\n this.#internals.setFormValue(this.value || null)\n this.#updateEmptyState()\n if (this.autogrow) this.#autoResize()\n this.#syncing = false\n this.dispatchEvent(new Event('input', { bubbles: true, composed: true }))\n }\n\n #handleBlur = (): void => {\n this.dispatchEvent(new Event('change', { bubbles: true }))\n }\n\n #handleWrapperClick = (e: Event): void => {\n if (e.target === this) this.#surface?.focus()\n }\n}\n","// ── aui-container ────────────────────────────────────────────\n//\n// Unified card/panel surface. Minimal JS — just interactive\n// card behavior (click-to-navigate) when [interactive] is set.\n\nimport { AgentElement } from '#element'\nimport type { AttributeSchema } from '#element'\n\nexport class AuiContainer extends AgentElement {\n static override attributes: AttributeSchema = {\n bordered: { type: 'boolean', default: false },\n elevation: { type: 'string', default: '' },\n interactive: { type: 'boolean', default: false },\n href: { type: 'string', default: '' },\n }\n\n declare bordered: boolean\n declare elevation: string\n declare interactive: boolean\n declare href: string\n\n protected override activate(): void {\n if (this.interactive) {\n if (!this.hasAttribute('tabindex')) {\n this.setAttribute('tabindex', '0')\n }\n this.setAttribute('role', 'button')\n this.addEventListener('click', this.#handleClick)\n this.addEventListener('keydown', this.#handleKeydown)\n }\n }\n\n protected override dispose(): void {\n this.removeEventListener('click', this.#handleClick)\n this.removeEventListener('keydown', this.#handleKeydown)\n }\n\n #handleClick = (): void => {\n if (this.href) {\n window.location.href = this.href\n }\n }\n\n #handleKeydown = (e: KeyboardEvent): void => {\n if ((e.key === 'Enter' || e.key === ' ') && this.href) {\n e.preventDefault()\n window.location.href = this.href\n }\n }\n}\n","// ── aui-dialog ──────────────────────────────────────────────\n//\n// Modal dialog using native <dialog> element.\n//\n// Pattern: <dialog> is a full-viewport shell (inset: 0, transparent).\n// Content wrapper [data-dialog-content] is absolutely positioned\n// inside and centered. Backdrop fades via ::backdrop.\n// Native <dialog> handles focus trapping and Escape key.\n//\n// Animations: content scales up + fades in, backdrop overlay fades.\n// Exit animation plays before dialog.close() via [data-dialog-closing].\n\nimport { AgentElement } from '#element'\nimport type { AttributeSchema } from '#element'\n\nfunction getDuration(el: Element): number {\n const raw = getComputedStyle(el).getPropertyValue('--aui-duration').trim()\n return parseFloat(raw) || 200\n}\n\nexport class AuiDialog extends AgentElement {\n static override attributes: AttributeSchema = {\n open: { type: 'boolean', default: false },\n size: { type: 'enum', values: ['sm', 'lg', 'xl', 'full'], default: '' },\n }\n\n declare open: boolean\n declare size: string\n\n #dialog: HTMLDialogElement | null = null\n #content: HTMLElement | null = null\n #closing = false\n\n get dialogElement(): HTMLDialogElement | null {\n return this.#dialog\n }\n\n #ensureDialog(): HTMLDialogElement {\n if (this.#dialog) return this.#dialog\n\n // Find or create the <dialog> shell\n this.#dialog = this.querySelector('dialog')\n if (!this.#dialog) {\n this.#dialog = document.createElement('dialog')\n\n // Create content wrapper inside the dialog\n this.#content = document.createElement('div')\n this.#content.setAttribute('data-dialog-content', '')\n\n // Move all children into the content wrapper\n while (this.firstChild && this.firstChild !== this.#dialog) {\n this.#content.appendChild(this.firstChild)\n }\n\n this.#dialog.appendChild(this.#content)\n this.appendChild(this.#dialog)\n } else {\n this.#content = this.#dialog.querySelector('[data-dialog-content]')\n }\n\n this.#dialog.addEventListener('cancel', this.#handleCancel)\n this.#dialog.addEventListener('close', this.#handleClose)\n this.#dialog.addEventListener('click', this.#handleBackdropClick)\n return this.#dialog\n }\n\n protected override activate(): void {\n this.#ensureDialog()\n\n this.addEffect(() => {\n if (this.open) {\n this.show()\n } else {\n this.hide()\n }\n })\n }\n\n protected override dispose(): void {\n this.#dialog?.removeEventListener('cancel', this.#handleCancel)\n this.#dialog?.removeEventListener('close', this.#handleClose)\n this.#dialog?.removeEventListener('click', this.#handleBackdropClick)\n }\n\n // ── Public API ──────────────────────────────────────────\n\n show(): void {\n const dialog = this.#ensureDialog()\n if (dialog.open) return\n\n dialog.showModal()\n\n // Trigger entry animation on next frame\n requestAnimationFrame(() => {\n dialog.setAttribute('data-dialog-open', '')\n })\n\n if (!this.hasAttribute('open')) {\n this.setAttribute('open', '')\n }\n }\n\n hide(): void {\n if (!this.#dialog || !this.#dialog.open || this.#closing) return\n\n this.#closing = true\n this.#dialog.removeAttribute('data-dialog-open')\n this.#dialog.setAttribute('data-dialog-closing', '')\n\n setTimeout(() => {\n this.#closing = false\n this.#dialog?.removeAttribute('data-dialog-closing')\n this.#dialog?.close()\n\n }, getDuration(this))\n }\n\n // ── Internal ────────────────────────────────────────────\n\n #handleCancel = (e: Event): void => {\n e.preventDefault()\n this.hide()\n }\n\n #handleClose = (): void => {\n this.removeAttribute('open')\n this.dispatchEvent(new Event('close', { bubbles: true }))\n }\n\n #handleBackdropClick = (e: MouseEvent): void => {\n // With full-viewport dialog, clicking outside the content panel\n // means clicking on the transparent dialog shell itself\n if (e.target === this.#dialog) {\n this.hide()\n }\n }\n}\n","// ── aui-drawer ──────────────────────────────────────────────\n//\n// Slide-out panel anchored to a viewport edge.\n//\n// Pattern: <dialog> is a full-viewport shell (inset: 0, transparent).\n// Content wrapper [data-drawer-content] is absolutely positioned\n// against one edge. Native <dialog> handles focus trapping,\n// Escape key, and ::backdrop.\n//\n// Animations: content slides in/out, backdrop overlay fades.\n// Exit animation plays before dialog.close() via [data-drawer-closing].\n\nimport { AgentElement } from '#element'\nimport type { AttributeSchema } from '#element'\n\nfunction getDuration(el: Element): number {\n const raw = getComputedStyle(el).getPropertyValue('--aui-duration').trim()\n return parseFloat(raw) || 200\n}\n\nexport class AuiDrawer extends AgentElement {\n static override attributes: AttributeSchema = {\n open: { type: 'boolean', default: false },\n side: { type: 'enum', values: ['left', 'right', 'top', 'bottom'], default: 'right' },\n 'scroll-lock': { type: 'boolean', default: false },\n }\n\n declare open: boolean\n declare side: string\n declare 'scroll-lock': boolean\n\n #dialog: HTMLDialogElement | null = null\n #content: HTMLElement | null = null\n #closing = false\n\n get dialogElement(): HTMLDialogElement | null {\n return this.#dialog\n }\n\n #ensureDialog(): HTMLDialogElement {\n if (this.#dialog) return this.#dialog\n\n this.#dialog = this.querySelector('dialog')\n if (!this.#dialog) {\n this.#dialog = document.createElement('dialog')\n\n // Create content wrapper inside the dialog\n this.#content = document.createElement('div')\n this.#content.setAttribute('data-drawer-content', '')\n\n // Move all children into the content wrapper\n while (this.firstChild && this.firstChild !== this.#dialog) {\n this.#content.appendChild(this.firstChild)\n }\n\n this.#dialog.appendChild(this.#content)\n this.appendChild(this.#dialog)\n } else {\n this.#content = this.#dialog.querySelector('[data-drawer-content]')\n }\n\n this.#dialog.addEventListener('cancel', this.#handleCancel)\n this.#dialog.addEventListener('close', this.#handleClose)\n this.#dialog.addEventListener('click', this.#handleBackdropClick)\n return this.#dialog\n }\n\n protected override activate(): void {\n this.#ensureDialog()\n\n this.addEffect(() => {\n if (this.open) {\n this.show()\n } else {\n this.hide()\n }\n })\n }\n\n protected override dispose(): void {\n if (this.#dialog) {\n this.#dialog.removeEventListener('cancel', this.#handleCancel)\n this.#dialog.removeEventListener('close', this.#handleClose)\n this.#dialog.removeEventListener('click', this.#handleBackdropClick)\n }\n }\n\n show(): void {\n const dialog = this.#ensureDialog()\n if (dialog.open) return\n\n if (this['scroll-lock']) {\n document.documentElement.style.overflow = 'hidden'\n }\n\n dialog.showModal()\n\n // Trigger entry animation on next frame\n requestAnimationFrame(() => {\n dialog.setAttribute('data-drawer-open', '')\n })\n\n if (!this.hasAttribute('open')) {\n this.setAttribute('open', '')\n }\n }\n\n hide(): void {\n if (!this.#dialog || !this.#dialog.open || this.#closing) return\n\n this.#closing = true\n this.#dialog.removeAttribute('data-drawer-open')\n this.#dialog.setAttribute('data-drawer-closing', '')\n\n setTimeout(() => {\n this.#closing = false\n this.#dialog?.removeAttribute('data-drawer-closing')\n this.#dialog?.close()\n\n if (this['scroll-lock'] && !document.querySelector('dialog[open]')) {\n document.documentElement.style.overflow = ''\n }\n }, getDuration(this))\n }\n\n #handleCancel = (e: Event): void => {\n // Intercept Escape key — prevent instant close so we can animate out\n e.preventDefault()\n this.hide()\n }\n\n #handleClose = (): void => {\n if (this['scroll-lock'] && !document.querySelector('dialog[open]')) {\n document.documentElement.style.overflow = ''\n }\n this.removeAttribute('open')\n this.dispatchEvent(new Event('close', { bubbles: true }))\n }\n\n #handleBackdropClick = (e: MouseEvent): void => {\n // With full-viewport dialog, clicking outside the content panel\n // means clicking on the transparent dialog shell itself\n if (e.target === this.#dialog) {\n this.hide()\n }\n }\n}\n","// ── aui-icon ─────────────────────────────────────────────────\n//\n// Renders an SVG icon from registry lookup, URL fetch, or inline child.\n//\n// Sources (in priority order):\n// 1. name=\"flask\" — lookup from global icon registry\n// 2. src=\"/icons/x.svg\" — fetch SVG from URL\n// 3. <svg> child — inline SVG (no attribute needed)\n//\n// Label:\n// label=\"Intelligence\" — renders text via ::after (CSS)\n// Also sets aria-label for accessibility.\n\nimport { AgentElement } from '#element'\nimport type { AttributeSchema } from '#element'\nimport { getIcon, onRegistryChange } from './registry.ts'\n\n// Cache fetched SVGs by URL\nconst fetchCache = new Map<string, string>()\n\nexport class AuiIcon extends AgentElement {\n static override attributes: AttributeSchema = {\n name: { type: 'string', default: '' },\n src: { type: 'string', default: '' },\n label: { type: 'string', default: '' },\n 'text-leading': { type: 'string', default: '' },\n 'text-trailing': { type: 'string', default: '' },\n }\n\n declare name: string\n declare src: string\n declare label: string\n declare 'text-leading': string\n declare 'text-trailing': string\n\n #registryDispose: (() => void) | null = null\n #hasInlineChild = false\n\n protected override activate(): void {\n // Check for inline SVG child (before we render anything)\n this.#hasInlineChild = this.querySelector('svg') !== null\n\n // Accessibility\n this.addEffect(() => {\n const text = this.label || this['text-leading'] || this['text-trailing']\n if (text) {\n this.setAttribute('role', 'img')\n this.setAttribute('aria-label', text)\n } else {\n this.setAttribute('role', 'presentation')\n this.setAttribute('aria-hidden', 'true')\n this.removeAttribute('aria-label')\n }\n })\n\n // Render from registry or src (skip if inline SVG child exists)\n this.addEffect(() => {\n if (this.#hasInlineChild) return\n\n const key = this.name\n if (key) {\n this.#renderFromRegistry(key)\n } else if (this.src) {\n this.#renderFromSrc(this.src)\n }\n })\n\n // Re-render when registry changes (late-registered icons)\n this.#registryDispose = onRegistryChange(() => {\n if (this.#hasInlineChild) return\n const key = this.name\n if (key && !this.querySelector('svg')) {\n this.#renderFromRegistry(key)\n }\n })\n }\n\n protected override dispose(): void {\n this.#registryDispose?.()\n this.#registryDispose = null\n }\n\n #renderFromRegistry(key: string): void {\n const svg = getIcon(key)\n if (svg) this.#setSvg(svg)\n }\n\n async #renderFromSrc(url: string): Promise<void> {\n const cached = fetchCache.get(url)\n if (cached) { this.#setSvg(cached); return }\n\n try {\n const res = await fetch(url)\n if (!res.ok) return\n const text = await res.text()\n if (!text.includes('<svg')) return\n fetchCache.set(url, text)\n // Only apply if src hasn't changed during fetch\n if (this.src === url) this.#setSvg(text)\n } catch {}\n }\n\n #setSvg(svg: string): void {\n // Preserve existing ::after by only replacing SVG content\n const existing = this.querySelector('svg')\n if (existing) existing.remove()\n\n const template = document.createElement('template')\n template.innerHTML = svg\n const svgEl = template.content.firstElementChild\n if (svgEl) this.prepend(svgEl)\n }\n}\n","// ── aui-tooltip ──────────────────────────────────────────────\n//\n// Hover/focus tooltip using the Popover API.\n// Renders as a sibling to its anchor element. The previous\n// sibling (or parent) is auto-discovered as the anchor.\n//\n// Uses CSS anchor positioning for placement. The popover\n// surfaces in the top layer — no z-index management needed.\n\nimport { AgentElement } from '#element'\nimport type { AttributeSchema } from '#element'\n\nexport class AuiTooltip extends AgentElement {\n static override attributes: AttributeSchema = {\n content: { type: 'string', default: '' },\n position: { type: 'enum', values: ['top', 'bottom', 'left', 'right'], default: 'top' },\n }\n\n declare content: string\n declare position: string\n\n #popover: HTMLElement | null = null\n #anchor: HTMLElement | null = null\n #anchorName: string = ''\n\n protected override activate(): void {\n // Resolve anchor: previous sibling or parent\n this.#anchor = (this.previousElementSibling as HTMLElement) ?? this.parentElement\n\n // Generate unique anchor name\n const id = `tooltip-${crypto.randomUUID().slice(0, 8)}`\n this.#anchorName = `--${id}`\n\n // Create popover surface\n this.#popover = document.createElement('div')\n this.#popover.setAttribute('popover', 'manual')\n this.#popover.setAttribute('role', 'tooltip')\n this.#popover.id = id\n this.appendChild(this.#popover)\n\n // Set CSS anchor name on the anchor element\n if (this.#anchor) {\n (this.#anchor.style as any).anchorName = this.#anchorName\n this.#anchor.setAttribute('aria-describedby', id)\n }\n\n // Pass anchor name to CSS via custom property\n this.style.setProperty('--_anchor', this.#anchorName)\n\n // Sync content text\n this.addEffect(() => {\n if (this.#popover) this.#popover.textContent = this.content\n })\n\n // Wire show/hide on anchor\n if (this.#anchor) {\n this.#anchor.addEventListener('mouseenter', this.#show)\n this.#anchor.addEventListener('mouseleave', this.#hide)\n this.#anchor.addEventListener('focusin', this.#show)\n this.#anchor.addEventListener('focusout', this.#hide)\n }\n\n // Escape key dismisses tooltip\n this.addEventListener('keydown', this.#handleKeydown)\n }\n\n protected override dispose(): void {\n if (this.#anchor) {\n this.#anchor.removeEventListener('mouseenter', this.#show)\n this.#anchor.removeEventListener('mouseleave', this.#hide)\n this.#anchor.removeEventListener('focusin', this.#show)\n this.#anchor.removeEventListener('focusout', this.#hide)\n this.#anchor.removeAttribute('aria-describedby')\n ;(this.#anchor.style as any).anchorName = ''\n }\n this.#popover?.hidePopover()\n this.#popover?.remove()\n this.#popover = null\n this.#anchor = null\n }\n\n #show = (): void => {\n try { this.#popover?.showPopover() } catch { /* already open */ }\n }\n\n #hide = (): void => {\n try { this.#popover?.hidePopover() } catch { /* already closed */ }\n }\n\n #handleKeydown = (e: KeyboardEvent): void => {\n if (e.key === 'Escape') {\n this.#hide()\n }\n }\n}\n","// ── aui-range ────────────────────────────────────────────────\n//\n// Slider control — no native <input type=\"range\">.\n// Full-height pill track via CSS ::before/::after.\n// Thumb [data-thumb] is a direct child of the range element.\n// --_pct (0–1 float) drives fill width and thumb position via CSS.\n// Uses ElementInternals for form participation.\n// Keyboard: Arrow keys, Home/End, PageUp/PageDown.\n\nimport { AgentElement } from '#element'\nimport type { AttributeSchema } from '#element'\n\nexport class AuiRange extends AgentElement {\n static formAssociated = true\n\n static override attributes: AttributeSchema = {\n disabled: { type: 'boolean', default: false },\n min: { type: 'string', default: '0' },\n max: { type: 'string', default: '100' },\n step: { type: 'string', default: '1' },\n value: { type: 'string', default: '50' },\n label: { type: 'string', default: '' },\n name: { type: 'string', default: '' },\n }\n\n declare disabled: boolean\n declare min: string\n declare max: string\n declare step: string\n declare value: string\n declare label: string\n declare name: string\n\n #internals: ElementInternals\n #thumb: HTMLElement | null = null\n\n constructor() {\n super()\n this.#internals = this.attachInternals()\n this.#internals.role = 'slider'\n }\n\n protected override activate(): void {\n // Stamp thumb as direct child (track/fill are CSS ::before/::after)\n this.#thumb = this.querySelector('[data-thumb]')\n if (!this.#thumb) {\n this.#thumb = document.createElement('span')\n this.#thumb.setAttribute('data-thumb', '')\n this.appendChild(this.#thumb)\n }\n\n if (!this.hasAttribute('tabindex')) {\n this.setAttribute('tabindex', '0')\n }\n\n // Sync state reactively\n this.addEffect(() => {\n const min = parseFloat(this.min) || 0\n const max = parseFloat(this.max) || 100\n const val = parseFloat(this.value) || 0\n\n this.setAttribute('aria-valuemin', String(min))\n this.setAttribute('aria-valuemax', String(max))\n this.setAttribute('aria-valuenow', String(val))\n this.setAttribute('aria-disabled', String(this.disabled))\n\n if (this.label) {\n this.setAttribute('aria-label', this.label)\n }\n\n // WHY: 0–1 float so CSS calc() can use it as a multiplier directly\n const pct = (max - min) > 0 ? (val - min) / (max - min) : 0\n this.style.setProperty('--_pct', String(Math.max(0, Math.min(1, pct))))\n\n this.#internals.setFormValue(this.value || null)\n })\n\n // Pointer events on the range element itself (whole pill is interactive)\n this.addEventListener('pointerdown', this.#handlePointerDown)\n this.addEventListener('keydown', this.#handleKeydown)\n }\n\n protected override dispose(): void {\n this.removeEventListener('pointerdown', this.#handlePointerDown)\n this.removeEventListener('keydown', this.#handleKeydown)\n }\n\n formDisabledCallback(disabled: boolean): void { this.disabled = disabled }\n formResetCallback(): void { this.value = '50' }\n\n // ── Pointer interaction ───────────────────────────────\n\n #handlePointerDown = (e: PointerEvent): void => {\n if (this.disabled) return\n // Ignore clicks on thumb (let it propagate to range)\n e.preventDefault()\n this.setPointerCapture(e.pointerId)\n this.setAttribute('data-range-pressed', '')\n this.#setValueFromPointer(e)\n\n this.addEventListener('pointermove', this.#handlePointerMove)\n this.addEventListener('pointerup', this.#handlePointerUp)\n }\n\n #handlePointerMove = (e: PointerEvent): void => {\n this.#setValueFromPointer(e)\n }\n\n #handlePointerUp = (_e: PointerEvent): void => {\n this.removeAttribute('data-range-pressed')\n this.removeEventListener('pointermove', this.#handlePointerMove)\n this.removeEventListener('pointerup', this.#handlePointerUp)\n this.dispatchEvent(new Event('change', { bubbles: true }))\n }\n\n #setValueFromPointer(e: PointerEvent): void {\n const rect = this.getBoundingClientRect()\n const pct = Math.max(0, Math.min(1, (e.clientX - rect.left) / rect.width))\n const min = parseFloat(this.min) || 0\n const max = parseFloat(this.max) || 100\n const step = parseFloat(this.step) || 1\n const raw = min + pct * (max - min)\n const snapped = Math.round(raw / step) * step\n const clamped = Math.max(min, Math.min(max, snapped))\n this.value = String(clamped)\n this.dispatchEvent(new Event('input', { bubbles: true }))\n }\n\n // ── Keyboard interaction ──────────────────────────────\n\n #handleKeydown = (e: KeyboardEvent): void => {\n if (this.disabled) return\n\n const min = parseFloat(this.min) || 0\n const max = parseFloat(this.max) || 100\n const step = parseFloat(this.step) || 1\n const val = parseFloat(this.value) || 0\n const bigStep = (max - min) / 10\n\n let next: number | undefined\n\n switch (e.key) {\n case 'ArrowRight':\n case 'ArrowUp':\n next = Math.min(max, val + step)\n break\n case 'ArrowLeft':\n case 'ArrowDown':\n next = Math.max(min, val - step)\n break\n case 'PageUp':\n next = Math.min(max, val + bigStep)\n break\n case 'PageDown':\n next = Math.max(min, val - bigStep)\n break\n case 'Home':\n next = min\n break\n case 'End':\n next = max\n break\n default:\n return\n }\n\n e.preventDefault()\n this.value = String(next)\n this.dispatchEvent(new Event('input', { bubbles: true }))\n this.dispatchEvent(new Event('change', { bubbles: true }))\n }\n}\n","// ── aui-gripper ──────────────────────────────────────────────\n//\n// Resize handle. Reports frame-to-frame pointer deltas (not\n// cumulative from start). This avoids jump on first click\n// caused by pointer capture coordinate shift.\n\nimport { AgentElement } from '#element'\nimport type { AttributeSchema } from '#element'\n\nexport class AuiGripper extends AgentElement {\n static override attributes: AttributeSchema = {\n orientation: { type: 'enum', values: ['horizontal', 'vertical'], default: 'horizontal' },\n disabled: { type: 'boolean', default: false },\n }\n\n declare orientation: string\n declare disabled: boolean\n\n #lastX = 0\n #lastY = 0\n #dragging = false\n\n protected override activate(): void {\n this.setAttribute('role', 'separator')\n\n this.addEffect(() => {\n this.setAttribute('aria-orientation', this.orientation || 'horizontal')\n this.setAttribute('aria-disabled', String(this.disabled))\n })\n\n if (!this.hasAttribute('tabindex')) {\n this.setAttribute('tabindex', '0')\n }\n\n this.addEventListener('pointerdown', this.#handlePointerDown)\n this.addEventListener('keydown', this.#handleKeydown)\n }\n\n protected override dispose(): void {\n this.removeEventListener('pointerdown', this.#handlePointerDown)\n this.removeEventListener('keydown', this.#handleKeydown)\n this.#stopDrag()\n }\n\n #handlePointerDown = (e: PointerEvent): void => {\n if (this.disabled) return\n e.preventDefault()\n\n this.#lastX = e.clientX\n this.#lastY = e.clientY\n this.#dragging = true\n\n this.setPointerCapture(e.pointerId)\n this.setAttribute('data-gripper-dragging', '')\n\n this.addEventListener('pointermove', this.#handlePointerMove)\n this.addEventListener('pointerup', this.#handlePointerUp)\n this.addEventListener('pointercancel', this.#handlePointerUp)\n\n this.dispatchEvent(new CustomEvent('aui:resize-start', { bubbles: true }))\n }\n\n #handlePointerMove = (e: PointerEvent): void => {\n if (!this.#dragging) return\n\n const dx = e.clientX - this.#lastX\n const dy = e.clientY - this.#lastY\n this.#lastX = e.clientX\n this.#lastY = e.clientY\n\n const isHorizontal = this.orientation !== 'vertical'\n\n this.dispatchEvent(new CustomEvent('aui:resize-move', {\n bubbles: true,\n detail: { dx, dy, delta: isHorizontal ? dx : dy },\n }))\n }\n\n #handlePointerUp = (): void => {\n if (!this.#dragging) return\n this.#stopDrag()\n this.dispatchEvent(new CustomEvent('aui:resize-end', { bubbles: true }))\n }\n\n #stopDrag(): void {\n this.#dragging = false\n this.removeAttribute('data-gripper-dragging')\n this.removeEventListener('pointermove', this.#handlePointerMove)\n this.removeEventListener('pointerup', this.#handlePointerUp)\n this.removeEventListener('pointercancel', this.#handlePointerUp)\n }\n\n #handleKeydown = (e: KeyboardEvent): void => {\n if (this.disabled) return\n\n const isHorizontal = this.orientation !== 'vertical'\n const step = e.shiftKey ? 10 : 1\n let delta = 0\n\n if (isHorizontal) {\n if (e.key === 'ArrowLeft') delta = -step\n else if (e.key === 'ArrowRight') delta = step\n else return\n } else {\n if (e.key === 'ArrowUp') delta = -step\n else if (e.key === 'ArrowDown') delta = step\n else return\n }\n\n e.preventDefault()\n this.dispatchEvent(new CustomEvent('aui:resize-move', {\n bubbles: true,\n detail: { dx: isHorizontal ? delta : 0, dy: isHorizontal ? 0 : delta, delta },\n }))\n }\n}\n","// ── aui-option ──────────────────────────────────────────────\n//\n// A selectable option within aui-select.\n// Lightweight — most behavior is coordinated by the parent listbox.\n\nimport { AgentElement } from '#element'\nimport type { AttributeSchema } from '#element'\n\nexport class AuiOption extends AgentElement {\n static override attributes: AttributeSchema = {\n value: { type: 'string', default: '' },\n disabled: { type: 'boolean', default: false },\n selected: { type: 'boolean', default: false },\n label: { type: 'string', default: '' },\n }\n\n declare value: string\n declare disabled: boolean\n declare selected: boolean\n declare label: string\n\n /** The display text for this option. */\n get displayLabel(): string {\n return this.label || this.textContent?.trim() || this.value\n }\n\n protected override activate(): void {\n this.setAttribute('role', 'option')\n\n this.addEffect(() => {\n this.setAttribute('aria-selected', String(this.selected))\n this.setAttribute('aria-disabled', String(this.disabled))\n })\n }\n}\n","// ── aui-optgroup ─────────────────────────────────────────────\n//\n// Groups options under a label header within aui-select.\n// Adds optional `divider` attribute for visual separation.\n\nimport { AgentElement } from '#element'\nimport type { AttributeSchema } from '#element'\n\nexport class AuiOptgroup extends AgentElement {\n static override attributes: AttributeSchema = {\n label: { type: 'string', default: '' },\n disabled: { type: 'boolean', default: false },\n divider: { type: 'boolean', default: false },\n }\n\n declare label: string\n declare disabled: boolean\n declare divider: boolean\n\n #header: HTMLElement | null = null\n\n protected override activate(): void {\n this.setAttribute('role', 'group')\n\n // Stamp group header\n this.#header = this.querySelector('[data-group-label]')\n if (!this.#header && this.label) {\n this.#header = document.createElement('div')\n this.#header.setAttribute('data-group-label', '')\n this.#header.setAttribute('role', 'presentation')\n this.#header.id = `optgroup-${crypto.randomUUID().slice(0, 8)}`\n this.prepend(this.#header)\n }\n\n this.addEffect(() => {\n if (this.#header) {\n this.#header.textContent = this.label\n this.setAttribute('aria-labelledby', this.#header.id)\n }\n this.setAttribute('aria-disabled', String(this.disabled))\n\n // Cascade disabled to child options\n for (const opt of this.querySelectorAll('aui-option')) {\n if (this.disabled) {\n opt.setAttribute('disabled', '')\n }\n }\n })\n }\n}\n","// ── aui-select ──────────────────────────────────────────────\n//\n// Unified select component with multiple interaction modes.\n//\n// Modes (via `mode` attribute):\n// (none) → dropdown: trigger + chevron + popover listbox\n// \"bar\" → toolbar: inline items, overflow via ResizeObserver\n// \"list\" → standalone listbox: all items visible, scrollable\n// \"combobox\" → searchable dropdown: contenteditable + filtered popover\n\nimport { AgentElement } from '#element'\nimport type { AttributeSchema } from '#element'\n\n// ── Constants ────────────────────────────────────────────────\n\nconst CHEVRON_SVG = `<svg viewBox=\"0 0 256 256\" fill=\"currentColor\" width=\"100%\" height=\"100%\"><polyline points=\"48,80 128,160 208,80\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"24\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/></svg>`\n\nconst MORE_ICON = `<svg viewBox=\"0 0 256 256\" fill=\"currentColor\" width=\"1em\" height=\"1em\"><circle cx=\"128\" cy=\"128\" r=\"16\"/><circle cx=\"64\" cy=\"128\" r=\"16\"/><circle cx=\"192\" cy=\"128\" r=\"16\"/></svg>`\n\nconst PRIORITY_ORDER: Record<string, number> = { '0': 0, low: 0, '1': 1, normal: 1, '2': 2, high: 2, pin: 999 }\n\nconst FOCUSABLE_BAR = ':is(aui-option, aui-button, button, [tabindex]):not([disabled]):not([data-overflow-trigger])'\nconst FOCUSABLE_BAR_WITH_TRIGGER = ':is(aui-option, aui-button, button, [tabindex]):not([disabled])'\n\n// ── Overflow types ───────────────────────────────────────────\n\ninterface OverflowUnit {\n el: HTMLElement\n flexItems: HTMLElement[]\n priority: string // '0' | '1' | '2' | 'low' | 'normal' | 'high' | 'pin'\n pinned: boolean\n index: number\n width: number\n}\n\n// ── Helpers ──────────────────────────────────────────────────\n\nfunction isOptionTag(tag: string): boolean {\n return tag === 'AUI-OPTION'\n}\n\nfunction isGroupTag(tag: string): boolean {\n return tag === 'AUI-OPTGROUP'\n}\n\nfunction isOptionOrGroup(el: Element): boolean {\n return isOptionTag(el.tagName) || isGroupTag(el.tagName)\n}\n\n// ── Component ────────────────────────────────────────────────\n\nexport class AuiSelect extends AgentElement {\n static formAssociated = true\n\n static override attributes: AttributeSchema = {\n mode: { type: 'enum', values: ['bar', 'list', 'combobox'], default: '' },\n disabled: { type: 'boolean', default: false },\n required: { type: 'boolean', default: false },\n placeholder: { type: 'string', default: 'Select…' },\n value: { type: 'string', default: '' },\n name: { type: 'string', default: '' },\n open: { type: 'boolean', default: false },\n multiple: { type: 'boolean', default: false },\n // Bar mode\n orientation: { type: 'enum', values: ['vertical'], default: '' },\n transparent: { type: 'boolean', default: false },\n fill: { type: 'boolean', default: false },\n padding: { type: 'string', default: '' },\n }\n\n declare mode: string\n declare disabled: boolean\n declare required: boolean\n declare placeholder: string\n declare value: string\n declare name: string\n declare open: boolean\n declare multiple: boolean\n declare orientation: string\n declare transparent: boolean\n declare fill: boolean\n declare padding: string\n\n #internals: ElementInternals\n\n // ── Shared state ─────────────────────────────────────────\n #anchorName: string = ''\n\n // ── Dropdown mode state ──────────────────────────────────\n #trigger: HTMLElement | null = null\n #triggerLabel: HTMLElement | null = null\n #chevron: HTMLElement | null = null\n #popover: HTMLElement | null = null\n #listboxEl: HTMLElement | null = null\n\n // ── Bar mode state ───────────────────────────────────────\n #barTriggerBtn: HTMLElement | null = null\n #barOverflowPopover: HTMLElement | null = null\n #barOverflowList: HTMLElement | null = null\n #resizeObserver: ResizeObserver | null = null\n #mutationObserver: MutationObserver | null = null\n #measureRaf: number | null = null\n\n // ── List mode state ──────────────────────────────────────\n #listActiveIndex = -1\n #typeBuffer = ''\n #typeTimer: ReturnType<typeof setTimeout> | null = null\n\n // ── Combobox mode state ──────────────────────────────────\n #comboSurface: HTMLElement | null = null\n #comboPopover: HTMLElement | null = null\n #comboListbox: HTMLElement | null = null\n #allComboOptions: HTMLElement[] = []\n\n constructor() {\n super()\n this.#internals = this.attachInternals()\n }\n\n // ════════════════════════════════════════════════════════════\n // Lifecycle\n // ════════════════════════════════════════════════════════════\n\n protected override activate(): void {\n switch (this.mode) {\n case 'bar': this.#activateBar(); break\n case 'list': this.#activateList(); break\n case 'combobox': this.#activateCombobox(); break\n default: this.#activateDropdown(); break\n }\n }\n\n protected override dispose(): void {\n switch (this.mode) {\n case 'bar': this.#disposeBar(); break\n case 'list': this.#disposeList(); break\n case 'combobox': this.#disposeCombobox(); break\n default: this.#disposeDropdown(); break\n }\n }\n\n formDisabledCallback(disabled: boolean): void { this.disabled = disabled }\n formResetCallback(): void {\n this.value = ''\n if (this.#comboSurface) this.#comboSurface.textContent = ''\n }\n\n // ════════════════════════════════════════════════════════════\n // Public API\n // ════════════════════════════════════════════════════════════\n\n /** Get all option elements (including inside groups). */\n get options(): HTMLElement[] {\n if (this.mode === '' || this.mode === undefined) {\n // Dropdown — options are inside the internal listbox\n return Array.from(this.#listboxEl?.querySelectorAll('aui-option') ?? [])\n }\n if (this.mode === 'combobox') {\n return Array.from(this.#comboListbox?.querySelectorAll('aui-option') ?? [])\n }\n // List and bar modes — options are direct descendants\n return Array.from(this.querySelectorAll('aui-option'))\n }\n\n /** Get enabled options. */\n get enabledOptions(): HTMLElement[] {\n return this.options.filter(o => !o.hasAttribute('disabled'))\n }\n\n /** Get the currently active (highlighted) option. */\n get activeOption(): HTMLElement | null {\n if (this.mode === 'list') {\n const opts = this.enabledOptions\n return opts[this.#listActiveIndex] ?? null\n }\n // For dropdown/combobox, delegate to internal listbox\n const lb = this.#listboxEl ?? this.#comboListbox\n return (lb as any)?.activeOption ?? null\n }\n\n /** Internal listbox element (for dropdown mode). */\n get listboxElement(): HTMLElement | null { return this.#listboxEl }\n\n /** Programmatically select an option by value. */\n selectValue(val: string): void {\n if (this.mode === 'list') {\n const opt = this.options.find(\n o => (o.getAttribute('value') ?? o.textContent?.trim()) === val\n )\n if (opt && !opt.hasAttribute('disabled')) {\n this.#listSelectOption(opt)\n }\n } else {\n const lb = this.#listboxEl ?? this.#comboListbox\n ;(lb as any)?.selectValue?.(val)\n }\n }\n\n /** Highlight a specific option by index (for external control). */\n highlightIndex(index: number): void {\n if (this.mode === 'list') {\n this.#listSetActive(index)\n } else {\n const lb = this.#listboxEl ?? this.#comboListbox\n ;(lb as any)?.highlightIndex?.(index)\n }\n }\n\n /** Reset the active highlight. */\n clearHighlight(): void {\n if (this.mode === 'list') {\n this.#listClearActive()\n } else {\n const lb = this.#listboxEl ?? this.#comboListbox\n ;(lb as any)?.clearHighlight?.()\n }\n }\n\n // ════════════════════════════════════════════════════════════\n // Shared popover helpers (dropdown + combobox)\n // ════════════════════════════════════════════════════════════\n\n #openPopover(): void {\n const popover = this.#popover ?? this.#comboPopover\n if (!popover || this.disabled) return\n try { popover.showPopover() } catch {}\n this.open = true\n\n // For dropdown mode, highlight current value\n if (this.mode !== 'combobox') {\n const lb = this.#listboxEl as any\n if (lb?.enabledOptions && lb.value) {\n const idx = lb.enabledOptions.findIndex(\n (o: HTMLElement) => (o.getAttribute('value') ?? o.textContent?.trim()) === lb.value\n )\n if (idx >= 0) lb.highlightIndex(idx)\n }\n this.#listboxEl?.focus()\n }\n }\n\n #closePopover(): void {\n const popover = this.#popover ?? this.#comboPopover\n if (!popover) return\n try { popover.hidePopover() } catch {}\n this.open = false\n const lb = this.#listboxEl ?? this.#comboListbox\n ;(lb as any)?.clearHighlight?.()\n }\n\n // ════════════════════════════════════════════════════════════\n // MODE: Dropdown (default)\n // ════════════════════════════════════════════════════════════\n\n #activateDropdown(): void {\n const id = `select-${crypto.randomUUID().slice(0, 8)}`\n this.#anchorName = `--${id}`\n\n // ── Stamp trigger (span, not button) ─────────────\n this.#trigger = document.createElement('span')\n this.#trigger.setAttribute('data-trigger', '')\n this.#trigger.setAttribute('role', 'combobox')\n this.#trigger.setAttribute('aria-haspopup', 'listbox')\n this.#trigger.setAttribute('tabindex', '0')\n this.#trigger.id = id\n\n this.#triggerLabel = document.createElement('span')\n this.#triggerLabel.setAttribute('data-label', '')\n this.#trigger.appendChild(this.#triggerLabel)\n\n this.#chevron = document.createElement('span')\n this.#chevron.setAttribute('data-chevron', '')\n this.#chevron.innerHTML = CHEVRON_SVG\n this.#trigger.appendChild(this.#chevron)\n\n // ── Stamp popover + listbox ──────────────────────\n this.#popover = document.createElement('div')\n this.#popover.setAttribute('popover', 'manual')\n this.#popover.setAttribute('data-dropdown', '')\n\n this.#listboxEl = document.createElement('aui-listbox')\n this.#popover.appendChild(this.#listboxEl)\n\n // Move child options into listbox\n const children = Array.from(this.children)\n for (const child of children) {\n if (isOptionOrGroup(child)) {\n this.#listboxEl.appendChild(child)\n }\n }\n\n this.appendChild(this.#trigger!)\n this.appendChild(this.#popover!)\n\n // Anchor positioning\n ;(this.#trigger.style as any).anchorName = this.#anchorName\n this.style.setProperty('--_anchor', this.#anchorName)\n\n // Sync state\n this.addEffect(() => {\n if (this.disabled) {\n this.#trigger!.setAttribute('tabindex', '-1')\n } else {\n this.#trigger!.setAttribute('tabindex', '0')\n }\n this.#trigger!.setAttribute('aria-expanded', String(this.open))\n this.#trigger!.setAttribute('aria-disabled', String(this.disabled))\n this.#internals.setFormValue(this.value || null)\n this.#dropdownUpdateLabel()\n })\n\n // Events\n this.#trigger.addEventListener('click', this.#dropdownTriggerClick)\n this.#trigger.addEventListener('keydown', this.#dropdownTriggerKeydown)\n this.#listboxEl.addEventListener('click', this.#dropdownListboxClick)\n this.#listboxEl.addEventListener('change', this.#dropdownListboxChange as EventListener)\n this.#listboxEl.addEventListener('keydown', this.#dropdownListboxKeydown)\n document.addEventListener('click', this.#dropdownOutsideClick)\n\n if (this.value) {\n (this.#listboxEl as any).value = this.value\n }\n }\n\n #dropdownListboxClick = (e: Event): void => {\n const option = (e.target as HTMLElement).closest('aui-option') as HTMLElement | null\n if (!option || option.hasAttribute('disabled')) return\n\n // Select the option\n for (const opt of this.#listboxEl!.querySelectorAll('aui-option')) {\n ;(opt as any).selected = false\n }\n ;(option as any).selected = true\n this.value = (option as any).value ?? option.getAttribute('value') ?? ''\n\n // Fire change\n this.#listboxEl!.dispatchEvent(new CustomEvent('change', {\n bubbles: true,\n detail: { value: this.value, option },\n }))\n\n this.#closePopover()\n }\n\n #disposeDropdown(): void {\n this.#trigger?.removeEventListener('click', this.#dropdownTriggerClick)\n this.#trigger?.removeEventListener('keydown', this.#dropdownTriggerKeydown)\n this.#listboxEl?.removeEventListener('click', this.#dropdownListboxClick)\n this.#listboxEl?.removeEventListener('change', this.#dropdownListboxChange as EventListener)\n this.#listboxEl?.removeEventListener('keydown', this.#dropdownListboxKeydown)\n document.removeEventListener('click', this.#dropdownOutsideClick)\n this.#closePopover()\n }\n\n #dropdownUpdateLabel(): void {\n if (!this.#triggerLabel) return\n const selected = this.#listboxEl?.querySelector('aui-option[selected]') as any\n if (selected) {\n this.#triggerLabel.textContent = selected.displayLabel ?? selected.textContent?.trim() ?? ''\n this.#triggerLabel.removeAttribute('data-placeholder')\n } else {\n this.#triggerLabel.textContent = this.placeholder\n this.#triggerLabel.setAttribute('data-placeholder', '')\n }\n }\n\n #dropdownTriggerClick = (): void => {\n if (this.disabled) return\n if (this.open) this.#closePopover()\n else this.#openPopover()\n }\n\n #dropdownTriggerKeydown = (e: KeyboardEvent): void => {\n if (e.key === 'ArrowDown' || e.key === 'ArrowUp' || e.key === 'Enter' || e.key === ' ') {\n e.preventDefault()\n if (!this.open) this.#openPopover()\n } else if (e.key === 'Escape') {\n this.#closePopover()\n }\n }\n\n #dropdownListboxChange = (e: CustomEvent): void => {\n e.stopPropagation()\n this.value = e.detail.value\n this.#internals.setFormValue(this.value || null)\n this.#dropdownUpdateLabel()\n this.#closePopover()\n this.#trigger?.focus()\n this.dispatchEvent(new CustomEvent('change', { bubbles: true, detail: e.detail }))\n }\n\n #dropdownListboxKeydown = (e: KeyboardEvent): void => {\n if (e.key === 'Escape') { e.preventDefault(); this.#closePopover(); this.#trigger?.focus() }\n else if (e.key === 'Tab') { this.#closePopover() }\n }\n\n #dropdownOutsideClick = (e: Event): void => {\n if (this.open && !this.contains(e.target as Node)) this.#closePopover()\n }\n\n // ════════════════════════════════════════════════════════════\n // MODE: Bar (toolbar)\n // ════════════════════════════════════════════════════════════\n\n #activateBar(): void {\n this.setAttribute('role', 'toolbar')\n if (!this.hasAttribute('aria-label')) {\n this.setAttribute('aria-label', 'Toolbar')\n }\n if (this.orientation) {\n this.setAttribute('aria-orientation', this.orientation || 'horizontal')\n }\n\n // ── Stamp overflow trigger + popover ──────────────\n this.#barTriggerBtn = document.createElement('span')\n this.#barTriggerBtn.setAttribute('data-overflow-trigger', '')\n this.#barTriggerBtn.setAttribute('role', 'button')\n this.#barTriggerBtn.setAttribute('tabindex', '0')\n this.#barTriggerBtn.setAttribute('aria-label', 'More actions')\n this.#barTriggerBtn.setAttribute('aria-haspopup', 'true')\n this.#barTriggerBtn.innerHTML = MORE_ICON\n this.appendChild(this.#barTriggerBtn)\n\n this.#barOverflowPopover = document.createElement('div')\n this.#barOverflowPopover.setAttribute('data-overflow-popover', '')\n this.#barOverflowPopover.setAttribute('popover', 'auto')\n this.#barOverflowPopover.setAttribute('role', 'menu')\n this.appendChild(this.#barOverflowPopover)\n\n this.#barOverflowList = document.createElement('div')\n this.#barOverflowList.setAttribute('data-overflow-list', '')\n this.#barOverflowPopover.appendChild(this.#barOverflowList)\n\n // Wire trigger\n this.#barTriggerBtn.addEventListener('click', this.#barOnTriggerClick)\n this.#barTriggerBtn.addEventListener('keydown', this.#barOnTriggerKeydown)\n this.#barOverflowList.addEventListener('click', this.#barOnOverflowItemClick)\n\n // Keyboard navigation\n this.addEventListener('keydown', this.#barHandleKeydown)\n\n // Auto-stamp dividers between adjacent optgroups\n this.#barStampGroupDividers()\n\n // Observe resize\n this.#resizeObserver = new ResizeObserver(() => this.#barScheduleMeasure())\n this.#resizeObserver.observe(this)\n\n // Observe child changes (ignore mutations inside the overflow popover)\n this.#mutationObserver = new MutationObserver((mutations) => {\n for (const m of mutations) {\n if (this.#barOverflowPopover?.contains(m.target as Node)) continue\n this.#barScheduleMeasure()\n return\n }\n })\n this.#mutationObserver.observe(this, { childList: true, subtree: true })\n\n // Initial measure\n this.#barScheduleMeasure()\n }\n\n #disposeBar(): void {\n if (this.#measureRaf !== null) cancelAnimationFrame(this.#measureRaf)\n this.#resizeObserver?.disconnect()\n this.#mutationObserver?.disconnect()\n this.removeEventListener('keydown', this.#barHandleKeydown)\n this.#barTriggerBtn?.removeEventListener('click', this.#barOnTriggerClick)\n this.#barTriggerBtn?.removeEventListener('keydown', this.#barOnTriggerKeydown)\n this.#barOverflowList?.removeEventListener('click', this.#barOnOverflowItemClick)\n }\n\n // ── Bar: Group dividers ───────────────────────────────\n\n #barStampGroupDividers(): void {\n const children = Array.from(this.children)\n let prevWasGroup = false\n\n for (const child of children) {\n if (!(child instanceof HTMLElement)) continue\n if (child.hasAttribute('data-overflow-trigger') || child.hasAttribute('data-overflow-popover')) continue\n\n const isGroup = child.tagName === 'AUI-OPTGROUP'\n if (isGroup && prevWasGroup) {\n // Insert divider before this group\n const hr = document.createElement('hr')\n hr.setAttribute('data-group-divider', '')\n this.insertBefore(hr, child)\n }\n if (isGroup || isOptionTag(child.tagName)) {\n prevWasGroup = isGroup\n }\n }\n }\n\n // ── Bar: Measurement ───────────────────────────────────\n\n #barScheduleMeasure(): void {\n if (this.#measureRaf !== null) return\n this.#measureRaf = requestAnimationFrame(() => {\n this.#measureRaf = null\n this.#barMeasure()\n })\n }\n\n #barGetContentChildren(): HTMLElement[] {\n return Array.from(this.children).filter(\n (c): c is HTMLElement =>\n c instanceof HTMLElement &&\n !c.hasAttribute('data-overflow-trigger') &&\n !c.hasAttribute('data-overflow-popover')\n )\n }\n\n #barMeasure(): void {\n if (this.orientation === 'vertical') {\n this.#barClearOverflow()\n return\n }\n\n // Pause mutation observer to prevent loops\n this.#mutationObserver?.disconnect()\n\n // Ensure trigger + popover are at the end\n if (this.#barTriggerBtn && this.#barTriggerBtn.nextElementSibling !== this.#barOverflowPopover) {\n this.appendChild(this.#barTriggerBtn)\n }\n if (this.#barOverflowPopover && this.#barOverflowPopover !== this.lastElementChild) {\n this.appendChild(this.#barOverflowPopover)\n }\n\n const children = this.#barGetContentChildren()\n if (children.length === 0) {\n this.#barReconnectMutationObserver()\n return\n }\n\n // Reset\n for (const child of children) {\n child.removeAttribute('data-select-overflow')\n }\n this.removeAttribute('data-select-overflowing')\n\n // Enter measurement mode\n this.setAttribute('data-select-measuring', '')\n\n const cs = getComputedStyle(this)\n const gap = parseFloat(cs.gap) || 0\n const contentWidth =\n this.clientWidth -\n (parseFloat(cs.paddingInlineStart) || 0) -\n (parseFloat(cs.paddingInlineEnd) || 0)\n\n if (contentWidth <= 0) {\n this.removeAttribute('data-select-measuring')\n this.#barReconnectMutationObserver()\n return\n }\n\n const units = this.#barBuildOverflowUnits(children)\n\n // Sum intrinsic widths\n let totalWidth = 0\n let flatIndex = 0\n for (const unit of units) {\n for (const item of unit.flexItems) {\n if (flatIndex > 0) totalWidth += gap\n totalWidth += item.offsetWidth\n flatIndex++\n }\n }\n\n // No overflow (1px tolerance for subpixel rounding in offsetWidth)\n if (totalWidth <= contentWidth + 1) {\n this.removeAttribute('data-select-measuring')\n this.#barClearOverflowMenu()\n this.#barReconnectMutationObserver()\n return\n }\n\n // Overflow detected\n this.setAttribute('data-select-overflowing', '')\n\n // Measure per-unit widths\n for (const unit of units) {\n let w = 0\n for (let i = 0; i < unit.flexItems.length; i++) {\n if (i > 0) w += gap\n w += unit.flexItems[i].offsetWidth\n }\n unit.width = w\n }\n\n // Exit measurement mode\n this.removeAttribute('data-select-measuring')\n\n // Trigger button width\n const triggerWidth = this.#barTriggerBtn?.offsetWidth ?? 0\n\n // Filter candidates (not pinned)\n const candidates = units.filter(u => !u.pinned)\n if (candidates.length === 0) {\n this.#barClearOverflowMenu()\n this.#barReconnectMutationObserver()\n return\n }\n\n // Sort: low priority first, then reverse DOM order within same priority\n candidates.sort((a, b) => {\n const pa = PRIORITY_ORDER[a.priority] ?? 1\n const pb = PRIORITY_ORDER[b.priority] ?? 1\n if (pa !== pb) return pa - pb\n return b.index - a.index\n })\n\n // Greedy overflow: remove lowest-priority items until remaining fits\n const overflowed = new Set<HTMLElement>()\n let remaining = totalWidth\n const available = contentWidth - triggerWidth - gap\n\n for (const unit of candidates) {\n if (remaining <= available) break\n overflowed.add(unit.el)\n remaining -= unit.width + gap\n }\n\n if (overflowed.size === 0) {\n this.removeAttribute('data-select-overflowing')\n this.#barClearOverflowMenu()\n this.#barReconnectMutationObserver()\n return\n }\n\n // Apply data-overflow (and hide adjacent group dividers)\n for (const el of overflowed) {\n el.setAttribute('data-select-overflow', '')\n // Hide adjacent auto-stamped group dividers\n const prev = el.previousElementSibling\n if (prev?.hasAttribute('data-group-divider')) {\n prev.setAttribute('data-select-overflow', '')\n }\n const next = el.nextElementSibling\n if (next?.hasAttribute('data-group-divider')) {\n next.setAttribute('data-select-overflow', '')\n }\n }\n\n // Rebuild overflow menu\n this.#barRebuildOverflowMenu()\n this.#barReconnectMutationObserver()\n }\n\n #barBuildOverflowUnits(children: HTMLElement[]): OverflowUnit[] {\n const units: OverflowUnit[] = []\n for (let i = 0; i < children.length; i++) {\n const child = children[i]\n if (child.tagName === 'HR' || child.tagName === 'AUI-DIVIDER') continue\n\n // Read priority: data-priority > overflow-priority > default \"normal\"\n const rawPriority = child.getAttribute('data-priority')\n ?? child.getAttribute('overflow-priority')\n ?? 'normal'\n const priority = rawPriority as OverflowUnit['priority']\n const pinned = rawPriority === 'pin' || child.hasAttribute('overflow-pin')\n\n if (child.tagName === 'AUI-OPTGROUP') {\n const flexItems: HTMLElement[] = []\n for (const gc of child.children) {\n if (gc instanceof HTMLElement && gc.tagName !== 'HR' && gc.tagName !== 'AUI-DIVIDER') {\n flexItems.push(gc)\n }\n }\n units.push({ el: child, flexItems, priority, pinned, index: i, width: 0 })\n } else {\n units.push({ el: child, flexItems: [child], priority, pinned, index: i, width: 0 })\n }\n }\n return units\n }\n\n // ── Bar: Overflow menu ─────────────────────────────────\n\n #barClearOverflow(): void {\n for (const child of this.#barGetContentChildren()) {\n child.removeAttribute('data-select-overflow')\n }\n this.removeAttribute('data-select-overflowing')\n this.removeAttribute('data-select-measuring')\n this.#barClearOverflowMenu()\n }\n\n #barClearOverflowMenu(): void {\n if (this.#barOverflowList) this.#barOverflowList.innerHTML = ''\n }\n\n #barRebuildOverflowMenu(): void {\n this.#barClearOverflowMenu()\n if (!this.#barOverflowList) return\n\n const children = this.#barGetContentChildren()\n let itemIndex = 0\n\n for (const child of children) {\n if (!child.hasAttribute('data-select-overflow')) continue\n\n if (child.tagName === 'AUI-OPTGROUP') {\n // Clone the group with its options into the overflow menu\n const group = document.createElement('aui-optgroup')\n const groupLabel = child.getAttribute('label')\n if (groupLabel) group.setAttribute('label', groupLabel)\n group.setAttribute('divider', '')\n\n for (const gc of child.children) {\n if (!(gc instanceof HTMLElement)) continue\n if (gc.tagName === 'HR' || gc.tagName === 'AUI-DIVIDER' || gc.hasAttribute('data-group-label')) continue\n\n const option = document.createElement('aui-option')\n option.textContent = this.#barExtractLabel(gc)\n option.setAttribute('data-overflow-index', String(itemIndex))\n group.appendChild(option)\n itemIndex++\n }\n\n this.#barOverflowList.appendChild(group)\n } else if (child.tagName !== 'HR' && child.tagName !== 'AUI-DIVIDER') {\n const option = document.createElement('aui-option')\n option.textContent = this.#barExtractLabel(child)\n option.setAttribute('data-overflow-index', String(itemIndex))\n this.#barOverflowList.appendChild(option)\n itemIndex++\n }\n }\n }\n\n /** Flat list of overflowed source elements, in DOM order (for click dispatch). */\n #barGetOverflowSources(): HTMLElement[] {\n const sources: HTMLElement[] = []\n for (const child of this.#barGetContentChildren()) {\n if (!child.hasAttribute('data-select-overflow')) continue\n if (child.tagName === 'AUI-OPTGROUP') {\n for (const gc of child.children) {\n if (gc instanceof HTMLElement && gc.tagName !== 'HR' && gc.tagName !== 'AUI-DIVIDER' && !gc.hasAttribute('data-group-label')) {\n sources.push(gc)\n }\n }\n } else if (child.tagName !== 'HR' && child.tagName !== 'AUI-DIVIDER') {\n sources.push(child)\n }\n }\n return sources\n }\n\n #barExtractLabel(el: HTMLElement): string {\n const ariaLabel = el.getAttribute('aria-label')\n if (ariaLabel) return ariaLabel\n const labelAttr = el.getAttribute('label')\n if (labelAttr) return labelAttr\n const text = el.textContent?.trim()\n if (text) return text\n const icon = el.getAttribute('icon')\n if (icon) return icon.charAt(0).toUpperCase() + icon.slice(1).replace(/-/g, ' ')\n return 'Action'\n }\n\n #barReconnectMutationObserver(): void {\n this.#mutationObserver?.observe(this, { childList: true, subtree: true })\n }\n\n // ── Bar: Event handlers ────────────────────────────────\n\n #barOnTriggerClick = (e: Event): void => {\n e.stopPropagation()\n this.#barPositionPopover()\n this.#barOverflowPopover?.togglePopover()\n }\n\n #barOnTriggerKeydown = (e: Event): void => {\n const ke = e as KeyboardEvent\n if (ke.key === 'Enter' || ke.key === ' ') {\n ke.preventDefault()\n this.#barPositionPopover()\n this.#barOverflowPopover?.togglePopover()\n }\n }\n\n #barPositionPopover(): void {\n if (!this.#barTriggerBtn || !this.#barOverflowPopover) return\n const rect = this.#barTriggerBtn.getBoundingClientRect()\n this.#barOverflowPopover.style.top = `${rect.bottom + 2}px`\n this.#barOverflowPopover.style.right = `${window.innerWidth - rect.right}px`\n }\n\n #barOnOverflowItemClick = (e: Event): void => {\n const target = (e.target as HTMLElement).closest('[data-overflow-index]') as HTMLElement | null\n if (!target) return\n\n const index = parseInt(target.getAttribute('data-overflow-index')!, 10)\n const source = this.#barGetOverflowSources()[index]\n if (source) source.click()\n\n this.#barOverflowPopover?.hidePopover()\n }\n\n // ── Bar: Keyboard navigation ───────────────────────────\n\n #barGetFocusable(): HTMLElement[] {\n const all: HTMLElement[] = []\n const selector = this.hasAttribute('data-select-overflowing')\n ? FOCUSABLE_BAR_WITH_TRIGGER\n : FOCUSABLE_BAR\n\n for (const child of this.#barGetContentChildren()) {\n if (child.hasAttribute('data-select-overflow')) continue\n if (child.tagName === 'AUI-OPTGROUP') {\n for (const gc of child.children) {\n if (gc instanceof HTMLElement && gc.matches(selector)) all.push(gc)\n }\n } else if (child.matches(selector)) {\n all.push(child)\n }\n }\n\n // Include trigger when overflowing\n if (this.#barTriggerBtn && this.hasAttribute('data-select-overflowing')) {\n all.push(this.#barTriggerBtn)\n }\n\n return all\n }\n\n #barHandleKeydown = (e: KeyboardEvent): void => {\n const isVertical = this.orientation === 'vertical'\n const forward = isVertical ? 'ArrowDown' : 'ArrowRight'\n const backward = isVertical ? 'ArrowUp' : 'ArrowLeft'\n\n if (e.key !== forward && e.key !== backward && e.key !== 'Home' && e.key !== 'End') return\n\n const items = this.#barGetFocusable()\n if (items.length === 0) return\n\n const current = items.indexOf(document.activeElement as HTMLElement)\n let next: number | undefined\n\n switch (e.key) {\n case forward:\n next = current < items.length - 1 ? current + 1 : 0\n break\n case backward:\n next = current > 0 ? current - 1 : items.length - 1\n break\n case 'Home':\n next = 0\n break\n case 'End':\n next = items.length - 1\n break\n }\n\n if (next !== undefined) {\n e.preventDefault()\n items[next].setAttribute('tabindex', '0')\n items[next].focus()\n if (current >= 0 && current !== next) {\n items[current].setAttribute('tabindex', '-1')\n }\n }\n }\n\n // ════════════════════════════════════════════════════════════\n // MODE: List (standalone listbox)\n // ════════════════════════════════════════════════════════════\n\n #activateList(): void {\n this.setAttribute('role', 'listbox')\n\n this.addEffect(() => {\n if (this.multiple) {\n this.setAttribute('aria-multiselectable', 'true')\n } else {\n this.removeAttribute('aria-multiselectable')\n }\n })\n\n // Initial selection from value\n if (this.value) {\n this.#listSyncSelection()\n }\n\n this.addEventListener('click', this.#listHandleClick)\n this.addEventListener('keydown', this.#listHandleKeydown)\n\n if (!this.hasAttribute('tabindex')) {\n this.setAttribute('tabindex', '0')\n }\n }\n\n #disposeList(): void {\n this.removeEventListener('click', this.#listHandleClick)\n this.removeEventListener('keydown', this.#listHandleKeydown)\n if (this.#typeTimer) clearTimeout(this.#typeTimer)\n }\n\n // ── List: Selection ────────────────────────────────────\n\n #listSelectOption(opt: HTMLElement): void {\n if (!this.multiple) {\n for (const o of this.options) {\n o.removeAttribute('selected')\n }\n }\n\n const wasSelected = opt.hasAttribute('selected')\n if (this.multiple && wasSelected) {\n opt.removeAttribute('selected')\n } else {\n opt.setAttribute('selected', '')\n }\n\n this.#listSyncValue()\n\n this.dispatchEvent(new CustomEvent('change', {\n bubbles: true,\n detail: {\n value: this.value,\n option: opt,\n label: (opt as any).displayLabel ?? opt.textContent?.trim() ?? '',\n },\n }))\n }\n\n #listSyncValue(): void {\n const selected = this.options.filter(o => o.hasAttribute('selected'))\n if (this.multiple) {\n this.value = selected.map(o => o.getAttribute('value') ?? o.textContent?.trim() ?? '').join(',')\n } else {\n const opt = selected[0]\n this.value = opt?.getAttribute('value') ?? opt?.textContent?.trim() ?? ''\n }\n this.#internals.setFormValue(this.value || null)\n }\n\n #listSyncSelection(): void {\n const values = this.value.split(',').map(v => v.trim()).filter(Boolean)\n for (const opt of this.options) {\n const optVal = opt.getAttribute('value') ?? opt.textContent?.trim() ?? ''\n if (values.includes(optVal)) {\n opt.setAttribute('selected', '')\n } else {\n opt.removeAttribute('selected')\n }\n }\n }\n\n // ── List: Active (keyboard highlight) ──────────────────\n\n #listSetActive(index: number): void {\n const opts = this.enabledOptions\n if (opts.length === 0) return\n\n this.#listClearActive()\n\n this.#listActiveIndex = Math.max(0, Math.min(index, opts.length - 1))\n const opt = opts[this.#listActiveIndex]\n opt.setAttribute('data-navigate-active', '')\n opt.scrollIntoView({ block: 'nearest' })\n\n if (opt.id) {\n this.setAttribute('aria-activedescendant', opt.id)\n }\n }\n\n #listClearActive(): void {\n for (const opt of this.options) {\n opt.removeAttribute('data-navigate-active')\n }\n this.removeAttribute('aria-activedescendant')\n }\n\n // ── List: Event handlers ───────────────────────────────\n\n #listHandleClick = (e: Event): void => {\n const target = (e.target as HTMLElement).closest('aui-option')\n if (!target || target.hasAttribute('disabled')) return\n\n this.#listSelectOption(target as HTMLElement)\n\n const idx = this.enabledOptions.indexOf(target as HTMLElement)\n if (idx >= 0) this.#listSetActive(idx)\n }\n\n #listHandleKeydown = (e: KeyboardEvent): void => {\n const opts = this.enabledOptions\n if (opts.length === 0) return\n\n switch (e.key) {\n case 'ArrowDown': {\n e.preventDefault()\n const next = this.#listActiveIndex < opts.length - 1 ? this.#listActiveIndex + 1 : 0\n this.#listSetActive(next)\n break\n }\n case 'ArrowUp': {\n e.preventDefault()\n const prev = this.#listActiveIndex > 0 ? this.#listActiveIndex - 1 : opts.length - 1\n this.#listSetActive(prev)\n break\n }\n case 'Home': {\n e.preventDefault()\n this.#listSetActive(0)\n break\n }\n case 'End': {\n e.preventDefault()\n this.#listSetActive(opts.length - 1)\n break\n }\n case 'Enter':\n case ' ': {\n e.preventDefault()\n const active = opts[this.#listActiveIndex]\n if (active) this.#listSelectOption(active)\n break\n }\n default: {\n // Type-ahead\n if (e.key.length === 1 && !e.ctrlKey && !e.metaKey) {\n this.#listHandleTypeAhead(e.key)\n }\n }\n }\n }\n\n #listHandleTypeAhead(char: string): void {\n this.#typeBuffer += char.toLowerCase()\n if (this.#typeTimer) clearTimeout(this.#typeTimer)\n this.#typeTimer = setTimeout(() => { this.#typeBuffer = '' }, 500)\n\n const opts = this.enabledOptions\n const match = opts.findIndex(o => {\n const label = (o as any).displayLabel?.toLowerCase() ?? o.textContent?.trim().toLowerCase() ?? ''\n return label.startsWith(this.#typeBuffer)\n })\n\n if (match >= 0) this.#listSetActive(match)\n }\n\n // ════════════════════════════════════════════════════════════\n // MODE: Combobox (searchable dropdown)\n // ════════════════════════════════════════════════════════════\n\n #activateCombobox(): void {\n const id = `combobox-${crypto.randomUUID().slice(0, 8)}`\n this.#anchorName = `--${id}`\n\n // Stamp contenteditable search surface\n this.#comboSurface = document.createElement('span')\n this.#comboSurface.setAttribute('data-input', '')\n this.#comboSurface.setAttribute('contenteditable', 'plaintext-only')\n this.#comboSurface.setAttribute('role', 'combobox')\n this.#comboSurface.setAttribute('aria-haspopup', 'listbox')\n this.#comboSurface.setAttribute('aria-autocomplete', 'list')\n this.#comboSurface.setAttribute('tabindex', '0')\n this.#comboSurface.id = id\n\n // Stamp popover + listbox\n this.#comboPopover = document.createElement('div')\n this.#comboPopover.setAttribute('popover', 'manual')\n this.#comboPopover.setAttribute('data-dropdown', '')\n\n this.#comboListbox = document.createElement('aui-listbox')\n this.#comboListbox.id = `${id}-listbox`\n this.#comboSurface.setAttribute('aria-controls', this.#comboListbox.id)\n this.#comboPopover.appendChild(this.#comboListbox)\n\n // Move child options into listbox\n const children = Array.from(this.children)\n for (const child of children) {\n if (isOptionOrGroup(child)) {\n this.#comboListbox.appendChild(child)\n }\n }\n this.#allComboOptions = Array.from(this.#comboListbox.querySelectorAll('aui-option'))\n\n this.appendChild(this.#comboSurface!)\n this.appendChild(this.#comboPopover!)\n\n ;(this.#comboSurface!.style as any).anchorName = this.#anchorName\n this.style.setProperty('--_anchor', this.#anchorName)\n\n // Sync state\n this.addEffect(() => {\n const locked = this.disabled\n this.#comboSurface!.setAttribute('contenteditable', locked ? 'false' : 'plaintext-only')\n this.#comboSurface!.setAttribute('tabindex', locked ? '-1' : '0')\n this.#comboSurface!.setAttribute('aria-expanded', String(this.open))\n this.#comboSurface!.setAttribute('data-placeholder', this.placeholder || '')\n this.#internals.setFormValue(this.value || null)\n\n const empty = !(this.#comboSurface!.textContent?.trim())\n this.toggleAttribute('data-input-empty', empty)\n })\n\n // Set initial display value\n if (this.value) {\n const match = this.#allComboOptions.find(\n o => (o.getAttribute('value') ?? o.textContent?.trim()) === this.value\n )\n if (match && this.#comboSurface) {\n this.#comboSurface.textContent = (match as any).displayLabel ?? match.textContent?.trim() ?? ''\n }\n }\n\n this.#comboSurface.addEventListener('input', this.#comboHandleInput)\n this.#comboSurface.addEventListener('focus', this.#comboHandleFocus)\n this.#comboSurface.addEventListener('keydown', this.#comboHandleKeydown)\n this.#comboListbox.addEventListener('change', this.#comboHandleListboxChange as EventListener)\n this.#comboListbox.addEventListener('keydown', this.#comboHandleListboxKeydown)\n document.addEventListener('click', this.#comboHandleOutsideClick)\n }\n\n #disposeCombobox(): void {\n this.#comboSurface?.removeEventListener('input', this.#comboHandleInput)\n this.#comboSurface?.removeEventListener('focus', this.#comboHandleFocus)\n this.#comboSurface?.removeEventListener('keydown', this.#comboHandleKeydown)\n this.#comboListbox?.removeEventListener('change', this.#comboHandleListboxChange as EventListener)\n this.#comboListbox?.removeEventListener('keydown', this.#comboHandleListboxKeydown)\n document.removeEventListener('click', this.#comboHandleOutsideClick)\n this.#closePopover()\n }\n\n #comboFilter(query: string): void {\n const q = query.toLowerCase()\n for (const opt of this.#allComboOptions) {\n const label = (opt as any).displayLabel?.toLowerCase() ?? opt.textContent?.trim().toLowerCase() ?? ''\n opt.style.display = (!q || label.includes(q)) ? '' : 'none'\n }\n // Filter groups — hide groups with no visible options\n const groups = this.#comboListbox?.querySelectorAll('aui-optgroup') ?? []\n for (const group of groups) {\n const hasVisible = group.querySelector('aui-option:not([style*=\"display: none\"])')\n ;(group as HTMLElement).style.display = hasVisible ? '' : 'none'\n }\n }\n\n #comboHandleInput = (): void => {\n if (!this.open) this.#openPopover()\n this.#comboFilter(this.#comboSurface?.textContent ?? '')\n this.toggleAttribute('data-input-empty', !(this.#comboSurface?.textContent?.trim()))\n }\n\n #comboHandleFocus = (): void => {\n this.#openPopover()\n this.#comboFilter(this.#comboSurface?.textContent ?? '')\n }\n\n #comboHandleKeydown = (e: KeyboardEvent): void => {\n if (e.key === 'Enter') {\n e.preventDefault()\n const lb = this.#comboListbox as any\n const active = lb?.activeOption\n if (active && this.open) active.click()\n } else if (e.key === 'ArrowDown') {\n e.preventDefault()\n if (!this.open) this.#openPopover()\n this.#comboListbox?.focus()\n } else if (e.key === 'Escape') {\n this.#closePopover()\n }\n }\n\n #comboHandleListboxChange = (e: CustomEvent): void => {\n e.stopPropagation()\n this.value = e.detail.value\n this.#internals.setFormValue(this.value || null)\n if (this.#comboSurface) this.#comboSurface.textContent = e.detail.label ?? ''\n this.toggleAttribute('data-input-empty', !this.value)\n this.#closePopover()\n this.#comboSurface?.focus()\n this.#comboFilter('')\n this.dispatchEvent(new CustomEvent('change', { bubbles: true, detail: e.detail }))\n }\n\n #comboHandleListboxKeydown = (e: KeyboardEvent): void => {\n if (e.key === 'Escape') { e.preventDefault(); this.#closePopover(); this.#comboSurface?.focus() }\n else if (e.key === 'Tab') { this.#closePopover() }\n }\n\n #comboHandleOutsideClick = (e: Event): void => {\n if (this.open && !this.contains(e.target as Node)) this.#closePopover()\n }\n}\n","// ── aui-toast ────────────────────────────────────────────────\n//\n// Toast notification — no native <button> elements.\n// Close indicator is a span[role=\"button\"].\n// Imperative API: AuiToast.show({ message, intent, duration }).\n\nimport { AgentElement } from '#element'\nimport type { AttributeSchema } from '#element'\n\nexport interface ToastOptions {\n message: string\n intent?: 'info' | 'success' | 'warning' | 'danger'\n duration?: number\n closeable?: boolean\n}\n\nlet containerEl: HTMLElement | null = null\n\nfunction getContainer(): HTMLElement {\n if (containerEl && containerEl.isConnected) return containerEl\n containerEl = document.querySelector('aui-toast-container')\n if (!containerEl) {\n containerEl = document.createElement('aui-toast-container')\n document.body.appendChild(containerEl)\n }\n return containerEl\n}\n\nexport class AuiToast extends AgentElement {\n static override attributes: AttributeSchema = {\n open: { type: 'boolean', default: false },\n message: { type: 'string', default: '' },\n duration: { type: 'string', default: '4000' },\n closeable: { type: 'boolean', default: true },\n }\n\n declare open: boolean\n declare message: string\n declare duration: string\n declare closeable: boolean\n\n #timer: ReturnType<typeof setTimeout> | null = null\n #closeEl: HTMLElement | null = null\n #content: HTMLElement | null = null\n\n static show(opts: ToastOptions): AuiToast {\n const toast = document.createElement('aui-toast') as AuiToast\n toast.setAttribute('message', opts.message)\n if (opts.intent) toast.setAttribute(opts.intent, '')\n if (opts.duration !== undefined) toast.setAttribute('duration', String(opts.duration))\n if (opts.closeable === false) toast.removeAttribute('closeable')\n else toast.setAttribute('closeable', '')\n getContainer().appendChild(toast)\n requestAnimationFrame(() => toast.setAttribute('open', ''))\n return toast\n }\n\n protected override activate(): void {\n this.setAttribute('role', 'status')\n this.setAttribute('aria-live', 'polite')\n\n this.#content = document.createElement('span')\n this.#content.setAttribute('data-message', '')\n this.appendChild(this.#content)\n\n this.#closeEl = document.createElement('span')\n this.#closeEl.setAttribute('data-close', '')\n this.#closeEl.setAttribute('role', 'button')\n this.#closeEl.setAttribute('tabindex', '0')\n this.#closeEl.setAttribute('aria-label', 'Dismiss')\n this.#closeEl.textContent = '✕'\n this.appendChild(this.#closeEl)\n\n this.addEffect(() => {\n if (this.#content) this.#content.textContent = this.message\n })\n\n this.addEffect(() => {\n if (this.#closeEl) {\n this.#closeEl.style.display = this.closeable ? '' : 'none'\n }\n })\n\n this.addEffect(() => {\n if (this.#timer) clearTimeout(this.#timer)\n if (this.open) {\n const ms = parseInt(this.duration, 10) || 4000\n if (ms > 0) {\n this.#timer = setTimeout(() => this.dismiss(), ms)\n }\n }\n })\n\n this.#closeEl.addEventListener('click', this.#handleClose)\n this.#closeEl.addEventListener('keydown', this.#handleCloseKeydown)\n }\n\n protected override dispose(): void {\n if (this.#timer) clearTimeout(this.#timer)\n this.#closeEl?.removeEventListener('click', this.#handleClose)\n this.#closeEl?.removeEventListener('keydown', this.#handleCloseKeydown)\n }\n\n dismiss(): void {\n this.open = false\n this.dispatchEvent(new Event('dismiss', { bubbles: true }))\n setTimeout(() => this.remove(), 200)\n }\n\n #handleClose = (e: Event): void => {\n e.stopPropagation()\n this.dismiss()\n }\n\n #handleCloseKeydown = (e: KeyboardEvent): void => {\n if (e.key === 'Enter' || e.key === ' ') {\n e.preventDefault()\n this.dismiss()\n }\n }\n}\n","// ── aui-tabs ─────────────────────────────────────────────────\n//\n// Tabbed interface coordinator. Contains aui-tab triggers and\n// aui-tab-panel content. Handles selection, keyboard navigation\n// (roving tabindex with arrow keys), and ARIA wiring.\n//\n// Structure:\n// <aui-tabs value=\"general\">\n// <aui-tab value=\"general\">General</aui-tab>\n// <aui-tab value=\"advanced\">Advanced</aui-tab>\n// <aui-tab-panel value=\"general\">…</aui-tab-panel>\n// <aui-tab-panel value=\"advanced\">…</aui-tab-panel>\n// </aui-tabs>\n\nimport { AgentElement } from '#element'\nimport type { AttributeSchema } from '#element'\n\nexport class AuiTabs extends AgentElement {\n static override attributes: AttributeSchema = {\n value: { type: 'string', default: '' },\n orientation: { type: 'enum', values: ['vertical'], default: '' },\n }\n\n declare value: string\n declare orientation: string\n\n protected override activate(): void {\n this.setAttribute('role', 'tablist')\n\n this.addEffect(() => {\n if (this.orientation) {\n this.setAttribute('aria-orientation', this.orientation)\n } else {\n this.removeAttribute('aria-orientation')\n }\n })\n\n // Wire ARIA ids between tabs and panels\n this.#wireAria()\n\n // Set tab count for CSS grid\n this.style.setProperty('--_tab-count', String(this.#tabs.length))\n\n // Sync selection\n this.addEffect(() => {\n this.#syncSelection()\n })\n\n // Auto-select first tab if no value set\n if (!this.value) {\n const firstTab = this.querySelector('aui-tab:not([disabled])')\n if (firstTab) {\n this.value = firstTab.getAttribute('value') ?? ''\n }\n }\n\n this.addEventListener('click', this.#handleClick)\n this.addEventListener('keydown', this.#handleKeydown)\n }\n\n protected override dispose(): void {\n this.removeEventListener('click', this.#handleClick)\n this.removeEventListener('keydown', this.#handleKeydown)\n }\n\n // ── Internal ──────────────────────────────────────────\n\n get #tabs(): HTMLElement[] {\n return Array.from(this.querySelectorAll('aui-tab'))\n }\n\n get #enabledTabs(): HTMLElement[] {\n return this.#tabs.filter(t => !t.hasAttribute('disabled'))\n }\n\n get #panels(): HTMLElement[] {\n return Array.from(this.querySelectorAll('aui-tab-panel'))\n }\n\n #wireAria(): void {\n const tabs = this.#tabs\n const panels = this.#panels\n\n for (const tab of tabs) {\n const val = tab.getAttribute('value') ?? ''\n if (!tab.id) tab.id = `tab-${val}-${crypto.randomUUID().slice(0, 4)}`\n\n const panel = panels.find(p => p.getAttribute('value') === val)\n if (panel) {\n if (!panel.id) panel.id = `panel-${val}-${crypto.randomUUID().slice(0, 4)}`\n tab.setAttribute('aria-controls', panel.id)\n panel.setAttribute('aria-labelledby', tab.id)\n }\n }\n }\n\n #syncSelection(): void {\n const val = this.value\n const tabs = this.#tabs\n let selectedIdx = -1\n\n for (let i = 0; i < tabs.length; i++) {\n const isSelected = tabs[i].getAttribute('value') === val\n if (isSelected) {\n tabs[i].setAttribute('selected', '')\n selectedIdx = i\n } else {\n tabs[i].removeAttribute('selected')\n }\n }\n\n for (const panel of this.#panels) {\n const isActive = panel.getAttribute('value') === val\n if (isActive) panel.setAttribute('active', '')\n else panel.removeAttribute('active')\n }\n\n // Update indicator position via CSS custom properties\n this.style.setProperty('--_tab-count', String(tabs.length))\n if (selectedIdx >= 0) {\n this.style.setProperty('--_indicator-index', String(selectedIdx))\n this.setAttribute('data-indicator-ready', '')\n } else {\n this.removeAttribute('data-indicator-ready')\n }\n }\n\n #select(tab: HTMLElement): void {\n if (tab.hasAttribute('disabled')) return\n const val = tab.getAttribute('value') ?? ''\n this.value = val\n\n this.dispatchEvent(new CustomEvent('change', {\n bubbles: true,\n detail: { value: val },\n }))\n }\n\n #handleClick = (e: Event): void => {\n const tab = (e.target as HTMLElement).closest('aui-tab')\n if (tab && this.contains(tab)) {\n this.#select(tab as HTMLElement)\n }\n }\n\n #handleKeydown = (e: KeyboardEvent): void => {\n const target = e.target as HTMLElement\n if (target.tagName !== 'AUI-TAB') return\n\n const isVertical = this.orientation === 'vertical'\n const forward = isVertical ? 'ArrowDown' : 'ArrowRight'\n const backward = isVertical ? 'ArrowUp' : 'ArrowLeft'\n\n const tabs = this.#enabledTabs\n const idx = tabs.indexOf(target)\n if (idx < 0) return\n\n let next: number | undefined\n\n switch (e.key) {\n case forward:\n next = idx < tabs.length - 1 ? idx + 1 : 0\n break\n case backward:\n next = idx > 0 ? idx - 1 : tabs.length - 1\n break\n case 'Home':\n next = 0\n break\n case 'End':\n next = tabs.length - 1\n break\n default:\n return\n }\n\n e.preventDefault()\n const nextTab = tabs[next]\n nextTab.focus()\n this.#select(nextTab)\n }\n}\n","// ── aui-tab ──────────────────────────────────────────────────\n//\n// Individual tab trigger within aui-tabs. Lightweight — most\n// behavior is coordinated by the parent tabs component.\n\nimport { AgentElement } from '#element'\nimport type { AttributeSchema } from '#element'\n\nexport class AuiTab extends AgentElement {\n static override attributes: AttributeSchema = {\n value: { type: 'string', default: '' },\n disabled: { type: 'boolean', default: false },\n selected: { type: 'boolean', default: false },\n }\n\n declare value: string\n declare disabled: boolean\n declare selected: boolean\n\n protected override activate(): void {\n this.setAttribute('role', 'tab')\n\n if (!this.hasAttribute('tabindex')) {\n this.setAttribute('tabindex', this.selected ? '0' : '-1')\n }\n\n this.addEffect(() => {\n this.setAttribute('aria-selected', String(this.selected))\n this.setAttribute('aria-disabled', String(this.disabled))\n this.setAttribute('tabindex', this.selected ? '0' : '-1')\n })\n }\n}\n","// ── aui-tab-panel ────────────────────────────────────────────\n//\n// Content panel associated with a tab. Shown/hidden by the\n// parent aui-tabs based on the active tab value.\n\nimport { AgentElement } from '#element'\nimport type { AttributeSchema } from '#element'\n\nexport class AuiTabPanel extends AgentElement {\n static override attributes: AttributeSchema = {\n value: { type: 'string', default: '' },\n active: { type: 'boolean', default: false },\n }\n\n declare value: string\n declare active: boolean\n\n protected override activate(): void {\n this.setAttribute('role', 'tabpanel')\n\n this.addEffect(() => {\n this.setAttribute('aria-hidden', String(!this.active))\n if (!this.active) {\n this.setAttribute('tabindex', '-1')\n } else {\n this.setAttribute('tabindex', '0')\n }\n })\n }\n}\n","// ── aui-accordion ────────────────────────────────────────────\n//\n// Coordinator for aui-accordion-item children.\n// Enforces single-open behavior when `multiple` is not set.\n\nimport { AgentElement } from '#element'\nimport type { AttributeSchema } from '#element'\n\nexport class AuiAccordion extends AgentElement {\n static override attributes: AttributeSchema = {\n multiple: { type: 'boolean', default: false },\n caret: { type: 'enum', values: ['leading', 'trailing'], default: 'leading' },\n }\n\n declare multiple: boolean\n declare caret: string\n\n protected override activate(): void {\n this.addEventListener('toggle', this.#handleToggle)\n }\n\n protected override dispose(): void {\n this.removeEventListener('toggle', this.#handleToggle)\n }\n\n #handleToggle = (e: Event): void => {\n if (this.multiple) return\n\n const target = e.target as HTMLElement\n if (target.tagName !== 'AUI-ACCORDION-ITEM') return\n if (!target.hasAttribute('open')) return\n\n // Close all other items\n const items = this.querySelectorAll('aui-accordion-item[open]')\n for (const item of items) {\n if (item !== target) {\n item.removeAttribute('open')\n }\n }\n }\n}\n","// ── aui-accordion-item ───────────────────────────────────────\n//\n// Collapsible section — no native <details>/<summary>.\n// Uses [data-header] as the trigger and [data-content] as the\n// collapsible panel. Open/close driven by the [open] attribute.\n\nimport { AgentElement } from '#element'\nimport type { AttributeSchema } from '#element'\n\nexport class AuiAccordionItem extends AgentElement {\n static override attributes: AttributeSchema = {\n open: { type: 'boolean', default: false },\n disabled: { type: 'boolean', default: false },\n }\n\n declare open: boolean\n declare disabled: boolean\n\n #header: HTMLElement | null = null\n #content: HTMLElement | null = null\n\n protected override activate(): void {\n // Find or stamp header\n this.#header = this.querySelector('[data-header]')\n if (!this.#header) {\n this.#header = document.createElement('div')\n this.#header.setAttribute('data-header', '')\n this.#header.setAttribute('role', 'button')\n this.#header.setAttribute('tabindex', '0')\n\n // Stamp chevron using aui-icon\n const chevron = document.createElement('aui-icon')\n chevron.setAttribute('name', 'caret-right')\n chevron.setAttribute('data-chevron', '')\n this.#header.appendChild(chevron)\n\n // Move [data-trigger] content into header, or use first element child\n const triggerEl = this.querySelector('[data-trigger]')\n if (triggerEl) {\n this.#header.appendChild(triggerEl)\n } else {\n // First element child becomes the trigger label\n const firstEl = Array.from(this.childNodes).find(\n c => c.nodeType === Node.ELEMENT_NODE\n ) as HTMLElement | undefined\n if (firstEl) {\n this.#header.appendChild(firstEl)\n }\n }\n\n // Wrap remaining children in content panel\n this.#content = document.createElement('div')\n this.#content.setAttribute('data-content', '')\n while (this.firstChild && this.firstChild !== this.#header) {\n this.#content.appendChild(this.firstChild)\n }\n\n this.appendChild(this.#header)\n this.appendChild(this.#content)\n } else {\n this.#content = this.querySelector('[data-content]')\n }\n\n // ARIA\n const headerId = `acc-h-${crypto.randomUUID().slice(0, 6)}`\n const contentId = `acc-c-${crypto.randomUUID().slice(0, 6)}`\n this.#header.id = headerId\n if (this.#content) {\n this.#content.id = contentId\n this.#content.setAttribute('role', 'region')\n this.#content.setAttribute('aria-labelledby', headerId)\n }\n this.#header.setAttribute('aria-controls', contentId)\n\n this.addEffect(() => {\n this.#header!.setAttribute('aria-expanded', String(this.open))\n this.#header!.setAttribute('aria-disabled', String(this.disabled))\n })\n\n this.#header.addEventListener('click', this.#handleClick)\n this.#header.addEventListener('keydown', this.#handleKeydown)\n }\n\n protected override dispose(): void {\n this.#header?.removeEventListener('click', this.#handleClick)\n this.#header?.removeEventListener('keydown', this.#handleKeydown)\n }\n\n #toggle(): void {\n if (this.disabled) return\n this.open = !this.open\n this.dispatchEvent(new CustomEvent('toggle', { bubbles: true, detail: { open: this.open } }))\n }\n\n #handleClick = (): void => { this.#toggle() }\n\n #handleKeydown = (e: KeyboardEvent): void => {\n if (e.key === 'Enter' || e.key === ' ') {\n e.preventDefault()\n this.#toggle()\n }\n }\n}\n","// ── aui-breadcrumb ───────────────────────────────────────────\n//\n// Breadcrumb navigation container. Sets nav + aria-label.\n// Children are aui-breadcrumb-item elements.\n\nimport { AgentElement } from '#element'\nimport type { AttributeSchema } from '#element'\n\nexport class AuiBreadcrumb extends AgentElement {\n static override attributes: AttributeSchema = {\n label: { type: 'string', default: 'Breadcrumb' },\n joiner: { type: 'string', default: '/' },\n }\n\n declare label: string\n declare joiner: string\n\n protected override activate(): void {\n this.setAttribute('role', 'navigation')\n\n this.addEffect(() => {\n this.setAttribute('aria-label', this.label || 'Breadcrumb')\n this.style.setProperty('--_joiner', `\"${this.joiner || '/'}\"`)\n })\n }\n}\n","// ── aui-breadcrumb-item ──────────────────────────────────────\n//\n// Individual breadcrumb link or current-page indicator.\n// Lightweight — mostly CSS-driven.\n\nimport { AgentElement } from '#element'\nimport type { AttributeSchema } from '#element'\n\nexport class AuiBreadcrumbItem extends AgentElement {\n static override attributes: AttributeSchema = {\n href: { type: 'string', default: '' },\n current: { type: 'boolean', default: false },\n }\n\n declare href: string\n declare current: boolean\n\n #link: HTMLAnchorElement | null = null\n\n protected override activate(): void {\n this.addEffect(() => {\n if (this.current) {\n this.setAttribute('aria-current', 'page')\n } else {\n this.removeAttribute('aria-current')\n }\n })\n\n // Stamp <a> if href is set and not already present\n this.addEffect(() => {\n if (this.href && !this.current) {\n if (!this.#link) {\n this.#link = document.createElement('a')\n // Move text content into link\n while (this.firstChild && this.firstChild !== this.#link) {\n this.#link.appendChild(this.firstChild)\n }\n this.appendChild(this.#link)\n }\n this.#link.href = this.href\n }\n })\n }\n}\n","// ── aui-segmented-control ────────────────────────────────────\n//\n// Toggle between mutually exclusive options.\n// Floating indicator element animates between segments via\n// CSS transform — GPU-accelerated, no @property needed.\n\nimport { AgentElement } from '#element'\nimport type { AttributeSchema } from '#element'\n\nexport class AuiSegmentedControl extends AgentElement {\n static formAssociated = true\n\n static override attributes: AttributeSchema = {\n value: { type: 'string', default: '' },\n name: { type: 'string', default: '' },\n }\n\n declare value: string\n declare name: string\n\n #internals: ElementInternals\n #indicator: HTMLElement | null = null\n\n constructor() {\n super()\n this.#internals = this.attachInternals()\n this.#internals.role = 'radiogroup'\n }\n\n protected override activate(): void {\n this.addEffect(() => {\n this.#internals.setFormValue(this.value || null)\n this.#syncSelection()\n this.#updateIndicator()\n })\n\n if (!this.value) {\n const first = this.querySelector('aui-segment:not([disabled])')\n if (first) this.value = first.getAttribute('value') ?? ''\n }\n\n this.addEventListener('click', this.#handleClick)\n this.addEventListener('keydown', this.#handleKeydown)\n }\n\n protected override dispose(): void {\n this.removeEventListener('click', this.#handleClick)\n this.removeEventListener('keydown', this.#handleKeydown)\n }\n\n formDisabledCallback(disabled: boolean): void {\n for (const seg of this.#segments) seg.toggleAttribute('disabled', disabled)\n }\n\n formResetCallback(): void {\n const first = this.querySelector('aui-segment:not([disabled])')\n this.value = first?.getAttribute('value') ?? ''\n }\n\n get #segments(): HTMLElement[] {\n return Array.from(this.querySelectorAll('aui-segment'))\n }\n\n get #enabledSegments(): HTMLElement[] {\n return this.#segments.filter(s => !s.hasAttribute('disabled'))\n }\n\n #syncSelection(): void {\n for (const seg of this.#segments) {\n if (seg.getAttribute('value') === this.value) {\n seg.setAttribute('selected', '')\n } else {\n seg.removeAttribute('selected')\n }\n }\n }\n\n #updateIndicator(): void {\n const segs = this.#segments\n const selectedIdx = segs.findIndex(s => s.getAttribute('value') === this.value)\n\n if (selectedIdx < 0) {\n this.removeAttribute('data-indicator-ready')\n return\n }\n\n // Lazy-create floating indicator (real DOM element, not pseudo)\n if (!this.#indicator) {\n this.#indicator = document.createElement('div')\n this.#indicator.setAttribute('data-indicator', '')\n this.prepend(this.#indicator)\n }\n\n this.style.setProperty('--_segment-count', `${segs.length}`)\n this.#indicator.style.transform = `translateX(${selectedIdx * 100}%)`\n this.setAttribute('data-indicator-ready', '')\n }\n\n #select(seg: HTMLElement): void {\n if (seg.hasAttribute('disabled')) return\n this.value = seg.getAttribute('value') ?? ''\n this.dispatchEvent(new CustomEvent('change', { bubbles: true, detail: { value: this.value } }))\n }\n\n #handleClick = (e: Event): void => {\n const seg = (e.target as HTMLElement).closest('aui-segment')\n if (seg && this.contains(seg)) this.#select(seg as HTMLElement)\n }\n\n #handleKeydown = (e: KeyboardEvent): void => {\n const target = e.target as HTMLElement\n if (target.tagName !== 'AUI-SEGMENT') return\n const segs = this.#enabledSegments\n const idx = segs.indexOf(target)\n if (idx < 0) return\n let next: number | undefined\n switch (e.key) {\n case 'ArrowRight': case 'ArrowDown': next = idx < segs.length - 1 ? idx + 1 : 0; break\n case 'ArrowLeft': case 'ArrowUp': next = idx > 0 ? idx - 1 : segs.length - 1; break\n case 'Home': next = 0; break\n case 'End': next = segs.length - 1; break\n default: return\n }\n e.preventDefault()\n segs[next].focus()\n this.#select(segs[next])\n }\n}\n","// ── aui-segment ──────────────────────────────────────────────\n//\n// Individual segment within aui-segmented-control.\n// Lightweight — selection coordinated by parent.\n\nimport { AgentElement } from '#element'\nimport type { AttributeSchema } from '#element'\n\nexport class AuiSegment extends AgentElement {\n static override attributes: AttributeSchema = {\n value: { type: 'string', default: '' },\n disabled: { type: 'boolean', default: false },\n selected: { type: 'boolean', default: false },\n }\n\n declare value: string\n declare disabled: boolean\n declare selected: boolean\n\n protected override activate(): void {\n this.setAttribute('role', 'radio')\n\n if (!this.hasAttribute('tabindex')) {\n this.setAttribute('tabindex', this.selected ? '0' : '-1')\n }\n\n this.addEffect(() => {\n this.setAttribute('aria-checked', String(this.selected))\n this.setAttribute('aria-disabled', String(this.disabled))\n this.setAttribute('tabindex', this.selected ? '0' : '-1')\n })\n }\n}\n","// ── aui-pagination ───────────────────────────────────────────\n//\n// Page navigation — no native <button> elements.\n// Stamps span[role=\"button\"] for page numbers and prev/next.\n\nimport { AgentElement } from '#element'\nimport type { AttributeSchema } from '#element'\n\nexport class AuiPagination extends AgentElement {\n static override attributes: AttributeSchema = {\n page: { type: 'string', default: '1' },\n total: { type: 'string', default: '1' },\n siblings: { type: 'string', default: '1' },\n }\n\n declare page: string\n declare total: string\n declare siblings: string\n\n protected override activate(): void {\n this.setAttribute('role', 'navigation')\n this.setAttribute('aria-label', 'Pagination')\n\n this.addEffect(() => { this.#render() })\n this.addEventListener('click', this.#handleClick)\n this.addEventListener('keydown', this.#handleKeydown)\n }\n\n protected override dispose(): void {\n this.removeEventListener('click', this.#handleClick)\n this.removeEventListener('keydown', this.#handleKeydown)\n }\n\n #render(): void {\n const current = parseInt(this.page, 10) || 1\n const total = parseInt(this.total, 10) || 1\n const siblings = parseInt(this.siblings, 10) || 1\n const pages = this.#computePages(current, total, siblings)\n\n this.innerHTML = ''\n\n const prev = this.#createPageEl('‹', current - 1, current <= 1)\n prev.setAttribute('aria-label', 'Previous page')\n prev.setAttribute('data-pagination-prev', '')\n this.appendChild(prev)\n\n for (const p of pages) {\n if (p === '…') {\n const el = document.createElement('span')\n el.setAttribute('data-pagination-ellipsis', '')\n el.textContent = '…'\n this.appendChild(el)\n } else {\n const num = p as number\n const el = this.#createPageEl(String(num), num, false)\n if (num === current) {\n el.setAttribute('aria-current', 'page')\n el.setAttribute('data-pagination-current', '')\n }\n this.appendChild(el)\n }\n }\n\n const next = this.#createPageEl('›', current + 1, current >= total)\n next.setAttribute('aria-label', 'Next page')\n next.setAttribute('data-pagination-next', '')\n this.appendChild(next)\n }\n\n #createPageEl(label: string, page: number, disabled: boolean): HTMLElement {\n const el = document.createElement('span')\n el.setAttribute('role', 'button')\n el.setAttribute('tabindex', disabled ? '-1' : '0')\n el.setAttribute('data-pagination-page', String(page))\n el.textContent = label\n if (disabled) el.setAttribute('aria-disabled', 'true')\n return el\n }\n\n #computePages(current: number, total: number, siblings: number): (number | '…')[] {\n if (total <= (siblings * 2 + 5)) {\n return Array.from({ length: total }, (_, i) => i + 1)\n }\n const pages: (number | '…')[] = []\n const leftSibling = Math.max(current - siblings, 2)\n const rightSibling = Math.min(current + siblings, total - 1)\n\n pages.push(1)\n if (leftSibling > 2) pages.push('…')\n else for (let i = 2; i < leftSibling; i++) pages.push(i)\n for (let i = leftSibling; i <= rightSibling; i++) pages.push(i)\n if (rightSibling < total - 1) pages.push('…')\n else for (let i = rightSibling + 1; i < total; i++) pages.push(i)\n pages.push(total)\n return pages\n }\n\n #handleClick = (e: Event): void => {\n const el = (e.target as HTMLElement).closest('[data-pagination-page]')\n if (!el || el.getAttribute('aria-disabled') === 'true') return\n const newPage = parseInt(el.getAttribute('data-pagination-page') ?? '', 10)\n if (isNaN(newPage)) return\n this.page = String(newPage)\n this.dispatchEvent(new CustomEvent('change', { bubbles: true, detail: { page: newPage } }))\n }\n\n #handleKeydown = (e: KeyboardEvent): void => {\n if (e.key === 'Enter' || e.key === ' ') {\n const el = e.target as HTMLElement\n if (el.hasAttribute('data-pagination-page')) { e.preventDefault(); el.click() }\n }\n }\n}\n","// ── aui-command ──────────────────────────────────────────────\n//\n// Command palette root. Composes: aui-command-input (search),\n// aui-command-list (scrollable results), aui-command-item (actions),\n// aui-command-group (grouping), aui-command-empty (no results).\n//\n// Handles: filtering, keyboard navigation (arrow/enter/escape),\n// active item tracking, and event dispatch.\n//\n// Designed to be placed inside aui-dialog for modal usage.\n\nimport { AgentElement } from '#element'\n\nexport class AuiCommand extends AgentElement {\n #activeIndex = -1\n\n protected override activate(): void {\n this.setAttribute('role', 'search')\n\n // Listen for input from command-input\n this.addEventListener('input', this.#handleInput)\n this.addEventListener('keydown', this.#handleKeydown)\n this.addEventListener('click', this.#handleClick)\n\n // Highlight first item\n requestAnimationFrame(() => {\n this.#setActive(0)\n })\n }\n\n protected override dispose(): void {\n this.removeEventListener('input', this.#handleInput)\n this.removeEventListener('keydown', this.#handleKeydown)\n this.removeEventListener('click', this.#handleClick)\n }\n\n // ── Queries ───────────────────────────────────────────\n\n get #items(): HTMLElement[] {\n return Array.from(this.querySelectorAll('aui-command-item'))\n }\n\n get #visibleItems(): HTMLElement[] {\n return this.#items.filter(i => !i.hasAttribute('hidden') && !i.hasAttribute('disabled'))\n }\n\n get #inputEl(): HTMLElement | null {\n return this.querySelector('aui-command-input')\n }\n\n get #emptyEl(): HTMLElement | null {\n return this.querySelector('aui-command-empty')\n }\n\n get #listEl(): HTMLElement | null {\n return this.querySelector('aui-command-list')\n }\n\n // ── Filtering ─────────────────────────────────────────\n\n #filter(query: string): void {\n const q = query.toLowerCase().trim()\n\n for (const item of this.#items) {\n const text = (item as any).searchText ?? item.textContent?.toLowerCase() ?? ''\n const matches = !q || text.includes(q)\n item.toggleAttribute('hidden', !matches)\n }\n\n // Toggle empty state\n const visible = this.#visibleItems\n if (this.#emptyEl) {\n this.#emptyEl.toggleAttribute('hidden', visible.length > 0)\n }\n\n // Reset active to first visible\n this.#setActive(0)\n }\n\n // ── Active item tracking ──────────────────────────────\n\n #setActive(index: number): void {\n const items = this.#visibleItems\n if (items.length === 0) {\n this.#activeIndex = -1\n this.#clearActive()\n return\n }\n\n this.#clearActive()\n this.#activeIndex = Math.max(0, Math.min(index, items.length - 1))\n const item = items[this.#activeIndex]\n item.setAttribute('data-navigate-active', '')\n item.scrollIntoView({ block: 'nearest' })\n\n // Update aria-activedescendant on listbox\n if (item.id && this.#listEl) {\n this.#listEl.setAttribute('aria-activedescendant', item.id)\n }\n }\n\n #clearActive(): void {\n for (const item of this.#items) {\n item.removeAttribute('data-navigate-active')\n }\n this.#listEl?.removeAttribute('aria-activedescendant')\n }\n\n // ── Event handlers ────────────────────────────────────\n\n #handleInput = (): void => {\n const query = (this.#inputEl as any)?.query ?? ''\n this.#filter(query)\n }\n\n #handleKeydown = (e: KeyboardEvent): void => {\n const items = this.#visibleItems\n if (items.length === 0 && e.key !== 'Escape') return\n\n switch (e.key) {\n case 'ArrowDown': {\n e.preventDefault()\n const next = this.#activeIndex < items.length - 1 ? this.#activeIndex + 1 : 0\n this.#setActive(next)\n break\n }\n case 'ArrowUp': {\n e.preventDefault()\n const prev = this.#activeIndex > 0 ? this.#activeIndex - 1 : items.length - 1\n this.#setActive(prev)\n break\n }\n case 'Home': {\n e.preventDefault()\n this.#setActive(0)\n break\n }\n case 'End': {\n e.preventDefault()\n this.#setActive(items.length - 1)\n break\n }\n case 'Enter': {\n e.preventDefault()\n const active = items[this.#activeIndex]\n if (active) this.#selectItem(active)\n break\n }\n case 'Escape': {\n this.dispatchEvent(new Event('dismiss', { bubbles: true }))\n break\n }\n }\n }\n\n #handleClick = (e: Event): void => {\n const item = (e.target as HTMLElement).closest('aui-command-item') as HTMLElement | null\n if (!item || item.hasAttribute('disabled') || item.hasAttribute('hidden')) return\n this.#selectItem(item)\n }\n\n #selectItem(item: HTMLElement): void {\n const value = item.getAttribute('value') ?? item.textContent?.trim() ?? ''\n const label = item.textContent?.trim() ?? ''\n\n this.dispatchEvent(new CustomEvent('select', {\n bubbles: true,\n detail: { value, label, item },\n }))\n }\n}\n","// ── aui-command-empty ────────────────────────────────────────\n//\n// Shown when no command items match the search query.\n// CSS-only visibility via [hidden] attribute toggled by parent.\n\nimport { AgentElement } from '#element'\n\nexport class AuiCommandEmpty extends AgentElement {\n protected override activate(): void {\n this.setAttribute('role', 'status')\n // Start hidden — parent command will toggle\n if (!this.hasAttribute('hidden')) {\n this.setAttribute('hidden', '')\n }\n }\n}\n","// ── aui-command-group ────────────────────────────────────────\n//\n// Groups command items under a heading label.\n\nimport { AgentElement } from '#element'\nimport type { AttributeSchema } from '#element'\n\nexport class AuiCommandGroup extends AgentElement {\n static override attributes: AttributeSchema = {\n label: { type: 'string', default: '' },\n }\n\n declare label: string\n\n protected override activate(): void {\n this.setAttribute('role', 'group')\n\n // Stamp heading if label is set\n let heading = this.querySelector('[data-heading]')\n if (!heading && this.label) {\n heading = document.createElement('span')\n heading.setAttribute('data-heading', '')\n heading.id = `cmdg-${crypto.randomUUID().slice(0, 6)}`\n this.prepend(heading)\n }\n\n this.addEffect(() => {\n const h = this.querySelector('[data-heading]')\n if (h) {\n h.textContent = this.label\n this.setAttribute('aria-labelledby', h.id)\n }\n })\n }\n}\n","// ── aui-command-input ────────────────────────────────────────\n//\n// Search input for the command palette.\n// Uses contenteditable span — no native <input>.\n// Fires 'input' events that the parent aui-command listens to.\n\nimport { AgentElement } from '#element'\nimport type { AttributeSchema } from '#element'\n\nexport class AuiCommandInput extends AgentElement {\n static override attributes: AttributeSchema = {\n placeholder: { type: 'string', default: 'Search…' },\n }\n\n declare placeholder: string\n\n #surface: HTMLElement | null = null\n\n get query(): string {\n return this.#surface?.textContent?.trim() ?? ''\n }\n\n set query(val: string) {\n if (this.#surface) this.#surface.textContent = val\n this.#updateEmptyState()\n }\n\n protected override activate(): void {\n this.#surface = this.querySelector('[data-surface]')\n if (!this.#surface) {\n this.#surface = document.createElement('span')\n this.#surface.setAttribute('data-surface', '')\n this.#surface.setAttribute('contenteditable', 'plaintext-only')\n this.#surface.setAttribute('tabindex', '0')\n this.#surface.setAttribute('role', 'searchbox')\n this.#surface.setAttribute('aria-label', 'Search commands')\n this.appendChild(this.#surface)\n }\n\n this.addEffect(() => {\n this.#surface?.setAttribute('data-placeholder', this.placeholder || 'Search…')\n })\n\n this.#updateEmptyState()\n\n this.#surface.addEventListener('input', this.#handleInput)\n this.#surface.addEventListener('keydown', this.#handleKeydown)\n this.#surface.addEventListener('focus', this.#handleFocus)\n }\n\n protected override dispose(): void {\n this.#surface?.removeEventListener('input', this.#handleInput)\n this.#surface?.removeEventListener('keydown', this.#handleKeydown)\n this.#surface?.removeEventListener('focus', this.#handleFocus)\n }\n\n focus(options?: FocusOptions): void {\n this.#surface?.focus(options)\n }\n\n clear(): void {\n if (this.#surface) this.#surface.textContent = ''\n this.#updateEmptyState()\n this.dispatchEvent(new Event('input', { bubbles: true }))\n }\n\n #updateEmptyState(): void {\n this.toggleAttribute('data-input-empty', !this.#surface?.textContent?.trim())\n }\n\n #handleInput = (): void => {\n this.#updateEmptyState()\n this.dispatchEvent(new Event('input', { bubbles: true }))\n }\n\n #handleKeydown = (e: KeyboardEvent): void => {\n // Block Enter (single-line), let ArrowDown/Up/Escape bubble to parent\n if (e.key === 'Enter') {\n e.preventDefault()\n }\n }\n\n #handleFocus = (): void => {\n // Reset caret if empty\n if (!this.#surface?.textContent?.trim()) {\n const sel = window.getSelection()\n sel?.setPosition(this.#surface!, 0)\n }\n }\n}\n","// ── aui-command-item ─────────────────────────────────────────\n//\n// Selectable item within aui-command-list. Lightweight — most\n// behavior coordinated by the parent command component.\n\nimport { AgentElement } from '#element'\nimport type { AttributeSchema } from '#element'\n\nexport class AuiCommandItem extends AgentElement {\n static override attributes: AttributeSchema = {\n value: { type: 'string', default: '' },\n disabled: { type: 'boolean', default: false },\n keywords: { type: 'string', default: '' },\n }\n\n declare value: string\n declare disabled: boolean\n declare keywords: string\n\n /** Combined search text for filtering. */\n get searchText(): string {\n return `${this.textContent?.trim() ?? ''} ${this.value} ${this.keywords}`.toLowerCase()\n }\n\n protected override activate(): void {\n this.setAttribute('role', 'option')\n\n this.addEffect(() => {\n this.setAttribute('aria-disabled', String(this.disabled))\n })\n }\n}\n","// ── aui-command-list ─────────────────────────────────────────\n//\n// Scrollable container for command items and groups.\n\nimport { AgentElement } from '#element'\n\nexport class AuiCommandList extends AgentElement {\n protected override activate(): void {\n this.setAttribute('role', 'listbox')\n }\n}\n","// ── aui-panes ────────────────────────────────────────────────\n//\n// Split-pane layout with pointer-proximity resize between children.\n// No handle elements — hit-tests pointer position against pane\n// boundaries and renders accent bar via ::after on the hovered pane.\n// Light DOM. Children should be <aui-pane> elements.\n//\n// Resize algorithm based on VS Code's SplitView:\n// - Cascade: delta propagates through all panes in each direction\n// - Priority: high-priority panes resize first, low-priority last\n// - Proportional: container resize maintains pane proportions\n// - Constraints: min/max sizes respected at every step\n\nimport { AgentElement } from '#element'\nimport type { AttributeSchema } from '#element'\n\nconst Priority = { High: 0, Normal: 1, Low: 2 } as const\ntype Priority = (typeof Priority)[keyof typeof Priority]\n\nconst clamp = (v: number, min: number, max: number): number =>\n Math.min(max, Math.max(min, v))\n\n/** Resolve --aui-sidebar-width-collapsed to pixels via a temporary element. */\nlet cachedCollapsedWidth: number | null = null\nfunction resolveCollapsedWidth(el: HTMLElement): number {\n if (cachedCollapsedWidth !== null) return cachedCollapsedWidth\n const probe = document.createElement('div')\n probe.style.cssText = 'position:absolute;visibility:hidden;width:var(--aui-sidebar-width-collapsed,2.75rem)'\n el.appendChild(probe)\n cachedCollapsedWidth = probe.offsetWidth || 44\n probe.remove()\n return cachedCollapsedWidth\n}\n\nexport class AuiPanes extends AgentElement {\n static override attributes: AttributeSchema = {\n direction: { type: 'enum', values: ['vertical'], default: '' },\n }\n\n static override deferChildren = true\n\n declare direction: string\n\n #observer: MutationObserver | null = null\n #resizeObserver: ResizeObserver | null = null\n\n // Hover state\n #hoverPane: HTMLElement | null = null\n\n // Resize state\n #activeIndex = -1\n #startSizes: number[] = []\n #panes: HTMLElement[] = []\n #startX = 0\n #startY = 0\n\n // Drag pointer ID (for releasing capture)\n #dragPointerId = -1\n\n // Pixel-based sizes — source of truth during/after resize\n #sizes: number[] = []\n\n // Proportional layout\n #proportions: number[] | null = null\n\n get isVertical(): boolean {\n return this.direction === 'vertical'\n }\n\n protected override activate(): void {\n this.addEventListener('pointermove', this.#onHover)\n this.addEventListener('pointerleave', this.#onLeave)\n // Capture phase so we intercept before children\n this.addEventListener('pointerdown', this.#onPointerDown, true)\n\n this.#initSizes()\n\n this.#observer = new MutationObserver(this.#onChildChange)\n this.#observer.observe(this, {\n childList: true,\n attributes: true,\n attributeFilter: ['hidden', 'minimized', 'priority'],\n subtree: true,\n })\n\n // Observe container resize for proportional layout\n this.#resizeObserver = new ResizeObserver(this.#onContainerResize)\n this.#resizeObserver.observe(this)\n\n // React to direction changes\n this.addEffect(() => {\n // Read direction to track it\n void this.direction\n this.#initSizes()\n })\n }\n\n protected override dispose(): void {\n this.#clearHover()\n this.#cleanupDrag()\n this.#observer?.disconnect()\n this.#observer = null\n this.#resizeObserver?.disconnect()\n this.#resizeObserver = null\n this.removeEventListener('pointermove', this.#onHover)\n this.removeEventListener('pointerleave', this.#onLeave)\n this.removeEventListener('pointerdown', this.#onPointerDown, true)\n }\n\n // ── Pane queries ──\n\n #getVisibleChildren(): HTMLElement[] {\n return Array.from(this.children).filter(\n c => c instanceof HTMLElement && !c.hidden\n ) as HTMLElement[]\n }\n\n #getMinSize(el: HTMLElement): number {\n const v = el.getAttribute('size-min')\n return v ? Number(v) : resolveCollapsedWidth(el)\n }\n\n #getMaxSize(el: HTMLElement): number {\n const v = el.getAttribute('size-max')\n return v ? Number(v) : Infinity\n }\n\n #getPriority(el: HTMLElement): Priority {\n const v = el.getAttribute('priority')\n if (v === 'high') return Priority.High\n if (v === 'low') return Priority.Low\n return Priority.Normal\n }\n\n // ── Size management ──\n\n /** Read current pixel sizes from layout and establish initial state. */\n #initSizes(): void {\n const panes = this.#getVisibleChildren()\n const isVertical = this.isVertical\n\n // Apply declared sizes first\n for (const pane of panes) {\n if (pane.hasAttribute('minimized')) continue\n const fixedSize = pane.getAttribute('fixed-size')\n const basis = pane.getAttribute('basis')\n if (fixedSize && fixedSize !== 'auto') {\n pane.style.flex = `0 1 ${fixedSize}`\n } else if (basis) {\n pane.style.flex = `1 1 ${basis}`\n } else {\n pane.style.removeProperty('flex')\n pane.style.removeProperty('flex-basis')\n }\n }\n\n // Force layout, then read pixel sizes\n const sizes = panes.map(p => {\n const rect = p.getBoundingClientRect()\n return isVertical ? rect.height : rect.width\n })\n\n this.#sizes = sizes\n this.#panes = panes\n this.#saveProportions()\n this.#applySizes()\n }\n\n /** Apply pixel sizes as flex values. */\n #applySizes(): void {\n const panes = this.#getVisibleChildren()\n const total = this.#sizes.reduce((s, v) => s + v, 0)\n if (total <= 0) return\n\n for (let i = 0; i < panes.length; i++) {\n if (panes[i].hasAttribute('minimized')) continue\n const size = this.#sizes[i] ?? 0\n // Use flex-grow proportional to pixel size, flex-basis 0\n panes[i].style.flex = `${size} 1 0px`\n }\n }\n\n /** Save current proportions for proportional container resize. */\n #saveProportions(): void {\n const total = this.#sizes.reduce((s, v) => s + v, 0)\n if (total <= 0) {\n this.#proportions = null\n return\n }\n this.#proportions = this.#sizes.map(s => s / total)\n }\n\n // ── Cascade resize algorithm ──\n\n /**\n * Resize panes at the given sash index by delta pixels.\n * Delta cascades through \"before\" panes (index -> 0) and\n * \"after\" panes (index+1 -> end), respecting min/max constraints\n * and priority ordering.\n */\n #resize(index: number, delta: number, sizes: number[]): number[] {\n const panes = this.#panes\n const result = [...sizes]\n\n // Build index arrays for each side of the sash\n const beforeIndexes: number[] = []\n for (let i = index; i >= 0; i--) beforeIndexes.push(i)\n const afterIndexes: number[] = []\n for (let i = index + 1; i < panes.length; i++) afterIndexes.push(i)\n\n // Sort by priority: high-priority panes consume delta first\n const sortByPriority = (indexes: number[]): number[] => {\n const high: number[] = []\n const normal: number[] = []\n const low: number[] = []\n for (const i of indexes) {\n const p = this.#getPriority(panes[i])\n if (p === Priority.High) high.push(i)\n else if (p === Priority.Low) low.push(i)\n else normal.push(i)\n }\n return [...high, ...normal, ...low]\n }\n\n const sortedBefore = sortByPriority(beforeIndexes)\n const sortedAfter = sortByPriority(afterIndexes)\n\n // Calculate how much delta each side can absorb\n let minDelta = 0\n let maxDelta = 0\n for (const i of sortedBefore) {\n minDelta += this.#getMinSize(panes[i]) - sizes[i]\n maxDelta += this.#getMaxSize(panes[i]) - sizes[i]\n }\n let minDeltaAfter = 0\n let maxDeltaAfter = 0\n for (const i of sortedAfter) {\n minDeltaAfter += sizes[i] - this.#getMaxSize(panes[i])\n maxDeltaAfter += sizes[i] - this.#getMinSize(panes[i])\n }\n\n // Clamp delta to the intersection of both sides' constraints\n const effectiveMin = Math.max(minDelta, minDeltaAfter)\n const effectiveMax = Math.min(maxDelta, maxDeltaAfter)\n delta = clamp(delta, effectiveMin, effectiveMax)\n\n // Distribute delta to \"before\" panes (they grow with positive delta)\n let remaining = delta\n for (const i of sortedBefore) {\n const newSize = clamp(\n sizes[i] + remaining,\n this.#getMinSize(panes[i]),\n this.#getMaxSize(panes[i]),\n )\n const consumed = newSize - sizes[i]\n remaining -= consumed\n result[i] = newSize\n }\n\n // Distribute negative delta to \"after\" panes (they shrink with positive delta)\n remaining = delta\n for (const i of sortedAfter) {\n const newSize = clamp(\n sizes[i] - remaining,\n this.#getMinSize(panes[i]),\n this.#getMaxSize(panes[i]),\n )\n const consumed = sizes[i] - newSize\n remaining -= consumed\n result[i] = newSize\n }\n\n return result\n }\n\n /**\n * After any size change, distribute leftover space (positive or negative)\n * across all panes in priority order.\n */\n #distributeEmptySpace(sizes: number[]): number[] {\n const panes = this.#panes\n const result = [...sizes]\n const containerSize = this.#getContainerSize()\n let emptyDelta = containerSize - result.reduce((s, v) => s + v, 0)\n\n if (Math.abs(emptyDelta) < 0.5) return result\n\n // Build priority-sorted index list\n const high: number[] = []\n const normal: number[] = []\n const low: number[] = []\n for (let i = 0; i < panes.length; i++) {\n const p = this.#getPriority(panes[i])\n if (p === Priority.High) high.push(i)\n else if (p === Priority.Low) low.push(i)\n else normal.push(i)\n }\n const sorted = [...high, ...normal, ...low]\n\n for (let i = 0; Math.abs(emptyDelta) >= 0.5 && i < sorted.length; i++) {\n const idx = sorted[i]\n const pane = panes[idx]\n const newSize = clamp(\n result[idx] + emptyDelta,\n this.#getMinSize(pane),\n this.#getMaxSize(pane),\n )\n const consumed = newSize - result[idx]\n emptyDelta -= consumed\n result[idx] = newSize\n }\n\n return result\n }\n\n #getContainerSize(): number {\n const rect = this.getBoundingClientRect()\n return this.isVertical ? rect.height : rect.width\n }\n\n // ── Proportional container resize ──\n\n #lastContainerSize = 0\n\n #onContainerResize = (): void => {\n // Skip during active drag\n if (this.#activeIndex >= 0) return\n\n const containerSize = this.#getContainerSize()\n if (containerSize <= 0) return\n\n // Skip initial or no-change\n if (this.#lastContainerSize === 0) {\n this.#lastContainerSize = containerSize\n return\n }\n if (Math.abs(containerSize - this.#lastContainerSize) < 1) return\n this.#lastContainerSize = containerSize\n\n const panes = this.#getVisibleChildren()\n if (panes.length === 0) return\n this.#panes = panes\n\n if (this.#proportions && this.#proportions.length === panes.length) {\n // Proportional resize: scale each pane by its saved proportion\n const newSizes = this.#proportions.map((p, i) =>\n clamp(\n Math.round(p * containerSize),\n this.#getMinSize(panes[i]),\n this.#getMaxSize(panes[i]),\n )\n )\n this.#sizes = this.#distributeEmptySpace(newSizes)\n } else {\n // No proportions saved — distribute empty space\n this.#sizes = this.#distributeEmptySpace(this.#sizes)\n }\n\n this.#applySizes()\n }\n\n // ── Boundary hit-testing ──\n\n #hitBoundary(clientX: number, clientY: number): number {\n const panes = this.#getVisibleChildren()\n if (panes.length < 2) return -1\n const isVertical = this.isVertical\n const threshold = 8\n\n for (let i = 0; i < panes.length - 1; i++) {\n const rect = panes[i].getBoundingClientRect()\n const edge = isVertical ? rect.bottom : rect.right\n const pos = isVertical ? clientY : clientX\n if (Math.abs(pos - edge) <= threshold) return i\n }\n return -1\n }\n\n // ── Hover ──\n\n #onHover = (e: PointerEvent): void => {\n if (this.#activeIndex >= 0) return\n const index = this.#hitBoundary(e.clientX, e.clientY)\n const panes = this.#getVisibleChildren()\n\n if (index >= 0) {\n const pane = panes[index]\n if (this.#hoverPane !== pane) {\n this.#clearHover()\n const edge = this.isVertical ? 'bottom' : 'right'\n pane.setAttribute('data-panes-edge-near', edge)\n this.#hoverPane = pane\n }\n } else {\n this.#clearHover()\n }\n }\n\n #onLeave = (): void => {\n if (this.#activeIndex >= 0) return\n this.#clearHover()\n }\n\n #clearHover(): void {\n if (this.#hoverPane) {\n this.#hoverPane.removeAttribute('data-panes-edge-near')\n this.#hoverPane = null\n }\n }\n\n // ── Drag resize ──\n\n #onPointerDown = (e: PointerEvent): void => {\n if (e.button !== 0) return\n const index = this.#hitBoundary(e.clientX, e.clientY)\n if (index < 0) return\n\n e.preventDefault()\n e.stopPropagation()\n this.#clearHover()\n\n this.#activeIndex = index\n this.#panes = this.#getVisibleChildren()\n this.#startX = e.clientX\n this.#startY = e.clientY\n\n // Snapshot current sizes\n const isVertical = this.isVertical\n this.#startSizes = this.#panes.map(p => {\n const rect = p.getBoundingClientRect()\n return isVertical ? rect.height : rect.width\n })\n this.#sizes = [...this.#startSizes]\n\n this.setAttribute('data-panes-resizing', '')\n const edge = isVertical ? 'bottom' : 'right'\n this.#panes[index].setAttribute('data-panes-edge-active', edge)\n\n this.#dragPointerId = e.pointerId\n this.setPointerCapture(e.pointerId)\n document.addEventListener('pointermove', this.#onDragMove)\n document.addEventListener('pointerup', this.#onDragEnd)\n document.addEventListener('pointercancel', this.#onDragCancel)\n document.addEventListener('keydown', this.#onKeyDown)\n }\n\n #onDragMove = (e: PointerEvent): void => {\n if (this.#activeIndex < 0) return\n\n const delta = this.isVertical\n ? e.clientY - this.#startY\n : e.clientX - this.#startX\n\n // Cascade resize from start sizes\n this.#sizes = this.#resize(this.#activeIndex, delta, this.#startSizes)\n this.#applySizes()\n }\n\n #onDragEnd = (): void => {\n if (this.#activeIndex < 0) return\n\n // Read final sizes from layout\n const isVertical = this.isVertical\n this.#sizes = this.#panes.map(p => {\n const rect = p.getBoundingClientRect()\n return isVertical ? rect.height : rect.width\n })\n this.#saveProportions()\n\n this.dispatchEvent(new CustomEvent('aui:panes-resize', {\n bubbles: true,\n composed: true,\n detail: {\n sizes: this.#sizes,\n index: this.#activeIndex,\n },\n }))\n\n this.#cleanupDrag()\n }\n\n #onDragCancel = (): void => {\n if (this.#activeIndex < 0) return\n // Revert to start sizes\n this.#sizes = [...this.#startSizes]\n this.#applySizes()\n this.#cleanupDrag()\n }\n\n #onKeyDown = (e: KeyboardEvent): void => {\n if (e.key === 'Escape' && this.#activeIndex >= 0) {\n e.preventDefault()\n this.#onDragCancel()\n }\n }\n\n #cleanupDrag(): void {\n if (this.#activeIndex >= 0) {\n this.#panes[this.#activeIndex]?.removeAttribute('data-panes-edge-active')\n }\n if (this.#dragPointerId >= 0) {\n try { this.releasePointerCapture(this.#dragPointerId) } catch { /* already released */ }\n this.#dragPointerId = -1\n }\n this.#activeIndex = -1\n this.#startSizes = []\n this.removeAttribute('data-panes-resizing')\n document.removeEventListener('pointermove', this.#onDragMove)\n document.removeEventListener('pointerup', this.#onDragEnd)\n document.removeEventListener('pointercancel', this.#onDragCancel)\n document.removeEventListener('keydown', this.#onKeyDown)\n }\n\n // ── Child mutation observer (debounced) ──\n\n #pendingDistribute = 0\n\n #onChildChange = (mutations: MutationRecord[]): void => {\n // Only react to changes on direct children (not deep descendants)\n let relevant = false\n for (const m of mutations) {\n const target = m.target as HTMLElement\n if (m.type === 'childList' && target === (this as unknown as HTMLElement)) { relevant = true; break }\n if (m.type === 'attributes' && target.parentElement === this) { relevant = true; break }\n }\n if (!relevant) return\n\n if (this.#pendingDistribute) return\n this.#pendingDistribute = requestAnimationFrame(() => {\n this.#pendingDistribute = 0\n this.#initSizes()\n })\n }\n}\n","// ── aui-pane ─────────────────────────────────────────────────\n//\n// Individual pane within <aui-panes>. Light DOM.\n// If `label` is set and no <aui-header> child exists, stamps a\n// compact header with label, optional icon, and close/minimize buttons.\n//\n// Attributes: label, icon, closeable, minimizable, minimized,\n// size, basis, priority, tabs, collapse\n\nimport { AgentElement } from '#element'\nimport type { AttributeSchema } from '#element'\n\nconst headerTpl = document.createElement('template')\nheaderTpl.innerHTML = `\n <aui-header data-pane-header>\n <aui-pane-label></aui-pane-label>\n </aui-header>\n`\n\nconst headerBtnTpl = document.createElement('template')\nheaderBtnTpl.innerHTML = `<aui-button ghost></aui-button>`\n\nexport class AuiPane extends AgentElement {\n static override attributes: AttributeSchema = {\n label: { type: 'string', default: '' },\n icon: { type: 'string', default: '' },\n closeable: { type: 'boolean', default: false },\n minimizable: { type: 'boolean', default: false },\n minimized: { type: 'boolean', default: false },\n 'fixed-size': { type: 'string', default: '' },\n basis: { type: 'string', default: '' },\n priority: { type: 'enum', values: ['high', 'normal', 'low'], default: 'normal' },\n tabs: { type: 'boolean', default: false },\n collapse: { type: 'string', default: '' },\n }\n\n declare label: string\n declare icon: string\n declare closeable: boolean\n declare minimizable: boolean\n declare minimized: boolean\n declare 'fixed-size': string\n declare basis: string\n declare priority: string\n declare tabs: boolean\n declare collapse: string\n\n // Stamped header references\n #stampedHeader: HTMLElement | null = null\n #labelEl: HTMLElement | null = null\n #iconEl: HTMLElement | null = null\n #minimizeBtn: HTMLElement | null = null\n #closeBtn: HTMLElement | null = null\n\n // Tabs\n #tabsEl: HTMLElement | null = null\n\n // Collapse state (internal)\n #collapsed = false\n\n protected override activate(): void {\n this.#stampHeader()\n this.#wrapContent()\n this.#syncSize()\n\n // Label effect\n this.addEffect(() => {\n const label = this.label\n if (this.#labelEl) this.#labelEl.textContent = label\n\n // Stamp/remove header when label changes\n if (label && !this.#stampedHeader) this.#stampHeader()\n else if (!label && this.#stampedHeader) this.#removeStampedHeader()\n })\n\n // Minimized effect\n this.addEffect(() => {\n const min = this.minimized\n if (this.#minimizeBtn) {\n const icon = this.#minimizeBtn.querySelector('aui-icon')\n if (icon) icon.setAttribute('icon', min ? 'caret-up' : 'minus')\n }\n })\n\n // Fixed-size effect\n this.addEffect(() => {\n void this['fixed-size']\n this.#syncSize()\n })\n\n // Basis effect\n this.addEffect(() => {\n const basis = this.basis\n if (basis) this.style.flexBasis = basis\n else this.style.removeProperty('flex-basis')\n })\n\n // Icon effect\n this.addEffect(() => {\n const val = this.icon\n this.#syncIcon(val || null)\n })\n\n // Closeable effect\n this.addEffect(() => {\n this.#syncCloseButton(this.closeable)\n })\n\n // Minimizable effect\n this.addEffect(() => {\n this.#syncMinimizeButton(this.minimizable)\n })\n\n // Tabs effect\n this.addEffect(() => {\n if (this.tabs && !this.#tabsEl) this.#stampTabs()\n else if (!this.tabs && this.#tabsEl) this.#removeTabs()\n })\n\n // Collapse effect\n this.addEffect(() => {\n // collapse attr just configures direction — actual collapsing is via method\n void this.collapse\n })\n }\n\n // ── Public methods ──\n\n /** Collapse the pane to a thin strip. */\n collapsePane(): void {\n this.#collapsed = true\n this.setAttribute('collapsed', '')\n this.dispatchEvent(new CustomEvent('aui:pane-collapse', {\n bubbles: true,\n composed: true,\n detail: { pane: this },\n }))\n }\n\n /** Restore from collapsed state. */\n expand(): void {\n this.#collapsed = false\n this.removeAttribute('collapsed')\n this.dispatchEvent(new CustomEvent('aui:pane-expand', {\n bubbles: true,\n composed: true,\n detail: { pane: this },\n }))\n }\n\n /** Close the pane. Dispatches cancelable `aui:pane-close`. */\n close(): void {\n const event = new CustomEvent('aui:pane-close', {\n bubbles: true,\n composed: true,\n cancelable: true,\n detail: { pane: this },\n })\n if (this.dispatchEvent(event)) {\n this.hidden = true\n }\n }\n\n /** Minimize the pane to header-only. */\n minimize(): void {\n this.minimized = true\n this.dispatchEvent(new CustomEvent('aui:pane-minimize', {\n bubbles: true,\n composed: true,\n detail: { pane: this },\n }))\n }\n\n /** Restore from minimized state. */\n restore(): void {\n this.minimized = false\n this.dispatchEvent(new CustomEvent('aui:pane-restore', {\n bubbles: true,\n composed: true,\n detail: { pane: this },\n }))\n }\n\n // ── Size sync ──\n\n #syncSize(): void {\n const size = this['fixed-size']\n if (size && size !== 'auto') {\n this.style.flex = `0 1 ${size}`\n } else {\n this.style.removeProperty('flex')\n }\n }\n\n // ── Content wrapping ──\n\n /** Wrap non-structural children in <aui-content>. */\n #wrapContent(): void {\n // Skip if already wrapped\n if (this.querySelector(':scope > aui-content')) return\n\n const content = document.createElement('aui-content')\n const toWrap: Node[] = []\n\n for (const child of Array.from(this.childNodes)) {\n // Keep headers, slotted elements, and the stamped header in place\n if (child instanceof HTMLElement) {\n if (child.tagName === 'AUI-HEADER' || child.hasAttribute('data-pane-header')) continue\n if (child.hasAttribute('slot')) continue\n if (child.tagName === 'AUI-CANVAS') continue\n }\n toWrap.push(child)\n }\n\n if (toWrap.length === 0) return\n\n for (const node of toWrap) content.appendChild(node)\n this.appendChild(content)\n }\n\n // ── Header stamping ──\n\n #stampHeader(): void {\n if (this.querySelector(':scope > aui-header')) return\n const label = this.label\n if (!label) return\n\n const fragment = headerTpl.content.cloneNode(true) as DocumentFragment\n const header = fragment.firstElementChild as HTMLElement\n const labelEl = header.querySelector('aui-pane-label') as HTMLElement\n\n labelEl.textContent = label\n this.#labelEl = labelEl\n\n // Icon (optional)\n const icon = this.icon\n if (icon) {\n const iconEl = document.createElement('aui-icon')\n iconEl.setAttribute('icon', icon)\n header.insertBefore(iconEl, labelEl)\n this.#iconEl = iconEl\n }\n\n // Minimize button\n if (this.minimizable) {\n this.#minimizeBtn = this.#createHeaderButton(\n this.minimized ? 'caret-up' : 'minus',\n () => { if (this.minimized) this.restore(); else this.minimize() },\n )\n header.appendChild(this.#minimizeBtn)\n }\n\n // Close button\n if (this.closeable) {\n this.#closeBtn = this.#createHeaderButton('x', () => this.close())\n header.appendChild(this.#closeBtn)\n }\n\n this.prepend(header)\n this.#stampedHeader = header\n }\n\n #removeStampedHeader(): void {\n if (!this.#stampedHeader) return\n this.#stampedHeader.remove()\n this.#stampedHeader = null\n this.#labelEl = null\n this.#iconEl = null\n this.#minimizeBtn = null\n this.#closeBtn = null\n }\n\n #createHeaderButton(iconName: string, handler: () => void): HTMLElement {\n const btn = headerBtnTpl.content.firstElementChild!.cloneNode(true) as HTMLElement\n btn.setAttribute('icon', iconName)\n btn.setAttribute('slot', 'trailing')\n btn.addEventListener('click', handler)\n return btn\n }\n\n #syncIcon(val: string | null): void {\n if (!this.#stampedHeader) return\n if (val && this.#iconEl) {\n this.#iconEl.setAttribute('icon', val)\n } else if (val && !this.#iconEl) {\n const iconEl = document.createElement('aui-icon')\n iconEl.setAttribute('icon', val)\n this.#stampedHeader.prepend(iconEl)\n this.#iconEl = iconEl\n } else if (!val && this.#iconEl) {\n this.#iconEl.remove()\n this.#iconEl = null\n }\n }\n\n #syncCloseButton(show: boolean): void {\n if (!this.#stampedHeader) return\n if (show && !this.#closeBtn) {\n this.#closeBtn = this.#createHeaderButton('x', () => this.close())\n this.#stampedHeader.appendChild(this.#closeBtn)\n } else if (!show && this.#closeBtn) {\n this.#closeBtn.remove()\n this.#closeBtn = null\n }\n }\n\n #syncMinimizeButton(show: boolean): void {\n if (!this.#stampedHeader) return\n if (show && !this.#minimizeBtn) {\n this.#minimizeBtn = this.#createHeaderButton(\n this.minimized ? 'caret-up' : 'minus',\n () => { if (this.minimized) this.restore(); else this.minimize() },\n )\n if (this.#closeBtn) {\n this.#stampedHeader.insertBefore(this.#minimizeBtn, this.#closeBtn)\n } else {\n this.#stampedHeader.appendChild(this.#minimizeBtn)\n }\n } else if (!show && this.#minimizeBtn) {\n this.#minimizeBtn.remove()\n this.#minimizeBtn = null\n }\n }\n\n // ── Tabs ──\n\n #stampTabs(): void {\n if (this.#tabsEl) return\n this.#tabsEl = document.createElement('aui-tabs')\n\n // Find children with data-tab-id and create tabs\n for (const child of this.children) {\n if (!(child instanceof HTMLElement)) continue\n const tabId = child.getAttribute('data-tab-id')\n const tabLabel = child.getAttribute('data-tab-label')\n if (!tabId || !tabLabel) continue\n\n const tab = document.createElement('aui-tab')\n tab.setAttribute('label', tabLabel)\n tab.setAttribute('data-for', tabId)\n this.#tabsEl.appendChild(tab)\n }\n\n // Listen for tab changes\n this.#tabsEl.addEventListener('change', (e: Event) => {\n const detail = (e as CustomEvent).detail as { tab?: HTMLElement }\n const tabId = detail.tab?.getAttribute('data-for')\n if (!tabId) return\n this.#showTabContent(tabId)\n })\n\n // Insert after header\n const header = this.querySelector(':scope > aui-header, :scope > [data-pane-header]')\n if (header) header.after(this.#tabsEl)\n else this.prepend(this.#tabsEl)\n\n // Show first tab's content\n queueMicrotask(() => {\n const firstTab = this.#tabsEl?.querySelector('aui-tab')\n const firstId = firstTab?.getAttribute('data-for')\n if (firstId) this.#showTabContent(firstId)\n })\n }\n\n #removeTabs(): void {\n this.#tabsEl?.remove()\n this.#tabsEl = null\n // Show all tab content again\n for (const child of this.children) {\n if (child instanceof HTMLElement && child.hasAttribute('data-tab-id')) {\n child.removeAttribute('hidden')\n }\n }\n }\n\n #showTabContent(activeId: string): void {\n for (const child of this.children) {\n if (!(child instanceof HTMLElement)) continue\n const tabId = child.getAttribute('data-tab-id')\n if (!tabId) continue\n if (tabId === activeId) child.removeAttribute('hidden')\n else child.setAttribute('hidden', '')\n }\n }\n\n protected override dispose(): void {\n this.#removeStampedHeader()\n this.#removeTabs()\n }\n}\n","// ── aui-table ────────────────────────────────────────────────\n//\n// CSS grid table. Uses subgrid for aligned columns.\n//\n// Supports two modes:\n// 1. Declarative HTML — static rows via <aui-table-head>/<aui-table-body>\n// 2. Data-driven — columns via <aui-table-column>, data via <script> or src\n\nimport { AgentElement } from '#element'\nimport type { AttributeSchema } from '#element'\n\ninterface ColumnDef {\n key: string\n label: string\n sortable: boolean\n filterable: boolean\n width: string\n type: 'string' | 'number' | 'date'\n align: 'start' | 'center' | 'end'\n}\n\ntype SortDir = 'asc' | 'desc' | 'none'\n\nexport class AuiTable extends AgentElement {\n static override attributes: AttributeSchema = {\n cols: { type: 'string', default: '' },\n src: { type: 'string', default: '' },\n selectable: { type: 'boolean', default: false },\n sortable: { type: 'boolean', default: false },\n searchable: { type: 'boolean', default: false },\n paginate: { type: 'string', default: '0' },\n }\n\n declare cols: string\n declare src: string\n declare selectable: boolean\n declare sortable: boolean\n declare searchable: boolean\n declare paginate: string\n\n #columns: ColumnDef[] = []\n #data: Record<string, unknown>[] = []\n #sortKey = ''\n #sortDir: SortDir = 'none'\n #searchTerm = ''\n #currentPage = 1\n #selectedIds = new Set<string>()\n #dataMode = false\n\n // Stable DOM refs (created once, never destroyed)\n #toolbar: HTMLElement | null = null\n #headEl: HTMLElement | null = null\n #bodyEl: HTMLElement | null = null\n #footerEl: HTMLElement | null = null\n #searchDebounceId: ReturnType<typeof setTimeout> | null = null\n\n get selectedIds(): Set<string> { return new Set(this.#selectedIds) }\n get dataMode(): boolean { return this.#dataMode }\n\n setData(data: Record<string, unknown>[]): void {\n this.#data = [...data]\n this.#currentPage = 1\n this.#selectedIds.clear()\n this.#render()\n }\n\n protected override activate(): void {\n this.setAttribute('role', 'table')\n this.#columns = this.#parseColumns()\n this.#dataMode = this.#columns.length > 0\n\n if (!this.#dataMode) {\n // Declarative mode\n this.addEffect(() => {\n if (this.cols) this.style.gridTemplateColumns = this.cols\n })\n return\n }\n\n // Data mode\n this.#loadData()\n this.#buildStructure()\n this.#render()\n\n // Event delegation — single handler survives re-renders\n this.addEventListener('click', this.#onClick)\n\n // Src changes\n this.addEffect(() => {\n if (this.src) this.#fetchData(this.src)\n })\n }\n\n protected override dispose(): void {\n this.removeEventListener('click', this.#onClick)\n if (this.#searchDebounceId) clearTimeout(this.#searchDebounceId)\n }\n\n // ── Column parsing ─────────────────────────────────────────\n\n #parseColumns(): ColumnDef[] {\n return Array.from(this.querySelectorAll('aui-table-column')).map(el => ({\n key: el.getAttribute('key') || '',\n label: el.getAttribute('label') || el.getAttribute('key') || '',\n sortable: el.hasAttribute('sortable'),\n filterable: el.hasAttribute('filterable'),\n width: el.getAttribute('width') || '1fr',\n type: (el.getAttribute('type') as ColumnDef['type']) || 'string',\n align: (el.getAttribute('align') as ColumnDef['align']) || 'start',\n })).filter(c => c.key)\n }\n\n // ── Data loading ───────────────────────────────────────────\n\n #loadData(): void {\n const script = this.querySelector('script[type=\"application/json\"]')\n if (script?.textContent) {\n try {\n const parsed = JSON.parse(script.textContent)\n if (Array.isArray(parsed)) this.#data = parsed\n } catch { /* ignore */ }\n return\n }\n if (this.src) this.#fetchData(this.src)\n }\n\n async #fetchData(url: string): Promise<void> {\n try {\n const res = await fetch(url)\n if (!res.ok) return\n const json = await res.json()\n this.#data = Array.isArray(json) ? json : json?.data ?? []\n this.#currentPage = 1\n this.#selectedIds.clear()\n this.#render()\n } catch { /* ignore */ }\n }\n\n // ── Structure (built once) ─────────────────────────────────\n\n #buildStructure(): void {\n // Remove non-config children\n for (const child of [...this.children]) {\n const tag = child.tagName?.toLowerCase()\n if (tag !== 'aui-table-column' && tag !== 'script') child.remove()\n }\n\n // Grid columns\n const widths = this.#columns.map(c => c.width)\n if (this.selectable) widths.unshift('2.5rem')\n this.style.gridTemplateColumns = widths.join(' ')\n\n // Search toolbar\n if (this.searchable) {\n const toolbar = document.createElement('div')\n toolbar.setAttribute('data-table-toolbar', '')\n const input = document.createElement('aui-input')\n input.setAttribute('placeholder', 'Search...')\n input.setAttribute('type', 'search')\n input.setAttribute('width', 'full')\n toolbar.appendChild(input)\n this.#toolbar = toolbar\n this.appendChild(toolbar)\n\n // Listen for input events\n const onSearch = () => {\n if (this.#searchDebounceId) clearTimeout(this.#searchDebounceId)\n this.#searchDebounceId = setTimeout(() => {\n this.#searchTerm = ((input as any).value || '').trim()\n this.#currentPage = 1\n this.#render()\n }, 200)\n }\n input.addEventListener('input', onSearch)\n }\n\n // Head (stable container)\n this.#headEl = document.createElement('aui-table-head')\n this.appendChild(this.#headEl)\n\n // Body (stable container)\n this.#bodyEl = document.createElement('aui-table-body')\n this.appendChild(this.#bodyEl)\n\n // Footer (stable container)\n if (this.#pageSize > 0) {\n this.#footerEl = document.createElement('div')\n this.#footerEl.setAttribute('data-table-footer', '')\n this.appendChild(this.#footerEl)\n }\n }\n\n // ── Event delegation ───────────────────────────────────────\n\n #onClick = (e: Event): void => {\n const target = e.target as HTMLElement\n\n // Sort: click on header\n const header = target.closest('aui-table-header[data-table-sortable]') as HTMLElement\n if (header) {\n const key = header.dataset.key\n if (key) {\n this.#toggleSort(key)\n return\n }\n }\n\n // Select: click on checkbox\n const checkbox = target.closest('aui-checkbox[data-table-check]') as HTMLElement\n if (checkbox) {\n const rowId = checkbox.dataset.rowId\n if (rowId === '__all__') {\n this.#toggleSelectAll()\n } else if (rowId) {\n this.#toggleSelect(rowId)\n }\n return\n }\n\n // Pagination\n const pageBtn = target.closest('[data-table-page]') as HTMLElement\n if (pageBtn) {\n const page = parseInt(pageBtn.dataset.tablePage!, 10)\n if (!isNaN(page) && page !== this.#currentPage) {\n this.#currentPage = page\n this.dispatchEvent(new CustomEvent('aui:page-change', { bubbles: true, detail: { page } }))\n this.#render()\n }\n }\n }\n\n // ── Sort ───────────────────────────────────────────────────\n\n #toggleSort(key: string): void {\n if (this.#sortKey === key) {\n const cycle: SortDir[] = ['asc', 'desc', 'none']\n this.#sortDir = cycle[(cycle.indexOf(this.#sortDir) + 1) % 3]\n if (this.#sortDir === 'none') this.#sortKey = ''\n } else {\n this.#sortKey = key\n this.#sortDir = 'asc'\n }\n this.#currentPage = 1\n this.dispatchEvent(new CustomEvent('aui:sort-change', { bubbles: true, detail: { key: this.#sortKey, dir: this.#sortDir } }))\n this.#render()\n }\n\n // ── Selection ──────────────────────────────────────────────\n\n #rowId(row: Record<string, unknown>): string {\n return row.id != null ? String(row.id) : JSON.stringify(row)\n }\n\n #toggleSelect(id: string): void {\n if (this.#selectedIds.has(id)) this.#selectedIds.delete(id)\n else this.#selectedIds.add(id)\n this.dispatchEvent(new CustomEvent('aui:selection-change', { bubbles: true, detail: { selectedIds: [...this.#selectedIds] } }))\n this.#render()\n }\n\n #toggleSelectAll(): void {\n const pageRows = this.#paginate(this.#derive())\n const allSelected = pageRows.length > 0 && pageRows.every(r => this.#selectedIds.has(this.#rowId(r)))\n for (const r of pageRows) {\n const id = this.#rowId(r)\n if (allSelected) this.#selectedIds.delete(id)\n else this.#selectedIds.add(id)\n }\n this.dispatchEvent(new CustomEvent('aui:selection-change', { bubbles: true, detail: { selectedIds: [...this.#selectedIds] } }))\n this.#render()\n }\n\n // ── Derived data ───────────────────────────────────────────\n\n get #pageSize(): number { return parseInt(this.paginate, 10) || 0 }\n\n #derive(): Record<string, unknown>[] {\n let view = [...this.#data]\n\n // Search\n if (this.#searchTerm) {\n const term = this.#searchTerm.toLowerCase()\n const keys = this.#columns.map(c => c.key)\n view = view.filter(row => keys.some(k => {\n const v = row[k]\n return v != null && String(v).toLowerCase().includes(term)\n }))\n }\n\n // Sort\n if (this.#sortKey && this.#sortDir !== 'none') {\n const col = this.#columns.find(c => c.key === this.#sortKey)\n const type = col?.type || 'string'\n const mult = this.#sortDir === 'desc' ? -1 : 1\n const key = this.#sortKey\n view.sort((a, b) => {\n const av = a[key], bv = b[key]\n if (av == null && bv == null) return 0\n if (av == null) return 1\n if (bv == null) return -1\n if (type === 'number') return (Number(av) - Number(bv)) * mult\n if (type === 'date') return (new Date(String(av)).getTime() - new Date(String(bv)).getTime()) * mult\n return String(av).localeCompare(String(bv)) * mult\n })\n }\n\n return view\n }\n\n #paginate(view: Record<string, unknown>[]): Record<string, unknown>[] {\n const size = this.#pageSize\n if (size <= 0) return view\n const start = (this.#currentPage - 1) * size\n return view.slice(start, start + size)\n }\n\n // ── Render (updates innerHTML of stable containers) ────────\n\n #render(): void {\n if (!this.#dataMode || !this.#headEl || !this.#bodyEl) return\n\n const filtered = this.#derive()\n const paged = this.#paginate(filtered)\n\n // HEAD\n this.#headEl.innerHTML = ''\n const headerRow = document.createElement('aui-table-row')\n\n if (this.selectable) {\n const th = document.createElement('aui-table-header')\n const allSel = paged.length > 0 && paged.every(r => this.#selectedIds.has(this.#rowId(r)))\n const cb = document.createElement('aui-checkbox')\n cb.setAttribute('data-table-check', '')\n cb.setAttribute('data-row-id', '__all__')\n if (allSel) cb.setAttribute('checked', '')\n th.appendChild(cb)\n headerRow.appendChild(th)\n }\n\n for (const col of this.#columns) {\n const th = document.createElement('aui-table-header')\n const isSortable = col.sortable || this.sortable\n th.textContent = col.label\n if (col.align !== 'start') th.style.justifyContent = col.align\n if (isSortable) {\n th.setAttribute('data-table-sortable', '')\n th.dataset.key = col.key\n th.style.cursor = 'pointer'\n if (this.#sortKey === col.key && this.#sortDir !== 'none') {\n th.setAttribute('data-table-sort', this.#sortDir)\n }\n }\n headerRow.appendChild(th)\n }\n this.#headEl.appendChild(headerRow)\n\n // BODY\n this.#bodyEl.innerHTML = ''\n for (const rowData of paged) {\n const row = document.createElement('aui-table-row')\n const id = this.#rowId(rowData)\n const isSel = this.#selectedIds.has(id)\n if (isSel) row.setAttribute('data-table-selected', '')\n\n if (this.selectable) {\n const td = document.createElement('aui-table-cell')\n const cb = document.createElement('aui-checkbox')\n cb.setAttribute('data-table-check', '')\n cb.setAttribute('data-row-id', id)\n if (isSel) cb.setAttribute('checked', '')\n td.appendChild(cb)\n row.appendChild(td)\n }\n\n for (const col of this.#columns) {\n const td = document.createElement('aui-table-cell')\n const val = rowData[col.key]\n td.textContent = val != null ? String(val) : ''\n if (col.align !== 'start') td.style.justifyContent = col.align\n row.appendChild(td)\n }\n\n this.#bodyEl.appendChild(row)\n }\n\n // FOOTER\n if (this.#footerEl) {\n this.#footerEl.innerHTML = ''\n const size = this.#pageSize\n const total = filtered.length\n const totalPages = Math.max(1, Math.ceil(total / size))\n if (this.#currentPage > totalPages) this.#currentPage = totalPages\n\n const start = total === 0 ? 0 : (this.#currentPage - 1) * size + 1\n const end = Math.min(this.#currentPage * size, total)\n\n const info = document.createElement('span')\n info.setAttribute('data-table-page-info', '')\n info.textContent = `${start}\\u2013${end} of ${total}`\n this.#footerEl.appendChild(info)\n\n const controls = document.createElement('span')\n controls.setAttribute('data-table-page-controls', '')\n controls.style.cssText = 'display:inline-flex;gap:0.25rem;align-items:center;'\n\n const prevBtn = document.createElement('button')\n prevBtn.setAttribute('data-table-page', String(this.#currentPage - 1))\n prevBtn.disabled = this.#currentPage <= 1\n prevBtn.textContent = '\\u2039'\n prevBtn.style.cssText = 'all:unset;cursor:pointer;padding:0.25rem 0.5rem;border-radius:var(--aui-radius);font-size:var(--aui-font-sm);color:var(--aui-ink-muted);'\n if (prevBtn.disabled) prevBtn.style.opacity = '0.4'\n controls.appendChild(prevBtn)\n\n for (let i = 1; i <= totalPages; i++) {\n const btn = document.createElement('button')\n btn.setAttribute('data-table-page', String(i))\n btn.textContent = String(i)\n btn.style.cssText = `all:unset;cursor:pointer;padding:0.25rem 0.5rem;border-radius:var(--aui-radius);font-size:var(--aui-font-sm);${i === this.#currentPage ? 'background:var(--aui-accent);color:white;' : 'color:var(--aui-ink-muted);'}`\n controls.appendChild(btn)\n }\n\n const nextBtn = document.createElement('button')\n nextBtn.setAttribute('data-table-page', String(this.#currentPage + 1))\n nextBtn.disabled = this.#currentPage >= totalPages\n nextBtn.textContent = '\\u203A'\n nextBtn.style.cssText = 'all:unset;cursor:pointer;padding:0.25rem 0.5rem;border-radius:var(--aui-radius);font-size:var(--aui-font-sm);color:var(--aui-ink-muted);'\n if (nextBtn.disabled) nextBtn.style.opacity = '0.4'\n controls.appendChild(nextBtn)\n\n this.#footerEl.appendChild(controls)\n }\n }\n}\n","import { AgentElement } from '#element'\n\nexport class AuiTableBody extends AgentElement {}\n","import { AgentElement } from '#element'\n\nexport class AuiTableCell extends AgentElement {}\n","import { AgentElement } from '#element'\n\nexport class AuiTableHead extends AgentElement {}\n","import { AgentElement } from '#element'\n\nexport class AuiTableHeader extends AgentElement {}\n","import { AgentElement } from '#element'\n\nexport class AuiTableRow extends AgentElement {}\n","// ── aui-tree ─────────────────────────────────────────────────\n//\n// Tree view container. Hosts aui-tree-item children with\n// nested expand/collapse. Keyboard navigation via arrow keys.\n\nimport { AgentElement } from '#element'\n\nexport class AuiTree extends AgentElement {\n protected override activate(): void {\n this.setAttribute('role', 'tree')\n this.addEventListener('keydown', this.#handleKeydown)\n }\n\n protected override dispose(): void {\n this.removeEventListener('keydown', this.#handleKeydown)\n }\n\n get #visibleLabels(): HTMLElement[] {\n const labels: HTMLElement[] = []\n for (const label of this.querySelectorAll('[data-label]')) {\n const item = label.closest('aui-tree-item') as HTMLElement | null\n if (!item) continue\n // Skip hidden (inside collapsed parent)\n const parent = item.parentElement?.closest('aui-tree-item') as HTMLElement | null\n if (parent && !parent.hasAttribute('expanded') && item.parentElement?.hasAttribute('data-children')) continue\n labels.push(label as HTMLElement)\n }\n return labels\n }\n\n #handleKeydown = (e: KeyboardEvent): void => {\n if (e.key !== 'ArrowDown' && e.key !== 'ArrowUp') return\n\n const labels = this.#visibleLabels\n const current = labels.indexOf(document.activeElement as HTMLElement)\n if (current < 0) return\n\n e.preventDefault()\n let next: number\n if (e.key === 'ArrowDown') {\n next = current < labels.length - 1 ? current + 1 : 0\n } else {\n next = current > 0 ? current - 1 : labels.length - 1\n }\n labels[next].focus()\n }\n}\n","// ── aui-tree-item ────────────────────────────────────────────\n//\n// Tree node with expand/collapse. Nests children inside\n// [data-children] container. Depth tracked via --_depth CSS var.\n\nimport { AgentElement } from '#element'\nimport type { AttributeSchema } from '#element'\n\n// Uses registered caret-right icon if available, falls back to inline SVG\nconst CARET_TAG = `<aui-icon name=\"caret-right\" size=\"sm\"></aui-icon>`\n\nexport class AuiTreeItem extends AgentElement {\n static override attributes: AttributeSchema = {\n expanded: { type: 'boolean', default: false },\n selected: { type: 'boolean', default: false },\n disabled: { type: 'boolean', default: false },\n }\n\n declare expanded: boolean\n declare selected: boolean\n declare disabled: boolean\n\n #label: HTMLElement | null = null\n #childContainer: HTMLElement | null = null\n #caret: HTMLElement | null = null\n\n get expandable(): boolean {\n return !!this.querySelector(':scope > [data-children] > aui-tree-item')\n }\n\n protected override activate(): void {\n this.setAttribute('role', 'treeitem')\n\n // Organize: find or stamp label + children container\n this.#label = this.querySelector(':scope > [data-label]')\n if (!this.#label) {\n this.#label = document.createElement('div')\n this.#label.setAttribute('data-label', '')\n this.#label.setAttribute('tabindex', '0')\n\n // Stamp caret\n this.#caret = document.createElement('span')\n this.#caret.setAttribute('data-caret', '')\n this.#caret.innerHTML = CARET_TAG\n this.#label.appendChild(this.#caret)\n\n // Move first text/inline content into label\n const triggerEl = this.querySelector(':scope > [data-trigger]')\n if (triggerEl) {\n this.#label.appendChild(triggerEl)\n } else {\n // Move non-tree-item children into label\n const toMove: Node[] = []\n for (const child of Array.from(this.childNodes)) {\n if (child instanceof HTMLElement && (child.tagName === 'AUI-TREE-ITEM' || child.hasAttribute('data-children'))) continue\n toMove.push(child)\n }\n for (const node of toMove) this.#label.appendChild(node)\n }\n\n // Wrap nested tree items in children container\n const nestedItems = Array.from(this.querySelectorAll(':scope > aui-tree-item'))\n if (nestedItems.length > 0) {\n this.#childContainer = document.createElement('div')\n this.#childContainer.setAttribute('data-children', '')\n this.#childContainer.setAttribute('role', 'group')\n for (const item of nestedItems) {\n this.#childContainer.appendChild(item)\n }\n this.prepend(this.#label)\n this.appendChild(this.#childContainer)\n } else {\n this.prepend(this.#label)\n }\n } else {\n this.#caret = this.querySelector(':scope > [data-label] > [data-caret]')\n this.#childContainer = this.querySelector(':scope > [data-children]')\n }\n\n // Calculate depth\n let depth = 0\n let parent = this.parentElement\n while (parent) {\n if (parent.tagName === 'AUI-TREE-ITEM') depth++\n if (parent.tagName === 'AUI-TREE') break\n parent = parent.parentElement\n }\n this.#label?.style.setProperty('--_depth', String(depth))\n\n // Sync state\n this.addEffect(() => {\n this.setAttribute('aria-expanded', this.expandable ? String(this.expanded) : '')\n this.setAttribute('aria-selected', String(this.selected))\n this.setAttribute('aria-disabled', String(this.disabled))\n\n // Hide caret if not expandable\n if (this.#caret) {\n this.#caret.style.visibility = this.expandable ? 'visible' : 'hidden'\n }\n })\n\n this.#label?.addEventListener('click', this.#handleClick)\n this.#label?.addEventListener('keydown', this.#handleKeydown)\n }\n\n protected override dispose(): void {\n this.#label?.removeEventListener('click', this.#handleClick)\n this.#label?.removeEventListener('keydown', this.#handleKeydown)\n }\n\n #handleClick = (): void => {\n if (this.disabled) return\n if (this.expandable) {\n this.expanded = !this.expanded\n }\n this.selected = true\n this.dispatchEvent(new CustomEvent('select', { bubbles: true, detail: { item: this } }))\n }\n\n #handleKeydown = (e: KeyboardEvent): void => {\n if (this.disabled) return\n if (e.key === 'Enter' || e.key === ' ') {\n e.preventDefault()\n this.#handleClick()\n } else if (e.key === 'ArrowRight' && this.expandable && !this.expanded) {\n e.preventDefault()\n this.expanded = true\n } else if (e.key === 'ArrowLeft' && this.expanded) {\n e.preventDefault()\n this.expanded = false\n }\n }\n}\n","// ── aui-feed ─────────────────────────────────────────────────\n//\n// Scrollable feed container for messages, activity streams,\n// or any chronological content. Supports bottom-anchoring\n// (chat-style) and auto-scroll on new children.\n\nimport { AgentElement } from '#element'\nimport type { AttributeSchema } from '#element'\n\nexport class AuiFeed extends AgentElement {\n static override attributes: AttributeSchema = {\n align: { type: 'enum', values: ['end'], default: '' },\n scrollable: { type: 'boolean', default: false },\n autoscroll: { type: 'boolean', default: false },\n }\n\n declare align: string\n declare scrollable: boolean\n declare autoscroll: boolean\n\n #observer: MutationObserver | null = null\n\n protected override activate(): void {\n this.setAttribute('role', 'feed')\n\n if (this.autoscroll) {\n this.#observer = new MutationObserver(() => {\n if (this.#isPinned()) {\n this.#scrollToEnd()\n }\n })\n this.#observer.observe(this, { childList: true, subtree: true })\n }\n }\n\n protected override dispose(): void {\n this.#observer?.disconnect()\n }\n\n #isPinned(): boolean {\n return this.scrollHeight - this.scrollTop - this.clientHeight < 40\n }\n\n #scrollToEnd(): void {\n requestAnimationFrame(() => {\n this.scrollTop = this.scrollHeight\n })\n }\n\n scrollToEnd(): void {\n this.#scrollToEnd()\n }\n}\n","// ── aui-root ─────────────────────────────────────────────────\n//\n// App shell root element. Block container that establishes\n// the component context (tokens, layers). Simple pass-through.\n\nimport { AgentElement } from '#element'\n\nexport class AuiRoot extends AgentElement {\n protected override activate(): void {\n // Root is a semantic shell — no special behavior needed.\n // Tokens and layers are established by CSS foundation import.\n }\n}\n","// ── aui-app-shell ────────────────────────────────────────────\n//\n// Full-page application shell. Flex layout with collapsible\n// sidebar and content column.\n//\n// DOM structure:\n//\n// <aui-app-shell>\n// <aui-sidebar>…</aui-sidebar>\n// <aui-page>\n// <aui-page-context>context bar</aui-page-context>\n// <aui-page-main>\n// <main>page content</main>\n// </aui-page-main>\n// </aui-page>\n// </aui-app-shell>\n\nimport { AgentElement } from '#element'\n\nexport class AuiAppShell extends AgentElement {\n protected override activate(): void {\n this.setAttribute('role', 'application')\n }\n}\n","// ── aui-page ─────────────────────────────────────────────────\n//\n// Content column within the <aui-app-shell>.\n// Contains <aui-page-context> (header bar) and <aui-page-main> (canvas).\n\nimport { AgentElement } from '#element'\n\nexport class AuiPage extends AgentElement {\n protected override activate(): void {\n this.setAttribute('role', 'main')\n }\n}\n","// ── aui-page-main ────────────────────────────────────────────\n//\n// Canvas area below the page context bar.\n// Contains <main> with scrollable, rounded content panel.\n\nimport { AgentElement } from '#element'\n\nexport class AuiPageMain extends AgentElement {}\n","// ── aui-page-context ─────────────────────────────────────────\n//\n// Page context bar with leading, center, and trailing sections.\n// Adaptive 3-column grid via :has() selectors.\n//\n// Children: <div> (leading), <aui-breadcrumb>, <aside> (trailing)\n\nimport { AgentElement } from '#element'\n\nexport class AuiPageContext extends AgentElement {\n protected override activate(): void {\n this.setAttribute('role', 'navigation')\n this.setAttribute('aria-label', 'Breadcrumb')\n }\n}\n","// ── <aui-sidebar> ────────────────────────────────────────────\n//\n// Layout shell for sidebar navigation. Flex column, sticky,\n// resizable, collapsible to icon-rail via container queries.\n//\n// Attributes: width, min-width, max-width, collapsed,\n// collapsible, side, disabled\n// Events: aui:sidebar-resize, aui:sidebar-collapse\n\nimport { AgentElement } from '#element'\nimport type { AttributeSchema } from '#element'\nimport { signal, untrack } from '#reactivity'\n\nconst handleTpl = document.createElement('template')\nhandleTpl.innerHTML = '<aui-sidebar-resize-handle></aui-sidebar-resize-handle>'\n\nexport class AuiSidebar extends AgentElement {\n static override attributes: AttributeSchema = {\n 'width': { type: 'string', default: '240' },\n 'min-width': { type: 'string', default: '56' },\n 'max-width': { type: 'string', default: '480' },\n 'collapsed': { type: 'boolean', default: false },\n 'collapsible': { type: 'boolean', default: false },\n 'side': { type: 'enum', values: ['left', 'right'] as const, default: 'left' },\n 'disabled': { type: 'boolean', default: false },\n }\n\n declare collapsed: boolean\n declare collapsible: boolean\n declare side: 'left' | 'right'\n declare disabled: boolean\n\n #width = signal(240)\n #minWidth = 56\n #maxWidth = 480\n\n // Resize state\n #handleEl: HTMLElement | null = null\n #resizing = false\n #startX = 0\n #startWidth = 0\n #dragPointerId = -1\n\n protected override activate(): void {\n this.setAttribute('role', 'complementary')\n\n const w = parseInt(this.getAttribute('width') ?? '', 10)\n if (w > 0) this.#width.value = w\n this.#minWidth = parseInt(this.getAttribute('min-width') ?? '', 10) || 56\n this.#maxWidth = parseInt(this.getAttribute('max-width') ?? '', 10) || 480\n\n // Stamp resize handle\n const frag = handleTpl.content.cloneNode(true) as DocumentFragment\n this.#handleEl = frag.querySelector('aui-sidebar-resize-handle')!\n this.appendChild(frag)\n\n this.#handleEl.addEventListener('pointerdown', this.#onResizeDown)\n\n // Width effect\n this.addEffect(() => {\n const w = this.#width.value\n this.style.setProperty('--aui-sidebar-width', `${w}px`)\n })\n }\n\n // ── Public API ──\n\n collapse(): void {\n this.setAttribute('collapsed', '')\n this.dispatchEvent(new CustomEvent('aui:sidebar-collapse', {\n bubbles: true,\n detail: { collapsed: true },\n }))\n }\n\n expand(): void {\n this.removeAttribute('collapsed')\n this.dispatchEvent(new CustomEvent('aui:sidebar-collapse', {\n bubbles: true,\n detail: { collapsed: false },\n }))\n }\n\n toggle(): void {\n if (this.collapsed) this.expand()\n else this.collapse()\n }\n\n // ── Resize ──\n\n #onResizeDown = (e: PointerEvent): void => {\n if (this.disabled) return\n if (this.collapsed) return\n e.preventDefault()\n\n this.#resizing = true\n this.#startX = e.clientX\n this.#startWidth = untrack(() => this.#width.value)\n this.#dragPointerId = e.pointerId\n this.setAttribute('data-sidebar-resizing', '')\n\n this.#handleEl!.setPointerCapture(e.pointerId)\n document.documentElement.setAttribute('data-sidebar-resizing', '')\n\n this.#handleEl!.addEventListener('pointermove', this.#onResizeMove)\n this.#handleEl!.addEventListener('pointerup', this.#onResizeUp)\n this.#handleEl!.addEventListener('pointercancel', this.#onResizeUp)\n }\n\n #onResizeMove = (e: PointerEvent): void => {\n if (!this.#resizing) return\n const side = this.getAttribute('side')\n const delta = side === 'right'\n ? this.#startX - e.clientX\n : e.clientX - this.#startX\n const w = Math.round(Math.max(this.#minWidth, Math.min(this.#maxWidth, this.#startWidth + delta)))\n this.#width.value = w\n }\n\n #onResizeUp = (): void => {\n if (!this.#resizing) return\n this.#resizing = false\n this.removeAttribute('data-sidebar-resizing')\n document.documentElement.removeAttribute('data-sidebar-resizing')\n\n if (this.#dragPointerId >= 0 && this.#handleEl) {\n this.#handleEl.releasePointerCapture(this.#dragPointerId)\n }\n this.#dragPointerId = -1\n\n this.#handleEl?.removeEventListener('pointermove', this.#onResizeMove)\n this.#handleEl?.removeEventListener('pointerup', this.#onResizeUp)\n this.#handleEl?.removeEventListener('pointercancel', this.#onResizeUp)\n\n this.dispatchEvent(new CustomEvent('aui:sidebar-resize', {\n bubbles: true,\n detail: { width: untrack(() => this.#width.value) },\n }))\n }\n\n // ── Cleanup ──\n\n protected override dispose(): void {\n this.#handleEl?.removeEventListener('pointerdown', this.#onResizeDown)\n this.#handleEl?.remove()\n this.#handleEl = null\n document.documentElement.removeAttribute('data-sidebar-resizing')\n }\n}\n","// ── <aui-sidebar-header> ─────────────────────────────────────\n//\n// Sticky top overlay within aui-sidebar.\n// Pinned above the scrollable content area.\n\nimport { AgentElement } from '#element'\n\nexport class AuiSidebarHeader extends AgentElement {\n protected override activate(): void {\n this.setAttribute('role', 'none')\n }\n}\n","// ── <aui-sidebar-content> ────────────────────────────────────\n//\n// Scrollable content area within aui-sidebar.\n// Sits between the header and footer overlays.\n// Mask-image driven by parent's height custom properties.\n\nimport { AgentElement } from '#element'\n\nexport class AuiSidebarContent extends AgentElement {\n protected override activate(): void {\n this.setAttribute('role', 'none')\n }\n}\n","// ── <aui-sidebar-footer> ─────────────────────────────────────\n//\n// Sticky bottom overlay within aui-sidebar.\n// Pinned below the scrollable content area.\n\nimport { AgentElement } from '#element'\n\nexport class AuiSidebarFooter extends AgentElement {\n protected override activate(): void {\n this.setAttribute('role', 'none')\n }\n}\n"],"names":["AuiButton","AgentElement","#stampedLeading","#stampedLeadingText","#stampedTrailing","#stampedTrailingText","#handleClick","#handleKeydown","n","name","text","leading","trailing","e","href","btnType","form","AuiInput","#internals","#surface","#clearEl","#syncing","locked","#updateEmptyState","#validate","val","#handleInput","#handleFocus","#handleBlur","#handlePaste","#handleWrapperClick","#handleClear","options","range","sel","disabled","state","empty","#resetCaretIfEmpty","max","current","selLen","available","target","AuiInputOtp","#cells","len","i","cell","#distributeValue","#handleCellInput","#handleCellKeydown","c","#syncValue","#getCellIndex","idx","digits","focusIdx","AuiCheckbox","box","#toggle","AuiSwitch","track","AuiRadio","circle","#select","AuiRadioGroup","radio","#radios","isMatch","#handleChange","radios","r","next","AuiTextarea","#autogrowRaf","rows","#autoResize","AuiContainer","getDuration","el","raw","AuiDialog","#dialog","#content","#closing","#ensureDialog","#handleCancel","#handleClose","#handleBackdropClick","dialog","AuiDrawer","fetchCache","AuiIcon","#registryDispose","#hasInlineChild","key","#renderFromRegistry","#renderFromSrc","onRegistryChange","svg","getIcon","#setSvg","url","cached","res","existing","template","svgEl","AuiTooltip","#popover","#anchor","#anchorName","id","#show","#hide","AuiRange","#thumb","min","pct","#handlePointerDown","#setValueFromPointer","#handlePointerMove","#handlePointerUp","_e","rect","step","snapped","clamped","bigStep","AuiGripper","#lastX","#lastY","#dragging","#stopDrag","dx","dy","isHorizontal","delta","AuiOption","AuiOptgroup","#header","opt","CHEVRON_SVG","MORE_ICON","PRIORITY_ORDER","FOCUSABLE_BAR","FOCUSABLE_BAR_WITH_TRIGGER","isOptionTag","tag","isGroupTag","isOptionOrGroup","AuiSelect","#trigger","#triggerLabel","#chevron","#listboxEl","#barTriggerBtn","#barOverflowPopover","#barOverflowList","#resizeObserver","#mutationObserver","#measureRaf","#listActiveIndex","#typeBuffer","#typeTimer","#comboSurface","#comboPopover","#comboListbox","#allComboOptions","#activateBar","#activateList","#activateCombobox","#activateDropdown","#disposeBar","#disposeList","#disposeCombobox","#disposeDropdown","o","#listSelectOption","index","#listSetActive","#listClearActive","#openPopover","popover","lb","#closePopover","children","child","#dropdownUpdateLabel","#dropdownTriggerClick","#dropdownTriggerKeydown","#dropdownListboxClick","#dropdownListboxChange","#dropdownListboxKeydown","#dropdownOutsideClick","option","selected","#barOnTriggerClick","#barOnTriggerKeydown","#barOnOverflowItemClick","#barHandleKeydown","#barStampGroupDividers","#barScheduleMeasure","mutations","m","prevWasGroup","isGroup","hr","#barMeasure","#barGetContentChildren","#barClearOverflow","#barReconnectMutationObserver","cs","gap","contentWidth","units","#barBuildOverflowUnits","totalWidth","flatIndex","unit","item","#barClearOverflowMenu","w","triggerWidth","candidates","u","a","b","pa","pb","overflowed","remaining","prev","#barRebuildOverflowMenu","rawPriority","priority","pinned","flexItems","gc","itemIndex","group","groupLabel","#barExtractLabel","#barGetOverflowSources","sources","ariaLabel","labelAttr","icon","#barPositionPopover","ke","source","#barGetFocusable","all","selector","isVertical","forward","backward","items","#listSyncSelection","#listHandleClick","#listHandleKeydown","wasSelected","#listSyncValue","values","v","optVal","opts","active","#listHandleTypeAhead","char","match","#comboHandleInput","#comboHandleFocus","#comboHandleKeydown","#comboHandleListboxChange","#comboHandleListboxKeydown","#comboHandleOutsideClick","#comboFilter","query","q","label","groups","hasVisible","containerEl","getContainer","AuiToast","#timer","#closeEl","toast","ms","#handleCloseKeydown","AuiTabs","#wireAria","#tabs","#syncSelection","firstTab","#enabledTabs","#panels","tabs","panels","tab","panel","p","selectedIdx","nextTab","AuiTab","AuiTabPanel","AuiAccordion","#handleToggle","AuiAccordionItem","chevron","triggerEl","firstEl","headerId","contentId","AuiBreadcrumb","AuiBreadcrumbItem","#link","AuiSegmentedControl","#indicator","#updateIndicator","first","seg","#segments","#enabledSegments","s","segs","AuiSegment","AuiPagination","#render","total","siblings","pages","#computePages","#createPageEl","num","page","_","leftSibling","rightSibling","newPage","AuiCommand","#activeIndex","#setActive","#items","#visibleItems","#inputEl","#emptyEl","#listEl","#filter","matches","visible","#clearActive","#selectItem","value","AuiCommandEmpty","AuiCommandGroup","heading","h","AuiCommandInput","AuiCommandItem","AuiCommandList","Priority","clamp","cachedCollapsedWidth","resolveCollapsedWidth","probe","AuiPanes","#observer","#hoverPane","#startSizes","#panes","#startX","#startY","#dragPointerId","#sizes","#proportions","#onHover","#onLeave","#onPointerDown","#initSizes","#onChildChange","#onContainerResize","#clearHover","#cleanupDrag","#getVisibleChildren","#getMinSize","#getMaxSize","#getPriority","panes","pane","fixedSize","basis","sizes","#saveProportions","#applySizes","size","#resize","result","beforeIndexes","afterIndexes","sortByPriority","indexes","high","normal","low","sortedBefore","sortedAfter","minDelta","maxDelta","minDeltaAfter","maxDeltaAfter","effectiveMin","effectiveMax","newSize","consumed","#distributeEmptySpace","emptyDelta","#getContainerSize","sorted","#lastContainerSize","containerSize","newSizes","#hitBoundary","clientX","clientY","threshold","edge","#onDragMove","#onDragEnd","#onDragCancel","#onKeyDown","#pendingDistribute","relevant","headerTpl","headerBtnTpl","AuiPane","#stampedHeader","#labelEl","#iconEl","#minimizeBtn","#closeBtn","#tabsEl","#collapsed","#stampHeader","#wrapContent","#syncSize","#removeStampedHeader","#syncIcon","#syncCloseButton","#syncMinimizeButton","#stampTabs","#removeTabs","event","content","toWrap","node","header","labelEl","iconEl","#createHeaderButton","iconName","handler","btn","show","tabId","tabLabel","#showTabContent","firstId","activeId","AuiTable","#columns","#data","#sortKey","#sortDir","#searchTerm","#currentPage","#selectedIds","#dataMode","#toolbar","#headEl","#bodyEl","#footerEl","#searchDebounceId","data","#parseColumns","#loadData","#buildStructure","#onClick","#fetchData","script","parsed","json","widths","toolbar","input","onSearch","#pageSize","#toggleSort","checkbox","rowId","#toggleSelectAll","#toggleSelect","pageBtn","cycle","#rowId","row","pageRows","#paginate","#derive","allSelected","view","term","keys","k","type","mult","av","bv","start","filtered","paged","headerRow","th","allSel","cb","col","isSortable","rowData","isSel","td","totalPages","end","info","controls","prevBtn","nextBtn","AuiTableBody","AuiTableCell","AuiTableHead","AuiTableHeader","AuiTableRow","AuiTree","#visibleLabels","labels","parent","CARET_TAG","AuiTreeItem","#label","#childContainer","#caret","toMove","nestedItems","depth","AuiFeed","#isPinned","#scrollToEnd","AuiRoot","AuiAppShell","AuiPage","AuiPageMain","AuiPageContext","handleTpl","AuiSidebar","#width","signal","#minWidth","#maxWidth","#handleEl","#resizing","#startWidth","frag","#onResizeDown","untrack","#onResizeMove","#onResizeUp","AuiSidebarHeader","AuiSidebarContent","AuiSidebarFooter"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"components.js","sources":["../src/components/skeleton/skeleton.ts","../src/components/alert/alert.ts","../src/components/link/link.ts","../src/components/spinner/spinner.ts","../src/components/nav-item/nav-item.ts","../src/components/stepper/stepper.ts","../src/components/stepper/step.ts"],"sourcesContent":["import { AgentElement } from '#element'\n\nexport class AuiSkeleton extends AgentElement {}\n","import { AgentElement } from '#element'\n\nexport class AuiAlert extends AgentElement {}\n","import { AgentElement } from '#element'\n\nexport class AuiLink extends AgentElement {}\n","import { AgentElement } from '#element'\n\nexport class AuiSpinner extends AgentElement {}\n","import { AgentElement } from '#element'\n\nexport class AuiNavItem extends AgentElement {}\n","import { AgentElement } from '#element'\n\nexport class AuiStepper extends AgentElement {}\n","import { AgentElement } from '#element'\n\nexport class AuiStep extends AgentElement {}\n"],"names":["AuiSkeleton","AgentElement","AuiAlert","AuiLink","AuiSpinner","AuiNavItem","AuiStepper","AuiStep"],"mappings":";;;;AAEO,MAAMA,UAAoBC,EAAa;AAAC;ACAxC,MAAMC,UAAiBD,EAAa;AAAC;ACArC,MAAME,UAAgBF,EAAa;AAAC;ACApC,MAAMG,UAAmBH,EAAa;AAAC;ACAvC,MAAMI,UAAmBJ,EAAa;AAAC;ACAvC,MAAMK,UAAmBL,EAAa;AAAC;ACAvC,MAAMM,UAAgBN,EAAa;AAAC;"}
|