@xplortech/apollo-core 2.9.0 → 2.11.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/.typings/apollo-components.html-data.json +55 -14
- package/build/style.css +2338 -1902
- package/dist/apollo-core/apollo-core.css +26 -24
- package/dist/apollo-core/apollo-core.esm.js +1 -1
- package/dist/apollo-core/{p-6a15f1e0.entry.js → p-048fdde0.entry.js} +1 -1
- package/dist/apollo-core/{p-34438721.entry.js → p-0abc496e.entry.js} +1 -1
- package/dist/apollo-core/p-1442c052.entry.js +1 -0
- package/dist/apollo-core/{p-3bb14840.entry.js → p-1e498763.entry.js} +1 -1
- package/dist/apollo-core/p-26c3a508.entry.js +1 -0
- package/dist/apollo-core/{p-36ba29da.entry.js → p-3b8639b7.entry.js} +1 -1
- package/dist/apollo-core/p-4ce52107.entry.js +1 -0
- package/dist/apollo-core/p-6710fb29.entry.js +1 -0
- package/dist/apollo-core/p-7e622809.entry.js +1 -0
- package/dist/apollo-core/p-87068144.entry.js +1 -0
- package/dist/apollo-core/p-BUgtURvw.js +1 -0
- package/dist/apollo-core/p-CK3_k8jD.js +1 -0
- package/dist/apollo-core/p-CXkZUm1c.js +2 -0
- package/dist/apollo-core/p-a3b4820a.entry.js +1 -0
- package/dist/apollo-core/p-b2d6dd0e.entry.js +1 -0
- package/dist/apollo-core/{p-ca127ee8.entry.js → p-bd2249ef.entry.js} +1 -1
- package/dist/apollo-core/p-c96b7957.entry.js +1 -0
- package/dist/apollo-core/p-d6be63cd.entry.js +1 -0
- package/dist/apollo-core/{p-b61d7952.entry.js → p-ddf76cee.entry.js} +1 -1
- package/dist/apollo-core/p-f0554edd.entry.js +1 -0
- package/dist/cjs/apollo-core.cjs.js +3 -3
- package/dist/cjs/{index-BQ97-AWw.js → index-BaXVr8ux.js} +40 -9
- package/dist/cjs/lifecycle-Bf3QwiVa.js +70 -0
- package/dist/cjs/loader.cjs.js +2 -2
- package/dist/cjs/package.json +3 -0
- package/dist/cjs/v4-_2BfiRUa.js +52 -0
- package/dist/cjs/xpl-accordion.cjs.entry.js +3 -3
- package/dist/cjs/xpl-application-shell.cjs.entry.js +2 -2
- package/dist/cjs/xpl-avatar_54.cjs.entry.js +879 -306
- package/dist/cjs/xpl-button-row.cjs.entry.js +2 -2
- package/dist/cjs/xpl-calendar.cjs.entry.js +3 -3
- package/dist/cjs/xpl-dynamic-table-cell.cjs.entry.js +3 -3
- package/dist/cjs/xpl-dynamic-table-row.cjs.entry.js +3 -3
- package/dist/cjs/xpl-dynamic-table.cjs.entry.js +2 -2
- package/dist/cjs/xpl-grid-item.cjs.entry.js +2 -2
- package/dist/cjs/xpl-grid.cjs.entry.js +2 -2
- package/dist/cjs/xpl-large-card.cjs.entry.js +2 -2
- package/dist/cjs/xpl-main-nav.cjs.entry.js +2 -2
- package/dist/cjs/xpl-table-header-cell.cjs.entry.js +1 -1
- package/dist/cjs/xpl-table-header.cjs.entry.js +2 -2
- package/dist/cjs/xpl-toggle.cjs.entry.js +5 -5
- package/dist/cjs/xpl-toolbar.cjs.entry.js +3 -3
- package/dist/cjs/xpl-top-nav-menu.cjs.entry.js +97 -0
- package/dist/collection/collection-manifest.json +7 -6
- package/dist/collection/components/xpl-accordion/xpl-accordion.js +2 -2
- package/dist/collection/components/xpl-application-shell/xpl-application-shell.js +1 -1
- package/dist/collection/components/xpl-backdrop/xpl-backdrop.js +1 -1
- package/dist/collection/components/xpl-badge/xpl-badge.js +1 -1
- package/dist/collection/components/xpl-banner/banner.stories.js +5 -0
- package/dist/collection/components/xpl-banner/xpl-banner.js +2 -2
- package/dist/collection/components/xpl-breadcrumbs/xpl-breadcrumb-item/xpl-breadcrumb-item.js +1 -1
- package/dist/collection/components/xpl-breadcrumbs/xpl-breadcrumbs/xpl-breadcrumbs.js +1 -1
- package/dist/collection/components/xpl-button/button.stories.js +5 -0
- package/dist/collection/components/xpl-button/xpl-button.js +1 -1
- package/dist/collection/components/xpl-button-row/button-row.stories.js +1 -11
- package/dist/collection/components/xpl-button-row/xpl-button-row.js +1 -1
- package/dist/collection/components/xpl-calendar/xpl-calendar.js +1 -1
- package/dist/collection/components/xpl-checkbox/xpl-checkbox.js +4 -4
- package/dist/collection/components/xpl-choicelist/xpl-choicelist.js +1 -1
- package/dist/collection/components/xpl-content-area/xpl-content-area.js +1 -1
- package/dist/collection/components/xpl-dashboard/xpl-dashboard.js +1 -1
- package/dist/collection/components/xpl-data-card/xpl-data-card.js +2 -2
- package/dist/collection/components/xpl-divider/xpl-divider.js +1 -1
- package/dist/collection/components/xpl-dropdown/xpl-dropdown-group/xpl-dropdown-group.js +1 -1
- package/dist/collection/components/xpl-dropdown/xpl-dropdown-heading/xpl-dropdown-heading.js +1 -1
- package/dist/collection/components/xpl-dropdown/xpl-dropdown-option/xpl-dropdown-option.js +2 -2
- package/dist/collection/components/xpl-dropdown/xpl-dropdown.js +208 -31
- package/dist/collection/components/xpl-dynamic-table/xpl-dynamic-table.js +1 -1
- package/dist/collection/components/xpl-dynamic-table-cell/xpl-dynamic-table-cell.js +2 -2
- package/dist/collection/components/xpl-dynamic-table-row/xpl-dynamic-table-row.js +2 -2
- package/dist/collection/components/xpl-grid/xpl-grid.js +1 -1
- package/dist/collection/components/xpl-grid-item/xpl-grid-item.js +1 -1
- package/dist/collection/components/xpl-header-accordion/xpl-header-accordion.js +1 -1
- package/dist/collection/components/xpl-icon/xpl-icon.js +2 -2
- package/dist/collection/components/xpl-input/input.stories.js +1 -1
- package/dist/collection/components/xpl-input/xpl-input-color/xpl-input-color.js +8 -8
- package/dist/collection/components/xpl-input/xpl-input-date/xpl-input-date.js +3 -3
- package/dist/collection/components/xpl-input/xpl-input-file/xpl-input-file.js +4 -4
- package/dist/collection/components/xpl-input/xpl-input-phone/xpl-input-phone.js +25 -6
- package/dist/collection/components/xpl-input/xpl-input-search/xpl-input-search.js +1 -1
- package/dist/collection/components/xpl-input/xpl-input-time/xpl-input-time.js +2 -2
- package/dist/collection/components/xpl-input/xpl-input.js +3 -3
- package/dist/collection/components/xpl-large-card/xpl-large-card.js +1 -1
- package/dist/collection/components/xpl-list/xpl-list.js +2 -2
- package/dist/collection/components/xpl-main-nav/xpl-main-nav.js +1 -1
- package/dist/collection/components/xpl-modal/xpl-modal.js +4 -1
- package/dist/collection/components/xpl-nav-item/xpl-nav-item.js +2 -2
- package/dist/collection/components/xpl-pagination/xpl-pagination.js +26 -8
- package/dist/collection/components/xpl-panel/xpl-panel.js +2 -2
- package/dist/collection/components/xpl-popover/popover.stories.js +3 -7
- package/dist/collection/components/xpl-popover/xpl-popover.js +4 -4
- package/dist/collection/components/xpl-progress-bar/xpl-progress-bar.js +2 -2
- package/dist/collection/components/xpl-progress-indicator/xpl-progress-indicator.js +1 -1
- package/dist/collection/components/xpl-radio/radio.stories.js +19 -17
- package/dist/collection/components/xpl-radio/xpl-radio.js +3 -3
- package/dist/collection/components/xpl-secondary-nav/xpl-secondary-nav.js +1 -1
- package/dist/collection/components/xpl-select/xpl-select.js +16 -11
- package/dist/collection/components/xpl-side-nav/side-nav-constants.js +2 -0
- package/dist/collection/components/xpl-side-nav/side-nav.stories.js +301 -186
- package/dist/collection/components/xpl-side-nav/xpl-side-nav-item/xpl-side-nav-item.js +80 -14
- package/dist/collection/components/xpl-side-nav/xpl-side-nav.js +284 -3
- package/dist/collection/components/xpl-skeleton/xpl-skeleton.js +1 -1
- package/dist/collection/components/xpl-slideout/xpl-slideout.js +1 -1
- package/dist/collection/components/xpl-spotlight/xpl-spotlight.js +14 -4
- package/dist/collection/components/xpl-tab-panel/xpl-tab-panel.js +2 -2
- package/dist/collection/components/xpl-table/xpl-table.js +13 -22
- package/dist/collection/components/xpl-table-header/xpl-table-header.js +1 -1
- package/dist/collection/components/xpl-tabs/xpl-tabs.js +5 -5
- package/dist/collection/components/xpl-tag/xpl-tag.js +2 -2
- package/dist/collection/components/xpl-toast/xpl-toast.js +2 -2
- package/dist/collection/components/xpl-toggle/xpl-toggle.js +3 -3
- package/dist/collection/components/xpl-toolbar/xpl-toolbar.js +2 -2
- package/dist/collection/components/xpl-tooltip/tooltip-arrow.js +1 -1
- package/dist/collection/components/xpl-tooltip/tooltip.stories.js +6 -37
- package/dist/collection/components/xpl-tooltip/xpl-tooltip.js +1 -1
- package/dist/collection/components/xpl-top-nav/top-nav-constants.js +1 -0
- package/dist/collection/components/xpl-top-nav/top-nav.stories.js +131 -11
- package/dist/collection/components/xpl-top-nav/xpl-nav-header-menu/xpl-nav-header-menu.js +2 -2
- package/dist/collection/components/xpl-top-nav/xpl-top-nav-item/top-nav-item-constants.js +2 -0
- package/dist/collection/components/xpl-top-nav/xpl-top-nav-item/xpl-top-nav-item.js +305 -85
- package/dist/collection/components/xpl-top-nav/xpl-top-nav-menu/xpl-top-nav-menu.js +119 -0
- package/dist/collection/components/xpl-top-nav/xpl-top-nav.js +11 -5
- package/dist/collection/components/xpl-utility-bar/xpl-utility-bar.js +1 -1
- package/dist/collection/utils/lifecycle.js +18 -0
- package/dist/components/index.d.ts +143 -12
- package/dist/components/index.js +1 -1
- package/dist/components/p-2xGSxBGa.js +1 -0
- package/dist/components/p-B8RYNiz-.js +1 -0
- package/dist/components/p-BDWXBWGE.js +1 -0
- package/dist/components/p-BJqNuBZr.js +1 -0
- package/dist/components/p-BT_Lq3Vd.js +1 -0
- package/dist/components/p-BUgtURvw.js +1 -0
- package/dist/components/{xpl-input-search2.js → p-B_sq_SAX.js} +1 -1
- package/dist/components/p-Bsy-VVS5.js +1 -0
- package/dist/components/p-BxHFEnPN.js +1 -0
- package/dist/components/p-ByJRw26d.js +1 -0
- package/dist/components/p-C5_Yo0ZP.js +1 -0
- package/dist/components/p-C8rmEAx6.js +1 -0
- package/dist/components/p-CF_YTx16.js +1 -0
- package/dist/components/{floating-ui.dom.js → p-CFpsSZyr.js} +1 -1
- package/dist/components/p-CK3_k8jD.js +1 -0
- package/dist/components/p-CUYkG-PB.js +1 -0
- package/dist/components/p-CaW0fL0P.js +1 -0
- package/dist/components/p-CuisR8WP.js +1 -0
- package/dist/components/p-CzwViN3U.js +1 -0
- package/dist/components/p-D2SFagIb.js +1 -0
- package/dist/components/p-DKUNbsb0.js +1 -0
- package/dist/components/p-DcXL24UI.js +1 -0
- package/dist/components/p-Dp3H99Yc.js +1 -0
- package/dist/components/p-M900WO1C.js +1 -0
- package/dist/components/{xpl-tag2.js → p-ZTFt9sBy.js} +1 -1
- package/dist/components/p-gfb3l9Pr.js +1 -0
- package/dist/components/{xpl-input-file2.js → p-h1Gbk5lO.js} +1 -1
- package/dist/components/xpl-accordion.js +1 -1
- package/dist/components/xpl-application-shell.js +1 -1
- package/dist/components/xpl-avatar.js +1 -1
- package/dist/components/xpl-backdrop.js +1 -1
- package/dist/components/xpl-badge.js +1 -1
- package/dist/components/xpl-banner.js +1 -1
- package/dist/components/xpl-breadcrumb-item.js +1 -1
- package/dist/components/xpl-breadcrumbs.js +1 -1
- package/dist/components/xpl-button-row.js +1 -1
- package/dist/components/xpl-button.js +1 -1
- package/dist/components/xpl-calendar.js +1 -1
- package/dist/components/xpl-checkbox.js +1 -1
- package/dist/components/xpl-choicelist.js +1 -1
- package/dist/components/xpl-content-area.js +1 -1
- package/dist/components/xpl-dashboard.js +1 -1
- package/dist/components/xpl-data-card.js +1 -1
- package/dist/components/xpl-divider.js +1 -1
- package/dist/components/xpl-dropdown-group.js +1 -1
- package/dist/components/xpl-dropdown-heading.js +1 -1
- package/dist/components/xpl-dropdown-option.js +1 -1
- package/dist/components/xpl-dropdown.js +1 -1
- package/dist/components/xpl-dynamic-table-cell.js +1 -1
- package/dist/components/xpl-dynamic-table-row.js +1 -1
- package/dist/components/xpl-dynamic-table.js +1 -1
- package/dist/components/xpl-grid-item.js +1 -1
- package/dist/components/xpl-grid.js +1 -1
- package/dist/components/xpl-header-accordion.js +1 -1
- package/dist/components/xpl-icon.js +1 -1
- package/dist/components/xpl-input-color.js +1 -1
- package/dist/components/xpl-input-date.js +1 -1
- package/dist/components/xpl-input-file.js +1 -1
- package/dist/components/xpl-input-phone.js +1 -1
- package/dist/components/xpl-input-search.js +1 -1
- package/dist/components/xpl-input-time.js +1 -1
- package/dist/components/xpl-input.js +1 -1
- package/dist/components/xpl-large-card.js +1 -1
- package/dist/components/xpl-list-item.js +1 -1
- package/dist/components/xpl-list.js +1 -1
- package/dist/components/xpl-main-nav.js +1 -1
- package/dist/components/xpl-modal.js +1 -1
- package/dist/components/xpl-nav-header-menu.js +1 -1
- package/dist/components/xpl-nav-item.js +1 -1
- package/dist/components/xpl-pagination.js +1 -1
- package/dist/components/xpl-panel.js +1 -1
- package/dist/components/xpl-popover.js +1 -1
- package/dist/components/xpl-progress-bar.js +1 -1
- package/dist/components/xpl-progress-indicator.js +1 -1
- package/dist/components/xpl-radio.js +1 -1
- package/dist/components/xpl-secondary-nav.js +1 -1
- package/dist/components/xpl-select.js +1 -1
- package/dist/components/xpl-side-nav-item.js +1 -1
- package/dist/components/xpl-side-nav.js +1 -1
- package/dist/components/xpl-skeleton.js +1 -1
- package/dist/components/xpl-slideout.js +1 -1
- package/dist/components/xpl-spotlight.js +1 -1
- package/dist/components/xpl-tab-panel.js +1 -1
- package/dist/components/xpl-tab.js +1 -1
- package/dist/components/xpl-table-header-cell.js +1 -1
- package/dist/components/xpl-table-header.js +1 -1
- package/dist/components/xpl-table.js +1 -1
- package/dist/components/xpl-tabs.js +1 -1
- package/dist/components/xpl-tag.js +1 -1
- package/dist/components/xpl-toast.js +1 -1
- package/dist/components/xpl-toggle.js +1 -1
- package/dist/components/xpl-toolbar.js +1 -1
- package/dist/components/xpl-tooltip.js +1 -1
- package/dist/components/xpl-top-nav-item.js +1 -1
- package/dist/components/xpl-top-nav-menu.d.ts +11 -0
- package/dist/components/xpl-top-nav-menu.js +1 -0
- package/dist/components/xpl-top-nav.js +1 -1
- package/dist/components/xpl-utility-bar.js +1 -1
- package/dist/docs/xpl-backdrop/readme.md +2 -0
- package/dist/docs/xpl-badge/readme.md +34 -0
- package/dist/docs/xpl-button/readme.md +2 -0
- package/dist/docs/xpl-button-row/readme.md +13 -0
- package/dist/docs/xpl-checkbox/readme.md +23 -1
- package/dist/docs/xpl-divider/readme.md +22 -4
- package/dist/docs/xpl-icon/readme.md +2 -0
- package/dist/docs/xpl-input/readme.md +51 -0
- package/dist/docs/xpl-input/xpl-input-date/readme.md +7 -0
- package/dist/docs/xpl-input/xpl-input-phone/readme.md +21 -0
- package/dist/docs/xpl-popover/readme.md +24 -0
- package/dist/docs/xpl-radio/readme.md +21 -4
- package/dist/docs/xpl-side-nav/readme.md +153 -5
- package/dist/docs/xpl-side-nav/xpl-side-nav-item/readme.md +165 -32
- package/dist/docs/xpl-table/readme.md +2 -0
- package/dist/docs/xpl-tooltip/readme.md +29 -1
- package/dist/docs/xpl-top-nav/readme.md +3 -0
- package/dist/docs/xpl-top-nav/xpl-top-nav-item/readme.md +79 -20
- package/dist/docs/xpl-top-nav/xpl-top-nav-menu/readme.md +96 -0
- package/dist/esm/apollo-core.js +4 -4
- package/dist/esm/{index-C7bgJs6C.js → index-CXkZUm1c.js} +40 -9
- package/dist/esm/lifecycle-BUgtURvw.js +68 -0
- package/dist/esm/loader.js +3 -3
- package/dist/esm/v4-CK3_k8jD.js +50 -0
- package/dist/esm/xpl-accordion.entry.js +3 -3
- package/dist/esm/xpl-application-shell.entry.js +2 -2
- package/dist/esm/xpl-avatar_54.entry.js +878 -305
- package/dist/esm/xpl-button-row.entry.js +2 -2
- package/dist/esm/xpl-calendar.entry.js +3 -3
- package/dist/esm/xpl-dynamic-table-cell.entry.js +3 -3
- package/dist/esm/xpl-dynamic-table-row.entry.js +3 -3
- package/dist/esm/xpl-dynamic-table.entry.js +2 -2
- package/dist/esm/xpl-grid-item.entry.js +2 -2
- package/dist/esm/xpl-grid.entry.js +2 -2
- package/dist/esm/xpl-large-card.entry.js +2 -2
- package/dist/esm/xpl-main-nav.entry.js +2 -2
- package/dist/esm/xpl-table-header-cell.entry.js +1 -1
- package/dist/esm/xpl-table-header.entry.js +2 -2
- package/dist/esm/xpl-toggle.entry.js +5 -5
- package/dist/esm/xpl-toolbar.entry.js +3 -3
- package/dist/esm/xpl-top-nav-menu.entry.js +95 -0
- package/dist/types/components/xpl-banner/banner.stories.d.ts +2 -0
- package/dist/types/components/xpl-button/button.stories.d.ts +2 -0
- package/dist/types/components/xpl-dropdown/xpl-dropdown.d.ts +16 -0
- package/dist/types/components/xpl-input/xpl-input-phone/xpl-input-phone.d.ts +1 -0
- package/dist/types/components/xpl-pagination/xpl-pagination.d.ts +4 -0
- package/dist/types/components/xpl-radio/radio.stories.d.ts +11 -10
- package/dist/types/components/xpl-side-nav/side-nav-constants.d.ts +2 -0
- package/dist/types/components/xpl-side-nav/side-nav.stories.d.ts +53 -32
- package/dist/types/components/xpl-side-nav/xpl-side-nav-item/xpl-side-nav-item.d.ts +10 -0
- package/dist/types/components/xpl-side-nav/xpl-side-nav.d.ts +31 -0
- package/dist/types/components/xpl-spotlight/xpl-spotlight.d.ts +1 -0
- package/dist/types/components/xpl-top-nav/top-nav-constants.d.ts +1 -0
- package/dist/types/components/xpl-top-nav/top-nav.stories.d.ts +70 -1
- package/dist/types/components/xpl-top-nav/xpl-top-nav-item/top-nav-item-constants.d.ts +2 -0
- package/dist/types/components/xpl-top-nav/xpl-top-nav-item/xpl-top-nav-item.d.ts +23 -4
- package/dist/types/components/xpl-top-nav/xpl-top-nav-menu/xpl-top-nav-menu.d.ts +18 -0
- package/dist/types/components/xpl-top-nav/xpl-top-nav.d.ts +1 -0
- package/dist/types/components.d.ts +402 -39
- package/dist/types/stencil-public-runtime.d.ts +1 -0
- package/dist/types/utils/lifecycle.d.ts +3 -0
- package/package.json +53 -34
- package/dist/apollo-core/p-0bf50890.entry.js +0 -1
- package/dist/apollo-core/p-1947e7a8.entry.js +0 -1
- package/dist/apollo-core/p-27928cb0.entry.js +0 -1
- package/dist/apollo-core/p-35c2f72d.entry.js +0 -1
- package/dist/apollo-core/p-368c81f1.entry.js +0 -1
- package/dist/apollo-core/p-406b27a8.entry.js +0 -1
- package/dist/apollo-core/p-5d63b4ce.entry.js +0 -1
- package/dist/apollo-core/p-8d692d05.entry.js +0 -1
- package/dist/apollo-core/p-C7bgJs6C.js +0 -2
- package/dist/apollo-core/p-Cqlsd6nf.js +0 -1
- package/dist/apollo-core/p-cd56a3d5.entry.js +0 -1
- package/dist/apollo-core/p-dc205893.entry.js +0 -1
- package/dist/cjs/v4-D4KzFnn8.js +0 -67
- package/dist/components/index3.js +0 -1
- package/dist/components/v4.js +0 -1
- package/dist/components/xpl-avatar2.js +0 -1
- package/dist/components/xpl-backdrop2.js +0 -1
- package/dist/components/xpl-badge2.js +0 -1
- package/dist/components/xpl-button2.js +0 -1
- package/dist/components/xpl-checkbox2.js +0 -1
- package/dist/components/xpl-divider2.js +0 -1
- package/dist/components/xpl-dropdown-group2.js +0 -1
- package/dist/components/xpl-dropdown-heading2.js +0 -1
- package/dist/components/xpl-dropdown-option2.js +0 -1
- package/dist/components/xpl-dropdown2.js +0 -1
- package/dist/components/xpl-icon2.js +0 -1
- package/dist/components/xpl-input-date2.js +0 -1
- package/dist/components/xpl-input2.js +0 -1
- package/dist/components/xpl-list-item2.js +0 -1
- package/dist/components/xpl-popover2.js +0 -1
- package/dist/components/xpl-radio2.js +0 -1
- package/dist/components/xpl-select2.js +0 -1
- package/dist/components/xpl-tooltip2.js +0 -1
- package/dist/components/xpl-top-nav-item2.js +0 -1
- package/dist/esm/v4-Cqlsd6nf.js +0 -65
- /package/dist/components/{_commonjsHelpers.js → p-BFTU3MAI.js} +0 -0
- /package/dist/components/{index2.js → p-CH4yJ6Qx.js} +0 -0
- /package/dist/components/{tab-a11y-ids.js → p-Yj_QFaRn.js} +0 -0
- /package/dist/{index.cjs.js → index.cjs} +0 -0
- /package/loader/{cdn.js → cdn.cjs} +0 -0
- /package/loader/{index.cjs.js → index.cjs} +0 -0
|
@@ -382,7 +382,7 @@ export namespace Components {
|
|
|
382
382
|
*/
|
|
383
383
|
"styled"?: boolean;
|
|
384
384
|
/**
|
|
385
|
-
* The value attribute for the checkbox input. (
|
|
385
|
+
* The value attribute for the checkbox input. (submitted in form as name/value pair)
|
|
386
386
|
*/
|
|
387
387
|
"value"?: string;
|
|
388
388
|
}
|
|
@@ -969,6 +969,10 @@ export namespace Components {
|
|
|
969
969
|
* Whether the field is disabled
|
|
970
970
|
*/
|
|
971
971
|
"disabled"?: boolean;
|
|
972
|
+
/**
|
|
973
|
+
* Whether the field is in an error state. When true, the input renders with the error border styling. The error message itself is owned by the parent `xpl-input` wrapper.
|
|
974
|
+
*/
|
|
975
|
+
"error"?: boolean;
|
|
972
976
|
/**
|
|
973
977
|
* The `inputId` is used to associate the input with a label.
|
|
974
978
|
*/
|
|
@@ -1523,48 +1527,100 @@ export namespace Components {
|
|
|
1523
1527
|
*/
|
|
1524
1528
|
"truncate"?: boolean;
|
|
1525
1529
|
}
|
|
1530
|
+
/**
|
|
1531
|
+
* Slot-based sidebar for app navigation: a scrollable main `section` and a fixed
|
|
1532
|
+
* `nav-footer`. Compose with `xpl-side-nav-item` for rows.
|
|
1533
|
+
* **Mobile (v2):** below the Tailwind `md` breakpoint, the sidebar collapses to a
|
|
1534
|
+
* ~56px top bar with a toggle button (`sidebar-left-show` / `sidebar-left-hide`).
|
|
1535
|
+
* Activating the toggle opens a drawer containing the `section` + `nav-footer`
|
|
1536
|
+
* content behind an `xpl-backdrop` scrim. The drawer traps focus while open;
|
|
1537
|
+
* Escape or a backdrop click closes it and returns focus to the toggle. Above
|
|
1538
|
+
* `md` the toggle and backdrop are hidden via CSS and the sidebar renders inline.
|
|
1539
|
+
* The toggle is always rendered (no gating prop) and hidden above the breakpoint
|
|
1540
|
+
* in CSS. Open state is exposed via the `open` prop (controlled or uncontrolled),
|
|
1541
|
+
* the `openChange` event, and the `toggle()` / `setOpen()` methods.
|
|
1542
|
+
* **v2 breaking change (beta):** consumers who wrapped their own mobile toggle
|
|
1543
|
+
* around `xpl-side-nav` should remove it — the toggle and drawer are now built in.
|
|
1544
|
+
*/
|
|
1526
1545
|
interface XplSideNav {
|
|
1527
1546
|
/**
|
|
1528
1547
|
* Accessible label for the navigation landmark. Maps to `aria-label` on the `<nav>` element. Recommended when multiple navigation landmarks exist on a page (e.g., side nav + top nav + breadcrumbs) to help screen readers distinguish them.
|
|
1529
1548
|
*/
|
|
1530
1549
|
"label"?: string;
|
|
1550
|
+
/**
|
|
1551
|
+
* Whether the mobile drawer is open. Reflected to the `open` attribute so CSS and host state stay in sync. Controlled (consumer owns `open`) or uncontrolled (built-in toggle flips it). Has no visible effect above the `md` breakpoint, where the sidebar always renders inline.
|
|
1552
|
+
* @default false
|
|
1553
|
+
*/
|
|
1554
|
+
"open": boolean;
|
|
1555
|
+
/**
|
|
1556
|
+
* Programmatically set the mobile drawer open state. Emits `openChange` when it changes.
|
|
1557
|
+
*/
|
|
1558
|
+
"setOpen": (open: boolean) => Promise<void>;
|
|
1559
|
+
/**
|
|
1560
|
+
* Programmatically toggle the mobile drawer open/closed. Emits `openChange`.
|
|
1561
|
+
*/
|
|
1562
|
+
"toggle": () => Promise<void>;
|
|
1531
1563
|
}
|
|
1564
|
+
/**
|
|
1565
|
+
* Navigation row for `xpl-side-nav`. Renders a button (default) or a slot-only
|
|
1566
|
+
* anchor container (`link` mode). Three slot positions are available:
|
|
1567
|
+
* - `slot="leading"` — leading icon column (renamed from `slot="icon"` in v2).
|
|
1568
|
+
* The `icon` prop is a convenience shorthand that renders an `xpl-icon` here
|
|
1569
|
+
* when no slotted `leading` content is present.
|
|
1570
|
+
* - `slot="trailing"` — trailing content (e.g. `xpl-icon icon="external-link"`).
|
|
1571
|
+
* When `has-children` is true and no `trailing` slot content is provided, an
|
|
1572
|
+
* auto chevron is rendered automatically in this position: `chevron-down` when
|
|
1573
|
+
* collapsed, `chevron-up` when expanded.
|
|
1574
|
+
* - default slot — nested `xpl-side-nav-item` children (expandable parents only).
|
|
1575
|
+
* **v2 breaking changes (beta):**
|
|
1576
|
+
* - `slot="icon"` renamed to `slot="leading"` — no alias kept.
|
|
1577
|
+
* - Parent rows (`has-children`) now render the leading icon alongside the chevron.
|
|
1578
|
+
* Previously parents showed chevron + label only (no leading icon).
|
|
1579
|
+
* - The chevron has moved from the leading position to the trailing position.
|
|
1580
|
+
* - A slotted `slot="trailing"` replaces the auto chevron on parent rows.
|
|
1581
|
+
* **Migration:**
|
|
1582
|
+
* | Before (v1) | After (v2) | Action |
|
|
1583
|
+
* |---|---|---|
|
|
1584
|
+
* | `slot="icon"` | `slot="leading"` | Rename the slot attribute |
|
|
1585
|
+
* | Parent row: chevron only (no leading) | Parent row: leading icon + chevron | Pass `icon` prop or `slot="leading"` |
|
|
1586
|
+
* | (no trailing slot) | `slot="trailing"` | Add for custom trailing content |
|
|
1587
|
+
*/
|
|
1532
1588
|
interface XplSideNavItem {
|
|
1533
1589
|
/**
|
|
1534
|
-
* Whether the
|
|
1590
|
+
* Whether the item is currently disabled.
|
|
1535
1591
|
* @default false
|
|
1536
1592
|
*/
|
|
1537
1593
|
"disabled": boolean;
|
|
1538
1594
|
/**
|
|
1539
|
-
* Whether the item is currently expanded (only applies when
|
|
1595
|
+
* Whether the item is currently expanded (only applies when `has-children` is true).
|
|
1540
1596
|
* @default false
|
|
1541
1597
|
*/
|
|
1542
1598
|
"expanded": boolean;
|
|
1543
1599
|
/**
|
|
1544
|
-
* Whether the item has child items; when true, shows expand/collapse and a default slot for nested items. Mutually exclusive with
|
|
1600
|
+
* Whether the item has child items; when true, shows expand/collapse and a default slot for nested items. Mutually exclusive with `link`. If `link` is already true, setting `has-children` is reverted.
|
|
1545
1601
|
* @default false
|
|
1546
1602
|
*/
|
|
1547
1603
|
"hasChildren": boolean;
|
|
1548
1604
|
/**
|
|
1549
|
-
* Whether the component is hidden
|
|
1605
|
+
* Whether the component is hidden.
|
|
1550
1606
|
* @default false
|
|
1551
1607
|
*/
|
|
1552
1608
|
"hidden": boolean;
|
|
1553
1609
|
/**
|
|
1554
|
-
* Optional icon name; default content for
|
|
1610
|
+
* Optional icon name; renders as the default content for `slot="leading"`. When `slot="leading"` content is present, this prop is ignored. In v2, this prop applies to all item types including parent rows (`has-children`).
|
|
1555
1611
|
*/
|
|
1556
1612
|
"icon"?: string;
|
|
1557
1613
|
/**
|
|
1558
|
-
* The display label for the navigation item (button / expandable rows; omit in
|
|
1614
|
+
* The display label for the navigation item (button / expandable rows; omit in `link` mode).
|
|
1559
1615
|
*/
|
|
1560
1616
|
"label"?: string;
|
|
1561
1617
|
/**
|
|
1562
|
-
* When true, the row becomes a slot-only container for consumer-provided links. The consumer provides the full anchor element (or router link) via the default slot. In link mode,
|
|
1618
|
+
* When true, the row becomes a slot-only container for consumer-provided links. The consumer provides the full anchor element (or router link) via the default slot. In link mode, `label` and `icon` props should not be used. Link mode does not support `has-children`; use the default button mode for expandable items. When `link` is true, `hasChildren` is always false.
|
|
1563
1619
|
* @default false
|
|
1564
1620
|
*/
|
|
1565
1621
|
"link": boolean;
|
|
1566
1622
|
/**
|
|
1567
|
-
* Whether the item is currently in a selected state
|
|
1623
|
+
* Whether the item is currently in a selected state.
|
|
1568
1624
|
* @default false
|
|
1569
1625
|
*/
|
|
1570
1626
|
"selected": boolean;
|
|
@@ -2013,16 +2069,19 @@ export namespace Components {
|
|
|
2013
2069
|
"navControl"?: boolean;
|
|
2014
2070
|
}
|
|
2015
2071
|
/**
|
|
2016
|
-
* Single nav row for **`xpl-top-nav`** / **`xpl-nav-header-menu`**. The host uses
|
|
2017
|
-
* participates in a list: a **`role="list"`** parent, **`slot="left-aside"`** on
|
|
2018
|
-
* **`.xpl-top-nav__left-primary`** while slotted nodes stay light-DOM children of
|
|
2019
|
-
* under **`xpl-nav-header-menu`**. That flag is
|
|
2072
|
+
* Single nav row for **`xpl-top-nav`** / **`xpl-nav-header-menu`** / **`xpl-top-nav-menu`**. The host uses
|
|
2073
|
+
* **`role="listitem"`** when the row participates in a list: a **`role="list"`** parent, **`slot="left-aside"`** on
|
|
2074
|
+
* **`xpl-top-nav`** (list host is **`.xpl-top-nav__left-primary`** while slotted nodes stay light-DOM children of
|
|
2075
|
+
* **`xpl-top-nav`**), or default-slot rows under **`xpl-nav-header-menu`** / **`xpl-top-nav-menu`**. That flag is
|
|
2020
2076
|
* kept in **`@State`** and refreshed after render plus via **`MutationObserver`** on the host (**`class`**, **`slot`**) and
|
|
2021
2077
|
* on **`parentElement`** (**`role`**) or on **`.xpl-top-nav__left-primary`** (**`role`**) for **`slot="left-aside"`** under **`xpl-top-nav`**) so DOM context changes
|
|
2022
2078
|
* without a full reconnect still re-sync. The internal
|
|
2023
2079
|
* **`xpl-top-nav__brand`** row omits **`listitem`** (it sits in **`.xpl-top-nav__brand-bar`**, not **`.xpl-top-nav__left-primary`**),
|
|
2024
2080
|
* as do **`slot="right-aside-mobile"`** rows (not a list). **`slot="dropdown"`** uses a local **`.xpl-top-nav-item__dropdown`**
|
|
2025
2081
|
* panel (not **`xpl-dropdown`**); see **`TECH_DEBT.md`**.
|
|
2082
|
+
* **This component does triple duty:** a plain bar item, a dropdown trigger (**`slot="dropdown"`** present), and a
|
|
2083
|
+
* dropdown/menu **row** (nested inside **`xpl-nav-header-menu`** or **`xpl-top-nav-menu`**). The **`description`** prop
|
|
2084
|
+
* only applies in the row context — bar items and triggers do not show it in Figma.
|
|
2026
2085
|
* **Default slot (no `label`):** do not put **`xpl-top-nav-item__inner`** or other **`xpl-top-nav-item__*`** classes on
|
|
2027
2086
|
* custom trigger content — the component renders the inner wrapper and BEM elements.
|
|
2028
2087
|
* **Theming:** The host always includes Foundation’s **`dark`** class so **`--xpl-*`** purpose tokens resolve to dark-mode
|
|
@@ -2034,12 +2093,20 @@ export namespace Components {
|
|
|
2034
2093
|
* @default false
|
|
2035
2094
|
*/
|
|
2036
2095
|
"active": boolean;
|
|
2096
|
+
/**
|
|
2097
|
+
* No-op when there is no **`slot="dropdown"`** panel to open.
|
|
2098
|
+
*/
|
|
2099
|
+
"closeMenu": () => Promise<void>;
|
|
2100
|
+
/**
|
|
2101
|
+
* Optional description line shown below **`label`** (row context only, e.g. inside **`xpl-nav-header-menu`** / **`xpl-top-nav-menu`**). Ignored when **`label`** is not set.
|
|
2102
|
+
*/
|
|
2103
|
+
"description"?: string;
|
|
2037
2104
|
/**
|
|
2038
2105
|
* If set without **`slot="dropdown"`**, the inner control renders as a native **`<a href>`** (link mode).
|
|
2039
2106
|
*/
|
|
2040
2107
|
"href"?: string;
|
|
2041
2108
|
/**
|
|
2042
|
-
* Icon name from **`@xplortech/apollo-icons`** (shown before the label when **`label`** is set).
|
|
2109
|
+
* Icon name from **`@xplortech/apollo-icons`** (shown before the label when **`label`** is set). Ignored when **`slot="leading-icon"`** content is present.
|
|
2043
2110
|
* @default ''
|
|
2044
2111
|
*/
|
|
2045
2112
|
"icon": string;
|
|
@@ -2051,11 +2118,54 @@ export namespace Components {
|
|
|
2051
2118
|
* Text label. If omitted, use the default slot for custom trigger content. Long labels use **`text-ellipsis`** on **`.xpl-top-nav-item__label`** (see `top-nav.css`); **`title`** is set to the full string for hover tooltips when the visual line clips.
|
|
2052
2119
|
*/
|
|
2053
2120
|
"label"?: string;
|
|
2121
|
+
/**
|
|
2122
|
+
* Whether the **`slot="dropdown"`** panel is open. Reflected to the **`open`** attribute so consumers can drive it (controlled) or read it back (uncontrolled, toggled internally on click / hover / keyboard activation). Prefer **`openMenu()`** / **`closeMenu()`** / **`toggleMenu()`** over setting this directly from event handlers.
|
|
2123
|
+
* @default false
|
|
2124
|
+
*/
|
|
2125
|
+
"open": boolean;
|
|
2126
|
+
/**
|
|
2127
|
+
* No-op when there is no **`slot="dropdown"`** panel to open.
|
|
2128
|
+
*/
|
|
2129
|
+
"openMenu": () => Promise<void>;
|
|
2130
|
+
/**
|
|
2131
|
+
* How the **`slot="dropdown"`** panel opens. **`hover`** is gated on **`TOP_NAV_ITEM_HOVER_OPEN_MQ`** (hover-capable, fine pointer, **`md`** and up) — below that, or on touch / coarse-pointer devices, **`hover`** falls back to click/tap. Keyboard activation (Enter / Space) always toggles regardless of **`openMode`**.
|
|
2132
|
+
* @default 'click'
|
|
2133
|
+
*/
|
|
2134
|
+
"openMode": 'click' | 'hover';
|
|
2054
2135
|
/**
|
|
2055
2136
|
* When true, sets **`aria-current="page"`** and selected styling.
|
|
2056
2137
|
* @default false
|
|
2057
2138
|
*/
|
|
2058
2139
|
"selected": boolean;
|
|
2140
|
+
/**
|
|
2141
|
+
* No-op when there is no **`slot="dropdown"`** panel to open.
|
|
2142
|
+
*/
|
|
2143
|
+
"toggleMenu": () => Promise<void>;
|
|
2144
|
+
}
|
|
2145
|
+
/**
|
|
2146
|
+
* Thin grouping container for **`xpl-top-nav-item`** rows — the panel content for a desktop flyout
|
|
2147
|
+
* (**`slot="dropdown"`** on the parent **`xpl-top-nav-item`**) and, on small screens, the **mobile
|
|
2148
|
+
* cascade**: the same markup drills in to a **Level 2** view in place, with an auto-rendered **back
|
|
2149
|
+
* row** (leading **`chevron-left`** + this component's **`label`**) as the first row. Tapping the back
|
|
2150
|
+
* row closes the parent trigger's dropdown (**`closeMenu()`**), returning to **Level 1** and restoring
|
|
2151
|
+
* focus to the parent trigger. No item logic otherwise lives here — row behavior (icons, description,
|
|
2152
|
+
* links, nested dropdowns) is entirely **`xpl-top-nav-item`**.
|
|
2153
|
+
* **One authoring markup, two renderings:** consumers write this once; **`isMobileCascade`** (synced
|
|
2154
|
+
* from **`TOP_NAV_MOBILE_MQ`**) decides whether the back row renders. Desktop never sees it — the
|
|
2155
|
+
* flyout is a single level of links (see `xpl-top-nav-item`'s cascade-depth notes).
|
|
2156
|
+
* **Panel chrome** is shared with **`xpl-nav-header-menu`** (the account menu): width
|
|
2157
|
+
* (**`--xpl-top-nav-panel-width`**), surface, shadow, radius, and vertical padding all come from the
|
|
2158
|
+
* same selector in `top-nav.css` so the desktop flyout, mobile cascade, and account menu read as one
|
|
2159
|
+
* visual family.
|
|
2160
|
+
* **Theming:** The host always includes Foundation’s **`dark`** class so **`--xpl-*`** purpose tokens
|
|
2161
|
+
* resolve to dark-mode values even when the page root is light (consistent with the rest of the
|
|
2162
|
+
* **`xpl-top-nav`** family).
|
|
2163
|
+
*/
|
|
2164
|
+
interface XplTopNavMenu {
|
|
2165
|
+
/**
|
|
2166
|
+
* Accessible name for the list (**`aria-label`** on the host) and the label shown in the mobile cascade back row when drilling back out of this group.
|
|
2167
|
+
*/
|
|
2168
|
+
"label"?: string;
|
|
2059
2169
|
}
|
|
2060
2170
|
interface XplUtilityBar {
|
|
2061
2171
|
/**
|
|
@@ -2160,6 +2270,10 @@ export interface XplSelectCustomEvent<T> extends CustomEvent<T> {
|
|
|
2160
2270
|
detail: T;
|
|
2161
2271
|
target: HTMLXplSelectElement;
|
|
2162
2272
|
}
|
|
2273
|
+
export interface XplSideNavCustomEvent<T> extends CustomEvent<T> {
|
|
2274
|
+
detail: T;
|
|
2275
|
+
target: HTMLXplSideNavElement;
|
|
2276
|
+
}
|
|
2163
2277
|
export interface XplSideNavItemCustomEvent<T> extends CustomEvent<T> {
|
|
2164
2278
|
detail: T;
|
|
2165
2279
|
target: HTMLXplSideNavItemElement;
|
|
@@ -2819,7 +2933,33 @@ declare global {
|
|
|
2819
2933
|
prototype: HTMLXplSelectElement;
|
|
2820
2934
|
new (): HTMLXplSelectElement;
|
|
2821
2935
|
};
|
|
2936
|
+
interface HTMLXplSideNavElementEventMap {
|
|
2937
|
+
"openChange": boolean;
|
|
2938
|
+
}
|
|
2939
|
+
/**
|
|
2940
|
+
* Slot-based sidebar for app navigation: a scrollable main `section` and a fixed
|
|
2941
|
+
* `nav-footer`. Compose with `xpl-side-nav-item` for rows.
|
|
2942
|
+
* **Mobile (v2):** below the Tailwind `md` breakpoint, the sidebar collapses to a
|
|
2943
|
+
* ~56px top bar with a toggle button (`sidebar-left-show` / `sidebar-left-hide`).
|
|
2944
|
+
* Activating the toggle opens a drawer containing the `section` + `nav-footer`
|
|
2945
|
+
* content behind an `xpl-backdrop` scrim. The drawer traps focus while open;
|
|
2946
|
+
* Escape or a backdrop click closes it and returns focus to the toggle. Above
|
|
2947
|
+
* `md` the toggle and backdrop are hidden via CSS and the sidebar renders inline.
|
|
2948
|
+
* The toggle is always rendered (no gating prop) and hidden above the breakpoint
|
|
2949
|
+
* in CSS. Open state is exposed via the `open` prop (controlled or uncontrolled),
|
|
2950
|
+
* the `openChange` event, and the `toggle()` / `setOpen()` methods.
|
|
2951
|
+
* **v2 breaking change (beta):** consumers who wrapped their own mobile toggle
|
|
2952
|
+
* around `xpl-side-nav` should remove it — the toggle and drawer are now built in.
|
|
2953
|
+
*/
|
|
2822
2954
|
interface HTMLXplSideNavElement extends Components.XplSideNav, HTMLStencilElement {
|
|
2955
|
+
addEventListener<K extends keyof HTMLXplSideNavElementEventMap>(type: K, listener: (this: HTMLXplSideNavElement, ev: XplSideNavCustomEvent<HTMLXplSideNavElementEventMap[K]>) => any, options?: boolean | AddEventListenerOptions): void;
|
|
2956
|
+
addEventListener<K extends keyof DocumentEventMap>(type: K, listener: (this: Document, ev: DocumentEventMap[K]) => any, options?: boolean | AddEventListenerOptions): void;
|
|
2957
|
+
addEventListener<K extends keyof HTMLElementEventMap>(type: K, listener: (this: HTMLElement, ev: HTMLElementEventMap[K]) => any, options?: boolean | AddEventListenerOptions): void;
|
|
2958
|
+
addEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | AddEventListenerOptions): void;
|
|
2959
|
+
removeEventListener<K extends keyof HTMLXplSideNavElementEventMap>(type: K, listener: (this: HTMLXplSideNavElement, ev: XplSideNavCustomEvent<HTMLXplSideNavElementEventMap[K]>) => any, options?: boolean | EventListenerOptions): void;
|
|
2960
|
+
removeEventListener<K extends keyof DocumentEventMap>(type: K, listener: (this: Document, ev: DocumentEventMap[K]) => any, options?: boolean | EventListenerOptions): void;
|
|
2961
|
+
removeEventListener<K extends keyof HTMLElementEventMap>(type: K, listener: (this: HTMLElement, ev: HTMLElementEventMap[K]) => any, options?: boolean | EventListenerOptions): void;
|
|
2962
|
+
removeEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | EventListenerOptions): void;
|
|
2823
2963
|
}
|
|
2824
2964
|
var HTMLXplSideNavElement: {
|
|
2825
2965
|
prototype: HTMLXplSideNavElement;
|
|
@@ -2829,6 +2969,30 @@ declare global {
|
|
|
2829
2969
|
"expandedChange": boolean;
|
|
2830
2970
|
"navClick": void;
|
|
2831
2971
|
}
|
|
2972
|
+
/**
|
|
2973
|
+
* Navigation row for `xpl-side-nav`. Renders a button (default) or a slot-only
|
|
2974
|
+
* anchor container (`link` mode). Three slot positions are available:
|
|
2975
|
+
* - `slot="leading"` — leading icon column (renamed from `slot="icon"` in v2).
|
|
2976
|
+
* The `icon` prop is a convenience shorthand that renders an `xpl-icon` here
|
|
2977
|
+
* when no slotted `leading` content is present.
|
|
2978
|
+
* - `slot="trailing"` — trailing content (e.g. `xpl-icon icon="external-link"`).
|
|
2979
|
+
* When `has-children` is true and no `trailing` slot content is provided, an
|
|
2980
|
+
* auto chevron is rendered automatically in this position: `chevron-down` when
|
|
2981
|
+
* collapsed, `chevron-up` when expanded.
|
|
2982
|
+
* - default slot — nested `xpl-side-nav-item` children (expandable parents only).
|
|
2983
|
+
* **v2 breaking changes (beta):**
|
|
2984
|
+
* - `slot="icon"` renamed to `slot="leading"` — no alias kept.
|
|
2985
|
+
* - Parent rows (`has-children`) now render the leading icon alongside the chevron.
|
|
2986
|
+
* Previously parents showed chevron + label only (no leading icon).
|
|
2987
|
+
* - The chevron has moved from the leading position to the trailing position.
|
|
2988
|
+
* - A slotted `slot="trailing"` replaces the auto chevron on parent rows.
|
|
2989
|
+
* **Migration:**
|
|
2990
|
+
* | Before (v1) | After (v2) | Action |
|
|
2991
|
+
* |---|---|---|
|
|
2992
|
+
* | `slot="icon"` | `slot="leading"` | Rename the slot attribute |
|
|
2993
|
+
* | Parent row: chevron only (no leading) | Parent row: leading icon + chevron | Pass `icon` prop or `slot="leading"` |
|
|
2994
|
+
* | (no trailing slot) | `slot="trailing"` | Add for custom trailing content |
|
|
2995
|
+
*/
|
|
2832
2996
|
interface HTMLXplSideNavItemElement extends Components.XplSideNavItem, HTMLStencilElement {
|
|
2833
2997
|
addEventListener<K extends keyof HTMLXplSideNavItemElementEventMap>(type: K, listener: (this: HTMLXplSideNavItemElement, ev: XplSideNavItemCustomEvent<HTMLXplSideNavItemElementEventMap[K]>) => any, options?: boolean | AddEventListenerOptions): void;
|
|
2834
2998
|
addEventListener<K extends keyof DocumentEventMap>(type: K, listener: (this: Document, ev: DocumentEventMap[K]) => any, options?: boolean | AddEventListenerOptions): void;
|
|
@@ -3068,18 +3232,22 @@ declare global {
|
|
|
3068
3232
|
};
|
|
3069
3233
|
interface HTMLXplTopNavItemElementEventMap {
|
|
3070
3234
|
"navItemClick": MouseEvent;
|
|
3235
|
+
"openChange": boolean;
|
|
3071
3236
|
}
|
|
3072
3237
|
/**
|
|
3073
|
-
* Single nav row for **`xpl-top-nav`** / **`xpl-nav-header-menu`**. The host uses
|
|
3074
|
-
* participates in a list: a **`role="list"`** parent, **`slot="left-aside"`** on
|
|
3075
|
-
* **`.xpl-top-nav__left-primary`** while slotted nodes stay light-DOM children of
|
|
3076
|
-
* under **`xpl-nav-header-menu`**. That flag is
|
|
3238
|
+
* Single nav row for **`xpl-top-nav`** / **`xpl-nav-header-menu`** / **`xpl-top-nav-menu`**. The host uses
|
|
3239
|
+
* **`role="listitem"`** when the row participates in a list: a **`role="list"`** parent, **`slot="left-aside"`** on
|
|
3240
|
+
* **`xpl-top-nav`** (list host is **`.xpl-top-nav__left-primary`** while slotted nodes stay light-DOM children of
|
|
3241
|
+
* **`xpl-top-nav`**), or default-slot rows under **`xpl-nav-header-menu`** / **`xpl-top-nav-menu`**. That flag is
|
|
3077
3242
|
* kept in **`@State`** and refreshed after render plus via **`MutationObserver`** on the host (**`class`**, **`slot`**) and
|
|
3078
3243
|
* on **`parentElement`** (**`role`**) or on **`.xpl-top-nav__left-primary`** (**`role`**) for **`slot="left-aside"`** under **`xpl-top-nav`**) so DOM context changes
|
|
3079
3244
|
* without a full reconnect still re-sync. The internal
|
|
3080
3245
|
* **`xpl-top-nav__brand`** row omits **`listitem`** (it sits in **`.xpl-top-nav__brand-bar`**, not **`.xpl-top-nav__left-primary`**),
|
|
3081
3246
|
* as do **`slot="right-aside-mobile"`** rows (not a list). **`slot="dropdown"`** uses a local **`.xpl-top-nav-item__dropdown`**
|
|
3082
3247
|
* panel (not **`xpl-dropdown`**); see **`TECH_DEBT.md`**.
|
|
3248
|
+
* **This component does triple duty:** a plain bar item, a dropdown trigger (**`slot="dropdown"`** present), and a
|
|
3249
|
+
* dropdown/menu **row** (nested inside **`xpl-nav-header-menu`** or **`xpl-top-nav-menu`**). The **`description`** prop
|
|
3250
|
+
* only applies in the row context — bar items and triggers do not show it in Figma.
|
|
3083
3251
|
* **Default slot (no `label`):** do not put **`xpl-top-nav-item__inner`** or other **`xpl-top-nav-item__*`** classes on
|
|
3084
3252
|
* custom trigger content — the component renders the inner wrapper and BEM elements.
|
|
3085
3253
|
* **Theming:** The host always includes Foundation’s **`dark`** class so **`--xpl-*`** purpose tokens resolve to dark-mode
|
|
@@ -3099,6 +3267,31 @@ declare global {
|
|
|
3099
3267
|
prototype: HTMLXplTopNavItemElement;
|
|
3100
3268
|
new (): HTMLXplTopNavItemElement;
|
|
3101
3269
|
};
|
|
3270
|
+
/**
|
|
3271
|
+
* Thin grouping container for **`xpl-top-nav-item`** rows — the panel content for a desktop flyout
|
|
3272
|
+
* (**`slot="dropdown"`** on the parent **`xpl-top-nav-item`**) and, on small screens, the **mobile
|
|
3273
|
+
* cascade**: the same markup drills in to a **Level 2** view in place, with an auto-rendered **back
|
|
3274
|
+
* row** (leading **`chevron-left`** + this component's **`label`**) as the first row. Tapping the back
|
|
3275
|
+
* row closes the parent trigger's dropdown (**`closeMenu()`**), returning to **Level 1** and restoring
|
|
3276
|
+
* focus to the parent trigger. No item logic otherwise lives here — row behavior (icons, description,
|
|
3277
|
+
* links, nested dropdowns) is entirely **`xpl-top-nav-item`**.
|
|
3278
|
+
* **One authoring markup, two renderings:** consumers write this once; **`isMobileCascade`** (synced
|
|
3279
|
+
* from **`TOP_NAV_MOBILE_MQ`**) decides whether the back row renders. Desktop never sees it — the
|
|
3280
|
+
* flyout is a single level of links (see `xpl-top-nav-item`'s cascade-depth notes).
|
|
3281
|
+
* **Panel chrome** is shared with **`xpl-nav-header-menu`** (the account menu): width
|
|
3282
|
+
* (**`--xpl-top-nav-panel-width`**), surface, shadow, radius, and vertical padding all come from the
|
|
3283
|
+
* same selector in `top-nav.css` so the desktop flyout, mobile cascade, and account menu read as one
|
|
3284
|
+
* visual family.
|
|
3285
|
+
* **Theming:** The host always includes Foundation’s **`dark`** class so **`--xpl-*`** purpose tokens
|
|
3286
|
+
* resolve to dark-mode values even when the page root is light (consistent with the rest of the
|
|
3287
|
+
* **`xpl-top-nav`** family).
|
|
3288
|
+
*/
|
|
3289
|
+
interface HTMLXplTopNavMenuElement extends Components.XplTopNavMenu, HTMLStencilElement {
|
|
3290
|
+
}
|
|
3291
|
+
var HTMLXplTopNavMenuElement: {
|
|
3292
|
+
prototype: HTMLXplTopNavMenuElement;
|
|
3293
|
+
new (): HTMLXplTopNavMenuElement;
|
|
3294
|
+
};
|
|
3102
3295
|
interface HTMLXplUtilityBarElementEventMap {
|
|
3103
3296
|
"navOpen": boolean;
|
|
3104
3297
|
}
|
|
@@ -3185,6 +3378,7 @@ declare global {
|
|
|
3185
3378
|
"xpl-tooltip": HTMLXplTooltipElement;
|
|
3186
3379
|
"xpl-top-nav": HTMLXplTopNavElement;
|
|
3187
3380
|
"xpl-top-nav-item": HTMLXplTopNavItemElement;
|
|
3381
|
+
"xpl-top-nav-menu": HTMLXplTopNavMenuElement;
|
|
3188
3382
|
"xpl-utility-bar": HTMLXplUtilityBarElement;
|
|
3189
3383
|
}
|
|
3190
3384
|
}
|
|
@@ -3570,7 +3764,7 @@ declare namespace LocalJSX {
|
|
|
3570
3764
|
*/
|
|
3571
3765
|
"styled"?: boolean;
|
|
3572
3766
|
/**
|
|
3573
|
-
* The value attribute for the checkbox input. (
|
|
3767
|
+
* The value attribute for the checkbox input. (submitted in form as name/value pair)
|
|
3574
3768
|
*/
|
|
3575
3769
|
"value"?: string;
|
|
3576
3770
|
}
|
|
@@ -4207,6 +4401,10 @@ declare namespace LocalJSX {
|
|
|
4207
4401
|
* Whether the field is disabled
|
|
4208
4402
|
*/
|
|
4209
4403
|
"disabled"?: boolean;
|
|
4404
|
+
/**
|
|
4405
|
+
* Whether the field is in an error state. When true, the input renders with the error border styling. The error message itself is owned by the parent `xpl-input` wrapper.
|
|
4406
|
+
*/
|
|
4407
|
+
"error"?: boolean;
|
|
4210
4408
|
/**
|
|
4211
4409
|
* The `inputId` is used to associate the input with a label.
|
|
4212
4410
|
*/
|
|
@@ -4856,56 +5054,104 @@ declare namespace LocalJSX {
|
|
|
4856
5054
|
*/
|
|
4857
5055
|
"truncate"?: boolean;
|
|
4858
5056
|
}
|
|
5057
|
+
/**
|
|
5058
|
+
* Slot-based sidebar for app navigation: a scrollable main `section` and a fixed
|
|
5059
|
+
* `nav-footer`. Compose with `xpl-side-nav-item` for rows.
|
|
5060
|
+
* **Mobile (v2):** below the Tailwind `md` breakpoint, the sidebar collapses to a
|
|
5061
|
+
* ~56px top bar with a toggle button (`sidebar-left-show` / `sidebar-left-hide`).
|
|
5062
|
+
* Activating the toggle opens a drawer containing the `section` + `nav-footer`
|
|
5063
|
+
* content behind an `xpl-backdrop` scrim. The drawer traps focus while open;
|
|
5064
|
+
* Escape or a backdrop click closes it and returns focus to the toggle. Above
|
|
5065
|
+
* `md` the toggle and backdrop are hidden via CSS and the sidebar renders inline.
|
|
5066
|
+
* The toggle is always rendered (no gating prop) and hidden above the breakpoint
|
|
5067
|
+
* in CSS. Open state is exposed via the `open` prop (controlled or uncontrolled),
|
|
5068
|
+
* the `openChange` event, and the `toggle()` / `setOpen()` methods.
|
|
5069
|
+
* **v2 breaking change (beta):** consumers who wrapped their own mobile toggle
|
|
5070
|
+
* around `xpl-side-nav` should remove it — the toggle and drawer are now built in.
|
|
5071
|
+
*/
|
|
4859
5072
|
interface XplSideNav {
|
|
4860
5073
|
/**
|
|
4861
5074
|
* Accessible label for the navigation landmark. Maps to `aria-label` on the `<nav>` element. Recommended when multiple navigation landmarks exist on a page (e.g., side nav + top nav + breadcrumbs) to help screen readers distinguish them.
|
|
4862
5075
|
*/
|
|
4863
5076
|
"label"?: string;
|
|
5077
|
+
/**
|
|
5078
|
+
* Emitted when the mobile drawer open state changes: toggle activation, Escape, or a backdrop click. Detail is the new open state (`true` = open, `false` = closed).
|
|
5079
|
+
*/
|
|
5080
|
+
"onOpenChange"?: (event: XplSideNavCustomEvent<boolean>) => void;
|
|
5081
|
+
/**
|
|
5082
|
+
* Whether the mobile drawer is open. Reflected to the `open` attribute so CSS and host state stay in sync. Controlled (consumer owns `open`) or uncontrolled (built-in toggle flips it). Has no visible effect above the `md` breakpoint, where the sidebar always renders inline.
|
|
5083
|
+
* @default false
|
|
5084
|
+
*/
|
|
5085
|
+
"open"?: boolean;
|
|
4864
5086
|
}
|
|
5087
|
+
/**
|
|
5088
|
+
* Navigation row for `xpl-side-nav`. Renders a button (default) or a slot-only
|
|
5089
|
+
* anchor container (`link` mode). Three slot positions are available:
|
|
5090
|
+
* - `slot="leading"` — leading icon column (renamed from `slot="icon"` in v2).
|
|
5091
|
+
* The `icon` prop is a convenience shorthand that renders an `xpl-icon` here
|
|
5092
|
+
* when no slotted `leading` content is present.
|
|
5093
|
+
* - `slot="trailing"` — trailing content (e.g. `xpl-icon icon="external-link"`).
|
|
5094
|
+
* When `has-children` is true and no `trailing` slot content is provided, an
|
|
5095
|
+
* auto chevron is rendered automatically in this position: `chevron-down` when
|
|
5096
|
+
* collapsed, `chevron-up` when expanded.
|
|
5097
|
+
* - default slot — nested `xpl-side-nav-item` children (expandable parents only).
|
|
5098
|
+
* **v2 breaking changes (beta):**
|
|
5099
|
+
* - `slot="icon"` renamed to `slot="leading"` — no alias kept.
|
|
5100
|
+
* - Parent rows (`has-children`) now render the leading icon alongside the chevron.
|
|
5101
|
+
* Previously parents showed chevron + label only (no leading icon).
|
|
5102
|
+
* - The chevron has moved from the leading position to the trailing position.
|
|
5103
|
+
* - A slotted `slot="trailing"` replaces the auto chevron on parent rows.
|
|
5104
|
+
* **Migration:**
|
|
5105
|
+
* | Before (v1) | After (v2) | Action |
|
|
5106
|
+
* |---|---|---|
|
|
5107
|
+
* | `slot="icon"` | `slot="leading"` | Rename the slot attribute |
|
|
5108
|
+
* | Parent row: chevron only (no leading) | Parent row: leading icon + chevron | Pass `icon` prop or `slot="leading"` |
|
|
5109
|
+
* | (no trailing slot) | `slot="trailing"` | Add for custom trailing content |
|
|
5110
|
+
*/
|
|
4865
5111
|
interface XplSideNavItem {
|
|
4866
5112
|
/**
|
|
4867
|
-
* Whether the
|
|
5113
|
+
* Whether the item is currently disabled.
|
|
4868
5114
|
* @default false
|
|
4869
5115
|
*/
|
|
4870
5116
|
"disabled"?: boolean;
|
|
4871
5117
|
/**
|
|
4872
|
-
* Whether the item is currently expanded (only applies when
|
|
5118
|
+
* Whether the item is currently expanded (only applies when `has-children` is true).
|
|
4873
5119
|
* @default false
|
|
4874
5120
|
*/
|
|
4875
5121
|
"expanded"?: boolean;
|
|
4876
5122
|
/**
|
|
4877
|
-
* Whether the item has child items; when true, shows expand/collapse and a default slot for nested items. Mutually exclusive with
|
|
5123
|
+
* Whether the item has child items; when true, shows expand/collapse and a default slot for nested items. Mutually exclusive with `link`. If `link` is already true, setting `has-children` is reverted.
|
|
4878
5124
|
* @default false
|
|
4879
5125
|
*/
|
|
4880
5126
|
"hasChildren"?: boolean;
|
|
4881
5127
|
/**
|
|
4882
|
-
* Whether the component is hidden
|
|
5128
|
+
* Whether the component is hidden.
|
|
4883
5129
|
* @default false
|
|
4884
5130
|
*/
|
|
4885
5131
|
"hidden"?: boolean;
|
|
4886
5132
|
/**
|
|
4887
|
-
* Optional icon name; default content for
|
|
5133
|
+
* Optional icon name; renders as the default content for `slot="leading"`. When `slot="leading"` content is present, this prop is ignored. In v2, this prop applies to all item types including parent rows (`has-children`).
|
|
4888
5134
|
*/
|
|
4889
5135
|
"icon"?: string;
|
|
4890
5136
|
/**
|
|
4891
|
-
* The display label for the navigation item (button / expandable rows; omit in
|
|
5137
|
+
* The display label for the navigation item (button / expandable rows; omit in `link` mode).
|
|
4892
5138
|
*/
|
|
4893
5139
|
"label"?: string;
|
|
4894
5140
|
/**
|
|
4895
|
-
* When true, the row becomes a slot-only container for consumer-provided links. The consumer provides the full anchor element (or router link) via the default slot. In link mode,
|
|
5141
|
+
* When true, the row becomes a slot-only container for consumer-provided links. The consumer provides the full anchor element (or router link) via the default slot. In link mode, `label` and `icon` props should not be used. Link mode does not support `has-children`; use the default button mode for expandable items. When `link` is true, `hasChildren` is always false.
|
|
4896
5142
|
* @default false
|
|
4897
5143
|
*/
|
|
4898
5144
|
"link"?: boolean;
|
|
4899
5145
|
/**
|
|
4900
|
-
* Emitted when the expanded state changes (
|
|
5146
|
+
* Emitted when the expanded state changes (`has-children` items only). Detail is the new expanded value.
|
|
4901
5147
|
*/
|
|
4902
5148
|
"onExpandedChange"?: (event: XplSideNavItemCustomEvent<boolean>) => void;
|
|
4903
5149
|
/**
|
|
4904
|
-
* Emitted when a leaf item is clicked. Expandable parents use expandedChange instead.
|
|
5150
|
+
* Emitted when a leaf item is clicked. Expandable parents use `expandedChange` instead.
|
|
4905
5151
|
*/
|
|
4906
5152
|
"onNavClick"?: (event: XplSideNavItemCustomEvent<void>) => void;
|
|
4907
5153
|
/**
|
|
4908
|
-
* Whether the item is currently in a selected state
|
|
5154
|
+
* Whether the item is currently in a selected state.
|
|
4909
5155
|
* @default false
|
|
4910
5156
|
*/
|
|
4911
5157
|
"selected"?: boolean;
|
|
@@ -5405,16 +5651,19 @@ declare namespace LocalJSX {
|
|
|
5405
5651
|
"onNavOpen"?: (event: XplTopNavCustomEvent<boolean>) => void;
|
|
5406
5652
|
}
|
|
5407
5653
|
/**
|
|
5408
|
-
* Single nav row for **`xpl-top-nav`** / **`xpl-nav-header-menu`**. The host uses
|
|
5409
|
-
* participates in a list: a **`role="list"`** parent, **`slot="left-aside"`** on
|
|
5410
|
-
* **`.xpl-top-nav__left-primary`** while slotted nodes stay light-DOM children of
|
|
5411
|
-
* under **`xpl-nav-header-menu`**. That flag is
|
|
5654
|
+
* Single nav row for **`xpl-top-nav`** / **`xpl-nav-header-menu`** / **`xpl-top-nav-menu`**. The host uses
|
|
5655
|
+
* **`role="listitem"`** when the row participates in a list: a **`role="list"`** parent, **`slot="left-aside"`** on
|
|
5656
|
+
* **`xpl-top-nav`** (list host is **`.xpl-top-nav__left-primary`** while slotted nodes stay light-DOM children of
|
|
5657
|
+
* **`xpl-top-nav`**), or default-slot rows under **`xpl-nav-header-menu`** / **`xpl-top-nav-menu`**. That flag is
|
|
5412
5658
|
* kept in **`@State`** and refreshed after render plus via **`MutationObserver`** on the host (**`class`**, **`slot`**) and
|
|
5413
5659
|
* on **`parentElement`** (**`role`**) or on **`.xpl-top-nav__left-primary`** (**`role`**) for **`slot="left-aside"`** under **`xpl-top-nav`**) so DOM context changes
|
|
5414
5660
|
* without a full reconnect still re-sync. The internal
|
|
5415
5661
|
* **`xpl-top-nav__brand`** row omits **`listitem`** (it sits in **`.xpl-top-nav__brand-bar`**, not **`.xpl-top-nav__left-primary`**),
|
|
5416
5662
|
* as do **`slot="right-aside-mobile"`** rows (not a list). **`slot="dropdown"`** uses a local **`.xpl-top-nav-item__dropdown`**
|
|
5417
5663
|
* panel (not **`xpl-dropdown`**); see **`TECH_DEBT.md`**.
|
|
5664
|
+
* **This component does triple duty:** a plain bar item, a dropdown trigger (**`slot="dropdown"`** present), and a
|
|
5665
|
+
* dropdown/menu **row** (nested inside **`xpl-nav-header-menu`** or **`xpl-top-nav-menu`**). The **`description`** prop
|
|
5666
|
+
* only applies in the row context — bar items and triggers do not show it in Figma.
|
|
5418
5667
|
* **Default slot (no `label`):** do not put **`xpl-top-nav-item__inner`** or other **`xpl-top-nav-item__*`** classes on
|
|
5419
5668
|
* custom trigger content — the component renders the inner wrapper and BEM elements.
|
|
5420
5669
|
* **Theming:** The host always includes Foundation’s **`dark`** class so **`--xpl-*`** purpose tokens resolve to dark-mode
|
|
@@ -5426,12 +5675,16 @@ declare namespace LocalJSX {
|
|
|
5426
5675
|
* @default false
|
|
5427
5676
|
*/
|
|
5428
5677
|
"active"?: boolean;
|
|
5678
|
+
/**
|
|
5679
|
+
* Optional description line shown below **`label`** (row context only, e.g. inside **`xpl-nav-header-menu`** / **`xpl-top-nav-menu`**). Ignored when **`label`** is not set.
|
|
5680
|
+
*/
|
|
5681
|
+
"description"?: string;
|
|
5429
5682
|
/**
|
|
5430
5683
|
* If set without **`slot="dropdown"`**, the inner control renders as a native **`<a href>`** (link mode).
|
|
5431
5684
|
*/
|
|
5432
5685
|
"href"?: string;
|
|
5433
5686
|
/**
|
|
5434
|
-
* Icon name from **`@xplortech/apollo-icons`** (shown before the label when **`label`** is set).
|
|
5687
|
+
* Icon name from **`@xplortech/apollo-icons`** (shown before the label when **`label`** is set). Ignored when **`slot="leading-icon"`** content is present.
|
|
5435
5688
|
* @default ''
|
|
5436
5689
|
*/
|
|
5437
5690
|
"icon"?: string;
|
|
@@ -5444,15 +5697,54 @@ declare namespace LocalJSX {
|
|
|
5444
5697
|
*/
|
|
5445
5698
|
"label"?: string;
|
|
5446
5699
|
/**
|
|
5447
|
-
* Emitted for plain items (button or link) on pointer **click**, or when keyboard activation produces a **`click
|
|
5700
|
+
* Emitted for plain items (button or link) on pointer **click**, or when keyboard activation produces a **`click`**: the native **`<button>`** fires a real **`click`** on **Enter** / **Space**, a native **`<a href>`** on **Enter**, and **Space** on a link maps to a programmatic **`.click()`**. **`detail`** is always the real **`MouseEvent`** from that activation (keyboard-driven clicks have **`detail === 0`**). Not emitted when **`slot="dropdown"`** is used.
|
|
5448
5701
|
*/
|
|
5449
5702
|
"onNavItemClick"?: (event: XplTopNavItemCustomEvent<MouseEvent>) => void;
|
|
5703
|
+
/**
|
|
5704
|
+
* Emitted whenever **`open`** changes (click, hover, keyboard, Escape, outside click, or programmatic).
|
|
5705
|
+
*/
|
|
5706
|
+
"onOpenChange"?: (event: XplTopNavItemCustomEvent<boolean>) => void;
|
|
5707
|
+
/**
|
|
5708
|
+
* Whether the **`slot="dropdown"`** panel is open. Reflected to the **`open`** attribute so consumers can drive it (controlled) or read it back (uncontrolled, toggled internally on click / hover / keyboard activation). Prefer **`openMenu()`** / **`closeMenu()`** / **`toggleMenu()`** over setting this directly from event handlers.
|
|
5709
|
+
* @default false
|
|
5710
|
+
*/
|
|
5711
|
+
"open"?: boolean;
|
|
5712
|
+
/**
|
|
5713
|
+
* How the **`slot="dropdown"`** panel opens. **`hover`** is gated on **`TOP_NAV_ITEM_HOVER_OPEN_MQ`** (hover-capable, fine pointer, **`md`** and up) — below that, or on touch / coarse-pointer devices, **`hover`** falls back to click/tap. Keyboard activation (Enter / Space) always toggles regardless of **`openMode`**.
|
|
5714
|
+
* @default 'click'
|
|
5715
|
+
*/
|
|
5716
|
+
"openMode"?: 'click' | 'hover';
|
|
5450
5717
|
/**
|
|
5451
5718
|
* When true, sets **`aria-current="page"`** and selected styling.
|
|
5452
5719
|
* @default false
|
|
5453
5720
|
*/
|
|
5454
5721
|
"selected"?: boolean;
|
|
5455
5722
|
}
|
|
5723
|
+
/**
|
|
5724
|
+
* Thin grouping container for **`xpl-top-nav-item`** rows — the panel content for a desktop flyout
|
|
5725
|
+
* (**`slot="dropdown"`** on the parent **`xpl-top-nav-item`**) and, on small screens, the **mobile
|
|
5726
|
+
* cascade**: the same markup drills in to a **Level 2** view in place, with an auto-rendered **back
|
|
5727
|
+
* row** (leading **`chevron-left`** + this component's **`label`**) as the first row. Tapping the back
|
|
5728
|
+
* row closes the parent trigger's dropdown (**`closeMenu()`**), returning to **Level 1** and restoring
|
|
5729
|
+
* focus to the parent trigger. No item logic otherwise lives here — row behavior (icons, description,
|
|
5730
|
+
* links, nested dropdowns) is entirely **`xpl-top-nav-item`**.
|
|
5731
|
+
* **One authoring markup, two renderings:** consumers write this once; **`isMobileCascade`** (synced
|
|
5732
|
+
* from **`TOP_NAV_MOBILE_MQ`**) decides whether the back row renders. Desktop never sees it — the
|
|
5733
|
+
* flyout is a single level of links (see `xpl-top-nav-item`'s cascade-depth notes).
|
|
5734
|
+
* **Panel chrome** is shared with **`xpl-nav-header-menu`** (the account menu): width
|
|
5735
|
+
* (**`--xpl-top-nav-panel-width`**), surface, shadow, radius, and vertical padding all come from the
|
|
5736
|
+
* same selector in `top-nav.css` so the desktop flyout, mobile cascade, and account menu read as one
|
|
5737
|
+
* visual family.
|
|
5738
|
+
* **Theming:** The host always includes Foundation’s **`dark`** class so **`--xpl-*`** purpose tokens
|
|
5739
|
+
* resolve to dark-mode values even when the page root is light (consistent with the rest of the
|
|
5740
|
+
* **`xpl-top-nav`** family).
|
|
5741
|
+
*/
|
|
5742
|
+
interface XplTopNavMenu {
|
|
5743
|
+
/**
|
|
5744
|
+
* Accessible name for the list (**`aria-label`** on the host) and the label shown in the mobile cascade back row when drilling back out of this group.
|
|
5745
|
+
*/
|
|
5746
|
+
"label"?: string;
|
|
5747
|
+
}
|
|
5456
5748
|
interface XplUtilityBar {
|
|
5457
5749
|
/**
|
|
5458
5750
|
* @property {boolean} - Optional property that defines whether or not the main nav is open at startup.
|
|
@@ -5714,6 +6006,7 @@ declare namespace LocalJSX {
|
|
|
5714
6006
|
interface XplInputPhoneAttributes {
|
|
5715
6007
|
"defaultCountry": string;
|
|
5716
6008
|
"disabled": boolean;
|
|
6009
|
+
"error": boolean;
|
|
5717
6010
|
"inputId": string;
|
|
5718
6011
|
"isInternational": boolean;
|
|
5719
6012
|
"name": string;
|
|
@@ -5850,6 +6143,7 @@ declare namespace LocalJSX {
|
|
|
5850
6143
|
}
|
|
5851
6144
|
interface XplSideNavAttributes {
|
|
5852
6145
|
"label": string;
|
|
6146
|
+
"open": boolean;
|
|
5853
6147
|
}
|
|
5854
6148
|
interface XplSideNavItemAttributes {
|
|
5855
6149
|
"disabled": boolean;
|
|
@@ -5978,12 +6272,18 @@ declare namespace LocalJSX {
|
|
|
5978
6272
|
}
|
|
5979
6273
|
interface XplTopNavItemAttributes {
|
|
5980
6274
|
"active": boolean;
|
|
6275
|
+
"description": string;
|
|
5981
6276
|
"href": string;
|
|
5982
6277
|
"icon": string;
|
|
5983
6278
|
"itemAriaLabel": string;
|
|
5984
6279
|
"label": string;
|
|
6280
|
+
"open": boolean;
|
|
6281
|
+
"openMode": 'click' | 'hover';
|
|
5985
6282
|
"selected": boolean;
|
|
5986
6283
|
}
|
|
6284
|
+
interface XplTopNavMenuAttributes {
|
|
6285
|
+
"label": string;
|
|
6286
|
+
}
|
|
5987
6287
|
interface XplUtilityBarAttributes {
|
|
5988
6288
|
"navControl": boolean;
|
|
5989
6289
|
"isNavOpenAtStartup": boolean;
|
|
@@ -6058,6 +6358,7 @@ declare namespace LocalJSX {
|
|
|
6058
6358
|
"xpl-tooltip": Omit<XplTooltip, keyof XplTooltipAttributes> & { [K in keyof XplTooltip & keyof XplTooltipAttributes]?: XplTooltip[K] } & { [K in keyof XplTooltip & keyof XplTooltipAttributes as `attr:${K}`]?: XplTooltipAttributes[K] } & { [K in keyof XplTooltip & keyof XplTooltipAttributes as `prop:${K}`]?: XplTooltip[K] };
|
|
6059
6359
|
"xpl-top-nav": Omit<XplTopNav, keyof XplTopNavAttributes> & { [K in keyof XplTopNav & keyof XplTopNavAttributes]?: XplTopNav[K] } & { [K in keyof XplTopNav & keyof XplTopNavAttributes as `attr:${K}`]?: XplTopNavAttributes[K] } & { [K in keyof XplTopNav & keyof XplTopNavAttributes as `prop:${K}`]?: XplTopNav[K] };
|
|
6060
6360
|
"xpl-top-nav-item": Omit<XplTopNavItem, keyof XplTopNavItemAttributes> & { [K in keyof XplTopNavItem & keyof XplTopNavItemAttributes]?: XplTopNavItem[K] } & { [K in keyof XplTopNavItem & keyof XplTopNavItemAttributes as `attr:${K}`]?: XplTopNavItemAttributes[K] } & { [K in keyof XplTopNavItem & keyof XplTopNavItemAttributes as `prop:${K}`]?: XplTopNavItem[K] };
|
|
6361
|
+
"xpl-top-nav-menu": Omit<XplTopNavMenu, keyof XplTopNavMenuAttributes> & { [K in keyof XplTopNavMenu & keyof XplTopNavMenuAttributes]?: XplTopNavMenu[K] } & { [K in keyof XplTopNavMenu & keyof XplTopNavMenuAttributes as `attr:${K}`]?: XplTopNavMenuAttributes[K] } & { [K in keyof XplTopNavMenu & keyof XplTopNavMenuAttributes as `prop:${K}`]?: XplTopNavMenu[K] };
|
|
6061
6362
|
"xpl-utility-bar": Omit<XplUtilityBar, keyof XplUtilityBarAttributes> & { [K in keyof XplUtilityBar & keyof XplUtilityBarAttributes]?: XplUtilityBar[K] } & { [K in keyof XplUtilityBar & keyof XplUtilityBarAttributes as `attr:${K}`]?: XplUtilityBarAttributes[K] } & { [K in keyof XplUtilityBar & keyof XplUtilityBarAttributes as `prop:${K}`]?: XplUtilityBar[K] };
|
|
6062
6363
|
}
|
|
6063
6364
|
}
|
|
@@ -6140,7 +6441,46 @@ declare module "@stencil/core" {
|
|
|
6140
6441
|
"xpl-radio": LocalJSX.IntrinsicElements["xpl-radio"] & JSXBase.HTMLAttributes<HTMLXplRadioElement>;
|
|
6141
6442
|
"xpl-secondary-nav": LocalJSX.IntrinsicElements["xpl-secondary-nav"] & JSXBase.HTMLAttributes<HTMLXplSecondaryNavElement>;
|
|
6142
6443
|
"xpl-select": LocalJSX.IntrinsicElements["xpl-select"] & JSXBase.HTMLAttributes<HTMLXplSelectElement>;
|
|
6444
|
+
/**
|
|
6445
|
+
* Slot-based sidebar for app navigation: a scrollable main `section` and a fixed
|
|
6446
|
+
* `nav-footer`. Compose with `xpl-side-nav-item` for rows.
|
|
6447
|
+
* **Mobile (v2):** below the Tailwind `md` breakpoint, the sidebar collapses to a
|
|
6448
|
+
* ~56px top bar with a toggle button (`sidebar-left-show` / `sidebar-left-hide`).
|
|
6449
|
+
* Activating the toggle opens a drawer containing the `section` + `nav-footer`
|
|
6450
|
+
* content behind an `xpl-backdrop` scrim. The drawer traps focus while open;
|
|
6451
|
+
* Escape or a backdrop click closes it and returns focus to the toggle. Above
|
|
6452
|
+
* `md` the toggle and backdrop are hidden via CSS and the sidebar renders inline.
|
|
6453
|
+
* The toggle is always rendered (no gating prop) and hidden above the breakpoint
|
|
6454
|
+
* in CSS. Open state is exposed via the `open` prop (controlled or uncontrolled),
|
|
6455
|
+
* the `openChange` event, and the `toggle()` / `setOpen()` methods.
|
|
6456
|
+
* **v2 breaking change (beta):** consumers who wrapped their own mobile toggle
|
|
6457
|
+
* around `xpl-side-nav` should remove it — the toggle and drawer are now built in.
|
|
6458
|
+
*/
|
|
6143
6459
|
"xpl-side-nav": LocalJSX.IntrinsicElements["xpl-side-nav"] & JSXBase.HTMLAttributes<HTMLXplSideNavElement>;
|
|
6460
|
+
/**
|
|
6461
|
+
* Navigation row for `xpl-side-nav`. Renders a button (default) or a slot-only
|
|
6462
|
+
* anchor container (`link` mode). Three slot positions are available:
|
|
6463
|
+
* - `slot="leading"` — leading icon column (renamed from `slot="icon"` in v2).
|
|
6464
|
+
* The `icon` prop is a convenience shorthand that renders an `xpl-icon` here
|
|
6465
|
+
* when no slotted `leading` content is present.
|
|
6466
|
+
* - `slot="trailing"` — trailing content (e.g. `xpl-icon icon="external-link"`).
|
|
6467
|
+
* When `has-children` is true and no `trailing` slot content is provided, an
|
|
6468
|
+
* auto chevron is rendered automatically in this position: `chevron-down` when
|
|
6469
|
+
* collapsed, `chevron-up` when expanded.
|
|
6470
|
+
* - default slot — nested `xpl-side-nav-item` children (expandable parents only).
|
|
6471
|
+
* **v2 breaking changes (beta):**
|
|
6472
|
+
* - `slot="icon"` renamed to `slot="leading"` — no alias kept.
|
|
6473
|
+
* - Parent rows (`has-children`) now render the leading icon alongside the chevron.
|
|
6474
|
+
* Previously parents showed chevron + label only (no leading icon).
|
|
6475
|
+
* - The chevron has moved from the leading position to the trailing position.
|
|
6476
|
+
* - A slotted `slot="trailing"` replaces the auto chevron on parent rows.
|
|
6477
|
+
* **Migration:**
|
|
6478
|
+
* | Before (v1) | After (v2) | Action |
|
|
6479
|
+
* |---|---|---|
|
|
6480
|
+
* | `slot="icon"` | `slot="leading"` | Rename the slot attribute |
|
|
6481
|
+
* | Parent row: chevron only (no leading) | Parent row: leading icon + chevron | Pass `icon` prop or `slot="leading"` |
|
|
6482
|
+
* | (no trailing slot) | `slot="trailing"` | Add for custom trailing content |
|
|
6483
|
+
*/
|
|
6144
6484
|
"xpl-side-nav-item": LocalJSX.IntrinsicElements["xpl-side-nav-item"] & JSXBase.HTMLAttributes<HTMLXplSideNavItemElement>;
|
|
6145
6485
|
"xpl-skeleton": LocalJSX.IntrinsicElements["xpl-skeleton"] & JSXBase.HTMLAttributes<HTMLXplSkeletonElement>;
|
|
6146
6486
|
"xpl-slideout": LocalJSX.IntrinsicElements["xpl-slideout"] & JSXBase.HTMLAttributes<HTMLXplSlideoutElement>;
|
|
@@ -6180,22 +6520,45 @@ declare module "@stencil/core" {
|
|
|
6180
6520
|
*/
|
|
6181
6521
|
"xpl-top-nav": LocalJSX.IntrinsicElements["xpl-top-nav"] & JSXBase.HTMLAttributes<HTMLXplTopNavElement>;
|
|
6182
6522
|
/**
|
|
6183
|
-
* Single nav row for **`xpl-top-nav`** / **`xpl-nav-header-menu`**. The host uses
|
|
6184
|
-
* participates in a list: a **`role="list"`** parent, **`slot="left-aside"`** on
|
|
6185
|
-
* **`.xpl-top-nav__left-primary`** while slotted nodes stay light-DOM children of
|
|
6186
|
-
* under **`xpl-nav-header-menu`**. That flag is
|
|
6523
|
+
* Single nav row for **`xpl-top-nav`** / **`xpl-nav-header-menu`** / **`xpl-top-nav-menu`**. The host uses
|
|
6524
|
+
* **`role="listitem"`** when the row participates in a list: a **`role="list"`** parent, **`slot="left-aside"`** on
|
|
6525
|
+
* **`xpl-top-nav`** (list host is **`.xpl-top-nav__left-primary`** while slotted nodes stay light-DOM children of
|
|
6526
|
+
* **`xpl-top-nav`**), or default-slot rows under **`xpl-nav-header-menu`** / **`xpl-top-nav-menu`**. That flag is
|
|
6187
6527
|
* kept in **`@State`** and refreshed after render plus via **`MutationObserver`** on the host (**`class`**, **`slot`**) and
|
|
6188
6528
|
* on **`parentElement`** (**`role`**) or on **`.xpl-top-nav__left-primary`** (**`role`**) for **`slot="left-aside"`** under **`xpl-top-nav`**) so DOM context changes
|
|
6189
6529
|
* without a full reconnect still re-sync. The internal
|
|
6190
6530
|
* **`xpl-top-nav__brand`** row omits **`listitem`** (it sits in **`.xpl-top-nav__brand-bar`**, not **`.xpl-top-nav__left-primary`**),
|
|
6191
6531
|
* as do **`slot="right-aside-mobile"`** rows (not a list). **`slot="dropdown"`** uses a local **`.xpl-top-nav-item__dropdown`**
|
|
6192
6532
|
* panel (not **`xpl-dropdown`**); see **`TECH_DEBT.md`**.
|
|
6533
|
+
* **This component does triple duty:** a plain bar item, a dropdown trigger (**`slot="dropdown"`** present), and a
|
|
6534
|
+
* dropdown/menu **row** (nested inside **`xpl-nav-header-menu`** or **`xpl-top-nav-menu`**). The **`description`** prop
|
|
6535
|
+
* only applies in the row context — bar items and triggers do not show it in Figma.
|
|
6193
6536
|
* **Default slot (no `label`):** do not put **`xpl-top-nav-item__inner`** or other **`xpl-top-nav-item__*`** classes on
|
|
6194
6537
|
* custom trigger content — the component renders the inner wrapper and BEM elements.
|
|
6195
6538
|
* **Theming:** The host always includes Foundation’s **`dark`** class so **`--xpl-*`** purpose tokens resolve to dark-mode
|
|
6196
6539
|
* values even when the page root is light (consistent with **`xpl-top-nav`**).
|
|
6197
6540
|
*/
|
|
6198
6541
|
"xpl-top-nav-item": LocalJSX.IntrinsicElements["xpl-top-nav-item"] & JSXBase.HTMLAttributes<HTMLXplTopNavItemElement>;
|
|
6542
|
+
/**
|
|
6543
|
+
* Thin grouping container for **`xpl-top-nav-item`** rows — the panel content for a desktop flyout
|
|
6544
|
+
* (**`slot="dropdown"`** on the parent **`xpl-top-nav-item`**) and, on small screens, the **mobile
|
|
6545
|
+
* cascade**: the same markup drills in to a **Level 2** view in place, with an auto-rendered **back
|
|
6546
|
+
* row** (leading **`chevron-left`** + this component's **`label`**) as the first row. Tapping the back
|
|
6547
|
+
* row closes the parent trigger's dropdown (**`closeMenu()`**), returning to **Level 1** and restoring
|
|
6548
|
+
* focus to the parent trigger. No item logic otherwise lives here — row behavior (icons, description,
|
|
6549
|
+
* links, nested dropdowns) is entirely **`xpl-top-nav-item`**.
|
|
6550
|
+
* **One authoring markup, two renderings:** consumers write this once; **`isMobileCascade`** (synced
|
|
6551
|
+
* from **`TOP_NAV_MOBILE_MQ`**) decides whether the back row renders. Desktop never sees it — the
|
|
6552
|
+
* flyout is a single level of links (see `xpl-top-nav-item`'s cascade-depth notes).
|
|
6553
|
+
* **Panel chrome** is shared with **`xpl-nav-header-menu`** (the account menu): width
|
|
6554
|
+
* (**`--xpl-top-nav-panel-width`**), surface, shadow, radius, and vertical padding all come from the
|
|
6555
|
+
* same selector in `top-nav.css` so the desktop flyout, mobile cascade, and account menu read as one
|
|
6556
|
+
* visual family.
|
|
6557
|
+
* **Theming:** The host always includes Foundation’s **`dark`** class so **`--xpl-*`** purpose tokens
|
|
6558
|
+
* resolve to dark-mode values even when the page root is light (consistent with the rest of the
|
|
6559
|
+
* **`xpl-top-nav`** family).
|
|
6560
|
+
*/
|
|
6561
|
+
"xpl-top-nav-menu": LocalJSX.IntrinsicElements["xpl-top-nav-menu"] & JSXBase.HTMLAttributes<HTMLXplTopNavMenuElement>;
|
|
6199
6562
|
"xpl-utility-bar": LocalJSX.IntrinsicElements["xpl-utility-bar"] & JSXBase.HTMLAttributes<HTMLXplUtilityBarElement>;
|
|
6200
6563
|
}
|
|
6201
6564
|
}
|