@xplortech/apollo-core 2.6.0 → 2.7.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 +737 -63
- package/build/style.css +5415 -1805
- package/dist/apollo-core/apollo-core.css +62 -22
- package/dist/apollo-core/apollo-core.esm.js +1 -1
- package/dist/apollo-core/{p-8a1affce.entry.js → p-084d26ed.entry.js} +1 -1
- package/dist/apollo-core/p-146d5d55.entry.js +1 -0
- package/dist/apollo-core/p-16742606.entry.js +1 -0
- package/dist/apollo-core/{p-42016063.entry.js → p-28d12fd3.entry.js} +1 -1
- package/dist/apollo-core/p-3eb5eb7c.entry.js +1 -0
- package/dist/apollo-core/p-4882f0bd.entry.js +1 -0
- package/dist/apollo-core/p-64b34268.entry.js +1 -0
- package/dist/apollo-core/p-6c956d4e.entry.js +1 -0
- package/dist/apollo-core/p-71b75f36.entry.js +1 -0
- package/dist/apollo-core/{p-02167464.entry.js → p-7eb86c63.entry.js} +1 -1
- package/dist/apollo-core/{p-1fd3dc87.entry.js → p-84254a24.entry.js} +1 -1
- package/dist/apollo-core/p-9f2a0321.entry.js +1 -0
- package/dist/apollo-core/{p-C_Z2nG0p.js → p-C7bgJs6C.js} +2 -2
- package/dist/apollo-core/p-cde83ab0.entry.js +1 -0
- package/dist/apollo-core/p-e7363036.entry.js +1 -0
- package/dist/cjs/apollo-core.cjs.js +3 -3
- package/dist/cjs/{index-DH6pgWru.js → index-BQ97-AWw.js} +18 -15
- package/dist/cjs/loader.cjs.js +2 -2
- 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_47.cjs.entry.js → xpl-avatar_61.cjs.entry.js} +6096 -1461
- package/dist/cjs/xpl-button-row.cjs.entry.js +2 -2
- package/dist/cjs/xpl-calendar.cjs.entry.js +2 -2
- 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-toggle.cjs.entry.js +4 -4
- package/dist/cjs/xpl-toolbar.cjs.entry.js +3 -3
- package/dist/collection/collection-manifest.json +18 -7
- 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-avatar/avatar.stories.js +122 -107
- package/dist/collection/components/xpl-avatar/xpl-avatar.js +249 -15
- package/dist/collection/components/xpl-backdrop/xpl-backdrop.js +1 -1
- package/dist/collection/components/xpl-badge/badge.stories.js +1 -33
- package/dist/collection/components/xpl-badge/xpl-badge.js +1 -1
- package/dist/collection/components/xpl-banner/xpl-banner.js +4 -3
- 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/xpl-button.js +21 -3
- 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 +47 -25
- 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 +2 -2
- 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 +46 -53
- package/dist/collection/components/xpl-icon/xpl-icon.js +2 -2
- package/dist/collection/components/xpl-input/input.stories.js +96 -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 +5 -5
- package/dist/collection/components/xpl-input/xpl-input-search/xpl-input-search.js +485 -0
- package/dist/collection/components/xpl-input/xpl-input-time/xpl-input-time.js +2 -2
- package/dist/collection/components/xpl-input/xpl-input.js +130 -18
- package/dist/collection/components/xpl-large-card/xpl-large-card.js +1 -1
- package/dist/collection/components/xpl-list/list.stories.js +300 -63
- package/dist/collection/components/xpl-list/xpl-list-item/xpl-list-item.js +818 -0
- package/dist/collection/components/xpl-list/xpl-list.js +579 -21
- package/dist/collection/components/xpl-main-nav/xpl-main-nav.js +1 -1
- package/dist/collection/components/xpl-modal/xpl-modal.js +1 -1
- package/dist/collection/components/xpl-nav-item/xpl-nav-item.js +2 -2
- package/dist/collection/components/xpl-pagination/xpl-pagination.js +3 -3
- package/dist/collection/components/xpl-panel/panel.stories.js +5 -3
- package/dist/collection/components/xpl-panel/xpl-panel.js +3 -3
- 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/progress-indicator.stories.js +118 -0
- package/dist/collection/components/xpl-progress-indicator/xpl-progress-indicator.js +171 -0
- 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 +6 -6
- package/dist/collection/components/xpl-side-nav/xpl-side-nav-item/xpl-side-nav-item.js +2 -2
- package/dist/collection/components/xpl-side-nav/xpl-side-nav.js +2 -2
- 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/spotlight.stories.js +385 -0
- package/dist/collection/components/xpl-spotlight/xpl-spotlight.js +1085 -0
- package/dist/collection/components/xpl-tab/xpl-tab.js +261 -8
- package/dist/collection/components/xpl-tab-panel/xpl-tab-panel.js +22 -15
- package/dist/collection/components/xpl-table/table.stories.js +319 -67
- package/dist/collection/components/xpl-table/utils/move-row-dom.js +50 -0
- package/dist/collection/components/xpl-table/utils/table-internal.js +58 -0
- package/dist/collection/components/xpl-table/xpl-table-body/xpl-table-body.js +7 -0
- package/dist/collection/components/xpl-table/xpl-table-cell/xpl-table-cell.js +155 -0
- package/dist/collection/components/xpl-table/xpl-table-footer/xpl-table-footer.js +7 -0
- package/dist/collection/components/xpl-table/xpl-table-footer-cell/xpl-table-footer-cell.js +37 -0
- package/dist/collection/components/xpl-table/xpl-table-header/table-header.stories.js +131 -0
- package/dist/collection/components/xpl-table/xpl-table-header/xpl-table-header.js +7 -0
- package/dist/collection/components/xpl-table/xpl-table-header-cell/table-header-cell.stories.js +105 -0
- package/dist/collection/components/xpl-table/xpl-table-header-cell/xpl-table-header-cell.js +402 -0
- package/dist/collection/components/xpl-table/xpl-table-row/xpl-table-row.js +121 -0
- package/dist/collection/components/xpl-table/xpl-table.js +1448 -143
- package/dist/collection/components/xpl-tabs/segment-control.stories.js +31 -0
- package/dist/collection/components/xpl-tabs/tabs.shared.js +156 -0
- package/dist/collection/components/xpl-tabs/tabs.stories.js +10 -60
- package/dist/collection/components/xpl-tabs/xpl-tabs.js +338 -62
- package/dist/collection/components/xpl-tag/tag.stories.js +153 -0
- package/dist/collection/components/xpl-tag/xpl-tag.js +312 -9
- 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/xpl-tooltip.js +1 -1
- package/dist/collection/components/xpl-top-nav/top-nav.stories.js +625 -0
- package/dist/collection/components/xpl-top-nav/xpl-nav-header-menu/xpl-nav-header-menu.js +122 -0
- package/dist/collection/components/xpl-top-nav/xpl-top-nav-item/xpl-top-nav-item.js +481 -0
- package/dist/collection/components/xpl-top-nav/xpl-top-nav.js +433 -0
- package/dist/collection/components/xpl-utility-bar/xpl-utility-bar.js +1 -1
- package/dist/collection/utils/lifecycle.js +79 -0
- package/dist/collection/utils/tab-a11y-ids.js +22 -0
- package/dist/components/floating-ui.dom.js +1 -0
- package/dist/components/index.js +1 -1
- package/dist/components/lifecycle.js +1 -0
- package/dist/components/tab-a11y-ids.js +1 -0
- package/dist/components/xpl-accordion.js +1 -1
- package/dist/components/xpl-application-shell.js +1 -1
- package/dist/components/xpl-avatar2.js +1 -1
- package/dist/components/xpl-backdrop2.js +1 -1
- package/dist/components/xpl-badge2.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-button2.js +1 -1
- package/dist/components/xpl-calendar.js +1 -1
- package/dist/components/xpl-checkbox2.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-divider2.js +1 -1
- package/dist/components/xpl-dropdown-group2.js +1 -1
- package/dist/components/xpl-dropdown-heading2.js +1 -1
- package/dist/components/xpl-dropdown-option2.js +1 -1
- package/dist/components/xpl-dropdown2.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-icon2.js +1 -1
- package/dist/components/xpl-input-date2.js +1 -1
- package/dist/components/xpl-input-file2.js +1 -1
- package/dist/components/xpl-input-search.d.ts +11 -0
- package/dist/components/xpl-input-search.js +1 -0
- package/dist/components/xpl-input-search2.js +1 -0
- package/dist/components/xpl-input2.js +1 -1
- package/dist/components/xpl-large-card.js +1 -1
- package/dist/components/{xpl-progress.d.ts → xpl-list-item.d.ts} +4 -4
- package/dist/components/xpl-list-item.js +1 -0
- package/dist/components/xpl-list-item2.js +1 -0
- 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.d.ts +11 -0
- package/dist/components/xpl-nav-header-menu.js +1 -0
- 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-popover2.js +1 -1
- package/dist/components/xpl-progress-bar.js +1 -1
- package/dist/components/xpl-progress-indicator.d.ts +11 -0
- package/dist/components/xpl-progress-indicator.js +1 -0
- package/dist/components/xpl-radio2.js +1 -1
- package/dist/components/xpl-secondary-nav.js +1 -1
- package/dist/components/xpl-select2.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.d.ts +11 -0
- package/dist/components/xpl-spotlight.js +1 -0
- package/dist/components/xpl-tab-panel.js +1 -1
- package/dist/components/xpl-tab.js +1 -1
- package/dist/components/xpl-table-body.d.ts +11 -0
- package/dist/components/xpl-table-body.js +1 -0
- package/dist/components/xpl-table-cell.d.ts +11 -0
- package/dist/components/xpl-table-cell.js +1 -0
- package/dist/components/xpl-table-cell2.js +1 -0
- package/dist/components/xpl-table-footer-cell.d.ts +11 -0
- package/dist/components/xpl-table-footer-cell.js +1 -0
- package/dist/components/xpl-table-footer-cell2.js +1 -0
- package/dist/components/xpl-table-footer.d.ts +11 -0
- package/dist/components/xpl-table-footer.js +1 -0
- package/dist/components/xpl-table-header-cell.js +1 -1
- package/dist/components/xpl-table-header-cell2.js +1 -0
- package/dist/components/xpl-table-header.js +1 -1
- package/dist/components/xpl-table-row.d.ts +11 -0
- package/dist/components/xpl-table-row.js +1 -0
- package/dist/components/xpl-table.js +1 -1
- package/dist/components/xpl-tabs.js +1 -1
- package/dist/components/xpl-tag2.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-tooltip2.js +1 -1
- package/dist/components/xpl-top-nav-item.d.ts +11 -0
- package/dist/components/xpl-top-nav-item.js +1 -0
- package/dist/components/xpl-top-nav-item2.js +1 -0
- package/dist/components/xpl-top-nav.d.ts +11 -0
- package/dist/components/xpl-top-nav.js +1 -0
- package/dist/components/xpl-utility-bar.js +1 -1
- package/dist/docs/xpl-avatar/readme.md +289 -15
- package/dist/docs/xpl-badge/readme.md +14 -9
- package/dist/docs/xpl-banner/readme.md +48 -11
- package/dist/docs/xpl-button/readme.md +28 -18
- package/dist/docs/xpl-calendar/readme.md +1 -1
- package/dist/docs/xpl-checkbox/readme.md +19 -16
- package/dist/docs/xpl-divider/readme.md +6 -4
- package/dist/docs/xpl-dropdown/readme.md +1 -1
- package/dist/docs/xpl-dynamic-table/readme.md +22 -19
- package/dist/docs/xpl-dynamic-table-cell/readme.md +20 -18
- package/dist/docs/xpl-dynamic-table-row/readme.md +21 -19
- package/dist/docs/xpl-icon/readme.md +15 -3
- package/dist/docs/xpl-input/readme.md +66 -41
- package/dist/docs/xpl-input/xpl-input-color/readme.md +1 -0
- package/dist/docs/xpl-input/xpl-input-phone/readme.md +1 -0
- package/dist/docs/xpl-input/xpl-input-search/readme.md +175 -0
- package/dist/docs/xpl-input/xpl-input-time/readme.md +1 -0
- package/dist/docs/xpl-list/readme.md +320 -10
- package/dist/docs/xpl-list/xpl-list-item/readme.md +99 -0
- package/dist/docs/xpl-pagination/readme.md +1 -0
- package/dist/docs/xpl-panel/readme.md +108 -17
- package/dist/docs/xpl-popover/readme.md +2 -0
- package/dist/docs/xpl-progress-indicator/readme.md +234 -0
- package/dist/docs/xpl-radio/readme.md +6 -4
- package/dist/docs/xpl-select/readme.md +2 -1
- package/dist/docs/xpl-side-nav/readme.md +2 -2
- package/dist/docs/xpl-slideout/readme.md +1 -1
- package/dist/docs/xpl-spotlight/readme.md +235 -0
- package/dist/docs/xpl-tab/readme.md +43 -7
- package/dist/docs/xpl-tab-panel/readme.md +42 -0
- package/dist/docs/xpl-table/readme.md +110 -46
- package/dist/docs/xpl-table/xpl-table-body/readme.md +10 -0
- package/dist/docs/xpl-table/xpl-table-cell/readme.md +33 -0
- package/dist/docs/xpl-table/xpl-table-footer/readme.md +10 -0
- package/dist/docs/xpl-table/xpl-table-footer-cell/readme.md +30 -0
- package/dist/docs/{xpl-table-header → xpl-table/xpl-table-header}/readme.md +13 -13
- package/dist/docs/xpl-table/xpl-table-header-cell/readme.md +66 -0
- package/dist/docs/xpl-table/xpl-table-row/readme.md +19 -0
- package/dist/docs/xpl-tabs/readme.md +62 -8
- package/dist/docs/xpl-tag/readme.md +379 -4
- package/dist/docs/xpl-toast/readme.md +1 -1
- package/dist/docs/xpl-top-nav/readme.md +179 -0
- package/dist/docs/xpl-top-nav/xpl-nav-header-menu/readme.md +81 -0
- package/dist/docs/xpl-top-nav/xpl-top-nav-item/readme.md +87 -0
- package/dist/esm/apollo-core.js +4 -4
- package/dist/esm/{index-C_Z2nG0p.js → index-C7bgJs6C.js} +18 -16
- package/dist/esm/loader.js +3 -3
- package/dist/esm/xpl-accordion.entry.js +3 -3
- package/dist/esm/xpl-application-shell.entry.js +2 -2
- package/dist/esm/{xpl-avatar_47.entry.js → xpl-avatar_61.entry.js} +6082 -1461
- package/dist/esm/xpl-button-row.entry.js +2 -2
- package/dist/esm/xpl-calendar.entry.js +2 -2
- 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-toggle.entry.js +4 -4
- package/dist/esm/xpl-toolbar.entry.js +3 -3
- package/dist/types/components/xpl-avatar/avatar.stories.d.ts +88 -29
- package/dist/types/components/xpl-avatar/xpl-avatar.d.ts +29 -2
- package/dist/types/components/xpl-badge/badge.stories.d.ts +0 -19
- package/dist/types/components/xpl-button/xpl-button.d.ts +7 -0
- package/dist/types/components/xpl-checkbox/xpl-checkbox.d.ts +4 -3
- package/dist/types/components/xpl-header-accordion/xpl-header-accordion.d.ts +9 -10
- package/dist/types/components/xpl-input/input.stories.d.ts +1 -0
- package/dist/types/components/xpl-input/xpl-input-search/xpl-input-search.d.ts +39 -0
- package/dist/types/components/xpl-input/xpl-input.d.ts +13 -5
- package/dist/types/components/xpl-list/list.stories.d.ts +299 -13
- package/dist/types/components/xpl-list/listitem.d.ts +13 -0
- package/dist/types/components/xpl-list/xpl-list-item/xpl-list-item.d.ts +71 -0
- package/dist/types/components/xpl-list/xpl-list.d.ts +55 -2
- package/dist/types/components/xpl-panel/panel.stories.d.ts +2 -0
- package/dist/types/components/xpl-progress-indicator/progress-indicator.stories.d.ts +62 -0
- package/dist/types/components/xpl-progress-indicator/xpl-progress-indicator.d.ts +11 -0
- package/dist/types/components/xpl-spotlight/spotlight.stories.d.ts +197 -0
- package/dist/types/components/xpl-spotlight/xpl-spotlight.d.ts +101 -0
- package/dist/types/components/xpl-tab/xpl-tab.d.ts +14 -1
- package/dist/types/components/xpl-tab-panel/xpl-tab-panel.d.ts +2 -1
- package/dist/types/components/xpl-table/table.stories.d.ts +161 -19
- package/dist/types/components/xpl-table/utils/move-row-dom.d.ts +3 -0
- package/dist/types/components/xpl-table/utils/table-internal.d.ts +8 -0
- package/dist/types/components/xpl-table/xpl-table-body/xpl-table-body.d.ts +3 -0
- package/dist/types/components/xpl-table/xpl-table-cell/xpl-table-cell.d.ts +11 -0
- package/dist/types/components/xpl-table/xpl-table-footer/xpl-table-footer.d.ts +3 -0
- package/dist/types/components/xpl-table/xpl-table-footer-cell/xpl-table-footer-cell.d.ts +4 -0
- package/dist/types/components/{xpl-table-header → xpl-table/xpl-table-header}/table-header.stories.d.ts +13 -16
- package/dist/types/components/{xpl-table-header-cell → xpl-table/xpl-table-header-cell}/table-header-cell.stories.d.ts +24 -20
- package/dist/types/components/xpl-table/xpl-table-header-cell/xpl-table-header-cell.d.ts +32 -0
- package/dist/types/components/xpl-table/xpl-table-row/xpl-table-row.d.ts +13 -0
- package/dist/types/components/xpl-table/xpl-table.d.ts +123 -21
- package/dist/types/components/xpl-tabs/segment-control.stories.d.ts +112 -0
- package/dist/types/components/xpl-tabs/tabs.shared.d.ts +156 -0
- package/dist/types/components/xpl-tabs/tabs.stories.d.ts +65 -12
- package/dist/types/components/xpl-tabs/xpl-tabs.d.ts +37 -18
- package/dist/types/components/xpl-tag/tag.stories.d.ts +65 -0
- package/dist/types/components/xpl-tag/xpl-tag.d.ts +36 -1
- package/dist/types/components/xpl-top-nav/top-nav.stories.d.ts +471 -0
- package/dist/types/components/xpl-top-nav/xpl-nav-header-menu/xpl-nav-header-menu.d.ts +18 -0
- package/dist/types/components/xpl-top-nav/xpl-top-nav-item/xpl-top-nav-item.d.ts +48 -0
- package/dist/types/components/xpl-top-nav/xpl-top-nav.d.ts +51 -0
- package/dist/types/components.d.ts +1888 -148
- package/dist/types/utils/lifecycle.d.ts +16 -0
- package/dist/types/utils/tab-a11y-ids.d.ts +4 -0
- package/package.json +3 -3
- package/dist/apollo-core/p-0bce3874.entry.js +0 -1
- package/dist/apollo-core/p-5549756c.entry.js +0 -1
- package/dist/apollo-core/p-56fa4941.entry.js +0 -1
- package/dist/apollo-core/p-76c324da.entry.js +0 -1
- package/dist/apollo-core/p-7a3224b4.entry.js +0 -1
- package/dist/apollo-core/p-7e924697.entry.js +0 -1
- package/dist/apollo-core/p-9efca9e1.entry.js +0 -1
- package/dist/apollo-core/p-b252b380.entry.js +0 -1
- package/dist/apollo-core/p-c91daac1.entry.js +0 -1
- package/dist/apollo-core/p-d9b62508.entry.js +0 -1
- package/dist/apollo-core/p-eaea16d1.entry.js +0 -1
- package/dist/apollo-core/p-eed13bca.entry.js +0 -1
- package/dist/apollo-core/p-f5af9539.entry.js +0 -1
- package/dist/cjs/xpl-list.cjs.entry.js +0 -32
- package/dist/cjs/xpl-table-header-cell.cjs.entry.js +0 -57
- package/dist/cjs/xpl-table-header.cjs.entry.js +0 -14
- package/dist/collection/components/xpl-progress/progress.stories.js +0 -106
- package/dist/collection/components/xpl-progress/xpl-progress.js +0 -60
- package/dist/collection/components/xpl-table-header/table-header.stories.js +0 -126
- package/dist/collection/components/xpl-table-header/xpl-table-header.js +0 -7
- package/dist/collection/components/xpl-table-header-cell/table-header-cell.stories.js +0 -75
- package/dist/collection/components/xpl-table-header-cell/xpl-table-header-cell.js +0 -188
- package/dist/components/xpl-progress.js +0 -1
- package/dist/docs/xpl-progress/readme.md +0 -22
- package/dist/docs/xpl-table-header-cell/readme.md +0 -47
- package/dist/esm/xpl-list.entry.js +0 -30
- package/dist/esm/xpl-table-header-cell.entry.js +0 -55
- package/dist/esm/xpl-table-header.entry.js +0 -12
- package/dist/types/components/xpl-progress/progress.stories.d.ts +0 -38
- package/dist/types/components/xpl-progress/xpl-progress.d.ts +0 -6
- package/dist/types/components/xpl-table-header-cell/xpl-table-header-cell.d.ts +0 -13
- /package/dist/types/components/{xpl-table-header → xpl-table/xpl-table-header}/xpl-table-header.d.ts +0 -0
|
@@ -5,16 +5,28 @@
|
|
|
5
5
|
* It contains typing information for all components that exist in this project.
|
|
6
6
|
*/
|
|
7
7
|
import { HTMLStencilElement, JSXBase } from "./stencil-public-runtime";
|
|
8
|
+
import { AvatarColor, AvatarGroupItem, AvatarStatus, AvatarVariant } from "./components/xpl-avatar/xpl-avatar";
|
|
8
9
|
import { BadgeVariantProp } from "./components/xpl-badge/xpl-badge";
|
|
9
10
|
import { Choice } from "./components/xpl-choicelist/choice";
|
|
10
11
|
import { DropdownItem, DropdownOptionGroup } from "./components/xpl-dropdown/dropdown-option";
|
|
11
|
-
import { ListItem } from "./components/xpl-list/listitem";
|
|
12
|
+
import { ListItem, XplListOrderChangeDetail } from "./components/xpl-list/listitem";
|
|
13
|
+
import { BadgeVariantProp as BadgeVariantProp1 } from "./components/xpl-badge/xpl-badge";
|
|
12
14
|
import { PopoverPosition } from "./components/xpl-popover/xpl-popover";
|
|
15
|
+
import { SpotlightActionLayout, SpotlightAnchorPosition } from "./components/xpl-spotlight/xpl-spotlight";
|
|
16
|
+
import { XplTableRowOrderChangeDetail, XplTableSortChangedDetail } from "./components/xpl-table/xpl-table";
|
|
17
|
+
import { HeaderSortChangeDetail } from "./components/xpl-table/xpl-table-header-cell/xpl-table-header-cell";
|
|
18
|
+
import { TagDragEndDetail, TagDragStartDetail } from "./components/xpl-tag/xpl-tag";
|
|
19
|
+
export { AvatarColor, AvatarGroupItem, AvatarStatus, AvatarVariant } from "./components/xpl-avatar/xpl-avatar";
|
|
13
20
|
export { BadgeVariantProp } from "./components/xpl-badge/xpl-badge";
|
|
14
21
|
export { Choice } from "./components/xpl-choicelist/choice";
|
|
15
22
|
export { DropdownItem, DropdownOptionGroup } from "./components/xpl-dropdown/dropdown-option";
|
|
16
|
-
export { ListItem } from "./components/xpl-list/listitem";
|
|
23
|
+
export { ListItem, XplListOrderChangeDetail } from "./components/xpl-list/listitem";
|
|
24
|
+
export { BadgeVariantProp as BadgeVariantProp1 } from "./components/xpl-badge/xpl-badge";
|
|
17
25
|
export { PopoverPosition } from "./components/xpl-popover/xpl-popover";
|
|
26
|
+
export { SpotlightActionLayout, SpotlightAnchorPosition } from "./components/xpl-spotlight/xpl-spotlight";
|
|
27
|
+
export { XplTableRowOrderChangeDetail, XplTableSortChangedDetail } from "./components/xpl-table/xpl-table";
|
|
28
|
+
export { HeaderSortChangeDetail } from "./components/xpl-table/xpl-table-header-cell/xpl-table-header-cell";
|
|
29
|
+
export { TagDragEndDetail, TagDragStartDetail } from "./components/xpl-tag/xpl-tag";
|
|
18
30
|
export namespace Components {
|
|
19
31
|
interface XplAccordion {
|
|
20
32
|
/**
|
|
@@ -76,22 +88,26 @@ export namespace Components {
|
|
|
76
88
|
/**
|
|
77
89
|
* Background color when there is no image src
|
|
78
90
|
*/
|
|
79
|
-
"color"?:
|
|
91
|
+
"color"?: AvatarColor;
|
|
80
92
|
/**
|
|
81
93
|
* Sets a disabled state on the avatar when set to true
|
|
82
94
|
* @default false
|
|
83
95
|
*/
|
|
84
96
|
"disabled"?: boolean;
|
|
97
|
+
/**
|
|
98
|
+
* When `variant` is `group`, data for each face (max 4 visible + overflow count). Each item: { src?, name?, color? }.
|
|
99
|
+
*/
|
|
100
|
+
"groupData"?: AvatarGroupItem[] | string;
|
|
85
101
|
/**
|
|
86
102
|
* The URL if the avatar should be hyperlinked
|
|
87
103
|
*/
|
|
88
104
|
"href"?: string;
|
|
89
105
|
/**
|
|
90
|
-
* Alt text for the image
|
|
106
|
+
* Alt text for the image; also used for initials when no image and no slot.
|
|
91
107
|
*/
|
|
92
108
|
"name"?: string;
|
|
93
109
|
/**
|
|
94
|
-
* Size of the avatar
|
|
110
|
+
* Size of the avatar (and of each avatar in a group).
|
|
95
111
|
*/
|
|
96
112
|
"size"?: 'md' | 'sm';
|
|
97
113
|
/**
|
|
@@ -99,13 +115,22 @@ export namespace Components {
|
|
|
99
115
|
*/
|
|
100
116
|
"src"?: string;
|
|
101
117
|
/**
|
|
102
|
-
*
|
|
118
|
+
* Shown for the default avatar, `profile`, and `with-text`; not shown when `variant` is `group`. **Legacy
|
|
119
|
+
* @deprecated :** `active`, `warning`, and `inactive` still map to `green`, `red`, and `gray` for existing consumers. Prefer palette names; legacy values are scheduled for removal in the next **major** release.
|
|
120
|
+
*/
|
|
121
|
+
"status"?: AvatarStatus;
|
|
122
|
+
/**
|
|
123
|
+
* Secondary text shown when `variant` is `with-text` (e.g. email).
|
|
103
124
|
*/
|
|
104
|
-
"
|
|
125
|
+
"subText"?: string;
|
|
105
126
|
/**
|
|
106
127
|
* Where to open the URL chosen for the `href` prop: `_self` (default), `_blank`, `_parent`, or `_top`
|
|
107
128
|
*/
|
|
108
129
|
"target"?: string;
|
|
130
|
+
/**
|
|
131
|
+
* Optional layout: `profile` (large profile sizes), `group` (stacked faces + `groupData`; `status` not shown), `with-text` (avatar with `name` / `subText` beside it). Omit for the default single avatar.
|
|
132
|
+
*/
|
|
133
|
+
"variant"?: AvatarVariant;
|
|
109
134
|
}
|
|
110
135
|
interface XplBackdrop {
|
|
111
136
|
/**
|
|
@@ -193,6 +218,16 @@ export namespace Components {
|
|
|
193
218
|
interface XplBreadcrumbs {
|
|
194
219
|
}
|
|
195
220
|
interface XplButton {
|
|
221
|
+
/**
|
|
222
|
+
* Attributes to apply to the inner native `<button>` (e.g., tab a11y wiring). Use this instead of setting `id` / `role` / `aria-*` on the host when the inner control is the element that needs them (e.g., WAI-ARIA composite widgets).
|
|
223
|
+
*/
|
|
224
|
+
"controlAttrs"?: {
|
|
225
|
+
id?: string;
|
|
226
|
+
role?: string;
|
|
227
|
+
'aria-controls'?: string;
|
|
228
|
+
'aria-selected'?: 'true' | 'false';
|
|
229
|
+
'aria-current'?: string;
|
|
230
|
+
};
|
|
196
231
|
/**
|
|
197
232
|
* Whether button should be disabled
|
|
198
233
|
* @default false
|
|
@@ -311,6 +346,11 @@ export namespace Components {
|
|
|
311
346
|
"setDate": (date: string | string[]) => Promise<void>;
|
|
312
347
|
}
|
|
313
348
|
interface XplCheckbox {
|
|
349
|
+
/**
|
|
350
|
+
* Accessible name for the native checkbox input (sets `aria-label` on the `input`). Use when there is no visible label text in the default slot. Defaults to `''`; empty or whitespace-only values omit `aria-label` on the input so a visible `<label>` remains the sole name source.
|
|
351
|
+
* @default ''
|
|
352
|
+
*/
|
|
353
|
+
"ariaLabel": string;
|
|
314
354
|
/**
|
|
315
355
|
* Whether the input is checked
|
|
316
356
|
*/
|
|
@@ -536,8 +576,16 @@ export namespace Components {
|
|
|
536
576
|
*/
|
|
537
577
|
"value"?: string;
|
|
538
578
|
}
|
|
579
|
+
/**
|
|
580
|
+
* @deprecated Use the compositional `<xpl-table>` API instead.
|
|
581
|
+
* This component will be removed in a future major release.
|
|
582
|
+
*/
|
|
539
583
|
interface XplDynamicTable {
|
|
540
584
|
}
|
|
585
|
+
/**
|
|
586
|
+
* @deprecated Use `<xpl-table-cell>` instead.
|
|
587
|
+
* This component will be removed in a future major release.
|
|
588
|
+
*/
|
|
541
589
|
interface XplDynamicTableCell {
|
|
542
590
|
/**
|
|
543
591
|
* Whether the cell and its contents are disabled.
|
|
@@ -545,6 +593,10 @@ export namespace Components {
|
|
|
545
593
|
*/
|
|
546
594
|
"disabled": boolean;
|
|
547
595
|
}
|
|
596
|
+
/**
|
|
597
|
+
* @deprecated Use `<xpl-table-row>` instead.
|
|
598
|
+
* This component will be removed in a future major release.
|
|
599
|
+
*/
|
|
548
600
|
interface XplDynamicTableRow {
|
|
549
601
|
/**
|
|
550
602
|
* Whether the row and its cells are disabled.
|
|
@@ -638,7 +690,12 @@ export namespace Components {
|
|
|
638
690
|
*/
|
|
639
691
|
"allowCustomOption"?: boolean;
|
|
640
692
|
/**
|
|
641
|
-
*
|
|
693
|
+
* Accessible name for search inputs when there is no visible `label` (after trim). Ignored for naming when a visible label is shown. Defaults to `''`; whitespace-only values are treated as missing and fall back to `'Search'` so the field is never unnamed when there is no visible label. Applies to search inputs (`type="search"`).
|
|
694
|
+
* @default ''
|
|
695
|
+
*/
|
|
696
|
+
"ariaLabel": string;
|
|
697
|
+
/**
|
|
698
|
+
* Hint for form autofill feature Applies to text, password, number, and search inputs.
|
|
642
699
|
*/
|
|
643
700
|
"autocomplete"?: string;
|
|
644
701
|
/**
|
|
@@ -723,7 +780,7 @@ export namespace Components {
|
|
|
723
780
|
*/
|
|
724
781
|
"name"?: string;
|
|
725
782
|
/**
|
|
726
|
-
* Placeholder text that appears when the field has no value Applies to text, password, number, and
|
|
783
|
+
* Placeholder text that appears when the field has no value Applies to text, password, number, date, and search inputs.
|
|
727
784
|
*/
|
|
728
785
|
"placeholder"?: string;
|
|
729
786
|
/**
|
|
@@ -739,13 +796,21 @@ export namespace Components {
|
|
|
739
796
|
*/
|
|
740
797
|
"preferredCountries"?: string[];
|
|
741
798
|
/**
|
|
742
|
-
* Whether the input is editable Applies to text, password, number, and
|
|
799
|
+
* Whether the input is editable Applies to text, password, number, date, and search inputs.
|
|
743
800
|
*/
|
|
744
801
|
"readonly"?: boolean;
|
|
745
802
|
/**
|
|
746
803
|
* Whether the input is required Applies to all input types.
|
|
747
804
|
*/
|
|
748
805
|
"required"?: boolean;
|
|
806
|
+
/**
|
|
807
|
+
* Moves keyboard focus to the native control (text field, textarea, or search inner input).
|
|
808
|
+
*/
|
|
809
|
+
"setFocus": () => Promise<void>;
|
|
810
|
+
/**
|
|
811
|
+
* Shell corner radius for search inputs: `rounded` (pill) or `box` (rounded rectangle). Applies to search inputs (`type="search"`).
|
|
812
|
+
*/
|
|
813
|
+
"shape"?: 'rounded' | 'box';
|
|
749
814
|
/**
|
|
750
815
|
* The granularity that the value in a `number` input must adhere to when incrementing or decrementing. The default stepping value for number inputs is 1 Applies to number and time inputs.
|
|
751
816
|
*/
|
|
@@ -759,9 +824,17 @@ export namespace Components {
|
|
|
759
824
|
* The type of form control
|
|
760
825
|
* @default 'text'
|
|
761
826
|
*/
|
|
762
|
-
"type"?:
|
|
827
|
+
"type"?: | 'date'
|
|
828
|
+
| 'time'
|
|
829
|
+
| 'text'
|
|
830
|
+
| 'number'
|
|
831
|
+
| 'password'
|
|
832
|
+
| 'file'
|
|
833
|
+
| 'color'
|
|
834
|
+
| 'phone'
|
|
835
|
+
| 'search';
|
|
763
836
|
/**
|
|
764
|
-
* Including a `value` will pre-populate the input with the given string. Applies to text, password, number, and
|
|
837
|
+
* Including a `value` will pre-populate the input with the given string. Applies to text, password, number, date, and search inputs.
|
|
765
838
|
*/
|
|
766
839
|
"value"?: string;
|
|
767
840
|
}
|
|
@@ -935,6 +1008,74 @@ export namespace Components {
|
|
|
935
1008
|
*/
|
|
936
1009
|
"value"?: string;
|
|
937
1010
|
}
|
|
1011
|
+
interface XplInputSearch {
|
|
1012
|
+
/**
|
|
1013
|
+
* Accessible name when there is no visible label from the parent; maps to `aria-label` on the input. When the parent provides a visible label, the input is named by `<label for="…">` — this prop is ignored for naming. Empty or whitespace-only values are treated as missing and fall back to `'Search'` so the field is never unnamed.
|
|
1014
|
+
* @default 'Search'
|
|
1015
|
+
*/
|
|
1016
|
+
"ariaLabel": string;
|
|
1017
|
+
/**
|
|
1018
|
+
* Passed to the native input (`autocomplete` attribute). Default `off` matches common inline-search UX; browsers may still apply heuristics.
|
|
1019
|
+
* @default 'off'
|
|
1020
|
+
*/
|
|
1021
|
+
"autocomplete": string;
|
|
1022
|
+
/**
|
|
1023
|
+
* Disables the field and clear control.
|
|
1024
|
+
* @default false
|
|
1025
|
+
*/
|
|
1026
|
+
"disabled": boolean;
|
|
1027
|
+
/**
|
|
1028
|
+
* Element id for `aria-describedby` when `hasError` (error message lives on `xpl-input`).
|
|
1029
|
+
*/
|
|
1030
|
+
"errorMessageId"?: string;
|
|
1031
|
+
/**
|
|
1032
|
+
* Set by `xpl-input` when `error` is shown — drives `aria-invalid` / `aria-describedby`.
|
|
1033
|
+
* @default false
|
|
1034
|
+
*/
|
|
1035
|
+
"hasError": boolean;
|
|
1036
|
+
/**
|
|
1037
|
+
* When true, parent `xpl-input` renders a visible label — omit `aria-label` on the input.
|
|
1038
|
+
* @default false
|
|
1039
|
+
*/
|
|
1040
|
+
"hasVisibleLabel": boolean;
|
|
1041
|
+
/**
|
|
1042
|
+
* Associates the control with the parent `xpl-input` label (`for` / `id`).
|
|
1043
|
+
*/
|
|
1044
|
+
"inputId": string;
|
|
1045
|
+
/**
|
|
1046
|
+
* Form field `name` on the native input.
|
|
1047
|
+
*/
|
|
1048
|
+
"name"?: string;
|
|
1049
|
+
/**
|
|
1050
|
+
* Placeholder shown when the value is empty.
|
|
1051
|
+
* @default 'Search'
|
|
1052
|
+
*/
|
|
1053
|
+
"placeholder": string;
|
|
1054
|
+
/**
|
|
1055
|
+
* Whether the input is editable.
|
|
1056
|
+
* @default false
|
|
1057
|
+
*/
|
|
1058
|
+
"readonly": boolean;
|
|
1059
|
+
/**
|
|
1060
|
+
* Whether the input is required.
|
|
1061
|
+
* @default false
|
|
1062
|
+
*/
|
|
1063
|
+
"required": boolean;
|
|
1064
|
+
/**
|
|
1065
|
+
* Moves keyboard focus to the search field.
|
|
1066
|
+
*/
|
|
1067
|
+
"setFocus": () => Promise<void>;
|
|
1068
|
+
/**
|
|
1069
|
+
* Shell corner radius: `rounded` (pill) or `box` (rounded rectangle).
|
|
1070
|
+
* @default 'rounded'
|
|
1071
|
+
*/
|
|
1072
|
+
"shape": 'rounded' | 'box';
|
|
1073
|
+
/**
|
|
1074
|
+
* Current value (controlled-friendly).
|
|
1075
|
+
* @default ''
|
|
1076
|
+
*/
|
|
1077
|
+
"value": string;
|
|
1078
|
+
}
|
|
938
1079
|
interface XplInputTime {
|
|
939
1080
|
/**
|
|
940
1081
|
* For time inputs, whether to allow custom option in the input even if not available in the dropdown. Example: A step of 30 minutes will allow 15:03, 15:37, etc. Applies to time inputs.
|
|
@@ -1011,10 +1152,94 @@ export namespace Components {
|
|
|
1011
1152
|
}
|
|
1012
1153
|
interface XplList {
|
|
1013
1154
|
/**
|
|
1014
|
-
*
|
|
1155
|
+
* Clears all radio selections in the list. Also runs when `selectable` is true, the user presses Escape, and focus is on the selected row. Emits `itemSelect` once per row that was selected (checked radio or `selected` prop), typically one.
|
|
1156
|
+
*/
|
|
1157
|
+
"clearSelection": () => Promise<void>;
|
|
1158
|
+
/**
|
|
1159
|
+
* Array of list items to render. Each item should follow the ListItem interface. **Deprecated.** Use slot-based xpl-list-item children instead.
|
|
1015
1160
|
* @default []
|
|
1016
1161
|
*/
|
|
1017
|
-
"items"
|
|
1162
|
+
"items": ListItem[];
|
|
1163
|
+
/**
|
|
1164
|
+
* Accessible name for the list, exposed as `aria-label` on the host when set. Use when the list has no visible heading. Ignored when `labelledBy` is set (see `labelledBy` for precedence).
|
|
1165
|
+
*/
|
|
1166
|
+
"label"?: string;
|
|
1167
|
+
/**
|
|
1168
|
+
* Element id(s) that label this list (space-separated), exposed as `aria-labelledby` when set. When set, `label` is not applied as `aria-label` so the list has a single naming source.
|
|
1169
|
+
*/
|
|
1170
|
+
"labelledBy"?: string;
|
|
1171
|
+
/**
|
|
1172
|
+
* When true, enables reorder UI and behavior for **slot-based** child rows (drag handle + keyboard). Legacy rows rendered from the deprecated `items` prop do **not** show a drag handle; migrate to slots if reorder is required.
|
|
1173
|
+
* @default false
|
|
1174
|
+
*/
|
|
1175
|
+
"reorderable": boolean;
|
|
1176
|
+
/**
|
|
1177
|
+
* Determines if this list is selectable (shows `xpl-radio` per row in a shared group). Press Escape while focus is on the **selected** row to clear selection (same as `clearSelection()`).
|
|
1178
|
+
* @default false
|
|
1179
|
+
*/
|
|
1180
|
+
"selectable": boolean;
|
|
1181
|
+
}
|
|
1182
|
+
interface XplListItem {
|
|
1183
|
+
/**
|
|
1184
|
+
* Whether the item is disabled.
|
|
1185
|
+
* @default false
|
|
1186
|
+
*/
|
|
1187
|
+
"disabled"?: boolean;
|
|
1188
|
+
/**
|
|
1189
|
+
* Whether to show the item in an error state.
|
|
1190
|
+
* @default false
|
|
1191
|
+
*/
|
|
1192
|
+
"error"?: boolean;
|
|
1193
|
+
/**
|
|
1194
|
+
* When true, the row is not shown and does not participate in visible-only list behavior (e.g. `orderChange` / `orderedItemIds`, reorder targets). Use for filtering, conditional display, or keeping stable `item-id` while the row is off-screen. See `xpl-list` readme “Hidden rows”. **Accessibility:** Renders an empty host with the native `hidden` attribute only (no `role="listitem"`), consistent with the row not participating as a list item while hidden.
|
|
1195
|
+
* @default false
|
|
1196
|
+
*/
|
|
1197
|
+
"hidden": boolean;
|
|
1198
|
+
/**
|
|
1199
|
+
* URL for link behavior. When provided, the entire row becomes clickable. Clicks on `actions` or `avatar` slots are prevented from triggering navigation.
|
|
1200
|
+
*/
|
|
1201
|
+
"href"?: string;
|
|
1202
|
+
/**
|
|
1203
|
+
* Optional item data for prop-based rendering. When provided, this takes precedence over slotted content and renders using the legacy ListItem interface. **Deprecated.** Prefer slot-based composition (named slots on `xpl-list-item`).
|
|
1204
|
+
*/
|
|
1205
|
+
"item"?: ListItem;
|
|
1206
|
+
/**
|
|
1207
|
+
* Unique identifier for this item. Used for selection and drag/drop. Mutable so the host can sync from `item-id` / `id` in `componentWillLoad` without breaking one-way data flow.
|
|
1208
|
+
*/
|
|
1209
|
+
"itemId"?: string;
|
|
1210
|
+
/**
|
|
1211
|
+
* When set by the parent, indicates this item is the active keyboard reorder item.
|
|
1212
|
+
* @default false
|
|
1213
|
+
*/
|
|
1214
|
+
"keyboardActive"?: boolean;
|
|
1215
|
+
/**
|
|
1216
|
+
* Name attribute for radio inputs (shared across selectable items in a list).
|
|
1217
|
+
*/
|
|
1218
|
+
"radioName"?: string;
|
|
1219
|
+
/**
|
|
1220
|
+
* Whether this item is reorderable (shows a drag handle in **slot-based** layout). When the deprecated `item` prop is used, legacy markup has **no** reorder handle even if this is true.
|
|
1221
|
+
* @default false
|
|
1222
|
+
*/
|
|
1223
|
+
"reorderable"?: boolean;
|
|
1224
|
+
/**
|
|
1225
|
+
* Whether this item is selectable (shows `xpl-radio` in a shared group).
|
|
1226
|
+
* @default false
|
|
1227
|
+
*/
|
|
1228
|
+
"selectable"?: boolean;
|
|
1229
|
+
/**
|
|
1230
|
+
* Whether this item is selected (radio checked state).
|
|
1231
|
+
* @default false
|
|
1232
|
+
*/
|
|
1233
|
+
"selected"?: boolean;
|
|
1234
|
+
/**
|
|
1235
|
+
* Whether to show a divider below the item.
|
|
1236
|
+
* @default false
|
|
1237
|
+
*/
|
|
1238
|
+
"showDivider"?: boolean;
|
|
1239
|
+
/**
|
|
1240
|
+
* Optional badge to display next to the title (dot badge). Only used when `item` prop is not provided (slot mode). Matches `xpl-badge` variant values (e.g. purple, green, red).
|
|
1241
|
+
*/
|
|
1242
|
+
"titleBadgeVariant"?: BadgeVariantProp1;
|
|
1018
1243
|
}
|
|
1019
1244
|
interface XplMainNav {
|
|
1020
1245
|
/**
|
|
@@ -1040,6 +1265,34 @@ export namespace Components {
|
|
|
1040
1265
|
*/
|
|
1041
1266
|
"variant": 'default' | 'warning';
|
|
1042
1267
|
}
|
|
1268
|
+
/**
|
|
1269
|
+
* Profile / account block (username, email, default slot for **`xpl-top-nav-item`** / **`xpl-divider`**).
|
|
1270
|
+
* Tag **`xpl-nav-header-menu`**; implementation folder **`xpl-nav-header-menu`**. **`.xpl-nav-header-menu__slot`** is
|
|
1271
|
+
* **`role="list"`** for slotted **`xpl-top-nav-item`** (**`role="listitem"`**).
|
|
1272
|
+
* **Slotted content:** do not add **`xpl-nav-header-menu__*`** BEM classes on nodes you pass into the default slot —
|
|
1273
|
+
* profile, list shell, and **`xpl-top-nav-item`** **`role="listitem"`** are handled by the component. Use
|
|
1274
|
+
* **`xpl-top-nav-item`** (or plain elements that are not Apollo **`xpl-*`** BEM hooks) in the slot only.
|
|
1275
|
+
* **`slot="right-aside-mobile"`** — optional block **between** the profile header and the default-slot list (e.g. narrow-only
|
|
1276
|
+
* duplicate of **every** **`slot="right-aside"`** control per Figma when **`xpl-top-nav`** hides **`right-aside`** on narrow viewports (always)).
|
|
1277
|
+
* Not **`role="list"`**; use **`xpl-button`** / **`xpl-top-nav-item`** as needed. Shown only on **narrow viewports** (one pixel below Tailwind **`md`** — **`top-nav.css`**) so bar actions stay in **`slot="right-aside"`** on wider viewports.
|
|
1278
|
+
* Light-DOM **`slotchange`** is unreliable; a host **`MutationObserver`** (child / subtree / **`slot`** attribute) keeps
|
|
1279
|
+
* **`xpl-nav-header-menu--has-right-aside-mobile`** in sync when nodes are added or retargeted after mount (same pattern as **`xpl-top-nav`**).
|
|
1280
|
+
* Stencil **`newSpecPage`** / mock-doc does not define **`MutationObserver`**; slot presence still updates on the next
|
|
1281
|
+
* deferred flush (**`setTimeout(0)`** coalesced with **`componentDidRender`**). In real browsers the observer handles child /
|
|
1282
|
+
* **`slot`** mutations without stacking uncancellable microtasks.
|
|
1283
|
+
* **Theming:** The host always includes Foundation’s **`dark`** class so **`--xpl-*`** purpose tokens resolve to dark-mode
|
|
1284
|
+
* values even when the page root is light (same contract as **`xpl-top-nav`** / **`xpl-top-nav-item`**).
|
|
1285
|
+
*/
|
|
1286
|
+
interface XplNavHeaderMenu {
|
|
1287
|
+
/**
|
|
1288
|
+
* Email address shown below the username.
|
|
1289
|
+
*/
|
|
1290
|
+
"email"?: string;
|
|
1291
|
+
/**
|
|
1292
|
+
* Display name shown in the profile block.
|
|
1293
|
+
*/
|
|
1294
|
+
"username"?: string;
|
|
1295
|
+
}
|
|
1043
1296
|
interface XplNavItem {
|
|
1044
1297
|
/**
|
|
1045
1298
|
* @property {boolean} - Whether or not the item should control the main nav state on click
|
|
@@ -1085,7 +1338,7 @@ export namespace Components {
|
|
|
1085
1338
|
*/
|
|
1086
1339
|
"accent": 'none' | 'primary' | 'secondary' | 'positive' | 'negative' | 'highlight';
|
|
1087
1340
|
/**
|
|
1088
|
-
* Padding density applied to the content area.
|
|
1341
|
+
* Padding density applied to the content area. (default and tight keep desktop padding through tablet; mobile ≤480px). - `default` – 24 px desktop & tablet / 16 px mobile - `tight` – 16 px desktop & tablet / 8 px mobile - `loose` – 40 px desktop / 32 px tablet / 24 px mobile
|
|
1089
1342
|
* @default 'default'
|
|
1090
1343
|
*/
|
|
1091
1344
|
"padding": 'default' | 'tight' | 'loose';
|
|
@@ -1112,17 +1365,6 @@ export namespace Components {
|
|
|
1112
1365
|
*/
|
|
1113
1366
|
"position": PopoverPosition;
|
|
1114
1367
|
}
|
|
1115
|
-
interface XplProgress {
|
|
1116
|
-
/**
|
|
1117
|
-
* Current step, is the index of the current active step
|
|
1118
|
-
* @default 0
|
|
1119
|
-
*/
|
|
1120
|
-
"currentStep": number;
|
|
1121
|
-
/**
|
|
1122
|
-
* The steps is an array of the steps name.
|
|
1123
|
-
*/
|
|
1124
|
-
"steps"?: string[];
|
|
1125
|
-
}
|
|
1126
1368
|
interface XplProgressBar {
|
|
1127
1369
|
/**
|
|
1128
1370
|
* The helper text displayed below the progress bar (recommended for error state)
|
|
@@ -1153,6 +1395,32 @@ export namespace Components {
|
|
|
1153
1395
|
*/
|
|
1154
1396
|
"variant": 'default' | 'success' | 'error' | 'indeterminate';
|
|
1155
1397
|
}
|
|
1398
|
+
interface XplProgressIndicator {
|
|
1399
|
+
/**
|
|
1400
|
+
* Current step index. Steps with index < currentStep are "finished", the step at currentStep is "active", and steps beyond are "waiting". Set to steps.length to mark all steps as finished. Automatically clamped to [0, steps.length].
|
|
1401
|
+
* @default 0
|
|
1402
|
+
*/
|
|
1403
|
+
"currentStep": number;
|
|
1404
|
+
/**
|
|
1405
|
+
* Layout direction - 'horizontal' or 'vertical'
|
|
1406
|
+
* @default 'horizontal'
|
|
1407
|
+
*/
|
|
1408
|
+
"layout": 'horizontal' | 'vertical';
|
|
1409
|
+
/**
|
|
1410
|
+
* Whether to show step labels
|
|
1411
|
+
* @default true
|
|
1412
|
+
*/
|
|
1413
|
+
"showLabels": boolean;
|
|
1414
|
+
/**
|
|
1415
|
+
* Whether to show step numbers inside circles
|
|
1416
|
+
* @default true
|
|
1417
|
+
*/
|
|
1418
|
+
"showNumbers": boolean;
|
|
1419
|
+
/**
|
|
1420
|
+
* The steps is an array of the steps name.
|
|
1421
|
+
*/
|
|
1422
|
+
"steps"?: string[];
|
|
1423
|
+
}
|
|
1156
1424
|
interface XplRadio {
|
|
1157
1425
|
/**
|
|
1158
1426
|
* Whether the input is "on"
|
|
@@ -1354,16 +1622,126 @@ export namespace Components {
|
|
|
1354
1622
|
*/
|
|
1355
1623
|
"variant": 'default' | 'warning';
|
|
1356
1624
|
}
|
|
1625
|
+
interface XplSpotlight {
|
|
1626
|
+
/**
|
|
1627
|
+
* Footer action layout. `default` and `dual` both render the standard Back/Next layout, while `single` renders a single acknowledgement CTA (e.g. "Got it!"). Only applies when `showActions` is `true`.
|
|
1628
|
+
* @default 'default'
|
|
1629
|
+
*/
|
|
1630
|
+
"actionLayout": SpotlightActionLayout;
|
|
1631
|
+
/**
|
|
1632
|
+
* Which corner of the card the anchor dot uses when not using `target`, or as the preferred side for Floating UI.
|
|
1633
|
+
* @default 'top-left'
|
|
1634
|
+
*/
|
|
1635
|
+
"anchorPosition": SpotlightAnchorPosition;
|
|
1636
|
+
/**
|
|
1637
|
+
* Body copy when the `body` slot has no slotted content. Whitespace-only values are treated as empty (no fallback paragraph).
|
|
1638
|
+
*/
|
|
1639
|
+
"body"?: string;
|
|
1640
|
+
/**
|
|
1641
|
+
* Current step index (1-based). Used with `totalSteps` for the step label and for disabling default Back/Next when `showSteps` is true.
|
|
1642
|
+
* @default 1
|
|
1643
|
+
*/
|
|
1644
|
+
"currentStep": number;
|
|
1645
|
+
/**
|
|
1646
|
+
* Heading when the `title` slot has no slotted content. Whitespace-only values are treated as empty (no fallback title span).
|
|
1647
|
+
*/
|
|
1648
|
+
"heading"?: string;
|
|
1649
|
+
/**
|
|
1650
|
+
* Whether to show the dismiss (close) control.
|
|
1651
|
+
* @default true
|
|
1652
|
+
*/
|
|
1653
|
+
"isDismissible": boolean;
|
|
1654
|
+
/**
|
|
1655
|
+
* Controls whether the spotlight is rendered. When false, the host remains in the DOM but the spotlight UI is hidden.
|
|
1656
|
+
* @default true
|
|
1657
|
+
*/
|
|
1658
|
+
"isOpen": boolean;
|
|
1659
|
+
/**
|
|
1660
|
+
* Label used for the default primary action button. Only applies when `showActions` is `true`.
|
|
1661
|
+
* @default 'Next'
|
|
1662
|
+
*/
|
|
1663
|
+
"primaryActionLabel": string;
|
|
1664
|
+
/**
|
|
1665
|
+
* Label used for the default secondary action button. Only applies when `showActions` is `true`.
|
|
1666
|
+
* @default 'Back'
|
|
1667
|
+
*/
|
|
1668
|
+
"secondaryActionLabel": string;
|
|
1669
|
+
/**
|
|
1670
|
+
* Whether to show the actions row (primary / secondary and optional step counter). When `false`, the spotlight has no action buttons — useful for single-step informational callouts that rely solely on the dismiss control.
|
|
1671
|
+
* @default true
|
|
1672
|
+
*/
|
|
1673
|
+
"showActions": boolean;
|
|
1674
|
+
/**
|
|
1675
|
+
* When true, the media region is shown. Slotted `image` content is rendered when present; otherwise the built-in placeholder UI is shown. When false, the entire media block is hidden.
|
|
1676
|
+
* @default true
|
|
1677
|
+
*/
|
|
1678
|
+
"showImage": boolean;
|
|
1679
|
+
/**
|
|
1680
|
+
* Whether to show the step counter between actions (`currentStep` of `totalSteps`) and whether default Back/Next use step-based disabled state.
|
|
1681
|
+
* @default true
|
|
1682
|
+
*/
|
|
1683
|
+
"showSteps": boolean;
|
|
1684
|
+
/**
|
|
1685
|
+
* CSS selector for the element this spotlight anchors to. When set, placement uses Floating UI (`computePosition` with `strategy: 'fixed'`, plus `flip`, `shift`, `offset`) and `autoUpdate` for scroll/resize. The host receives `left` / `top` and the `xpl-spotlight--anchored` class. Invalid selectors are ignored; layout falls back to `anchor-position`.
|
|
1686
|
+
*/
|
|
1687
|
+
"target"?: string;
|
|
1688
|
+
/**
|
|
1689
|
+
* Total number of steps (1-based upper bound). Used with `currentStep` for the step label and for disabling default Back/Next when `showSteps` is true.
|
|
1690
|
+
* @default 1
|
|
1691
|
+
*/
|
|
1692
|
+
"totalSteps": number;
|
|
1693
|
+
}
|
|
1357
1694
|
interface XplTab {
|
|
1695
|
+
/**
|
|
1696
|
+
* Disables this tab (pill or underline).
|
|
1697
|
+
* @default false
|
|
1698
|
+
*/
|
|
1699
|
+
"disabled": boolean;
|
|
1700
|
+
/**
|
|
1701
|
+
* Focuses the tab's trigger button.
|
|
1702
|
+
*/
|
|
1703
|
+
"focusTrigger": () => Promise<void>;
|
|
1704
|
+
/**
|
|
1705
|
+
* Whether the tab should take full width (set by parent `xpl-tabs` when fullWidth is true).
|
|
1706
|
+
* @default false
|
|
1707
|
+
*/
|
|
1708
|
+
"fullWidth": boolean;
|
|
1709
|
+
/**
|
|
1710
|
+
* Returns the focusable button element for this tab (underline `<button>` or segment `xpl-button` inner button).
|
|
1711
|
+
*/
|
|
1712
|
+
"getFocusableElement": () => Promise<HTMLButtonElement | null>;
|
|
1713
|
+
/**
|
|
1714
|
+
* Set when the parent `xpl-tabs` has `disabled` (group-disabled).
|
|
1715
|
+
* @default false
|
|
1716
|
+
*/
|
|
1717
|
+
"groupDisabled": boolean;
|
|
1718
|
+
/**
|
|
1719
|
+
* Optional icon name for segment-style pills (`type="segment"` on parent `xpl-tabs`). Ignored for default tabs.
|
|
1720
|
+
*/
|
|
1721
|
+
"icon"?: string;
|
|
1722
|
+
/**
|
|
1723
|
+
* Icon position for segment-style pills.
|
|
1724
|
+
* @default 'start'
|
|
1725
|
+
*/
|
|
1726
|
+
"iconPosition": 'start' | 'end';
|
|
1358
1727
|
/**
|
|
1359
1728
|
* Whether the tab is selected
|
|
1360
1729
|
* @default false
|
|
1361
1730
|
*/
|
|
1362
1731
|
"selected": boolean;
|
|
1732
|
+
/**
|
|
1733
|
+
* Sets the tabindex on the focusable button element.
|
|
1734
|
+
*/
|
|
1735
|
+
"setTabIndex": (value: number) => Promise<void>;
|
|
1363
1736
|
/**
|
|
1364
1737
|
* The target of the tab, required for the tab to be selected
|
|
1365
1738
|
*/
|
|
1366
1739
|
"target": string;
|
|
1740
|
+
/**
|
|
1741
|
+
* Visual variant: 'tabs' for underline tabs, 'segment' for pill controls. Set by the parent `xpl-tabs` component based on its `type` prop.
|
|
1742
|
+
* @default 'tabs'
|
|
1743
|
+
*/
|
|
1744
|
+
"variant": 'tabs' | 'segment';
|
|
1367
1745
|
}
|
|
1368
1746
|
interface XplTabPanel {
|
|
1369
1747
|
/**
|
|
@@ -1376,39 +1754,62 @@ export namespace Components {
|
|
|
1376
1754
|
*/
|
|
1377
1755
|
"target": string;
|
|
1378
1756
|
}
|
|
1757
|
+
/**
|
|
1758
|
+
* Compositional tables use CSS grid on the host (`role="grid"`). Legacy mode uses a `<table>`.
|
|
1759
|
+
*/
|
|
1379
1760
|
interface XplTable {
|
|
1380
1761
|
/**
|
|
1381
|
-
* The header values for each column.
|
|
1762
|
+
* @deprecated Legacy data-driven table API only (`columns` / `data` / `footer`). May be removed in a future major release. The header values for each column.
|
|
1382
1763
|
*/
|
|
1383
1764
|
"columns"?: string[];
|
|
1384
1765
|
/**
|
|
1385
|
-
* The data for the body of the table.
|
|
1766
|
+
* @deprecated Legacy data-driven table API only (`columns` / `data` / `footer`). May be removed in a future major release. The data for the body of the table.
|
|
1386
1767
|
*/
|
|
1387
1768
|
"data"?: string[][];
|
|
1388
1769
|
/**
|
|
1389
|
-
* The data for the footer of the table.
|
|
1770
|
+
* @deprecated Legacy data-driven table API only (`columns` / `data` / `footer`). May be removed in a future major release. The data for the footer of the table.
|
|
1390
1771
|
*/
|
|
1391
1772
|
"footer"?: string[][];
|
|
1392
1773
|
/**
|
|
1393
|
-
* When true, the first column
|
|
1774
|
+
* When true, the first **data** column (per row) is sticky during horizontal scroll. Leading compositional columns are skipped: `selectable` (checkbox) and/or `row-reorderable` (grip) are not frozen so they scroll with the grid; the next column stays pinned at `left: 0`.
|
|
1394
1775
|
*/
|
|
1395
1776
|
"freeze"?: boolean;
|
|
1396
1777
|
/**
|
|
1397
|
-
* Toggles to show the sort button on each table head
|
|
1778
|
+
* @deprecated Legacy data-driven table API only. May be removed in a future major release. Toggles to show the sort button on each table head.
|
|
1398
1779
|
* @default false
|
|
1399
1780
|
*/
|
|
1400
1781
|
"isSortable"?: boolean;
|
|
1401
1782
|
/**
|
|
1402
|
-
*
|
|
1783
|
+
* Accessible label for the table. Maps to `aria-label` in compositional mode.
|
|
1784
|
+
*/
|
|
1785
|
+
"label"?: string;
|
|
1786
|
+
/**
|
|
1787
|
+
* @deprecated Legacy data-driven table API only. May be removed in a future major release. Toggles a selectable checkbox for each row in the table.
|
|
1403
1788
|
*/
|
|
1404
1789
|
"multiselect"?: boolean;
|
|
1405
1790
|
/**
|
|
1406
|
-
*
|
|
1791
|
+
* Icon name for the optional `xpl-icon` inside each **managed** reorder grip when the row is **not** in keyboard reorder mode (pointer / idle). Set to `""` to omit the icon so you can style the button or author a fully custom reorder column in markup. When omitted, defaults to `grip-dots-vertical`.
|
|
1792
|
+
*/
|
|
1793
|
+
"reorderHandleIcon"?: string;
|
|
1794
|
+
/**
|
|
1795
|
+
* Icon name for the managed reorder grip **while that row is in keyboard reorder mode** (after the user activates the grip with Enter or Space). Use a different icon than `reorder-handle-icon` so users can see they should use arrow keys. When omitted, defaults to `caret-expand-y` (same as `xpl-list` keyboard reorder). Set to `""` to show no icon in keyboard mode only (combine with CSS on `.xpl-table__row-drag-handle--keyboard-mode` if needed).
|
|
1796
|
+
*/
|
|
1797
|
+
"reorderHandleIconKeyboard"?: string;
|
|
1798
|
+
/**
|
|
1799
|
+
* When true (compositional mode only), **prepends** a managed reorder column as the **first** grid column (empty header + grip button per body row) and enables HTML5 drag-and-drop row reordering (same interaction model as `xpl-list`). With `selectable`, DOM order is **reorder | selection | data** unless you author a custom reorder column. The table updates the DOM and emits `rowOrderChange`; consumers should persist order if needed. Ignored in legacy `columns`/`data` mode.
|
|
1800
|
+
*/
|
|
1801
|
+
"rowReorderable"?: boolean;
|
|
1802
|
+
/**
|
|
1803
|
+
* When true (compositional mode only), enables row selection state, the selection toolbar (“N Selected”), and `rowSelectionChange`. **You must add the selection column in your markup:** a header cell with `type="checkbox"`, a body cell containing `xpl-checkbox` per row (aligned with that column), and matching `xpl-table-footer-cell` cells when you use a footer. Each body row should use `row-id` on `xpl-table-row` (or accept auto-generated ids) so `rowSelectionChange` can report `selectedRowIds`. The toolbar uses the same layout as `xpl-toolbar` and is visible only while at least one row is selected. Use `toolbar-actions-left` / `toolbar-actions-right` slots on this host for bulk actions.
|
|
1804
|
+
*/
|
|
1805
|
+
"selectable"?: boolean;
|
|
1806
|
+
/**
|
|
1807
|
+
* @deprecated Legacy data-driven table API only. May be removed in a future major release. The values for the input for each row when multiselect is activated.
|
|
1407
1808
|
* @default []
|
|
1408
1809
|
*/
|
|
1409
1810
|
"selectedValues"?: string[];
|
|
1410
1811
|
/**
|
|
1411
|
-
* Manually determined if the column is sortable
|
|
1812
|
+
* @deprecated Use the compositional slot-based API instead. Will be removed in a future major release. Manually determined if the column is sortable.
|
|
1412
1813
|
* @default []
|
|
1413
1814
|
*/
|
|
1414
1815
|
"sortableColumns"?: boolean[];
|
|
@@ -1417,45 +1818,159 @@ export namespace Components {
|
|
|
1417
1818
|
*/
|
|
1418
1819
|
"striped"?: boolean;
|
|
1419
1820
|
}
|
|
1420
|
-
interface
|
|
1821
|
+
interface XplTableBody {
|
|
1421
1822
|
}
|
|
1422
|
-
interface
|
|
1823
|
+
interface XplTableCell {
|
|
1423
1824
|
/**
|
|
1424
|
-
*
|
|
1825
|
+
* Horizontal text alignment within the cell.
|
|
1826
|
+
* @default 'left'
|
|
1425
1827
|
*/
|
|
1426
|
-
"
|
|
1828
|
+
"align": 'left' | 'right' | 'center';
|
|
1427
1829
|
/**
|
|
1428
|
-
*
|
|
1429
|
-
* @default
|
|
1830
|
+
* Renders cell text in bold (--xpl-font-weight-semibold).
|
|
1831
|
+
* @default false
|
|
1430
1832
|
*/
|
|
1431
|
-
"
|
|
1833
|
+
"bold": boolean;
|
|
1432
1834
|
/**
|
|
1433
|
-
*
|
|
1835
|
+
* Whether the cell and its interactive children are disabled. Set automatically by xpl-table-row.
|
|
1434
1836
|
* @default false
|
|
1435
1837
|
*/
|
|
1436
|
-
"
|
|
1838
|
+
"disabled": boolean;
|
|
1437
1839
|
/**
|
|
1438
|
-
*
|
|
1439
|
-
* @default
|
|
1840
|
+
* Adds an underline to cell text.
|
|
1841
|
+
* @default false
|
|
1440
1842
|
*/
|
|
1441
|
-
"
|
|
1843
|
+
"underline": boolean;
|
|
1844
|
+
}
|
|
1845
|
+
interface XplTableFooter {
|
|
1846
|
+
}
|
|
1847
|
+
interface XplTableFooterCell {
|
|
1442
1848
|
/**
|
|
1443
|
-
*
|
|
1849
|
+
* Horizontal text alignment within the cell.
|
|
1850
|
+
* @default 'left'
|
|
1444
1851
|
*/
|
|
1445
|
-
"
|
|
1852
|
+
"align": 'left' | 'right' | 'center';
|
|
1446
1853
|
}
|
|
1447
|
-
interface
|
|
1854
|
+
interface XplTableHeader {
|
|
1855
|
+
}
|
|
1856
|
+
interface XplTableHeaderCell {
|
|
1448
1857
|
/**
|
|
1449
|
-
*
|
|
1858
|
+
* Horizontal text alignment within the header cell.
|
|
1859
|
+
* @default 'left'
|
|
1860
|
+
*/
|
|
1861
|
+
"align": 'left' | 'right' | 'center';
|
|
1862
|
+
/**
|
|
1863
|
+
* Accessible name for the header checkbox (native `aria-label`). Defaults to “Select all rows” when `type` is `checkbox`.
|
|
1864
|
+
*/
|
|
1865
|
+
"checkboxAriaLabel"?: string;
|
|
1866
|
+
/**
|
|
1867
|
+
* Whether the header checkbox is checked
|
|
1868
|
+
* @default false
|
|
1869
|
+
*/
|
|
1870
|
+
"checked": boolean;
|
|
1871
|
+
/**
|
|
1872
|
+
* CSS grid track size for this column (e.g. `1fr`, `minmax(120px, 1fr)`, `auto`). When set, overrides `width`. Use this when you need flexible columns; default layout uses `auto` per column unless you set a track here.
|
|
1873
|
+
*/
|
|
1874
|
+
"columnWidth"?: string;
|
|
1875
|
+
/**
|
|
1876
|
+
* Icon to display in the cell. See [xpl-icon available icons](../xpl-icon/ICONS.md) for valid icon names.
|
|
1877
|
+
*/
|
|
1878
|
+
"icon"?: string;
|
|
1879
|
+
/**
|
|
1880
|
+
* Whether the checkbox is in indeterminate (partially selected) state
|
|
1881
|
+
* @default false
|
|
1882
|
+
*/
|
|
1883
|
+
"indeterminate": boolean;
|
|
1884
|
+
/**
|
|
1885
|
+
* Text to display in the cell.
|
|
1886
|
+
* @default ''
|
|
1887
|
+
*/
|
|
1888
|
+
"label"?: string;
|
|
1889
|
+
/**
|
|
1890
|
+
* Active sort direction for this column when `sortable`. Set by `xpl-table` when used inside a compositional table; may be set by the app for controlled updates.
|
|
1891
|
+
*/
|
|
1892
|
+
"sortDirection"?: 'asc' | 'desc' | null;
|
|
1893
|
+
/**
|
|
1894
|
+
* When `sortable` is true, optional stable id used as the key in `sortChanged`’s detail object. Falls back to a slug of `label` when omitted.
|
|
1895
|
+
*/
|
|
1896
|
+
"sortKey"?: string;
|
|
1897
|
+
/**
|
|
1898
|
+
* When true (and `type` is `label`), renders a sort control (button + affordance icon).
|
|
1899
|
+
* @default false
|
|
1900
|
+
*/
|
|
1901
|
+
"sortable": boolean;
|
|
1902
|
+
/**
|
|
1903
|
+
* The type of cell to render.
|
|
1904
|
+
* @default 'label'
|
|
1905
|
+
*/
|
|
1906
|
+
"type": 'label' | 'checkbox' | 'icon' | 'empty';
|
|
1907
|
+
/**
|
|
1908
|
+
* Fixed width for this column in pixels (minimum 48px). Sets the grid track to `Npx`. Ignored when `columnWidth` is set. When omitted, the column track defaults to `auto` (content-sized).
|
|
1909
|
+
*/
|
|
1910
|
+
"width"?: number;
|
|
1911
|
+
}
|
|
1912
|
+
interface XplTableRow {
|
|
1913
|
+
/**
|
|
1914
|
+
* Whether the row and its cells are disabled.
|
|
1915
|
+
* @default false
|
|
1916
|
+
*/
|
|
1917
|
+
"disabled": boolean;
|
|
1918
|
+
/**
|
|
1919
|
+
* Stable identifier for this row when used with a selectable compositional `xpl-table`. If omitted, the parent table assigns a unique id.
|
|
1920
|
+
*/
|
|
1921
|
+
"rowId"?: string;
|
|
1922
|
+
/**
|
|
1923
|
+
* Whether the row is visually selected.
|
|
1924
|
+
* @default false
|
|
1925
|
+
*/
|
|
1926
|
+
"selected": boolean;
|
|
1927
|
+
}
|
|
1928
|
+
interface XplTabs {
|
|
1929
|
+
/**
|
|
1930
|
+
* Disables the whole tab group (headings, mobile select, and segment pills).
|
|
1931
|
+
* @default false
|
|
1932
|
+
*/
|
|
1933
|
+
"disabled": boolean;
|
|
1934
|
+
/**
|
|
1935
|
+
* Whether to make the tabs full width
|
|
1450
1936
|
* @default false
|
|
1451
1937
|
*/
|
|
1452
1938
|
"fullWidth": boolean;
|
|
1939
|
+
/**
|
|
1940
|
+
* Visual and layout variant: classic underline tabs or segment (pill) controls.
|
|
1941
|
+
* @default 'tabs'
|
|
1942
|
+
*/
|
|
1943
|
+
"type": 'tabs' | 'segment';
|
|
1453
1944
|
/**
|
|
1454
1945
|
* The selected tab target value, defaults to the first tab
|
|
1455
1946
|
*/
|
|
1456
1947
|
"value": string;
|
|
1457
1948
|
}
|
|
1458
1949
|
interface XplTag {
|
|
1950
|
+
/**
|
|
1951
|
+
* Whether the tag is disabled
|
|
1952
|
+
* @default false
|
|
1953
|
+
*/
|
|
1954
|
+
"disabled": boolean;
|
|
1955
|
+
/**
|
|
1956
|
+
* Whether the tag shows a dismiss button
|
|
1957
|
+
* @default true
|
|
1958
|
+
*/
|
|
1959
|
+
"dismissible": boolean;
|
|
1960
|
+
/**
|
|
1961
|
+
* When true, the tag label uses native HTML5 drag (the inner label is the drag source). Named `isDraggable` so the Stencil prop does not collide with the native `HTMLElement.draggable` API. `reflect: false` avoids syncing a `draggable` attribute onto the host; the inner label remains the drag source. Host `onDragStart` still suppresses stray native drags from host chrome.
|
|
1962
|
+
* @default false
|
|
1963
|
+
*/
|
|
1964
|
+
"isDraggable": boolean;
|
|
1965
|
+
/**
|
|
1966
|
+
* The size of the tag
|
|
1967
|
+
* @default 'default'
|
|
1968
|
+
*/
|
|
1969
|
+
"size": 'default' | 'sm';
|
|
1970
|
+
/**
|
|
1971
|
+
* Optional stable id for the tag. When set, it is included in `tagDragStart` / `tagDragEnd` detail and written to `dataTransfer` as `application/x-tag-id`.
|
|
1972
|
+
*/
|
|
1973
|
+
"tagId"?: string;
|
|
1459
1974
|
}
|
|
1460
1975
|
interface XplToast {
|
|
1461
1976
|
/**
|
|
@@ -1544,6 +2059,99 @@ export namespace Components {
|
|
|
1544
2059
|
*/
|
|
1545
2060
|
"text": string;
|
|
1546
2061
|
}
|
|
2062
|
+
/**
|
|
2063
|
+
* Horizontal top navigation with **`left-aside`** and a **right rail**: **`right-aside`** then **user menu**
|
|
2064
|
+
* (see **`.xpl-top-nav__right-rail`** in `render()`). The account menu uses an internal **`xpl-popover`** (**`bottom-end`**, **`display="menu"`**): built-in trigger uses **`child-account-label`** (prop / attribute) as the label beside a trailing **`chevron-down`** on **`xpl-button`** (**`icon`** / **`iconPosition="end"`**), or **`slot="user-menu-trigger"`** for a custom trigger; panel from **`slot="user-menu"`** (e.g. **`xpl-nav-header-menu`**).
|
|
2065
|
+
* Optional **`nav-control`** and **`navOpen`**. **`left-aside`** uses **`role="list"`** for primary **`xpl-top-nav-item`** rows (**`role="listitem"`** on each item host). The built-in **`xpl-top-nav__brand`** item omits **`listitem`** (it is not a child of that list). **`label`** maps to **`nav`** **`aria-label`**. Opening state is internal (not a prop) — use **`navOpen`** and host **`xpl-top-nav--open`** for styling.
|
|
2066
|
+
* **Escape:** With **`nav-control`**, **Escape** closes the mobile drawer and emits **`navOpen`** **`false`** (skips while **any** descendant **`xpl-popover`** is open — detected from each popover’s inner **`.xpl-popover--is-open`** marker — or when a **`xpl-top-nav-item`** dropdown is open — capture/bubble order). Focus returns to the nav toggle after the drawer closes (**Escape** or second toggle click).
|
|
2067
|
+
* **`xpl-top-nav-item`** **`slot="dropdown"`** uses document **capture** for **Escape** first; the shell uses **bubble**
|
|
2068
|
+
* on **`ownerDocument`** so nested dropdowns close before the drawer.
|
|
2069
|
+
* **Theming:** The host always includes Foundation’s **`dark`** class so **`--xpl-*`** purpose tokens under this subtree
|
|
2070
|
+
* resolve to dark-mode values even when the page root is light. Floating overlays (e.g. **`xpl-popover`** / **`xpl-dropdown`**
|
|
2071
|
+
* content teleported outside the host) do not inherit this scope — add **`dark`** on those panels if they should match.
|
|
2072
|
+
* **Layout:** **`right-aside`** and the user-menu region are wrapped internally (**`.xpl-top-nav__right-lead`**, etc.).
|
|
2073
|
+
* Consumers should not add those BEM classes — slot content only.
|
|
2074
|
+
* **Brand logo:** use **`brand-logo`** (URL) for a built-in **`<img>`**, or **`slot="brand-logo"`** for custom markup (e.g. **`xpl-icon`**, SVG). When the URL prop is set, it takes precedence and the slot is not used for the image. On **narrow viewports** (one pixel below Tailwind **`md`** — see **`top-nav.css`**), **`brand-name`** text is hidden in the bar (logo / slot mark only); keep a meaningful **`alt`** on **`brand-logo`** or accessible slotted mark for context.
|
|
2075
|
+
* **Narrow / mobile** (same breakpoint as above): **`slot="left-aside"`** is **hidden** in the bar until **`nav-control`**
|
|
2076
|
+
* is set **and** the drawer is open (floating panel per Figma). **Without **`nav-control`**, there is no mobile drawer** —
|
|
2077
|
+
* primary links remain hidden below **`md`** until the viewport is wide enough for the horizontal bar. The built-in **brand**
|
|
2078
|
+
* stays in the top bar (**hamburger → brand** when **`nav-control`** is set). **`right-aside`** is hidden in the bar on narrow
|
|
2079
|
+
* viewports (**`top-nav.css`**, one pixel below Tailwind **`md`**); duplicate those actions into **`xpl-nav-header-menu`**
|
|
2080
|
+
* **`slot="right-aside-mobile"`** (below profile, above the list; narrow-only CSS in **`top-nav.css`**) per Figma.
|
|
2081
|
+
* **Account menu vs drawer:** Opening the built-in account **`xpl-popover`** while the mobile drawer is open **closes the drawer**
|
|
2082
|
+
* and emits **`navOpen(false)`** so the two layers do not stack.
|
|
2083
|
+
*/
|
|
2084
|
+
interface XplTopNav {
|
|
2085
|
+
/**
|
|
2086
|
+
* Destination URL for the brand control when using native navigation (**`<a href>`**). When unset, the brand is a **`role="button"`** control and **`brandClick`** fires on activation instead.
|
|
2087
|
+
*/
|
|
2088
|
+
"brandHref"?: string;
|
|
2089
|
+
/**
|
|
2090
|
+
* Optional image URL for the brand mark (leading the brand row, before **`brand-name`** text). When set, renders **`<img class="xpl-top-nav__brand-logo">`** and ignores **`slot="brand-logo"`** for the mark. When unset, use **`slot="brand-logo"`** for custom logo content.
|
|
2091
|
+
*/
|
|
2092
|
+
"brandLogo"?: string;
|
|
2093
|
+
/**
|
|
2094
|
+
* Visible product / app name next to **`brand-logo`**. Omit for logo-only; provide **`brand-logo`** and/or this string to show the built-in brand row (**`left-aside`** is then primary nav links only).
|
|
2095
|
+
*/
|
|
2096
|
+
"brandName"?: string;
|
|
2097
|
+
/**
|
|
2098
|
+
* Label text for the built-in account menu trigger (shown **before** the **`chevron-down`** icon) when **`slot="user-menu"`** is present and **`slot="user-menu-trigger"`** is not used. When empty or whitespace-only, the trigger shows only the chevron and uses **`aria-label="Open account menu"`** on the button.
|
|
2099
|
+
*/
|
|
2100
|
+
"childAccountLabel"?: string;
|
|
2101
|
+
/**
|
|
2102
|
+
* Accessible name for the `<nav>` landmark (maps to `aria-label`). Use a unique label when the page has multiple navigation regions (e.g. side nav + top nav). When unset, defaults to `top-navigation-bar`.
|
|
2103
|
+
*/
|
|
2104
|
+
"label"?: string;
|
|
2105
|
+
/**
|
|
2106
|
+
* When true, renders the navigation control (hamburger) for toggling the left slot on small viewports. The control is **hidden from the Tailwind `md` breakpoint up**; collapse/show for **`left-aside`** uses **`max-width: calc(theme('screens.md') - 1px)`** in **`top-nav.css`** (Figma’s 767px at a 16px root and default **`screens.md`**). Reflected to the **`nav-control`** attribute so host updates (framework props) re-run **`@Watch`**: drawer state and document **Escape** handling stay in sync, the host **`xpl-top-nav--nav-control`** class toggles for **`top-nav.css`**, and **`navOpen(false)`** is emitted if **`nav-control`** is cleared while the drawer was open.
|
|
2107
|
+
*/
|
|
2108
|
+
"navControl"?: boolean;
|
|
2109
|
+
}
|
|
2110
|
+
/**
|
|
2111
|
+
* Single nav row for **`xpl-top-nav`** / **`xpl-nav-header-menu`**. The host uses **`role="listitem"`** when the row
|
|
2112
|
+
* participates in a list: a **`role="list"`** parent, **`slot="left-aside"`** on **`xpl-top-nav`** (list host is
|
|
2113
|
+
* **`.xpl-top-nav__left-primary`** while slotted nodes stay light-DOM children of **`xpl-top-nav`**), or default-slot rows
|
|
2114
|
+
* under **`xpl-nav-header-menu`**. That flag is
|
|
2115
|
+
* kept in **`@State`** and refreshed after render plus via **`MutationObserver`** on the host (**`class`**, **`slot`**) and
|
|
2116
|
+
* on **`parentElement`** (**`role`**) or on **`.xpl-top-nav__left-primary`** (**`role`**) for **`slot="left-aside"`** under **`xpl-top-nav`**) so DOM context changes
|
|
2117
|
+
* without a full reconnect still re-sync. The internal
|
|
2118
|
+
* **`xpl-top-nav__brand`** row omits **`listitem`** (it sits in **`.xpl-top-nav__brand-bar`**, not **`.xpl-top-nav__left-primary`**),
|
|
2119
|
+
* as do **`slot="right-aside-mobile"`** rows (not a list). **`slot="dropdown"`** uses a local **`.xpl-top-nav-item__dropdown`**
|
|
2120
|
+
* panel (not **`xpl-dropdown`**); see **`TECH_DEBT.md`**.
|
|
2121
|
+
* **Default slot (no `label`):** do not put **`xpl-top-nav-item__inner`** or other **`xpl-top-nav-item__*`** classes on
|
|
2122
|
+
* custom trigger content — the component renders the inner wrapper and BEM elements.
|
|
2123
|
+
* **Theming:** The host always includes Foundation’s **`dark`** class so **`--xpl-*`** purpose tokens resolve to dark-mode
|
|
2124
|
+
* values even when the page root is light (consistent with **`xpl-top-nav`**).
|
|
2125
|
+
*/
|
|
2126
|
+
interface XplTopNavItem {
|
|
2127
|
+
/**
|
|
2128
|
+
* When true, adds **`xpl-top-nav-item--active`** for persistent accent styling (e.g. link color on the bar, or chrome inside **`xpl-nav-header-menu`**). Separate from **`selected`**, which sets **`aria-current="page"`** and **`--selected`**. Use both when the design needs “current page” semantics plus the active visual treatment.
|
|
2129
|
+
* @default false
|
|
2130
|
+
*/
|
|
2131
|
+
"active": boolean;
|
|
2132
|
+
/**
|
|
2133
|
+
* If set without **`slot="dropdown"`**, the inner control renders as a native **`<a href>`** (link mode).
|
|
2134
|
+
*/
|
|
2135
|
+
"href"?: string;
|
|
2136
|
+
/**
|
|
2137
|
+
* Icon name from **`@xplortech/apollo-icons`** (shown before the label when **`label`** is set).
|
|
2138
|
+
* @default ''
|
|
2139
|
+
*/
|
|
2140
|
+
"icon": string;
|
|
2141
|
+
/**
|
|
2142
|
+
* Accessible name for the inner control when there is no **`label`** and no default-slot text (e.g. icon-only). If omitted in that case, **`aria-label`** defaults to **`Navigation item`**. Ignored when **`label`** or default-slot content supplies a visible name.
|
|
2143
|
+
*/
|
|
2144
|
+
"itemAriaLabel"?: string;
|
|
2145
|
+
/**
|
|
2146
|
+
* 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.
|
|
2147
|
+
*/
|
|
2148
|
+
"label"?: string;
|
|
2149
|
+
/**
|
|
2150
|
+
* When true, sets **`aria-current="page"`** and selected styling.
|
|
2151
|
+
* @default false
|
|
2152
|
+
*/
|
|
2153
|
+
"selected": boolean;
|
|
2154
|
+
}
|
|
1547
2155
|
interface XplUtilityBar {
|
|
1548
2156
|
/**
|
|
1549
2157
|
* @property {boolean} - Optional property that defines whether or not the main nav is open at startup.
|
|
@@ -1603,10 +2211,22 @@ export interface XplInputPhoneCustomEvent<T> extends CustomEvent<T> {
|
|
|
1603
2211
|
detail: T;
|
|
1604
2212
|
target: HTMLXplInputPhoneElement;
|
|
1605
2213
|
}
|
|
2214
|
+
export interface XplInputSearchCustomEvent<T> extends CustomEvent<T> {
|
|
2215
|
+
detail: T;
|
|
2216
|
+
target: HTMLXplInputSearchElement;
|
|
2217
|
+
}
|
|
1606
2218
|
export interface XplInputTimeCustomEvent<T> extends CustomEvent<T> {
|
|
1607
2219
|
detail: T;
|
|
1608
2220
|
target: HTMLXplInputTimeElement;
|
|
1609
2221
|
}
|
|
2222
|
+
export interface XplListCustomEvent<T> extends CustomEvent<T> {
|
|
2223
|
+
detail: T;
|
|
2224
|
+
target: HTMLXplListElement;
|
|
2225
|
+
}
|
|
2226
|
+
export interface XplListItemCustomEvent<T> extends CustomEvent<T> {
|
|
2227
|
+
detail: T;
|
|
2228
|
+
target: HTMLXplListItemElement;
|
|
2229
|
+
}
|
|
1610
2230
|
export interface XplMainNavCustomEvent<T> extends CustomEvent<T> {
|
|
1611
2231
|
detail: T;
|
|
1612
2232
|
target: HTMLXplMainNavElement;
|
|
@@ -1643,6 +2263,10 @@ export interface XplSlideoutCustomEvent<T> extends CustomEvent<T> {
|
|
|
1643
2263
|
detail: T;
|
|
1644
2264
|
target: HTMLXplSlideoutElement;
|
|
1645
2265
|
}
|
|
2266
|
+
export interface XplSpotlightCustomEvent<T> extends CustomEvent<T> {
|
|
2267
|
+
detail: T;
|
|
2268
|
+
target: HTMLXplSpotlightElement;
|
|
2269
|
+
}
|
|
1646
2270
|
export interface XplTabCustomEvent<T> extends CustomEvent<T> {
|
|
1647
2271
|
detail: T;
|
|
1648
2272
|
target: HTMLXplTabElement;
|
|
@@ -1663,6 +2287,14 @@ export interface XplTagCustomEvent<T> extends CustomEvent<T> {
|
|
|
1663
2287
|
detail: T;
|
|
1664
2288
|
target: HTMLXplTagElement;
|
|
1665
2289
|
}
|
|
2290
|
+
export interface XplTopNavCustomEvent<T> extends CustomEvent<T> {
|
|
2291
|
+
detail: T;
|
|
2292
|
+
target: HTMLXplTopNavElement;
|
|
2293
|
+
}
|
|
2294
|
+
export interface XplTopNavItemCustomEvent<T> extends CustomEvent<T> {
|
|
2295
|
+
detail: T;
|
|
2296
|
+
target: HTMLXplTopNavItemElement;
|
|
2297
|
+
}
|
|
1666
2298
|
export interface XplUtilityBarCustomEvent<T> extends CustomEvent<T> {
|
|
1667
2299
|
detail: T;
|
|
1668
2300
|
target: HTMLXplUtilityBarElement;
|
|
@@ -1868,6 +2500,10 @@ declare global {
|
|
|
1868
2500
|
interface HTMLXplDynamicTableElementEventMap {
|
|
1869
2501
|
"selectedItemCountChange": string[];
|
|
1870
2502
|
}
|
|
2503
|
+
/**
|
|
2504
|
+
* @deprecated Use the compositional `<xpl-table>` API instead.
|
|
2505
|
+
* This component will be removed in a future major release.
|
|
2506
|
+
*/
|
|
1871
2507
|
interface HTMLXplDynamicTableElement extends Components.XplDynamicTable, HTMLStencilElement {
|
|
1872
2508
|
addEventListener<K extends keyof HTMLXplDynamicTableElementEventMap>(type: K, listener: (this: HTMLXplDynamicTableElement, ev: XplDynamicTableCustomEvent<HTMLXplDynamicTableElementEventMap[K]>) => any, options?: boolean | AddEventListenerOptions): void;
|
|
1873
2509
|
addEventListener<K extends keyof DocumentEventMap>(type: K, listener: (this: Document, ev: DocumentEventMap[K]) => any, options?: boolean | AddEventListenerOptions): void;
|
|
@@ -1882,12 +2518,20 @@ declare global {
|
|
|
1882
2518
|
prototype: HTMLXplDynamicTableElement;
|
|
1883
2519
|
new (): HTMLXplDynamicTableElement;
|
|
1884
2520
|
};
|
|
2521
|
+
/**
|
|
2522
|
+
* @deprecated Use `<xpl-table-cell>` instead.
|
|
2523
|
+
* This component will be removed in a future major release.
|
|
2524
|
+
*/
|
|
1885
2525
|
interface HTMLXplDynamicTableCellElement extends Components.XplDynamicTableCell, HTMLStencilElement {
|
|
1886
2526
|
}
|
|
1887
2527
|
var HTMLXplDynamicTableCellElement: {
|
|
1888
2528
|
prototype: HTMLXplDynamicTableCellElement;
|
|
1889
2529
|
new (): HTMLXplDynamicTableCellElement;
|
|
1890
2530
|
};
|
|
2531
|
+
/**
|
|
2532
|
+
* @deprecated Use `<xpl-table-row>` instead.
|
|
2533
|
+
* This component will be removed in a future major release.
|
|
2534
|
+
*/
|
|
1891
2535
|
interface HTMLXplDynamicTableRowElement extends Components.XplDynamicTableRow, HTMLStencilElement {
|
|
1892
2536
|
}
|
|
1893
2537
|
var HTMLXplDynamicTableRowElement: {
|
|
@@ -1923,6 +2567,7 @@ declare global {
|
|
|
1923
2567
|
"blurEvent": FocusEvent;
|
|
1924
2568
|
"valueChange": string;
|
|
1925
2569
|
"inputEvent": string;
|
|
2570
|
+
"search": string;
|
|
1926
2571
|
}
|
|
1927
2572
|
interface HTMLXplInputElement extends Components.XplInput, HTMLStencilElement {
|
|
1928
2573
|
addEventListener<K extends keyof HTMLXplInputElementEventMap>(type: K, listener: (this: HTMLXplInputElement, ev: XplInputCustomEvent<HTMLXplInputElementEventMap[K]>) => any, options?: boolean | AddEventListenerOptions): void;
|
|
@@ -2016,6 +2661,27 @@ declare global {
|
|
|
2016
2661
|
prototype: HTMLXplInputPhoneElement;
|
|
2017
2662
|
new (): HTMLXplInputPhoneElement;
|
|
2018
2663
|
};
|
|
2664
|
+
interface HTMLXplInputSearchElementEventMap {
|
|
2665
|
+
"blurEvent": FocusEvent;
|
|
2666
|
+
"focusEvent": FocusEvent;
|
|
2667
|
+
"inputEvent": string;
|
|
2668
|
+
"search": string;
|
|
2669
|
+
"valueChange": string;
|
|
2670
|
+
}
|
|
2671
|
+
interface HTMLXplInputSearchElement extends Components.XplInputSearch, HTMLStencilElement {
|
|
2672
|
+
addEventListener<K extends keyof HTMLXplInputSearchElementEventMap>(type: K, listener: (this: HTMLXplInputSearchElement, ev: XplInputSearchCustomEvent<HTMLXplInputSearchElementEventMap[K]>) => any, options?: boolean | AddEventListenerOptions): void;
|
|
2673
|
+
addEventListener<K extends keyof DocumentEventMap>(type: K, listener: (this: Document, ev: DocumentEventMap[K]) => any, options?: boolean | AddEventListenerOptions): void;
|
|
2674
|
+
addEventListener<K extends keyof HTMLElementEventMap>(type: K, listener: (this: HTMLElement, ev: HTMLElementEventMap[K]) => any, options?: boolean | AddEventListenerOptions): void;
|
|
2675
|
+
addEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | AddEventListenerOptions): void;
|
|
2676
|
+
removeEventListener<K extends keyof HTMLXplInputSearchElementEventMap>(type: K, listener: (this: HTMLXplInputSearchElement, ev: XplInputSearchCustomEvent<HTMLXplInputSearchElementEventMap[K]>) => any, options?: boolean | EventListenerOptions): void;
|
|
2677
|
+
removeEventListener<K extends keyof DocumentEventMap>(type: K, listener: (this: Document, ev: DocumentEventMap[K]) => any, options?: boolean | EventListenerOptions): void;
|
|
2678
|
+
removeEventListener<K extends keyof HTMLElementEventMap>(type: K, listener: (this: HTMLElement, ev: HTMLElementEventMap[K]) => any, options?: boolean | EventListenerOptions): void;
|
|
2679
|
+
removeEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | EventListenerOptions): void;
|
|
2680
|
+
}
|
|
2681
|
+
var HTMLXplInputSearchElement: {
|
|
2682
|
+
prototype: HTMLXplInputSearchElement;
|
|
2683
|
+
new (): HTMLXplInputSearchElement;
|
|
2684
|
+
};
|
|
2019
2685
|
interface HTMLXplInputTimeElementEventMap {
|
|
2020
2686
|
"valueChange": string;
|
|
2021
2687
|
"hasErrorStateChanged": string | null;
|
|
@@ -2040,12 +2706,44 @@ declare global {
|
|
|
2040
2706
|
prototype: HTMLXplLargeCardElement;
|
|
2041
2707
|
new (): HTMLXplLargeCardElement;
|
|
2042
2708
|
};
|
|
2709
|
+
interface HTMLXplListElementEventMap {
|
|
2710
|
+
"itemSelect": { itemId?: string };
|
|
2711
|
+
"orderChange": XplListOrderChangeDetail;
|
|
2712
|
+
}
|
|
2043
2713
|
interface HTMLXplListElement extends Components.XplList, HTMLStencilElement {
|
|
2714
|
+
addEventListener<K extends keyof HTMLXplListElementEventMap>(type: K, listener: (this: HTMLXplListElement, ev: XplListCustomEvent<HTMLXplListElementEventMap[K]>) => any, options?: boolean | AddEventListenerOptions): void;
|
|
2715
|
+
addEventListener<K extends keyof DocumentEventMap>(type: K, listener: (this: Document, ev: DocumentEventMap[K]) => any, options?: boolean | AddEventListenerOptions): void;
|
|
2716
|
+
addEventListener<K extends keyof HTMLElementEventMap>(type: K, listener: (this: HTMLElement, ev: HTMLElementEventMap[K]) => any, options?: boolean | AddEventListenerOptions): void;
|
|
2717
|
+
addEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | AddEventListenerOptions): void;
|
|
2718
|
+
removeEventListener<K extends keyof HTMLXplListElementEventMap>(type: K, listener: (this: HTMLXplListElement, ev: XplListCustomEvent<HTMLXplListElementEventMap[K]>) => any, options?: boolean | EventListenerOptions): void;
|
|
2719
|
+
removeEventListener<K extends keyof DocumentEventMap>(type: K, listener: (this: Document, ev: DocumentEventMap[K]) => any, options?: boolean | EventListenerOptions): void;
|
|
2720
|
+
removeEventListener<K extends keyof HTMLElementEventMap>(type: K, listener: (this: HTMLElement, ev: HTMLElementEventMap[K]) => any, options?: boolean | EventListenerOptions): void;
|
|
2721
|
+
removeEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | EventListenerOptions): void;
|
|
2044
2722
|
}
|
|
2045
2723
|
var HTMLXplListElement: {
|
|
2046
2724
|
prototype: HTMLXplListElement;
|
|
2047
2725
|
new (): HTMLXplListElement;
|
|
2048
2726
|
};
|
|
2727
|
+
interface HTMLXplListItemElementEventMap {
|
|
2728
|
+
"itemDragEnd": { itemId?: string; item: HTMLElement };
|
|
2729
|
+
"itemDragStart": { itemId?: string; item: HTMLElement };
|
|
2730
|
+
"itemDrop": { itemId?: string; item: HTMLElement };
|
|
2731
|
+
"itemSelect": { itemId?: string };
|
|
2732
|
+
}
|
|
2733
|
+
interface HTMLXplListItemElement extends Components.XplListItem, HTMLStencilElement {
|
|
2734
|
+
addEventListener<K extends keyof HTMLXplListItemElementEventMap>(type: K, listener: (this: HTMLXplListItemElement, ev: XplListItemCustomEvent<HTMLXplListItemElementEventMap[K]>) => any, options?: boolean | AddEventListenerOptions): void;
|
|
2735
|
+
addEventListener<K extends keyof DocumentEventMap>(type: K, listener: (this: Document, ev: DocumentEventMap[K]) => any, options?: boolean | AddEventListenerOptions): void;
|
|
2736
|
+
addEventListener<K extends keyof HTMLElementEventMap>(type: K, listener: (this: HTMLElement, ev: HTMLElementEventMap[K]) => any, options?: boolean | AddEventListenerOptions): void;
|
|
2737
|
+
addEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | AddEventListenerOptions): void;
|
|
2738
|
+
removeEventListener<K extends keyof HTMLXplListItemElementEventMap>(type: K, listener: (this: HTMLXplListItemElement, ev: XplListItemCustomEvent<HTMLXplListItemElementEventMap[K]>) => any, options?: boolean | EventListenerOptions): void;
|
|
2739
|
+
removeEventListener<K extends keyof DocumentEventMap>(type: K, listener: (this: Document, ev: DocumentEventMap[K]) => any, options?: boolean | EventListenerOptions): void;
|
|
2740
|
+
removeEventListener<K extends keyof HTMLElementEventMap>(type: K, listener: (this: HTMLElement, ev: HTMLElementEventMap[K]) => any, options?: boolean | EventListenerOptions): void;
|
|
2741
|
+
removeEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | EventListenerOptions): void;
|
|
2742
|
+
}
|
|
2743
|
+
var HTMLXplListItemElement: {
|
|
2744
|
+
prototype: HTMLXplListItemElement;
|
|
2745
|
+
new (): HTMLXplListItemElement;
|
|
2746
|
+
};
|
|
2049
2747
|
interface HTMLXplMainNavElementEventMap {
|
|
2050
2748
|
"navWidth": string;
|
|
2051
2749
|
}
|
|
@@ -2080,6 +2778,30 @@ declare global {
|
|
|
2080
2778
|
prototype: HTMLXplModalElement;
|
|
2081
2779
|
new (): HTMLXplModalElement;
|
|
2082
2780
|
};
|
|
2781
|
+
/**
|
|
2782
|
+
* Profile / account block (username, email, default slot for **`xpl-top-nav-item`** / **`xpl-divider`**).
|
|
2783
|
+
* Tag **`xpl-nav-header-menu`**; implementation folder **`xpl-nav-header-menu`**. **`.xpl-nav-header-menu__slot`** is
|
|
2784
|
+
* **`role="list"`** for slotted **`xpl-top-nav-item`** (**`role="listitem"`**).
|
|
2785
|
+
* **Slotted content:** do not add **`xpl-nav-header-menu__*`** BEM classes on nodes you pass into the default slot —
|
|
2786
|
+
* profile, list shell, and **`xpl-top-nav-item`** **`role="listitem"`** are handled by the component. Use
|
|
2787
|
+
* **`xpl-top-nav-item`** (or plain elements that are not Apollo **`xpl-*`** BEM hooks) in the slot only.
|
|
2788
|
+
* **`slot="right-aside-mobile"`** — optional block **between** the profile header and the default-slot list (e.g. narrow-only
|
|
2789
|
+
* duplicate of **every** **`slot="right-aside"`** control per Figma when **`xpl-top-nav`** hides **`right-aside`** on narrow viewports (always)).
|
|
2790
|
+
* Not **`role="list"`**; use **`xpl-button`** / **`xpl-top-nav-item`** as needed. Shown only on **narrow viewports** (one pixel below Tailwind **`md`** — **`top-nav.css`**) so bar actions stay in **`slot="right-aside"`** on wider viewports.
|
|
2791
|
+
* Light-DOM **`slotchange`** is unreliable; a host **`MutationObserver`** (child / subtree / **`slot`** attribute) keeps
|
|
2792
|
+
* **`xpl-nav-header-menu--has-right-aside-mobile`** in sync when nodes are added or retargeted after mount (same pattern as **`xpl-top-nav`**).
|
|
2793
|
+
* Stencil **`newSpecPage`** / mock-doc does not define **`MutationObserver`**; slot presence still updates on the next
|
|
2794
|
+
* deferred flush (**`setTimeout(0)`** coalesced with **`componentDidRender`**). In real browsers the observer handles child /
|
|
2795
|
+
* **`slot`** mutations without stacking uncancellable microtasks.
|
|
2796
|
+
* **Theming:** The host always includes Foundation’s **`dark`** class so **`--xpl-*`** purpose tokens resolve to dark-mode
|
|
2797
|
+
* values even when the page root is light (same contract as **`xpl-top-nav`** / **`xpl-top-nav-item`**).
|
|
2798
|
+
*/
|
|
2799
|
+
interface HTMLXplNavHeaderMenuElement extends Components.XplNavHeaderMenu, HTMLStencilElement {
|
|
2800
|
+
}
|
|
2801
|
+
var HTMLXplNavHeaderMenuElement: {
|
|
2802
|
+
prototype: HTMLXplNavHeaderMenuElement;
|
|
2803
|
+
new (): HTMLXplNavHeaderMenuElement;
|
|
2804
|
+
};
|
|
2083
2805
|
interface HTMLXplNavItemElementEventMap {
|
|
2084
2806
|
"navOpen": boolean;
|
|
2085
2807
|
}
|
|
@@ -2142,18 +2864,18 @@ declare global {
|
|
|
2142
2864
|
prototype: HTMLXplPopoverElement;
|
|
2143
2865
|
new (): HTMLXplPopoverElement;
|
|
2144
2866
|
};
|
|
2145
|
-
interface HTMLXplProgressElement extends Components.XplProgress, HTMLStencilElement {
|
|
2146
|
-
}
|
|
2147
|
-
var HTMLXplProgressElement: {
|
|
2148
|
-
prototype: HTMLXplProgressElement;
|
|
2149
|
-
new (): HTMLXplProgressElement;
|
|
2150
|
-
};
|
|
2151
2867
|
interface HTMLXplProgressBarElement extends Components.XplProgressBar, HTMLStencilElement {
|
|
2152
2868
|
}
|
|
2153
2869
|
var HTMLXplProgressBarElement: {
|
|
2154
2870
|
prototype: HTMLXplProgressBarElement;
|
|
2155
2871
|
new (): HTMLXplProgressBarElement;
|
|
2156
2872
|
};
|
|
2873
|
+
interface HTMLXplProgressIndicatorElement extends Components.XplProgressIndicator, HTMLStencilElement {
|
|
2874
|
+
}
|
|
2875
|
+
var HTMLXplProgressIndicatorElement: {
|
|
2876
|
+
prototype: HTMLXplProgressIndicatorElement;
|
|
2877
|
+
new (): HTMLXplProgressIndicatorElement;
|
|
2878
|
+
};
|
|
2157
2879
|
interface HTMLXplRadioElementEventMap {
|
|
2158
2880
|
"radioChange": string | boolean;
|
|
2159
2881
|
}
|
|
@@ -2247,6 +2969,26 @@ declare global {
|
|
|
2247
2969
|
prototype: HTMLXplSlideoutElement;
|
|
2248
2970
|
new (): HTMLXplSlideoutElement;
|
|
2249
2971
|
};
|
|
2972
|
+
interface HTMLXplSpotlightElementEventMap {
|
|
2973
|
+
"dismiss": void;
|
|
2974
|
+
"primaryAction": void;
|
|
2975
|
+
"secondaryAction": void;
|
|
2976
|
+
"targetClick": void;
|
|
2977
|
+
}
|
|
2978
|
+
interface HTMLXplSpotlightElement extends Components.XplSpotlight, HTMLStencilElement {
|
|
2979
|
+
addEventListener<K extends keyof HTMLXplSpotlightElementEventMap>(type: K, listener: (this: HTMLXplSpotlightElement, ev: XplSpotlightCustomEvent<HTMLXplSpotlightElementEventMap[K]>) => any, options?: boolean | AddEventListenerOptions): void;
|
|
2980
|
+
addEventListener<K extends keyof DocumentEventMap>(type: K, listener: (this: Document, ev: DocumentEventMap[K]) => any, options?: boolean | AddEventListenerOptions): void;
|
|
2981
|
+
addEventListener<K extends keyof HTMLElementEventMap>(type: K, listener: (this: HTMLElement, ev: HTMLElementEventMap[K]) => any, options?: boolean | AddEventListenerOptions): void;
|
|
2982
|
+
addEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | AddEventListenerOptions): void;
|
|
2983
|
+
removeEventListener<K extends keyof HTMLXplSpotlightElementEventMap>(type: K, listener: (this: HTMLXplSpotlightElement, ev: XplSpotlightCustomEvent<HTMLXplSpotlightElementEventMap[K]>) => any, options?: boolean | EventListenerOptions): void;
|
|
2984
|
+
removeEventListener<K extends keyof DocumentEventMap>(type: K, listener: (this: Document, ev: DocumentEventMap[K]) => any, options?: boolean | EventListenerOptions): void;
|
|
2985
|
+
removeEventListener<K extends keyof HTMLElementEventMap>(type: K, listener: (this: HTMLElement, ev: HTMLElementEventMap[K]) => any, options?: boolean | EventListenerOptions): void;
|
|
2986
|
+
removeEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | EventListenerOptions): void;
|
|
2987
|
+
}
|
|
2988
|
+
var HTMLXplSpotlightElement: {
|
|
2989
|
+
prototype: HTMLXplSpotlightElement;
|
|
2990
|
+
new (): HTMLXplSpotlightElement;
|
|
2991
|
+
};
|
|
2250
2992
|
interface HTMLXplTabElementEventMap {
|
|
2251
2993
|
"tabChange": string;
|
|
2252
2994
|
}
|
|
@@ -2271,13 +3013,14 @@ declare global {
|
|
|
2271
3013
|
new (): HTMLXplTabPanelElement;
|
|
2272
3014
|
};
|
|
2273
3015
|
interface HTMLXplTableElementEventMap {
|
|
3016
|
+
"rowOrderChange": XplTableRowOrderChangeDetail;
|
|
3017
|
+
"rowSelectionChange": { selectedRowIds: string[] };
|
|
3018
|
+
"sortChanged": XplTableSortChangedDetail;
|
|
2274
3019
|
"tableSelect": any;
|
|
2275
|
-
"sortChanged": {
|
|
2276
|
-
colNum: number;
|
|
2277
|
-
colName: string;
|
|
2278
|
-
sortTypeArr: string[];
|
|
2279
|
-
};
|
|
2280
3020
|
}
|
|
3021
|
+
/**
|
|
3022
|
+
* Compositional tables use CSS grid on the host (`role="grid"`). Legacy mode uses a `<table>`.
|
|
3023
|
+
*/
|
|
2281
3024
|
interface HTMLXplTableElement extends Components.XplTable, HTMLStencilElement {
|
|
2282
3025
|
addEventListener<K extends keyof HTMLXplTableElementEventMap>(type: K, listener: (this: HTMLXplTableElement, ev: XplTableCustomEvent<HTMLXplTableElementEventMap[K]>) => any, options?: boolean | AddEventListenerOptions): void;
|
|
2283
3026
|
addEventListener<K extends keyof DocumentEventMap>(type: K, listener: (this: Document, ev: DocumentEventMap[K]) => any, options?: boolean | AddEventListenerOptions): void;
|
|
@@ -2292,6 +3035,30 @@ declare global {
|
|
|
2292
3035
|
prototype: HTMLXplTableElement;
|
|
2293
3036
|
new (): HTMLXplTableElement;
|
|
2294
3037
|
};
|
|
3038
|
+
interface HTMLXplTableBodyElement extends Components.XplTableBody, HTMLStencilElement {
|
|
3039
|
+
}
|
|
3040
|
+
var HTMLXplTableBodyElement: {
|
|
3041
|
+
prototype: HTMLXplTableBodyElement;
|
|
3042
|
+
new (): HTMLXplTableBodyElement;
|
|
3043
|
+
};
|
|
3044
|
+
interface HTMLXplTableCellElement extends Components.XplTableCell, HTMLStencilElement {
|
|
3045
|
+
}
|
|
3046
|
+
var HTMLXplTableCellElement: {
|
|
3047
|
+
prototype: HTMLXplTableCellElement;
|
|
3048
|
+
new (): HTMLXplTableCellElement;
|
|
3049
|
+
};
|
|
3050
|
+
interface HTMLXplTableFooterElement extends Components.XplTableFooter, HTMLStencilElement {
|
|
3051
|
+
}
|
|
3052
|
+
var HTMLXplTableFooterElement: {
|
|
3053
|
+
prototype: HTMLXplTableFooterElement;
|
|
3054
|
+
new (): HTMLXplTableFooterElement;
|
|
3055
|
+
};
|
|
3056
|
+
interface HTMLXplTableFooterCellElement extends Components.XplTableFooterCell, HTMLStencilElement {
|
|
3057
|
+
}
|
|
3058
|
+
var HTMLXplTableFooterCellElement: {
|
|
3059
|
+
prototype: HTMLXplTableFooterCellElement;
|
|
3060
|
+
new (): HTMLXplTableFooterCellElement;
|
|
3061
|
+
};
|
|
2295
3062
|
interface HTMLXplTableHeaderElement extends Components.XplTableHeader, HTMLStencilElement {
|
|
2296
3063
|
}
|
|
2297
3064
|
var HTMLXplTableHeaderElement: {
|
|
@@ -2299,7 +3066,8 @@ declare global {
|
|
|
2299
3066
|
new (): HTMLXplTableHeaderElement;
|
|
2300
3067
|
};
|
|
2301
3068
|
interface HTMLXplTableHeaderCellElementEventMap {
|
|
2302
|
-
"
|
|
3069
|
+
"headerCheckboxChange": boolean;
|
|
3070
|
+
"headerSortChange": HeaderSortChangeDetail;
|
|
2303
3071
|
}
|
|
2304
3072
|
interface HTMLXplTableHeaderCellElement extends Components.XplTableHeaderCell, HTMLStencilElement {
|
|
2305
3073
|
addEventListener<K extends keyof HTMLXplTableHeaderCellElementEventMap>(type: K, listener: (this: HTMLXplTableHeaderCellElement, ev: XplTableHeaderCellCustomEvent<HTMLXplTableHeaderCellElementEventMap[K]>) => any, options?: boolean | AddEventListenerOptions): void;
|
|
@@ -2315,6 +3083,12 @@ declare global {
|
|
|
2315
3083
|
prototype: HTMLXplTableHeaderCellElement;
|
|
2316
3084
|
new (): HTMLXplTableHeaderCellElement;
|
|
2317
3085
|
};
|
|
3086
|
+
interface HTMLXplTableRowElement extends Components.XplTableRow, HTMLStencilElement {
|
|
3087
|
+
}
|
|
3088
|
+
var HTMLXplTableRowElement: {
|
|
3089
|
+
prototype: HTMLXplTableRowElement;
|
|
3090
|
+
new (): HTMLXplTableRowElement;
|
|
3091
|
+
};
|
|
2318
3092
|
interface HTMLXplTabsElementEventMap {
|
|
2319
3093
|
"tabChange": string;
|
|
2320
3094
|
}
|
|
@@ -2333,7 +3107,10 @@ declare global {
|
|
|
2333
3107
|
new (): HTMLXplTabsElement;
|
|
2334
3108
|
};
|
|
2335
3109
|
interface HTMLXplTagElementEventMap {
|
|
2336
|
-
"close":
|
|
3110
|
+
"close": void;
|
|
3111
|
+
"tagDragEnd": TagDragEndDetail;
|
|
3112
|
+
"tagDragStart": TagDragStartDetail;
|
|
3113
|
+
"tagRemove": void;
|
|
2337
3114
|
}
|
|
2338
3115
|
interface HTMLXplTagElement extends Components.XplTag, HTMLStencilElement {
|
|
2339
3116
|
addEventListener<K extends keyof HTMLXplTagElementEventMap>(type: K, listener: (this: HTMLXplTagElement, ev: XplTagCustomEvent<HTMLXplTagElementEventMap[K]>) => any, options?: boolean | AddEventListenerOptions): void;
|
|
@@ -2373,6 +3150,79 @@ declare global {
|
|
|
2373
3150
|
prototype: HTMLXplTooltipElement;
|
|
2374
3151
|
new (): HTMLXplTooltipElement;
|
|
2375
3152
|
};
|
|
3153
|
+
interface HTMLXplTopNavElementEventMap {
|
|
3154
|
+
"brandClick": MouseEvent;
|
|
3155
|
+
"navOpen": boolean;
|
|
3156
|
+
}
|
|
3157
|
+
/**
|
|
3158
|
+
* Horizontal top navigation with **`left-aside`** and a **right rail**: **`right-aside`** then **user menu**
|
|
3159
|
+
* (see **`.xpl-top-nav__right-rail`** in `render()`). The account menu uses an internal **`xpl-popover`** (**`bottom-end`**, **`display="menu"`**): built-in trigger uses **`child-account-label`** (prop / attribute) as the label beside a trailing **`chevron-down`** on **`xpl-button`** (**`icon`** / **`iconPosition="end"`**), or **`slot="user-menu-trigger"`** for a custom trigger; panel from **`slot="user-menu"`** (e.g. **`xpl-nav-header-menu`**).
|
|
3160
|
+
* Optional **`nav-control`** and **`navOpen`**. **`left-aside`** uses **`role="list"`** for primary **`xpl-top-nav-item`** rows (**`role="listitem"`** on each item host). The built-in **`xpl-top-nav__brand`** item omits **`listitem`** (it is not a child of that list). **`label`** maps to **`nav`** **`aria-label`**. Opening state is internal (not a prop) — use **`navOpen`** and host **`xpl-top-nav--open`** for styling.
|
|
3161
|
+
* **Escape:** With **`nav-control`**, **Escape** closes the mobile drawer and emits **`navOpen`** **`false`** (skips while **any** descendant **`xpl-popover`** is open — detected from each popover’s inner **`.xpl-popover--is-open`** marker — or when a **`xpl-top-nav-item`** dropdown is open — capture/bubble order). Focus returns to the nav toggle after the drawer closes (**Escape** or second toggle click).
|
|
3162
|
+
* **`xpl-top-nav-item`** **`slot="dropdown"`** uses document **capture** for **Escape** first; the shell uses **bubble**
|
|
3163
|
+
* on **`ownerDocument`** so nested dropdowns close before the drawer.
|
|
3164
|
+
* **Theming:** The host always includes Foundation’s **`dark`** class so **`--xpl-*`** purpose tokens under this subtree
|
|
3165
|
+
* resolve to dark-mode values even when the page root is light. Floating overlays (e.g. **`xpl-popover`** / **`xpl-dropdown`**
|
|
3166
|
+
* content teleported outside the host) do not inherit this scope — add **`dark`** on those panels if they should match.
|
|
3167
|
+
* **Layout:** **`right-aside`** and the user-menu region are wrapped internally (**`.xpl-top-nav__right-lead`**, etc.).
|
|
3168
|
+
* Consumers should not add those BEM classes — slot content only.
|
|
3169
|
+
* **Brand logo:** use **`brand-logo`** (URL) for a built-in **`<img>`**, or **`slot="brand-logo"`** for custom markup (e.g. **`xpl-icon`**, SVG). When the URL prop is set, it takes precedence and the slot is not used for the image. On **narrow viewports** (one pixel below Tailwind **`md`** — see **`top-nav.css`**), **`brand-name`** text is hidden in the bar (logo / slot mark only); keep a meaningful **`alt`** on **`brand-logo`** or accessible slotted mark for context.
|
|
3170
|
+
* **Narrow / mobile** (same breakpoint as above): **`slot="left-aside"`** is **hidden** in the bar until **`nav-control`**
|
|
3171
|
+
* is set **and** the drawer is open (floating panel per Figma). **Without **`nav-control`**, there is no mobile drawer** —
|
|
3172
|
+
* primary links remain hidden below **`md`** until the viewport is wide enough for the horizontal bar. The built-in **brand**
|
|
3173
|
+
* stays in the top bar (**hamburger → brand** when **`nav-control`** is set). **`right-aside`** is hidden in the bar on narrow
|
|
3174
|
+
* viewports (**`top-nav.css`**, one pixel below Tailwind **`md`**); duplicate those actions into **`xpl-nav-header-menu`**
|
|
3175
|
+
* **`slot="right-aside-mobile"`** (below profile, above the list; narrow-only CSS in **`top-nav.css`**) per Figma.
|
|
3176
|
+
* **Account menu vs drawer:** Opening the built-in account **`xpl-popover`** while the mobile drawer is open **closes the drawer**
|
|
3177
|
+
* and emits **`navOpen(false)`** so the two layers do not stack.
|
|
3178
|
+
*/
|
|
3179
|
+
interface HTMLXplTopNavElement extends Components.XplTopNav, HTMLStencilElement {
|
|
3180
|
+
addEventListener<K extends keyof HTMLXplTopNavElementEventMap>(type: K, listener: (this: HTMLXplTopNavElement, ev: XplTopNavCustomEvent<HTMLXplTopNavElementEventMap[K]>) => any, options?: boolean | AddEventListenerOptions): void;
|
|
3181
|
+
addEventListener<K extends keyof DocumentEventMap>(type: K, listener: (this: Document, ev: DocumentEventMap[K]) => any, options?: boolean | AddEventListenerOptions): void;
|
|
3182
|
+
addEventListener<K extends keyof HTMLElementEventMap>(type: K, listener: (this: HTMLElement, ev: HTMLElementEventMap[K]) => any, options?: boolean | AddEventListenerOptions): void;
|
|
3183
|
+
addEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | AddEventListenerOptions): void;
|
|
3184
|
+
removeEventListener<K extends keyof HTMLXplTopNavElementEventMap>(type: K, listener: (this: HTMLXplTopNavElement, ev: XplTopNavCustomEvent<HTMLXplTopNavElementEventMap[K]>) => any, options?: boolean | EventListenerOptions): void;
|
|
3185
|
+
removeEventListener<K extends keyof DocumentEventMap>(type: K, listener: (this: Document, ev: DocumentEventMap[K]) => any, options?: boolean | EventListenerOptions): void;
|
|
3186
|
+
removeEventListener<K extends keyof HTMLElementEventMap>(type: K, listener: (this: HTMLElement, ev: HTMLElementEventMap[K]) => any, options?: boolean | EventListenerOptions): void;
|
|
3187
|
+
removeEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | EventListenerOptions): void;
|
|
3188
|
+
}
|
|
3189
|
+
var HTMLXplTopNavElement: {
|
|
3190
|
+
prototype: HTMLXplTopNavElement;
|
|
3191
|
+
new (): HTMLXplTopNavElement;
|
|
3192
|
+
};
|
|
3193
|
+
interface HTMLXplTopNavItemElementEventMap {
|
|
3194
|
+
"navItemClick": MouseEvent;
|
|
3195
|
+
}
|
|
3196
|
+
/**
|
|
3197
|
+
* Single nav row for **`xpl-top-nav`** / **`xpl-nav-header-menu`**. The host uses **`role="listitem"`** when the row
|
|
3198
|
+
* participates in a list: a **`role="list"`** parent, **`slot="left-aside"`** on **`xpl-top-nav`** (list host is
|
|
3199
|
+
* **`.xpl-top-nav__left-primary`** while slotted nodes stay light-DOM children of **`xpl-top-nav`**), or default-slot rows
|
|
3200
|
+
* under **`xpl-nav-header-menu`**. That flag is
|
|
3201
|
+
* kept in **`@State`** and refreshed after render plus via **`MutationObserver`** on the host (**`class`**, **`slot`**) and
|
|
3202
|
+
* on **`parentElement`** (**`role`**) or on **`.xpl-top-nav__left-primary`** (**`role`**) for **`slot="left-aside"`** under **`xpl-top-nav`**) so DOM context changes
|
|
3203
|
+
* without a full reconnect still re-sync. The internal
|
|
3204
|
+
* **`xpl-top-nav__brand`** row omits **`listitem`** (it sits in **`.xpl-top-nav__brand-bar`**, not **`.xpl-top-nav__left-primary`**),
|
|
3205
|
+
* as do **`slot="right-aside-mobile"`** rows (not a list). **`slot="dropdown"`** uses a local **`.xpl-top-nav-item__dropdown`**
|
|
3206
|
+
* panel (not **`xpl-dropdown`**); see **`TECH_DEBT.md`**.
|
|
3207
|
+
* **Default slot (no `label`):** do not put **`xpl-top-nav-item__inner`** or other **`xpl-top-nav-item__*`** classes on
|
|
3208
|
+
* custom trigger content — the component renders the inner wrapper and BEM elements.
|
|
3209
|
+
* **Theming:** The host always includes Foundation’s **`dark`** class so **`--xpl-*`** purpose tokens resolve to dark-mode
|
|
3210
|
+
* values even when the page root is light (consistent with **`xpl-top-nav`**).
|
|
3211
|
+
*/
|
|
3212
|
+
interface HTMLXplTopNavItemElement extends Components.XplTopNavItem, HTMLStencilElement {
|
|
3213
|
+
addEventListener<K extends keyof HTMLXplTopNavItemElementEventMap>(type: K, listener: (this: HTMLXplTopNavItemElement, ev: XplTopNavItemCustomEvent<HTMLXplTopNavItemElementEventMap[K]>) => any, options?: boolean | AddEventListenerOptions): void;
|
|
3214
|
+
addEventListener<K extends keyof DocumentEventMap>(type: K, listener: (this: Document, ev: DocumentEventMap[K]) => any, options?: boolean | AddEventListenerOptions): void;
|
|
3215
|
+
addEventListener<K extends keyof HTMLElementEventMap>(type: K, listener: (this: HTMLElement, ev: HTMLElementEventMap[K]) => any, options?: boolean | AddEventListenerOptions): void;
|
|
3216
|
+
addEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | AddEventListenerOptions): void;
|
|
3217
|
+
removeEventListener<K extends keyof HTMLXplTopNavItemElementEventMap>(type: K, listener: (this: HTMLXplTopNavItemElement, ev: XplTopNavItemCustomEvent<HTMLXplTopNavItemElementEventMap[K]>) => any, options?: boolean | EventListenerOptions): void;
|
|
3218
|
+
removeEventListener<K extends keyof DocumentEventMap>(type: K, listener: (this: Document, ev: DocumentEventMap[K]) => any, options?: boolean | EventListenerOptions): void;
|
|
3219
|
+
removeEventListener<K extends keyof HTMLElementEventMap>(type: K, listener: (this: HTMLElement, ev: HTMLElementEventMap[K]) => any, options?: boolean | EventListenerOptions): void;
|
|
3220
|
+
removeEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | EventListenerOptions): void;
|
|
3221
|
+
}
|
|
3222
|
+
var HTMLXplTopNavItemElement: {
|
|
3223
|
+
prototype: HTMLXplTopNavItemElement;
|
|
3224
|
+
new (): HTMLXplTopNavItemElement;
|
|
3225
|
+
};
|
|
2376
3226
|
interface HTMLXplUtilityBarElementEventMap {
|
|
2377
3227
|
"navOpen": boolean;
|
|
2378
3228
|
}
|
|
@@ -2424,17 +3274,20 @@ declare global {
|
|
|
2424
3274
|
"xpl-input-date": HTMLXplInputDateElement;
|
|
2425
3275
|
"xpl-input-file": HTMLXplInputFileElement;
|
|
2426
3276
|
"xpl-input-phone": HTMLXplInputPhoneElement;
|
|
3277
|
+
"xpl-input-search": HTMLXplInputSearchElement;
|
|
2427
3278
|
"xpl-input-time": HTMLXplInputTimeElement;
|
|
2428
3279
|
"xpl-large-card": HTMLXplLargeCardElement;
|
|
2429
3280
|
"xpl-list": HTMLXplListElement;
|
|
3281
|
+
"xpl-list-item": HTMLXplListItemElement;
|
|
2430
3282
|
"xpl-main-nav": HTMLXplMainNavElement;
|
|
2431
3283
|
"xpl-modal": HTMLXplModalElement;
|
|
3284
|
+
"xpl-nav-header-menu": HTMLXplNavHeaderMenuElement;
|
|
2432
3285
|
"xpl-nav-item": HTMLXplNavItemElement;
|
|
2433
3286
|
"xpl-pagination": HTMLXplPaginationElement;
|
|
2434
3287
|
"xpl-panel": HTMLXplPanelElement;
|
|
2435
3288
|
"xpl-popover": HTMLXplPopoverElement;
|
|
2436
|
-
"xpl-progress": HTMLXplProgressElement;
|
|
2437
3289
|
"xpl-progress-bar": HTMLXplProgressBarElement;
|
|
3290
|
+
"xpl-progress-indicator": HTMLXplProgressIndicatorElement;
|
|
2438
3291
|
"xpl-radio": HTMLXplRadioElement;
|
|
2439
3292
|
"xpl-secondary-nav": HTMLXplSecondaryNavElement;
|
|
2440
3293
|
"xpl-select": HTMLXplSelectElement;
|
|
@@ -2442,17 +3295,25 @@ declare global {
|
|
|
2442
3295
|
"xpl-side-nav-item": HTMLXplSideNavItemElement;
|
|
2443
3296
|
"xpl-skeleton": HTMLXplSkeletonElement;
|
|
2444
3297
|
"xpl-slideout": HTMLXplSlideoutElement;
|
|
3298
|
+
"xpl-spotlight": HTMLXplSpotlightElement;
|
|
2445
3299
|
"xpl-tab": HTMLXplTabElement;
|
|
2446
3300
|
"xpl-tab-panel": HTMLXplTabPanelElement;
|
|
2447
3301
|
"xpl-table": HTMLXplTableElement;
|
|
3302
|
+
"xpl-table-body": HTMLXplTableBodyElement;
|
|
3303
|
+
"xpl-table-cell": HTMLXplTableCellElement;
|
|
3304
|
+
"xpl-table-footer": HTMLXplTableFooterElement;
|
|
3305
|
+
"xpl-table-footer-cell": HTMLXplTableFooterCellElement;
|
|
2448
3306
|
"xpl-table-header": HTMLXplTableHeaderElement;
|
|
2449
3307
|
"xpl-table-header-cell": HTMLXplTableHeaderCellElement;
|
|
3308
|
+
"xpl-table-row": HTMLXplTableRowElement;
|
|
2450
3309
|
"xpl-tabs": HTMLXplTabsElement;
|
|
2451
3310
|
"xpl-tag": HTMLXplTagElement;
|
|
2452
3311
|
"xpl-toast": HTMLXplToastElement;
|
|
2453
3312
|
"xpl-toggle": HTMLXplToggleElement;
|
|
2454
3313
|
"xpl-toolbar": HTMLXplToolbarElement;
|
|
2455
3314
|
"xpl-tooltip": HTMLXplTooltipElement;
|
|
3315
|
+
"xpl-top-nav": HTMLXplTopNavElement;
|
|
3316
|
+
"xpl-top-nav-item": HTMLXplTopNavItemElement;
|
|
2456
3317
|
"xpl-utility-bar": HTMLXplUtilityBarElement;
|
|
2457
3318
|
}
|
|
2458
3319
|
}
|
|
@@ -2514,22 +3375,26 @@ declare namespace LocalJSX {
|
|
|
2514
3375
|
/**
|
|
2515
3376
|
* Background color when there is no image src
|
|
2516
3377
|
*/
|
|
2517
|
-
"color"?:
|
|
3378
|
+
"color"?: AvatarColor;
|
|
2518
3379
|
/**
|
|
2519
3380
|
* Sets a disabled state on the avatar when set to true
|
|
2520
3381
|
* @default false
|
|
2521
3382
|
*/
|
|
2522
3383
|
"disabled"?: boolean;
|
|
3384
|
+
/**
|
|
3385
|
+
* When `variant` is `group`, data for each face (max 4 visible + overflow count). Each item: { src?, name?, color? }.
|
|
3386
|
+
*/
|
|
3387
|
+
"groupData"?: AvatarGroupItem[] | string;
|
|
2523
3388
|
/**
|
|
2524
3389
|
* The URL if the avatar should be hyperlinked
|
|
2525
3390
|
*/
|
|
2526
3391
|
"href"?: string;
|
|
2527
3392
|
/**
|
|
2528
|
-
* Alt text for the image
|
|
3393
|
+
* Alt text for the image; also used for initials when no image and no slot.
|
|
2529
3394
|
*/
|
|
2530
3395
|
"name"?: string;
|
|
2531
3396
|
/**
|
|
2532
|
-
* Size of the avatar
|
|
3397
|
+
* Size of the avatar (and of each avatar in a group).
|
|
2533
3398
|
*/
|
|
2534
3399
|
"size"?: 'md' | 'sm';
|
|
2535
3400
|
/**
|
|
@@ -2537,13 +3402,22 @@ declare namespace LocalJSX {
|
|
|
2537
3402
|
*/
|
|
2538
3403
|
"src"?: string;
|
|
2539
3404
|
/**
|
|
2540
|
-
*
|
|
3405
|
+
* Shown for the default avatar, `profile`, and `with-text`; not shown when `variant` is `group`. **Legacy
|
|
3406
|
+
* @deprecated :** `active`, `warning`, and `inactive` still map to `green`, `red`, and `gray` for existing consumers. Prefer palette names; legacy values are scheduled for removal in the next **major** release.
|
|
3407
|
+
*/
|
|
3408
|
+
"status"?: AvatarStatus;
|
|
3409
|
+
/**
|
|
3410
|
+
* Secondary text shown when `variant` is `with-text` (e.g. email).
|
|
2541
3411
|
*/
|
|
2542
|
-
"
|
|
3412
|
+
"subText"?: string;
|
|
2543
3413
|
/**
|
|
2544
3414
|
* Where to open the URL chosen for the `href` prop: `_self` (default), `_blank`, `_parent`, or `_top`
|
|
2545
3415
|
*/
|
|
2546
3416
|
"target"?: string;
|
|
3417
|
+
/**
|
|
3418
|
+
* Optional layout: `profile` (large profile sizes), `group` (stacked faces + `groupData`; `status` not shown), `with-text` (avatar with `name` / `subText` beside it). Omit for the default single avatar.
|
|
3419
|
+
*/
|
|
3420
|
+
"variant"?: AvatarVariant;
|
|
2547
3421
|
}
|
|
2548
3422
|
interface XplBackdrop {
|
|
2549
3423
|
/**
|
|
@@ -2643,6 +3517,16 @@ declare namespace LocalJSX {
|
|
|
2643
3517
|
interface XplBreadcrumbs {
|
|
2644
3518
|
}
|
|
2645
3519
|
interface XplButton {
|
|
3520
|
+
/**
|
|
3521
|
+
* Attributes to apply to the inner native `<button>` (e.g., tab a11y wiring). Use this instead of setting `id` / `role` / `aria-*` on the host when the inner control is the element that needs them (e.g., WAI-ARIA composite widgets).
|
|
3522
|
+
*/
|
|
3523
|
+
"controlAttrs"?: {
|
|
3524
|
+
id?: string;
|
|
3525
|
+
role?: string;
|
|
3526
|
+
'aria-controls'?: string;
|
|
3527
|
+
'aria-selected'?: 'true' | 'false';
|
|
3528
|
+
'aria-current'?: string;
|
|
3529
|
+
};
|
|
2646
3530
|
/**
|
|
2647
3531
|
* Whether button should be disabled
|
|
2648
3532
|
* @default false
|
|
@@ -2773,6 +3657,11 @@ declare namespace LocalJSX {
|
|
|
2773
3657
|
"onDateSelected"?: (event: XplCalendarCustomEvent<string | string[]>) => void;
|
|
2774
3658
|
}
|
|
2775
3659
|
interface XplCheckbox {
|
|
3660
|
+
/**
|
|
3661
|
+
* Accessible name for the native checkbox input (sets `aria-label` on the `input`). Use when there is no visible label text in the default slot. Defaults to `''`; empty or whitespace-only values omit `aria-label` on the input so a visible `<label>` remains the sole name source.
|
|
3662
|
+
* @default ''
|
|
3663
|
+
*/
|
|
3664
|
+
"ariaLabel"?: string;
|
|
2776
3665
|
/**
|
|
2777
3666
|
* Whether the input is checked
|
|
2778
3667
|
*/
|
|
@@ -3010,12 +3899,20 @@ declare namespace LocalJSX {
|
|
|
3010
3899
|
*/
|
|
3011
3900
|
"value"?: string;
|
|
3012
3901
|
}
|
|
3902
|
+
/**
|
|
3903
|
+
* @deprecated Use the compositional `<xpl-table>` API instead.
|
|
3904
|
+
* This component will be removed in a future major release.
|
|
3905
|
+
*/
|
|
3013
3906
|
interface XplDynamicTable {
|
|
3014
3907
|
/**
|
|
3015
3908
|
* Emitted when the number of selected items changes.
|
|
3016
3909
|
*/
|
|
3017
3910
|
"onSelectedItemCountChange"?: (event: XplDynamicTableCustomEvent<string[]>) => void;
|
|
3018
3911
|
}
|
|
3912
|
+
/**
|
|
3913
|
+
* @deprecated Use `<xpl-table-cell>` instead.
|
|
3914
|
+
* This component will be removed in a future major release.
|
|
3915
|
+
*/
|
|
3019
3916
|
interface XplDynamicTableCell {
|
|
3020
3917
|
/**
|
|
3021
3918
|
* Whether the cell and its contents are disabled.
|
|
@@ -3023,6 +3920,10 @@ declare namespace LocalJSX {
|
|
|
3023
3920
|
*/
|
|
3024
3921
|
"disabled"?: boolean;
|
|
3025
3922
|
}
|
|
3923
|
+
/**
|
|
3924
|
+
* @deprecated Use `<xpl-table-row>` instead.
|
|
3925
|
+
* This component will be removed in a future major release.
|
|
3926
|
+
*/
|
|
3026
3927
|
interface XplDynamicTableRow {
|
|
3027
3928
|
/**
|
|
3028
3929
|
* Whether the row and its cells are disabled.
|
|
@@ -3116,7 +4017,12 @@ declare namespace LocalJSX {
|
|
|
3116
4017
|
*/
|
|
3117
4018
|
"allowCustomOption"?: boolean;
|
|
3118
4019
|
/**
|
|
3119
|
-
*
|
|
4020
|
+
* Accessible name for search inputs when there is no visible `label` (after trim). Ignored for naming when a visible label is shown. Defaults to `''`; whitespace-only values are treated as missing and fall back to `'Search'` so the field is never unnamed when there is no visible label. Applies to search inputs (`type="search"`).
|
|
4021
|
+
* @default ''
|
|
4022
|
+
*/
|
|
4023
|
+
"ariaLabel"?: string;
|
|
4024
|
+
/**
|
|
4025
|
+
* Hint for form autofill feature Applies to text, password, number, and search inputs.
|
|
3120
4026
|
*/
|
|
3121
4027
|
"autocomplete"?: string;
|
|
3122
4028
|
/**
|
|
@@ -3209,15 +4115,19 @@ declare namespace LocalJSX {
|
|
|
3209
4115
|
*/
|
|
3210
4116
|
"onFocusEvent"?: (event: XplInputCustomEvent<FocusEvent>) => void;
|
|
3211
4117
|
/**
|
|
3212
|
-
* Event that emits the current value of the input Applies to text
|
|
4118
|
+
* Event that emits the current value of the input Applies to text-like inputs and search inputs.
|
|
3213
4119
|
*/
|
|
3214
4120
|
"onInputEvent"?: (event: XplInputCustomEvent<string>) => void;
|
|
3215
4121
|
/**
|
|
3216
|
-
*
|
|
4122
|
+
* Emitted when the user commits a search (Enter with no enclosing form owner, or submit of the internal search form). `event.detail` is the trimmed query string. Applies to search inputs (`type="search"`).
|
|
4123
|
+
*/
|
|
4124
|
+
"onSearch"?: (event: XplInputCustomEvent<string>) => void;
|
|
4125
|
+
/**
|
|
4126
|
+
* Event that emits the current value of the input (including search fields).
|
|
3217
4127
|
*/
|
|
3218
4128
|
"onValueChange"?: (event: XplInputCustomEvent<string>) => void;
|
|
3219
4129
|
/**
|
|
3220
|
-
* Placeholder text that appears when the field has no value Applies to text, password, number, and
|
|
4130
|
+
* Placeholder text that appears when the field has no value Applies to text, password, number, date, and search inputs.
|
|
3221
4131
|
*/
|
|
3222
4132
|
"placeholder"?: string;
|
|
3223
4133
|
/**
|
|
@@ -3233,13 +4143,17 @@ declare namespace LocalJSX {
|
|
|
3233
4143
|
*/
|
|
3234
4144
|
"preferredCountries"?: string[];
|
|
3235
4145
|
/**
|
|
3236
|
-
* Whether the input is editable Applies to text, password, number, and
|
|
4146
|
+
* Whether the input is editable Applies to text, password, number, date, and search inputs.
|
|
3237
4147
|
*/
|
|
3238
4148
|
"readonly"?: boolean;
|
|
3239
4149
|
/**
|
|
3240
4150
|
* Whether the input is required Applies to all input types.
|
|
3241
4151
|
*/
|
|
3242
4152
|
"required"?: boolean;
|
|
4153
|
+
/**
|
|
4154
|
+
* Shell corner radius for search inputs: `rounded` (pill) or `box` (rounded rectangle). Applies to search inputs (`type="search"`).
|
|
4155
|
+
*/
|
|
4156
|
+
"shape"?: 'rounded' | 'box';
|
|
3243
4157
|
/**
|
|
3244
4158
|
* The granularity that the value in a `number` input must adhere to when incrementing or decrementing. The default stepping value for number inputs is 1 Applies to number and time inputs.
|
|
3245
4159
|
*/
|
|
@@ -3253,9 +4167,17 @@ declare namespace LocalJSX {
|
|
|
3253
4167
|
* The type of form control
|
|
3254
4168
|
* @default 'text'
|
|
3255
4169
|
*/
|
|
3256
|
-
"type"?:
|
|
4170
|
+
"type"?: | 'date'
|
|
4171
|
+
| 'time'
|
|
4172
|
+
| 'text'
|
|
4173
|
+
| 'number'
|
|
4174
|
+
| 'password'
|
|
4175
|
+
| 'file'
|
|
4176
|
+
| 'color'
|
|
4177
|
+
| 'phone'
|
|
4178
|
+
| 'search';
|
|
3257
4179
|
/**
|
|
3258
|
-
* Including a `value` will pre-populate the input with the given string. Applies to text, password, number, and
|
|
4180
|
+
* Including a `value` will pre-populate the input with the given string. Applies to text, password, number, date, and search inputs.
|
|
3259
4181
|
*/
|
|
3260
4182
|
"value"?: string;
|
|
3261
4183
|
}
|
|
@@ -3459,28 +4381,112 @@ declare namespace LocalJSX {
|
|
|
3459
4381
|
*/
|
|
3460
4382
|
"value"?: string;
|
|
3461
4383
|
}
|
|
3462
|
-
interface
|
|
4384
|
+
interface XplInputSearch {
|
|
3463
4385
|
/**
|
|
3464
|
-
*
|
|
3465
|
-
* @default
|
|
4386
|
+
* Accessible name when there is no visible label from the parent; maps to `aria-label` on the input. When the parent provides a visible label, the input is named by `<label for="…">` — this prop is ignored for naming. Empty or whitespace-only values are treated as missing and fall back to `'Search'` so the field is never unnamed.
|
|
4387
|
+
* @default 'Search'
|
|
3466
4388
|
*/
|
|
3467
|
-
"
|
|
4389
|
+
"ariaLabel"?: string;
|
|
3468
4390
|
/**
|
|
3469
|
-
*
|
|
4391
|
+
* Passed to the native input (`autocomplete` attribute). Default `off` matches common inline-search UX; browsers may still apply heuristics.
|
|
4392
|
+
* @default 'off'
|
|
3470
4393
|
*/
|
|
3471
|
-
"
|
|
4394
|
+
"autocomplete"?: string;
|
|
3472
4395
|
/**
|
|
3473
|
-
*
|
|
4396
|
+
* Disables the field and clear control.
|
|
4397
|
+
* @default false
|
|
3474
4398
|
*/
|
|
3475
|
-
"
|
|
4399
|
+
"disabled"?: boolean;
|
|
3476
4400
|
/**
|
|
3477
|
-
*
|
|
3478
|
-
* @default '23:59'
|
|
4401
|
+
* Element id for `aria-describedby` when `hasError` (error message lives on `xpl-input`).
|
|
3479
4402
|
*/
|
|
3480
|
-
"
|
|
4403
|
+
"errorMessageId"?: string;
|
|
3481
4404
|
/**
|
|
3482
|
-
*
|
|
3483
|
-
* @default
|
|
4405
|
+
* Set by `xpl-input` when `error` is shown — drives `aria-invalid` / `aria-describedby`.
|
|
4406
|
+
* @default false
|
|
4407
|
+
*/
|
|
4408
|
+
"hasError"?: boolean;
|
|
4409
|
+
/**
|
|
4410
|
+
* When true, parent `xpl-input` renders a visible label — omit `aria-label` on the input.
|
|
4411
|
+
* @default false
|
|
4412
|
+
*/
|
|
4413
|
+
"hasVisibleLabel"?: boolean;
|
|
4414
|
+
/**
|
|
4415
|
+
* Associates the control with the parent `xpl-input` label (`for` / `id`).
|
|
4416
|
+
*/
|
|
4417
|
+
"inputId": string;
|
|
4418
|
+
/**
|
|
4419
|
+
* Form field `name` on the native input.
|
|
4420
|
+
*/
|
|
4421
|
+
"name"?: string;
|
|
4422
|
+
/**
|
|
4423
|
+
* Emitted when the inner control loses focus. When nested under `xpl-input type="search"`, this event bubbles to the `xpl-input` host (same event name as other input types).
|
|
4424
|
+
*/
|
|
4425
|
+
"onBlurEvent"?: (event: XplInputSearchCustomEvent<FocusEvent>) => void;
|
|
4426
|
+
/**
|
|
4427
|
+
* Emitted when the inner control receives focus. When nested under `xpl-input type="search"`, this event bubbles to the `xpl-input` host (same event name as other input types).
|
|
4428
|
+
*/
|
|
4429
|
+
"onFocusEvent"?: (event: XplInputSearchCustomEvent<FocusEvent>) => void;
|
|
4430
|
+
/**
|
|
4431
|
+
* Fired on every input change (typing, paste) and when the value is cleared — mirrors `xpl-input` text fields. When nested under `xpl-input type="search"`, bubbles to the `xpl-input` host.
|
|
4432
|
+
*/
|
|
4433
|
+
"onInputEvent"?: (event: XplInputSearchCustomEvent<string>) => void;
|
|
4434
|
+
/**
|
|
4435
|
+
* Emitted when the user commits a search (Enter with no enclosing form owner, or submit of the inner search form). `event.detail` is the trimmed query string. When nested under `xpl-input type="search"`, the parent listens with `onSearch` and re-emits so the canonical `search` `@Event` stays on `xpl-input`.
|
|
4436
|
+
*/
|
|
4437
|
+
"onSearch"?: (event: XplInputSearchCustomEvent<string>) => void;
|
|
4438
|
+
/**
|
|
4439
|
+
* Fired on every input change (typing, paste) and when the value is cleared. `event.detail` is the raw `value` string (not trimmed). When nested under `xpl-input type="search"`, bubbles to the `xpl-input` host.
|
|
4440
|
+
*/
|
|
4441
|
+
"onValueChange"?: (event: XplInputSearchCustomEvent<string>) => void;
|
|
4442
|
+
/**
|
|
4443
|
+
* Placeholder shown when the value is empty.
|
|
4444
|
+
* @default 'Search'
|
|
4445
|
+
*/
|
|
4446
|
+
"placeholder"?: string;
|
|
4447
|
+
/**
|
|
4448
|
+
* Whether the input is editable.
|
|
4449
|
+
* @default false
|
|
4450
|
+
*/
|
|
4451
|
+
"readonly"?: boolean;
|
|
4452
|
+
/**
|
|
4453
|
+
* Whether the input is required.
|
|
4454
|
+
* @default false
|
|
4455
|
+
*/
|
|
4456
|
+
"required"?: boolean;
|
|
4457
|
+
/**
|
|
4458
|
+
* Shell corner radius: `rounded` (pill) or `box` (rounded rectangle).
|
|
4459
|
+
* @default 'rounded'
|
|
4460
|
+
*/
|
|
4461
|
+
"shape"?: 'rounded' | 'box';
|
|
4462
|
+
/**
|
|
4463
|
+
* Current value (controlled-friendly).
|
|
4464
|
+
* @default ''
|
|
4465
|
+
*/
|
|
4466
|
+
"value"?: string;
|
|
4467
|
+
}
|
|
4468
|
+
interface XplInputTime {
|
|
4469
|
+
/**
|
|
4470
|
+
* For time inputs, whether to allow custom option in the input even if not available in the dropdown. Example: A step of 30 minutes will allow 15:03, 15:37, etc. Applies to time inputs.
|
|
4471
|
+
* @default false
|
|
4472
|
+
*/
|
|
4473
|
+
"allowCustomOption"?: boolean;
|
|
4474
|
+
/**
|
|
4475
|
+
* Whether the field is disabled
|
|
4476
|
+
*/
|
|
4477
|
+
"disabled"?: boolean;
|
|
4478
|
+
/**
|
|
4479
|
+
* The `inputId` is used to associate the input with a label.
|
|
4480
|
+
*/
|
|
4481
|
+
"inputId"?: string;
|
|
4482
|
+
/**
|
|
4483
|
+
* Maximum value for the input.
|
|
4484
|
+
* @default '23:59'
|
|
4485
|
+
*/
|
|
4486
|
+
"max"?: number | string;
|
|
4487
|
+
/**
|
|
4488
|
+
* The minimum value for the input.
|
|
4489
|
+
* @default '00:00'
|
|
3484
4490
|
*/
|
|
3485
4491
|
"min"?: number | string;
|
|
3486
4492
|
/**
|
|
@@ -3543,10 +4549,114 @@ declare namespace LocalJSX {
|
|
|
3543
4549
|
}
|
|
3544
4550
|
interface XplList {
|
|
3545
4551
|
/**
|
|
3546
|
-
*
|
|
4552
|
+
* Array of list items to render. Each item should follow the ListItem interface. **Deprecated.** Use slot-based xpl-list-item children instead.
|
|
3547
4553
|
* @default []
|
|
3548
4554
|
*/
|
|
3549
4555
|
"items"?: ListItem[];
|
|
4556
|
+
/**
|
|
4557
|
+
* Accessible name for the list, exposed as `aria-label` on the host when set. Use when the list has no visible heading. Ignored when `labelledBy` is set (see `labelledBy` for precedence).
|
|
4558
|
+
*/
|
|
4559
|
+
"label"?: string;
|
|
4560
|
+
/**
|
|
4561
|
+
* Element id(s) that label this list (space-separated), exposed as `aria-labelledby` when set. When set, `label` is not applied as `aria-label` so the list has a single naming source.
|
|
4562
|
+
*/
|
|
4563
|
+
"labelledBy"?: string;
|
|
4564
|
+
/**
|
|
4565
|
+
* Emitted when an item is selected.
|
|
4566
|
+
*/
|
|
4567
|
+
"onItemSelect"?: (event: XplListCustomEvent<{ itemId?: string }>) => void;
|
|
4568
|
+
/**
|
|
4569
|
+
* Emitted when the order of items changes (after the DOM has been updated). `orderedItemIds` lists **visible** row ids only (hidden rows excluded).
|
|
4570
|
+
*/
|
|
4571
|
+
"onOrderChange"?: (event: XplListCustomEvent<XplListOrderChangeDetail>) => void;
|
|
4572
|
+
/**
|
|
4573
|
+
* When true, enables reorder UI and behavior for **slot-based** child rows (drag handle + keyboard). Legacy rows rendered from the deprecated `items` prop do **not** show a drag handle; migrate to slots if reorder is required.
|
|
4574
|
+
* @default false
|
|
4575
|
+
*/
|
|
4576
|
+
"reorderable"?: boolean;
|
|
4577
|
+
/**
|
|
4578
|
+
* Determines if this list is selectable (shows `xpl-radio` per row in a shared group). Press Escape while focus is on the **selected** row to clear selection (same as `clearSelection()`).
|
|
4579
|
+
* @default false
|
|
4580
|
+
*/
|
|
4581
|
+
"selectable"?: boolean;
|
|
4582
|
+
}
|
|
4583
|
+
interface XplListItem {
|
|
4584
|
+
/**
|
|
4585
|
+
* Whether the item is disabled.
|
|
4586
|
+
* @default false
|
|
4587
|
+
*/
|
|
4588
|
+
"disabled"?: boolean;
|
|
4589
|
+
/**
|
|
4590
|
+
* Whether to show the item in an error state.
|
|
4591
|
+
* @default false
|
|
4592
|
+
*/
|
|
4593
|
+
"error"?: boolean;
|
|
4594
|
+
/**
|
|
4595
|
+
* When true, the row is not shown and does not participate in visible-only list behavior (e.g. `orderChange` / `orderedItemIds`, reorder targets). Use for filtering, conditional display, or keeping stable `item-id` while the row is off-screen. See `xpl-list` readme “Hidden rows”. **Accessibility:** Renders an empty host with the native `hidden` attribute only (no `role="listitem"`), consistent with the row not participating as a list item while hidden.
|
|
4596
|
+
* @default false
|
|
4597
|
+
*/
|
|
4598
|
+
"hidden"?: boolean;
|
|
4599
|
+
/**
|
|
4600
|
+
* URL for link behavior. When provided, the entire row becomes clickable. Clicks on `actions` or `avatar` slots are prevented from triggering navigation.
|
|
4601
|
+
*/
|
|
4602
|
+
"href"?: string;
|
|
4603
|
+
/**
|
|
4604
|
+
* Optional item data for prop-based rendering. When provided, this takes precedence over slotted content and renders using the legacy ListItem interface. **Deprecated.** Prefer slot-based composition (named slots on `xpl-list-item`).
|
|
4605
|
+
*/
|
|
4606
|
+
"item"?: ListItem;
|
|
4607
|
+
/**
|
|
4608
|
+
* Unique identifier for this item. Used for selection and drag/drop. Mutable so the host can sync from `item-id` / `id` in `componentWillLoad` without breaking one-way data flow.
|
|
4609
|
+
*/
|
|
4610
|
+
"itemId"?: string;
|
|
4611
|
+
/**
|
|
4612
|
+
* When set by the parent, indicates this item is the active keyboard reorder item.
|
|
4613
|
+
* @default false
|
|
4614
|
+
*/
|
|
4615
|
+
"keyboardActive"?: boolean;
|
|
4616
|
+
/**
|
|
4617
|
+
* Emitted when a drag operation ends on this item (after drop or cancel).
|
|
4618
|
+
*/
|
|
4619
|
+
"onItemDragEnd"?: (event: XplListItemCustomEvent<{ itemId?: string; item: HTMLElement }>) => void;
|
|
4620
|
+
/**
|
|
4621
|
+
* Emitted when drag starts on this item.
|
|
4622
|
+
*/
|
|
4623
|
+
"onItemDragStart"?: (event: XplListItemCustomEvent<{ itemId?: string; item: HTMLElement }>) => void;
|
|
4624
|
+
/**
|
|
4625
|
+
* Emitted when an item is dropped on this item.
|
|
4626
|
+
*/
|
|
4627
|
+
"onItemDrop"?: (event: XplListItemCustomEvent<{ itemId?: string; item: HTMLElement }>) => void;
|
|
4628
|
+
/**
|
|
4629
|
+
* Emitted when the item is selected (radio change).
|
|
4630
|
+
*/
|
|
4631
|
+
"onItemSelect"?: (event: XplListItemCustomEvent<{ itemId?: string }>) => void;
|
|
4632
|
+
/**
|
|
4633
|
+
* Name attribute for radio inputs (shared across selectable items in a list).
|
|
4634
|
+
*/
|
|
4635
|
+
"radioName"?: string;
|
|
4636
|
+
/**
|
|
4637
|
+
* Whether this item is reorderable (shows a drag handle in **slot-based** layout). When the deprecated `item` prop is used, legacy markup has **no** reorder handle even if this is true.
|
|
4638
|
+
* @default false
|
|
4639
|
+
*/
|
|
4640
|
+
"reorderable"?: boolean;
|
|
4641
|
+
/**
|
|
4642
|
+
* Whether this item is selectable (shows `xpl-radio` in a shared group).
|
|
4643
|
+
* @default false
|
|
4644
|
+
*/
|
|
4645
|
+
"selectable"?: boolean;
|
|
4646
|
+
/**
|
|
4647
|
+
* Whether this item is selected (radio checked state).
|
|
4648
|
+
* @default false
|
|
4649
|
+
*/
|
|
4650
|
+
"selected"?: boolean;
|
|
4651
|
+
/**
|
|
4652
|
+
* Whether to show a divider below the item.
|
|
4653
|
+
* @default false
|
|
4654
|
+
*/
|
|
4655
|
+
"showDivider"?: boolean;
|
|
4656
|
+
/**
|
|
4657
|
+
* Optional badge to display next to the title (dot badge). Only used when `item` prop is not provided (slot mode). Matches `xpl-badge` variant values (e.g. purple, green, red).
|
|
4658
|
+
*/
|
|
4659
|
+
"titleBadgeVariant"?: BadgeVariantProp1;
|
|
3550
4660
|
}
|
|
3551
4661
|
interface XplMainNav {
|
|
3552
4662
|
/**
|
|
@@ -3580,6 +4690,34 @@ declare namespace LocalJSX {
|
|
|
3580
4690
|
*/
|
|
3581
4691
|
"variant"?: 'default' | 'warning';
|
|
3582
4692
|
}
|
|
4693
|
+
/**
|
|
4694
|
+
* Profile / account block (username, email, default slot for **`xpl-top-nav-item`** / **`xpl-divider`**).
|
|
4695
|
+
* Tag **`xpl-nav-header-menu`**; implementation folder **`xpl-nav-header-menu`**. **`.xpl-nav-header-menu__slot`** is
|
|
4696
|
+
* **`role="list"`** for slotted **`xpl-top-nav-item`** (**`role="listitem"`**).
|
|
4697
|
+
* **Slotted content:** do not add **`xpl-nav-header-menu__*`** BEM classes on nodes you pass into the default slot —
|
|
4698
|
+
* profile, list shell, and **`xpl-top-nav-item`** **`role="listitem"`** are handled by the component. Use
|
|
4699
|
+
* **`xpl-top-nav-item`** (or plain elements that are not Apollo **`xpl-*`** BEM hooks) in the slot only.
|
|
4700
|
+
* **`slot="right-aside-mobile"`** — optional block **between** the profile header and the default-slot list (e.g. narrow-only
|
|
4701
|
+
* duplicate of **every** **`slot="right-aside"`** control per Figma when **`xpl-top-nav`** hides **`right-aside`** on narrow viewports (always)).
|
|
4702
|
+
* Not **`role="list"`**; use **`xpl-button`** / **`xpl-top-nav-item`** as needed. Shown only on **narrow viewports** (one pixel below Tailwind **`md`** — **`top-nav.css`**) so bar actions stay in **`slot="right-aside"`** on wider viewports.
|
|
4703
|
+
* Light-DOM **`slotchange`** is unreliable; a host **`MutationObserver`** (child / subtree / **`slot`** attribute) keeps
|
|
4704
|
+
* **`xpl-nav-header-menu--has-right-aside-mobile`** in sync when nodes are added or retargeted after mount (same pattern as **`xpl-top-nav`**).
|
|
4705
|
+
* Stencil **`newSpecPage`** / mock-doc does not define **`MutationObserver`**; slot presence still updates on the next
|
|
4706
|
+
* deferred flush (**`setTimeout(0)`** coalesced with **`componentDidRender`**). In real browsers the observer handles child /
|
|
4707
|
+
* **`slot`** mutations without stacking uncancellable microtasks.
|
|
4708
|
+
* **Theming:** The host always includes Foundation’s **`dark`** class so **`--xpl-*`** purpose tokens resolve to dark-mode
|
|
4709
|
+
* values even when the page root is light (same contract as **`xpl-top-nav`** / **`xpl-top-nav-item`**).
|
|
4710
|
+
*/
|
|
4711
|
+
interface XplNavHeaderMenu {
|
|
4712
|
+
/**
|
|
4713
|
+
* Email address shown below the username.
|
|
4714
|
+
*/
|
|
4715
|
+
"email"?: string;
|
|
4716
|
+
/**
|
|
4717
|
+
* Display name shown in the profile block.
|
|
4718
|
+
*/
|
|
4719
|
+
"username"?: string;
|
|
4720
|
+
}
|
|
3583
4721
|
interface XplNavItem {
|
|
3584
4722
|
/**
|
|
3585
4723
|
* @property {boolean} - Whether or not the item should control the main nav state on click
|
|
@@ -3637,7 +4775,7 @@ declare namespace LocalJSX {
|
|
|
3637
4775
|
*/
|
|
3638
4776
|
"accent"?: 'none' | 'primary' | 'secondary' | 'positive' | 'negative' | 'highlight';
|
|
3639
4777
|
/**
|
|
3640
|
-
* Padding density applied to the content area.
|
|
4778
|
+
* Padding density applied to the content area. (default and tight keep desktop padding through tablet; mobile ≤480px). - `default` – 24 px desktop & tablet / 16 px mobile - `tight` – 16 px desktop & tablet / 8 px mobile - `loose` – 40 px desktop / 32 px tablet / 24 px mobile
|
|
3641
4779
|
* @default 'default'
|
|
3642
4780
|
*/
|
|
3643
4781
|
"padding"?: 'default' | 'tight' | 'loose';
|
|
@@ -3668,17 +4806,6 @@ declare namespace LocalJSX {
|
|
|
3668
4806
|
*/
|
|
3669
4807
|
"position"?: PopoverPosition;
|
|
3670
4808
|
}
|
|
3671
|
-
interface XplProgress {
|
|
3672
|
-
/**
|
|
3673
|
-
* Current step, is the index of the current active step
|
|
3674
|
-
* @default 0
|
|
3675
|
-
*/
|
|
3676
|
-
"currentStep"?: number;
|
|
3677
|
-
/**
|
|
3678
|
-
* The steps is an array of the steps name.
|
|
3679
|
-
*/
|
|
3680
|
-
"steps"?: string[];
|
|
3681
|
-
}
|
|
3682
4809
|
interface XplProgressBar {
|
|
3683
4810
|
/**
|
|
3684
4811
|
* The helper text displayed below the progress bar (recommended for error state)
|
|
@@ -3709,6 +4836,32 @@ declare namespace LocalJSX {
|
|
|
3709
4836
|
*/
|
|
3710
4837
|
"variant"?: 'default' | 'success' | 'error' | 'indeterminate';
|
|
3711
4838
|
}
|
|
4839
|
+
interface XplProgressIndicator {
|
|
4840
|
+
/**
|
|
4841
|
+
* Current step index. Steps with index < currentStep are "finished", the step at currentStep is "active", and steps beyond are "waiting". Set to steps.length to mark all steps as finished. Automatically clamped to [0, steps.length].
|
|
4842
|
+
* @default 0
|
|
4843
|
+
*/
|
|
4844
|
+
"currentStep"?: number;
|
|
4845
|
+
/**
|
|
4846
|
+
* Layout direction - 'horizontal' or 'vertical'
|
|
4847
|
+
* @default 'horizontal'
|
|
4848
|
+
*/
|
|
4849
|
+
"layout"?: 'horizontal' | 'vertical';
|
|
4850
|
+
/**
|
|
4851
|
+
* Whether to show step labels
|
|
4852
|
+
* @default true
|
|
4853
|
+
*/
|
|
4854
|
+
"showLabels"?: boolean;
|
|
4855
|
+
/**
|
|
4856
|
+
* Whether to show step numbers inside circles
|
|
4857
|
+
* @default true
|
|
4858
|
+
*/
|
|
4859
|
+
"showNumbers"?: boolean;
|
|
4860
|
+
/**
|
|
4861
|
+
* The steps is an array of the steps name.
|
|
4862
|
+
*/
|
|
4863
|
+
"steps"?: string[];
|
|
4864
|
+
}
|
|
3712
4865
|
interface XplRadio {
|
|
3713
4866
|
/**
|
|
3714
4867
|
* Whether the input is "on"
|
|
@@ -3941,9 +5094,113 @@ declare namespace LocalJSX {
|
|
|
3941
5094
|
*/
|
|
3942
5095
|
"variant"?: 'default' | 'warning';
|
|
3943
5096
|
}
|
|
5097
|
+
interface XplSpotlight {
|
|
5098
|
+
/**
|
|
5099
|
+
* Footer action layout. `default` and `dual` both render the standard Back/Next layout, while `single` renders a single acknowledgement CTA (e.g. "Got it!"). Only applies when `showActions` is `true`.
|
|
5100
|
+
* @default 'default'
|
|
5101
|
+
*/
|
|
5102
|
+
"actionLayout"?: SpotlightActionLayout;
|
|
5103
|
+
/**
|
|
5104
|
+
* Which corner of the card the anchor dot uses when not using `target`, or as the preferred side for Floating UI.
|
|
5105
|
+
* @default 'top-left'
|
|
5106
|
+
*/
|
|
5107
|
+
"anchorPosition"?: SpotlightAnchorPosition;
|
|
5108
|
+
/**
|
|
5109
|
+
* Body copy when the `body` slot has no slotted content. Whitespace-only values are treated as empty (no fallback paragraph).
|
|
5110
|
+
*/
|
|
5111
|
+
"body"?: string;
|
|
5112
|
+
/**
|
|
5113
|
+
* Current step index (1-based). Used with `totalSteps` for the step label and for disabling default Back/Next when `showSteps` is true.
|
|
5114
|
+
* @default 1
|
|
5115
|
+
*/
|
|
5116
|
+
"currentStep"?: number;
|
|
5117
|
+
/**
|
|
5118
|
+
* Heading when the `title` slot has no slotted content. Whitespace-only values are treated as empty (no fallback title span).
|
|
5119
|
+
*/
|
|
5120
|
+
"heading"?: string;
|
|
5121
|
+
/**
|
|
5122
|
+
* Whether to show the dismiss (close) control.
|
|
5123
|
+
* @default true
|
|
5124
|
+
*/
|
|
5125
|
+
"isDismissible"?: boolean;
|
|
5126
|
+
/**
|
|
5127
|
+
* Controls whether the spotlight is rendered. When false, the host remains in the DOM but the spotlight UI is hidden.
|
|
5128
|
+
* @default true
|
|
5129
|
+
*/
|
|
5130
|
+
"isOpen"?: boolean;
|
|
5131
|
+
/**
|
|
5132
|
+
* Emitted when the dismiss control is activated or Escape is pressed (when dismissible).
|
|
5133
|
+
*/
|
|
5134
|
+
"onDismiss"?: (event: XplSpotlightCustomEvent<void>) => void;
|
|
5135
|
+
/**
|
|
5136
|
+
* Emitted when the primary action control is activated (default: Next).
|
|
5137
|
+
*/
|
|
5138
|
+
"onPrimaryAction"?: (event: XplSpotlightCustomEvent<void>) => void;
|
|
5139
|
+
/**
|
|
5140
|
+
* Emitted when the secondary action control is activated (default: Back).
|
|
5141
|
+
*/
|
|
5142
|
+
"onSecondaryAction"?: (event: XplSpotlightCustomEvent<void>) => void;
|
|
5143
|
+
/**
|
|
5144
|
+
* Emitted when the target indicator is clicked. Consumers typically toggle `isOpen` in response.
|
|
5145
|
+
*/
|
|
5146
|
+
"onTargetClick"?: (event: XplSpotlightCustomEvent<void>) => void;
|
|
5147
|
+
/**
|
|
5148
|
+
* Label used for the default primary action button. Only applies when `showActions` is `true`.
|
|
5149
|
+
* @default 'Next'
|
|
5150
|
+
*/
|
|
5151
|
+
"primaryActionLabel"?: string;
|
|
5152
|
+
/**
|
|
5153
|
+
* Label used for the default secondary action button. Only applies when `showActions` is `true`.
|
|
5154
|
+
* @default 'Back'
|
|
5155
|
+
*/
|
|
5156
|
+
"secondaryActionLabel"?: string;
|
|
5157
|
+
/**
|
|
5158
|
+
* Whether to show the actions row (primary / secondary and optional step counter). When `false`, the spotlight has no action buttons — useful for single-step informational callouts that rely solely on the dismiss control.
|
|
5159
|
+
* @default true
|
|
5160
|
+
*/
|
|
5161
|
+
"showActions"?: boolean;
|
|
5162
|
+
/**
|
|
5163
|
+
* When true, the media region is shown. Slotted `image` content is rendered when present; otherwise the built-in placeholder UI is shown. When false, the entire media block is hidden.
|
|
5164
|
+
* @default true
|
|
5165
|
+
*/
|
|
5166
|
+
"showImage"?: boolean;
|
|
5167
|
+
/**
|
|
5168
|
+
* Whether to show the step counter between actions (`currentStep` of `totalSteps`) and whether default Back/Next use step-based disabled state.
|
|
5169
|
+
* @default true
|
|
5170
|
+
*/
|
|
5171
|
+
"showSteps"?: boolean;
|
|
5172
|
+
/**
|
|
5173
|
+
* CSS selector for the element this spotlight anchors to. When set, placement uses Floating UI (`computePosition` with `strategy: 'fixed'`, plus `flip`, `shift`, `offset`) and `autoUpdate` for scroll/resize. The host receives `left` / `top` and the `xpl-spotlight--anchored` class. Invalid selectors are ignored; layout falls back to `anchor-position`.
|
|
5174
|
+
*/
|
|
5175
|
+
"target"?: string;
|
|
5176
|
+
/**
|
|
5177
|
+
* Total number of steps (1-based upper bound). Used with `currentStep` for the step label and for disabling default Back/Next when `showSteps` is true.
|
|
5178
|
+
* @default 1
|
|
5179
|
+
*/
|
|
5180
|
+
"totalSteps"?: number;
|
|
5181
|
+
}
|
|
3944
5182
|
interface XplTab {
|
|
3945
5183
|
/**
|
|
3946
|
-
*
|
|
5184
|
+
* Disables this tab (pill or underline).
|
|
5185
|
+
* @default false
|
|
5186
|
+
*/
|
|
5187
|
+
"disabled"?: boolean;
|
|
5188
|
+
/**
|
|
5189
|
+
* Set when the parent `xpl-tabs` has `disabled` (group-disabled).
|
|
5190
|
+
* @default false
|
|
5191
|
+
*/
|
|
5192
|
+
"groupDisabled"?: boolean;
|
|
5193
|
+
/**
|
|
5194
|
+
* Optional icon name for segment-style pills (`type="segment"` on parent `xpl-tabs`). Ignored for default tabs.
|
|
5195
|
+
*/
|
|
5196
|
+
"icon"?: string;
|
|
5197
|
+
/**
|
|
5198
|
+
* Icon position for segment-style pills.
|
|
5199
|
+
* @default 'start'
|
|
5200
|
+
*/
|
|
5201
|
+
"iconPosition"?: 'start' | 'end';
|
|
5202
|
+
/**
|
|
5203
|
+
* Emitted when this tab is activated (if not disabled). The event `detail` is this tab’s `target` string. Parent `xpl-tabs` listens and updates selection; use `tabChange` on `xpl-tabs` for the group-level event.
|
|
3947
5204
|
*/
|
|
3948
5205
|
"onTabChange"?: (event: XplTabCustomEvent<string>) => void;
|
|
3949
5206
|
/**
|
|
@@ -3967,51 +5224,78 @@ declare namespace LocalJSX {
|
|
|
3967
5224
|
*/
|
|
3968
5225
|
"target"?: string;
|
|
3969
5226
|
}
|
|
5227
|
+
/**
|
|
5228
|
+
* Compositional tables use CSS grid on the host (`role="grid"`). Legacy mode uses a `<table>`.
|
|
5229
|
+
*/
|
|
3970
5230
|
interface XplTable {
|
|
3971
5231
|
/**
|
|
3972
|
-
* The header values for each column.
|
|
5232
|
+
* @deprecated Legacy data-driven table API only (`columns` / `data` / `footer`). May be removed in a future major release. The header values for each column.
|
|
3973
5233
|
*/
|
|
3974
5234
|
"columns"?: string[];
|
|
3975
5235
|
/**
|
|
3976
|
-
* The data for the body of the table.
|
|
5236
|
+
* @deprecated Legacy data-driven table API only (`columns` / `data` / `footer`). May be removed in a future major release. The data for the body of the table.
|
|
3977
5237
|
*/
|
|
3978
5238
|
"data"?: string[][];
|
|
3979
5239
|
/**
|
|
3980
|
-
* The data for the footer of the table.
|
|
5240
|
+
* @deprecated Legacy data-driven table API only (`columns` / `data` / `footer`). May be removed in a future major release. The data for the footer of the table.
|
|
3981
5241
|
*/
|
|
3982
5242
|
"footer"?: string[][];
|
|
3983
5243
|
/**
|
|
3984
|
-
* When true, the first column
|
|
5244
|
+
* When true, the first **data** column (per row) is sticky during horizontal scroll. Leading compositional columns are skipped: `selectable` (checkbox) and/or `row-reorderable` (grip) are not frozen so they scroll with the grid; the next column stays pinned at `left: 0`.
|
|
3985
5245
|
*/
|
|
3986
5246
|
"freeze"?: boolean;
|
|
3987
5247
|
/**
|
|
3988
|
-
* Toggles to show the sort button on each table head
|
|
5248
|
+
* @deprecated Legacy data-driven table API only. May be removed in a future major release. Toggles to show the sort button on each table head.
|
|
3989
5249
|
* @default false
|
|
3990
5250
|
*/
|
|
3991
5251
|
"isSortable"?: boolean;
|
|
3992
5252
|
/**
|
|
3993
|
-
*
|
|
5253
|
+
* Accessible label for the table. Maps to `aria-label` in compositional mode.
|
|
5254
|
+
*/
|
|
5255
|
+
"label"?: string;
|
|
5256
|
+
/**
|
|
5257
|
+
* @deprecated Legacy data-driven table API only. May be removed in a future major release. Toggles a selectable checkbox for each row in the table.
|
|
3994
5258
|
*/
|
|
3995
5259
|
"multiselect"?: boolean;
|
|
3996
5260
|
/**
|
|
3997
|
-
*
|
|
5261
|
+
* Emitted after body rows are reordered via drag-and-drop (compositional `row-reorderable` mode).
|
|
3998
5262
|
*/
|
|
3999
|
-
"
|
|
4000
|
-
|
|
4001
|
-
|
|
4002
|
-
|
|
4003
|
-
|
|
5263
|
+
"onRowOrderChange"?: (event: XplTableCustomEvent<XplTableRowOrderChangeDetail>) => void;
|
|
5264
|
+
/**
|
|
5265
|
+
* Emitted when row selection changes in compositional `selectable` mode. Listen on this `xpl-table` instance only; the event does not bubble to parents—use `table.addEventListener('rowSelectionChange', …)` on the same element. When wiring from a script in static HTML, wait for `customElements.whenDefined('xpl-table')` so the host is ready. (Named `rowSelectionChange` to avoid clashing with the native `selectionchange` event.)
|
|
5266
|
+
*/
|
|
5267
|
+
"onRowSelectionChange"?: (event: XplTableCustomEvent<{ selectedRowIds: string[] }>) => void;
|
|
4004
5268
|
/**
|
|
4005
|
-
*
|
|
5269
|
+
* Emitted when sort changes in **legacy** or **compositional** mode. `event.detail` is a plain object: **sort-key slug → `'asc' | 'desc' | null`** (null = that column not sorted). Keys match legacy column titles (slugified) or compositional `sort-key` / label slugs. Call `event.preventDefault()` in legacy mode to skip built-in row sorting; compositional tables do not reorder rows automatically.
|
|
5270
|
+
*/
|
|
5271
|
+
"onSortChanged"?: (event: XplTableCustomEvent<XplTableSortChangedDetail>) => void;
|
|
5272
|
+
/**
|
|
5273
|
+
* Callback function that is called when the checkbox for a row of a `multiselect` table is checked.
|
|
4006
5274
|
*/
|
|
4007
5275
|
"onTableSelect"?: (event: XplTableCustomEvent<any>) => void;
|
|
4008
5276
|
/**
|
|
4009
|
-
*
|
|
5277
|
+
* Icon name for the optional `xpl-icon` inside each **managed** reorder grip when the row is **not** in keyboard reorder mode (pointer / idle). Set to `""` to omit the icon so you can style the button or author a fully custom reorder column in markup. When omitted, defaults to `grip-dots-vertical`.
|
|
5278
|
+
*/
|
|
5279
|
+
"reorderHandleIcon"?: string;
|
|
5280
|
+
/**
|
|
5281
|
+
* Icon name for the managed reorder grip **while that row is in keyboard reorder mode** (after the user activates the grip with Enter or Space). Use a different icon than `reorder-handle-icon` so users can see they should use arrow keys. When omitted, defaults to `caret-expand-y` (same as `xpl-list` keyboard reorder). Set to `""` to show no icon in keyboard mode only (combine with CSS on `.xpl-table__row-drag-handle--keyboard-mode` if needed).
|
|
5282
|
+
*/
|
|
5283
|
+
"reorderHandleIconKeyboard"?: string;
|
|
5284
|
+
/**
|
|
5285
|
+
* When true (compositional mode only), **prepends** a managed reorder column as the **first** grid column (empty header + grip button per body row) and enables HTML5 drag-and-drop row reordering (same interaction model as `xpl-list`). With `selectable`, DOM order is **reorder | selection | data** unless you author a custom reorder column. The table updates the DOM and emits `rowOrderChange`; consumers should persist order if needed. Ignored in legacy `columns`/`data` mode.
|
|
5286
|
+
*/
|
|
5287
|
+
"rowReorderable"?: boolean;
|
|
5288
|
+
/**
|
|
5289
|
+
* When true (compositional mode only), enables row selection state, the selection toolbar (“N Selected”), and `rowSelectionChange`. **You must add the selection column in your markup:** a header cell with `type="checkbox"`, a body cell containing `xpl-checkbox` per row (aligned with that column), and matching `xpl-table-footer-cell` cells when you use a footer. Each body row should use `row-id` on `xpl-table-row` (or accept auto-generated ids) so `rowSelectionChange` can report `selectedRowIds`. The toolbar uses the same layout as `xpl-toolbar` and is visible only while at least one row is selected. Use `toolbar-actions-left` / `toolbar-actions-right` slots on this host for bulk actions.
|
|
5290
|
+
*/
|
|
5291
|
+
"selectable"?: boolean;
|
|
5292
|
+
/**
|
|
5293
|
+
* @deprecated Legacy data-driven table API only. May be removed in a future major release. The values for the input for each row when multiselect is activated.
|
|
4010
5294
|
* @default []
|
|
4011
5295
|
*/
|
|
4012
5296
|
"selectedValues"?: string[];
|
|
4013
5297
|
/**
|
|
4014
|
-
* Manually determined if the column is sortable
|
|
5298
|
+
* @deprecated Use the compositional slot-based API instead. Will be removed in a future major release. Manually determined if the column is sortable.
|
|
4015
5299
|
* @default []
|
|
4016
5300
|
*/
|
|
4017
5301
|
"sortableColumns"?: boolean[];
|
|
@@ -4020,47 +5304,141 @@ declare namespace LocalJSX {
|
|
|
4020
5304
|
*/
|
|
4021
5305
|
"striped"?: boolean;
|
|
4022
5306
|
}
|
|
5307
|
+
interface XplTableBody {
|
|
5308
|
+
}
|
|
5309
|
+
interface XplTableCell {
|
|
5310
|
+
/**
|
|
5311
|
+
* Horizontal text alignment within the cell.
|
|
5312
|
+
* @default 'left'
|
|
5313
|
+
*/
|
|
5314
|
+
"align"?: 'left' | 'right' | 'center';
|
|
5315
|
+
/**
|
|
5316
|
+
* Renders cell text in bold (--xpl-font-weight-semibold).
|
|
5317
|
+
* @default false
|
|
5318
|
+
*/
|
|
5319
|
+
"bold"?: boolean;
|
|
5320
|
+
/**
|
|
5321
|
+
* Whether the cell and its interactive children are disabled. Set automatically by xpl-table-row.
|
|
5322
|
+
* @default false
|
|
5323
|
+
*/
|
|
5324
|
+
"disabled"?: boolean;
|
|
5325
|
+
/**
|
|
5326
|
+
* Adds an underline to cell text.
|
|
5327
|
+
* @default false
|
|
5328
|
+
*/
|
|
5329
|
+
"underline"?: boolean;
|
|
5330
|
+
}
|
|
5331
|
+
interface XplTableFooter {
|
|
5332
|
+
}
|
|
5333
|
+
interface XplTableFooterCell {
|
|
5334
|
+
/**
|
|
5335
|
+
* Horizontal text alignment within the cell.
|
|
5336
|
+
* @default 'left'
|
|
5337
|
+
*/
|
|
5338
|
+
"align"?: 'left' | 'right' | 'center';
|
|
5339
|
+
}
|
|
4023
5340
|
interface XplTableHeader {
|
|
4024
5341
|
}
|
|
4025
5342
|
interface XplTableHeaderCell {
|
|
5343
|
+
/**
|
|
5344
|
+
* Horizontal text alignment within the header cell.
|
|
5345
|
+
* @default 'left'
|
|
5346
|
+
*/
|
|
5347
|
+
"align"?: 'left' | 'right' | 'center';
|
|
5348
|
+
/**
|
|
5349
|
+
* Accessible name for the header checkbox (native `aria-label`). Defaults to “Select all rows” when `type` is `checkbox`.
|
|
5350
|
+
*/
|
|
5351
|
+
"checkboxAriaLabel"?: string;
|
|
5352
|
+
/**
|
|
5353
|
+
* Whether the header checkbox is checked
|
|
5354
|
+
* @default false
|
|
5355
|
+
*/
|
|
5356
|
+
"checked"?: boolean;
|
|
5357
|
+
/**
|
|
5358
|
+
* CSS grid track size for this column (e.g. `1fr`, `minmax(120px, 1fr)`, `auto`). When set, overrides `width`. Use this when you need flexible columns; default layout uses `auto` per column unless you set a track here.
|
|
5359
|
+
*/
|
|
5360
|
+
"columnWidth"?: string;
|
|
4026
5361
|
/**
|
|
4027
5362
|
* Icon to display in the cell. See [xpl-icon available icons](../xpl-icon/ICONS.md) for valid icon names.
|
|
4028
5363
|
*/
|
|
4029
5364
|
"icon"?: string;
|
|
4030
5365
|
/**
|
|
4031
|
-
*
|
|
5366
|
+
* Whether the checkbox is in indeterminate (partially selected) state
|
|
5367
|
+
* @default false
|
|
5368
|
+
*/
|
|
5369
|
+
"indeterminate"?: boolean;
|
|
5370
|
+
/**
|
|
5371
|
+
* Text to display in the cell.
|
|
4032
5372
|
* @default ''
|
|
4033
5373
|
*/
|
|
4034
5374
|
"label"?: string;
|
|
4035
5375
|
/**
|
|
4036
|
-
* Emitted when
|
|
5376
|
+
* Emitted when header checkbox changes
|
|
4037
5377
|
*/
|
|
4038
|
-
"
|
|
5378
|
+
"onHeaderCheckboxChange"?: (event: XplTableHeaderCellCustomEvent<boolean>) => void;
|
|
4039
5379
|
/**
|
|
4040
|
-
*
|
|
5380
|
+
* Emitted when a sortable label header is activated. Parent `xpl-table` coordinates columns and emits `sortChanged`.
|
|
5381
|
+
*/
|
|
5382
|
+
"onHeaderSortChange"?: (event: XplTableHeaderCellCustomEvent<HeaderSortChangeDetail>) => void;
|
|
5383
|
+
/**
|
|
5384
|
+
* Active sort direction for this column when `sortable`. Set by `xpl-table` when used inside a compositional table; may be set by the app for controlled updates.
|
|
5385
|
+
*/
|
|
5386
|
+
"sortDirection"?: 'asc' | 'desc' | null;
|
|
5387
|
+
/**
|
|
5388
|
+
* When `sortable` is true, optional stable id used as the key in `sortChanged`’s detail object. Falls back to a slug of `label` when omitted.
|
|
5389
|
+
*/
|
|
5390
|
+
"sortKey"?: string;
|
|
5391
|
+
/**
|
|
5392
|
+
* When true (and `type` is `label`), renders a sort control (button + affordance icon).
|
|
4041
5393
|
* @default false
|
|
4042
5394
|
*/
|
|
4043
5395
|
"sortable"?: boolean;
|
|
4044
5396
|
/**
|
|
4045
|
-
*
|
|
5397
|
+
* The type of cell to render.
|
|
4046
5398
|
* @default 'label'
|
|
4047
5399
|
*/
|
|
4048
|
-
"type"?: 'label' | 'checkbox' | 'icon';
|
|
5400
|
+
"type"?: 'label' | 'checkbox' | 'icon' | 'empty';
|
|
4049
5401
|
/**
|
|
4050
|
-
*
|
|
5402
|
+
* Fixed width for this column in pixels (minimum 48px). Sets the grid track to `Npx`. Ignored when `columnWidth` is set. When omitted, the column track defaults to `auto` (content-sized).
|
|
4051
5403
|
*/
|
|
4052
5404
|
"width"?: number;
|
|
4053
5405
|
}
|
|
5406
|
+
interface XplTableRow {
|
|
5407
|
+
/**
|
|
5408
|
+
* Whether the row and its cells are disabled.
|
|
5409
|
+
* @default false
|
|
5410
|
+
*/
|
|
5411
|
+
"disabled"?: boolean;
|
|
5412
|
+
/**
|
|
5413
|
+
* Stable identifier for this row when used with a selectable compositional `xpl-table`. If omitted, the parent table assigns a unique id.
|
|
5414
|
+
*/
|
|
5415
|
+
"rowId"?: string;
|
|
5416
|
+
/**
|
|
5417
|
+
* Whether the row is visually selected.
|
|
5418
|
+
* @default false
|
|
5419
|
+
*/
|
|
5420
|
+
"selected"?: boolean;
|
|
5421
|
+
}
|
|
4054
5422
|
interface XplTabs {
|
|
5423
|
+
/**
|
|
5424
|
+
* Disables the whole tab group (headings, mobile select, and segment pills).
|
|
5425
|
+
* @default false
|
|
5426
|
+
*/
|
|
5427
|
+
"disabled"?: boolean;
|
|
4055
5428
|
/**
|
|
4056
5429
|
* Whether to make the tabs full width
|
|
4057
5430
|
* @default false
|
|
4058
5431
|
*/
|
|
4059
5432
|
"fullWidth"?: boolean;
|
|
4060
5433
|
/**
|
|
4061
|
-
*
|
|
5434
|
+
* Emitted when the selected tab changes (click, keyboard, or mobile `xpl-select`). The event `detail` is the selected tab’s `target` string. Always dispatched from this host (including after heading clicks) so `event.target` is consistent for listeners on `xpl-tabs` or bubbling ancestors.
|
|
4062
5435
|
*/
|
|
4063
5436
|
"onTabChange"?: (event: XplTabsCustomEvent<string>) => void;
|
|
5437
|
+
/**
|
|
5438
|
+
* Visual and layout variant: classic underline tabs or segment (pill) controls.
|
|
5439
|
+
* @default 'tabs'
|
|
5440
|
+
*/
|
|
5441
|
+
"type"?: 'tabs' | 'segment';
|
|
4064
5442
|
/**
|
|
4065
5443
|
* The selected tab target value, defaults to the first tab
|
|
4066
5444
|
*/
|
|
@@ -4068,9 +5446,46 @@ declare namespace LocalJSX {
|
|
|
4068
5446
|
}
|
|
4069
5447
|
interface XplTag {
|
|
4070
5448
|
/**
|
|
4071
|
-
*
|
|
5449
|
+
* Whether the tag is disabled
|
|
5450
|
+
* @default false
|
|
5451
|
+
*/
|
|
5452
|
+
"disabled"?: boolean;
|
|
5453
|
+
/**
|
|
5454
|
+
* Whether the tag shows a dismiss button
|
|
5455
|
+
* @default true
|
|
5456
|
+
*/
|
|
5457
|
+
"dismissible"?: boolean;
|
|
5458
|
+
/**
|
|
5459
|
+
* When true, the tag label uses native HTML5 drag (the inner label is the drag source). Named `isDraggable` so the Stencil prop does not collide with the native `HTMLElement.draggable` API. `reflect: false` avoids syncing a `draggable` attribute onto the host; the inner label remains the drag source. Host `onDragStart` still suppresses stray native drags from host chrome.
|
|
5460
|
+
* @default false
|
|
4072
5461
|
*/
|
|
4073
|
-
"
|
|
5462
|
+
"isDraggable"?: boolean;
|
|
5463
|
+
/**
|
|
5464
|
+
* Emitted when the tag is dismissed (content click when `isDraggable` is false, or dismiss button click).
|
|
5465
|
+
* @deprecated Use `tagRemove` for dismiss button clicks only. The `close` event will be removed in a future major version.
|
|
5466
|
+
*/
|
|
5467
|
+
"onClose"?: (event: XplTagCustomEvent<void>) => void;
|
|
5468
|
+
/**
|
|
5469
|
+
* Emitted when a drag operation ends. `event.detail`: `{ tagId?, dropped, originalEvent }`. `dropped` is `true` when `dataTransfer.dropEffect === 'move'`. `originalEvent` is the native `DragEvent`; browsers may clear `dataTransfer` after the synchronous handler runs — do not read `originalEvent.dataTransfer.getData(...)` asynchronously.
|
|
5470
|
+
*/
|
|
5471
|
+
"onTagDragEnd"?: (event: XplTagCustomEvent<TagDragEndDetail>) => void;
|
|
5472
|
+
/**
|
|
5473
|
+
* Emitted when a drag operation starts (native `dragstart` on the inner label). `event.detail`: `{ tagId?, content, originalEvent }`. `originalEvent` is the native `DragEvent`; browsers may clear `dataTransfer` after the synchronous handler runs — do not read `originalEvent.dataTransfer.getData(...)` asynchronously.
|
|
5474
|
+
*/
|
|
5475
|
+
"onTagDragStart"?: (event: XplTagCustomEvent<TagDragStartDetail>) => void;
|
|
5476
|
+
/**
|
|
5477
|
+
* Emitted when the tag dismiss (×) button is clicked
|
|
5478
|
+
*/
|
|
5479
|
+
"onTagRemove"?: (event: XplTagCustomEvent<void>) => void;
|
|
5480
|
+
/**
|
|
5481
|
+
* The size of the tag
|
|
5482
|
+
* @default 'default'
|
|
5483
|
+
*/
|
|
5484
|
+
"size"?: 'default' | 'sm';
|
|
5485
|
+
/**
|
|
5486
|
+
* Optional stable id for the tag. When set, it is included in `tagDragStart` / `tagDragEnd` detail and written to `dataTransfer` as `application/x-tag-id`.
|
|
5487
|
+
*/
|
|
5488
|
+
"tagId"?: string;
|
|
4074
5489
|
}
|
|
4075
5490
|
interface XplToast {
|
|
4076
5491
|
/**
|
|
@@ -4159,6 +5574,111 @@ declare namespace LocalJSX {
|
|
|
4159
5574
|
*/
|
|
4160
5575
|
"text"?: string;
|
|
4161
5576
|
}
|
|
5577
|
+
/**
|
|
5578
|
+
* Horizontal top navigation with **`left-aside`** and a **right rail**: **`right-aside`** then **user menu**
|
|
5579
|
+
* (see **`.xpl-top-nav__right-rail`** in `render()`). The account menu uses an internal **`xpl-popover`** (**`bottom-end`**, **`display="menu"`**): built-in trigger uses **`child-account-label`** (prop / attribute) as the label beside a trailing **`chevron-down`** on **`xpl-button`** (**`icon`** / **`iconPosition="end"`**), or **`slot="user-menu-trigger"`** for a custom trigger; panel from **`slot="user-menu"`** (e.g. **`xpl-nav-header-menu`**).
|
|
5580
|
+
* Optional **`nav-control`** and **`navOpen`**. **`left-aside`** uses **`role="list"`** for primary **`xpl-top-nav-item`** rows (**`role="listitem"`** on each item host). The built-in **`xpl-top-nav__brand`** item omits **`listitem`** (it is not a child of that list). **`label`** maps to **`nav`** **`aria-label`**. Opening state is internal (not a prop) — use **`navOpen`** and host **`xpl-top-nav--open`** for styling.
|
|
5581
|
+
* **Escape:** With **`nav-control`**, **Escape** closes the mobile drawer and emits **`navOpen`** **`false`** (skips while **any** descendant **`xpl-popover`** is open — detected from each popover’s inner **`.xpl-popover--is-open`** marker — or when a **`xpl-top-nav-item`** dropdown is open — capture/bubble order). Focus returns to the nav toggle after the drawer closes (**Escape** or second toggle click).
|
|
5582
|
+
* **`xpl-top-nav-item`** **`slot="dropdown"`** uses document **capture** for **Escape** first; the shell uses **bubble**
|
|
5583
|
+
* on **`ownerDocument`** so nested dropdowns close before the drawer.
|
|
5584
|
+
* **Theming:** The host always includes Foundation’s **`dark`** class so **`--xpl-*`** purpose tokens under this subtree
|
|
5585
|
+
* resolve to dark-mode values even when the page root is light. Floating overlays (e.g. **`xpl-popover`** / **`xpl-dropdown`**
|
|
5586
|
+
* content teleported outside the host) do not inherit this scope — add **`dark`** on those panels if they should match.
|
|
5587
|
+
* **Layout:** **`right-aside`** and the user-menu region are wrapped internally (**`.xpl-top-nav__right-lead`**, etc.).
|
|
5588
|
+
* Consumers should not add those BEM classes — slot content only.
|
|
5589
|
+
* **Brand logo:** use **`brand-logo`** (URL) for a built-in **`<img>`**, or **`slot="brand-logo"`** for custom markup (e.g. **`xpl-icon`**, SVG). When the URL prop is set, it takes precedence and the slot is not used for the image. On **narrow viewports** (one pixel below Tailwind **`md`** — see **`top-nav.css`**), **`brand-name`** text is hidden in the bar (logo / slot mark only); keep a meaningful **`alt`** on **`brand-logo`** or accessible slotted mark for context.
|
|
5590
|
+
* **Narrow / mobile** (same breakpoint as above): **`slot="left-aside"`** is **hidden** in the bar until **`nav-control`**
|
|
5591
|
+
* is set **and** the drawer is open (floating panel per Figma). **Without **`nav-control`**, there is no mobile drawer** —
|
|
5592
|
+
* primary links remain hidden below **`md`** until the viewport is wide enough for the horizontal bar. The built-in **brand**
|
|
5593
|
+
* stays in the top bar (**hamburger → brand** when **`nav-control`** is set). **`right-aside`** is hidden in the bar on narrow
|
|
5594
|
+
* viewports (**`top-nav.css`**, one pixel below Tailwind **`md`**); duplicate those actions into **`xpl-nav-header-menu`**
|
|
5595
|
+
* **`slot="right-aside-mobile"`** (below profile, above the list; narrow-only CSS in **`top-nav.css`**) per Figma.
|
|
5596
|
+
* **Account menu vs drawer:** Opening the built-in account **`xpl-popover`** while the mobile drawer is open **closes the drawer**
|
|
5597
|
+
* and emits **`navOpen(false)`** so the two layers do not stack.
|
|
5598
|
+
*/
|
|
5599
|
+
interface XplTopNav {
|
|
5600
|
+
/**
|
|
5601
|
+
* Destination URL for the brand control when using native navigation (**`<a href>`**). When unset, the brand is a **`role="button"`** control and **`brandClick`** fires on activation instead.
|
|
5602
|
+
*/
|
|
5603
|
+
"brandHref"?: string;
|
|
5604
|
+
/**
|
|
5605
|
+
* Optional image URL for the brand mark (leading the brand row, before **`brand-name`** text). When set, renders **`<img class="xpl-top-nav__brand-logo">`** and ignores **`slot="brand-logo"`** for the mark. When unset, use **`slot="brand-logo"`** for custom logo content.
|
|
5606
|
+
*/
|
|
5607
|
+
"brandLogo"?: string;
|
|
5608
|
+
/**
|
|
5609
|
+
* Visible product / app name next to **`brand-logo`**. Omit for logo-only; provide **`brand-logo`** and/or this string to show the built-in brand row (**`left-aside`** is then primary nav links only).
|
|
5610
|
+
*/
|
|
5611
|
+
"brandName"?: string;
|
|
5612
|
+
/**
|
|
5613
|
+
* Label text for the built-in account menu trigger (shown **before** the **`chevron-down`** icon) when **`slot="user-menu"`** is present and **`slot="user-menu-trigger"`** is not used. When empty or whitespace-only, the trigger shows only the chevron and uses **`aria-label="Open account menu"`** on the button.
|
|
5614
|
+
*/
|
|
5615
|
+
"childAccountLabel"?: string;
|
|
5616
|
+
/**
|
|
5617
|
+
* Accessible name for the `<nav>` landmark (maps to `aria-label`). Use a unique label when the page has multiple navigation regions (e.g. side nav + top nav). When unset, defaults to `top-navigation-bar`.
|
|
5618
|
+
*/
|
|
5619
|
+
"label"?: string;
|
|
5620
|
+
/**
|
|
5621
|
+
* When true, renders the navigation control (hamburger) for toggling the left slot on small viewports. The control is **hidden from the Tailwind `md` breakpoint up**; collapse/show for **`left-aside`** uses **`max-width: calc(theme('screens.md') - 1px)`** in **`top-nav.css`** (Figma’s 767px at a 16px root and default **`screens.md`**). Reflected to the **`nav-control`** attribute so host updates (framework props) re-run **`@Watch`**: drawer state and document **Escape** handling stay in sync, the host **`xpl-top-nav--nav-control`** class toggles for **`top-nav.css`**, and **`navOpen(false)`** is emitted if **`nav-control`** is cleared while the drawer was open.
|
|
5622
|
+
*/
|
|
5623
|
+
"navControl"?: boolean;
|
|
5624
|
+
/**
|
|
5625
|
+
* Emitted when the brand control is activated and **`brandHref`** is **not** set (SPA / in-app navigation). **`detail`** is the **`MouseEvent`** from **`xpl-top-nav-item`** **`navItemClick`**. Not emitted when **`brandHref`** is set (use native link navigation).
|
|
5626
|
+
*/
|
|
5627
|
+
"onBrandClick"?: (event: XplTopNavCustomEvent<MouseEvent>) => void;
|
|
5628
|
+
/**
|
|
5629
|
+
* Emitted when the mobile nav open state changes: hamburger toggle, or **Escape** closing the drawer (when **`nav-control`** is set and the bar was open). Detail is the new open state (**`true`** = open, **`false`** = closed).
|
|
5630
|
+
*/
|
|
5631
|
+
"onNavOpen"?: (event: XplTopNavCustomEvent<boolean>) => void;
|
|
5632
|
+
}
|
|
5633
|
+
/**
|
|
5634
|
+
* Single nav row for **`xpl-top-nav`** / **`xpl-nav-header-menu`**. The host uses **`role="listitem"`** when the row
|
|
5635
|
+
* participates in a list: a **`role="list"`** parent, **`slot="left-aside"`** on **`xpl-top-nav`** (list host is
|
|
5636
|
+
* **`.xpl-top-nav__left-primary`** while slotted nodes stay light-DOM children of **`xpl-top-nav`**), or default-slot rows
|
|
5637
|
+
* under **`xpl-nav-header-menu`**. That flag is
|
|
5638
|
+
* kept in **`@State`** and refreshed after render plus via **`MutationObserver`** on the host (**`class`**, **`slot`**) and
|
|
5639
|
+
* on **`parentElement`** (**`role`**) or on **`.xpl-top-nav__left-primary`** (**`role`**) for **`slot="left-aside"`** under **`xpl-top-nav`**) so DOM context changes
|
|
5640
|
+
* without a full reconnect still re-sync. The internal
|
|
5641
|
+
* **`xpl-top-nav__brand`** row omits **`listitem`** (it sits in **`.xpl-top-nav__brand-bar`**, not **`.xpl-top-nav__left-primary`**),
|
|
5642
|
+
* as do **`slot="right-aside-mobile"`** rows (not a list). **`slot="dropdown"`** uses a local **`.xpl-top-nav-item__dropdown`**
|
|
5643
|
+
* panel (not **`xpl-dropdown`**); see **`TECH_DEBT.md`**.
|
|
5644
|
+
* **Default slot (no `label`):** do not put **`xpl-top-nav-item__inner`** or other **`xpl-top-nav-item__*`** classes on
|
|
5645
|
+
* custom trigger content — the component renders the inner wrapper and BEM elements.
|
|
5646
|
+
* **Theming:** The host always includes Foundation’s **`dark`** class so **`--xpl-*`** purpose tokens resolve to dark-mode
|
|
5647
|
+
* values even when the page root is light (consistent with **`xpl-top-nav`**).
|
|
5648
|
+
*/
|
|
5649
|
+
interface XplTopNavItem {
|
|
5650
|
+
/**
|
|
5651
|
+
* When true, adds **`xpl-top-nav-item--active`** for persistent accent styling (e.g. link color on the bar, or chrome inside **`xpl-nav-header-menu`**). Separate from **`selected`**, which sets **`aria-current="page"`** and **`--selected`**. Use both when the design needs “current page” semantics plus the active visual treatment.
|
|
5652
|
+
* @default false
|
|
5653
|
+
*/
|
|
5654
|
+
"active"?: boolean;
|
|
5655
|
+
/**
|
|
5656
|
+
* If set without **`slot="dropdown"`**, the inner control renders as a native **`<a href>`** (link mode).
|
|
5657
|
+
*/
|
|
5658
|
+
"href"?: string;
|
|
5659
|
+
/**
|
|
5660
|
+
* Icon name from **`@xplortech/apollo-icons`** (shown before the label when **`label`** is set).
|
|
5661
|
+
* @default ''
|
|
5662
|
+
*/
|
|
5663
|
+
"icon"?: string;
|
|
5664
|
+
/**
|
|
5665
|
+
* Accessible name for the inner control when there is no **`label`** and no default-slot text (e.g. icon-only). If omitted in that case, **`aria-label`** defaults to **`Navigation item`**. Ignored when **`label`** or default-slot content supplies a visible name.
|
|
5666
|
+
*/
|
|
5667
|
+
"itemAriaLabel"?: string;
|
|
5668
|
+
/**
|
|
5669
|
+
* 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.
|
|
5670
|
+
*/
|
|
5671
|
+
"label"?: string;
|
|
5672
|
+
/**
|
|
5673
|
+
* Emitted for plain items (button or link) on pointer **click**, or when keyboard activation produces a **`click`** (native for **Enter** on **`<a href>`**, or programmatic **`.click()`** for **Space** on links). **`detail`** is the **`MouseEvent`** from that activation (synthetic only for **`<div role="button">`** via **Enter** / **Space**). Not emitted when **`slot="dropdown"`** is used.
|
|
5674
|
+
*/
|
|
5675
|
+
"onNavItemClick"?: (event: XplTopNavItemCustomEvent<MouseEvent>) => void;
|
|
5676
|
+
/**
|
|
5677
|
+
* When true, sets **`aria-current="page"`** and selected styling.
|
|
5678
|
+
* @default false
|
|
5679
|
+
*/
|
|
5680
|
+
"selected"?: boolean;
|
|
5681
|
+
}
|
|
4162
5682
|
interface XplUtilityBar {
|
|
4163
5683
|
/**
|
|
4164
5684
|
* @property {boolean} - Optional property that defines whether or not the main nav is open at startup.
|
|
@@ -4189,14 +5709,17 @@ declare namespace LocalJSX {
|
|
|
4189
5709
|
"isNavOpenAtStartup": boolean;
|
|
4190
5710
|
}
|
|
4191
5711
|
interface XplAvatarAttributes {
|
|
4192
|
-
"color":
|
|
5712
|
+
"color": AvatarColor;
|
|
4193
5713
|
"disabled": boolean;
|
|
5714
|
+
"groupData": AvatarGroupItem[] | string;
|
|
4194
5715
|
"href": string;
|
|
4195
5716
|
"name": string;
|
|
4196
5717
|
"size": 'md' | 'sm';
|
|
4197
5718
|
"src": string;
|
|
4198
|
-
"status":
|
|
5719
|
+
"status": AvatarStatus;
|
|
5720
|
+
"subText": string;
|
|
4199
5721
|
"target": string;
|
|
5722
|
+
"variant": AvatarVariant;
|
|
4200
5723
|
}
|
|
4201
5724
|
interface XplBackdropAttributes {
|
|
4202
5725
|
"relative": boolean;
|
|
@@ -4251,15 +5774,16 @@ declare namespace LocalJSX {
|
|
|
4251
5774
|
"defaultDate": string;
|
|
4252
5775
|
}
|
|
4253
5776
|
interface XplCheckboxAttributes {
|
|
5777
|
+
"ariaLabel": string;
|
|
4254
5778
|
"checked": boolean;
|
|
5779
|
+
"dataId": string;
|
|
4255
5780
|
"description": string;
|
|
4256
5781
|
"disabled": boolean;
|
|
4257
5782
|
"indeterminate": boolean;
|
|
4258
5783
|
"name": string;
|
|
4259
|
-
"value": string;
|
|
4260
5784
|
"required": boolean;
|
|
4261
5785
|
"styled": boolean;
|
|
4262
|
-
"
|
|
5786
|
+
"value": string;
|
|
4263
5787
|
}
|
|
4264
5788
|
interface XplChoicelistAttributes {
|
|
4265
5789
|
"description": string;
|
|
@@ -4327,10 +5851,10 @@ declare namespace LocalJSX {
|
|
|
4327
5851
|
}
|
|
4328
5852
|
interface XplHeaderAccordionAttributes {
|
|
4329
5853
|
"contentId": string;
|
|
4330
|
-
"initialExpanded": boolean;
|
|
4331
5854
|
"disabled": boolean;
|
|
4332
|
-
"selectedCount": number;
|
|
4333
5855
|
"hasCheckbox": boolean;
|
|
5856
|
+
"initialExpanded": boolean;
|
|
5857
|
+
"selectedCount": number;
|
|
4334
5858
|
}
|
|
4335
5859
|
interface XplIconAttributes {
|
|
4336
5860
|
"icon": string;
|
|
@@ -4368,7 +5892,17 @@ declare namespace LocalJSX {
|
|
|
4368
5892
|
"hideEyeDropper": boolean;
|
|
4369
5893
|
"defaultCountry": string;
|
|
4370
5894
|
"isInternational": boolean;
|
|
4371
|
-
"
|
|
5895
|
+
"ariaLabel": string;
|
|
5896
|
+
"shape": 'rounded' | 'box';
|
|
5897
|
+
"type": | 'date'
|
|
5898
|
+
| 'time'
|
|
5899
|
+
| 'text'
|
|
5900
|
+
| 'number'
|
|
5901
|
+
| 'password'
|
|
5902
|
+
| 'file'
|
|
5903
|
+
| 'color'
|
|
5904
|
+
| 'phone'
|
|
5905
|
+
| 'search';
|
|
4372
5906
|
}
|
|
4373
5907
|
interface XplInputColorAttributes {
|
|
4374
5908
|
"value": string;
|
|
@@ -4413,6 +5947,21 @@ declare namespace LocalJSX {
|
|
|
4413
5947
|
"required": boolean;
|
|
4414
5948
|
"value": string;
|
|
4415
5949
|
}
|
|
5950
|
+
interface XplInputSearchAttributes {
|
|
5951
|
+
"ariaLabel": string;
|
|
5952
|
+
"autocomplete": string;
|
|
5953
|
+
"disabled": boolean;
|
|
5954
|
+
"errorMessageId": string;
|
|
5955
|
+
"hasError": boolean;
|
|
5956
|
+
"hasVisibleLabel": boolean;
|
|
5957
|
+
"inputId": string;
|
|
5958
|
+
"name": string;
|
|
5959
|
+
"placeholder": string;
|
|
5960
|
+
"readonly": boolean;
|
|
5961
|
+
"required": boolean;
|
|
5962
|
+
"shape": 'rounded' | 'box';
|
|
5963
|
+
"value": string;
|
|
5964
|
+
}
|
|
4416
5965
|
interface XplInputTimeAttributes {
|
|
4417
5966
|
"inputId": string;
|
|
4418
5967
|
"disabled": boolean;
|
|
@@ -4433,6 +5982,26 @@ declare namespace LocalJSX {
|
|
|
4433
5982
|
"name": string;
|
|
4434
5983
|
"description": string;
|
|
4435
5984
|
}
|
|
5985
|
+
interface XplListAttributes {
|
|
5986
|
+
"label": string;
|
|
5987
|
+
"labelledBy": string;
|
|
5988
|
+
"reorderable": boolean;
|
|
5989
|
+
"selectable": boolean;
|
|
5990
|
+
}
|
|
5991
|
+
interface XplListItemAttributes {
|
|
5992
|
+
"disabled": boolean;
|
|
5993
|
+
"error": boolean;
|
|
5994
|
+
"hidden": boolean;
|
|
5995
|
+
"href": string;
|
|
5996
|
+
"itemId": string;
|
|
5997
|
+
"keyboardActive": boolean;
|
|
5998
|
+
"radioName": string;
|
|
5999
|
+
"reorderable": boolean;
|
|
6000
|
+
"selectable": boolean;
|
|
6001
|
+
"selected": boolean;
|
|
6002
|
+
"showDivider": boolean;
|
|
6003
|
+
"titleBadgeVariant": BadgeVariantProp;
|
|
6004
|
+
}
|
|
4436
6005
|
interface XplMainNavAttributes {
|
|
4437
6006
|
"width": 'default' | 'md' | 'sm';
|
|
4438
6007
|
}
|
|
@@ -4441,6 +6010,10 @@ declare namespace LocalJSX {
|
|
|
4441
6010
|
"size": 'large' | 'medium' | 'small';
|
|
4442
6011
|
"variant": 'default' | 'warning';
|
|
4443
6012
|
}
|
|
6013
|
+
interface XplNavHeaderMenuAttributes {
|
|
6014
|
+
"email": string;
|
|
6015
|
+
"username": string;
|
|
6016
|
+
}
|
|
4444
6017
|
interface XplNavItemAttributes {
|
|
4445
6018
|
"navControl": boolean;
|
|
4446
6019
|
}
|
|
@@ -4461,9 +6034,6 @@ declare namespace LocalJSX {
|
|
|
4461
6034
|
"position": PopoverPosition;
|
|
4462
6035
|
"display": 'arrow' | 'menu';
|
|
4463
6036
|
}
|
|
4464
|
-
interface XplProgressAttributes {
|
|
4465
|
-
"currentStep": number;
|
|
4466
|
-
}
|
|
4467
6037
|
interface XplProgressBarAttributes {
|
|
4468
6038
|
"helperText": string;
|
|
4469
6039
|
"label": string;
|
|
@@ -4472,6 +6042,12 @@ declare namespace LocalJSX {
|
|
|
4472
6042
|
"value": number;
|
|
4473
6043
|
"variant": 'default' | 'success' | 'error' | 'indeterminate';
|
|
4474
6044
|
}
|
|
6045
|
+
interface XplProgressIndicatorAttributes {
|
|
6046
|
+
"currentStep": number;
|
|
6047
|
+
"layout": 'horizontal' | 'vertical';
|
|
6048
|
+
"showLabels": boolean;
|
|
6049
|
+
"showNumbers": boolean;
|
|
6050
|
+
}
|
|
4475
6051
|
interface XplRadioAttributes {
|
|
4476
6052
|
"checked": boolean;
|
|
4477
6053
|
"description": string;
|
|
@@ -4530,30 +6106,85 @@ declare namespace LocalJSX {
|
|
|
4530
6106
|
"variant": 'default' | 'warning';
|
|
4531
6107
|
"showFooter": boolean;
|
|
4532
6108
|
}
|
|
4533
|
-
interface
|
|
6109
|
+
interface XplSpotlightAttributes {
|
|
6110
|
+
"actionLayout": SpotlightActionLayout;
|
|
6111
|
+
"anchorPosition": SpotlightAnchorPosition;
|
|
6112
|
+
"body": string;
|
|
6113
|
+
"currentStep": number;
|
|
6114
|
+
"heading": string;
|
|
6115
|
+
"isDismissible": boolean;
|
|
6116
|
+
"isOpen": boolean;
|
|
6117
|
+
"primaryActionLabel": string;
|
|
6118
|
+
"secondaryActionLabel": string;
|
|
6119
|
+
"showActions": boolean;
|
|
6120
|
+
"showImage": boolean;
|
|
6121
|
+
"showSteps": boolean;
|
|
4534
6122
|
"target": string;
|
|
6123
|
+
"totalSteps": number;
|
|
6124
|
+
}
|
|
6125
|
+
interface XplTabAttributes {
|
|
6126
|
+
"disabled": boolean;
|
|
6127
|
+
"groupDisabled": boolean;
|
|
6128
|
+
"icon": string;
|
|
6129
|
+
"iconPosition": 'start' | 'end';
|
|
4535
6130
|
"selected": boolean;
|
|
6131
|
+
"target": string;
|
|
4536
6132
|
}
|
|
4537
6133
|
interface XplTabPanelAttributes {
|
|
4538
|
-
"target": string;
|
|
4539
6134
|
"selected": boolean;
|
|
6135
|
+
"target": string;
|
|
4540
6136
|
}
|
|
4541
6137
|
interface XplTableAttributes {
|
|
4542
6138
|
"freeze": boolean;
|
|
6139
|
+
"isSortable": boolean;
|
|
6140
|
+
"label": string;
|
|
4543
6141
|
"multiselect": boolean;
|
|
6142
|
+
"reorderHandleIcon": string;
|
|
6143
|
+
"reorderHandleIconKeyboard": string;
|
|
6144
|
+
"rowReorderable": boolean;
|
|
6145
|
+
"selectable": boolean;
|
|
4544
6146
|
"striped": boolean;
|
|
4545
|
-
|
|
6147
|
+
}
|
|
6148
|
+
interface XplTableCellAttributes {
|
|
6149
|
+
"align": 'left' | 'right' | 'center';
|
|
6150
|
+
"bold": boolean;
|
|
6151
|
+
"disabled": boolean;
|
|
6152
|
+
"underline": boolean;
|
|
6153
|
+
}
|
|
6154
|
+
interface XplTableFooterCellAttributes {
|
|
6155
|
+
"align": 'left' | 'right' | 'center';
|
|
4546
6156
|
}
|
|
4547
6157
|
interface XplTableHeaderCellAttributes {
|
|
6158
|
+
"align": 'left' | 'right' | 'center';
|
|
6159
|
+
"checkboxAriaLabel": string;
|
|
6160
|
+
"checked": boolean;
|
|
6161
|
+
"columnWidth": string;
|
|
4548
6162
|
"icon": string;
|
|
4549
|
-
"
|
|
6163
|
+
"indeterminate": boolean;
|
|
4550
6164
|
"label": string;
|
|
4551
|
-
"
|
|
6165
|
+
"sortable": boolean;
|
|
6166
|
+
"sortDirection": 'asc' | 'desc' | null;
|
|
6167
|
+
"sortKey": string;
|
|
6168
|
+
"type": 'label' | 'checkbox' | 'icon' | 'empty';
|
|
4552
6169
|
"width": number;
|
|
4553
6170
|
}
|
|
6171
|
+
interface XplTableRowAttributes {
|
|
6172
|
+
"disabled": boolean;
|
|
6173
|
+
"rowId": string;
|
|
6174
|
+
"selected": boolean;
|
|
6175
|
+
}
|
|
4554
6176
|
interface XplTabsAttributes {
|
|
4555
|
-
"
|
|
6177
|
+
"disabled": boolean;
|
|
4556
6178
|
"fullWidth": boolean;
|
|
6179
|
+
"type": 'tabs' | 'segment';
|
|
6180
|
+
"value": string;
|
|
6181
|
+
}
|
|
6182
|
+
interface XplTagAttributes {
|
|
6183
|
+
"disabled": boolean;
|
|
6184
|
+
"dismissible": boolean;
|
|
6185
|
+
"isDraggable": boolean;
|
|
6186
|
+
"size": 'default' | 'sm';
|
|
6187
|
+
"tagId": string;
|
|
4557
6188
|
}
|
|
4558
6189
|
interface XplToastAttributes {
|
|
4559
6190
|
"variant": 'neutral' | 'warning' | 'success';
|
|
@@ -4586,6 +6217,22 @@ declare namespace LocalJSX {
|
|
|
4586
6217
|
| 'bottom-right';
|
|
4587
6218
|
"hideArrow": boolean;
|
|
4588
6219
|
}
|
|
6220
|
+
interface XplTopNavAttributes {
|
|
6221
|
+
"brandHref": string;
|
|
6222
|
+
"brandLogo": string;
|
|
6223
|
+
"brandName": string;
|
|
6224
|
+
"childAccountLabel": string;
|
|
6225
|
+
"label": string;
|
|
6226
|
+
"navControl": boolean;
|
|
6227
|
+
}
|
|
6228
|
+
interface XplTopNavItemAttributes {
|
|
6229
|
+
"active": boolean;
|
|
6230
|
+
"href": string;
|
|
6231
|
+
"icon": string;
|
|
6232
|
+
"itemAriaLabel": string;
|
|
6233
|
+
"label": string;
|
|
6234
|
+
"selected": boolean;
|
|
6235
|
+
}
|
|
4589
6236
|
interface XplUtilityBarAttributes {
|
|
4590
6237
|
"navControl": boolean;
|
|
4591
6238
|
"isNavOpenAtStartup": boolean;
|
|
@@ -4625,17 +6272,20 @@ declare namespace LocalJSX {
|
|
|
4625
6272
|
"xpl-input-date": Omit<XplInputDate, keyof XplInputDateAttributes> & { [K in keyof XplInputDate & keyof XplInputDateAttributes]?: XplInputDate[K] } & { [K in keyof XplInputDate & keyof XplInputDateAttributes as `attr:${K}`]?: XplInputDateAttributes[K] } & { [K in keyof XplInputDate & keyof XplInputDateAttributes as `prop:${K}`]?: XplInputDate[K] };
|
|
4626
6273
|
"xpl-input-file": Omit<XplInputFile, keyof XplInputFileAttributes> & { [K in keyof XplInputFile & keyof XplInputFileAttributes]?: XplInputFile[K] } & { [K in keyof XplInputFile & keyof XplInputFileAttributes as `attr:${K}`]?: XplInputFileAttributes[K] } & { [K in keyof XplInputFile & keyof XplInputFileAttributes as `prop:${K}`]?: XplInputFile[K] };
|
|
4627
6274
|
"xpl-input-phone": Omit<XplInputPhone, keyof XplInputPhoneAttributes> & { [K in keyof XplInputPhone & keyof XplInputPhoneAttributes]?: XplInputPhone[K] } & { [K in keyof XplInputPhone & keyof XplInputPhoneAttributes as `attr:${K}`]?: XplInputPhoneAttributes[K] } & { [K in keyof XplInputPhone & keyof XplInputPhoneAttributes as `prop:${K}`]?: XplInputPhone[K] };
|
|
6275
|
+
"xpl-input-search": Omit<XplInputSearch, keyof XplInputSearchAttributes> & { [K in keyof XplInputSearch & keyof XplInputSearchAttributes]?: XplInputSearch[K] } & { [K in keyof XplInputSearch & keyof XplInputSearchAttributes as `attr:${K}`]?: XplInputSearchAttributes[K] } & { [K in keyof XplInputSearch & keyof XplInputSearchAttributes as `prop:${K}`]?: XplInputSearch[K] } & OneOf<"inputId", XplInputSearch["inputId"], XplInputSearchAttributes["inputId"]>;
|
|
4628
6276
|
"xpl-input-time": Omit<XplInputTime, keyof XplInputTimeAttributes> & { [K in keyof XplInputTime & keyof XplInputTimeAttributes]?: XplInputTime[K] } & { [K in keyof XplInputTime & keyof XplInputTimeAttributes as `attr:${K}`]?: XplInputTimeAttributes[K] } & { [K in keyof XplInputTime & keyof XplInputTimeAttributes as `prop:${K}`]?: XplInputTime[K] };
|
|
4629
6277
|
"xpl-large-card": Omit<XplLargeCard, keyof XplLargeCardAttributes> & { [K in keyof XplLargeCard & keyof XplLargeCardAttributes]?: XplLargeCard[K] } & { [K in keyof XplLargeCard & keyof XplLargeCardAttributes as `attr:${K}`]?: XplLargeCardAttributes[K] } & { [K in keyof XplLargeCard & keyof XplLargeCardAttributes as `prop:${K}`]?: XplLargeCard[K] };
|
|
4630
|
-
"xpl-list": XplList;
|
|
6278
|
+
"xpl-list": Omit<XplList, keyof XplListAttributes> & { [K in keyof XplList & keyof XplListAttributes]?: XplList[K] } & { [K in keyof XplList & keyof XplListAttributes as `attr:${K}`]?: XplListAttributes[K] } & { [K in keyof XplList & keyof XplListAttributes as `prop:${K}`]?: XplList[K] };
|
|
6279
|
+
"xpl-list-item": Omit<XplListItem, keyof XplListItemAttributes> & { [K in keyof XplListItem & keyof XplListItemAttributes]?: XplListItem[K] } & { [K in keyof XplListItem & keyof XplListItemAttributes as `attr:${K}`]?: XplListItemAttributes[K] } & { [K in keyof XplListItem & keyof XplListItemAttributes as `prop:${K}`]?: XplListItem[K] };
|
|
4631
6280
|
"xpl-main-nav": Omit<XplMainNav, keyof XplMainNavAttributes> & { [K in keyof XplMainNav & keyof XplMainNavAttributes]?: XplMainNav[K] } & { [K in keyof XplMainNav & keyof XplMainNavAttributes as `attr:${K}`]?: XplMainNavAttributes[K] } & { [K in keyof XplMainNav & keyof XplMainNavAttributes as `prop:${K}`]?: XplMainNav[K] };
|
|
4632
6281
|
"xpl-modal": Omit<XplModal, keyof XplModalAttributes> & { [K in keyof XplModal & keyof XplModalAttributes]?: XplModal[K] } & { [K in keyof XplModal & keyof XplModalAttributes as `attr:${K}`]?: XplModalAttributes[K] } & { [K in keyof XplModal & keyof XplModalAttributes as `prop:${K}`]?: XplModal[K] };
|
|
6282
|
+
"xpl-nav-header-menu": Omit<XplNavHeaderMenu, keyof XplNavHeaderMenuAttributes> & { [K in keyof XplNavHeaderMenu & keyof XplNavHeaderMenuAttributes]?: XplNavHeaderMenu[K] } & { [K in keyof XplNavHeaderMenu & keyof XplNavHeaderMenuAttributes as `attr:${K}`]?: XplNavHeaderMenuAttributes[K] } & { [K in keyof XplNavHeaderMenu & keyof XplNavHeaderMenuAttributes as `prop:${K}`]?: XplNavHeaderMenu[K] };
|
|
4633
6283
|
"xpl-nav-item": Omit<XplNavItem, keyof XplNavItemAttributes> & { [K in keyof XplNavItem & keyof XplNavItemAttributes]?: XplNavItem[K] } & { [K in keyof XplNavItem & keyof XplNavItemAttributes as `attr:${K}`]?: XplNavItemAttributes[K] } & { [K in keyof XplNavItem & keyof XplNavItemAttributes as `prop:${K}`]?: XplNavItem[K] };
|
|
4634
6284
|
"xpl-pagination": Omit<XplPagination, keyof XplPaginationAttributes> & { [K in keyof XplPagination & keyof XplPaginationAttributes]?: XplPagination[K] } & { [K in keyof XplPagination & keyof XplPaginationAttributes as `attr:${K}`]?: XplPaginationAttributes[K] } & { [K in keyof XplPagination & keyof XplPaginationAttributes as `prop:${K}`]?: XplPagination[K] };
|
|
4635
6285
|
"xpl-panel": Omit<XplPanel, keyof XplPanelAttributes> & { [K in keyof XplPanel & keyof XplPanelAttributes]?: XplPanel[K] } & { [K in keyof XplPanel & keyof XplPanelAttributes as `attr:${K}`]?: XplPanelAttributes[K] } & { [K in keyof XplPanel & keyof XplPanelAttributes as `prop:${K}`]?: XplPanel[K] };
|
|
4636
6286
|
"xpl-popover": Omit<XplPopover, keyof XplPopoverAttributes> & { [K in keyof XplPopover & keyof XplPopoverAttributes]?: XplPopover[K] } & { [K in keyof XplPopover & keyof XplPopoverAttributes as `attr:${K}`]?: XplPopoverAttributes[K] } & { [K in keyof XplPopover & keyof XplPopoverAttributes as `prop:${K}`]?: XplPopover[K] };
|
|
4637
|
-
"xpl-progress": Omit<XplProgress, keyof XplProgressAttributes> & { [K in keyof XplProgress & keyof XplProgressAttributes]?: XplProgress[K] } & { [K in keyof XplProgress & keyof XplProgressAttributes as `attr:${K}`]?: XplProgressAttributes[K] } & { [K in keyof XplProgress & keyof XplProgressAttributes as `prop:${K}`]?: XplProgress[K] };
|
|
4638
6287
|
"xpl-progress-bar": Omit<XplProgressBar, keyof XplProgressBarAttributes> & { [K in keyof XplProgressBar & keyof XplProgressBarAttributes]?: XplProgressBar[K] } & { [K in keyof XplProgressBar & keyof XplProgressBarAttributes as `attr:${K}`]?: XplProgressBarAttributes[K] } & { [K in keyof XplProgressBar & keyof XplProgressBarAttributes as `prop:${K}`]?: XplProgressBar[K] };
|
|
6288
|
+
"xpl-progress-indicator": Omit<XplProgressIndicator, keyof XplProgressIndicatorAttributes> & { [K in keyof XplProgressIndicator & keyof XplProgressIndicatorAttributes]?: XplProgressIndicator[K] } & { [K in keyof XplProgressIndicator & keyof XplProgressIndicatorAttributes as `attr:${K}`]?: XplProgressIndicatorAttributes[K] } & { [K in keyof XplProgressIndicator & keyof XplProgressIndicatorAttributes as `prop:${K}`]?: XplProgressIndicator[K] };
|
|
4639
6289
|
"xpl-radio": Omit<XplRadio, keyof XplRadioAttributes> & { [K in keyof XplRadio & keyof XplRadioAttributes]?: XplRadio[K] } & { [K in keyof XplRadio & keyof XplRadioAttributes as `attr:${K}`]?: XplRadioAttributes[K] } & { [K in keyof XplRadio & keyof XplRadioAttributes as `prop:${K}`]?: XplRadio[K] };
|
|
4640
6290
|
"xpl-secondary-nav": XplSecondaryNav;
|
|
4641
6291
|
"xpl-select": Omit<XplSelect, keyof XplSelectAttributes> & { [K in keyof XplSelect & keyof XplSelectAttributes]?: XplSelect[K] } & { [K in keyof XplSelect & keyof XplSelectAttributes as `attr:${K}`]?: XplSelectAttributes[K] } & { [K in keyof XplSelect & keyof XplSelectAttributes as `prop:${K}`]?: XplSelect[K] };
|
|
@@ -4643,17 +6293,25 @@ declare namespace LocalJSX {
|
|
|
4643
6293
|
"xpl-side-nav-item": Omit<XplSideNavItem, keyof XplSideNavItemAttributes> & { [K in keyof XplSideNavItem & keyof XplSideNavItemAttributes]?: XplSideNavItem[K] } & { [K in keyof XplSideNavItem & keyof XplSideNavItemAttributes as `attr:${K}`]?: XplSideNavItemAttributes[K] } & { [K in keyof XplSideNavItem & keyof XplSideNavItemAttributes as `prop:${K}`]?: XplSideNavItem[K] };
|
|
4644
6294
|
"xpl-skeleton": Omit<XplSkeleton, keyof XplSkeletonAttributes> & { [K in keyof XplSkeleton & keyof XplSkeletonAttributes]?: XplSkeleton[K] } & { [K in keyof XplSkeleton & keyof XplSkeletonAttributes as `attr:${K}`]?: XplSkeletonAttributes[K] } & { [K in keyof XplSkeleton & keyof XplSkeletonAttributes as `prop:${K}`]?: XplSkeleton[K] };
|
|
4645
6295
|
"xpl-slideout": Omit<XplSlideout, keyof XplSlideoutAttributes> & { [K in keyof XplSlideout & keyof XplSlideoutAttributes]?: XplSlideout[K] } & { [K in keyof XplSlideout & keyof XplSlideoutAttributes as `attr:${K}`]?: XplSlideoutAttributes[K] } & { [K in keyof XplSlideout & keyof XplSlideoutAttributes as `prop:${K}`]?: XplSlideout[K] };
|
|
6296
|
+
"xpl-spotlight": Omit<XplSpotlight, keyof XplSpotlightAttributes> & { [K in keyof XplSpotlight & keyof XplSpotlightAttributes]?: XplSpotlight[K] } & { [K in keyof XplSpotlight & keyof XplSpotlightAttributes as `attr:${K}`]?: XplSpotlightAttributes[K] } & { [K in keyof XplSpotlight & keyof XplSpotlightAttributes as `prop:${K}`]?: XplSpotlight[K] };
|
|
4646
6297
|
"xpl-tab": Omit<XplTab, keyof XplTabAttributes> & { [K in keyof XplTab & keyof XplTabAttributes]?: XplTab[K] } & { [K in keyof XplTab & keyof XplTabAttributes as `attr:${K}`]?: XplTabAttributes[K] } & { [K in keyof XplTab & keyof XplTabAttributes as `prop:${K}`]?: XplTab[K] };
|
|
4647
6298
|
"xpl-tab-panel": Omit<XplTabPanel, keyof XplTabPanelAttributes> & { [K in keyof XplTabPanel & keyof XplTabPanelAttributes]?: XplTabPanel[K] } & { [K in keyof XplTabPanel & keyof XplTabPanelAttributes as `attr:${K}`]?: XplTabPanelAttributes[K] } & { [K in keyof XplTabPanel & keyof XplTabPanelAttributes as `prop:${K}`]?: XplTabPanel[K] };
|
|
4648
6299
|
"xpl-table": Omit<XplTable, keyof XplTableAttributes> & { [K in keyof XplTable & keyof XplTableAttributes]?: XplTable[K] } & { [K in keyof XplTable & keyof XplTableAttributes as `attr:${K}`]?: XplTableAttributes[K] } & { [K in keyof XplTable & keyof XplTableAttributes as `prop:${K}`]?: XplTable[K] };
|
|
6300
|
+
"xpl-table-body": XplTableBody;
|
|
6301
|
+
"xpl-table-cell": Omit<XplTableCell, keyof XplTableCellAttributes> & { [K in keyof XplTableCell & keyof XplTableCellAttributes]?: XplTableCell[K] } & { [K in keyof XplTableCell & keyof XplTableCellAttributes as `attr:${K}`]?: XplTableCellAttributes[K] } & { [K in keyof XplTableCell & keyof XplTableCellAttributes as `prop:${K}`]?: XplTableCell[K] };
|
|
6302
|
+
"xpl-table-footer": XplTableFooter;
|
|
6303
|
+
"xpl-table-footer-cell": Omit<XplTableFooterCell, keyof XplTableFooterCellAttributes> & { [K in keyof XplTableFooterCell & keyof XplTableFooterCellAttributes]?: XplTableFooterCell[K] } & { [K in keyof XplTableFooterCell & keyof XplTableFooterCellAttributes as `attr:${K}`]?: XplTableFooterCellAttributes[K] } & { [K in keyof XplTableFooterCell & keyof XplTableFooterCellAttributes as `prop:${K}`]?: XplTableFooterCell[K] };
|
|
4649
6304
|
"xpl-table-header": XplTableHeader;
|
|
4650
6305
|
"xpl-table-header-cell": Omit<XplTableHeaderCell, keyof XplTableHeaderCellAttributes> & { [K in keyof XplTableHeaderCell & keyof XplTableHeaderCellAttributes]?: XplTableHeaderCell[K] } & { [K in keyof XplTableHeaderCell & keyof XplTableHeaderCellAttributes as `attr:${K}`]?: XplTableHeaderCellAttributes[K] } & { [K in keyof XplTableHeaderCell & keyof XplTableHeaderCellAttributes as `prop:${K}`]?: XplTableHeaderCell[K] };
|
|
6306
|
+
"xpl-table-row": Omit<XplTableRow, keyof XplTableRowAttributes> & { [K in keyof XplTableRow & keyof XplTableRowAttributes]?: XplTableRow[K] } & { [K in keyof XplTableRow & keyof XplTableRowAttributes as `attr:${K}`]?: XplTableRowAttributes[K] } & { [K in keyof XplTableRow & keyof XplTableRowAttributes as `prop:${K}`]?: XplTableRow[K] };
|
|
4651
6307
|
"xpl-tabs": Omit<XplTabs, keyof XplTabsAttributes> & { [K in keyof XplTabs & keyof XplTabsAttributes]?: XplTabs[K] } & { [K in keyof XplTabs & keyof XplTabsAttributes as `attr:${K}`]?: XplTabsAttributes[K] } & { [K in keyof XplTabs & keyof XplTabsAttributes as `prop:${K}`]?: XplTabs[K] };
|
|
4652
|
-
"xpl-tag": XplTag;
|
|
6308
|
+
"xpl-tag": Omit<XplTag, keyof XplTagAttributes> & { [K in keyof XplTag & keyof XplTagAttributes]?: XplTag[K] } & { [K in keyof XplTag & keyof XplTagAttributes as `attr:${K}`]?: XplTagAttributes[K] } & { [K in keyof XplTag & keyof XplTagAttributes as `prop:${K}`]?: XplTag[K] };
|
|
4653
6309
|
"xpl-toast": Omit<XplToast, keyof XplToastAttributes> & { [K in keyof XplToast & keyof XplToastAttributes]?: XplToast[K] } & { [K in keyof XplToast & keyof XplToastAttributes as `attr:${K}`]?: XplToastAttributes[K] } & { [K in keyof XplToast & keyof XplToastAttributes as `prop:${K}`]?: XplToast[K] };
|
|
4654
6310
|
"xpl-toggle": Omit<XplToggle, keyof XplToggleAttributes> & { [K in keyof XplToggle & keyof XplToggleAttributes]?: XplToggle[K] } & { [K in keyof XplToggle & keyof XplToggleAttributes as `attr:${K}`]?: XplToggleAttributes[K] } & { [K in keyof XplToggle & keyof XplToggleAttributes as `prop:${K}`]?: XplToggle[K] };
|
|
4655
6311
|
"xpl-toolbar": Omit<XplToolbar, keyof XplToolbarAttributes> & { [K in keyof XplToolbar & keyof XplToolbarAttributes]?: XplToolbar[K] } & { [K in keyof XplToolbar & keyof XplToolbarAttributes as `attr:${K}`]?: XplToolbarAttributes[K] } & { [K in keyof XplToolbar & keyof XplToolbarAttributes as `prop:${K}`]?: XplToolbar[K] };
|
|
4656
6312
|
"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] };
|
|
6313
|
+
"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] };
|
|
6314
|
+
"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] };
|
|
4657
6315
|
"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] };
|
|
4658
6316
|
}
|
|
4659
6317
|
}
|
|
@@ -4682,8 +6340,20 @@ declare module "@stencil/core" {
|
|
|
4682
6340
|
"xpl-dropdown-group": LocalJSX.IntrinsicElements["xpl-dropdown-group"] & JSXBase.HTMLAttributes<HTMLXplDropdownGroupElement>;
|
|
4683
6341
|
"xpl-dropdown-heading": LocalJSX.IntrinsicElements["xpl-dropdown-heading"] & JSXBase.HTMLAttributes<HTMLXplDropdownHeadingElement>;
|
|
4684
6342
|
"xpl-dropdown-option": LocalJSX.IntrinsicElements["xpl-dropdown-option"] & JSXBase.HTMLAttributes<HTMLXplDropdownOptionElement>;
|
|
6343
|
+
/**
|
|
6344
|
+
* @deprecated Use the compositional `<xpl-table>` API instead.
|
|
6345
|
+
* This component will be removed in a future major release.
|
|
6346
|
+
*/
|
|
4685
6347
|
"xpl-dynamic-table": LocalJSX.IntrinsicElements["xpl-dynamic-table"] & JSXBase.HTMLAttributes<HTMLXplDynamicTableElement>;
|
|
6348
|
+
/**
|
|
6349
|
+
* @deprecated Use `<xpl-table-cell>` instead.
|
|
6350
|
+
* This component will be removed in a future major release.
|
|
6351
|
+
*/
|
|
4686
6352
|
"xpl-dynamic-table-cell": LocalJSX.IntrinsicElements["xpl-dynamic-table-cell"] & JSXBase.HTMLAttributes<HTMLXplDynamicTableCellElement>;
|
|
6353
|
+
/**
|
|
6354
|
+
* @deprecated Use `<xpl-table-row>` instead.
|
|
6355
|
+
* This component will be removed in a future major release.
|
|
6356
|
+
*/
|
|
4687
6357
|
"xpl-dynamic-table-row": LocalJSX.IntrinsicElements["xpl-dynamic-table-row"] & JSXBase.HTMLAttributes<HTMLXplDynamicTableRowElement>;
|
|
4688
6358
|
"xpl-grid": LocalJSX.IntrinsicElements["xpl-grid"] & JSXBase.HTMLAttributes<HTMLXplGridElement>;
|
|
4689
6359
|
"xpl-grid-item": LocalJSX.IntrinsicElements["xpl-grid-item"] & JSXBase.HTMLAttributes<HTMLXplGridItemElement>;
|
|
@@ -4697,11 +6367,32 @@ declare module "@stencil/core" {
|
|
|
4697
6367
|
*/
|
|
4698
6368
|
"xpl-input-file": LocalJSX.IntrinsicElements["xpl-input-file"] & JSXBase.HTMLAttributes<HTMLXplInputFileElement>;
|
|
4699
6369
|
"xpl-input-phone": LocalJSX.IntrinsicElements["xpl-input-phone"] & JSXBase.HTMLAttributes<HTMLXplInputPhoneElement>;
|
|
6370
|
+
"xpl-input-search": LocalJSX.IntrinsicElements["xpl-input-search"] & JSXBase.HTMLAttributes<HTMLXplInputSearchElement>;
|
|
4700
6371
|
"xpl-input-time": LocalJSX.IntrinsicElements["xpl-input-time"] & JSXBase.HTMLAttributes<HTMLXplInputTimeElement>;
|
|
4701
6372
|
"xpl-large-card": LocalJSX.IntrinsicElements["xpl-large-card"] & JSXBase.HTMLAttributes<HTMLXplLargeCardElement>;
|
|
4702
6373
|
"xpl-list": LocalJSX.IntrinsicElements["xpl-list"] & JSXBase.HTMLAttributes<HTMLXplListElement>;
|
|
6374
|
+
"xpl-list-item": LocalJSX.IntrinsicElements["xpl-list-item"] & JSXBase.HTMLAttributes<HTMLXplListItemElement>;
|
|
4703
6375
|
"xpl-main-nav": LocalJSX.IntrinsicElements["xpl-main-nav"] & JSXBase.HTMLAttributes<HTMLXplMainNavElement>;
|
|
4704
6376
|
"xpl-modal": LocalJSX.IntrinsicElements["xpl-modal"] & JSXBase.HTMLAttributes<HTMLXplModalElement>;
|
|
6377
|
+
/**
|
|
6378
|
+
* Profile / account block (username, email, default slot for **`xpl-top-nav-item`** / **`xpl-divider`**).
|
|
6379
|
+
* Tag **`xpl-nav-header-menu`**; implementation folder **`xpl-nav-header-menu`**. **`.xpl-nav-header-menu__slot`** is
|
|
6380
|
+
* **`role="list"`** for slotted **`xpl-top-nav-item`** (**`role="listitem"`**).
|
|
6381
|
+
* **Slotted content:** do not add **`xpl-nav-header-menu__*`** BEM classes on nodes you pass into the default slot —
|
|
6382
|
+
* profile, list shell, and **`xpl-top-nav-item`** **`role="listitem"`** are handled by the component. Use
|
|
6383
|
+
* **`xpl-top-nav-item`** (or plain elements that are not Apollo **`xpl-*`** BEM hooks) in the slot only.
|
|
6384
|
+
* **`slot="right-aside-mobile"`** — optional block **between** the profile header and the default-slot list (e.g. narrow-only
|
|
6385
|
+
* duplicate of **every** **`slot="right-aside"`** control per Figma when **`xpl-top-nav`** hides **`right-aside`** on narrow viewports (always)).
|
|
6386
|
+
* Not **`role="list"`**; use **`xpl-button`** / **`xpl-top-nav-item`** as needed. Shown only on **narrow viewports** (one pixel below Tailwind **`md`** — **`top-nav.css`**) so bar actions stay in **`slot="right-aside"`** on wider viewports.
|
|
6387
|
+
* Light-DOM **`slotchange`** is unreliable; a host **`MutationObserver`** (child / subtree / **`slot`** attribute) keeps
|
|
6388
|
+
* **`xpl-nav-header-menu--has-right-aside-mobile`** in sync when nodes are added or retargeted after mount (same pattern as **`xpl-top-nav`**).
|
|
6389
|
+
* Stencil **`newSpecPage`** / mock-doc does not define **`MutationObserver`**; slot presence still updates on the next
|
|
6390
|
+
* deferred flush (**`setTimeout(0)`** coalesced with **`componentDidRender`**). In real browsers the observer handles child /
|
|
6391
|
+
* **`slot`** mutations without stacking uncancellable microtasks.
|
|
6392
|
+
* **Theming:** The host always includes Foundation’s **`dark`** class so **`--xpl-*`** purpose tokens resolve to dark-mode
|
|
6393
|
+
* values even when the page root is light (same contract as **`xpl-top-nav`** / **`xpl-top-nav-item`**).
|
|
6394
|
+
*/
|
|
6395
|
+
"xpl-nav-header-menu": LocalJSX.IntrinsicElements["xpl-nav-header-menu"] & JSXBase.HTMLAttributes<HTMLXplNavHeaderMenuElement>;
|
|
4705
6396
|
"xpl-nav-item": LocalJSX.IntrinsicElements["xpl-nav-item"] & JSXBase.HTMLAttributes<HTMLXplNavItemElement>;
|
|
4706
6397
|
"xpl-pagination": LocalJSX.IntrinsicElements["xpl-pagination"] & JSXBase.HTMLAttributes<HTMLXplPaginationElement>;
|
|
4707
6398
|
/**
|
|
@@ -4710,8 +6401,8 @@ declare module "@stencil/core" {
|
|
|
4710
6401
|
*/
|
|
4711
6402
|
"xpl-panel": LocalJSX.IntrinsicElements["xpl-panel"] & JSXBase.HTMLAttributes<HTMLXplPanelElement>;
|
|
4712
6403
|
"xpl-popover": LocalJSX.IntrinsicElements["xpl-popover"] & JSXBase.HTMLAttributes<HTMLXplPopoverElement>;
|
|
4713
|
-
"xpl-progress": LocalJSX.IntrinsicElements["xpl-progress"] & JSXBase.HTMLAttributes<HTMLXplProgressElement>;
|
|
4714
6404
|
"xpl-progress-bar": LocalJSX.IntrinsicElements["xpl-progress-bar"] & JSXBase.HTMLAttributes<HTMLXplProgressBarElement>;
|
|
6405
|
+
"xpl-progress-indicator": LocalJSX.IntrinsicElements["xpl-progress-indicator"] & JSXBase.HTMLAttributes<HTMLXplProgressIndicatorElement>;
|
|
4715
6406
|
"xpl-radio": LocalJSX.IntrinsicElements["xpl-radio"] & JSXBase.HTMLAttributes<HTMLXplRadioElement>;
|
|
4716
6407
|
"xpl-secondary-nav": LocalJSX.IntrinsicElements["xpl-secondary-nav"] & JSXBase.HTMLAttributes<HTMLXplSecondaryNavElement>;
|
|
4717
6408
|
"xpl-select": LocalJSX.IntrinsicElements["xpl-select"] & JSXBase.HTMLAttributes<HTMLXplSelectElement>;
|
|
@@ -4719,17 +6410,66 @@ declare module "@stencil/core" {
|
|
|
4719
6410
|
"xpl-side-nav-item": LocalJSX.IntrinsicElements["xpl-side-nav-item"] & JSXBase.HTMLAttributes<HTMLXplSideNavItemElement>;
|
|
4720
6411
|
"xpl-skeleton": LocalJSX.IntrinsicElements["xpl-skeleton"] & JSXBase.HTMLAttributes<HTMLXplSkeletonElement>;
|
|
4721
6412
|
"xpl-slideout": LocalJSX.IntrinsicElements["xpl-slideout"] & JSXBase.HTMLAttributes<HTMLXplSlideoutElement>;
|
|
6413
|
+
"xpl-spotlight": LocalJSX.IntrinsicElements["xpl-spotlight"] & JSXBase.HTMLAttributes<HTMLXplSpotlightElement>;
|
|
4722
6414
|
"xpl-tab": LocalJSX.IntrinsicElements["xpl-tab"] & JSXBase.HTMLAttributes<HTMLXplTabElement>;
|
|
4723
6415
|
"xpl-tab-panel": LocalJSX.IntrinsicElements["xpl-tab-panel"] & JSXBase.HTMLAttributes<HTMLXplTabPanelElement>;
|
|
6416
|
+
/**
|
|
6417
|
+
* Compositional tables use CSS grid on the host (`role="grid"`). Legacy mode uses a `<table>`.
|
|
6418
|
+
*/
|
|
4724
6419
|
"xpl-table": LocalJSX.IntrinsicElements["xpl-table"] & JSXBase.HTMLAttributes<HTMLXplTableElement>;
|
|
6420
|
+
"xpl-table-body": LocalJSX.IntrinsicElements["xpl-table-body"] & JSXBase.HTMLAttributes<HTMLXplTableBodyElement>;
|
|
6421
|
+
"xpl-table-cell": LocalJSX.IntrinsicElements["xpl-table-cell"] & JSXBase.HTMLAttributes<HTMLXplTableCellElement>;
|
|
6422
|
+
"xpl-table-footer": LocalJSX.IntrinsicElements["xpl-table-footer"] & JSXBase.HTMLAttributes<HTMLXplTableFooterElement>;
|
|
6423
|
+
"xpl-table-footer-cell": LocalJSX.IntrinsicElements["xpl-table-footer-cell"] & JSXBase.HTMLAttributes<HTMLXplTableFooterCellElement>;
|
|
4725
6424
|
"xpl-table-header": LocalJSX.IntrinsicElements["xpl-table-header"] & JSXBase.HTMLAttributes<HTMLXplTableHeaderElement>;
|
|
4726
6425
|
"xpl-table-header-cell": LocalJSX.IntrinsicElements["xpl-table-header-cell"] & JSXBase.HTMLAttributes<HTMLXplTableHeaderCellElement>;
|
|
6426
|
+
"xpl-table-row": LocalJSX.IntrinsicElements["xpl-table-row"] & JSXBase.HTMLAttributes<HTMLXplTableRowElement>;
|
|
4727
6427
|
"xpl-tabs": LocalJSX.IntrinsicElements["xpl-tabs"] & JSXBase.HTMLAttributes<HTMLXplTabsElement>;
|
|
4728
6428
|
"xpl-tag": LocalJSX.IntrinsicElements["xpl-tag"] & JSXBase.HTMLAttributes<HTMLXplTagElement>;
|
|
4729
6429
|
"xpl-toast": LocalJSX.IntrinsicElements["xpl-toast"] & JSXBase.HTMLAttributes<HTMLXplToastElement>;
|
|
4730
6430
|
"xpl-toggle": LocalJSX.IntrinsicElements["xpl-toggle"] & JSXBase.HTMLAttributes<HTMLXplToggleElement>;
|
|
4731
6431
|
"xpl-toolbar": LocalJSX.IntrinsicElements["xpl-toolbar"] & JSXBase.HTMLAttributes<HTMLXplToolbarElement>;
|
|
4732
6432
|
"xpl-tooltip": LocalJSX.IntrinsicElements["xpl-tooltip"] & JSXBase.HTMLAttributes<HTMLXplTooltipElement>;
|
|
6433
|
+
/**
|
|
6434
|
+
* Horizontal top navigation with **`left-aside`** and a **right rail**: **`right-aside`** then **user menu**
|
|
6435
|
+
* (see **`.xpl-top-nav__right-rail`** in `render()`). The account menu uses an internal **`xpl-popover`** (**`bottom-end`**, **`display="menu"`**): built-in trigger uses **`child-account-label`** (prop / attribute) as the label beside a trailing **`chevron-down`** on **`xpl-button`** (**`icon`** / **`iconPosition="end"`**), or **`slot="user-menu-trigger"`** for a custom trigger; panel from **`slot="user-menu"`** (e.g. **`xpl-nav-header-menu`**).
|
|
6436
|
+
* Optional **`nav-control`** and **`navOpen`**. **`left-aside`** uses **`role="list"`** for primary **`xpl-top-nav-item`** rows (**`role="listitem"`** on each item host). The built-in **`xpl-top-nav__brand`** item omits **`listitem`** (it is not a child of that list). **`label`** maps to **`nav`** **`aria-label`**. Opening state is internal (not a prop) — use **`navOpen`** and host **`xpl-top-nav--open`** for styling.
|
|
6437
|
+
* **Escape:** With **`nav-control`**, **Escape** closes the mobile drawer and emits **`navOpen`** **`false`** (skips while **any** descendant **`xpl-popover`** is open — detected from each popover’s inner **`.xpl-popover--is-open`** marker — or when a **`xpl-top-nav-item`** dropdown is open — capture/bubble order). Focus returns to the nav toggle after the drawer closes (**Escape** or second toggle click).
|
|
6438
|
+
* **`xpl-top-nav-item`** **`slot="dropdown"`** uses document **capture** for **Escape** first; the shell uses **bubble**
|
|
6439
|
+
* on **`ownerDocument`** so nested dropdowns close before the drawer.
|
|
6440
|
+
* **Theming:** The host always includes Foundation’s **`dark`** class so **`--xpl-*`** purpose tokens under this subtree
|
|
6441
|
+
* resolve to dark-mode values even when the page root is light. Floating overlays (e.g. **`xpl-popover`** / **`xpl-dropdown`**
|
|
6442
|
+
* content teleported outside the host) do not inherit this scope — add **`dark`** on those panels if they should match.
|
|
6443
|
+
* **Layout:** **`right-aside`** and the user-menu region are wrapped internally (**`.xpl-top-nav__right-lead`**, etc.).
|
|
6444
|
+
* Consumers should not add those BEM classes — slot content only.
|
|
6445
|
+
* **Brand logo:** use **`brand-logo`** (URL) for a built-in **`<img>`**, or **`slot="brand-logo"`** for custom markup (e.g. **`xpl-icon`**, SVG). When the URL prop is set, it takes precedence and the slot is not used for the image. On **narrow viewports** (one pixel below Tailwind **`md`** — see **`top-nav.css`**), **`brand-name`** text is hidden in the bar (logo / slot mark only); keep a meaningful **`alt`** on **`brand-logo`** or accessible slotted mark for context.
|
|
6446
|
+
* **Narrow / mobile** (same breakpoint as above): **`slot="left-aside"`** is **hidden** in the bar until **`nav-control`**
|
|
6447
|
+
* is set **and** the drawer is open (floating panel per Figma). **Without **`nav-control`**, there is no mobile drawer** —
|
|
6448
|
+
* primary links remain hidden below **`md`** until the viewport is wide enough for the horizontal bar. The built-in **brand**
|
|
6449
|
+
* stays in the top bar (**hamburger → brand** when **`nav-control`** is set). **`right-aside`** is hidden in the bar on narrow
|
|
6450
|
+
* viewports (**`top-nav.css`**, one pixel below Tailwind **`md`**); duplicate those actions into **`xpl-nav-header-menu`**
|
|
6451
|
+
* **`slot="right-aside-mobile"`** (below profile, above the list; narrow-only CSS in **`top-nav.css`**) per Figma.
|
|
6452
|
+
* **Account menu vs drawer:** Opening the built-in account **`xpl-popover`** while the mobile drawer is open **closes the drawer**
|
|
6453
|
+
* and emits **`navOpen(false)`** so the two layers do not stack.
|
|
6454
|
+
*/
|
|
6455
|
+
"xpl-top-nav": LocalJSX.IntrinsicElements["xpl-top-nav"] & JSXBase.HTMLAttributes<HTMLXplTopNavElement>;
|
|
6456
|
+
/**
|
|
6457
|
+
* Single nav row for **`xpl-top-nav`** / **`xpl-nav-header-menu`**. The host uses **`role="listitem"`** when the row
|
|
6458
|
+
* participates in a list: a **`role="list"`** parent, **`slot="left-aside"`** on **`xpl-top-nav`** (list host is
|
|
6459
|
+
* **`.xpl-top-nav__left-primary`** while slotted nodes stay light-DOM children of **`xpl-top-nav`**), or default-slot rows
|
|
6460
|
+
* under **`xpl-nav-header-menu`**. That flag is
|
|
6461
|
+
* kept in **`@State`** and refreshed after render plus via **`MutationObserver`** on the host (**`class`**, **`slot`**) and
|
|
6462
|
+
* on **`parentElement`** (**`role`**) or on **`.xpl-top-nav__left-primary`** (**`role`**) for **`slot="left-aside"`** under **`xpl-top-nav`**) so DOM context changes
|
|
6463
|
+
* without a full reconnect still re-sync. The internal
|
|
6464
|
+
* **`xpl-top-nav__brand`** row omits **`listitem`** (it sits in **`.xpl-top-nav__brand-bar`**, not **`.xpl-top-nav__left-primary`**),
|
|
6465
|
+
* as do **`slot="right-aside-mobile"`** rows (not a list). **`slot="dropdown"`** uses a local **`.xpl-top-nav-item__dropdown`**
|
|
6466
|
+
* panel (not **`xpl-dropdown`**); see **`TECH_DEBT.md`**.
|
|
6467
|
+
* **Default slot (no `label`):** do not put **`xpl-top-nav-item__inner`** or other **`xpl-top-nav-item__*`** classes on
|
|
6468
|
+
* custom trigger content — the component renders the inner wrapper and BEM elements.
|
|
6469
|
+
* **Theming:** The host always includes Foundation’s **`dark`** class so **`--xpl-*`** purpose tokens resolve to dark-mode
|
|
6470
|
+
* values even when the page root is light (consistent with **`xpl-top-nav`**).
|
|
6471
|
+
*/
|
|
6472
|
+
"xpl-top-nav-item": LocalJSX.IntrinsicElements["xpl-top-nav-item"] & JSXBase.HTMLAttributes<HTMLXplTopNavItemElement>;
|
|
4733
6473
|
"xpl-utility-bar": LocalJSX.IntrinsicElements["xpl-utility-bar"] & JSXBase.HTMLAttributes<HTMLXplUtilityBarElement>;
|
|
4734
6474
|
}
|
|
4735
6475
|
}
|