@ds-mo/ui 14.35.0 → 15.0.0
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/dist/.package-ready.json +1 -1
- package/dist/agent-patterns.json +1 -1
- package/dist/agent.json +5733 -4656
- package/dist/angular/ds-button-inverted.d.ts +17 -0
- package/dist/angular/ds-button-inverted.js +46 -0
- package/dist/angular/ds-calendar.d.ts +15 -0
- package/dist/angular/ds-calendar.js +43 -0
- package/dist/angular/ds-conversation-list.d.ts +1 -1
- package/dist/angular/ds-conversation-list.js +3 -4
- package/dist/angular/ds-data-customize.d.ts +18 -0
- package/dist/angular/ds-data-customize.js +46 -0
- package/dist/angular/ds-data-filter.d.ts +50 -0
- package/dist/angular/{ds-table-filter.js → ds-data-filter.js} +10 -10
- package/dist/angular/ds-data-group.d.ts +29 -0
- package/dist/angular/{ds-table-group.js → ds-data-group.js} +10 -10
- package/dist/angular/ds-data-preferences.d.ts +39 -0
- package/dist/angular/{ds-table-preferences.js → ds-data-preferences.js} +15 -15
- package/dist/angular/ds-data-saved-views.d.ts +49 -0
- package/dist/angular/{ds-table-saved-views.js → ds-data-saved-views.js} +10 -10
- package/dist/angular/ds-data-search.d.ts +20 -0
- package/dist/angular/{ds-table-search.js → ds-data-search.js} +12 -12
- package/dist/angular/ds-data-sort.d.ts +16 -0
- package/dist/angular/{ds-table-sort.js → ds-data-sort.js} +12 -12
- package/dist/angular/ds-data-toolbar.d.ts +12 -0
- package/dist/angular/{ds-table-toolbar.js → ds-data-toolbar.js} +10 -10
- package/dist/angular/ds-field.d.ts +1 -1
- package/dist/angular/ds-field.js +1 -1
- package/dist/angular/ds-input-date.d.ts +15 -0
- package/dist/angular/ds-input-date.js +43 -0
- package/dist/angular/ds-input-time.d.ts +15 -0
- package/dist/angular/ds-input-time.js +43 -0
- package/dist/angular/ds-input.d.ts +1 -1
- package/dist/angular/ds-input.js +3 -3
- package/dist/angular/ds-select.d.ts +1 -1
- package/dist/angular/ds-select.js +3 -3
- package/dist/angular/ds-table.d.ts +7 -7
- package/dist/angular/ds-table.js +6 -6
- package/dist/angular/ds-time-picker.d.ts +15 -0
- package/dist/angular/ds-time-picker.js +43 -0
- package/dist/angular/index.d.ts +1 -1
- package/dist/angular/index.js +13 -7
- package/dist/angular/proxies.d.ts +13 -7
- package/dist/angular/proxies.js +13 -7
- package/dist/angular/text-value-accessor.d.ts +1 -1
- package/dist/angular/text-value-accessor.js +2 -2
- package/dist/components/ds-agent-activity.js +1 -1
- package/dist/components/ds-agent-questionnaire.js +1 -1
- package/dist/components/ds-agent-response.js +1 -1
- package/dist/components/ds-agent-source-list.js +1 -1
- package/dist/components/ds-agent-tool-call.js +1 -1
- package/dist/components/ds-attachment-list.js +1 -1
- package/dist/components/ds-avatar.js +1 -1
- package/dist/components/ds-badge.js +1 -1
- package/dist/components/ds-banner.js +1 -1
- package/dist/components/ds-bar-action.js +1 -1
- package/dist/components/ds-bar-nav.js +1 -1
- package/dist/components/ds-bar-page-title.js +1 -1
- package/dist/components/ds-bar-title.js +1 -1
- package/dist/components/ds-bar-workflow.js +1 -1
- package/dist/components/ds-breadcrumb.js +1 -1
- package/dist/components/ds-button-filled.js +1 -1
- package/dist/components/ds-button-inverted.d.ts +11 -0
- package/dist/components/ds-button-inverted.js +2 -0
- package/dist/components/ds-button-inverted.js.map +1 -0
- package/dist/components/ds-button-unfilled.js +1 -1
- package/dist/components/{ds-table-search.d.ts → ds-calendar.d.ts} +4 -4
- package/dist/components/ds-calendar.js +2 -0
- package/dist/components/ds-card-action-center.js +1 -1
- package/dist/components/ds-card-chart.js +1 -1
- package/dist/components/ds-card-navigation.js +1 -1
- package/dist/components/ds-card-navigation.js.map +1 -1
- package/dist/components/ds-card-overview.js +1 -1
- package/dist/components/ds-card-setting.js +1 -1
- package/dist/components/ds-card-settings-scope.js +1 -1
- package/dist/components/ds-card-settings-scope.js.map +1 -1
- package/dist/components/ds-chart-legend.js +1 -1
- package/dist/components/ds-chart.js +1 -1
- package/dist/components/ds-checkbox.js +1 -1
- package/dist/components/ds-chip.js +1 -1
- package/dist/components/ds-code-block.js +1 -1
- package/dist/components/ds-conversation-list-item.js +1 -1
- package/dist/components/ds-conversation-list-item.js.map +1 -1
- package/dist/components/ds-conversation-list-section.js +1 -1
- package/dist/components/ds-conversation-list.js +1 -1
- package/dist/components/ds-conversation-list.js.map +1 -1
- package/dist/components/ds-data-customize.d.ts +11 -0
- package/dist/components/ds-data-customize.js +2 -0
- package/dist/components/ds-data-customize.js.map +1 -0
- package/dist/components/{ds-table-group.d.ts → ds-data-filter.d.ts} +4 -4
- package/dist/components/ds-data-filter.js +2 -0
- package/dist/components/ds-data-filter.js.map +1 -0
- package/dist/components/{ds-table-sort.d.ts → ds-data-group.d.ts} +4 -4
- package/dist/components/ds-data-group.js +2 -0
- package/dist/components/ds-data-group.js.map +1 -0
- package/dist/components/{ds-table-saved-views.d.ts → ds-data-preferences.d.ts} +4 -4
- package/dist/components/ds-data-preferences.js +2 -0
- package/dist/components/ds-data-preferences.js.map +1 -0
- package/dist/components/ds-data-saved-views.d.ts +11 -0
- package/dist/components/ds-data-saved-views.js +2 -0
- package/dist/components/ds-data-saved-views.js.map +1 -0
- package/dist/components/ds-data-search.d.ts +11 -0
- package/dist/components/ds-data-search.js +2 -0
- package/dist/components/ds-data-search.js.map +1 -0
- package/dist/components/ds-data-sort.d.ts +11 -0
- package/dist/components/ds-data-sort.js +2 -0
- package/dist/components/ds-data-sort.js.map +1 -0
- package/dist/components/{ds-table-filter.d.ts → ds-data-toolbar.d.ts} +4 -4
- package/dist/components/ds-data-toolbar.js +2 -0
- package/dist/components/ds-data-toolbar.js.map +1 -0
- package/dist/components/ds-divider.js +1 -1
- package/dist/components/ds-empty-state.js +1 -1
- package/dist/components/ds-field.js +1 -1
- package/dist/components/ds-filter-menu.js +1 -1
- package/dist/components/ds-icon.js +1 -1
- package/dist/components/ds-input-date.d.ts +11 -0
- package/dist/components/ds-input-date.js +2 -0
- package/dist/components/ds-input-date.js.map +1 -0
- package/dist/components/ds-input-time.d.ts +11 -0
- package/dist/components/ds-input-time.js +2 -0
- package/dist/components/ds-input-time.js.map +1 -0
- package/dist/components/ds-input.js +1 -1
- package/dist/components/ds-markdown.js +1 -1
- package/dist/components/ds-menu.js +1 -1
- package/dist/components/ds-message-actions.js +1 -1
- package/dist/components/ds-message-bubble.js +1 -1
- package/dist/components/ds-message-bubble.js.map +1 -1
- package/dist/components/ds-message-composer.js +1 -1
- package/dist/components/ds-message-composer.js.map +1 -1
- package/dist/components/ds-message-scroller.js +1 -1
- package/dist/components/ds-message.js +1 -1
- package/dist/components/ds-mobile-bar-nav.js +1 -1
- package/dist/components/ds-mobile-header.js +1 -1
- package/dist/components/ds-mobile-section-switcher.js +1 -1
- package/dist/components/ds-mobile-sheet-nav.js +1 -1
- package/dist/components/ds-modal.js +1 -1
- package/dist/components/ds-pagination.js +1 -1
- package/dist/components/ds-panel-nav.js +1 -1
- package/dist/components/ds-panel-sub-nav.js +1 -1
- package/dist/components/ds-panel-tool-header.js +1 -1
- package/dist/components/ds-panel-tool-search.js +1 -1
- package/dist/components/ds-panel-tools.js +1 -1
- package/dist/components/ds-paper-texture.js +1 -1
- package/dist/components/ds-radio.js +1 -1
- package/dist/components/ds-score.js +1 -1
- package/dist/components/ds-scroll-overlay.js +1 -1
- package/dist/components/ds-select.js +1 -1
- package/dist/components/ds-shell-app.js +1 -1
- package/dist/components/ds-shell-page.js +1 -1
- package/dist/components/ds-shell-tools.js +1 -1
- package/dist/components/ds-skeleton.js +1 -1
- package/dist/components/ds-slider.js +1 -1
- package/dist/components/ds-slider.js.map +1 -1
- package/dist/components/ds-swatch-picker.js +1 -1
- package/dist/components/ds-switch.js +1 -1
- package/dist/components/ds-tab-group.js +1 -1
- package/dist/components/ds-table.js +1 -1
- package/dist/components/ds-table.js.map +1 -1
- package/dist/components/ds-tag.js +1 -1
- package/dist/components/ds-text.js +1 -1
- package/dist/components/ds-textarea.js +1 -1
- package/dist/components/ds-textarea.js.map +1 -1
- package/dist/components/ds-time-picker.d.ts +11 -0
- package/dist/components/ds-time-picker.js +2 -0
- package/dist/components/ds-time-picker.js.map +1 -0
- package/dist/components/ds-toast.js +1 -1
- package/dist/components/ds-tooltip-chart.js +1 -1
- package/dist/components/ds-tooltip.js +1 -1
- package/dist/components/ds-typing-indicator.js +1 -1
- package/dist/components/index.d.ts +5 -5
- package/dist/components/p-0FYD2bev.js +2 -0
- package/dist/components/p-0FYD2bev.js.map +1 -0
- package/dist/components/p-0qY_HDId.js +2 -0
- package/dist/components/{p-D_u8WhlU.js.map → p-0qY_HDId.js.map} +1 -1
- package/dist/components/{p-BQsVI_vO.js → p-5URekSny.js} +2 -2
- package/dist/components/{p-eo_pmPqp.js → p-7V1AhetH.js} +2 -2
- package/dist/components/{p-yZRXPHDe.js → p-8yBdCXCn.js} +2 -2
- package/dist/components/p-BKZdqJQB.js +2 -0
- package/dist/components/p-BKZdqJQB.js.map +1 -0
- package/dist/components/p-BYrBU_U9.js +2 -0
- package/dist/components/p-BYrBU_U9.js.map +1 -0
- package/dist/components/{p-D44g2Kw1.js → p-BciTtTwx.js} +2 -2
- package/dist/components/p-BciTtTwx.js.map +1 -0
- package/dist/components/{p-CZOiTaNa.js → p-BeNa6tw5.js} +2 -2
- package/dist/components/{p-CZOiTaNa.js.map → p-BeNa6tw5.js.map} +1 -1
- package/dist/components/p-BgQMEHRa.js +2 -0
- package/dist/components/{p-CwqFJMvP.js.map → p-BgQMEHRa.js.map} +1 -1
- package/dist/components/{p-BQaO7cg_.js → p-BhJXmuRA.js} +2 -2
- package/dist/components/{p-n68x-ZKp.js → p-Bm7rqs3C.js} +2 -2
- package/dist/components/{p-DdspY23v.js → p-Bn8I7iw6.js} +2 -2
- package/dist/components/{p-BnWxbhFP.js → p-Bpd6YCo4.js} +2 -2
- package/dist/components/{p-B-9fdIWv.js → p-C-3YqeTb.js} +2 -2
- package/dist/components/{p-umAf0fBn.js → p-CD4DZPy_.js} +2 -2
- package/dist/components/p-CElUM-xU.js +2 -0
- package/dist/components/p-CElUM-xU.js.map +1 -0
- package/dist/components/{p-CuwopElg.js → p-CGidq1iC.js} +2 -2
- package/dist/components/p-CNxvnQ6A.js +2 -0
- package/dist/components/p-CNxvnQ6A.js.map +1 -0
- package/dist/components/{p-CI7VfYC3.js → p-CUcUHwI3.js} +2 -2
- package/dist/components/p-CYzFfFcH.js +2 -0
- package/dist/components/{p-BINSI_KF.js.map → p-CYzFfFcH.js.map} +1 -1
- package/dist/components/{p-Dhw_W8nk.js → p-Cc3ZUQlJ.js} +2 -2
- package/dist/components/p-Cc3ZUQlJ.js.map +1 -0
- package/dist/components/p-CdgOLWX9.js +2 -0
- package/dist/components/p-CdgOLWX9.js.map +1 -0
- package/dist/components/{p-BcdHgPi5.js → p-CeXf9-X3.js} +2 -2
- package/dist/components/{p-CSnsz3Eb.js → p-CiH4GG6r.js} +2 -2
- package/dist/components/{p-y06IxxoN.js → p-CiJ1WR11.js} +2 -2
- package/dist/components/p-CmexIVnE.js +2 -0
- package/dist/components/{p-N5SHSVo2.js.map → p-CmexIVnE.js.map} +1 -1
- package/dist/components/{p-BmFeeR4q.js → p-CqW2eyiF.js} +2 -2
- package/dist/components/{p-CzbsTZt7.js → p-Cxr0IQjC.js} +2 -2
- package/dist/components/{p-CqlBlv55.js → p-CzIpquvw.js} +2 -2
- package/dist/components/{p-DC69DgAR.js → p-D0y7Sja6.js} +2 -2
- package/dist/components/{p-Cwz9TPVS.js → p-D1vQGJzc.js} +2 -2
- package/dist/components/{p-Cwz9TPVS.js.map → p-D1vQGJzc.js.map} +1 -1
- package/dist/components/{p-C7CZ9pnP.js → p-D6Wl3dRO.js} +2 -2
- package/dist/components/{p-BPhbwXOv.js → p-D922f6Tb.js} +2 -2
- package/dist/components/{p-beRFLHbB.js → p-DHICPS4n.js} +2 -2
- package/dist/components/{p-omPm8_vx.js → p-DOAybCp0.js} +2 -2
- package/dist/components/{p-DEGNrPLe.js → p-DVINzOoK.js} +2 -2
- package/dist/components/{p-DEGNrPLe.js.map → p-DVINzOoK.js.map} +1 -1
- package/dist/components/p-DVOjjuXc.js +2 -0
- package/dist/components/p-DVOjjuXc.js.map +1 -0
- package/dist/components/p-Di5FH7eh.js +2 -0
- package/dist/components/p-Di5FH7eh.js.map +1 -0
- package/dist/components/p-DjkUFlDW.js +2 -0
- package/dist/components/p-DjkUFlDW.js.map +1 -0
- package/dist/components/{p-BnzsBNUY.js → p-Dn9QHL4O.js} +2 -2
- package/dist/components/{p-DGzn4k4h.js → p-Do2FJd1y.js} +2 -2
- package/dist/components/{p-DTDLlinw.js → p-DpoTwJAR.js} +2 -2
- package/dist/components/{p-Dk-8Ju0Q.js → p-Dpr2y6_S.js} +2 -2
- package/dist/components/{p-Dk-8Ju0Q.js.map → p-Dpr2y6_S.js.map} +1 -1
- package/dist/components/p-Dw9sE6Iw.js +2 -0
- package/dist/components/p-Dw9sE6Iw.js.map +1 -0
- package/dist/components/{p-CLGtPE0K.js → p-DwbcNDJF.js} +2 -2
- package/dist/components/p-Dzndkdx5.js +2 -0
- package/dist/components/{p-xHGqrz_p.js.map → p-Dzndkdx5.js.map} +1 -1
- package/dist/components/{p-C8ek-1SP.js → p-E5W27Fu_.js} +2 -2
- package/dist/components/{p-mpk_Mm8_.js → p-FIBCluwV.js} +2 -2
- package/dist/components/{p-DQQFN2sw.js → p-IEq_06J0.js} +2 -2
- package/dist/components/{p-DQQFN2sw.js.map → p-IEq_06J0.js.map} +1 -1
- package/dist/components/{p-CE540WZ7.js → p-MG4lcN0D.js} +2 -2
- package/dist/components/p-Nc76seSq.js +2 -0
- package/dist/components/p-Nc76seSq.js.map +1 -0
- package/dist/components/{p-DtLQIMsa.js → p-ZhP2tVmM.js} +2 -2
- package/dist/components/p-aD5cw_m2.js +2 -0
- package/dist/components/p-aD5cw_m2.js.map +1 -0
- package/dist/components/p-etifxiDc.js +2 -0
- package/dist/components/{p-beCz9OnD.js.map → p-etifxiDc.js.map} +1 -1
- package/dist/components/p-kDZ0sEII.js +2 -0
- package/dist/components/p-kDZ0sEII.js.map +1 -0
- package/dist/components/{p-BPlWEidl.js → p-ljbw3UMZ.js} +2 -2
- package/dist/components/{p-DZ58Sg5a.js → p-vfCu7XSc.js} +2 -2
- package/dist/components/p-vfCu7XSc.js.map +1 -0
- package/dist/components/{p-DFjIBS5B.js → p-xdmJCPCg.js} +2 -2
- package/dist/components/{p-CAxDdYjh.js → p-xtGGIZmU.js} +2 -2
- package/dist/docs/components.json +18102 -14568
- package/dist/lib/components/Icon/flag-icon-catalog.d.ts +2 -0
- package/dist/lib/components/Icon/icon-cache.d.ts +36 -4
- package/dist/lib/components/Icon/map-icon-catalog.d.ts +2 -0
- package/dist/lib/shell/index.js +2 -2
- package/dist/lib/shell/index.js.map +1 -1
- package/dist/lib/utils/button-render.d.ts +1 -1
- package/dist/lib/utils/clock-time.d.ts +22 -0
- package/dist/lib/utils/date-filter-value.d.ts +4 -0
- package/dist/lib/utils/index.d.ts +3 -1
- package/dist/lib/utils/index.js +201 -5
- package/dist/lib/utils/index.js.map +4 -4
- package/dist/mcp-data/registry/agent-activity.json +2 -2
- package/dist/mcp-data/registry/agent-questionnaire.json +2 -2
- package/dist/mcp-data/registry/agent-response.json +1 -1
- package/dist/mcp-data/registry/agent-source-list.json +1 -1
- package/dist/mcp-data/registry/agent-tool-call.json +2 -2
- package/dist/mcp-data/registry/attachment-list.json +1 -1
- package/dist/mcp-data/registry/avatar.json +1 -1
- package/dist/mcp-data/registry/badge.json +1 -1
- package/dist/mcp-data/registry/banner.json +1 -1
- package/dist/mcp-data/registry/bar-action.json +1 -1
- package/dist/mcp-data/registry/bar-nav.json +1 -1
- package/dist/mcp-data/registry/bar-page-title.json +1 -1
- package/dist/mcp-data/registry/bar-title.json +3 -3
- package/dist/mcp-data/registry/bar-workflow.json +1 -1
- package/dist/mcp-data/registry/breadcrumb.json +1 -1
- package/dist/mcp-data/registry/button-filled.json +1 -1
- package/dist/mcp-data/registry/button-inverted.json +580 -0
- package/dist/mcp-data/registry/button-unfilled.json +1 -1
- package/dist/mcp-data/registry/calendar.json +273 -0
- package/dist/mcp-data/registry/card-action-center.json +1 -1
- package/dist/mcp-data/registry/card-chart.json +1 -1
- package/dist/mcp-data/registry/card-navigation.json +5 -3
- package/dist/mcp-data/registry/card-overview.json +1 -1
- package/dist/mcp-data/registry/card-setting.json +1 -1
- package/dist/mcp-data/registry/card-settings-scope.json +1 -1
- package/dist/mcp-data/registry/chart-legend.json +1 -1
- package/dist/mcp-data/registry/chart.json +1 -1
- package/dist/mcp-data/registry/checkbox.json +1 -1
- package/dist/mcp-data/registry/chip.json +1 -1
- package/dist/mcp-data/registry/code-block.json +1 -1
- package/dist/mcp-data/registry/conversation-list-item.json +1 -1
- package/dist/mcp-data/registry/conversation-list-section.json +1 -1
- package/dist/mcp-data/registry/conversation-list.json +10 -32
- package/dist/mcp-data/registry/data-customize.json +374 -0
- package/dist/mcp-data/registry/{table-filter.json → data-filter.json} +33 -33
- package/dist/mcp-data/registry/data-group.json +358 -0
- package/dist/mcp-data/registry/data-preferences.json +566 -0
- package/dist/mcp-data/registry/data-saved-views.json +433 -0
- package/dist/mcp-data/registry/data-search.json +367 -0
- package/dist/mcp-data/registry/data-sort.json +254 -0
- package/dist/mcp-data/registry/data-toolbar.json +181 -0
- package/dist/mcp-data/registry/divider.json +1 -1
- package/dist/mcp-data/registry/empty-state.json +1 -1
- package/dist/mcp-data/registry/field.json +20 -15
- package/dist/mcp-data/registry/filter-menu.json +7 -11
- package/dist/mcp-data/registry/icon.json +13 -7
- package/dist/mcp-data/registry/input-date.json +516 -0
- package/dist/mcp-data/registry/input-time.json +535 -0
- package/dist/mcp-data/registry/input.json +57 -9
- package/dist/mcp-data/registry/loader.json +1 -1
- package/dist/mcp-data/registry/markdown.json +1 -1
- package/dist/mcp-data/registry/menu.json +3 -3
- package/dist/mcp-data/registry/message-actions.json +1 -1
- package/dist/mcp-data/registry/message-bubble.json +1 -1
- package/dist/mcp-data/registry/message-composer.json +2 -2
- package/dist/mcp-data/registry/message-scroller.json +1 -1
- package/dist/mcp-data/registry/message.json +1 -1
- package/dist/mcp-data/registry/mobile-bar-nav.json +2 -2
- package/dist/mcp-data/registry/mobile-header.json +1 -1
- package/dist/mcp-data/registry/mobile-section-switcher.json +1 -1
- package/dist/mcp-data/registry/mobile-sheet-nav.json +2 -2
- package/dist/mcp-data/registry/modal.json +1 -1
- package/dist/mcp-data/registry/pagination.json +1 -1
- package/dist/mcp-data/registry/panel-nav.json +1 -1
- package/dist/mcp-data/registry/panel-sub-nav.json +1 -1
- package/dist/mcp-data/registry/panel-tool-header.json +1 -1
- package/dist/mcp-data/registry/panel-tool-search.json +1 -1
- package/dist/mcp-data/registry/panel-tools.json +3 -3
- package/dist/mcp-data/registry/paper-texture.json +1 -1
- package/dist/mcp-data/registry/radio.json +1 -1
- package/dist/mcp-data/registry/registry.json +5911 -4816
- package/dist/mcp-data/registry/score.json +1 -1
- package/dist/mcp-data/registry/scroll-overlay.json +1 -1
- package/dist/mcp-data/registry/select.json +64 -8
- package/dist/mcp-data/registry/shell-app.json +1 -1
- package/dist/mcp-data/registry/shell-page.json +1 -1
- package/dist/mcp-data/registry/shell-tools.json +1 -1
- package/dist/mcp-data/registry/skeleton.json +1 -1
- package/dist/mcp-data/registry/slider.json +1 -1
- package/dist/mcp-data/registry/swatch-picker.json +1 -1
- package/dist/mcp-data/registry/switch.json +1 -1
- package/dist/mcp-data/registry/tab-group.json +1 -1
- package/dist/mcp-data/registry/table.json +71 -71
- package/dist/mcp-data/registry/tag.json +1 -1
- package/dist/mcp-data/registry/text.json +1 -1
- package/dist/mcp-data/registry/textarea.json +3 -3
- package/dist/mcp-data/registry/time-picker.json +259 -0
- package/dist/mcp-data/registry/toast.json +1 -1
- package/dist/mcp-data/registry/tooltip-chart.json +1 -1
- package/dist/mcp-data/registry/tooltip.json +1 -1
- package/dist/mcp-data/registry/typing-indicator.json +1 -1
- package/dist/react/components.d.ts +13 -7
- package/dist/react/components.js +13 -7
- package/dist/react/ds-button-inverted.d.ts +13 -0
- package/dist/react/ds-button-inverted.js +15 -0
- package/dist/react/ds-calendar.d.ts +12 -0
- package/dist/react/ds-calendar.js +12 -0
- package/dist/react/ds-data-customize.d.ts +13 -0
- package/dist/react/ds-data-customize.js +15 -0
- package/dist/react/ds-data-filter.d.ts +18 -0
- package/dist/react/{ds-table-filter.js → ds-data-filter.js} +5 -5
- package/dist/react/ds-data-group.d.ts +14 -0
- package/dist/react/{ds-table-group.js → ds-data-group.js} +5 -5
- package/dist/react/ds-data-preferences.d.ts +21 -0
- package/dist/react/{ds-table-preferences.js → ds-data-preferences.js} +6 -6
- package/dist/react/ds-data-saved-views.d.ts +17 -0
- package/dist/react/{ds-table-saved-views.js → ds-data-saved-views.js} +5 -5
- package/dist/react/ds-data-search.d.ts +14 -0
- package/dist/react/{ds-table-search.js → ds-data-search.js} +5 -5
- package/dist/react/ds-data-sort.d.ts +12 -0
- package/dist/react/ds-data-sort.js +12 -0
- package/dist/react/{ds-table-toolbar.d.ts → ds-data-toolbar.d.ts} +3 -3
- package/dist/react/ds-data-toolbar.js +12 -0
- package/dist/react/ds-field.d.ts +1 -1
- package/dist/react/ds-input-date.d.ts +12 -0
- package/dist/react/ds-input-date.js +12 -0
- package/dist/react/ds-input-time.d.ts +12 -0
- package/dist/react/ds-input-time.js +12 -0
- package/dist/react/ds-table.d.ts +3 -3
- package/dist/react/ds-table.js +1 -1
- package/dist/react/ds-time-picker.d.ts +12 -0
- package/dist/react/ds-time-picker.js +12 -0
- package/dist/styles/table.css +11 -11
- package/dist/types/components/BarTitle/BarTitle.d.ts +1 -0
- package/dist/types/components/BarTitle/bar-title-action-chrome.d.ts +2 -0
- package/dist/types/components/ButtonInverted/ButtonInverted.d.ts +83 -0
- package/dist/types/components/ButtonInverted/index.d.ts +2 -0
- package/dist/types/components/Calendar/Calendar.d.ts +32 -0
- package/dist/types/components/Calendar/calendar-grid.d.ts +19 -0
- package/dist/types/components/ConversationList/ConversationList.d.ts +0 -7
- package/dist/types/components/DataCustomize/DataCustomize.d.ts +67 -0
- package/dist/types/components/{TableFilter/TableFilter.d.ts → DataFilter/DataFilter.d.ts} +2 -2
- package/dist/types/components/{TableGroup/TableGroup.d.ts → DataGroup/DataGroup.d.ts} +8 -8
- package/dist/types/components/{TablePreferences/TablePreferences.d.ts → DataPreferences/DataPreferences.d.ts} +29 -13
- package/dist/types/components/{TableSavedViews/TableSavedViews.d.ts → DataSavedViews/DataSavedViews.d.ts} +10 -10
- package/dist/types/components/DataSavedViews/data-saved-views-types.d.ts +24 -0
- package/dist/types/components/DataSavedViews/index.d.ts +2 -0
- package/dist/types/components/{TableSearch/TableSearch.d.ts → DataSearch/DataSearch.d.ts} +6 -6
- package/dist/types/components/{TableSearch/table-search-model.d.ts → DataSearch/data-search-model.d.ts} +6 -6
- package/dist/types/components/{TableSearch/table-search-types.d.ts → DataSearch/data-search-types.d.ts} +3 -3
- package/dist/types/components/{TableSort/TableSort.d.ts → DataSort/DataSort.d.ts} +7 -6
- package/dist/types/components/DataSort/data-sort-menu.d.ts +15 -0
- package/dist/types/components/{TableToolbar/TableToolbar.d.ts → DataToolbar/DataToolbar.d.ts} +3 -3
- package/dist/types/components/Field/Field.d.ts +7 -2
- package/dist/types/components/FilterMenu/FilterMenu.d.ts +0 -10
- package/dist/types/components/Icon/icon-cache.d.ts +36 -4
- package/dist/types/components/Icon/map-icon-catalog.d.ts +3 -0
- package/dist/types/components/Input/Input.d.ts +10 -0
- package/dist/types/components/InputDate/InputDate.d.ts +78 -0
- package/dist/types/components/InputTime/InputTime.d.ts +80 -0
- package/dist/types/components/PanelTools/PanelTools.d.ts +1 -1
- package/dist/types/components/Select/Select.d.ts +8 -1
- package/dist/types/components/Table/Table.d.ts +9 -9
- package/dist/types/components/Table/index.d.ts +1 -1
- package/dist/types/components/Table/table-action-menu.d.ts +1 -1
- package/dist/types/components/Table/table-body-renderer.d.ts +2 -2
- package/dist/types/components/Table/table-column-customizer.d.ts +9 -9
- package/dist/types/components/Table/table-group-load-controller.d.ts +2 -2
- package/dist/types/components/Table/table-model.d.ts +7 -7
- package/dist/types/components/Table/table-render-model.d.ts +3 -3
- package/dist/types/components/Table/table-types.d.ts +17 -36
- package/dist/types/components/Table/table-virtual-model.d.ts +2 -2
- package/dist/types/components/TimePicker/TimePicker.d.ts +33 -0
- package/dist/types/components.d.ts +5461 -4433
- package/dist/types/utils/button-render.d.ts +1 -1
- package/dist/types/utils/clock-time.d.ts +23 -0
- package/dist/types/utils/data-field.d.ts +38 -0
- package/dist/types/utils/date-filter-value.d.ts +4 -0
- package/dist/types/utils/index.d.ts +3 -1
- package/dist/types/utils/list-customizer.d.ts +38 -0
- package/dist/types/utils/table-caption-compact.d.ts +1 -1
- package/dist/vue/components.d.ts +13 -7
- package/dist/vue/components.js +13 -7
- package/dist/vue/ds-button-inverted.d.ts +3 -0
- package/dist/vue/ds-button-inverted.js +33 -0
- package/dist/vue/{ds-table-sort.d.ts → ds-calendar.d.ts} +1 -1
- package/dist/vue/ds-calendar.js +16 -0
- package/dist/vue/ds-conversation-list.js +1 -3
- package/dist/vue/ds-data-customize.d.ts +3 -0
- package/dist/vue/ds-data-customize.js +23 -0
- package/dist/vue/{ds-table-group.d.ts → ds-data-filter.d.ts} +1 -1
- package/dist/vue/{ds-table-filter.js → ds-data-filter.js} +2 -2
- package/dist/vue/{ds-table-filter.d.ts → ds-data-group.d.ts} +1 -1
- package/dist/vue/{ds-table-group.js → ds-data-group.js} +2 -2
- package/dist/vue/{ds-table-saved-views.d.ts → ds-data-preferences.d.ts} +1 -1
- package/dist/vue/{ds-table-preferences.js → ds-data-preferences.js} +10 -7
- package/dist/vue/ds-data-saved-views.d.ts +3 -0
- package/dist/vue/{ds-table-saved-views.js → ds-data-saved-views.js} +2 -2
- package/dist/vue/{ds-table-search.d.ts → ds-data-search.d.ts} +1 -1
- package/dist/vue/{ds-table-search.js → ds-data-search.js} +3 -3
- package/dist/vue/ds-data-sort.d.ts +3 -0
- package/dist/vue/{ds-table-sort.js → ds-data-sort.js} +3 -3
- package/dist/vue/ds-data-toolbar.d.ts +3 -0
- package/dist/vue/ds-data-toolbar.js +9 -0
- package/dist/vue/{ds-table-preferences.d.ts → ds-input-date.d.ts} +1 -1
- package/dist/vue/ds-input-date.js +31 -0
- package/dist/vue/ds-input-time.d.ts +3 -0
- package/dist/vue/ds-input-time.js +32 -0
- package/dist/vue/ds-input.js +2 -0
- package/dist/vue/ds-select.js +3 -0
- package/dist/vue/ds-table.js +4 -4
- package/dist/vue/ds-time-picker.d.ts +3 -0
- package/dist/vue/ds-time-picker.js +16 -0
- package/package.json +3 -3
- package/dist/angular/ds-table-filter.d.ts +0 -50
- package/dist/angular/ds-table-group.d.ts +0 -29
- package/dist/angular/ds-table-preferences.d.ts +0 -39
- package/dist/angular/ds-table-saved-views.d.ts +0 -49
- package/dist/angular/ds-table-search.d.ts +0 -20
- package/dist/angular/ds-table-sort.d.ts +0 -16
- package/dist/angular/ds-table-toolbar.d.ts +0 -12
- package/dist/components/ds-table-filter.js +0 -2
- package/dist/components/ds-table-filter.js.map +0 -1
- package/dist/components/ds-table-group.js +0 -2
- package/dist/components/ds-table-preferences.d.ts +0 -11
- package/dist/components/ds-table-preferences.js +0 -2
- package/dist/components/ds-table-preferences.js.map +0 -1
- package/dist/components/ds-table-saved-views.js +0 -2
- package/dist/components/ds-table-saved-views.js.map +0 -1
- package/dist/components/ds-table-search.js +0 -2
- package/dist/components/ds-table-search.js.map +0 -1
- package/dist/components/ds-table-sort.js +0 -2
- package/dist/components/ds-table-sort.js.map +0 -1
- package/dist/components/ds-table-toolbar.d.ts +0 -11
- package/dist/components/ds-table-toolbar.js +0 -2
- package/dist/components/ds-table-toolbar.js.map +0 -1
- package/dist/components/p-BINSI_KF.js +0 -2
- package/dist/components/p-BbfBvMRR.js +0 -2
- package/dist/components/p-BbfBvMRR.js.map +0 -1
- package/dist/components/p-C1_3CVma.js +0 -2
- package/dist/components/p-C1_3CVma.js.map +0 -1
- package/dist/components/p-CKarsuR2.js +0 -2
- package/dist/components/p-CKarsuR2.js.map +0 -1
- package/dist/components/p-Cea7rROU.js +0 -2
- package/dist/components/p-Cea7rROU.js.map +0 -1
- package/dist/components/p-Cmj04E5Q.js +0 -2
- package/dist/components/p-Cmj04E5Q.js.map +0 -1
- package/dist/components/p-Cq_Qpe_C.js +0 -2
- package/dist/components/p-Cq_Qpe_C.js.map +0 -1
- package/dist/components/p-CwqFJMvP.js +0 -2
- package/dist/components/p-D44g2Kw1.js.map +0 -1
- package/dist/components/p-DZ58Sg5a.js.map +0 -1
- package/dist/components/p-D_u8WhlU.js +0 -2
- package/dist/components/p-Dhw_W8nk.js.map +0 -1
- package/dist/components/p-FPZbS19l.js +0 -2
- package/dist/components/p-FPZbS19l.js.map +0 -1
- package/dist/components/p-KBrC9IG4.js +0 -2
- package/dist/components/p-KBrC9IG4.js.map +0 -1
- package/dist/components/p-N5SHSVo2.js +0 -2
- package/dist/components/p-QjkufCcn.js +0 -2
- package/dist/components/p-QjkufCcn.js.map +0 -1
- package/dist/components/p-UAIxh67Q.js +0 -2
- package/dist/components/p-UAIxh67Q.js.map +0 -1
- package/dist/components/p-beCz9OnD.js +0 -2
- package/dist/components/p-xHGqrz_p.js +0 -2
- package/dist/mcp-data/registry/table-group.json +0 -358
- package/dist/mcp-data/registry/table-preferences.json +0 -511
- package/dist/mcp-data/registry/table-saved-views.json +0 -431
- package/dist/mcp-data/registry/table-search.json +0 -366
- package/dist/mcp-data/registry/table-sort.json +0 -253
- package/dist/mcp-data/registry/table-toolbar.json +0 -180
- package/dist/react/ds-table-filter.d.ts +0 -18
- package/dist/react/ds-table-group.d.ts +0 -14
- package/dist/react/ds-table-preferences.d.ts +0 -21
- package/dist/react/ds-table-saved-views.d.ts +0 -17
- package/dist/react/ds-table-search.d.ts +0 -14
- package/dist/react/ds-table-sort.d.ts +0 -12
- package/dist/react/ds-table-sort.js +0 -12
- package/dist/react/ds-table-toolbar.js +0 -12
- package/dist/types/components/FilterMenu/filter-menu-calendar.d.ts +0 -13
- package/dist/types/components/TableSavedViews/index.d.ts +0 -2
- package/dist/types/components/TableSavedViews/table-saved-views-types.d.ts +0 -24
- package/dist/types/components/TableSort/table-sort-menu.d.ts +0 -15
- package/dist/vue/ds-table-toolbar.d.ts +0 -3
- package/dist/vue/ds-table-toolbar.js +0 -9
- /package/dist/components/{ds-table-group.js.map → ds-calendar.js.map} +0 -0
- /package/dist/components/{p-BQsVI_vO.js.map → p-5URekSny.js.map} +0 -0
- /package/dist/components/{p-eo_pmPqp.js.map → p-7V1AhetH.js.map} +0 -0
- /package/dist/components/{p-yZRXPHDe.js.map → p-8yBdCXCn.js.map} +0 -0
- /package/dist/components/{p-BQaO7cg_.js.map → p-BhJXmuRA.js.map} +0 -0
- /package/dist/components/{p-n68x-ZKp.js.map → p-Bm7rqs3C.js.map} +0 -0
- /package/dist/components/{p-DdspY23v.js.map → p-Bn8I7iw6.js.map} +0 -0
- /package/dist/components/{p-BnWxbhFP.js.map → p-Bpd6YCo4.js.map} +0 -0
- /package/dist/components/{p-B-9fdIWv.js.map → p-C-3YqeTb.js.map} +0 -0
- /package/dist/components/{p-umAf0fBn.js.map → p-CD4DZPy_.js.map} +0 -0
- /package/dist/components/{p-CuwopElg.js.map → p-CGidq1iC.js.map} +0 -0
- /package/dist/components/{p-CI7VfYC3.js.map → p-CUcUHwI3.js.map} +0 -0
- /package/dist/components/{p-BcdHgPi5.js.map → p-CeXf9-X3.js.map} +0 -0
- /package/dist/components/{p-CSnsz3Eb.js.map → p-CiH4GG6r.js.map} +0 -0
- /package/dist/components/{p-y06IxxoN.js.map → p-CiJ1WR11.js.map} +0 -0
- /package/dist/components/{p-BmFeeR4q.js.map → p-CqW2eyiF.js.map} +0 -0
- /package/dist/components/{p-CzbsTZt7.js.map → p-Cxr0IQjC.js.map} +0 -0
- /package/dist/components/{p-CqlBlv55.js.map → p-CzIpquvw.js.map} +0 -0
- /package/dist/components/{p-DC69DgAR.js.map → p-D0y7Sja6.js.map} +0 -0
- /package/dist/components/{p-C7CZ9pnP.js.map → p-D6Wl3dRO.js.map} +0 -0
- /package/dist/components/{p-BPhbwXOv.js.map → p-D922f6Tb.js.map} +0 -0
- /package/dist/components/{p-beRFLHbB.js.map → p-DHICPS4n.js.map} +0 -0
- /package/dist/components/{p-omPm8_vx.js.map → p-DOAybCp0.js.map} +0 -0
- /package/dist/components/{p-BnzsBNUY.js.map → p-Dn9QHL4O.js.map} +0 -0
- /package/dist/components/{p-DGzn4k4h.js.map → p-Do2FJd1y.js.map} +0 -0
- /package/dist/components/{p-DTDLlinw.js.map → p-DpoTwJAR.js.map} +0 -0
- /package/dist/components/{p-CLGtPE0K.js.map → p-DwbcNDJF.js.map} +0 -0
- /package/dist/components/{p-C8ek-1SP.js.map → p-E5W27Fu_.js.map} +0 -0
- /package/dist/components/{p-mpk_Mm8_.js.map → p-FIBCluwV.js.map} +0 -0
- /package/dist/components/{p-CE540WZ7.js.map → p-MG4lcN0D.js.map} +0 -0
- /package/dist/components/{p-DtLQIMsa.js.map → p-ZhP2tVmM.js.map} +0 -0
- /package/dist/components/{p-BPlWEidl.js.map → p-ljbw3UMZ.js.map} +0 -0
- /package/dist/components/{p-DFjIBS5B.js.map → p-xdmJCPCg.js.map} +0 -0
- /package/dist/components/{p-CAxDdYjh.js.map → p-xtGGIZmU.js.map} +0 -0
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"names":["PANEL_TOOLS_TOOL_IDS","PANEL_TOOLS_PRIMARY_TOOL_ID","PANEL_TOOLS_LABELS","search","messages","stacks","activity","agents","help","PANEL_TOOLS_SHORTCUTS","PANEL_TOOLS_DEFAULT_ITEMS","id","icon","label","railPlacement","order","shortcutKey","mobileDestination","PANEL_TOOLS_REGION_ORDER","header","body","footer","panelToolsItemOrder","item","canonical","findIndex","Number","MAX_SAFE_INTEGER","orderPanelToolsItems","items","firstById","Map","trim","has","set","Array","from","values","sort","left","right","leftRegion","panelToolsRailPlacement","rightRegion","regionDelta","orderPanelToolsRailEntries","accessories","toolEntries","map","type","firstAccessoryById","accessory","accessoryEntries","leftPlacement","rightPlacement","leftOrder","rightOrder","panelToolsRailFocusKeys","entries","flatMap","entry","action","isInactive","keys","primaryAction","secondaryAction","push","reconcilePanelToolsRovingIndex","previousKeys","nextKeys","currentIndex","length","currentKey","preservedIndex","indexOf","index","nextIndex","Math","min","max","panelToolsRailAccessoryActionDetail","accessoryId","actionId","anchor","isPanelToolsToolId","value","reconcilePanelToolsAvailability","open","activeTool","some","removedTool","panelToolsDrawerTransitionMs","style","properties","transitionProperty","split","durations","transitionDuration","parseCssTimeMs","delays","transitionDelay","reduce","property","duration","delay","panelToolsDrawerResting","motion","panelToolsDrawerAtTerminal","width","targetWidth","resolvePanelToolActivation","selected","panelToolsCss","PanelTools","__stencil_proxyCustomElement","HTMLElement","constructor","registerHost","this","presentation","fullscreenHeaderMode","toolsLabel","toolShortcutsLabel","headers","storageKey","drawerSurfaceRetained","readyForMotion","presentationMotionSuppressed","rovingIndex","fullViewToolIds","railBodyScrollable","motionEnableGeneration","presentationMotionGeneration","transitionGeneration","transitionFallbackTimer","ignoreReplacementTerminal","focusBeforeFullscreen","fullViewObserver","handleComposedHeaderAction","event","detail","stopPropagation","dsHeaderAction","emit","tool","handleTransitionEnd","drawer","renderRoot","querySelector","target","propertyName","drawerTransitionAtTerminal","finishDrawerTransition","handleToolChange","next","dsToolChange","handleRailKeyDown","e","activate","orderedRailEntries","key","preventDefault","focusRailAt","railItems","orderedRailItems","railAccessories","disconnectedCallback","el","removeEventListener","clearTransitionCompletion","disconnect","disconnectRailBodyObserver","presentationChanged","previous","getAttribute","setAttribute","presentationGeneration","requestAnimationFrame","document","activeElement","fallbackActionId","activeHeader","actions","async","isConnected","focus","preventScroll","focusRestored","contains","focusHeaderAction","dsPresentationChange","handleFullscreenEscape","deferMotionEnable","generation","connectedCallback","ANCHORED_OVERLAY_BOUNDARY_ATTRIBUTE","addEventListener","componentWillLoad","restoreLastActiveTool","openChanged","isOpen","wasOpen","undefined","startDrawerTransition","activeToolChanged","persistLastActiveTool","storageKeyChanged","componentDidLoad","connectRailBodyObserver","updateRailBodyScrollable","syncFullViewTools","MutationObserver","observe","childList","attributes","attributeFilter","componentDidRender","railBodyEl","ResizeObserver","railBodyObserver","Boolean","scrollHeight","clientHeight","itemsChanged","reconcileActiveTool","accessoriesChanged","focusedKey","closest","dataset","railFocusKey","focusedIndex","restoreFocus","includes","stored","localStorage","getItem","setItem","clearPersistedTool","removeItem","phase","dsChromeTransitionStart","source","fallbackMs","getComputedStyle","window","setTimeout","getBoundingClientRect","surface","completedPhase","wasTransitioning","dsChromeTransitionEnd","clearTimeout","isRailSelected","isDrawerPresent","isViewActive","hasFullView","ids","filter","join","shadowRoot","headerLabel","find","candidate","resolvedHeaders","activateTool","closeDrawer","CSS","escape","setFocus","bounded","renderRailAction","focusKey","ariaLabel","h","side","size","boundary","variant","class","isActive","activeFill","hasBorder","pressScale","dot","focusTabIndex","pressed","onFocusin","onKeyDown","onDsClick","accessoryPrimaryLabel","actionLabel","status","statusText","emitAccessoryAction","dsRailAccessoryAction","renderAccessoryVisual","visual","src","alt","initial","slice","as","emphasis","color","name","renderRailShortcut","focusIndexes","focusIndex","get","initials","disabled","tabIndex","onFocus","onClick","currentTarget","background","renderRailAccessory","primaryKey","primaryIndex","primaryLabel","secondary","secondaryKey","secondaryIndex","statusTone","rounded","renderRailEntry","render","headerTitle","title","headerActions","entryPlacement","headerEntries","bodyEntries","footerEntries","showDrawerChrome","drawerResting","activeFullView","toolIds","Host","role","ref","element","inert","heading","showBack","backIcon","backAriaLabel","showMenu","toolHeader","onDsBack","dsHeaderBack","hidden","active"],"sources":["src/wc/components/PanelTools/panel-tools-types.ts","src/wc/components/PanelTools/panel-tools-utils.ts","src/wc/components/PanelTools/PanelTools.css?tag=ds-panel-tools&encapsulation=shadow","src/wc/components/PanelTools/PanelTools.tsx"],"sourcesContent":["/** Application-owned tool id for the shell rail and responsive tool views. */\nexport type PanelToolsToolId = string;\n\n/** Canonical Motive shell recipe used when item metadata is omitted. */\nexport type CanonicalPanelToolsToolId =\n | 'search'\n | 'messages'\n | 'agents'\n | 'stacks'\n | 'activity'\n | 'help';\n\nexport const PANEL_TOOLS_TOOL_IDS: CanonicalPanelToolsToolId[] = [\n 'agents',\n 'messages',\n 'activity',\n 'search',\n 'stacks',\n 'help',\n];\n\n/** Rail header slot — mirrors panel-nav M logo row. */\nexport const PANEL_TOOLS_PRIMARY_TOOL_ID: CanonicalPanelToolsToolId = 'agents';\n\n/** Rail footer slot — flush to the bottom of the tools column. */\nexport const PANEL_TOOLS_FOOTER_TOOL_ID: CanonicalPanelToolsToolId = 'help';\n\nexport const PANEL_TOOLS_LABELS: Record<CanonicalPanelToolsToolId, string> = {\n search: 'Search',\n messages: 'Messages',\n stacks: 'Stacks',\n activity: 'Activity',\n agents: 'Agents',\n help: 'Help & Support',\n};\n\nexport const PANEL_TOOLS_SHORTCUTS: Partial<Record<CanonicalPanelToolsToolId, string>> = {\n search: 'K',\n agents: 'A',\n messages: 'M',\n stacks: 'S',\n activity: 'N',\n help: '/',\n};\n\nexport type PanelToolsRailPlacement = 'header' | 'body' | 'footer';\n\nexport interface PanelToolsItem {\n id: PanelToolsToolId;\n /** Icon name for <ds-icon>. */\n icon: string;\n /** Visible and accessible fallback label for custom tool ids. */\n label?: string;\n /** Explicit rail region; canonical Agents/Help placement is the fallback. */\n railPlacement?: PanelToolsRailPlacement;\n /** Stable ordering within the selected rail region. */\n order?: number;\n /** Optional shortcut label displayed by the tooltip. */\n shortcutKey?: string;\n /** Mobile destination recipe; canonical ids retain their explicit defaults. */\n mobileDestination?: 'search' | 'inbox' | 'activity' | 'messages' | 'agents' | 'help';\n /** Whether this rail button is currently pressed/active. */\n selected?: boolean;\n /** Show a notification dot. */\n dot?: boolean;\n isInactive?: boolean;\n ariaLabel?: string;\n}\n\nexport type PanelToolsRailAccessoryVisual =\n | { type: 'icon'; icon: string }\n | { type: 'initial'; initial: string }\n | { type: 'image'; src: string };\n\nexport interface PanelToolsRailAccessoryAction {\n /** Stable application-owned action id emitted with the accessory id. */\n id: string;\n /** Overrides the accessory label for the primary action. */\n ariaLabel?: string;\n isInactive?: boolean;\n}\n\nexport interface PanelToolsRailAccessorySecondaryAction {\n id: string;\n icon: string;\n ariaLabel: string;\n isInactive?: boolean;\n}\n\nexport type PanelToolsRailTransientTone = 'active' | 'positive';\n\ninterface PanelToolsRailAccessoryBase {\n /** Stable application-owned identity. Duplicate or blank ids are omitted. */\n id: string;\n /** Explicit rail region; accessories never infer placement from their id. */\n railPlacement: PanelToolsRailPlacement;\n /** Stable ordering within the selected rail region. */\n order: number;\n}\n\n/** Decorative boundary between application-owned rail accessory groups. */\nexport interface PanelToolsRailDividerAccessory extends PanelToolsRailAccessoryBase {\n type: 'divider';\n}\n\n/**\n * A compact one-action shortcut that matches standard tool-button geometry.\n * PanelTools owns its initial orb, notification dot, and transient interaction paint.\n */\nexport interface PanelToolsRailShortcutAccessory extends PanelToolsRailAccessoryBase {\n type: 'shortcut';\n /** Accessible shortcut name and action-label fallback. */\n ariaLabel: string;\n /** One or two displayed graphemes. Longer values are truncated visually. */\n initials: string;\n /** Supplemental notification dot. Include its meaning in the accessible label when needed. */\n dot?: boolean;\n action: PanelToolsRailAccessoryAction;\n}\n\n/**\n * A direct application intent that never selects a tool or changes drawer state.\n * PanelTools owns the two-control-height surface and its focus behavior.\n */\nexport interface PanelToolsRailTransientAccessory extends PanelToolsRailAccessoryBase {\n type: 'transient';\n /** Accessible accessory name and primary-action fallback label. */\n ariaLabel: string;\n visual: PanelToolsRailAccessoryVisual;\n /** State announced with the primary action and shown in its tooltip. */\n statusText: string;\n /** Bold surface treatment. Active uses brand; positive uses positive semantic color. */\n statusTone: PanelToolsRailTransientTone;\n primaryAction: PanelToolsRailAccessoryAction;\n secondaryAction?: PanelToolsRailAccessorySecondaryAction;\n}\n\nexport type PanelToolsRailAccessory =\n | PanelToolsRailDividerAccessory\n | PanelToolsRailShortcutAccessory\n | PanelToolsRailTransientAccessory;\n\nexport interface PanelToolsRailAccessoryActionDetail {\n accessoryId: string;\n actionId: string;\n /** Rendered action control, suitable for anchoring an application-owned overlay. */\n anchor: HTMLElement;\n}\n\n/** Canonical shell recipe used by Lab and by managed ShellApp examples. */\nexport const PANEL_TOOLS_DEFAULT_ITEMS: PanelToolsItem[] = [\n {\n id: 'agents',\n icon: 'AI',\n label: PANEL_TOOLS_LABELS.agents,\n railPlacement: 'header',\n order: 0,\n shortcutKey: PANEL_TOOLS_SHORTCUTS.agents,\n mobileDestination: 'agents',\n },\n {\n id: 'messages',\n icon: 'MessageBubbleStack',\n label: PANEL_TOOLS_LABELS.messages,\n order: 0,\n shortcutKey: PANEL_TOOLS_SHORTCUTS.messages,\n mobileDestination: 'messages',\n },\n {\n id: 'activity',\n icon: 'Bell',\n label: PANEL_TOOLS_LABELS.activity,\n order: 1,\n shortcutKey: PANEL_TOOLS_SHORTCUTS.activity,\n mobileDestination: 'activity',\n },\n {\n id: 'search',\n icon: 'MagnifyingGlass',\n label: PANEL_TOOLS_LABELS.search,\n order: 2,\n shortcutKey: PANEL_TOOLS_SHORTCUTS.search,\n mobileDestination: 'search',\n },\n {\n id: 'help',\n icon: 'CircleQuestion',\n label: PANEL_TOOLS_LABELS.help,\n railPlacement: 'footer',\n order: 0,\n shortcutKey: PANEL_TOOLS_SHORTCUTS.help,\n mobileDestination: 'help',\n },\n];\n\nexport interface PanelToolsHeaderAction {\n id: string;\n icon: string;\n ariaLabel: string;\n triggerId?: string;\n controls?: string;\n expanded?: boolean;\n /** Associated surface remains visible, including exit motion. */\n surfaceOpen?: boolean;\n haspopup?: 'menu' | 'dialog' | 'listbox' | 'tree' | 'grid';\n pressed?: boolean;\n isInactive?: boolean;\n}\n\nexport interface PanelToolsHeaderActionDetail {\n tool: PanelToolsToolId;\n id: string;\n /** Rendered header action host. Pass this to an external overlay's element anchor prop. */\n anchor?: HTMLElement;\n}\n\nexport interface PanelToolHeaderActionDetail {\n id: string;\n originalEvent: MouseEvent;\n /** Rendered action host, suitable for anchoring an external overlay across a shadow boundary. */\n anchor: HTMLElement;\n}\n\nexport interface PanelToolsHeaderConfig {\n title?: string;\n showBack?: boolean;\n backIcon?: string;\n backAriaLabel?: string;\n actions?: PanelToolsHeaderAction[];\n}\n\n/** Per-tool header state. The application replaces the object when a tool changes depth or actions. */\nexport type PanelToolsHeaders = Partial<Record<PanelToolsToolId, PanelToolsHeaderConfig>>;\n","import { parseCssTimeMs } from '../../utils/resolve-css-time-ms';\nimport {\n PANEL_TOOLS_PRIMARY_TOOL_ID,\n PANEL_TOOLS_TOOL_IDS,\n type PanelToolsItem,\n type PanelToolsRailAccessory,\n type PanelToolsRailAccessoryActionDetail,\n type PanelToolsRailPlacement,\n type PanelToolsToolId,\n} from './panel-tools-types';\n\nconst PANEL_TOOLS_REGION_ORDER: Record<PanelToolsRailPlacement, number> = {\n header: 0,\n body: 1,\n footer: 2,\n};\n\nfunction panelToolsItemOrder(item: PanelToolsItem): number {\n const canonical = PANEL_TOOLS_TOOL_IDS.findIndex(id => id === item.id);\n return item.order ?? (canonical < 0 ? Number.MAX_SAFE_INTEGER : canonical);\n}\n\nexport function orderPanelToolsItems(items: PanelToolsItem[]): PanelToolsItem[] {\n const firstById = new Map<PanelToolsToolId, PanelToolsItem>();\n for (const item of items) {\n if (item.id.trim() && !firstById.has(item.id)) firstById.set(item.id, item);\n }\n return Array.from(firstById.values()).sort((left, right) => {\n const leftRegion = panelToolsRailPlacement(left);\n const rightRegion = panelToolsRailPlacement(right);\n const regionDelta =\n PANEL_TOOLS_REGION_ORDER[leftRegion] - PANEL_TOOLS_REGION_ORDER[rightRegion];\n if (regionDelta !== 0) return regionDelta;\n\n return panelToolsItemOrder(left) - panelToolsItemOrder(right);\n });\n}\n\nexport type PanelToolsRailEntry =\n | { type: 'tool'; id: string; item: PanelToolsItem }\n | { type: 'accessory'; id: string; accessory: PanelToolsRailAccessory };\n\n/** Merge tools and governed accessories into one visual and keyboard order. */\nexport function orderPanelToolsRailEntries(\n items: PanelToolsItem[],\n accessories: PanelToolsRailAccessory[]\n): PanelToolsRailEntry[] {\n const toolEntries: PanelToolsRailEntry[] = orderPanelToolsItems(items).map(item => ({\n type: 'tool',\n id: item.id,\n item,\n }));\n const firstAccessoryById = new Map<string, PanelToolsRailAccessory>();\n for (const accessory of accessories) {\n if (accessory.id.trim() && !firstAccessoryById.has(accessory.id)) {\n firstAccessoryById.set(accessory.id, accessory);\n }\n }\n const accessoryEntries: PanelToolsRailEntry[] = Array.from(firstAccessoryById.values()).map(\n accessory => ({\n type: 'accessory',\n id: accessory.id,\n accessory,\n })\n );\n\n return [...toolEntries, ...accessoryEntries].sort((left, right) => {\n const leftPlacement =\n left.type === 'tool' ? panelToolsRailPlacement(left.item) : left.accessory.railPlacement;\n const rightPlacement =\n right.type === 'tool' ? panelToolsRailPlacement(right.item) : right.accessory.railPlacement;\n const regionDelta =\n PANEL_TOOLS_REGION_ORDER[leftPlacement] - PANEL_TOOLS_REGION_ORDER[rightPlacement];\n if (regionDelta !== 0) return regionDelta;\n\n const leftOrder = left.type === 'tool' ? panelToolsItemOrder(left.item) : left.accessory.order;\n const rightOrder =\n right.type === 'tool' ? panelToolsItemOrder(right.item) : right.accessory.order;\n return leftOrder - rightOrder;\n });\n}\n\n/** Flatten interactive entries while leaving decorative boundaries out of focus order. */\nexport function panelToolsRailFocusKeys(entries: PanelToolsRailEntry[]): string[] {\n return entries.flatMap(entry => {\n if (entry.type === 'tool') return [`tool:${entry.id}`];\n if (entry.accessory.type === 'divider') return [];\n if (entry.accessory.type === 'shortcut') {\n return entry.accessory.action.isInactive\n ? []\n : [`accessory:${entry.id}:${entry.accessory.action.id}`];\n }\n const keys = entry.accessory.primaryAction.isInactive\n ? []\n : [`accessory:${entry.id}:${entry.accessory.primaryAction.id}`];\n if (entry.accessory.secondaryAction && !entry.accessory.secondaryAction.isInactive) {\n keys.push(`accessory:${entry.id}:${entry.accessory.secondaryAction.id}`);\n }\n return keys;\n });\n}\n\n/** Preserve the current target across collection changes, or choose its nearest survivor. */\nexport function reconcilePanelToolsRovingIndex(\n previousKeys: string[],\n nextKeys: string[],\n currentIndex: number\n): number {\n if (!nextKeys.length) return 0;\n const currentKey = previousKeys[currentIndex];\n const preservedIndex = currentKey ? nextKeys.indexOf(currentKey) : -1;\n if (preservedIndex >= 0) return preservedIndex;\n for (let index = currentIndex + 1; index < previousKeys.length; index += 1) {\n const nextIndex = nextKeys.indexOf(previousKeys[index]);\n if (nextIndex >= 0) return nextIndex;\n }\n for (let index = currentIndex - 1; index >= 0; index -= 1) {\n const nextIndex = nextKeys.indexOf(previousKeys[index]);\n if (nextIndex >= 0) return nextIndex;\n }\n return Math.min(Math.max(currentIndex, 0), nextKeys.length - 1);\n}\n\nexport function panelToolsRailAccessoryActionDetail(\n accessoryId: string,\n actionId: string,\n anchor: HTMLElement\n): PanelToolsRailAccessoryActionDetail {\n return { accessoryId, actionId, anchor };\n}\n\nexport function isPanelToolsToolId(value: string | null): value is PanelToolsToolId {\n return typeof value === 'string' && value.trim().length > 0;\n}\n\nexport function panelToolsRailPlacement(item: PanelToolsItem): 'header' | 'body' | 'footer' {\n if (item.railPlacement) return item.railPlacement;\n if (item.id === PANEL_TOOLS_PRIMARY_TOOL_ID) return 'header';\n if (item.id === 'help') return 'footer';\n return 'body';\n}\n\nexport function reconcilePanelToolsAvailability(\n items: PanelToolsItem[],\n open: boolean,\n activeTool: PanelToolsToolId | ''\n): { open: boolean; activeTool: PanelToolsToolId | ''; removedTool: PanelToolsToolId | '' } {\n if (!activeTool || items.some(item => item.id === activeTool)) {\n return { open, activeTool, removedTool: '' };\n }\n return { open: false, activeTool: '', removedTool: activeTool };\n}\n\nexport function shouldResyncPanelToolsItems(\n prev: PanelToolsItem[],\n next: PanelToolsItem[]\n): boolean {\n if (prev.length !== next.length) return true;\n return next.some((item, index) => {\n const prior = prev[index];\n if (!prior) return true;\n return (\n prior.id !== item.id ||\n prior.icon !== item.icon ||\n prior.label !== item.label ||\n prior.railPlacement !== item.railPlacement ||\n prior.order !== item.order ||\n prior.shortcutKey !== item.shortcutKey ||\n prior.mobileDestination !== item.mobileDestination ||\n prior.selected !== item.selected ||\n prior.dot !== item.dot ||\n prior.isInactive !== item.isInactive ||\n prior.ariaLabel !== item.ariaLabel\n );\n });\n}\n\nexport type PanelToolsMotion = 'opening' | 'closing' | 'idle';\n\nexport interface PanelToolsTransitionStyle {\n transitionProperty: string;\n transitionDuration: string;\n transitionDelay: string;\n}\n\n/** Maximum computed time for the drawer's max-width transition, including delay. */\nexport function panelToolsDrawerTransitionMs(style: PanelToolsTransitionStyle): number {\n const properties = style.transitionProperty.split(',').map(item => item.trim());\n const durations = style.transitionDuration.split(',').map(item => parseCssTimeMs(item.trim(), 0));\n const delays = style.transitionDelay.split(',').map(item => parseCssTimeMs(item.trim(), 0));\n\n return properties.reduce((max, property, index) => {\n if (property !== 'all' && property !== 'max-width') return max;\n const duration = durations[index % durations.length] ?? 0;\n const delay = delays[index % delays.length] ?? 0;\n return Math.max(max, duration + delay, 0);\n }, 0);\n}\n\n/** True when the drawer clip is fully closed — safe to skip painting slot content. */\nexport function panelToolsDrawerResting(open: boolean, motion: PanelToolsMotion): boolean {\n return !open && motion === 'idle';\n}\n\n/** True only when the animated clip has reached the terminal width for its motion phase. */\nexport function panelToolsDrawerAtTerminal(\n width: number,\n targetWidth: number,\n motion: PanelToolsMotion\n): boolean {\n if (motion === 'closing') return width <= 0.5;\n if (motion === 'opening') return targetWidth > 0 && width >= targetWidth - 0.5;\n return true;\n}\n\n/** Toggle or switch rail tool selection — repeat activation closes the active tool. */\nexport function resolvePanelToolActivation(\n open: boolean,\n activeTool: PanelToolsToolId | '',\n id: PanelToolsToolId\n): { open: boolean; activeTool: PanelToolsToolId; selected: boolean } {\n if (open && activeTool === id) {\n return { open: false, activeTool: id, selected: false };\n }\n return { open: true, activeTool: id, selected: true };\n}\n","@import '../../utils/radius.css';\n@import '../../utils/control-density.css';\n@import '../../utils/chrome-layout.css';\n@import '../../utils/focus-ring.css';\n@import '../../utils/interaction-fill.css';\n@import '../../utils/scrollbar-hidden.css';\n\n:host {\n display: block;\n flex: 0 0 auto;\n box-sizing: border-box;\n height: 100%;\n min-height: 0;\n overflow: hidden;\n --_panel-tools-rail-width: var(--dimension-size-600);\n --_panel-tools-drawer-width: var(--ds-shell-panel-tools-width, var(--dimension-panel-width-xs));\n --_panel-tools-border: var(--dimension-stroke-width-012, 1px) solid var(--color-border-tertiary);\n /* Match panel-nav expand timing (medium-1); easing differs by direction. */\n --_panel-tools-expand-dur: var(--effect-animation-duration-medium-1, 300ms);\n}\n\n.panel-tools__layout {\n display: flex;\n flex-direction: row-reverse;\n align-items: stretch;\n height: 100%;\n min-height: 0;\n box-sizing: border-box;\n}\n\n/* Clip frame — only max-width animates (slide reveal, same as pre-rail :host). */\n.panel-tools__drawer {\n flex: 0 0 auto;\n max-width: 0;\n min-width: 0;\n height: 100%;\n min-height: 0;\n overflow: hidden;\n box-sizing: border-box;\n transition: none;\n}\n\n:host(.panel-tools--ready) .panel-tools__drawer {\n transition: max-width var(--_panel-tools-expand-dur)\n var(--effect-animation-easing-ease-in-out, ease);\n}\n\n:host(.panel-tools--ready.panel-tools--motion-opening) .panel-tools__drawer {\n transition: max-width var(--_panel-tools-expand-dur)\n var(--effect-animation-easing-ease-out, ease-out);\n}\n\n:host(.panel-tools--ready.panel-tools--motion-closing) .panel-tools__drawer {\n transition: max-width var(--_panel-tools-expand-dur)\n var(--effect-animation-easing-ease-in, ease-in);\n}\n\n:host(.panel-tools--open) .panel-tools__drawer {\n max-width: var(--_panel-tools-drawer-width);\n}\n\n.panel-tools__drawer--visible {\n border-left: var(--_panel-tools-border);\n}\n\n/* Fixed-width surface — ShellApp supplies the standard 300px tools width. */\n.panel-tools__drawer-surface {\n display: flex;\n flex-direction: column;\n width: var(--_panel-tools-drawer-width);\n height: 100%;\n min-height: 0;\n box-sizing: border-box;\n background-color: transparent;\n}\n\n.panel-tools__full-views,\n.panel-tools__full-view {\n flex: 1 1 auto;\n min-height: 0;\n overflow: hidden;\n}\n\n.panel-tools__full-view {\n height: 100%;\n}\n\n.panel-tools__full-view {\n display: none;\n}\n.panel-tools__full-view--active {\n display: block;\n}\n\n:host([presentation='fullscreen']) {\n height: 100%;\n inset: 0;\n position: fixed;\n width: 100%;\n z-index: var(--dimension-z-index-modal);\n}\n\n:host([presentation='fullscreen']) .panel-tools__rail {\n display: none;\n}\n:host([presentation='fullscreen']) .panel-tools__drawer {\n max-width: 100%;\n transition: none;\n width: 100%;\n}\n:host([presentation='fullscreen']) .panel-tools__drawer--visible {\n border-left: none;\n}\n:host([presentation='fullscreen']) .panel-tools__drawer-surface {\n background-color: transparent;\n width: 100%;\n}\n\n/*\n * A framework can update the reflected presentation attribute before Stencil\n * commits the matching render class. Conceal that single inconsistent frame so\n * slotted master/detail content never paints against the previous geometry.\n */\n:host([presentation='fullscreen']:not(.panel-tools--fullscreen)) .panel-tools__drawer-surface,\n:host(.panel-tools--fullscreen:not([presentation='fullscreen'])) .panel-tools__drawer-surface {\n visibility: hidden;\n}\n\n:host(.panel-tools--presentation-snap) .panel-tools__drawer {\n transition: none;\n}\n\n.panel-tools__body {\n flex: 1 1 auto;\n min-height: 0;\n overflow: auto;\n position: relative;\n}\n\n/* Skip paint while fully closed; cleared during open/close motion for WYSIWYG slide. */\n:host(.panel-tools--drawer-resting) .panel-tools__body {\n content-visibility: auto;\n contain-intrinsic-size: auto 200px;\n}\n\n.panel-tools__view {\n display: none;\n height: 100%;\n min-height: 0;\n box-sizing: border-box;\n padding: var(--dimension-space-200);\n color: var(--color-foreground-secondary);\n font-family: var(--typography-font-family-ui);\n font-size: var(--typography-fontsize-md);\n line-height: var(--typography-lineheight-md);\n font-weight: var(--typography-weight-regular);\n letter-spacing: var(--typography-letterspacing-negative-half);\n}\n\n.panel-tools__view ::slotted(*) {\n margin: 0;\n color: var(--color-foreground-secondary);\n font-family: var(--typography-font-family-ui);\n font-size: var(--typography-fontsize-md);\n line-height: var(--typography-lineheight-md);\n font-weight: var(--typography-weight-regular);\n letter-spacing: var(--typography-letterspacing-negative-half);\n}\n\n.panel-tools__view--active {\n display: block;\n}\n\n/* Rail — mirrors collapsed panel-nav width, padding, and item rhythm. */\n.panel-tools__rail {\n flex: 0 0 var(--_panel-tools-rail-width);\n width: var(--_panel-tools-rail-width);\n min-width: var(--_panel-tools-rail-width);\n display: flex;\n flex-direction: column;\n box-sizing: border-box;\n height: 100%;\n min-height: 0;\n border-left: var(--_panel-tools-border);\n background-color: transparent;\n}\n\n.panel-tools__rail-header {\n justify-content: center;\n height: var(--dimension-size-600);\n flex-shrink: 0;\n border-bottom: var(--_panel-tools-border);\n}\n\n.panel-tools__rail-header.panel-tools__rail-section--stacked {\n height: auto;\n min-height: var(--dimension-size-600);\n}\n\n.panel-tools__rail-body {\n flex: 1 1 auto;\n min-height: 0;\n overflow-y: auto;\n overflow-x: hidden;\n}\n\n.panel-tools__rail-actions {\n display: flex;\n flex-direction: column;\n gap: var(--dimension-space-050);\n width: 100%;\n}\n\n/* Flush to the bottom of the rail — mirrors Search header pin. */\n.panel-tools__rail-footer {\n justify-content: center;\n flex-shrink: 0;\n margin-top: auto;\n}\n\n.panel-tools__rail-section--stacked {\n align-items: stretch;\n}\n\n.panel-tools__rail-action {\n display: flex;\n align-items: center;\n justify-content: center;\n width: 100%;\n height: var(--ds-control-height);\n flex-shrink: 0;\n}\n\n.panel-tools__accessory {\n display: flex;\n flex-direction: column;\n flex: 0 0 calc(var(--dimension-size-400) * 2);\n box-sizing: border-box;\n width: 100%;\n min-height: calc(var(--dimension-size-400) * 2);\n}\n\n.panel-tools__accessory--shortcut {\n flex-basis: var(--dimension-size-400);\n min-width: var(--dimension-size-400);\n min-height: var(--dimension-size-400);\n}\n\n.panel-tools__accessory--shortcut > ds-tooltip {\n display: flex;\n flex: 1 1 auto;\n width: 100%;\n min-height: 0;\n}\n\n.panel-tools__accessory--transient {\n align-items: center;\n gap: var(--dimension-space-100);\n width: var(--dimension-size-400);\n height: calc(var(--dimension-size-400) * 2);\n min-height: calc(var(--dimension-size-400) * 2);\n padding: var(--dimension-space-050);\n border-radius: var(--dimension-radius-half);\n}\n\n.panel-tools__accessory--transient-active {\n background-color: var(--color-background-bold-brand);\n}\n\n.panel-tools__accessory--transient-positive {\n background-color: var(--color-background-bold-positive);\n}\n\n.panel-tools__accessory--transient > ds-tooltip {\n display: flex;\n flex: 0 0 var(--dimension-size-300);\n width: var(--dimension-size-300);\n height: var(--dimension-size-300);\n min-height: var(--dimension-size-300);\n}\n\n.panel-tools__shortcut {\n display: flex;\n align-items: center;\n justify-content: center;\n box-sizing: border-box;\n width: 100%;\n height: 100%;\n margin: 0;\n padding: 0;\n border: 0;\n border-radius: var(--dimension-radius-half);\n color: var(--color-foreground-secondary);\n background: transparent;\n font: inherit;\n}\n\n.panel-tools__shortcut:disabled {\n color: var(--color-foreground-disabled);\n cursor: not-allowed;\n}\n\n.panel-tools__shortcut-content {\n display: flex;\n align-items: center;\n justify-content: center;\n width: var(--dimension-size-400);\n height: var(--dimension-size-400);\n}\n\n.panel-tools__shortcut-orb {\n display: flex;\n align-items: center;\n justify-content: center;\n box-sizing: border-box;\n width: var(--dimension-size-300);\n height: var(--dimension-size-300);\n border: var(--dimension-stroke-width-012) solid var(--color-border-secondary);\n border-radius: var(--dimension-radius-half);\n background: transparent;\n}\n\n.panel-tools__shortcut-dot {\n position: absolute;\n inset-block-start: calc((var(--dimension-size-400) - var(--dimension-iconography-md)) / 2);\n inset-inline-end: calc((var(--dimension-size-400) - var(--dimension-iconography-md)) / 2);\n z-index: 2;\n pointer-events: none;\n}\n\n.panel-tools__accessory-primary {\n display: flex;\n align-items: center;\n justify-content: center;\n box-sizing: border-box;\n width: var(--dimension-size-300);\n height: var(--dimension-size-300);\n margin: 0;\n padding: 0;\n border: 0;\n border-radius: var(--dimension-radius-half);\n color: var(--color-foreground-on-bold-background-secondary);\n background: transparent;\n font: inherit;\n --ds-interaction-border-width: var(--dimension-stroke-width-012);\n --ds-interaction-border-color: var(--color-border-on-bold-background-secondary);\n}\n\n.panel-tools__accessory-primary:disabled {\n color: var(--color-foreground-on-bold-background-quaternary);\n cursor: not-allowed;\n}\n\n.panel-tools__accessory-primary-content {\n display: flex;\n align-items: center;\n justify-content: center;\n position: relative;\n width: 100%;\n height: 100%;\n}\n\n.panel-tools__accessory-image,\n.panel-tools__accessory-initial {\n display: flex;\n align-items: center;\n justify-content: center;\n box-sizing: border-box;\n width: 100%;\n height: 100%;\n border-radius: var(--dimension-radius-half);\n}\n\n.panel-tools__accessory-image {\n object-fit: cover;\n}\n\n.panel-tools__accessory-initial {\n color: inherit;\n background: transparent;\n}\n\n.panel-tools__accessory-secondary {\n display: inline-flex;\n flex: 0 0 var(--dimension-size-300);\n width: var(--dimension-size-300);\n height: var(--dimension-size-300);\n}\n\n.panel-tools__accessory-divider {\n flex: 0 0 auto;\n box-sizing: border-box;\n width: 100%;\n padding-block: var(--dimension-space-050);\n}\n\n.panel-tools__accessory-divider ds-divider {\n display: block;\n}\n\n@media (prefers-reduced-motion: reduce) {\n :host(.panel-tools--ready.panel-tools--motion-opening) .panel-tools__drawer,\n :host(.panel-tools--ready.panel-tools--motion-closing) .panel-tools__drawer {\n transition: none;\n }\n}\n","import {\n Component,\n Prop,\n Event,\n EventEmitter,\n Element,\n State,\n Watch,\n Method,\n Listen,\n h,\n Host,\n} from '@stencil/core';\nimport type { ChromeTransitionDetail } from '../../shell/chrome-transition';\nimport { ANCHORED_OVERLAY_BOUNDARY_ATTRIBUTE } from '../../utils/anchored-overlay-boundary';\nimport {\n PANEL_TOOLS_LABELS,\n PANEL_TOOLS_SHORTCUTS,\n type PanelToolsHeaderAction,\n type PanelToolsHeaderActionDetail,\n type PanelToolsHeaderConfig,\n type PanelToolsHeaders,\n type PanelToolsItem,\n type PanelToolsRailAccessory,\n type PanelToolsRailAccessoryAction,\n type PanelToolsRailAccessoryActionDetail,\n type PanelToolsRailShortcutAccessory,\n type PanelToolsRailTransientAccessory,\n type PanelToolsToolId,\n} from './panel-tools-types';\nimport {\n isPanelToolsToolId,\n orderPanelToolsRailEntries,\n orderPanelToolsItems,\n panelToolsRailAccessoryActionDetail,\n panelToolsRailFocusKeys,\n panelToolsDrawerAtTerminal,\n panelToolsDrawerResting,\n panelToolsDrawerTransitionMs,\n panelToolsRailPlacement,\n reconcilePanelToolsAvailability,\n reconcilePanelToolsRovingIndex,\n resolvePanelToolActivation,\n type PanelToolsRailEntry,\n} from './panel-tools-utils';\n\n@Component({\n tag: 'ds-panel-tools',\n styleUrl: 'PanelTools.css',\n shadow: true,\n})\nexport class PanelTools {\n @Element() el!: HTMLElement;\n\n /** When false, only the icon rail is shown. */\n @Prop({ mutable: true, reflect: true }) open: boolean = false;\n\n /** Drawer presentation or presentation covering the shell stage for the active tool. */\n @Prop({ mutable: true, reflect: true }) presentation: 'drawer' | 'fullscreen' = 'drawer';\n\n /** Let a fullscreen product supply independent master/detail headers inside its view. */\n @Prop({ attribute: 'fullscreen-header-mode', reflect: true })\n fullscreenHeaderMode: 'shared' | 'split' = 'shared';\n\n /** Active tool view — `search`, `agents`, `messages`, `stacks`, `activity`, or `help`. */\n @Prop({ mutable: true, attribute: 'active-tool', reflect: true })\n activeTool: PanelToolsToolId | '' = '';\n\n /**\n * Rail items rendered in the right column.\n * Set via JS property: `el.items = [...]`. Replace the array reference to update.\n */\n @Prop() items: PanelToolsItem[] = [];\n\n /**\n * Desktop/tablet-only application-owned rail boundaries and direct intents.\n * Set via JS property and replace the array reference to update.\n */\n @Prop() accessories: PanelToolsRailAccessory[] = [];\n\n @Prop() toolsLabel: string = 'Tools';\n @Prop() toolShortcutsLabel: string = 'Tool shortcuts';\n\n /** Active header state per tool. Replace the object when title, depth, or actions change. */\n @Prop() headers: PanelToolsHeaders = {};\n\n /**\n * Optional localStorage key for the last active tool. The drawer always starts\n * closed; only the tool identity is restored for continuity within this browser.\n */\n @Prop({ attribute: 'storage-key' }) storageKey: string = '';\n\n /** Emitted when a rail button is toggled. Detail = { id, selected }. */\n @Event({ bubbles: true, composed: true }) dsToolChange!: EventEmitter<{\n id: PanelToolsToolId;\n selected: boolean;\n }>;\n\n /** Emitted when fullscreen changes, including Escape-initiated exits. */\n @Event({ bubbles: true, composed: true }) dsPresentationChange!: EventEmitter<{\n presentation: 'drawer' | 'fullscreen';\n }>;\n\n /** Requests navigation to the active tool's parent view. */\n @Event({ bubbles: true, composed: true }) dsHeaderBack!: EventEmitter<{\n tool: PanelToolsToolId;\n }>;\n\n /** Requests one application-owned action from the active tool header. */\n @Event({ bubbles: true, composed: true })\n dsHeaderAction!: EventEmitter<PanelToolsHeaderActionDetail>;\n\n /** Direct accessory intent. Emitting this event never changes the active tool or drawer. */\n @Event({ bubbles: true, composed: true })\n dsRailAccessoryAction!: EventEmitter<PanelToolsRailAccessoryActionDetail>;\n\n /** Bubbling lifecycle — `ds-bar-nav` defers overflow checks during drawer motion. */\n @Event({ bubbles: true, composed: true })\n dsChromeTransitionStart!: EventEmitter<ChromeTransitionDetail>;\n\n @Event({ bubbles: true, composed: true })\n dsChromeTransitionEnd!: EventEmitter<ChromeTransitionDetail>;\n\n /** Arms open vs close easing for the in-flight width transition. */\n @State() private motion: 'opening' | 'closing' | 'idle' = 'idle';\n\n /** Keeps header and slotted content painted until the closing clip transition completes. */\n @State() private drawerSurfaceRetained = false;\n\n /** Suppresses width transition until the host has painted its initial open state. */\n @State() private readyForMotion = false;\n\n /** Fullscreen presentation changes snap without borrowing drawer width motion. */\n @State() private presentationMotionSuppressed = false;\n\n @State() private rovingIndex = 0;\n @State() private fullViewToolIds: PanelToolsToolId[] = [];\n @State() private railBodyScrollable = false;\n\n private motionEnableGeneration = 0;\n private presentationMotionGeneration = 0;\n private transitionGeneration = 0;\n private transitionFallbackTimer: number | null = null;\n /** Ignores the old transition's terminal event when reversing direction. */\n private ignoreReplacementTerminal = false;\n private focusBeforeFullscreen: HTMLElement | null = null;\n private fullViewObserver: MutationObserver | null = null;\n private railBodyEl?: HTMLElement;\n private railBodyObserver?: ResizeObserver;\n\n private get railItems(): PanelToolsItem[] {\n return this.items ?? [];\n }\n\n private get orderedRailItems(): PanelToolsItem[] {\n return orderPanelToolsItems(this.railItems);\n }\n\n private get railAccessories(): PanelToolsRailAccessory[] {\n return this.accessories ?? [];\n }\n\n private get orderedRailEntries(): PanelToolsRailEntry[] {\n return orderPanelToolsRailEntries(this.railItems, this.railAccessories);\n }\n\n disconnectedCallback() {\n this.el.removeEventListener('transitionend', this.handleTransitionEnd);\n this.el.removeEventListener('transitioncancel', this.handleTransitionEnd);\n this.el.removeEventListener('dsAction', this.handleComposedHeaderAction);\n this.clearTransitionCompletion();\n this.motionEnableGeneration += 1;\n this.fullViewObserver?.disconnect();\n this.fullViewObserver = null;\n this.disconnectRailBodyObserver();\n }\n\n @Watch('presentation')\n presentationChanged(next: 'drawer' | 'fullscreen', previous?: 'drawer' | 'fullscreen') {\n if (next === previous) return;\n // Framework property bindings can update slotted master/detail content in\n // the same render that requests fullscreen. Reflect the host selector\n // immediately so that content cannot paint once in the drawer geometry\n // while Stencil waits to commit its next render.\n if (this.el.getAttribute('presentation') !== next) {\n this.el.setAttribute('presentation', next);\n }\n const presentationGeneration = ++this.presentationMotionGeneration;\n this.presentationMotionSuppressed = true;\n requestAnimationFrame(() => {\n requestAnimationFrame(() => {\n if (presentationGeneration !== this.presentationMotionGeneration) return;\n this.presentationMotionSuppressed = false;\n });\n });\n if (next === 'fullscreen') {\n this.focusBeforeFullscreen =\n document.activeElement instanceof HTMLElement ? document.activeElement : null;\n this.open = true;\n } else if (previous === 'fullscreen') {\n const focusBeforeFullscreen = this.focusBeforeFullscreen;\n const fallbackActionId = this.activeHeader().actions?.[0]?.id;\n requestAnimationFrame(async () => {\n if (focusBeforeFullscreen?.isConnected) {\n focusBeforeFullscreen.focus({ preventScroll: true });\n }\n const focusRestored = focusBeforeFullscreen\n ? document.activeElement === focusBeforeFullscreen ||\n focusBeforeFullscreen.contains(document.activeElement)\n : false;\n if (!focusRestored && fallbackActionId) await this.focusHeaderAction(fallbackActionId);\n this.focusBeforeFullscreen = null;\n });\n }\n this.dsPresentationChange.emit({ presentation: next });\n }\n\n @Listen('keydown', { target: 'window', capture: true })\n handleFullscreenEscape(event: KeyboardEvent) {\n if (this.presentation !== 'fullscreen' || event.key !== 'Escape') return;\n event.preventDefault();\n event.stopPropagation();\n this.presentation = 'drawer';\n }\n\n private deferMotionEnable() {\n if (this.readyForMotion) return;\n const generation = ++this.motionEnableGeneration;\n requestAnimationFrame(() => {\n if (generation !== this.motionEnableGeneration) return;\n requestAnimationFrame(() => {\n if (generation !== this.motionEnableGeneration) return;\n this.readyForMotion = true;\n });\n });\n }\n\n connectedCallback() {\n this.el.setAttribute(ANCHORED_OVERLAY_BOUNDARY_ATTRIBUTE, '');\n this.el.addEventListener('transitionend', this.handleTransitionEnd);\n this.el.addEventListener('transitioncancel', this.handleTransitionEnd);\n this.el.addEventListener('dsAction', this.handleComposedHeaderAction);\n }\n\n private handleComposedHeaderAction = (event: Event) => {\n const detail = (event as CustomEvent<{ id?: string; anchor?: HTMLElement }>).detail;\n if (!this.activeTool || !detail?.id) return;\n event.stopPropagation();\n this.dsHeaderAction.emit({\n tool: this.activeTool,\n id: detail.id,\n anchor: detail.anchor,\n });\n };\n\n componentWillLoad() {\n this.restoreLastActiveTool();\n this.drawerSurfaceRetained = this.open;\n }\n\n @Watch('open')\n openChanged(isOpen: boolean, wasOpen?: boolean) {\n if (isOpen) this.drawerSurfaceRetained = true;\n if (this.readyForMotion && wasOpen !== undefined && wasOpen !== isOpen) {\n this.startDrawerTransition(isOpen ? 'opening' : 'closing');\n } else if (!isOpen) {\n this.drawerSurfaceRetained = false;\n }\n this.deferMotionEnable();\n }\n\n @Watch('activeTool')\n activeToolChanged() {\n this.persistLastActiveTool();\n this.deferMotionEnable();\n }\n\n @Watch('storageKey')\n storageKeyChanged() {\n this.restoreLastActiveTool();\n }\n\n componentDidLoad() {\n this.deferMotionEnable();\n this.connectRailBodyObserver();\n this.updateRailBodyScrollable();\n this.syncFullViewTools();\n this.fullViewObserver = new MutationObserver(() => this.syncFullViewTools());\n this.fullViewObserver.observe(this.el, {\n childList: true,\n attributes: true,\n attributeFilter: ['slot'],\n });\n }\n\n componentDidRender() {\n this.updateRailBodyScrollable();\n }\n\n private connectRailBodyObserver() {\n this.disconnectRailBodyObserver();\n if (!this.railBodyEl || typeof ResizeObserver === 'undefined') return;\n this.railBodyObserver = new ResizeObserver(() => this.updateRailBodyScrollable());\n this.railBodyObserver.observe(this.railBodyEl);\n }\n\n private disconnectRailBodyObserver() {\n this.railBodyObserver?.disconnect();\n this.railBodyObserver = undefined;\n }\n\n private updateRailBodyScrollable() {\n const next = Boolean(\n this.railBodyEl && this.railBodyEl.scrollHeight > this.railBodyEl.clientHeight + 1\n );\n if (next !== this.railBodyScrollable) this.railBodyScrollable = next;\n }\n\n @Watch('items')\n itemsChanged() {\n this.rovingIndex = 0;\n this.reconcileActiveTool();\n this.deferMotionEnable();\n }\n\n @Watch('accessories')\n accessoriesChanged(\n next: PanelToolsRailAccessory[] = [],\n previous: PanelToolsRailAccessory[] = []\n ) {\n const previousKeys = panelToolsRailFocusKeys(\n orderPanelToolsRailEntries(this.railItems, previous)\n );\n const nextKeys = panelToolsRailFocusKeys(orderPanelToolsRailEntries(this.railItems, next));\n const activeElement = (this.renderRoot as ShadowRoot).activeElement as HTMLElement | null;\n const focusedKey =\n activeElement?.closest<HTMLElement>('[data-rail-focus-key]')?.dataset.railFocusKey;\n const focusedIndex = focusedKey ? previousKeys.indexOf(focusedKey) : -1;\n const currentIndex = focusedIndex >= 0 ? focusedIndex : this.rovingIndex;\n const nextIndex = reconcilePanelToolsRovingIndex(previousKeys, nextKeys, currentIndex);\n const restoreFocus = focusedIndex >= 0 && !nextKeys.includes(focusedKey ?? '');\n this.rovingIndex = nextIndex;\n if (restoreFocus && nextKeys.length) {\n requestAnimationFrame(() => this.focusRailAt(nextIndex));\n }\n }\n\n private restoreLastActiveTool() {\n if (!this.storageKey || this.activeTool) return;\n try {\n const stored = localStorage.getItem(this.storageKey);\n if (isPanelToolsToolId(stored)) this.activeTool = stored;\n } catch {\n /* localStorage unavailable */\n }\n }\n\n private persistLastActiveTool() {\n if (!this.storageKey || !this.activeTool) return;\n try {\n localStorage.setItem(this.storageKey, this.activeTool);\n } catch {\n /* unavailable */\n }\n }\n\n private clearPersistedTool() {\n if (!this.storageKey) return;\n try {\n localStorage.removeItem(this.storageKey);\n } catch {\n /* unavailable */\n }\n }\n\n private reconcileActiveTool() {\n const next = reconcilePanelToolsAvailability(this.railItems, this.open, this.activeTool);\n if (!next.removedTool) return;\n this.clearPersistedTool();\n this.open = next.open;\n this.activeTool = next.activeTool;\n this.dsToolChange.emit({ id: next.removedTool, selected: false });\n }\n\n private startDrawerTransition(phase: 'opening' | 'closing') {\n const drawer = this.renderRoot.querySelector('.panel-tools__drawer') as HTMLElement | null;\n if (this.motion !== 'idle') {\n this.finishDrawerTransition();\n this.ignoreReplacementTerminal = true;\n }\n this.motion = phase;\n this.dsChromeTransitionStart.emit({ source: 'panel-tools', phase });\n const generation = ++this.transitionGeneration;\n\n requestAnimationFrame(() => {\n requestAnimationFrame(() => {\n if (generation !== this.transitionGeneration || this.motion !== phase) return;\n if (!drawer) {\n this.finishDrawerTransition();\n return;\n }\n\n if (this.drawerTransitionAtTerminal(drawer, phase)) {\n this.finishDrawerTransition();\n return;\n }\n\n const fallbackMs = panelToolsDrawerTransitionMs(getComputedStyle(drawer));\n if (fallbackMs <= 0) {\n this.finishDrawerTransition();\n return;\n }\n this.transitionFallbackTimer = window.setTimeout(() => {\n this.finishDrawerTransition();\n }, fallbackMs);\n });\n });\n }\n\n private handleTransitionEnd = (event: TransitionEvent) => {\n const drawer = this.renderRoot.querySelector('.panel-tools__drawer') as HTMLElement | null;\n if (event.target !== drawer) return;\n if (event.propertyName !== 'max-width') return;\n if (this.ignoreReplacementTerminal) {\n this.ignoreReplacementTerminal = false;\n return;\n }\n // Changing from the neutral transition recipe to the direction-specific\n // easing can cancel the transition that the reflected `open` class began.\n // The replacement transition and its watchdog still own completion; ending\n // motion here would hide the fixed-width tool surface while it is visible.\n if (event.type === 'transitioncancel') return;\n if (drawer && !this.drawerTransitionAtTerminal(drawer, this.motion)) return;\n this.finishDrawerTransition();\n };\n\n private drawerTransitionAtTerminal(\n drawer: HTMLElement,\n phase: 'opening' | 'closing' | 'idle'\n ): boolean {\n const width = drawer.getBoundingClientRect().width;\n const surface = drawer.querySelector('.panel-tools__drawer-surface') as HTMLElement | null;\n const targetWidth = surface?.getBoundingClientRect().width ?? 0;\n return panelToolsDrawerAtTerminal(width, targetWidth, phase);\n }\n\n private finishDrawerTransition() {\n const completedPhase = this.motion;\n const wasTransitioning = completedPhase !== 'idle';\n this.clearTransitionCompletion();\n if (!wasTransitioning) return;\n this.ignoreReplacementTerminal = false;\n this.motion = 'idle';\n if (completedPhase === 'closing' && !this.open) {\n this.drawerSurfaceRetained = false;\n }\n this.dsChromeTransitionEnd.emit({ source: 'panel-tools' });\n }\n\n private clearTransitionCompletion() {\n this.transitionGeneration += 1;\n if (this.transitionFallbackTimer !== null) {\n window.clearTimeout(this.transitionFallbackTimer);\n this.transitionFallbackTimer = null;\n }\n }\n\n /** Rail selection follows `open` immediately — independent of the slide animation. */\n private isRailSelected(id: PanelToolsToolId): boolean {\n return this.open && this.activeTool === id;\n }\n\n /** Drawer body stays mounted while the clip frame animates closed. */\n private isDrawerPresent(): boolean {\n return this.open || this.drawerSurfaceRetained;\n }\n\n private isViewActive(id: PanelToolsToolId): boolean {\n return this.isDrawerPresent() && this.activeTool === id;\n }\n\n private hasFullView(id: PanelToolsToolId): boolean {\n return this.fullViewToolIds.includes(id);\n }\n\n private syncFullViewTools() {\n const ids = this.orderedRailItems.map(item => item.id);\n const next = ids.filter(id => Boolean(this.el.querySelector(`[slot=\"${id}-view\"]`)));\n if (next.join('|') !== this.fullViewToolIds.join('|')) this.fullViewToolIds = next;\n }\n\n private get renderRoot(): ParentNode {\n return this.el.shadowRoot ?? this.el;\n }\n\n private headerLabel(): string {\n if (!this.isDrawerPresent() || !this.activeTool) return '';\n const item = this.railItems.find(candidate => candidate.id === this.activeTool);\n return (\n item?.label ??\n PANEL_TOOLS_LABELS[this.activeTool as keyof typeof PANEL_TOOLS_LABELS] ??\n this.activeTool\n );\n }\n\n private resolvedHeaders(): PanelToolsHeaders {\n return this.headers ?? {};\n }\n\n private activeHeader(): PanelToolsHeaderConfig {\n if (!this.activeTool) return {};\n return this.resolvedHeaders()[this.activeTool] ?? {};\n }\n\n private handleToolChange = (id: PanelToolsToolId) => {\n const next = resolvePanelToolActivation(this.open, this.activeTool, id);\n this.open = next.open;\n this.activeTool = next.activeTool;\n this.dsToolChange.emit({ id, selected: next.selected });\n };\n\n /** Toggle any rail tool open/closed — shell shortcuts K/A/S/M/N call this. */\n @Method()\n async activateTool(id: PanelToolsToolId) {\n const item = this.railItems.find(entry => entry.id === id);\n if (!item || item.isInactive) return;\n this.handleToolChange(id);\n }\n\n /** Close the tools drawer when open — used by shell keyboard shortcuts. */\n @Method()\n async closeDrawer() {\n if (!this.open) return;\n const id = this.activeTool;\n this.open = false;\n if (id) {\n this.dsToolChange.emit({ id, selected: false });\n }\n }\n\n /** Focus an active tool-header action by its application-owned id. */\n @Method()\n async focusHeaderAction(id: string) {\n const action = this.renderRoot.querySelector(`[data-header-action-id=\"${CSS.escape(id)}\"]`) as\n | (HTMLElement & { setFocus?: () => Promise<void> })\n | null;\n await action?.setFocus?.();\n }\n\n private focusRailAt(index: number) {\n const keys = panelToolsRailFocusKeys(this.orderedRailEntries);\n if (!keys.length) return;\n const bounded = Math.max(0, Math.min(index, keys.length - 1));\n this.rovingIndex = bounded;\n const action = this.renderRoot.querySelector(\n `[data-rail-focus-key=\"${CSS.escape(keys[bounded])}\"]`\n ) as (HTMLElement & { setFocus?: () => Promise<void> }) | null;\n if (action?.setFocus) {\n void action.setFocus();\n } else {\n action?.focus({ preventScroll: true });\n }\n }\n\n private handleRailKeyDown = (e: KeyboardEvent, index: number, activate?: () => void) => {\n const keys = panelToolsRailFocusKeys(this.orderedRailEntries);\n if (!keys.length) return;\n\n if ((e.key === 'Enter' || e.key === ' ') && activate) {\n e.preventDefault();\n activate();\n return;\n }\n\n if (e.key === 'ArrowDown') {\n if (index >= keys.length - 1) return;\n e.preventDefault();\n this.focusRailAt(index + 1);\n return;\n }\n\n if (e.key === 'ArrowUp') {\n if (index <= 0) return;\n e.preventDefault();\n this.focusRailAt(index - 1);\n }\n };\n\n private renderRailAction(item: PanelToolsItem, index: number) {\n const focusKey = `tool:${item.id}`;\n const label =\n item.ariaLabel ??\n item.label ??\n PANEL_TOOLS_LABELS[item.id as keyof typeof PANEL_TOOLS_LABELS] ??\n item.id;\n return (\n <ds-tooltip\n key={item.id}\n label={label}\n shortcutKey={\n item.shortcutKey ?? PANEL_TOOLS_SHORTCUTS[item.id as keyof typeof PANEL_TOOLS_SHORTCUTS]\n }\n side=\"left\"\n size=\"sm\"\n boundary=\"viewport\"\n >\n <ds-button-unfilled\n variant=\"icon\"\n class=\"panel-tools__rail-action\"\n icon={item.icon}\n isActive={this.isRailSelected(item.id)}\n activeFill={false}\n hasBorder={false}\n pressScale={false}\n dot={item.dot ?? false}\n isInactive={item.isInactive}\n focusTabIndex={index === this.rovingIndex ? 0 : -1}\n data-rail-focus-key={focusKey}\n aria-label={label}\n pressed={this.isRailSelected(item.id)}\n onFocusin={() => {\n this.rovingIndex = index;\n }}\n onKeyDown={(e: KeyboardEvent) =>\n this.handleRailKeyDown(e, index, () => this.handleToolChange(item.id))\n }\n onDsClick={() => this.handleToolChange(item.id)}\n />\n </ds-tooltip>\n );\n }\n\n private accessoryPrimaryLabel(accessory: PanelToolsRailTransientAccessory): string {\n const actionLabel = accessory.primaryAction.ariaLabel?.trim() || accessory.ariaLabel;\n const status = accessory.statusText.trim();\n return status ? `${actionLabel}. ${status}` : actionLabel;\n }\n\n private emitAccessoryAction(\n accessoryId: string,\n action: PanelToolsRailAccessoryAction,\n anchor: HTMLElement\n ) {\n if (action.isInactive) return;\n this.dsRailAccessoryAction.emit(\n panelToolsRailAccessoryActionDetail(accessoryId, action.id, anchor)\n );\n }\n\n private renderAccessoryVisual(accessory: PanelToolsRailTransientAccessory) {\n if (accessory.visual.type === 'image') {\n return (\n <img\n class=\"panel-tools__accessory-image\"\n src={accessory.visual.src}\n alt=\"\"\n aria-hidden=\"true\"\n />\n );\n }\n if (accessory.visual.type === 'initial') {\n const initial = [...accessory.visual.initial.trim()].slice(0, 2).join('');\n return (\n <ds-text\n class=\"panel-tools__accessory-initial\"\n as=\"span\"\n variant=\"text-caption\"\n emphasis\n color=\"inherit\"\n aria-hidden=\"true\"\n >\n {initial}\n </ds-text>\n );\n }\n return <ds-icon name={accessory.visual.icon} size=\"sm\" aria-hidden=\"true\" />;\n }\n\n private renderRailShortcut(\n accessory: PanelToolsRailShortcutAccessory,\n focusIndexes: Map<string, number>\n ) {\n const focusKey = `accessory:${accessory.id}:${accessory.action.id}`;\n const focusIndex = focusIndexes.get(focusKey);\n const label = accessory.action.ariaLabel?.trim() || accessory.ariaLabel;\n const initials = [...accessory.initials.trim()].slice(0, 2).join('');\n\n return (\n <div\n key={`accessory:${accessory.id}`}\n class=\"panel-tools__accessory panel-tools__accessory--shortcut\"\n >\n <ds-tooltip label={label} side=\"left\" size=\"sm\" boundary=\"viewport\">\n <button\n type=\"button\"\n class=\"panel-tools__shortcut ds-focus-ring-inset ds-interaction-fill\"\n disabled={accessory.action.isInactive}\n tabIndex={focusIndex === this.rovingIndex ? 0 : -1}\n data-rail-focus-key={focusKey}\n aria-label={label}\n onFocus={() => {\n if (focusIndex !== undefined) this.rovingIndex = focusIndex;\n }}\n onKeyDown={(event: KeyboardEvent) =>\n focusIndex === undefined ? undefined : this.handleRailKeyDown(event, focusIndex)\n }\n onClick={(event: MouseEvent) =>\n this.emitAccessoryAction(\n accessory.id,\n accessory.action,\n event.currentTarget as HTMLElement\n )\n }\n >\n <span class=\"panel-tools__shortcut-content ds-interaction-fill__content\">\n <ds-text\n class=\"panel-tools__shortcut-orb\"\n as=\"span\"\n variant=\"text-caption\"\n emphasis\n color=\"inherit\"\n >\n {initials}\n </ds-text>\n {accessory.dot ? (\n <ds-badge\n class=\"panel-tools__shortcut-dot\"\n variant=\"dot\"\n background=\"var(--color-background-secondary)\"\n aria-hidden=\"true\"\n />\n ) : null}\n </span>\n </button>\n </ds-tooltip>\n </div>\n );\n }\n\n private renderRailAccessory(\n accessory: PanelToolsRailAccessory,\n focusIndexes: Map<string, number>\n ) {\n if (accessory.type === 'divider') {\n return (\n <div\n key={`accessory:${accessory.id}`}\n class=\"panel-tools__accessory-divider\"\n aria-hidden=\"true\"\n >\n <ds-divider />\n </div>\n );\n }\n\n if (accessory.type === 'shortcut') {\n return this.renderRailShortcut(accessory, focusIndexes);\n }\n\n const primaryKey = `accessory:${accessory.id}:${accessory.primaryAction.id}`;\n const primaryIndex = focusIndexes.get(primaryKey);\n const primaryLabel = this.accessoryPrimaryLabel(accessory);\n const secondary = accessory.secondaryAction;\n const secondaryKey = secondary ? `accessory:${accessory.id}:${secondary.id}` : '';\n const secondaryIndex = secondary ? focusIndexes.get(secondaryKey) : undefined;\n\n return (\n <div\n key={`accessory:${accessory.id}`}\n class={{\n 'panel-tools__accessory': true,\n 'panel-tools__accessory--transient': true,\n 'panel-tools__accessory--transient-active': accessory.statusTone === 'active',\n 'panel-tools__accessory--transient-positive': accessory.statusTone === 'positive',\n }}\n >\n <ds-tooltip label={primaryLabel} side=\"left\" size=\"sm\" boundary=\"viewport\">\n <button\n type=\"button\"\n class=\"panel-tools__accessory-primary ds-focus-ring-inset ds-interaction-fill ds-interaction-fill--on-bold\"\n disabled={accessory.primaryAction.isInactive}\n tabIndex={primaryIndex === this.rovingIndex ? 0 : -1}\n data-rail-focus-key={primaryKey}\n aria-label={primaryLabel}\n onFocus={() => {\n if (primaryIndex !== undefined) this.rovingIndex = primaryIndex;\n }}\n onKeyDown={(event: KeyboardEvent) =>\n primaryIndex === undefined ? undefined : this.handleRailKeyDown(event, primaryIndex)\n }\n onClick={(event: MouseEvent) =>\n this.emitAccessoryAction(\n accessory.id,\n accessory.primaryAction,\n event.currentTarget as HTMLElement\n )\n }\n >\n <span class=\"panel-tools__accessory-primary-content ds-interaction-fill__content\">\n {this.renderAccessoryVisual(accessory)}\n </span>\n </button>\n </ds-tooltip>\n {secondary ? (\n <ds-tooltip label={secondary.ariaLabel} side=\"left\" size=\"sm\" boundary=\"viewport\">\n <ds-button-unfilled\n class=\"panel-tools__accessory-secondary\"\n variant=\"icon\"\n size=\"sm\"\n rounded\n background=\"bold\"\n hasBorder={false}\n icon={secondary.icon}\n isInactive={secondary.isInactive}\n focusTabIndex={secondaryIndex === this.rovingIndex ? 0 : -1}\n data-rail-focus-key={secondaryKey}\n aria-label={secondary.ariaLabel}\n onFocusin={() => {\n if (secondaryIndex !== undefined) this.rovingIndex = secondaryIndex;\n }}\n onKeyDown={(event: KeyboardEvent) =>\n secondaryIndex === undefined\n ? undefined\n : this.handleRailKeyDown(event, secondaryIndex)\n }\n onDsClick={(event: CustomEvent<MouseEvent>) =>\n this.emitAccessoryAction(\n accessory.id,\n secondary,\n event.currentTarget as HTMLElement\n )\n }\n />\n </ds-tooltip>\n ) : null}\n </div>\n );\n }\n\n private renderRailEntry(entry: PanelToolsRailEntry, focusIndexes: Map<string, number>) {\n if (entry.type === 'tool') {\n return this.renderRailAction(entry.item, focusIndexes.get(`tool:${entry.id}`) ?? 0);\n }\n return this.renderRailAccessory(entry.accessory, focusIndexes);\n }\n\n render() {\n const headerLabel = this.headerLabel();\n const header = this.activeHeader();\n const headerTitle = header.title?.trim() || headerLabel;\n const headerActions = header.actions ?? [];\n const orderedRailItems = this.orderedRailItems;\n const orderedRailEntries = this.orderedRailEntries;\n const entryPlacement = (entry: PanelToolsRailEntry) =>\n entry.type === 'tool' ? panelToolsRailPlacement(entry.item) : entry.accessory.railPlacement;\n const headerEntries = orderedRailEntries.filter(entry => entryPlacement(entry) === 'header');\n const bodyEntries = orderedRailEntries.filter(entry => entryPlacement(entry) === 'body');\n const footerEntries = orderedRailEntries.filter(entry => entryPlacement(entry) === 'footer');\n const focusIndexes = new Map(\n panelToolsRailFocusKeys(orderedRailEntries).map((key, index) => [key, index])\n );\n const showDrawerChrome = this.isDrawerPresent();\n const drawerResting = panelToolsDrawerResting(this.open, this.motion);\n const activeFullView = Boolean(\n showDrawerChrome && this.activeTool && this.hasFullView(this.activeTool)\n );\n const toolIds = orderedRailItems.map(item => item.id);\n\n return (\n <Host\n class={{\n 'panel-tools': true,\n 'panel-tools--open': this.open,\n 'panel-tools--ready': this.readyForMotion,\n 'panel-tools--motion-opening': this.motion === 'opening',\n 'panel-tools--motion-closing': this.motion === 'closing',\n 'panel-tools--drawer-resting': drawerResting,\n 'panel-tools--fullscreen': this.presentation === 'fullscreen',\n 'panel-tools--presentation-snap': this.presentationMotionSuppressed,\n }}\n data-ds-overlay-boundary\n role={this.presentation === 'fullscreen' ? 'dialog' : 'complementary'}\n aria-modal={this.presentation === 'fullscreen' ? 'true' : undefined}\n aria-label={this.toolsLabel}\n >\n <div class=\"panel-tools__layout\">\n <nav class=\"panel-tools__rail\" aria-label={this.toolShortcutsLabel}>\n {headerEntries.length ? (\n <div\n class={{\n 'panel-tools__rail-header': true,\n 'panel-tools__rail-section--stacked': headerEntries.length > 1,\n 'ds-chrome-row': headerEntries.length === 1,\n 'ds-chrome-column': headerEntries.length > 1,\n 'ds-chrome-space--md': true,\n }}\n >\n {headerEntries.map(entry => this.renderRailEntry(entry, focusIndexes))}\n </div>\n ) : null}\n <div\n class={{\n 'panel-tools__rail-body': true,\n 'ds-chrome-column': true,\n 'ds-chrome-space--md': true,\n 'ds-scrollbar-hidden': true,\n 'ds-focus-ring': this.railBodyScrollable,\n }}\n ref={element => {\n const next = (element as HTMLElement) ?? undefined;\n if (next === this.railBodyEl) return;\n this.railBodyEl = next;\n this.connectRailBodyObserver();\n }}\n role={this.railBodyScrollable ? 'region' : undefined}\n aria-label={this.railBodyScrollable ? this.toolShortcutsLabel : undefined}\n tabIndex={this.railBodyScrollable ? 0 : undefined}\n >\n <div class=\"panel-tools__rail-actions\">\n {bodyEntries.map(entry => this.renderRailEntry(entry, focusIndexes))}\n </div>\n </div>\n {footerEntries.length ? (\n <div\n class={{\n 'panel-tools__rail-footer': true,\n 'panel-tools__rail-section--stacked': footerEntries.length > 1,\n 'ds-chrome-row': footerEntries.length === 1,\n 'ds-chrome-column': footerEntries.length > 1,\n 'ds-chrome-space--md': true,\n }}\n >\n {footerEntries.map(entry => this.renderRailEntry(entry, focusIndexes))}\n </div>\n ) : null}\n </nav>\n\n <div\n class={{\n 'panel-tools__drawer': true,\n 'panel-tools__drawer--visible': showDrawerChrome,\n }}\n aria-hidden={showDrawerChrome ? null : 'true'}\n inert={showDrawerChrome ? undefined : true}\n >\n <div class=\"panel-tools__drawer-surface\">\n {this.presentation !== 'fullscreen' || this.fullscreenHeaderMode === 'shared' ? (\n <ds-panel-tool-header\n class=\"panel-tools__header\"\n heading={headerTitle}\n showBack={header.showBack ?? false}\n backIcon={header.backIcon || 'ChevronLeft'}\n backAriaLabel={header.backAriaLabel || 'Back'}\n showMenu={false}\n ref={element => {\n const toolHeader = element as\n | (HTMLDsPanelToolHeaderElement & {\n actions: PanelToolsHeaderAction[];\n })\n | undefined;\n if (toolHeader) toolHeader.actions = headerActions;\n }}\n onDsBack={() => {\n if (this.activeTool) this.dsHeaderBack.emit({ tool: this.activeTool });\n }}\n />\n ) : null}\n <div class=\"panel-tools__body\" hidden={activeFullView}>\n {toolIds.map(id => {\n const active = this.isViewActive(id);\n return (\n <div\n class={{\n 'panel-tools__view': true,\n 'panel-tools__view--active': active,\n }}\n hidden={!active}\n >\n <slot name={id} />\n </div>\n );\n })}\n </div>\n <div class=\"panel-tools__full-views\" hidden={!activeFullView}>\n {toolIds.map(id => (\n <div\n class={{\n 'panel-tools__full-view': true,\n 'panel-tools__full-view--active':\n this.isViewActive(id) && this.hasFullView(id),\n }}\n hidden={!(this.isViewActive(id) && this.hasFullView(id))}\n >\n <slot name={`${id}-view`} />\n </div>\n ))}\n </div>\n </div>\n </div>\n </div>\n </Host>\n );\n }\n}\n"],"mappings":"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","ignoreList":[]}
|
|
@@ -1,2 +0,0 @@
|
|
|
1
|
-
import{p as e,H as o,h as s,a as t,t as a}from"./index.js";import{C as i}from"./p-BnhGV__o.js";import{d}from"./p-DtLQIMsa.js";import{d as n}from"./p-xHGqrz_p.js";import{d as c}from"./p-Cea7rROU.js";import{d as r}from"./p-0XTyQNRG.js";import{d as l}from"./p-CLGtPE0K.js";import{d as b}from"./p-BINSI_KF.js";const f=()=>`.sc-ds-code-block-h{display:block;width:100%;min-width:0;box-sizing:border-box;-webkit-user-select:none;user-select:none}.code-block.sc-ds-code-block{width:100%;min-width:0;margin:0;overflow:hidden;border-radius:var(--dimension-radius-050);background:var(--color-background-strong-neutral);color:var(--color-foreground-faint-neutral);box-sizing:border-box}.code-block__header.sc-ds-code-block{display:flex;align-items:center;justify-content:space-between;gap:var(--dimension-space-100);min-height:var(--dimension-size-400);padding:var(--dimension-space-050) var(--dimension-space-100);background:var(--color-background-strong-neutral);box-sizing:border-box}pre.sc-ds-code-block{margin:0;padding:var(--dimension-space-150);overflow:auto;font-family:var( --typography-font-family-code, 'Fira Code', ui-monospace, 'SFMono-Regular', 'Cascadia Code', 'Roboto Mono', Menlo, Monaco, Consolas, 'Liberation Mono', monospace );font-size:var(--typography-fontsize-sm);font-variant-ligatures:var(--ds-code-font-variant-ligatures, normal);font-weight:var(--typography-weight-regular);line-height:var(--typography-lineheight-sm);letter-spacing:var(--typography-letterspacing-none);tab-size:2;-webkit-user-select:text;user-select:text}code.sc-ds-code-block{font:inherit;white-space:pre}`;const p=e(class e extends o{constructor(e){super();if(e!==false){this.__registerHost()}this.code="";this.language="";this.filename="";this.copied=false;this.copyFeedback=new i((e=>{this.copied=e}));this.copy=async()=>{await this.copyFeedback.copy(this.code)}}connectedCallback(){this.copyFeedback.connect()}handleCodeChange(){this.copyFeedback.reset()}disconnectedCallback(){this.copyFeedback.disconnect()}render(){const e=this.filename||this.language||"Code";return s(t,{key:"0839f257631eb37be76a13f42d33374e64a1fe83"},s("figure",{key:"240ee71427b7920a38b3882132cb53c24e46b54d",class:"code-block"},s("figcaption",{key:"573b8805f2f56927d98a2252bbad1e697ceafae9",class:"code-block__header"},s("ds-text",{key:"d4301b332932d4b18463f4648e5ef878794a864d",as:"span",variant:"text-caption",emphasis:true,color:"on-strong"},e),s("ds-tooltip",{key:"1cdf9eeb00d4c007ac74852efa04d8d0b6db9b68",label:this.copied?"Copied":"Copy code",side:"bottom",size:"sm"},s("ds-button-unfilled",{key:"710c0eb5e7bde6545543fe86897f5688920306f4",variant:"icon",icon:this.copied?"Check":"Copy",size:"xs","aria-label":this.copied?"Copied":"Copy code",hasBorder:false,onDsClick:this.copy}))),s("pre",{key:"4cf4bc76e555dc796155626d4a411a96cf4cf563"},s("code",{key:"c001862400e82c23ba5d45046f246dfe085c5e52"},this.code))))}static get watchers(){return{code:[{handleCodeChange:0}]}}static get style(){return f()}},[2,"ds-code-block",{code:[1],language:[1],filename:[1],copied:[32]},undefined,{code:[{handleCodeChange:0}]}]);function m(){if(typeof customElements==="undefined"){return}const e=["ds-code-block","ds-badge","ds-button-unfilled","ds-icon","ds-loader","ds-text","ds-tooltip"];e.forEach((e=>{switch(e){case"ds-code-block":if(!customElements.get(a(e))){customElements.define(a(e),p)}break;case"ds-badge":if(!customElements.get(a(e))){d()}break;case"ds-button-unfilled":if(!customElements.get(a(e))){n()}break;case"ds-icon":if(!customElements.get(a(e))){c()}break;case"ds-loader":if(!customElements.get(a(e))){r()}break;case"ds-text":if(!customElements.get(a(e))){l()}break;case"ds-tooltip":if(!customElements.get(a(e))){b()}break}}))}m();export{p as C,m as d};
|
|
2
|
-
//# sourceMappingURL=p-CwqFJMvP.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"names":["barTitleCss","nextBarTitleId","BarTitle","__stencil_proxyCustomElement","HTMLElement","constructor","registerHost","this","description","showBack","backAriaLabel","backLabel","breadcrumbs","breadcrumbAriaLabel","sections","value","sectionsAriaLabel","primaryAction","actions","actionsAriaLabel","variant","placement","showDivider","sectionMenuOpen","openActionMenuId","surfaceActionMenuId","sectionSurfaceOpen","sectionMenuInitialFocusVisible","actionMenuInitialFocusVisible","instanceId","sectionMenuTriggerId","sectionMenuId","actionMenuTriggerId","actionMenuId","sectionTriggerEl","actionTriggerEl","actionTriggerEls","Map","toggleSectionMenu","event","detail","closeSectionMenu","handleSectionSelect","id","String","selected","selectableSections","find","section","isInactive","dsSectionChange","emit","requestAnimationFrame","focus","toggleActionMenu","finishActionMenuClose","domId","barTitleActionMenuDomId","resolvedActionItems","target","closeActionMenu","handleActionSelect","action","findBarTitleAction","isLoading","menuId","dsAction","restoreBarTitleActionFocus","overflowTrigger","actionTriggers","handleBreadcrumbSelect","length","dsBack","originalEvent","forwarded","dsBreadcrumbSelect","defaultPrevented","preventDefault","componentWillLoad","el","closest","setAttribute","reportActionIdIssues","handleSectionsChange","hasSectionSelector","handleActionsChange","availableActionMenuIds","has","issue","barTitleActionIdIssues","console","warn","compact","effectiveVariant","dividerVisible","showCompactDivider","expandedBreadcrumbItems","label","ariaLabel","primaryCollapsed","actionItems","undefined","collapse","selectableBarTitleSections","effectiveValue","effectiveBarTitleSectionValue","selectedSectionLabel","selectedBarTitleSectionLabel","sectionTriggerAriaLabel","barTitleSectionTriggerAriaLabel","sectionMenuSections","barTitleSectionMenuSections","resolveBarTitleActionItems","visibleActions","visibleBarTitleActions","actionMenuSections","overflowBarTitleActionSections","showActionMenuTrigger","availableBarTitleActionMenuIds","chromeActionOptions","classPrefix","showOverflowTrigger","setOverflowTriggerEl","emitAction","renderSectionSelector","h","class","renderBarTitleSectionTrigger","triggerId","open","surfaceOpen","selectedLabel","setTriggerEl","onToggle","renderActions","renderBarTitleActions","renderActionMenus","renderBarTitleActionMenus","renderBreadcrumb","items","onDsSelect","renderBack","renderBarTitleBack","onBack","render","Host","key","emphasis","color","as","lineTruncation","heading","wrap","anchorId","menuLabel","initialFocusVisible","onDsClose","onDsAfterClose","renderBarTitleOverflowMenu"],"sources":["src/wc/components/BarTitle/BarTitle.css?tag=ds-bar-title&encapsulation=scoped","src/wc/components/BarTitle/BarTitle.tsx"],"sourcesContent":["@import '../../utils/radius.css';\n@import '../../utils/control-density.css';\n@import '../../utils/chrome-header.css';\n@import '../../utils/focus-ring.css';\n@import '../../utils/interaction-fill.css';\n\n:host {\n display: block;\n min-width: 0;\n box-sizing: border-box;\n background: var(--_shell-page-header-background, var(--color-background-primary));\n}\n\n:host([placement='shell-bar']) {\n --_shell-page-header-background: var(--color-background-secondary);\n}\n\n:host-context(ds-shell-app:not([gradient-preset='none']))[placement='shell-bar'],\n:host-context(ds-shell-app:not([gradient-preset='none']))[placement='shell-bar'] .bar-title,\n:host-context(ds-shell-app.shell-app--paper-texture)[placement='shell-bar'],\n:host-context(ds-shell-app.shell-app--paper-texture)[placement='shell-bar'] .bar-title {\n background: transparent;\n}\n\n:host([data-shell-page-syncing]) {\n visibility: hidden;\n}\n\n.bar-title {\n position: relative;\n min-width: 0;\n box-sizing: border-box;\n background: var(--_shell-page-header-background, var(--color-background-primary));\n}\n\n.bar-title::after {\n content: '';\n position: absolute;\n inset: auto var(--ds-bar-title-divider-inset, var(--dimension-space-400)) 0;\n height: var(--dimension-stroke-width-012);\n background: var(--color-border-tertiary);\n pointer-events: none;\n}\n\n.bar-title--divider-hidden::after {\n display: none;\n}\n\n.bar-title__inner {\n position: relative;\n display: flex;\n flex-direction: column;\n align-items: stretch;\n gap: var(--dimension-space-100);\n padding: var(--dimension-space-400);\n box-sizing: border-box;\n}\n\n.bar-title__row {\n display: flex;\n align-items: flex-start;\n justify-content: space-between;\n gap: var(--dimension-space-100);\n min-height: var(--dimension-size-400);\n min-width: 0;\n}\n\n:host(.bar-title-host--expanded) .bar-title__row {\n gap: var(--dimension-space-400);\n}\n\n.bar-title__leading {\n display: flex;\n flex: 1 1 auto;\n flex-direction: column;\n gap: var(--dimension-space-100);\n min-width: 0;\n}\n\n.bar-title__title-row {\n display: flex;\n align-items: center;\n gap: var(--dimension-space-100);\n min-width: 0;\n min-height: var(--dimension-size-400);\n}\n\n.bar-title__identity {\n display: flex;\n flex: 0 1 auto;\n align-items: center;\n gap: var(--dimension-space-050);\n min-width: 0;\n}\n\n.bar-title__back,\n.bar-title__section-chevron {\n flex: 0 0 auto;\n}\n\n.bar-title__breadcrumb {\n display: block;\n width: 100%;\n min-width: 0;\n}\n\n.bar-title__heading {\n display: block;\n width: auto;\n min-width: 0;\n user-select: none;\n}\n\n.bar-title__divider {\n width: var(--dimension-stroke-width-012);\n height: var(--dimension-size-250);\n margin-inline-start: var(--dimension-space-100);\n flex: 0 0 var(--dimension-stroke-width-012);\n background: var(--color-border-tertiary);\n}\n\n.bar-title__section-selector {\n display: flex;\n flex: 0 1 auto;\n min-width: 0;\n max-width: var(--dimension-panel-width-sm);\n}\n\n.bar-title__section-trigger {\n --ds-control-radius: var(--dimension-radius-half);\n\n display: inline-flex;\n align-items: center;\n justify-content: center;\n gap: var(--ds-control-gap);\n height: var(--ds-control-height);\n min-width: 0;\n max-width: 100%;\n padding-inline: var(--ds-control-padding-inline);\n border: none;\n border-radius: var(--ds-control-radius);\n box-sizing: border-box;\n background: transparent;\n color: var(--color-foreground-secondary);\n cursor: default;\n font-family: inherit;\n user-select: none;\n}\n\n.bar-title__section-label {\n min-width: 0;\n padding-inline: var(--ds-control-label-inset);\n}\n\n.bar-title__actions {\n display: flex;\n align-items: center;\n gap: var(--dimension-space-100);\n flex: 0 0 auto;\n}\n\n.bar-title__description {\n display: block;\n min-width: 0;\n max-width: 100%;\n}\n\n:host(.bar-title-host--compact) .bar-title {\n height: var(--dimension-size-600);\n}\n\n:host(.bar-title-host--compact) .bar-title::after {\n inset-inline: 0;\n}\n\n:host(.bar-title-host--compact) .bar-title__inner {\n flex: 1 1 auto;\n height: 100%;\n min-width: 0;\n padding: 0;\n gap: 0;\n}\n\n:host(.bar-title-host--compact) .bar-title__row {\n height: 100%;\n align-items: center;\n}\n\n:host(.bar-title-host--compact) .bar-title__identity {\n height: var(--dimension-size-400);\n}\n\n:host(.bar-title-host--compact) .bar-title__divider {\n margin-inline-start: 0;\n}\n\n:host(.bar-title-host--compact) .bar-title__heading {\n display: inline-flex;\n flex: 1 1 auto;\n align-items: center;\n height: var(--dimension-size-400);\n padding-inline: calc(var(--ds-control-padding-inline) + var(--ds-control-label-inset));\n box-sizing: border-box;\n}\n","import {\n Component,\n Element,\n Event,\n EventEmitter,\n h,\n Host,\n Prop,\n State,\n Watch,\n} from '@stencil/core';\nimport type { BreadcrumbItem, BreadcrumbSelectDetail } from '../Breadcrumb/breadcrumb-types';\nimport type { MenuItemData, MenuSection } from '../Menu/menu-types';\nimport {\n type BarTitleActionConfigItem,\n type BarTitleActionItem,\n type BarTitlePrimaryAction,\n type BarTitleSectionItem,\n type BarTitlePlacement,\n type BarTitleVariant,\n} from './bar-title-types';\nimport {\n availableBarTitleActionMenuIds,\n barTitleActionIdIssues,\n findBarTitleAction,\n overflowBarTitleActionSections,\n resolveBarTitleActionItems,\n visibleBarTitleActions,\n} from './bar-title-actions';\nimport {\n type FocusableBarTitleButton,\n barTitleActionMenuDomId,\n renderBarTitleActionMenus,\n renderBarTitleActions,\n renderBarTitleBack,\n renderBarTitleOverflowMenu,\n renderBarTitleSectionTrigger,\n restoreBarTitleActionFocus,\n} from './bar-title-action-chrome';\nimport {\n barTitleSectionMenuSections,\n barTitleSectionTriggerAriaLabel,\n effectiveBarTitleSectionValue,\n selectableBarTitleSections,\n selectedBarTitleSectionLabel,\n} from './bar-title-sections';\n\nlet nextBarTitleId = 0;\n\n@Component({\n tag: 'ds-bar-title',\n styleUrl: 'BarTitle.css',\n scoped: true,\n})\nexport class BarTitle {\n @Element() el!: HTMLElement;\n\n /** The page's single visible h1. */\n @Prop() heading!: string;\n\n /** Optional supporting copy shown in the expanded presentation. */\n @Prop() description: string = '';\n\n /** Show the leading page-level Back action. */\n @Prop({ attribute: 'show-back' }) showBack: boolean = false;\n\n /** Accessible name for the leading Back action. */\n @Prop() backAriaLabel: string = 'Back';\n\n /** Visible parent-page label used by the expanded breadcrumb when breadcrumbs is empty. */\n @Prop() backLabel: string = 'Back';\n\n /** Optional expanded ancestor path. Compact variants continue to use the Back action. */\n @Prop() breadcrumbs: BreadcrumbItem[] = [];\n\n /** Accessible name for the expanded breadcrumb navigation landmark. */\n @Prop() breadcrumbAriaLabel: string = 'Breadcrumb';\n\n /** Optional page sections exposed through the active-section menu. */\n @Prop() sections: BarTitleSectionItem[] = [];\n\n /** Id of the active page section. */\n @Prop() value: string = '';\n\n /** Accessible name for the page-section menu. */\n @Prop() sectionsAriaLabel: string = 'Change page section';\n\n /** The one highest-emphasis page action. */\n @Prop() primaryAction: BarTitlePrimaryAction | null = null;\n\n /** Secondary page actions shown in the overflow menu. Dividers create groups. */\n @Prop() actions: BarTitleActionItem[] = [];\n\n /**\n * Ordered page-header actions. When supplied, this replaces the legacy\n * primaryAction/actions presentation while preserving the same dsAction event.\n */\n @Prop() actionItems?: BarTitleActionConfigItem[];\n\n /** Accessible name for the page-actions menu. */\n @Prop() actionsAriaLabel: string = 'More page actions';\n\n /** Explicit visual/capacity variant. ShellPage owns automatic selection. */\n @Prop() variant: BarTitleVariant = 'expanded';\n\n /** Page-header placement, or compact application-shell bar placement. */\n @Prop({ reflect: true }) placement: BarTitlePlacement = 'page';\n\n /** Draw the page-title divider beneath the header. */\n @Prop() showDivider: boolean = true;\n\n /** Override divider visibility for compact and constrained variants. */\n @Prop() showCompactDivider?: boolean;\n\n /** Emitted when the leading Back action is activated. */\n @Event() dsBack!: EventEmitter<MouseEvent>;\n\n /** Emitted when an authored expanded breadcrumb item is activated. */\n @Event({ cancelable: true }) dsBreadcrumbSelect!: EventEmitter<BreadcrumbSelectDetail>;\n\n /** Emitted with the newly selected page-section id. */\n @Event() dsSectionChange!: EventEmitter<string>;\n\n /** Emitted with the activated primary or overflow action id. */\n @Event() dsAction!: EventEmitter<string>;\n\n @State() private sectionMenuOpen = false;\n @State() private openActionMenuId = '';\n @State() private surfaceActionMenuId = '';\n @State() private sectionSurfaceOpen = false;\n @State() private sectionMenuInitialFocusVisible = false;\n @State() private actionMenuInitialFocusVisible = false;\n\n private readonly instanceId = nextBarTitleId++;\n private readonly sectionMenuTriggerId = `bar-title-section-trigger-${this.instanceId}`;\n private readonly sectionMenuId = `bar-title-section-menu-${this.instanceId}`;\n private readonly actionMenuTriggerId = `bar-title-action-trigger-${this.instanceId}`;\n private readonly actionMenuId = `bar-title-action-menu-${this.instanceId}`;\n private sectionTriggerEl: HTMLButtonElement | null = null;\n private actionTriggerEl: FocusableBarTitleButton | null = null;\n private actionTriggerEls = new Map<string, FocusableBarTitleButton>();\n\n componentWillLoad() {\n if (this.el.closest('ds-shell-page')) {\n this.el.setAttribute('data-shell-page-syncing', '');\n }\n this.reportActionIdIssues();\n }\n\n @Watch('sections')\n handleSectionsChange() {\n if (!this.hasSectionSelector) {\n this.closeSectionMenu();\n this.sectionSurfaceOpen = false;\n }\n }\n\n @Watch('actions')\n @Watch('primaryAction')\n @Watch('actionItems')\n handleActionsChange() {\n this.reportActionIdIssues();\n if (!this.availableActionMenuIds.has(this.openActionMenuId)) this.closeActionMenu();\n if (!this.availableActionMenuIds.has(this.surfaceActionMenuId)) this.surfaceActionMenuId = '';\n }\n\n private reportActionIdIssues() {\n for (const issue of barTitleActionIdIssues(this.resolvedActionItems)) {\n console.warn(`[ds-bar-title] ${issue}`);\n }\n }\n\n private get compact(): boolean {\n return this.effectiveVariant !== 'expanded';\n }\n\n private get effectiveVariant(): BarTitleVariant {\n return this.placement === 'shell-bar' ? 'compact' : this.variant;\n }\n\n private get dividerVisible(): boolean {\n return this.compact ? (this.showCompactDivider ?? this.showDivider) : this.showDivider;\n }\n\n private get expandedBreadcrumbItems(): BreadcrumbItem[] {\n if (this.breadcrumbs.length > 0) return this.breadcrumbs;\n if (!this.showBack) return [];\n return [\n {\n id: 'back',\n label: this.backLabel,\n ariaLabel: this.backAriaLabel,\n },\n ];\n }\n\n private get primaryCollapsed(): boolean {\n return (\n this.actionItems === undefined &&\n this.effectiveVariant === 'constrained' &&\n this.primaryAction !== null &&\n (this.primaryAction.collapse ?? 'auto') === 'auto'\n );\n }\n\n private get selectableSections() {\n return selectableBarTitleSections(this.sections);\n }\n\n private get hasSectionSelector(): boolean {\n return this.selectableSections.length > 1;\n }\n\n private get effectiveValue(): string {\n return effectiveBarTitleSectionValue(this.sections, this.value);\n }\n\n private get selectedSectionLabel(): string {\n return selectedBarTitleSectionLabel(this.sections, this.value);\n }\n\n private get sectionTriggerAriaLabel(): string {\n return barTitleSectionTriggerAriaLabel(this.sectionsAriaLabel, this.selectedSectionLabel);\n }\n\n private get sectionMenuSections() {\n return barTitleSectionMenuSections(this.sections, this.effectiveValue);\n }\n\n private get resolvedActionItems(): BarTitleActionConfigItem[] {\n return resolveBarTitleActionItems(this.actionItems, this.primaryAction, this.actions);\n }\n\n private get visibleActions(): BarTitleActionConfigItem[] {\n return visibleBarTitleActions(this.resolvedActionItems, this.effectiveVariant);\n }\n\n private get actionMenuSections(): MenuSection[] {\n return overflowBarTitleActionSections(this.resolvedActionItems, this.effectiveVariant);\n }\n\n private get showActionMenuTrigger(): boolean {\n return this.actionMenuSections.length > 0;\n }\n\n private get availableActionMenuIds(): Set<string> {\n return availableBarTitleActionMenuIds(this.visibleActions, this.showActionMenuTrigger);\n }\n\n private toggleSectionMenu = (event: MouseEvent) => {\n this.sectionMenuInitialFocusVisible = event.detail === 0;\n this.openActionMenuId = '';\n this.sectionMenuOpen = !this.sectionMenuOpen;\n if (this.sectionMenuOpen) this.sectionSurfaceOpen = true;\n };\n\n private closeSectionMenu = () => {\n this.sectionMenuOpen = false;\n };\n\n private handleSectionSelect = (event: CustomEvent<MenuItemData>) => {\n const id = String(event.detail?.value ?? '');\n const selected = this.selectableSections.find(section => section.id === id);\n if (!selected || selected.isInactive) return;\n this.closeSectionMenu();\n this.dsSectionChange.emit(id);\n requestAnimationFrame(() => this.sectionTriggerEl?.focus());\n };\n\n private toggleActionMenu = (id: string, event: MouseEvent) => {\n this.actionMenuInitialFocusVisible = event.detail === 0;\n this.sectionMenuOpen = false;\n this.openActionMenuId = this.openActionMenuId === id ? '' : id;\n if (this.openActionMenuId) this.surfaceActionMenuId = this.openActionMenuId;\n };\n\n private finishActionMenuClose = (event: CustomEvent<void>) => {\n const id = this.surfaceActionMenuId;\n const domId =\n id === '__overflow'\n ? this.actionMenuId\n : barTitleActionMenuDomId('bar-title', this.instanceId, this.resolvedActionItems, id);\n if (this.openActionMenuId !== id && (event.target as HTMLElement).id === domId) {\n this.surfaceActionMenuId = '';\n }\n };\n\n private closeActionMenu = () => {\n this.openActionMenuId = '';\n };\n\n private handleActionSelect = (event: CustomEvent<MenuItemData>) => {\n const id = String(event.detail?.value ?? '');\n const action = findBarTitleAction(this.resolvedActionItems, id);\n if (!action || action.isInactive || ('isLoading' in action && action.isLoading)) return;\n const menuId = this.openActionMenuId;\n this.closeActionMenu();\n this.dsAction.emit(id);\n requestAnimationFrame(() => {\n void restoreBarTitleActionFocus({\n menuId,\n overflowTrigger: this.actionTriggerEl,\n actionTriggers: this.actionTriggerEls,\n resolvedActionItems: this.resolvedActionItems,\n });\n });\n };\n\n private chromeActionOptions() {\n return {\n classPrefix: 'bar-title',\n compact: this.compact,\n visibleActions: this.visibleActions,\n showOverflowTrigger: this.showActionMenuTrigger,\n actionItems: this.actionItems,\n primaryAction: this.primaryAction,\n resolvedActionItems: this.resolvedActionItems,\n instanceId: this.instanceId,\n openActionMenuId: this.openActionMenuId,\n surfaceActionMenuId: this.surfaceActionMenuId,\n actionsAriaLabel: this.actionsAriaLabel,\n actionMenuTriggerId: this.actionMenuTriggerId,\n actionMenuId: this.actionMenuId,\n actionTriggers: this.actionTriggerEls,\n setOverflowTriggerEl: (el: FocusableBarTitleButton | null) => {\n this.actionTriggerEl = el;\n },\n toggleActionMenu: this.toggleActionMenu,\n emitAction: (id: string) => this.dsAction.emit(id),\n };\n }\n\n private renderSectionSelector() {\n if (!this.hasSectionSelector) return null;\n return [\n <div class=\"bar-title__divider\" aria-hidden=\"true\" />,\n renderBarTitleSectionTrigger({\n classPrefix: 'bar-title',\n triggerId: this.sectionMenuTriggerId,\n menuId: this.sectionMenuId,\n open: this.sectionMenuOpen,\n surfaceOpen: this.sectionSurfaceOpen,\n ariaLabel: this.sectionTriggerAriaLabel,\n selectedLabel: this.selectedSectionLabel,\n setTriggerEl: el => {\n this.sectionTriggerEl = el;\n },\n onToggle: this.toggleSectionMenu,\n }),\n ];\n }\n\n private renderActions() {\n return renderBarTitleActions(this.chromeActionOptions());\n }\n\n private renderActionMenus() {\n return renderBarTitleActionMenus({\n classPrefix: 'bar-title',\n visibleActions: this.visibleActions,\n instanceId: this.instanceId,\n resolvedActionItems: this.resolvedActionItems,\n openActionMenuId: this.openActionMenuId,\n actionMenuInitialFocusVisible: this.actionMenuInitialFocusVisible,\n overflowTrigger: this.actionTriggerEl,\n actionTriggers: this.actionTriggerEls,\n closeActionMenu: this.closeActionMenu,\n finishActionMenuClose: this.finishActionMenuClose,\n handleActionSelect: this.handleActionSelect,\n });\n }\n\n private handleBreadcrumbSelect = (event: CustomEvent<BreadcrumbSelectDetail>) => {\n if (this.breadcrumbs.length === 0) {\n this.dsBack.emit(event.detail.originalEvent);\n return;\n }\n const forwarded = this.dsBreadcrumbSelect.emit(event.detail);\n if (forwarded.defaultPrevented) event.preventDefault();\n };\n\n private renderBreadcrumb() {\n const items = this.expandedBreadcrumbItems;\n if (items.length === 0) return null;\n return (\n <ds-breadcrumb\n class=\"bar-title__breadcrumb\"\n items={items}\n ariaLabel={this.breadcrumbAriaLabel}\n onDsSelect={this.handleBreadcrumbSelect}\n />\n );\n }\n\n private renderBack() {\n return renderBarTitleBack({\n classPrefix: 'bar-title',\n showBack: this.showBack,\n backAriaLabel: this.backAriaLabel,\n onBack: event => this.dsBack.emit(event),\n });\n }\n\n render() {\n const compact = this.compact;\n return (\n <Host\n class={{\n 'bar-title-host--compact': compact,\n 'bar-title-host--expanded': this.effectiveVariant === 'expanded',\n 'bar-title-host--constrained': this.effectiveVariant === 'constrained',\n 'bar-title-host--has-description': !!this.description,\n 'bar-title-host--has-back': this.showBack,\n 'bar-title-host--has-breadcrumb': !compact && this.expandedBreadcrumbItems.length > 0,\n 'bar-title-host--shell-bar': this.placement === 'shell-bar',\n }}\n >\n <div\n class={{\n 'bar-title': true,\n 'bar-title--divider-hidden': !this.dividerVisible,\n 'ds-chrome-header': compact,\n }}\n >\n <div class=\"bar-title__inner\">\n {!compact ? this.renderBreadcrumb() : null}\n <div class=\"bar-title__row\">\n <div class=\"bar-title__leading\">\n <div class=\"bar-title__title-row\" data-shell-page-header-anchor>\n <div class=\"bar-title__identity\">\n {compact ? this.renderBack() : null}\n <ds-text\n class=\"bar-title__heading ds-control--md\"\n variant={compact ? 'text-title-small' : 'text-title-medium'}\n emphasis\n color=\"primary\"\n as=\"h1\"\n lineTruncation={1}\n >\n {this.heading}\n </ds-text>\n </div>\n {this.renderSectionSelector()}\n </div>\n {this.description && !compact ? (\n <ds-text\n class=\"bar-title__description\"\n variant=\"text-body-small\"\n color=\"secondary\"\n lineTruncation={2}\n wrap=\"wrap\"\n as=\"p\"\n >\n {this.description}\n </ds-text>\n ) : null}\n </div>\n {this.renderActions()}\n </div>\n </div>\n </div>\n\n {this.hasSectionSelector ? (\n <ds-menu\n id={this.sectionMenuId}\n class=\"bar-title__section-menu\"\n anchorId={this.sectionMenuTriggerId}\n menuLabel={this.sectionsAriaLabel}\n open={this.sectionMenuOpen}\n initialFocusVisible={this.sectionMenuInitialFocusVisible}\n sections={this.sectionMenuSections}\n onDsClose={this.closeSectionMenu}\n onDsAfterClose={() => {\n if (!this.sectionMenuOpen) this.sectionSurfaceOpen = false;\n }}\n onDsSelect={this.handleSectionSelect}\n />\n ) : null}\n\n {this.renderActionMenus()}\n\n {renderBarTitleOverflowMenu({\n classPrefix: 'bar-title',\n showOverflowTrigger: this.showActionMenuTrigger,\n actionMenuId: this.actionMenuId,\n actionMenuTriggerId: this.actionMenuTriggerId,\n actionsAriaLabel: this.actionsAriaLabel,\n open: this.openActionMenuId === '__overflow',\n actionMenuInitialFocusVisible: this.actionMenuInitialFocusVisible,\n actionMenuSections: this.actionMenuSections,\n closeActionMenu: this.closeActionMenu,\n finishActionMenuClose: this.finishActionMenuClose,\n handleActionSelect: this.handleActionSelect,\n })}\n </Host>\n );\n }\n}\n"],"mappings":"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","ignoreList":[]}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"names":["ELEVATED_PRESS_SELECTOR","ELEVATED_PRESS_ATTRIBUTE","activeElevatedPresses","WeakMap","beginElevatedControlPress","event","eligible","button","target","currentTarget","wrapper","closest","view","ownerDocument","defaultView","get","setAttribute","finish","removeAttribute","removeEventListener","delete","set","addEventListener","BUTTON_ICON_SIZE","lg","md","sm","xs","buttonShowsIcon","variant","buttonShowsLabel","buttonShowsChevron","hasMenu","renderButtonContent","options","namespace","size","label","labelEmphasis","icon","isLoading","dot","iconSize","labelLoading","h","class","color","name","visible","background","as","CONTROL_TEXT_VARIANT","emphasis"],"sources":["src/wc/utils/control-press.ts","src/wc/utils/button-types.ts","src/wc/utils/button-render.tsx"],"sourcesContent":["const ELEVATED_PRESS_SELECTOR = '.ds-control-elevation--press-scale';\nconst ELEVATED_PRESS_ATTRIBUTE = 'data-ds-press-active';\n\nconst activeElevatedPresses = new WeakMap<HTMLElement, () => void>();\n\n/**\n * Transfers an eligible button pointer press to its elevated wrapper.\n *\n * The wrapper cannot rely on `:active`: Chromium also activates ancestors of a\n * disabled native button. Window-level release cleanup preserves the native\n * release-outside behavior without changing pointer capture or click delivery.\n */\nexport function beginElevatedControlPress(event: PointerEvent, eligible: boolean): void {\n if (!eligible || event.button !== 0) return;\n\n const target = event.currentTarget as HTMLElement | null;\n const wrapper = target?.closest<HTMLElement>(ELEVATED_PRESS_SELECTOR);\n const view = target?.ownerDocument.defaultView;\n if (!wrapper || !view) return;\n\n activeElevatedPresses.get(wrapper)?.();\n wrapper.setAttribute(ELEVATED_PRESS_ATTRIBUTE, '');\n\n const finish = () => {\n wrapper.removeAttribute(ELEVATED_PRESS_ATTRIBUTE);\n view.removeEventListener('pointerup', finish);\n view.removeEventListener('pointercancel', finish);\n view.removeEventListener('blur', finish);\n activeElevatedPresses.delete(wrapper);\n };\n\n activeElevatedPresses.set(wrapper, finish);\n view.addEventListener('pointerup', finish);\n view.addEventListener('pointercancel', finish);\n view.addEventListener('blur', finish);\n}\n","import type { ControlWidth } from './control-width';\n\nexport type ButtonVariant = 'icon' | 'label' | 'icon-label';\nexport type ButtonSize = 'lg' | 'md' | 'sm' | 'xs';\nexport type ButtonWidth = ControlWidth;\nexport type ButtonPopup = 'true' | 'menu' | 'listbox' | 'tree' | 'grid' | 'dialog';\nexport type ButtonNativeType = 'button' | 'submit' | 'reset';\n\nexport const BUTTON_ICON_SIZE: Record<ButtonSize, ButtonSize> = {\n lg: 'lg',\n md: 'md',\n sm: 'sm',\n xs: 'xs',\n};\n\nexport function buttonShowsIcon(variant: ButtonVariant): boolean {\n return variant === 'icon' || variant === 'icon-label';\n}\n\nexport function buttonShowsLabel(variant: ButtonVariant): boolean {\n return variant === 'label' || variant === 'icon-label';\n}\n\nexport function buttonShowsChevron(variant: ButtonVariant, hasMenu: boolean): boolean {\n return hasMenu && variant !== 'icon';\n}\n","import { h } from '@stencil/core';\nimport { CONTROL_TEXT_VARIANT } from './control-text';\nimport {\n BUTTON_ICON_SIZE,\n buttonShowsChevron,\n buttonShowsIcon,\n buttonShowsLabel,\n type ButtonSize,\n type ButtonVariant,\n} from './button-types';\n\ninterface ButtonContentOptions {\n namespace: 'button-filled' | 'button-unfilled';\n variant: ButtonVariant;\n size: ButtonSize;\n label: string;\n labelEmphasis: boolean;\n icon: string;\n hasMenu: boolean;\n isLoading: boolean;\n dot?: {\n visible: boolean;\n background: string;\n };\n}\n\n/** One content renderer shared by both semantic button components. */\nexport function renderButtonContent(options: ButtonContentOptions) {\n const { namespace, variant, size, label, labelEmphasis, icon, hasMenu, isLoading, dot } = options;\n const iconSize = BUTTON_ICON_SIZE[size];\n const labelLoading = isLoading && variant === 'label';\n\n return [\n buttonShowsIcon(variant) ? (\n <span\n class={`${namespace}__icon-wrap ds-button__icon-wrap ds-control-icon-box ds-interaction-fill__content`}\n >\n {isLoading ? (\n <ds-loader size={iconSize} color=\"inherit\" />\n ) : (\n <ds-icon name={icon} size={iconSize} color=\"inherit\" />\n )}\n {dot?.visible ? (\n <ds-badge\n class={`${namespace}__dot ds-button__dot`}\n variant=\"dot\"\n background={dot.background}\n label=\"\"\n aria-hidden=\"true\"\n />\n ) : null}\n </span>\n ) : null,\n buttonShowsLabel(variant) ? (\n <ds-text\n class={{\n [`${namespace}__label`]: true,\n 'ds-button__label': true,\n 'ds-control-label-box': true,\n [`${namespace}__label--loading`]: labelLoading,\n 'ds-button__label--loading': labelLoading,\n 'ds-interaction-fill__content': true,\n }}\n as=\"span\"\n variant={CONTROL_TEXT_VARIANT[size]}\n emphasis={labelEmphasis}\n color=\"inherit\"\n >\n {label}\n </ds-text>\n ) : null,\n buttonShowsChevron(variant, hasMenu) ? (\n <span\n class={{\n [`${namespace}__chevron`]: true,\n 'ds-button__chevron': true,\n 'ds-control-icon-box': true,\n 'ds-interaction-fill__content': true,\n [`${namespace}__chevron--loading`]: labelLoading,\n 'ds-button__chevron--loading': labelLoading,\n }}\n aria-hidden=\"true\"\n >\n <ds-icon name=\"ChevronDown\" size={iconSize} color=\"inherit\" />\n </span>\n ) : null,\n labelLoading ? (\n <span\n class={`${namespace}__loader-overlay ds-button__loader-overlay ds-interaction-fill__content`}\n >\n <ds-loader size={iconSize} color=\"inherit\" />\n </span>\n ) : null,\n ];\n}\n"],"mappings":"mEAAA,MAAMA,EAA0B,qCAChC,MAAMC,EAA2B,uBAEjC,MAAMC,EAAwB,IAAIC,QAS5B,SAAUC,EAA0BC,EAAqBC,GAC7D,IAAKA,GAAYD,EAAME,SAAW,EAAG,OAErC,MAAMC,EAASH,EAAMI,cACrB,MAAMC,EAAUF,GAAQG,QAAqBX,GAC7C,MAAMY,EAAOJ,GAAQK,cAAcC,YACnC,IAAKJ,IAAYE,EAAM,OAEvBV,EAAsBa,IAAIL,EAA1BR,KACAQ,EAAQM,aAAaf,EAA0B,IAE/C,MAAMgB,EAAS,KACbP,EAAQQ,gBAAgBjB,GACxBW,EAAKO,oBAAoB,YAAaF,GACtCL,EAAKO,oBAAoB,gBAAiBF,GAC1CL,EAAKO,oBAAoB,OAAQF,GACjCf,EAAsBkB,OAAOV,EAAQ,EAGvCR,EAAsBmB,IAAIX,EAASO,GACnCL,EAAKU,iBAAiB,YAAaL,GACnCL,EAAKU,iBAAiB,gBAAiBL,GACvCL,EAAKU,iBAAiB,OAAQL,EAChC,CC3BO,MAAMM,EAAmD,CAC9DC,GAAI,KACJC,GAAI,KACJC,GAAI,KACJC,GAAI,MAGA,SAAUC,EAAgBC,GAC9B,OAAOA,IAAY,QAAUA,IAAY,YAC3C,CAEM,SAAUC,EAAiBD,GAC/B,OAAOA,IAAY,SAAWA,IAAY,YAC5C,CAEM,SAAUE,EAAmBF,EAAwBG,GACzD,OAAOA,GAAWH,IAAY,MAChC,CCEM,SAAUI,EAAoBC,GAClC,MAAMC,UAAEA,EAASN,QAAEA,EAAOO,KAAEA,EAAIC,MAAEA,EAAKC,cAAEA,EAAaC,KAAEA,EAAIP,QAAEA,EAAOQ,UAAEA,EAASC,IAAEA,GAAQP,EAC1F,MAAMQ,EAAWnB,EAAiBa,GAClC,MAAMO,EAAeH,GAAaX,IAAY,QAE9C,MAAO,CACLD,EAAgBC,GACde,EAAA,QACEC,MAAO,GAAGV,sFAETK,EACCI,EAAA,aAAWR,KAAMM,EAAUI,MAAM,YAEjCF,EAAA,WAASG,KAAMR,EAAMH,KAAMM,EAAUI,MAAM,YAE5CL,GAAKO,QACJJ,EAAA,YACEC,MAAO,GAAGV,wBACVN,QAAQ,MACRoB,WAAYR,EAAIQ,WAChBZ,MAAM,GAAE,cACI,SAEZ,MAEJ,KACJP,EAAiBD,GACfe,EAAA,WACEC,MAAO,CACL,CAAC,GAAGV,YAAqB,KACzB,mBAAoB,KACpB,uBAAwB,KACxB,CAAC,GAAGA,qBAA8BQ,EAClC,4BAA6BA,EAC7B,+BAAgC,MAElCO,GAAG,OACHrB,QAASsB,EAAqBf,GAC9BgB,SAAUd,EACVQ,MAAM,WAELT,GAED,KACJN,EAAmBF,EAASG,GAC1BY,EAAA,QACEC,MAAO,CACL,CAAC,GAAGV,cAAuB,KAC3B,qBAAsB,KACtB,sBAAuB,KACvB,+BAAgC,KAChC,CAAC,GAAGA,uBAAgCQ,EACpC,8BAA+BA,GAChC,cACW,QAEZC,EAAA,WAASG,KAAK,cAAcX,KAAMM,EAAUI,MAAM,aAElD,KACJH,EACEC,EAAA,QACEC,MAAO,GAAGV,4EAEVS,EAAA,aAAWR,KAAMM,EAAUI,MAAM,aAEjC,KAER,Q","ignoreList":[]}
|
|
@@ -1,2 +0,0 @@
|
|
|
1
|
-
import{p as e,H as t,h as s,a,t as c}from"./index.js";import{d as i}from"./p-Cea7rROU.js";import{d}from"./p-CLGtPE0K.js";const n=()=>`.sc-ds-empty-state-h{display:block;width:100%;height:100%}.sc-ds-empty-state-h,.empty-state.sc-ds-empty-state,.empty-state__text.sc-ds-empty-state{box-sizing:border-box}.empty-state.sc-ds-empty-state{display:flex;flex-direction:column;align-items:center;justify-content:center;gap:var(--dimension-space-100);height:100%;width:100%;text-align:center}.empty-state__icon.sc-ds-empty-state{flex:0 0 auto}.empty-state__text.sc-ds-empty-state{display:flex;flex-direction:column;align-items:center;gap:var(--dimension-space-050);width:100%}`;const o=e(class e extends t{constructor(e){super();if(e!==false){this.__registerHost()}this.body=""}render(){const e=Boolean(this.heading?.trim());const t=e&&Boolean(this.icon);return s(a,{key:"7bd70a555ccd0ae7b7c8eda368ce052cf262ad64"},s("div",{key:"570a3f4e27c7607c1da55b3b270ce3695149e796",class:"empty-state"},t&&s("ds-icon",{key:"49a27853e858895f6534b218d2a9b4f8df00962c",class:"empty-state__icon",name:this.icon,size:"xl",color:"primary"}),s("div",{key:"935e06341ef58c81bca5f0c99e30d08e0932cfca",class:"empty-state__text"},e&&s("ds-text",{key:"c34d79b990fe9fc8c1f3cf1f8401b16f67445f02",class:"empty-state__title",as:"div",variant:"text-title-small",color:"primary",align:"center"},this.heading),this.body&&s("ds-text",{key:"684ecbe24dbda9eb84feb6f364b5de49847ecee8",class:"empty-state__body",as:"p",variant:"text-body-medium",color:"secondary",align:"center"},this.body))))}static get style(){return n()}},[2,"ds-empty-state",{icon:[1],heading:[1],body:[1]}]);function m(){if(typeof customElements==="undefined"){return}const e=["ds-empty-state","ds-icon","ds-text"];e.forEach((e=>{switch(e){case"ds-empty-state":if(!customElements.get(c(e))){customElements.define(c(e),o)}break;case"ds-icon":if(!customElements.get(c(e))){i()}break;case"ds-text":if(!customElements.get(c(e))){d()}break}}))}m();export{o as E,m as d};
|
|
2
|
-
//# sourceMappingURL=p-D_u8WhlU.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"names":["isBarTitleActionDivider","item","type","resolveBarTitleActionItems","actionItems","primaryAction","actions","undefined","resolved","primary","push","buttonType","appearance","action","nestedChoices","choices","barTitleActionIdIssues","items","seen","Set","issues","visit","id","trim","has","add","choice","actionCollapses","presentation","mobile","collapse","visibleBarTitleActions","find","menuItem","includeIcon","label","value","icon","isInactive","isDestructive","appendChoices","output","includeIcons","toSections","sections","current","commit","length","barTitleChoiceSections","rows","overflowBarTitleActionSections","visibleAction","availableBarTitleActionMenuIds","visibleActions","showOverflowTrigger","ids","findBarTitleAction","candidate","isBarTitleDivider","barTitleActionMenuDomId","classPrefix","instanceId","resolvedActionItems","index","findIndex","barTitleActionMenuAnchor","overflowTrigger","actionTriggers","trigger","get","splitMenu","querySelector","async","restoreBarTitleActionFocus","options","menuId","setFocus","split","some","className","prefix","part","renderBarTitleBack","showBack","h","side","size","class","variant","backAriaLabel","activeFill","hasBorder","onDsClick","event","onBack","detail","renderBarTitleSectionTrigger","ref","el","setTriggerEl","triggerId","open","surfaceOpen","String","ariaLabel","onClick","onToggle","as","emphasis","color","lineTruncation","selectedLabel","name","renderVisibleAction","menu","splitMenuId","splitProps","key","set","delete","menuAriaLabel","controls","expanded","openActionMenuId","surfaceActionMenuId","isLoading","emitAction","onDsMenuClick","toggleActionMenu","intent","contrast","buttonProps","hasMenu","button","renderBarTitleActions","map","setOverflowTriggerEl","actionMenuTriggerId","actionsAriaLabel","compact","haspopup","actionMenuId","renderBarTitleActionMenus","flatMap","menuAction","menuLabel","anchor","align","initialFocusVisible","actionMenuInitialFocusVisible","onDsClose","closeActionMenu","onDsAfterClose","finishActionMenuClose","onDsSelect","handleActionSelect","renderBarTitleOverflowMenu","anchorId","actionMenuSections","selectableBarTitleSections","filter","effectiveBarTitleSectionValue","selectable","section","selectedBarTitleSectionLabel","selectedId","barTitleSectionTriggerAriaLabel","sectionsAriaLabel","barTitleSectionMenuSections","groups","isSelected","barTitleSectionsToTabs","barTitleSectionsDigest","join"],"sources":["src/wc/components/BarTitle/bar-title-actions.ts","src/wc/components/BarTitle/bar-title-types.ts","src/wc/components/BarTitle/bar-title-action-chrome.tsx","src/wc/components/BarTitle/bar-title-sections.ts"],"sourcesContent":["import type { MenuItemData, MenuSection } from '../Menu/menu-types';\nimport type {\n BarTitleAction,\n BarTitleActionConfigItem,\n BarTitleActionItem,\n BarTitleDivider,\n BarTitleMenuChoiceItem,\n BarTitlePrimaryAction,\n BarTitleVariant,\n} from './bar-title-types';\n\nexport type BarTitleActionPresentation = BarTitleVariant | 'mobile';\n\nexport function isBarTitleActionDivider(\n item: BarTitleActionConfigItem | BarTitleMenuChoiceItem\n): item is BarTitleDivider {\n return 'type' in item && item.type === 'divider';\n}\n\nexport function resolveBarTitleActionItems(\n actionItems: BarTitleActionConfigItem[] | undefined,\n primaryAction: BarTitlePrimaryAction | null,\n actions: BarTitleActionItem[]\n): BarTitleActionConfigItem[] {\n if (actionItems !== undefined) return actionItems;\n\n const resolved: BarTitleActionConfigItem[] = [];\n if (primaryAction) {\n const { type, ...primary } = primaryAction;\n resolved.push({\n ...primary,\n type: 'button',\n buttonType: type,\n appearance: 'filled',\n });\n }\n for (const action of actions) {\n resolved.push(\n 'type' in action\n ? action\n : {\n ...action,\n type: 'overflow',\n }\n );\n }\n return resolved;\n}\n\nfunction nestedChoices(item: BarTitleActionConfigItem): BarTitleMenuChoiceItem[] | undefined {\n return item.type === 'menu' || item.type === 'split' ? item.choices : undefined;\n}\n\nexport function barTitleActionIdIssues(items: BarTitleActionConfigItem[]): string[] {\n const seen = new Set<string>();\n const issues: string[] = [];\n const visit = (id: string) => {\n if (!id.trim()) {\n issues.push('Action ids must be non-empty.');\n return;\n }\n if (seen.has(id)) {\n issues.push(`Duplicate action id: ${id}`);\n return;\n }\n seen.add(id);\n };\n\n for (const item of items) {\n if (isBarTitleActionDivider(item)) continue;\n visit(item.id);\n for (const choice of nestedChoices(item) ?? []) {\n if (!isBarTitleActionDivider(choice)) visit(choice.id);\n }\n }\n return issues;\n}\n\nfunction actionCollapses(\n item: BarTitleActionConfigItem,\n presentation: BarTitleActionPresentation\n): boolean {\n if (isBarTitleActionDivider(item) || item.type === 'overflow') return false;\n if (presentation === 'mobile') {\n if (item.type !== 'icon') return true;\n return (item.mobile ?? 'auto') === 'overflow';\n }\n return presentation === 'constrained' && (item.collapse ?? 'auto') === 'auto';\n}\n\nexport function visibleBarTitleActions(\n items: BarTitleActionConfigItem[],\n presentation: BarTitleActionPresentation\n): BarTitleActionConfigItem[] {\n const primary = items.find(\n item =>\n !isBarTitleActionDivider(item) &&\n item.type !== 'overflow' &&\n !actionCollapses(item, presentation)\n );\n return primary ? [primary] : [];\n}\n\nfunction menuItem(action: BarTitleAction, includeIcon: boolean = true): MenuItemData {\n return {\n label: action.label,\n value: action.id,\n icon: includeIcon ? action.icon : undefined,\n isInactive: action.isInactive,\n isDestructive: action.isDestructive,\n };\n}\n\nfunction appendChoices(\n output: Array<MenuItemData | BarTitleDivider>,\n choices: BarTitleMenuChoiceItem[],\n includeIcons: boolean = true\n) {\n for (const choice of choices) {\n output.push(isBarTitleActionDivider(choice) ? choice : menuItem(choice, includeIcons));\n }\n}\n\nfunction toSections(items: Array<MenuItemData | BarTitleDivider>): MenuSection[] {\n const sections: MenuSection[] = [];\n let current: MenuItemData[] = [];\n const commit = () => {\n if (current.length > 0) sections.push({ items: current });\n current = [];\n };\n\n for (const item of items) {\n if ('type' in item && item.type === 'divider') commit();\n else current.push(item as MenuItemData);\n }\n commit();\n return sections;\n}\n\nexport function barTitleChoiceSections(choices: BarTitleMenuChoiceItem[]): MenuSection[] {\n const rows: Array<MenuItemData | BarTitleDivider> = [];\n appendChoices(rows, choices);\n return toSections(rows);\n}\n\nexport function overflowBarTitleActionSections(\n items: BarTitleActionConfigItem[],\n presentation: BarTitleActionPresentation\n): MenuSection[] {\n const rows: Array<MenuItemData | BarTitleDivider> = [];\n const [visibleAction] = visibleBarTitleActions(items, presentation);\n\n for (const item of items) {\n if (isBarTitleActionDivider(item)) {\n rows.push(item);\n continue;\n }\n if (item.type === 'overflow') {\n rows.push(menuItem(item, false));\n continue;\n }\n if (item === visibleAction) continue;\n\n if (item.type === 'menu') {\n appendChoices(rows, item.choices, false);\n continue;\n }\n if (item.type === 'split') {\n rows.push(menuItem(item, false));\n appendChoices(rows, item.choices, false);\n continue;\n }\n rows.push(menuItem(item, false));\n }\n\n return toSections(rows);\n}\n\nexport function availableBarTitleActionMenuIds(\n visibleActions: BarTitleActionConfigItem[],\n showOverflowTrigger: boolean\n): Set<string> {\n const ids = new Set<string>();\n if (showOverflowTrigger) ids.add('__overflow');\n for (const item of visibleActions) {\n if (!isBarTitleActionDivider(item) && (item.type === 'menu' || item.type === 'split')) {\n ids.add(item.id);\n }\n }\n return ids;\n}\n\nexport function findBarTitleAction(\n items: BarTitleActionConfigItem[],\n id: string\n): BarTitleAction | undefined {\n for (const item of items) {\n if (isBarTitleActionDivider(item)) continue;\n if (item.id === id) return item;\n const choice = nestedChoices(item)?.find(\n candidate => !isBarTitleActionDivider(candidate) && candidate.id === id\n );\n if (choice && !isBarTitleActionDivider(choice)) return choice;\n }\n return undefined;\n}\n","import type { ButtonFilledContrast, ButtonFilledIntent } from '../ButtonFilled/ButtonFilled';\n\nexport interface BarTitleSection {\n id: string;\n label: string;\n isInactive?: boolean;\n}\n\nexport interface BarTitleDivider {\n type: 'divider';\n}\n\nexport type BarTitleSectionItem = BarTitleSection | BarTitleDivider;\n\nexport interface BarTitleAction {\n id: string;\n label: string;\n ariaLabel?: string;\n icon?: string;\n isInactive?: boolean;\n isDestructive?: boolean;\n}\n\nexport interface BarTitlePrimaryAction extends BarTitleAction {\n intent?: ButtonFilledIntent;\n contrast?: ButtonFilledContrast;\n isLoading?: boolean;\n type?: 'button' | 'submit' | 'reset';\n collapse?: BarTitlePrimaryActionCollapse;\n}\n\nexport type BarTitleActionItem = BarTitleAction | BarTitleDivider;\n\nexport type BarTitleActionAppearance = 'filled' | 'unfilled';\nexport type BarTitleActionCollapse = 'auto' | 'never';\nexport type BarTitleActionMobile = 'auto' | 'visible' | 'overflow';\n\ninterface BarTitleVisibleActionBase extends BarTitleAction {\n appearance?: BarTitleActionAppearance;\n intent?: ButtonFilledIntent;\n contrast?: ButtonFilledContrast;\n isLoading?: boolean;\n buttonType?: 'button' | 'submit' | 'reset';\n /** Auto moves the action into overflow only in constrained presentation. */\n collapse?: BarTitleActionCollapse;\n /**\n * Mobile defaults icon actions to visible and all labeled actions to overflow.\n * `visible` is supported only by icon actions.\n */\n mobile?: BarTitleActionMobile;\n}\n\n/** Visible labeled command in the authored action order. */\nexport interface BarTitleButtonAction extends BarTitleVisibleActionBase {\n type: 'button';\n}\n\n/** Visible icon-only command. ariaLabel is required because label is not rendered. */\nexport interface BarTitleIconAction extends BarTitleVisibleActionBase {\n type: 'icon';\n icon: string;\n ariaLabel: string;\n}\n\nexport type BarTitleMenuChoice = BarTitleAction;\nexport type BarTitleMenuChoiceItem = BarTitleMenuChoice | BarTitleDivider;\n\n/** Visible labeled menu button. Selecting a choice emits that choice's flat id. */\nexport interface BarTitleMenuAction extends BarTitleVisibleActionBase {\n type: 'menu';\n choices: BarTitleMenuChoiceItem[];\n menuAriaLabel?: string;\n}\n\n/** Command with a dedicated menu segment; defaults filled when appearance is omitted. */\nexport interface BarTitleSplitAction extends BarTitleVisibleActionBase {\n type: 'split';\n choices: BarTitleMenuChoiceItem[];\n menuAriaLabel: string;\n}\n\n/** Command that is always presented in the shared overflow menu. */\nexport interface BarTitleOverflowAction extends BarTitleAction {\n type: 'overflow';\n}\n\n/**\n * Ordered page-header action model. IDs must be non-empty and unique across\n * top-level actions and every nested menu choice. At most the first eligible\n * action renders beside the title; remaining actions use the text-only overflow.\n */\nexport type BarTitleActionConfigItem =\n | BarTitleButtonAction\n | BarTitleIconAction\n | BarTitleMenuAction\n | BarTitleSplitAction\n | BarTitleOverflowAction\n | BarTitleDivider;\n\nexport type BarTitleVariant = 'expanded' | 'compact' | 'constrained';\nexport type BarTitlePlacement = 'page' | 'shell-bar';\n\nexport type BarTitlePrimaryActionCollapse = 'auto' | 'never';\n\nexport function isBarTitleDivider(\n item: BarTitleSectionItem | BarTitleActionItem\n): item is BarTitleDivider {\n return 'type' in item && item.type === 'divider';\n}\n","import { h } from '@stencil/core';\nimport type { MenuItemData, MenuSection } from '../Menu/menu-types';\nimport { isBarTitleDivider } from './bar-title-types';\nimport type {\n BarTitleActionConfigItem,\n BarTitleMenuAction,\n BarTitlePrimaryAction,\n BarTitleSplitAction,\n} from './bar-title-types';\nimport { barTitleChoiceSections } from './bar-title-actions';\n\nexport type FocusableBarTitleButton = HTMLElement & {\n setFocus?: (segment?: 'primary' | 'menu') => Promise<void>;\n};\n\nexport function barTitleActionMenuDomId(\n classPrefix: string,\n instanceId: number,\n resolvedActionItems: BarTitleActionConfigItem[],\n id: string\n): string {\n const index = resolvedActionItems.findIndex(item => !isBarTitleDivider(item) && item.id === id);\n return `${classPrefix}-action-menu-${instanceId}-${index}`;\n}\n\nexport function barTitleActionMenuAnchor(\n id: string,\n overflowTrigger: FocusableBarTitleButton | null,\n actionTriggers: Map<string, FocusableBarTitleButton>\n): HTMLElement | undefined {\n if (id === '__overflow') return overflowTrigger ?? undefined;\n const trigger = actionTriggers.get(id);\n if (!trigger) return undefined;\n const splitMenu = trigger.querySelector<HTMLElement>('.ds-button-split__menu');\n return splitMenu ?? trigger;\n}\n\nexport async function restoreBarTitleActionFocus(options: {\n menuId: string;\n overflowTrigger: FocusableBarTitleButton | null;\n actionTriggers: Map<string, FocusableBarTitleButton>;\n resolvedActionItems: BarTitleActionConfigItem[];\n}): Promise<void> {\n if (options.menuId === '__overflow') {\n await options.overflowTrigger?.setFocus?.();\n return;\n }\n const trigger = options.actionTriggers.get(options.menuId);\n if (!trigger || !('setFocus' in trigger)) return;\n const split = options.resolvedActionItems.some(\n item => !isBarTitleDivider(item) && item.id === options.menuId && item.type === 'split'\n );\n await trigger.setFocus?.(split ? 'menu' : undefined);\n}\n\nfunction className(prefix: string, part: string): string {\n return `${prefix}__${part}`;\n}\n\nexport function renderBarTitleBack(options: {\n classPrefix: string;\n showBack: boolean;\n backAriaLabel: string;\n onBack: (event: MouseEvent) => void;\n}) {\n if (!options.showBack) return null;\n return (\n <ds-tooltip label=\"Go back\" side=\"bottom\" size=\"sm\">\n <ds-button-unfilled\n class={className(options.classPrefix, 'back')}\n variant=\"icon\"\n icon=\"ChevronLeft\"\n aria-label={options.backAriaLabel}\n size=\"md\"\n activeFill={false}\n hasBorder={false}\n onDsClick={(event: CustomEvent<MouseEvent>) => options.onBack(event.detail)}\n />\n </ds-tooltip>\n );\n}\n\nexport function renderBarTitleSectionTrigger(options: {\n classPrefix: string;\n triggerId: string;\n menuId: string;\n open: boolean;\n surfaceOpen: boolean;\n ariaLabel: string;\n selectedLabel: string;\n setTriggerEl: (el: HTMLButtonElement | null) => void;\n onToggle: (event: MouseEvent) => void;\n}) {\n const prefix = options.classPrefix;\n return (\n <div class={className(prefix, 'section-selector')}>\n <button\n ref={el => {\n options.setTriggerEl((el as HTMLButtonElement | null) ?? null);\n }}\n id={options.triggerId}\n class={{\n [className(prefix, 'section-trigger')]: true,\n [`${className(prefix, 'section-trigger')}--expanded`]: options.open,\n 'ds-interaction-fill--surface-open': options.surfaceOpen,\n 'ds-control--md': true,\n 'ds-focus-ring-inset': true,\n 'ds-interaction-fill': true,\n }}\n type=\"button\"\n aria-haspopup=\"menu\"\n aria-controls={options.menuId}\n aria-expanded={String(options.open)}\n aria-label={options.ariaLabel}\n onClick={options.onToggle}\n >\n <ds-text\n class={`${className(prefix, 'section-label')} ds-interaction-fill__content`}\n as=\"span\"\n variant=\"text-body-medium\"\n emphasis\n color=\"primary\"\n lineTruncation={1}\n >\n {options.selectedLabel}\n </ds-text>\n <ds-icon\n class={`${className(prefix, 'section-chevron')} ds-interaction-fill__content`}\n name=\"ChevronUpDown\"\n size=\"md\"\n color=\"inherit\"\n aria-hidden=\"true\"\n />\n </button>\n </div>\n );\n}\n\nfunction renderVisibleAction(\n action: BarTitleActionConfigItem,\n options: {\n classPrefix: string;\n compact: boolean;\n actionItems: BarTitleActionConfigItem[] | undefined;\n primaryAction: BarTitlePrimaryAction | null;\n resolvedActionItems: BarTitleActionConfigItem[];\n instanceId: number;\n openActionMenuId: string;\n surfaceActionMenuId: string;\n actionTriggers: Map<string, FocusableBarTitleButton>;\n toggleActionMenu: (id: string, event: MouseEvent) => void;\n emitAction: (id: string) => void;\n }\n) {\n if (isBarTitleDivider(action) || action.type === 'overflow') return null;\n const appearance = action.appearance ?? (action.type === 'split' ? 'filled' : 'unfilled');\n const variant: 'icon' | 'icon-label' | 'label' =\n action.type === 'icon' ? 'icon' : action.icon ? 'icon-label' : 'label';\n const menu = action.type === 'menu';\n const menuId = menu\n ? barTitleActionMenuDomId(\n options.classPrefix,\n options.instanceId,\n options.resolvedActionItems,\n action.id\n )\n : undefined;\n const prefix = options.classPrefix;\n\n if (action.type === 'split') {\n const splitMenuId = barTitleActionMenuDomId(\n options.classPrefix,\n options.instanceId,\n options.resolvedActionItems,\n action.id\n );\n const splitProps = {\n key: action.id,\n ref: (el: FocusableBarTitleButton | undefined) => {\n if (el) options.actionTriggers.set(action.id, el);\n else options.actionTriggers.delete(action.id);\n },\n class: `${className(prefix, 'action')} ${className(prefix, 'split-action')}`,\n split: true,\n variant,\n label: action.label,\n icon: action.icon ?? '',\n menuAriaLabel: action.menuAriaLabel,\n controls: splitMenuId,\n expanded: options.openActionMenuId === action.id,\n surfaceOpen: options.surfaceActionMenuId === action.id,\n size: 'md' as const,\n type: action.buttonType ?? 'button',\n isInactive: action.isInactive,\n isLoading: action.isLoading,\n onDsClick: () => options.emitAction(action.id),\n onDsMenuClick: (event: CustomEvent<MouseEvent>) =>\n options.toggleActionMenu(action.id, event.detail),\n };\n return appearance === 'filled' ? (\n <ds-button-filled\n {...splitProps}\n intent={action.intent ?? 'brand'}\n contrast={action.contrast ?? 'bold'}\n />\n ) : (\n <ds-button-unfilled {...splitProps} />\n );\n }\n\n const buttonProps = {\n key: action.id,\n ref: (el: FocusableBarTitleButton | undefined) => {\n if (el) options.actionTriggers.set(action.id, el);\n else options.actionTriggers.delete(action.id);\n },\n class: `${className(prefix, 'action')} ${className(prefix, 'action')}--${action.type}${\n options.actionItems === undefined && action.id === options.primaryAction?.id\n ? ` ${className(prefix, 'primary-action')}`\n : ''\n }`,\n variant,\n icon: action.icon ?? '',\n label: action.label,\n ariaLabel: action.ariaLabel ?? (action.type === 'icon' ? action.label : undefined),\n size: 'md' as const,\n type: action.buttonType ?? 'button',\n isInactive: action.isInactive,\n isLoading: action.isLoading,\n controls: menuId,\n expanded: menu ? options.openActionMenuId === action.id : undefined,\n surfaceOpen: menu && options.surfaceActionMenuId === action.id,\n hasMenu: menu,\n onDsClick: (event: CustomEvent<MouseEvent>) => {\n if (menu) options.toggleActionMenu(action.id, event.detail);\n else options.emitAction(action.id);\n },\n };\n\n const button =\n appearance === 'filled' ? (\n <ds-button-filled\n {...buttonProps}\n intent={action.intent ?? 'brand'}\n contrast={action.contrast ?? 'bold'}\n />\n ) : (\n <ds-button-unfilled {...buttonProps} />\n );\n\n return action.type === 'icon' ? (\n <ds-tooltip key={action.id} label={action.label} side=\"bottom\" size=\"sm\">\n {button}\n </ds-tooltip>\n ) : (\n button\n );\n}\n\nexport function renderBarTitleActions(options: {\n classPrefix: string;\n compact: boolean;\n visibleActions: BarTitleActionConfigItem[];\n showOverflowTrigger: boolean;\n actionItems: BarTitleActionConfigItem[] | undefined;\n primaryAction: BarTitlePrimaryAction | null;\n resolvedActionItems: BarTitleActionConfigItem[];\n instanceId: number;\n openActionMenuId: string;\n surfaceActionMenuId: string;\n actionsAriaLabel: string;\n actionMenuTriggerId: string;\n actionMenuId: string;\n actionTriggers: Map<string, FocusableBarTitleButton>;\n setOverflowTriggerEl: (el: FocusableBarTitleButton | null) => void;\n toggleActionMenu: (id: string, event: MouseEvent) => void;\n emitAction: (id: string) => void;\n}) {\n if (options.visibleActions.length === 0 && !options.showOverflowTrigger) return null;\n const prefix = options.classPrefix;\n\n return (\n <div class={className(prefix, 'actions')}>\n {options.visibleActions.map(action => renderVisibleAction(action, options))}\n {options.showOverflowTrigger ? (\n <ds-tooltip label=\"Page options\" side=\"bottom\" size=\"sm\">\n <ds-button-unfilled\n ref={el => {\n options.setOverflowTriggerEl((el as FocusableBarTitleButton | null) ?? null);\n }}\n id={options.actionMenuTriggerId}\n class={className(prefix, 'more-actions')}\n variant=\"icon\"\n icon=\"Ellipses\"\n aria-label={options.actionsAriaLabel}\n size=\"md\"\n activeFill={!options.compact}\n hasBorder={options.visibleActions.length > 0}\n haspopup=\"menu\"\n controls={options.actionMenuId}\n expanded={options.openActionMenuId === '__overflow'}\n surfaceOpen={options.surfaceActionMenuId === '__overflow'}\n onDsClick={(event: CustomEvent<MouseEvent>) =>\n options.toggleActionMenu('__overflow', event.detail)\n }\n />\n </ds-tooltip>\n ) : null}\n </div>\n );\n}\n\nexport function renderBarTitleActionMenus(options: {\n classPrefix: string;\n visibleActions: BarTitleActionConfigItem[];\n instanceId: number;\n resolvedActionItems: BarTitleActionConfigItem[];\n openActionMenuId: string;\n actionMenuInitialFocusVisible: boolean;\n overflowTrigger: FocusableBarTitleButton | null;\n actionTriggers: Map<string, FocusableBarTitleButton>;\n closeActionMenu: () => void;\n finishActionMenuClose: (event: CustomEvent<void>) => void;\n handleActionSelect: (event: CustomEvent<MenuItemData>) => void;\n}) {\n const prefix = options.classPrefix;\n return options.visibleActions.flatMap(action => {\n if (isBarTitleDivider(action) || (action.type !== 'menu' && action.type !== 'split')) {\n return [];\n }\n const menuAction = action as BarTitleMenuAction | BarTitleSplitAction;\n const menuLabel = menuAction.menuAriaLabel ?? menuAction.ariaLabel ?? menuAction.label;\n return [\n <ds-menu\n key={action.id}\n id={barTitleActionMenuDomId(\n options.classPrefix,\n options.instanceId,\n options.resolvedActionItems,\n action.id\n )}\n class={className(prefix, 'action-menu')}\n anchor={barTitleActionMenuAnchor(\n action.id,\n options.overflowTrigger,\n options.actionTriggers\n )}\n align=\"end\"\n menuLabel={menuLabel}\n open={options.openActionMenuId === action.id}\n initialFocusVisible={options.actionMenuInitialFocusVisible}\n sections={barTitleChoiceSections(menuAction.choices)}\n onDsClose={options.closeActionMenu}\n onDsAfterClose={options.finishActionMenuClose}\n onDsSelect={options.handleActionSelect}\n />,\n ];\n });\n}\n\nexport function renderBarTitleOverflowMenu(options: {\n classPrefix: string;\n showOverflowTrigger: boolean;\n actionMenuId: string;\n actionMenuTriggerId: string;\n actionsAriaLabel: string;\n open: boolean;\n actionMenuInitialFocusVisible: boolean;\n actionMenuSections: MenuSection[];\n closeActionMenu: () => void;\n finishActionMenuClose: (event: CustomEvent<void>) => void;\n handleActionSelect: (event: CustomEvent<MenuItemData>) => void;\n}) {\n if (!options.showOverflowTrigger) return null;\n return (\n <ds-menu\n id={options.actionMenuId}\n class={className(options.classPrefix, 'action-menu')}\n anchorId={options.actionMenuTriggerId}\n align=\"end\"\n menuLabel={options.actionsAriaLabel}\n open={options.open}\n initialFocusVisible={options.actionMenuInitialFocusVisible}\n sections={options.actionMenuSections}\n onDsClose={options.closeActionMenu}\n onDsAfterClose={options.finishActionMenuClose}\n onDsSelect={options.handleActionSelect}\n />\n );\n}\n","import type { MenuItemData, MenuSection } from '../Menu/menu-types';\nimport type { TabItem } from '../TabGroup/tab-item-utils';\nimport {\n isBarTitleDivider,\n type BarTitleSection,\n type BarTitleSectionItem,\n} from './bar-title-types';\n\nexport function selectableBarTitleSections(sections: BarTitleSectionItem[]): BarTitleSection[] {\n return sections.filter((item): item is BarTitleSection => !isBarTitleDivider(item));\n}\n\nexport function effectiveBarTitleSectionValue(\n sections: BarTitleSectionItem[],\n value: string\n): string {\n const selectable = selectableBarTitleSections(sections);\n return selectable.some(section => section.id === value) ? value : (selectable[0]?.id ?? '');\n}\n\nexport function selectedBarTitleSectionLabel(\n sections: BarTitleSectionItem[],\n value: string\n): string {\n const selectedId = effectiveBarTitleSectionValue(sections, value);\n return (\n selectableBarTitleSections(sections).find(section => section.id === selectedId)?.label ?? ''\n );\n}\n\nexport function barTitleSectionTriggerAriaLabel(\n sectionsAriaLabel: string,\n selectedLabel: string\n): string {\n return `${sectionsAriaLabel}. Current section: ${selectedLabel}`;\n}\n\nexport function barTitleSectionMenuSections(\n sections: BarTitleSectionItem[],\n selectedId: string\n): MenuSection[] {\n const groups: MenuSection[] = [];\n let items: MenuItemData[] = [];\n const commit = () => {\n if (items.length > 0) groups.push({ items });\n items = [];\n };\n\n for (const item of sections) {\n if (isBarTitleDivider(item)) {\n commit();\n } else {\n items.push({\n label: item.label,\n value: item.id,\n isSelected: item.id === selectedId,\n isInactive: item.isInactive,\n });\n }\n }\n commit();\n return groups;\n}\n\nexport function barTitleSectionsToTabs(sections: BarTitleSectionItem[]): TabItem[] {\n return sections.map(item =>\n isBarTitleDivider(item)\n ? { type: 'divider' }\n : {\n id: item.id,\n label: item.label,\n isInactive: item.isInactive,\n }\n );\n}\n\nexport function barTitleSectionsDigest(sections: BarTitleSectionItem[] | undefined): string {\n return (sections ?? [])\n .map(item =>\n isBarTitleDivider(item) ? '|' : `${item.id}\\0${item.label}\\0${item.isInactive ? '1' : '0'}`\n )\n .join('\\n');\n}\n"],"mappings":"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","ignoreList":[]}
|
|
@@ -1,2 +0,0 @@
|
|
|
1
|
-
import{p as t,H as i,c as s,h as e,a as n,t as o}from"./index.js";import{d as r}from"./p-DtLQIMsa.js";import{d}from"./p-xHGqrz_p.js";import{d as a}from"./p-Cea7rROU.js";import{d as c}from"./p-0XTyQNRG.js";import{d as l}from"./p-CLGtPE0K.js";import{d as u}from"./p-BINSI_KF.js";import{D as p,s as h}from"./p-DOUk4KoT.js";import{s as f,r as v}from"./p-C0qN3PSb.js";import{C as g}from"./p-CuwopElg.js";import{c as m}from"./p-DuFm-ieS.js";const b=()=>`@media (forced-colors: active){.sc-ds-input:root,.sc-ds-input-h,.ds-forced-colors-scope.sc-ds-input{--ds-forced-color-surface:Canvas;--ds-forced-color-content:CanvasText;--ds-forced-color-control-boundary:ButtonText;--ds-forced-color-selected:Highlight;--ds-forced-color-on-selected:HighlightText;--ds-forced-color-disabled:GrayText}}.ds-interaction-fill.sc-ds-input-h,.ds-interaction-fill.sc-ds-input{position:var(--ds-interaction-position, relative);z-index:var(--ds-interaction-z-index, 0);cursor:default;--ds-interaction-hover:var(--color-interaction-hover);--ds-interaction-pressed:var(--color-interaction-pressed);--ds-interaction-active:var(--color-interaction-active-brand);--ds-interaction-border-width:0px;--ds-interaction-border-color:transparent;--ds-interaction-divider-width:0px;--ds-interaction-divider-color:transparent;--ds-interaction-divider-inline-start-width:0px;--ds-interaction-divider-inline-start-color:transparent;--ds-interaction-divider-inline-end-width:0px;--ds-interaction-divider-inline-end-color:transparent}.ds-interaction-fill.sc-ds-input-h::before,.ds-interaction-fill.sc-ds-input::before,.ds-interaction-fill.sc-ds-input-h::after,.ds-interaction-fill.sc-ds-input::after{content:'';position:absolute;inset:0;border-radius:inherit;background:transparent;pointer-events:none;cursor:inherit;transition:none}.ds-interaction-fill.sc-ds-input-h::before,.ds-interaction-fill.sc-ds-input::before{z-index:1}.ds-interaction-fill.sc-ds-input-h::after,.ds-interaction-fill.sc-ds-input::after{z-index:3;box-shadow:inset 0 calc(-1 * var(--ds-interaction-divider-width)) 0 var(--ds-interaction-divider-color), inset var(--ds-interaction-divider-inline-start-width) 0 0 var(--ds-interaction-divider-inline-start-color), inset calc(-1 * var(--ds-interaction-divider-inline-end-width)) 0 0 var(--ds-interaction-divider-inline-end-color), inset 0 0 0 var(--ds-interaction-border-width) var(--ds-interaction-border-color)}.ds-interaction-fill--bordered.sc-ds-input-h,.ds-interaction-fill--bordered.sc-ds-input{--ds-interaction-border-width:var(--dimension-stroke-width-012);--ds-interaction-border-color:var(--color-border-secondary)}.ds-interaction-fill--selected.sc-ds-input-h::before,.ds-interaction-fill--selected.sc-ds-input::before{background:var(--ds-interaction-active)}.ds-interaction-fill--selected.sc-ds-input-h,.ds-interaction-fill--selected.sc-ds-input{--ds-interaction-dot-ring:var(--ds-interaction-active)}@media (hover: hover) and (pointer: fine){.ds-interaction-fill.sc-ds-input-h:hover:not(:disabled)::after,.ds-interaction-fill.sc-ds-input:hover:not(:disabled)::after{background:var(--ds-interaction-hover)}}.ds-interaction-fill.sc-ds-input-h:active:not(:disabled)::after,.ds-interaction-fill.sc-ds-input:active:not(:disabled)::after{background:var(--ds-interaction-pressed)}.ds-interaction-fill--grouped.sc-ds-input-h::after,.ds-interaction-fill--grouped.sc-ds-input::after,.ds-interaction-fill--grouped.sc-ds-input-h:active:not(:disabled)::after,.ds-interaction-fill--grouped.sc-ds-input:active:not(:disabled)::after{background:var(--ds-interaction-group-fill, transparent)}@media (hover: hover) and (pointer: fine){.ds-interaction-fill--grouped.sc-ds-input-h:hover:not(:disabled)::after,.ds-interaction-fill--grouped.sc-ds-input:hover:not(:disabled)::after{background:var(--ds-interaction-group-fill, transparent)}}.ds-interaction-fill--grouped.sc-ds-input-h,.ds-interaction-fill--grouped.sc-ds-input{--ds-interaction-divider-width:var(--ds-interaction-group-divider-width, 0px);--ds-interaction-divider-color:var(--ds-interaction-group-divider-color, transparent);--ds-interaction-divider-inline-start-width:var( --ds-interaction-group-divider-inline-start-width, 0px );--ds-interaction-divider-inline-start-color:var( --ds-interaction-group-divider-inline-start-color, transparent );--ds-interaction-divider-inline-end-width:var( --ds-interaction-group-divider-inline-end-width, 0px );--ds-interaction-divider-inline-end-color:var( --ds-interaction-group-divider-inline-end-color, transparent )}.ds-interaction-fill.sc-ds-input-h>.ds-interaction-fill__content.sc-ds-input,.ds-interaction-fill.sc-ds-input>.ds-interaction-fill__content.sc-ds-input,.ds-interaction-fill__content.sc-ds-input{position:relative;z-index:2;cursor:inherit}.ds-interaction-fill--on-faint.sc-ds-input-h,.ds-interaction-fill--on-faint.sc-ds-input{--ds-interaction-active:var(--color-interaction-active)}.ds-interaction-fill--on-medium.sc-ds-input-h,.ds-interaction-fill--on-medium.sc-ds-input{--ds-interaction-hover:var(--color-interaction-on-medium-background-hover);--ds-interaction-pressed:var(--color-interaction-on-medium-background-pressed);--ds-interaction-active:var(--color-interaction-on-medium-background-active);--ds-focus-ring-color:var(--color-interaction-on-medium-background-focus)}.ds-interaction-fill--on-bold.sc-ds-input-h,.ds-interaction-fill--on-bold.sc-ds-input{--ds-interaction-hover:var(--color-interaction-on-bold-background-hover);--ds-interaction-pressed:var(--color-interaction-on-bold-background-pressed);--ds-interaction-active:var(--color-interaction-on-bold-background-active);--ds-focus-ring-color:var(--color-interaction-on-bold-background-focus)}.ds-interaction-fill--on-strong.sc-ds-input-h,.ds-interaction-fill--on-strong.sc-ds-input{--ds-interaction-hover:var(--color-interaction-on-strong-background-hover);--ds-interaction-pressed:var(--color-interaction-on-strong-background-pressed);--ds-interaction-active:var(--color-interaction-on-strong-background-active);--ds-focus-ring-color:var(--color-interaction-on-strong-background-focus)}.ds-interaction-fill--on-translucent.sc-ds-input-h,.ds-interaction-fill--on-translucent.sc-ds-input{--ds-interaction-hover:var(--color-translucent-interaction-hover);--ds-interaction-pressed:var(--color-translucent-interaction-pressed);--ds-interaction-active:var(--color-translucent-interaction-active-brand);--ds-focus-ring-color:var(--color-translucent-interaction-focus)}.ds-interaction-fill--on-inverted.sc-ds-input-h,.ds-interaction-fill--on-inverted.sc-ds-input{--ds-interaction-hover:var(--color-inverted-interaction-hover);--ds-interaction-pressed:var(--color-inverted-interaction-pressed);--ds-interaction-active:var(--color-inverted-interaction-active-brand);--ds-focus-ring-color:var(--color-inverted-interaction-focus)}.ds-interaction-fill--on-media.sc-ds-input-h,.ds-interaction-fill--on-media.sc-ds-input{--ds-interaction-hover:var(--color-media-interaction-hover);--ds-interaction-pressed:var(--color-media-interaction-pressed);--ds-interaction-active:var(--color-media-interaction-active);--ds-focus-ring-color:var(--color-media-interaction-focus)}.ds-interaction-fill--on-always-dark.sc-ds-input-h,.ds-interaction-fill--on-always-dark.sc-ds-input{--ds-interaction-hover:var(--color-always-dark-interaction-hover);--ds-interaction-pressed:var(--color-always-dark-interaction-pressed);--ds-interaction-active:var(--color-always-dark-interaction-active-brand);--ds-focus-ring-color:var(--color-always-dark-interaction-focus)}.ds-interaction-fill--on-navigation.sc-ds-input-h,.ds-interaction-fill--on-navigation.sc-ds-input{--ds-interaction-hover:var(--color-navigation-interaction-hover);--ds-interaction-pressed:var(--color-navigation-interaction-pressed);--ds-interaction-active:var(--color-navigation-interaction-active);--ds-focus-ring-color:var(--color-navigation-interaction-focus)}.ds-interaction-fill.ds-interaction-fill--surface-open.sc-ds-input-h:not(:disabled)::after,.ds-interaction-fill.ds-interaction-fill--surface-open.sc-ds-input:not(:disabled)::after{background:var(--ds-interaction-pressed)}@media (forced-colors: active){.ds-interaction-fill.sc-ds-input-h::after,.ds-interaction-fill.sc-ds-input::after{box-shadow:none;outline:var(--ds-interaction-border-width) solid var(--ds-forced-color-control-boundary);outline-offset:calc(-1 * var(--ds-interaction-border-width))}.ds-interaction-fill--surface-open.sc-ds-input-h:not(:disabled):not(:focus-visible):not(:focus-within):not(.ds-focus-ring--visible)::after,.ds-interaction-fill--surface-open.sc-ds-input:not(:disabled):not(:focus-visible):not(:focus-within):not(.ds-focus-ring--visible)::after{outline:var(--dimension-stroke-width-025) dashed var(--ds-forced-color-control-boundary);outline-offset:calc(-1 * var(--dimension-stroke-width-025))}.ds-interaction-fill--selected.sc-ds-input-h::before,.ds-interaction-fill--selected.sc-ds-input::before{background:transparent;outline:var(--dimension-stroke-width-025) solid var(--ds-forced-color-selected);outline-offset:calc(-1 * var(--dimension-stroke-width-025))}}@media (forced-colors: active) and (hover: hover) and (pointer: fine){.ds-interaction-fill.sc-ds-input-h:hover:not(:disabled):not(:focus-visible):not(:focus-within):not(.ds-focus-ring--visible)::after,.ds-interaction-fill.sc-ds-input:hover:not(:disabled):not(:focus-visible):not(:focus-within):not(.ds-focus-ring--visible)::after{outline-color:var(--ds-forced-color-selected);outline-width:var(--dimension-stroke-width-012)}}@media (forced-colors: active){.sc-ds-input:root,.sc-ds-input-h,.ds-forced-colors-scope.sc-ds-input{--ds-forced-color-surface:Canvas;--ds-forced-color-content:CanvasText;--ds-forced-color-control-boundary:ButtonText;--ds-forced-color-selected:Highlight;--ds-forced-color-on-selected:HighlightText;--ds-forced-color-disabled:GrayText}}.sc-ds-input-h{--ds-focus-ring-width:var(--dimension-stroke-width-025, 2px);--ds-focus-ring-offset:var(--dimension-space-025, 2px);--ds-focus-ring-color:var(--color-interaction-focus)}.ds-focus-ring.sc-ds-input-h,.ds-focus-ring.sc-ds-input,.ds-focus-ring-inset.sc-ds-input-h,.ds-focus-ring-inset.sc-ds-input{outline:none;-webkit-tap-highlight-color:transparent;touch-action:manipulation}.ds-focus-ring.sc-ds-input-h:focus-visible,.ds-focus-ring.sc-ds-input:focus-visible{outline:var(--ds-focus-ring-width) solid var(--ds-focus-ring-color);outline-offset:var(--ds-focus-ring-offset)}.ds-focus-ring.ds-focus-ring--visible.sc-ds-input-h,.ds-focus-ring.ds-focus-ring--visible.sc-ds-input{outline:var(--ds-focus-ring-width) solid var(--ds-focus-ring-color);outline-offset:var(--ds-focus-ring-offset)}.ds-focus-ring-inset.sc-ds-input-h:focus-visible,.ds-focus-ring-inset.sc-ds-input:focus-visible{outline:none}.ds-focus-ring-inset.sc-ds-input-h:focus-visible::after,.ds-focus-ring-inset.sc-ds-input:focus-visible::after{outline:var(--ds-focus-ring-width) solid var(--ds-focus-ring-color);outline-offset:calc(-1 * var(--ds-focus-ring-width))}.ds-focus-ring-inset.ds-focus-ring--visible.sc-ds-input-h,.ds-focus-ring-inset.ds-focus-ring--visible.sc-ds-input{outline:none}.ds-focus-ring-inset.ds-focus-ring--visible.sc-ds-input-h::after,.ds-focus-ring-inset.ds-focus-ring--visible.sc-ds-input::after{outline:var(--ds-focus-ring-width) solid var(--ds-focus-ring-color);outline-offset:calc(-1 * var(--ds-focus-ring-width))}@media (forced-colors: active){.sc-ds-input-h{--ds-focus-ring-color:var(--ds-forced-color-selected)}}@media (forced-colors: active){.sc-ds-input:root,.sc-ds-input-h,.ds-forced-colors-scope.sc-ds-input{--ds-forced-color-surface:Canvas;--ds-forced-color-content:CanvasText;--ds-forced-color-control-boundary:ButtonText;--ds-forced-color-selected:Highlight;--ds-forced-color-on-selected:HighlightText;--ds-forced-color-disabled:GrayText}}.ds-control-inactive.sc-ds-input-h,.ds-control-inactive.sc-ds-input{opacity:var(--effect-opacity-medium);pointer-events:none;cursor:not-allowed}@media (forced-colors: active){.ds-control-inactive.sc-ds-input-h,.ds-control-inactive.sc-ds-input{color:var(--ds-forced-color-disabled);opacity:1}}.sc-ds-input-h,.sc-ds-input:where(.ds-table),.sc-ds-input:where(.tooltip-popup),.sc-ds-input:where(.ds-radius){--ds-radius-control:var(--dimension-radius-025);--ds-radius-card:var(--dimension-radius-050);--ds-radius-modal:var(--dimension-radius-050);--ds-radius-menu:var(--dimension-radius-075);--ds-radius-tooltip-control:var(--dimension-radius-025);--ds-radius-tooltip-menu:var(--dimension-radius-075);--ds-radius-table:var(--dimension-radius-050)}.ds-control--lg.sc-ds-input,.ds-control--lg.sc-ds-input-h,.ds-control--md.sc-ds-input-h,.ds-control--md.sc-ds-input,.ds-control--sm.sc-ds-input-h,.ds-control--sm.sc-ds-input,.ds-control--xs.sc-ds-input-h,.ds-control--xs.sc-ds-input{--ds-control-radius:var(--ds-radius-control)}.ds-control--lg.sc-ds-input-h,.ds-control--lg.sc-ds-input{--ds-control-height:var(--dimension-size-500);--ds-control-icon:var(--dimension-iconography-lg);--ds-control-padding-inline:var(--dimension-space-100);--ds-control-label-inset:var(--dimension-space-050);--ds-control-gap:var(--dimension-space-050)}.ds-control--md.sc-ds-input-h,.ds-control--md.sc-ds-input{--ds-control-height:var(--dimension-size-400);--ds-control-icon:var(--dimension-iconography-md);--ds-control-padding-inline:var(--dimension-space-075);--ds-control-label-inset:var(--dimension-space-025);--ds-control-gap:var(--dimension-space-050)}.ds-control--sm.sc-ds-input-h,.ds-control--sm.sc-ds-input{--ds-control-height:var(--dimension-size-300);--ds-control-icon:var(--dimension-iconography-sm);--ds-control-padding-inline:var(--dimension-space-050);--ds-control-label-inset:var(--dimension-space-025);--ds-control-gap:var(--dimension-space-025)}.ds-control--xs.sc-ds-input-h,.ds-control--xs.sc-ds-input{--ds-control-height:var(--dimension-size-200);--ds-control-icon:var(--dimension-iconography-xs);--ds-control-padding-inline:var(--dimension-space-025);--ds-control-label-inset:var(--dimension-space-025);--ds-control-gap:0}.ds-control-frame.sc-ds-input{display:inline-flex;align-items:center;box-sizing:border-box;height:var(--ds-control-height, var(--dimension-size-400));padding-inline:var(--ds-control-padding-inline, var(--dimension-space-075));gap:var(--ds-control-gap, var(--dimension-space-050));border-radius:var(--ds-control-radius, var(--dimension-radius-025))}.ds-control-section-heading.sc-ds-input{display:flex;align-items:center;box-sizing:border-box;height:var(--ds-control-height, var(--dimension-size-400));padding-inline:calc( var(--ds-control-padding-inline, var(--dimension-space-075)) + var(--ds-control-label-inset, var(--dimension-space-025)) )}.ds-control-icon-box.sc-ds-input{display:inline-flex;align-items:center;justify-content:center;flex-shrink:0;width:var(--ds-control-icon, var(--dimension-iconography-md));height:var(--ds-control-icon, var(--dimension-iconography-md))}.ds-control-label-box.sc-ds-input{min-width:0;padding-inline:var(--ds-control-label-inset, var(--dimension-space-025))}.ds-control-label-dot.sc-ds-input{position:relative;padding-inline-end:calc( var(--ds-control-label-inset, var(--dimension-space-025)) + var(--ds-control-gap, var(--dimension-space-050)) )}.ds-control-label-dot__badge.sc-ds-input{position:absolute;inset-block-start:0;inset-inline-end:0;pointer-events:none}.ds-control-width--hug.sc-ds-input-h,.ds-control-width--hug.sc-ds-input{width:fit-content;max-width:100%;flex:0 0 auto}.ds-control-width--fill.sc-ds-input-h,.ds-control-width--fill.sc-ds-input{width:100%;min-width:0;flex:1 1 auto;align-self:stretch}.ds-field-stack.sc-ds-input-h,.ds-field-stack.sc-ds-input{display:flex;flex-direction:column;gap:var(--dimension-space-050)}.ds-text--display-medium.sc-ds-input-h,.ds-text--display-medium.sc-ds-input{font-size:var(--typography-fontsize-3xl);line-height:var(--typography-lineheight-3xl)}.ds-text--display-small.sc-ds-input-h,.ds-text--display-small.sc-ds-input{font-size:var(--typography-fontsize-2xl);line-height:var(--typography-lineheight-2xl)}.ds-text--title-large.sc-ds-input-h,.ds-text--title-large.sc-ds-input{font-size:var(--typography-fontsize-xl);line-height:var(--typography-lineheight-xl)}.ds-text--title-medium.sc-ds-input-h,.ds-text--title-medium.sc-ds-input{font-size:var(--typography-fontsize-lg);line-height:var(--typography-lineheight-lg)}.ds-text--title-small.sc-ds-input-h,.ds-text--title-small.sc-ds-input{font-size:var(--typography-fontsize-md);line-height:var(--typography-lineheight-md)}.ds-text--body-large.sc-ds-input-h,.ds-text--body-large.sc-ds-input{font-size:var(--typography-fontsize-lg);line-height:var(--typography-lineheight-lg)}.ds-text--body-medium.sc-ds-input-h,.ds-text--body-medium.sc-ds-input{font-size:var(--typography-fontsize-md);line-height:var(--typography-lineheight-md)}.ds-text--body-small.sc-ds-input-h,.ds-text--body-small.sc-ds-input{font-size:var(--typography-fontsize-sm);line-height:var(--typography-lineheight-sm)}.ds-text--caption.sc-ds-input-h,.ds-text--caption.sc-ds-input{font-size:var(--typography-fontsize-xs);line-height:var(--typography-lineheight-xs);text-transform:uppercase}.ds-text--display-medium.ds-text--emphasis.sc-ds-input-h,.ds-text--display-small.ds-text--emphasis.sc-ds-input-h,.ds-text--display-medium.ds-text--emphasis.sc-ds-input,.ds-text--display-small.ds-text--emphasis.sc-ds-input{font-weight:var(--typography-weight-bold);letter-spacing:var(--typography-letterspacing-negative-double)}.ds-text--display-medium.ds-text--regular.sc-ds-input-h,.ds-text--display-small.ds-text--regular.sc-ds-input-h,.ds-text--display-medium.ds-text--regular.sc-ds-input,.ds-text--display-small.ds-text--regular.sc-ds-input{font-weight:var(--typography-weight-semibold);letter-spacing:var(--typography-letterspacing-negative)}.ds-text--title-large.ds-text--emphasis.sc-ds-input-h,.ds-text--title-large.ds-text--emphasis.sc-ds-input{font-weight:var(--typography-weight-semibold);letter-spacing:var(--typography-letterspacing-negative-double)}.ds-text--title-large.ds-text--regular.sc-ds-input-h,.ds-text--title-large.ds-text--regular.sc-ds-input{font-weight:var(--typography-weight-medium);letter-spacing:var(--typography-letterspacing-negative)}.ds-text--title-medium.ds-text--emphasis.sc-ds-input-h,.ds-text--title-small.ds-text--emphasis.sc-ds-input-h,.ds-text--title-medium.ds-text--emphasis.sc-ds-input,.ds-text--title-small.ds-text--emphasis.sc-ds-input{font-weight:var(--typography-weight-semibold);letter-spacing:var(--typography-letterspacing-negative)}.ds-text--title-medium.ds-text--regular.sc-ds-input-h,.ds-text--title-small.ds-text--regular.sc-ds-input-h,.ds-text--title-medium.ds-text--regular.sc-ds-input,.ds-text--title-small.ds-text--regular.sc-ds-input{font-weight:var(--typography-weight-medium);letter-spacing:var(--typography-letterspacing-negative-half)}.ds-text--body-large.ds-text--emphasis.sc-ds-input-h,.ds-text--body-medium.ds-text--emphasis.sc-ds-input-h,.ds-text--body-large.ds-text--emphasis.sc-ds-input,.ds-text--body-medium.ds-text--emphasis.sc-ds-input{font-weight:var(--typography-weight-medium);letter-spacing:var(--typography-letterspacing-negative)}.ds-text--body-large.ds-text--regular.sc-ds-input-h,.ds-text--body-medium.ds-text--regular.sc-ds-input-h,.ds-text--body-large.ds-text--regular.sc-ds-input,.ds-text--body-medium.ds-text--regular.sc-ds-input{font-weight:var(--typography-weight-regular);letter-spacing:var(--typography-letterspacing-negative-half)}.ds-text--body-small.ds-text--emphasis.sc-ds-input-h,.ds-text--body-small.ds-text--emphasis.sc-ds-input{font-weight:var(--typography-weight-medium);letter-spacing:var(--typography-letterspacing-negative-half)}.ds-text--body-small.ds-text--regular.sc-ds-input-h,.ds-text--body-small.ds-text--regular.sc-ds-input{font-weight:var(--typography-weight-regular);letter-spacing:var(--typography-letterspacing-none)}.ds-text--caption.ds-text--emphasis.sc-ds-input-h,.ds-text--caption.ds-text--emphasis.sc-ds-input{font-weight:var(--typography-weight-semibold);letter-spacing:var(--typography-letterspacing-positive)}.ds-text--caption.ds-text--regular.sc-ds-input-h,.ds-text--caption.ds-text--regular.sc-ds-input{font-weight:var(--typography-weight-medium);letter-spacing:var(--typography-letterspacing-positive)}@media (forced-colors: active){.sc-ds-input:root,.sc-ds-input-h,.ds-forced-colors-scope.sc-ds-input{--ds-forced-color-surface:Canvas;--ds-forced-color-content:CanvasText;--ds-forced-color-control-boundary:ButtonText;--ds-forced-color-selected:Highlight;--ds-forced-color-on-selected:HighlightText;--ds-forced-color-disabled:GrayText}}.input-host.sc-ds-input-h{display:inline-flex;--ds-input-fg:var(--color-foreground-primary);--ds-input-placeholder:var(--color-foreground-secondary);--ds-input-placeholder-active:var(--color-foreground-quaternary);--ds-input-adornment-fg:var(--color-foreground-secondary);--ds-input-border:var(--color-border-secondary);--ds-input-stepper-fg:var(--color-foreground-secondary)}.ds-control-width--fill.sc-ds-input-h,.ds-control-width--fill.sc-ds-input-h .input-control.sc-ds-input{width:100%}.input-control.sc-ds-input{overflow:hidden;background:transparent;border:none;border-radius:var(--ds-control-radius, var(--dimension-radius-025));color:var(--ds-input-fg)}.input-control--bordered.sc-ds-input{--ds-interaction-border-width:var(--dimension-stroke-width-012);--ds-interaction-border-color:var(--ds-input-border)}.input-control--error.sc-ds-input{--ds-interaction-border-width:var(--dimension-stroke-width-018);--ds-interaction-border-color:var(--color-border-bold-negative)}.input-control--bordered.sc-ds-input:focus-within:not(.input-control--error){--ds-interaction-border-width:var(--dimension-stroke-width-018);--ds-interaction-border-color:var(--color-border-bold-brand)}.ds-control-inactive.sc-ds-input-h .input-control.sc-ds-input::after{background:transparent}.native-input.sc-ds-input{position:relative;z-index:2;flex:1 1 auto;min-width:0;height:100%;background:transparent;border:none;border-radius:inherit;outline:none;color:var(--ds-input-fg);font-family:inherit;text-overflow:ellipsis;-webkit-appearance:none;appearance:none}.native-input--align-start.sc-ds-input{text-align:start}.native-input--align-end.sc-ds-input{text-align:end}.native-input[type='number'].sc-ds-input{-moz-appearance:textfield}.native-input[type='number'].sc-ds-input::-webkit-inner-spin-button,.native-input[type='number'].sc-ds-input::-webkit-outer-spin-button{margin:0;-webkit-appearance:none}.input-control--number.input-control--align-start.sc-ds-input{padding-inline-end:var(--dimension-space-025)}.input-control--number.input-control--align-end.sc-ds-input{padding-inline-start:var(--dimension-space-025)}.input-control__number-stepper.sc-ds-input{position:relative;z-index:2;display:grid;grid-template-rows:repeat(2, minmax(0, 1fr));flex:0 0 var(--ds-control-icon);width:var(--ds-control-icon);height:calc(var(--ds-control-height) - var(--dimension-space-050));overflow:hidden;border-radius:var(--ds-control-radius, var(--dimension-radius-025));color:var(--ds-input-stepper-fg)}.input-control__number-step.sc-ds-input{all:unset;position:relative;z-index:0;display:flex;align-items:center;justify-content:center;box-sizing:border-box;min-width:0;min-height:0;overflow:hidden;color:inherit;cursor:default}.input-control__number-step--increment.sc-ds-input{border-radius:var(--ds-control-radius, var(--dimension-radius-025)) var(--ds-control-radius, var(--dimension-radius-025)) 0 0}.input-control__number-step--decrement.sc-ds-input{border-radius:0 0 var(--ds-control-radius, var(--dimension-radius-025)) var(--ds-control-radius, var(--dimension-radius-025))}.input-control__number-step.sc-ds-input:disabled{color:var(--color-foreground-quaternary)}.input-control__number-step-icon.sc-ds-input{flex-shrink:0}.native-input.sc-ds-input:disabled{cursor:not-allowed}.native-input.sc-ds-input:read-only:not(:disabled){cursor:default}.native-input.sc-ds-input::placeholder{color:var(--ds-input-placeholder)}.native-input.sc-ds-input:focus::placeholder{color:var(--ds-input-placeholder-active)}.native-input[type='search'].sc-ds-input::-webkit-search-cancel-button,.native-input[type='search'].sc-ds-input::-webkit-search-decoration{display:none}.input-control__prefix.sc-ds-input,.input-control__suffix.sc-ds-input{position:relative;z-index:2;color:var(--ds-input-adornment-fg)}.input-control__suffix--empty.sc-ds-input{display:none}.input-control.sc-ds-input>.input-control__clear.sc-ds-input{position:relative;z-index:2;flex-shrink:0;align-self:center}.input-control.ds-control--lg.sc-ds-input:has(.input-control__clear),.input-control.ds-control--md.sc-ds-input:has(.input-control__clear),.input-control.ds-control--sm.sc-ds-input:has(.input-control__clear){padding-right:var(--dimension-space-050)}.input-control.ds-control--xs.sc-ds-input:has(.input-control__clear){padding-right:0}.error-text.sc-ds-input{width:100%}@media (forced-colors: active){.input-control__number-step.sc-ds-input:disabled{color:var(--ds-forced-color-disabled)}.input-control--bordered.sc-ds-input:focus-within:not(.input-control--error)::after{outline-color:var(--ds-forced-color-selected)}.input-control--error.sc-ds-input::after{outline-style:dashed}}`;const x={lg:"lg",md:"md",sm:"sm",xs:"xs"};const y={lg:"md",md:"sm",sm:"xs",xs:"xs"};let w=0;const k=t(class t extends i{constructor(t){super();if(t!==false){this.__registerHost()}this.dsChange=s(this,"dsChange",7);this.dsClear=s(this,"dsClear",7);this.internals=this.attachInternals();this.generatedId=`ds-input-${++w}`;this.errorId=`${this.generatedId}-error`;this.value="";this.disabled=false;this.readOnly=false;this.required=false;this.requiredMessage=p;this.clearLabel="Clear";this.type="text";this.textAlign="start";this.inputMode="";this.enterKeyHint="";this.size="md";this.width="fill";this.hasBorder=true;this.hasInteractionFill=true;this.isInactive=false;this.autoFocus=false;this.error=false;this.ariaLabel=null;this.initialValue="";this.formDisabled=false;this.hasSuffix=false;this.focused=false;this.touched=false;this.handleInput=t=>{this.value=t.target.value;this.dsChange.emit(this.value)};this.handleFocus=()=>{this.focused=true};this.handleBlur=()=>{this.focused=false;this.touched=true};this.handleClear=()=>{this.value="";this.dsChange.emit("");this.dsClear.emit();this.inputEl?.focus()};this.handleNumericStep=t=>{const i=this.inputEl;if(!i||i.disabled||i.readOnly||this.numericStepDisabled(t))return;const s=i.value;if(t>0)i.stepUp();else i.stepDown();i.focus({preventScroll:true});if(i.value===s)return;this.value=i.value;this.dsChange.emit(this.value)}}componentWillLoad(){this.initialValue=this.value;this.hasSuffix=Boolean(this.el.querySelector('[slot="suffix"]'));this.syncFormValue()}componentDidRender(){const t=Boolean(this.el.querySelector('[slot="suffix"]'));if(t!==this.hasSuffix)this.hasSuffix=t}syncFormValue(){const t=this.isInactive||this.disabled||this.formDisabled;f(this.internals,this.value,{inactive:t});const i=this.required&&!t&&this.value.length===0;h(this.internals,i,this.requiredMessage)}formDisabledCallback(t){this.formDisabled=t;this.syncFormValue()}formResetCallback(){this.value=this.initialValue}formStateRestoreCallback(t){this.value=v(t)}async setFocus(){this.inputEl?.focus()}numericStepDisabled(t){if(this.value.trim()==="")return false;const i=Number(this.value);if(!Number.isFinite(i))return false;if(t>0&&this.max!==undefined)return i>=this.max;if(t<0&&this.min!==undefined)return i<=this.min;return false}renderNumericStepper(t){const i=t||this.readOnly||this.numericStepDisabled(1);const s=t||this.readOnly||this.numericStepDisabled(-1);return e("span",{class:"input-control__number-stepper"},e("button",{type:"button",class:"input-control__number-step input-control__number-step--increment ds-focus-ring-inset ds-interaction-fill",disabled:i,tabIndex:-1,"aria-hidden":"true",onClick:()=>this.handleNumericStep(1)},e("ds-icon",{class:"input-control__number-step-icon ds-interaction-fill__content",name:"ChevronUp",size:"xs",color:"inherit"})),e("button",{type:"button",class:"input-control__number-step input-control__number-step--decrement ds-focus-ring-inset ds-interaction-fill",disabled:s,tabIndex:-1,"aria-hidden":"true",onClick:()=>this.handleNumericStep(-1)},e("ds-icon",{class:"input-control__number-step-icon ds-interaction-fill__content",name:"ChevronDown",size:"xs",color:"inherit"})))}render(){const t=this.inputId??this.generatedId;const i=this.isInactive||this.disabled||this.formDisabled;const s=this.value.length>0;const o=this.value!==this.initialValue;const r=this.type==="search"&&s&&!i&&!this.readOnly;const d=this.error&&Boolean(this.errorMessage);const a=g[this.size];const c=x[this.size];const l=this.type==="number";const u=this.autoComplete??(this.type==="search"?"off":undefined);const p=[this.ariaDescribedby,d?this.errorId:undefined].filter(Boolean).join(" ")||undefined;return e(n,{key:"f1b8866c5ccb3d658532ac38797effcf2b19ef85",class:{"input-host":true,"ds-field-stack":true,"ds-control-inactive":i,[`ds-control--${this.size}`]:true,...m(this.width)},"data-disabled":i?"":undefined,"data-readonly":this.readOnly?"":undefined,"data-required":this.required?"":undefined,"data-invalid":this.error?"":undefined,"data-filled":s?"":undefined,"data-focused":this.focused?"":undefined,"data-dirty":o?"":undefined,"data-touched":this.touched?"":undefined},e("div",{key:"c3aa7aa46f30f8d4d7782ea490d291b83ac9c483",class:{"input-control":true,"input-control--number":l,"input-control--align-start":this.textAlign==="start","input-control--align-end":this.textAlign==="end","ds-control-frame":true,"input-control--bordered":this.hasBorder,"input-control--error":this.hasBorder&&this.error,"ds-interaction-fill":this.hasInteractionFill,[`ds-control--${this.size}`]:true}},l&&this.textAlign==="end"&&this.renderNumericStepper(i),this.icon&&e("span",{key:"32bffd7df9ed3cb78ae120b4e9855e24d2f3a268",class:"input-control__prefix ds-control-icon-box ds-interaction-fill__content","aria-hidden":"true"},e("ds-icon",{key:"90a5d175ff5071cc0eeb57cfe236b7d98f9d00b1",name:this.icon,size:c,color:"inherit"})),e("input",{key:"544505db606d2481b56783ae28febf424031bfd6",ref:t=>{this.inputEl=t},type:this.type,id:t,value:this.value,placeholder:this.placeholder,min:l?this.min:undefined,max:l?this.max:undefined,step:l?this.step:undefined,disabled:i,readOnly:this.readOnly,required:this.required,autoFocus:this.autoFocus,autoComplete:u,autoCapitalize:this.type==="search"?"none":undefined,autoCorrect:this.type==="search"?"off":undefined,spellcheck:this.type==="search"?false:undefined,inputMode:this.inputMode||undefined,enterKeyHint:this.enterKeyHint||undefined,class:`native-input native-input--align-${this.textAlign} ds-control-label-box ds-text--${a.replace("text-","")} ds-text--regular ds-interaction-fill__content`,"aria-label":this.ariaLabel,"aria-labelledby":this.ariaLabelledby,"aria-describedby":p,"aria-controls":this.ariaControls,"aria-activedescendant":this.ariaActiveDescendant,"aria-invalid":this.error?"true":undefined,onInput:this.handleInput,onFocus:this.handleFocus,onBlur:this.handleBlur}),e("span",{key:"6789d9d47c6549ede3ed193b6944cedcba022c56",class:{"input-control__suffix":true,"ds-control-icon-box":true,"input-control__suffix--empty":!this.hasSuffix}},e("slot",{key:"2c739d59488b91e004975a0931ab2c5949e3b836",name:"suffix"})),r&&e("ds-button-unfilled",{key:"613c4c109a3101d79a7671655d21fe59f19a9070",class:"input-control__clear",variant:"icon",size:y[this.size],icon:"CrossCircle",hasBorder:false,rounded:true,ariaLabel:this.clearLabel,onDsClick:this.handleClear}),l&&this.textAlign==="start"&&this.renderNumericStepper(i)),d&&e("ds-text",{key:"71ca969540865fcfac45d71491adfcb3d8f00c31",class:"error-text",as:"div",variant:"text-body-small",color:"negative",textId:this.errorId,role:"alert"},this.errorMessage))}static get formAssociated(){return true}get el(){return this}static get watchers(){return{value:[{syncFormValue:0}],disabled:[{syncFormValue:0}],isInactive:[{syncFormValue:0}],required:[{syncFormValue:0}]}}static get style(){return b()}},[326,"ds-input",{value:[1025],name:[513],form:[513],disabled:[516],readOnly:[516,"read-only"],required:[516],requiredMessage:[1,"required-message"],clearLabel:[1,"clear-label"],placeholder:[1],type:[1],min:[2],max:[2],step:[2],textAlign:[1,"text-align"],autoComplete:[1,"autocomplete"],inputMode:[1,"inputmode"],enterKeyHint:[1,"enterkeyhint"],size:[1],width:[1],hasBorder:[4,"has-border"],hasInteractionFill:[4,"has-interaction-fill"],icon:[1],isInactive:[4,"is-inactive"],autoFocus:[4,"auto-focus"],error:[4],errorMessage:[1,"error-message"],inputId:[1,"input-id"],ariaLabel:[1,"aria-label"],ariaLabelledby:[1,"aria-labelledby"],ariaDescribedby:[1,"aria-describedby"],ariaControls:[1,"aria-controls"],ariaActiveDescendant:[1,"aria-activedescendant"],formDisabled:[32],hasSuffix:[32],focused:[32],touched:[32],setFocus:[64]},undefined,{value:[{syncFormValue:0}],disabled:[{syncFormValue:0}],isInactive:[{syncFormValue:0}],required:[{syncFormValue:0}]}]);function _(){if(typeof customElements==="undefined"){return}const t=["ds-input","ds-badge","ds-button-unfilled","ds-icon","ds-loader","ds-text","ds-tooltip"];t.forEach((t=>{switch(t){case"ds-input":if(!customElements.get(o(t))){customElements.define(o(t),k)}break;case"ds-badge":if(!customElements.get(o(t))){r()}break;case"ds-button-unfilled":if(!customElements.get(o(t))){d()}break;case"ds-icon":if(!customElements.get(o(t))){a()}break;case"ds-loader":if(!customElements.get(o(t))){c()}break;case"ds-text":if(!customElements.get(o(t))){l()}break;case"ds-tooltip":if(!customElements.get(o(t))){u()}break}}))}_();export{k as I,_ as d};
|
|
2
|
-
//# sourceMappingURL=p-FPZbS19l.js.map
|