@xplortech/apollo-core 2.6.0 → 2.7.1
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 +626 -35
- package/build/style.css +5949 -3070
- package/dist/apollo-core/apollo-core.css +29 -19
- package/dist/apollo-core/apollo-core.esm.js +1 -1
- package/dist/apollo-core/p-0bf50890.entry.js +1 -0
- package/dist/apollo-core/p-1947e7a8.entry.js +1 -0
- package/dist/apollo-core/p-27928cb0.entry.js +1 -0
- package/dist/apollo-core/{p-5549756c.entry.js → p-34438721.entry.js} +1 -1
- package/dist/apollo-core/p-35c2f72d.entry.js +1 -0
- package/dist/apollo-core/p-368c81f1.entry.js +1 -0
- package/dist/apollo-core/{p-f5af9539.entry.js → p-36ba29da.entry.js} +1 -1
- package/dist/apollo-core/p-406b27a8.entry.js +1 -0
- package/dist/apollo-core/p-5d63b4ce.entry.js +1 -0
- package/dist/apollo-core/{p-02167464.entry.js → p-6a15f1e0.entry.js} +1 -1
- package/dist/apollo-core/p-8d692d05.entry.js +1 -0
- package/dist/apollo-core/{p-C_Z2nG0p.js → p-C7bgJs6C.js} +2 -2
- package/dist/apollo-core/{p-42016063.entry.js → p-b61d7952.entry.js} +1 -1
- package/dist/apollo-core/{p-8a1affce.entry.js → p-ca127ee8.entry.js} +1 -1
- package/dist/apollo-core/p-d1c9c233.entry.js +1 -0
- package/dist/apollo-core/p-dc205893.entry.js +1 -0
- package/dist/apollo-core/p-e2a5d41c.entry.js +1 -0
- package/dist/cjs/apollo-core.cjs.js +3 -3
- package/dist/cjs/{index-DH6pgWru.js → index-BQ97-AWw.js} +18 -7
- 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_54.cjs.entry.js} +3726 -536
- 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-table-header-cell.cjs.entry.js +1 -1
- package/dist/cjs/xpl-table-header.cjs.entry.js +2 -2
- package/dist/cjs/xpl-toggle.cjs.entry.js +4 -4
- package/dist/cjs/xpl-toolbar.cjs.entry.js +3 -3
- package/dist/collection/collection-manifest.json +11 -5
- 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 +25 -3
- 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 +77 -7
- package/dist/collection/components/xpl-dynamic-table/xpl-dynamic-table.js +1 -1
- package/dist/collection/components/xpl-dynamic-table-cell/xpl-dynamic-table-cell.js +2 -2
- package/dist/collection/components/xpl-dynamic-table-row/xpl-dynamic-table-row.js +2 -2
- package/dist/collection/components/xpl-grid/xpl-grid.js +1 -1
- package/dist/collection/components/xpl-grid-item/xpl-grid-item.js +1 -1
- package/dist/collection/components/xpl-header-accordion/xpl-header-accordion.js +1 -1
- package/dist/collection/components/xpl-icon/xpl-icon.js +2 -2
- package/dist/collection/components/xpl-input/input.stories.js +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/pagination.stories.js +18 -0
- package/dist/collection/components/xpl-pagination/xpl-pagination.js +7 -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 +58 -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/xpl-table.js +5 -5
- package/dist/collection/components/xpl-table-header/xpl-table-header.js +1 -1
- 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/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-header.js +1 -1
- 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 +12 -11
- package/dist/docs/xpl-divider/readme.md +6 -4
- package/dist/docs/xpl-dropdown/readme.md +14 -12
- package/dist/docs/xpl-icon/readme.md +14 -2
- 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 +19 -16
- 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-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 -8
- 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_54.entry.js} +3719 -536
- 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-table-header-cell.entry.js +1 -1
- package/dist/esm/xpl-table-header.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 +2 -1
- package/dist/types/components/xpl-dropdown/xpl-dropdown.d.ts +5 -0
- 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-pagination/pagination.stories.d.ts +13 -0
- 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-select/xpl-select.d.ts +3 -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-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 +1521 -83
- package/dist/types/utils/lifecycle.d.ts +16 -0
- package/dist/types/utils/tab-a11y-ids.d.ts +4 -0
- package/package.json +12 -3
- package/dist/apollo-core/p-0bce3874.entry.js +0 -1
- package/dist/apollo-core/p-1fd3dc87.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/cjs/xpl-list.cjs.entry.js +0 -32
- package/dist/collection/components/xpl-progress/progress.stories.js +0 -106
- package/dist/collection/components/xpl-progress/xpl-progress.js +0 -60
- package/dist/components/xpl-progress.js +0 -1
- package/dist/docs/xpl-progress/readme.md +0 -22
- package/dist/esm/xpl-list.entry.js +0 -30
- package/dist/types/components/xpl-progress/progress.stories.d.ts +0 -38
- package/dist/types/components/xpl-progress/xpl-progress.d.ts +0 -6
|
@@ -5,16 +5,26 @@
|
|
|
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 {
|
|
12
|
+
import { Placement } from "@floating-ui/dom";
|
|
13
|
+
import { ListItem, XplListOrderChangeDetail } from "./components/xpl-list/listitem";
|
|
14
|
+
import { BadgeVariantProp as BadgeVariantProp1 } from "./components/xpl-badge/xpl-badge";
|
|
12
15
|
import { PopoverPosition } from "./components/xpl-popover/xpl-popover";
|
|
16
|
+
import { SpotlightActionLayout, SpotlightAnchorPosition } from "./components/xpl-spotlight/xpl-spotlight";
|
|
17
|
+
import { TagDragEndDetail, TagDragStartDetail } from "./components/xpl-tag/xpl-tag";
|
|
18
|
+
export { AvatarColor, AvatarGroupItem, AvatarStatus, AvatarVariant } from "./components/xpl-avatar/xpl-avatar";
|
|
13
19
|
export { BadgeVariantProp } from "./components/xpl-badge/xpl-badge";
|
|
14
20
|
export { Choice } from "./components/xpl-choicelist/choice";
|
|
15
21
|
export { DropdownItem, DropdownOptionGroup } from "./components/xpl-dropdown/dropdown-option";
|
|
16
|
-
export {
|
|
22
|
+
export { Placement } from "@floating-ui/dom";
|
|
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 { TagDragEndDetail, TagDragStartDetail } from "./components/xpl-tag/xpl-tag";
|
|
18
28
|
export namespace Components {
|
|
19
29
|
interface XplAccordion {
|
|
20
30
|
/**
|
|
@@ -76,22 +86,26 @@ export namespace Components {
|
|
|
76
86
|
/**
|
|
77
87
|
* Background color when there is no image src
|
|
78
88
|
*/
|
|
79
|
-
"color"?:
|
|
89
|
+
"color"?: AvatarColor;
|
|
80
90
|
/**
|
|
81
91
|
* Sets a disabled state on the avatar when set to true
|
|
82
92
|
* @default false
|
|
83
93
|
*/
|
|
84
94
|
"disabled"?: boolean;
|
|
95
|
+
/**
|
|
96
|
+
* When `variant` is `group`, data for each face (max 4 visible + overflow count). Each item: { src?, name?, color? }.
|
|
97
|
+
*/
|
|
98
|
+
"groupData"?: AvatarGroupItem[] | string;
|
|
85
99
|
/**
|
|
86
100
|
* The URL if the avatar should be hyperlinked
|
|
87
101
|
*/
|
|
88
102
|
"href"?: string;
|
|
89
103
|
/**
|
|
90
|
-
* Alt text for the image
|
|
104
|
+
* Alt text for the image; also used for initials when no image and no slot.
|
|
91
105
|
*/
|
|
92
106
|
"name"?: string;
|
|
93
107
|
/**
|
|
94
|
-
* Size of the avatar
|
|
108
|
+
* Size of the avatar (and of each avatar in a group).
|
|
95
109
|
*/
|
|
96
110
|
"size"?: 'md' | 'sm';
|
|
97
111
|
/**
|
|
@@ -99,13 +113,22 @@ export namespace Components {
|
|
|
99
113
|
*/
|
|
100
114
|
"src"?: string;
|
|
101
115
|
/**
|
|
102
|
-
*
|
|
116
|
+
* Shown for the default avatar, `profile`, and `with-text`; not shown when `variant` is `group`. **Legacy
|
|
117
|
+
* @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.
|
|
118
|
+
*/
|
|
119
|
+
"status"?: AvatarStatus;
|
|
120
|
+
/**
|
|
121
|
+
* Secondary text shown when `variant` is `with-text` (e.g. email).
|
|
103
122
|
*/
|
|
104
|
-
"
|
|
123
|
+
"subText"?: string;
|
|
105
124
|
/**
|
|
106
125
|
* Where to open the URL chosen for the `href` prop: `_self` (default), `_blank`, `_parent`, or `_top`
|
|
107
126
|
*/
|
|
108
127
|
"target"?: string;
|
|
128
|
+
/**
|
|
129
|
+
* 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.
|
|
130
|
+
*/
|
|
131
|
+
"variant"?: AvatarVariant;
|
|
109
132
|
}
|
|
110
133
|
interface XplBackdrop {
|
|
111
134
|
/**
|
|
@@ -193,6 +216,16 @@ export namespace Components {
|
|
|
193
216
|
interface XplBreadcrumbs {
|
|
194
217
|
}
|
|
195
218
|
interface XplButton {
|
|
219
|
+
/**
|
|
220
|
+
* 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).
|
|
221
|
+
*/
|
|
222
|
+
"controlAttrs"?: {
|
|
223
|
+
id?: string;
|
|
224
|
+
role?: string;
|
|
225
|
+
'aria-controls'?: string;
|
|
226
|
+
'aria-selected'?: 'true' | 'false';
|
|
227
|
+
'aria-current'?: string;
|
|
228
|
+
};
|
|
196
229
|
/**
|
|
197
230
|
* Whether button should be disabled
|
|
198
231
|
* @default false
|
|
@@ -311,6 +344,11 @@ export namespace Components {
|
|
|
311
344
|
"setDate": (date: string | string[]) => Promise<void>;
|
|
312
345
|
}
|
|
313
346
|
interface XplCheckbox {
|
|
347
|
+
/**
|
|
348
|
+
* 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.
|
|
349
|
+
* @default ''
|
|
350
|
+
*/
|
|
351
|
+
"ariaLabel": string;
|
|
314
352
|
/**
|
|
315
353
|
* Whether the input is checked
|
|
316
354
|
*/
|
|
@@ -458,6 +496,10 @@ export namespace Components {
|
|
|
458
496
|
* @default true
|
|
459
497
|
*/
|
|
460
498
|
"closeOnSelect": boolean;
|
|
499
|
+
/**
|
|
500
|
+
* When `anchorToTrigger` is true, additional placements to try when the default `placement` does not fit (passed to Floating UI `flip`).
|
|
501
|
+
*/
|
|
502
|
+
"flipFallbackPlacements"?: Placement[];
|
|
461
503
|
/**
|
|
462
504
|
* called on dropdown option click and keydown events to update isSelected states
|
|
463
505
|
*/
|
|
@@ -476,6 +518,11 @@ export namespace Components {
|
|
|
476
518
|
* options that are listed
|
|
477
519
|
*/
|
|
478
520
|
"options"?: DropdownItem[];
|
|
521
|
+
/**
|
|
522
|
+
* Floating UI placement when `anchorToTrigger` is true (e.g. `bottom-start`, `top-start`).
|
|
523
|
+
* @default 'bottom-start'
|
|
524
|
+
*/
|
|
525
|
+
"placement": Placement;
|
|
479
526
|
/**
|
|
480
527
|
* whether selection should be made when focusing on interactive element
|
|
481
528
|
* @default false
|
|
@@ -638,7 +685,12 @@ export namespace Components {
|
|
|
638
685
|
*/
|
|
639
686
|
"allowCustomOption"?: boolean;
|
|
640
687
|
/**
|
|
641
|
-
*
|
|
688
|
+
* 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"`).
|
|
689
|
+
* @default ''
|
|
690
|
+
*/
|
|
691
|
+
"ariaLabel": string;
|
|
692
|
+
/**
|
|
693
|
+
* Hint for form autofill feature Applies to text, password, number, and search inputs.
|
|
642
694
|
*/
|
|
643
695
|
"autocomplete"?: string;
|
|
644
696
|
/**
|
|
@@ -723,7 +775,7 @@ export namespace Components {
|
|
|
723
775
|
*/
|
|
724
776
|
"name"?: string;
|
|
725
777
|
/**
|
|
726
|
-
* Placeholder text that appears when the field has no value Applies to text, password, number, and
|
|
778
|
+
* Placeholder text that appears when the field has no value Applies to text, password, number, date, and search inputs.
|
|
727
779
|
*/
|
|
728
780
|
"placeholder"?: string;
|
|
729
781
|
/**
|
|
@@ -739,13 +791,21 @@ export namespace Components {
|
|
|
739
791
|
*/
|
|
740
792
|
"preferredCountries"?: string[];
|
|
741
793
|
/**
|
|
742
|
-
* Whether the input is editable Applies to text, password, number, and
|
|
794
|
+
* Whether the input is editable Applies to text, password, number, date, and search inputs.
|
|
743
795
|
*/
|
|
744
796
|
"readonly"?: boolean;
|
|
745
797
|
/**
|
|
746
798
|
* Whether the input is required Applies to all input types.
|
|
747
799
|
*/
|
|
748
800
|
"required"?: boolean;
|
|
801
|
+
/**
|
|
802
|
+
* Moves keyboard focus to the native control (text field, textarea, or search inner input).
|
|
803
|
+
*/
|
|
804
|
+
"setFocus": () => Promise<void>;
|
|
805
|
+
/**
|
|
806
|
+
* Shell corner radius for search inputs: `rounded` (pill) or `box` (rounded rectangle). Applies to search inputs (`type="search"`).
|
|
807
|
+
*/
|
|
808
|
+
"shape"?: 'rounded' | 'box';
|
|
749
809
|
/**
|
|
750
810
|
* 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
811
|
*/
|
|
@@ -759,9 +819,17 @@ export namespace Components {
|
|
|
759
819
|
* The type of form control
|
|
760
820
|
* @default 'text'
|
|
761
821
|
*/
|
|
762
|
-
"type"?:
|
|
822
|
+
"type"?: | 'date'
|
|
823
|
+
| 'time'
|
|
824
|
+
| 'text'
|
|
825
|
+
| 'number'
|
|
826
|
+
| 'password'
|
|
827
|
+
| 'file'
|
|
828
|
+
| 'color'
|
|
829
|
+
| 'phone'
|
|
830
|
+
| 'search';
|
|
763
831
|
/**
|
|
764
|
-
* Including a `value` will pre-populate the input with the given string. Applies to text, password, number, and
|
|
832
|
+
* Including a `value` will pre-populate the input with the given string. Applies to text, password, number, date, and search inputs.
|
|
765
833
|
*/
|
|
766
834
|
"value"?: string;
|
|
767
835
|
}
|
|
@@ -935,6 +1003,74 @@ export namespace Components {
|
|
|
935
1003
|
*/
|
|
936
1004
|
"value"?: string;
|
|
937
1005
|
}
|
|
1006
|
+
interface XplInputSearch {
|
|
1007
|
+
/**
|
|
1008
|
+
* 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.
|
|
1009
|
+
* @default 'Search'
|
|
1010
|
+
*/
|
|
1011
|
+
"ariaLabel": string;
|
|
1012
|
+
/**
|
|
1013
|
+
* Passed to the native input (`autocomplete` attribute). Default `off` matches common inline-search UX; browsers may still apply heuristics.
|
|
1014
|
+
* @default 'off'
|
|
1015
|
+
*/
|
|
1016
|
+
"autocomplete": string;
|
|
1017
|
+
/**
|
|
1018
|
+
* Disables the field and clear control.
|
|
1019
|
+
* @default false
|
|
1020
|
+
*/
|
|
1021
|
+
"disabled": boolean;
|
|
1022
|
+
/**
|
|
1023
|
+
* Element id for `aria-describedby` when `hasError` (error message lives on `xpl-input`).
|
|
1024
|
+
*/
|
|
1025
|
+
"errorMessageId"?: string;
|
|
1026
|
+
/**
|
|
1027
|
+
* Set by `xpl-input` when `error` is shown — drives `aria-invalid` / `aria-describedby`.
|
|
1028
|
+
* @default false
|
|
1029
|
+
*/
|
|
1030
|
+
"hasError": boolean;
|
|
1031
|
+
/**
|
|
1032
|
+
* When true, parent `xpl-input` renders a visible label — omit `aria-label` on the input.
|
|
1033
|
+
* @default false
|
|
1034
|
+
*/
|
|
1035
|
+
"hasVisibleLabel": boolean;
|
|
1036
|
+
/**
|
|
1037
|
+
* Associates the control with the parent `xpl-input` label (`for` / `id`).
|
|
1038
|
+
*/
|
|
1039
|
+
"inputId": string;
|
|
1040
|
+
/**
|
|
1041
|
+
* Form field `name` on the native input.
|
|
1042
|
+
*/
|
|
1043
|
+
"name"?: string;
|
|
1044
|
+
/**
|
|
1045
|
+
* Placeholder shown when the value is empty.
|
|
1046
|
+
* @default 'Search'
|
|
1047
|
+
*/
|
|
1048
|
+
"placeholder": string;
|
|
1049
|
+
/**
|
|
1050
|
+
* Whether the input is editable.
|
|
1051
|
+
* @default false
|
|
1052
|
+
*/
|
|
1053
|
+
"readonly": boolean;
|
|
1054
|
+
/**
|
|
1055
|
+
* Whether the input is required.
|
|
1056
|
+
* @default false
|
|
1057
|
+
*/
|
|
1058
|
+
"required": boolean;
|
|
1059
|
+
/**
|
|
1060
|
+
* Moves keyboard focus to the search field.
|
|
1061
|
+
*/
|
|
1062
|
+
"setFocus": () => Promise<void>;
|
|
1063
|
+
/**
|
|
1064
|
+
* Shell corner radius: `rounded` (pill) or `box` (rounded rectangle).
|
|
1065
|
+
* @default 'rounded'
|
|
1066
|
+
*/
|
|
1067
|
+
"shape": 'rounded' | 'box';
|
|
1068
|
+
/**
|
|
1069
|
+
* Current value (controlled-friendly).
|
|
1070
|
+
* @default ''
|
|
1071
|
+
*/
|
|
1072
|
+
"value": string;
|
|
1073
|
+
}
|
|
938
1074
|
interface XplInputTime {
|
|
939
1075
|
/**
|
|
940
1076
|
* 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 +1147,94 @@ export namespace Components {
|
|
|
1011
1147
|
}
|
|
1012
1148
|
interface XplList {
|
|
1013
1149
|
/**
|
|
1014
|
-
*
|
|
1150
|
+
* 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.
|
|
1151
|
+
*/
|
|
1152
|
+
"clearSelection": () => Promise<void>;
|
|
1153
|
+
/**
|
|
1154
|
+
* Array of list items to render. Each item should follow the ListItem interface. **Deprecated.** Use slot-based xpl-list-item children instead.
|
|
1015
1155
|
* @default []
|
|
1016
1156
|
*/
|
|
1017
|
-
"items"
|
|
1157
|
+
"items": ListItem[];
|
|
1158
|
+
/**
|
|
1159
|
+
* 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).
|
|
1160
|
+
*/
|
|
1161
|
+
"label"?: string;
|
|
1162
|
+
/**
|
|
1163
|
+
* 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.
|
|
1164
|
+
*/
|
|
1165
|
+
"labelledBy"?: string;
|
|
1166
|
+
/**
|
|
1167
|
+
* 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.
|
|
1168
|
+
* @default false
|
|
1169
|
+
*/
|
|
1170
|
+
"reorderable": boolean;
|
|
1171
|
+
/**
|
|
1172
|
+
* 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()`).
|
|
1173
|
+
* @default false
|
|
1174
|
+
*/
|
|
1175
|
+
"selectable": boolean;
|
|
1176
|
+
}
|
|
1177
|
+
interface XplListItem {
|
|
1178
|
+
/**
|
|
1179
|
+
* Whether the item is disabled.
|
|
1180
|
+
* @default false
|
|
1181
|
+
*/
|
|
1182
|
+
"disabled"?: boolean;
|
|
1183
|
+
/**
|
|
1184
|
+
* Whether to show the item in an error state.
|
|
1185
|
+
* @default false
|
|
1186
|
+
*/
|
|
1187
|
+
"error"?: boolean;
|
|
1188
|
+
/**
|
|
1189
|
+
* 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.
|
|
1190
|
+
* @default false
|
|
1191
|
+
*/
|
|
1192
|
+
"hidden": boolean;
|
|
1193
|
+
/**
|
|
1194
|
+
* URL for link behavior. When provided, the entire row becomes clickable. Clicks on `actions` or `avatar` slots are prevented from triggering navigation.
|
|
1195
|
+
*/
|
|
1196
|
+
"href"?: string;
|
|
1197
|
+
/**
|
|
1198
|
+
* 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`).
|
|
1199
|
+
*/
|
|
1200
|
+
"item"?: ListItem;
|
|
1201
|
+
/**
|
|
1202
|
+
* 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.
|
|
1203
|
+
*/
|
|
1204
|
+
"itemId"?: string;
|
|
1205
|
+
/**
|
|
1206
|
+
* When set by the parent, indicates this item is the active keyboard reorder item.
|
|
1207
|
+
* @default false
|
|
1208
|
+
*/
|
|
1209
|
+
"keyboardActive"?: boolean;
|
|
1210
|
+
/**
|
|
1211
|
+
* Name attribute for radio inputs (shared across selectable items in a list).
|
|
1212
|
+
*/
|
|
1213
|
+
"radioName"?: string;
|
|
1214
|
+
/**
|
|
1215
|
+
* 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.
|
|
1216
|
+
* @default false
|
|
1217
|
+
*/
|
|
1218
|
+
"reorderable"?: boolean;
|
|
1219
|
+
/**
|
|
1220
|
+
* Whether this item is selectable (shows `xpl-radio` in a shared group).
|
|
1221
|
+
* @default false
|
|
1222
|
+
*/
|
|
1223
|
+
"selectable"?: boolean;
|
|
1224
|
+
/**
|
|
1225
|
+
* Whether this item is selected (radio checked state).
|
|
1226
|
+
* @default false
|
|
1227
|
+
*/
|
|
1228
|
+
"selected"?: boolean;
|
|
1229
|
+
/**
|
|
1230
|
+
* Whether to show a divider below the item.
|
|
1231
|
+
* @default false
|
|
1232
|
+
*/
|
|
1233
|
+
"showDivider"?: boolean;
|
|
1234
|
+
/**
|
|
1235
|
+
* 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).
|
|
1236
|
+
*/
|
|
1237
|
+
"titleBadgeVariant"?: BadgeVariantProp1;
|
|
1018
1238
|
}
|
|
1019
1239
|
interface XplMainNav {
|
|
1020
1240
|
/**
|
|
@@ -1040,6 +1260,34 @@ export namespace Components {
|
|
|
1040
1260
|
*/
|
|
1041
1261
|
"variant": 'default' | 'warning';
|
|
1042
1262
|
}
|
|
1263
|
+
/**
|
|
1264
|
+
* Profile / account block (username, email, default slot for **`xpl-top-nav-item`** / **`xpl-divider`**).
|
|
1265
|
+
* Tag **`xpl-nav-header-menu`**; implementation folder **`xpl-nav-header-menu`**. **`.xpl-nav-header-menu__slot`** is
|
|
1266
|
+
* **`role="list"`** for slotted **`xpl-top-nav-item`** (**`role="listitem"`**).
|
|
1267
|
+
* **Slotted content:** do not add **`xpl-nav-header-menu__*`** BEM classes on nodes you pass into the default slot —
|
|
1268
|
+
* profile, list shell, and **`xpl-top-nav-item`** **`role="listitem"`** are handled by the component. Use
|
|
1269
|
+
* **`xpl-top-nav-item`** (or plain elements that are not Apollo **`xpl-*`** BEM hooks) in the slot only.
|
|
1270
|
+
* **`slot="right-aside-mobile"`** — optional block **between** the profile header and the default-slot list (e.g. narrow-only
|
|
1271
|
+
* duplicate of **every** **`slot="right-aside"`** control per Figma when **`xpl-top-nav`** hides **`right-aside`** on narrow viewports (always)).
|
|
1272
|
+
* 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.
|
|
1273
|
+
* Light-DOM **`slotchange`** is unreliable; a host **`MutationObserver`** (child / subtree / **`slot`** attribute) keeps
|
|
1274
|
+
* **`xpl-nav-header-menu--has-right-aside-mobile`** in sync when nodes are added or retargeted after mount (same pattern as **`xpl-top-nav`**).
|
|
1275
|
+
* Stencil **`newSpecPage`** / mock-doc does not define **`MutationObserver`**; slot presence still updates on the next
|
|
1276
|
+
* deferred flush (**`setTimeout(0)`** coalesced with **`componentDidRender`**). In real browsers the observer handles child /
|
|
1277
|
+
* **`slot`** mutations without stacking uncancellable microtasks.
|
|
1278
|
+
* **Theming:** The host always includes Foundation’s **`dark`** class so **`--xpl-*`** purpose tokens resolve to dark-mode
|
|
1279
|
+
* values even when the page root is light (same contract as **`xpl-top-nav`** / **`xpl-top-nav-item`**).
|
|
1280
|
+
*/
|
|
1281
|
+
interface XplNavHeaderMenu {
|
|
1282
|
+
/**
|
|
1283
|
+
* Email address shown below the username.
|
|
1284
|
+
*/
|
|
1285
|
+
"email"?: string;
|
|
1286
|
+
/**
|
|
1287
|
+
* Display name shown in the profile block.
|
|
1288
|
+
*/
|
|
1289
|
+
"username"?: string;
|
|
1290
|
+
}
|
|
1043
1291
|
interface XplNavItem {
|
|
1044
1292
|
/**
|
|
1045
1293
|
* @property {boolean} - Whether or not the item should control the main nav state on click
|
|
@@ -1085,7 +1333,7 @@ export namespace Components {
|
|
|
1085
1333
|
*/
|
|
1086
1334
|
"accent": 'none' | 'primary' | 'secondary' | 'positive' | 'negative' | 'highlight';
|
|
1087
1335
|
/**
|
|
1088
|
-
* Padding density applied to the content area.
|
|
1336
|
+
* 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
1337
|
* @default 'default'
|
|
1090
1338
|
*/
|
|
1091
1339
|
"padding": 'default' | 'tight' | 'loose';
|
|
@@ -1112,17 +1360,6 @@ export namespace Components {
|
|
|
1112
1360
|
*/
|
|
1113
1361
|
"position": PopoverPosition;
|
|
1114
1362
|
}
|
|
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
1363
|
interface XplProgressBar {
|
|
1127
1364
|
/**
|
|
1128
1365
|
* The helper text displayed below the progress bar (recommended for error state)
|
|
@@ -1153,6 +1390,32 @@ export namespace Components {
|
|
|
1153
1390
|
*/
|
|
1154
1391
|
"variant": 'default' | 'success' | 'error' | 'indeterminate';
|
|
1155
1392
|
}
|
|
1393
|
+
interface XplProgressIndicator {
|
|
1394
|
+
/**
|
|
1395
|
+
* 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].
|
|
1396
|
+
* @default 0
|
|
1397
|
+
*/
|
|
1398
|
+
"currentStep": number;
|
|
1399
|
+
/**
|
|
1400
|
+
* Layout direction - 'horizontal' or 'vertical'
|
|
1401
|
+
* @default 'horizontal'
|
|
1402
|
+
*/
|
|
1403
|
+
"layout": 'horizontal' | 'vertical';
|
|
1404
|
+
/**
|
|
1405
|
+
* Whether to show step labels
|
|
1406
|
+
* @default true
|
|
1407
|
+
*/
|
|
1408
|
+
"showLabels": boolean;
|
|
1409
|
+
/**
|
|
1410
|
+
* Whether to show step numbers inside circles
|
|
1411
|
+
* @default true
|
|
1412
|
+
*/
|
|
1413
|
+
"showNumbers": boolean;
|
|
1414
|
+
/**
|
|
1415
|
+
* The steps is an array of the steps name.
|
|
1416
|
+
*/
|
|
1417
|
+
"steps"?: string[];
|
|
1418
|
+
}
|
|
1156
1419
|
interface XplRadio {
|
|
1157
1420
|
/**
|
|
1158
1421
|
* Whether the input is "on"
|
|
@@ -1207,6 +1470,15 @@ export namespace Components {
|
|
|
1207
1470
|
* Whether the field is disabled
|
|
1208
1471
|
*/
|
|
1209
1472
|
"disabled"?: boolean;
|
|
1473
|
+
/**
|
|
1474
|
+
* Additional placements to try for the options panel when the default `dropdownPlacement` does not fit. Passed to `xpl-dropdown` / Floating UI `flip`.
|
|
1475
|
+
*/
|
|
1476
|
+
"dropdownFlipFallbackPlacements"?: Placement[];
|
|
1477
|
+
/**
|
|
1478
|
+
* Initial Floating UI placement for the options panel (e.g. `top-start`, `bottom-start`). Forwarded to the inner `xpl-dropdown` when the menu is open.
|
|
1479
|
+
* @default 'bottom-start'
|
|
1480
|
+
*/
|
|
1481
|
+
"dropdownPlacement": Placement;
|
|
1210
1482
|
/**
|
|
1211
1483
|
* If an empty string (attribute present with no value), will display visually as an error. If a string is included, will display visually as an error and include the value as an error message.
|
|
1212
1484
|
*/
|
|
@@ -1354,16 +1626,126 @@ export namespace Components {
|
|
|
1354
1626
|
*/
|
|
1355
1627
|
"variant": 'default' | 'warning';
|
|
1356
1628
|
}
|
|
1629
|
+
interface XplSpotlight {
|
|
1630
|
+
/**
|
|
1631
|
+
* 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`.
|
|
1632
|
+
* @default 'default'
|
|
1633
|
+
*/
|
|
1634
|
+
"actionLayout": SpotlightActionLayout;
|
|
1635
|
+
/**
|
|
1636
|
+
* Which corner of the card the anchor dot uses when not using `target`, or as the preferred side for Floating UI.
|
|
1637
|
+
* @default 'top-left'
|
|
1638
|
+
*/
|
|
1639
|
+
"anchorPosition": SpotlightAnchorPosition;
|
|
1640
|
+
/**
|
|
1641
|
+
* Body copy when the `body` slot has no slotted content. Whitespace-only values are treated as empty (no fallback paragraph).
|
|
1642
|
+
*/
|
|
1643
|
+
"body"?: string;
|
|
1644
|
+
/**
|
|
1645
|
+
* Current step index (1-based). Used with `totalSteps` for the step label and for disabling default Back/Next when `showSteps` is true.
|
|
1646
|
+
* @default 1
|
|
1647
|
+
*/
|
|
1648
|
+
"currentStep": number;
|
|
1649
|
+
/**
|
|
1650
|
+
* Heading when the `title` slot has no slotted content. Whitespace-only values are treated as empty (no fallback title span).
|
|
1651
|
+
*/
|
|
1652
|
+
"heading"?: string;
|
|
1653
|
+
/**
|
|
1654
|
+
* Whether to show the dismiss (close) control.
|
|
1655
|
+
* @default true
|
|
1656
|
+
*/
|
|
1657
|
+
"isDismissible": boolean;
|
|
1658
|
+
/**
|
|
1659
|
+
* Controls whether the spotlight is rendered. When false, the host remains in the DOM but the spotlight UI is hidden.
|
|
1660
|
+
* @default true
|
|
1661
|
+
*/
|
|
1662
|
+
"isOpen": boolean;
|
|
1663
|
+
/**
|
|
1664
|
+
* Label used for the default primary action button. Only applies when `showActions` is `true`.
|
|
1665
|
+
* @default 'Next'
|
|
1666
|
+
*/
|
|
1667
|
+
"primaryActionLabel": string;
|
|
1668
|
+
/**
|
|
1669
|
+
* Label used for the default secondary action button. Only applies when `showActions` is `true`.
|
|
1670
|
+
* @default 'Back'
|
|
1671
|
+
*/
|
|
1672
|
+
"secondaryActionLabel": string;
|
|
1673
|
+
/**
|
|
1674
|
+
* 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.
|
|
1675
|
+
* @default true
|
|
1676
|
+
*/
|
|
1677
|
+
"showActions": boolean;
|
|
1678
|
+
/**
|
|
1679
|
+
* 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.
|
|
1680
|
+
* @default true
|
|
1681
|
+
*/
|
|
1682
|
+
"showImage": boolean;
|
|
1683
|
+
/**
|
|
1684
|
+
* Whether to show the step counter between actions (`currentStep` of `totalSteps`) and whether default Back/Next use step-based disabled state.
|
|
1685
|
+
* @default true
|
|
1686
|
+
*/
|
|
1687
|
+
"showSteps": boolean;
|
|
1688
|
+
/**
|
|
1689
|
+
* 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`.
|
|
1690
|
+
*/
|
|
1691
|
+
"target"?: string;
|
|
1692
|
+
/**
|
|
1693
|
+
* 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.
|
|
1694
|
+
* @default 1
|
|
1695
|
+
*/
|
|
1696
|
+
"totalSteps": number;
|
|
1697
|
+
}
|
|
1357
1698
|
interface XplTab {
|
|
1699
|
+
/**
|
|
1700
|
+
* Disables this tab (pill or underline).
|
|
1701
|
+
* @default false
|
|
1702
|
+
*/
|
|
1703
|
+
"disabled": boolean;
|
|
1704
|
+
/**
|
|
1705
|
+
* Focuses the tab's trigger button.
|
|
1706
|
+
*/
|
|
1707
|
+
"focusTrigger": () => Promise<void>;
|
|
1708
|
+
/**
|
|
1709
|
+
* Whether the tab should take full width (set by parent `xpl-tabs` when fullWidth is true).
|
|
1710
|
+
* @default false
|
|
1711
|
+
*/
|
|
1712
|
+
"fullWidth": boolean;
|
|
1713
|
+
/**
|
|
1714
|
+
* Returns the focusable button element for this tab (underline `<button>` or segment `xpl-button` inner button).
|
|
1715
|
+
*/
|
|
1716
|
+
"getFocusableElement": () => Promise<HTMLButtonElement | null>;
|
|
1717
|
+
/**
|
|
1718
|
+
* Set when the parent `xpl-tabs` has `disabled` (group-disabled).
|
|
1719
|
+
* @default false
|
|
1720
|
+
*/
|
|
1721
|
+
"groupDisabled": boolean;
|
|
1722
|
+
/**
|
|
1723
|
+
* Optional icon name for segment-style pills (`type="segment"` on parent `xpl-tabs`). Ignored for default tabs.
|
|
1724
|
+
*/
|
|
1725
|
+
"icon"?: string;
|
|
1726
|
+
/**
|
|
1727
|
+
* Icon position for segment-style pills.
|
|
1728
|
+
* @default 'start'
|
|
1729
|
+
*/
|
|
1730
|
+
"iconPosition": 'start' | 'end';
|
|
1358
1731
|
/**
|
|
1359
1732
|
* Whether the tab is selected
|
|
1360
1733
|
* @default false
|
|
1361
1734
|
*/
|
|
1362
1735
|
"selected": boolean;
|
|
1736
|
+
/**
|
|
1737
|
+
* Sets the tabindex on the focusable button element.
|
|
1738
|
+
*/
|
|
1739
|
+
"setTabIndex": (value: number) => Promise<void>;
|
|
1363
1740
|
/**
|
|
1364
1741
|
* The target of the tab, required for the tab to be selected
|
|
1365
1742
|
*/
|
|
1366
1743
|
"target": string;
|
|
1744
|
+
/**
|
|
1745
|
+
* Visual variant: 'tabs' for underline tabs, 'segment' for pill controls. Set by the parent `xpl-tabs` component based on its `type` prop.
|
|
1746
|
+
* @default 'tabs'
|
|
1747
|
+
*/
|
|
1748
|
+
"variant": 'tabs' | 'segment';
|
|
1367
1749
|
}
|
|
1368
1750
|
interface XplTabPanel {
|
|
1369
1751
|
/**
|
|
@@ -1445,17 +1827,51 @@ export namespace Components {
|
|
|
1445
1827
|
"width"?: number;
|
|
1446
1828
|
}
|
|
1447
1829
|
interface XplTabs {
|
|
1830
|
+
/**
|
|
1831
|
+
* Disables the whole tab group (headings, mobile select, and segment pills).
|
|
1832
|
+
* @default false
|
|
1833
|
+
*/
|
|
1834
|
+
"disabled": boolean;
|
|
1448
1835
|
/**
|
|
1449
1836
|
* Whether to make the tabs full width
|
|
1450
1837
|
* @default false
|
|
1451
1838
|
*/
|
|
1452
1839
|
"fullWidth": boolean;
|
|
1840
|
+
/**
|
|
1841
|
+
* Visual and layout variant: classic underline tabs or segment (pill) controls.
|
|
1842
|
+
* @default 'tabs'
|
|
1843
|
+
*/
|
|
1844
|
+
"type": 'tabs' | 'segment';
|
|
1453
1845
|
/**
|
|
1454
1846
|
* The selected tab target value, defaults to the first tab
|
|
1455
1847
|
*/
|
|
1456
1848
|
"value": string;
|
|
1457
1849
|
}
|
|
1458
1850
|
interface XplTag {
|
|
1851
|
+
/**
|
|
1852
|
+
* Whether the tag is disabled
|
|
1853
|
+
* @default false
|
|
1854
|
+
*/
|
|
1855
|
+
"disabled": boolean;
|
|
1856
|
+
/**
|
|
1857
|
+
* Whether the tag shows a dismiss button
|
|
1858
|
+
* @default true
|
|
1859
|
+
*/
|
|
1860
|
+
"dismissible": boolean;
|
|
1861
|
+
/**
|
|
1862
|
+
* 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.
|
|
1863
|
+
* @default false
|
|
1864
|
+
*/
|
|
1865
|
+
"isDraggable": boolean;
|
|
1866
|
+
/**
|
|
1867
|
+
* The size of the tag
|
|
1868
|
+
* @default 'default'
|
|
1869
|
+
*/
|
|
1870
|
+
"size": 'default' | 'sm';
|
|
1871
|
+
/**
|
|
1872
|
+
* Optional stable id for the tag. When set, it is included in `tagDragStart` / `tagDragEnd` detail and written to `dataTransfer` as `application/x-tag-id`.
|
|
1873
|
+
*/
|
|
1874
|
+
"tagId"?: string;
|
|
1459
1875
|
}
|
|
1460
1876
|
interface XplToast {
|
|
1461
1877
|
/**
|
|
@@ -1544,17 +1960,110 @@ export namespace Components {
|
|
|
1544
1960
|
*/
|
|
1545
1961
|
"text": string;
|
|
1546
1962
|
}
|
|
1547
|
-
|
|
1963
|
+
/**
|
|
1964
|
+
* Horizontal top navigation with **`left-aside`** and a **right rail**: **`right-aside`** then **user menu**
|
|
1965
|
+
* (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`**).
|
|
1966
|
+
* 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.
|
|
1967
|
+
* **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).
|
|
1968
|
+
* **`xpl-top-nav-item`** **`slot="dropdown"`** uses document **capture** for **Escape** first; the shell uses **bubble**
|
|
1969
|
+
* on **`ownerDocument`** so nested dropdowns close before the drawer.
|
|
1970
|
+
* **Theming:** The host always includes Foundation’s **`dark`** class so **`--xpl-*`** purpose tokens under this subtree
|
|
1971
|
+
* resolve to dark-mode values even when the page root is light. Floating overlays (e.g. **`xpl-popover`** / **`xpl-dropdown`**
|
|
1972
|
+
* content teleported outside the host) do not inherit this scope — add **`dark`** on those panels if they should match.
|
|
1973
|
+
* **Layout:** **`right-aside`** and the user-menu region are wrapped internally (**`.xpl-top-nav__right-lead`**, etc.).
|
|
1974
|
+
* Consumers should not add those BEM classes — slot content only.
|
|
1975
|
+
* **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.
|
|
1976
|
+
* **Narrow / mobile** (same breakpoint as above): **`slot="left-aside"`** is **hidden** in the bar until **`nav-control`**
|
|
1977
|
+
* is set **and** the drawer is open (floating panel per Figma). **Without **`nav-control`**, there is no mobile drawer** —
|
|
1978
|
+
* primary links remain hidden below **`md`** until the viewport is wide enough for the horizontal bar. The built-in **brand**
|
|
1979
|
+
* stays in the top bar (**hamburger → brand** when **`nav-control`** is set). **`right-aside`** is hidden in the bar on narrow
|
|
1980
|
+
* viewports (**`top-nav.css`**, one pixel below Tailwind **`md`**); duplicate those actions into **`xpl-nav-header-menu`**
|
|
1981
|
+
* **`slot="right-aside-mobile"`** (below profile, above the list; narrow-only CSS in **`top-nav.css`**) per Figma.
|
|
1982
|
+
* **Account menu vs drawer:** Opening the built-in account **`xpl-popover`** while the mobile drawer is open **closes the drawer**
|
|
1983
|
+
* and emits **`navOpen(false)`** so the two layers do not stack.
|
|
1984
|
+
*/
|
|
1985
|
+
interface XplTopNav {
|
|
1548
1986
|
/**
|
|
1549
|
-
*
|
|
1987
|
+
* 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.
|
|
1550
1988
|
*/
|
|
1551
|
-
"
|
|
1989
|
+
"brandHref"?: string;
|
|
1552
1990
|
/**
|
|
1553
|
-
*
|
|
1991
|
+
* 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.
|
|
1554
1992
|
*/
|
|
1555
|
-
"
|
|
1556
|
-
|
|
1557
|
-
|
|
1993
|
+
"brandLogo"?: string;
|
|
1994
|
+
/**
|
|
1995
|
+
* 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).
|
|
1996
|
+
*/
|
|
1997
|
+
"brandName"?: string;
|
|
1998
|
+
/**
|
|
1999
|
+
* 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.
|
|
2000
|
+
*/
|
|
2001
|
+
"childAccountLabel"?: string;
|
|
2002
|
+
/**
|
|
2003
|
+
* 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`.
|
|
2004
|
+
*/
|
|
2005
|
+
"label"?: string;
|
|
2006
|
+
/**
|
|
2007
|
+
* 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.
|
|
2008
|
+
*/
|
|
2009
|
+
"navControl"?: boolean;
|
|
2010
|
+
}
|
|
2011
|
+
/**
|
|
2012
|
+
* Single nav row for **`xpl-top-nav`** / **`xpl-nav-header-menu`**. The host uses **`role="listitem"`** when the row
|
|
2013
|
+
* participates in a list: a **`role="list"`** parent, **`slot="left-aside"`** on **`xpl-top-nav`** (list host is
|
|
2014
|
+
* **`.xpl-top-nav__left-primary`** while slotted nodes stay light-DOM children of **`xpl-top-nav`**), or default-slot rows
|
|
2015
|
+
* under **`xpl-nav-header-menu`**. That flag is
|
|
2016
|
+
* kept in **`@State`** and refreshed after render plus via **`MutationObserver`** on the host (**`class`**, **`slot`**) and
|
|
2017
|
+
* on **`parentElement`** (**`role`**) or on **`.xpl-top-nav__left-primary`** (**`role`**) for **`slot="left-aside"`** under **`xpl-top-nav`**) so DOM context changes
|
|
2018
|
+
* without a full reconnect still re-sync. The internal
|
|
2019
|
+
* **`xpl-top-nav__brand`** row omits **`listitem`** (it sits in **`.xpl-top-nav__brand-bar`**, not **`.xpl-top-nav__left-primary`**),
|
|
2020
|
+
* as do **`slot="right-aside-mobile"`** rows (not a list). **`slot="dropdown"`** uses a local **`.xpl-top-nav-item__dropdown`**
|
|
2021
|
+
* panel (not **`xpl-dropdown`**); see **`TECH_DEBT.md`**.
|
|
2022
|
+
* **Default slot (no `label`):** do not put **`xpl-top-nav-item__inner`** or other **`xpl-top-nav-item__*`** classes on
|
|
2023
|
+
* custom trigger content — the component renders the inner wrapper and BEM elements.
|
|
2024
|
+
* **Theming:** The host always includes Foundation’s **`dark`** class so **`--xpl-*`** purpose tokens resolve to dark-mode
|
|
2025
|
+
* values even when the page root is light (consistent with **`xpl-top-nav`**).
|
|
2026
|
+
*/
|
|
2027
|
+
interface XplTopNavItem {
|
|
2028
|
+
/**
|
|
2029
|
+
* 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.
|
|
2030
|
+
* @default false
|
|
2031
|
+
*/
|
|
2032
|
+
"active": boolean;
|
|
2033
|
+
/**
|
|
2034
|
+
* If set without **`slot="dropdown"`**, the inner control renders as a native **`<a href>`** (link mode).
|
|
2035
|
+
*/
|
|
2036
|
+
"href"?: string;
|
|
2037
|
+
/**
|
|
2038
|
+
* Icon name from **`@xplortech/apollo-icons`** (shown before the label when **`label`** is set).
|
|
2039
|
+
* @default ''
|
|
2040
|
+
*/
|
|
2041
|
+
"icon": string;
|
|
2042
|
+
/**
|
|
2043
|
+
* 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.
|
|
2044
|
+
*/
|
|
2045
|
+
"itemAriaLabel"?: string;
|
|
2046
|
+
/**
|
|
2047
|
+
* 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.
|
|
2048
|
+
*/
|
|
2049
|
+
"label"?: string;
|
|
2050
|
+
/**
|
|
2051
|
+
* When true, sets **`aria-current="page"`** and selected styling.
|
|
2052
|
+
* @default false
|
|
2053
|
+
*/
|
|
2054
|
+
"selected": boolean;
|
|
2055
|
+
}
|
|
2056
|
+
interface XplUtilityBar {
|
|
2057
|
+
/**
|
|
2058
|
+
* @property {boolean} - Optional property that defines whether or not the main nav is open at startup.
|
|
2059
|
+
*/
|
|
2060
|
+
"isNavOpenAtStartup"?: boolean;
|
|
2061
|
+
/**
|
|
2062
|
+
* @property {boolean} - whether or not to show the bars to control the state of the navigation bar (open/close)
|
|
2063
|
+
*/
|
|
2064
|
+
"navControl"?: boolean;
|
|
2065
|
+
}
|
|
2066
|
+
}
|
|
1558
2067
|
export interface XplBannerCustomEvent<T> extends CustomEvent<T> {
|
|
1559
2068
|
detail: T;
|
|
1560
2069
|
target: HTMLXplBannerElement;
|
|
@@ -1603,10 +2112,22 @@ export interface XplInputPhoneCustomEvent<T> extends CustomEvent<T> {
|
|
|
1603
2112
|
detail: T;
|
|
1604
2113
|
target: HTMLXplInputPhoneElement;
|
|
1605
2114
|
}
|
|
2115
|
+
export interface XplInputSearchCustomEvent<T> extends CustomEvent<T> {
|
|
2116
|
+
detail: T;
|
|
2117
|
+
target: HTMLXplInputSearchElement;
|
|
2118
|
+
}
|
|
1606
2119
|
export interface XplInputTimeCustomEvent<T> extends CustomEvent<T> {
|
|
1607
2120
|
detail: T;
|
|
1608
2121
|
target: HTMLXplInputTimeElement;
|
|
1609
2122
|
}
|
|
2123
|
+
export interface XplListCustomEvent<T> extends CustomEvent<T> {
|
|
2124
|
+
detail: T;
|
|
2125
|
+
target: HTMLXplListElement;
|
|
2126
|
+
}
|
|
2127
|
+
export interface XplListItemCustomEvent<T> extends CustomEvent<T> {
|
|
2128
|
+
detail: T;
|
|
2129
|
+
target: HTMLXplListItemElement;
|
|
2130
|
+
}
|
|
1610
2131
|
export interface XplMainNavCustomEvent<T> extends CustomEvent<T> {
|
|
1611
2132
|
detail: T;
|
|
1612
2133
|
target: HTMLXplMainNavElement;
|
|
@@ -1643,6 +2164,10 @@ export interface XplSlideoutCustomEvent<T> extends CustomEvent<T> {
|
|
|
1643
2164
|
detail: T;
|
|
1644
2165
|
target: HTMLXplSlideoutElement;
|
|
1645
2166
|
}
|
|
2167
|
+
export interface XplSpotlightCustomEvent<T> extends CustomEvent<T> {
|
|
2168
|
+
detail: T;
|
|
2169
|
+
target: HTMLXplSpotlightElement;
|
|
2170
|
+
}
|
|
1646
2171
|
export interface XplTabCustomEvent<T> extends CustomEvent<T> {
|
|
1647
2172
|
detail: T;
|
|
1648
2173
|
target: HTMLXplTabElement;
|
|
@@ -1663,6 +2188,14 @@ export interface XplTagCustomEvent<T> extends CustomEvent<T> {
|
|
|
1663
2188
|
detail: T;
|
|
1664
2189
|
target: HTMLXplTagElement;
|
|
1665
2190
|
}
|
|
2191
|
+
export interface XplTopNavCustomEvent<T> extends CustomEvent<T> {
|
|
2192
|
+
detail: T;
|
|
2193
|
+
target: HTMLXplTopNavElement;
|
|
2194
|
+
}
|
|
2195
|
+
export interface XplTopNavItemCustomEvent<T> extends CustomEvent<T> {
|
|
2196
|
+
detail: T;
|
|
2197
|
+
target: HTMLXplTopNavItemElement;
|
|
2198
|
+
}
|
|
1666
2199
|
export interface XplUtilityBarCustomEvent<T> extends CustomEvent<T> {
|
|
1667
2200
|
detail: T;
|
|
1668
2201
|
target: HTMLXplUtilityBarElement;
|
|
@@ -1923,6 +2456,7 @@ declare global {
|
|
|
1923
2456
|
"blurEvent": FocusEvent;
|
|
1924
2457
|
"valueChange": string;
|
|
1925
2458
|
"inputEvent": string;
|
|
2459
|
+
"search": string;
|
|
1926
2460
|
}
|
|
1927
2461
|
interface HTMLXplInputElement extends Components.XplInput, HTMLStencilElement {
|
|
1928
2462
|
addEventListener<K extends keyof HTMLXplInputElementEventMap>(type: K, listener: (this: HTMLXplInputElement, ev: XplInputCustomEvent<HTMLXplInputElementEventMap[K]>) => any, options?: boolean | AddEventListenerOptions): void;
|
|
@@ -2016,6 +2550,27 @@ declare global {
|
|
|
2016
2550
|
prototype: HTMLXplInputPhoneElement;
|
|
2017
2551
|
new (): HTMLXplInputPhoneElement;
|
|
2018
2552
|
};
|
|
2553
|
+
interface HTMLXplInputSearchElementEventMap {
|
|
2554
|
+
"blurEvent": FocusEvent;
|
|
2555
|
+
"focusEvent": FocusEvent;
|
|
2556
|
+
"inputEvent": string;
|
|
2557
|
+
"search": string;
|
|
2558
|
+
"valueChange": string;
|
|
2559
|
+
}
|
|
2560
|
+
interface HTMLXplInputSearchElement extends Components.XplInputSearch, HTMLStencilElement {
|
|
2561
|
+
addEventListener<K extends keyof HTMLXplInputSearchElementEventMap>(type: K, listener: (this: HTMLXplInputSearchElement, ev: XplInputSearchCustomEvent<HTMLXplInputSearchElementEventMap[K]>) => any, options?: boolean | AddEventListenerOptions): void;
|
|
2562
|
+
addEventListener<K extends keyof DocumentEventMap>(type: K, listener: (this: Document, ev: DocumentEventMap[K]) => any, options?: boolean | AddEventListenerOptions): void;
|
|
2563
|
+
addEventListener<K extends keyof HTMLElementEventMap>(type: K, listener: (this: HTMLElement, ev: HTMLElementEventMap[K]) => any, options?: boolean | AddEventListenerOptions): void;
|
|
2564
|
+
addEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | AddEventListenerOptions): void;
|
|
2565
|
+
removeEventListener<K extends keyof HTMLXplInputSearchElementEventMap>(type: K, listener: (this: HTMLXplInputSearchElement, ev: XplInputSearchCustomEvent<HTMLXplInputSearchElementEventMap[K]>) => any, options?: boolean | EventListenerOptions): void;
|
|
2566
|
+
removeEventListener<K extends keyof DocumentEventMap>(type: K, listener: (this: Document, ev: DocumentEventMap[K]) => any, options?: boolean | EventListenerOptions): void;
|
|
2567
|
+
removeEventListener<K extends keyof HTMLElementEventMap>(type: K, listener: (this: HTMLElement, ev: HTMLElementEventMap[K]) => any, options?: boolean | EventListenerOptions): void;
|
|
2568
|
+
removeEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | EventListenerOptions): void;
|
|
2569
|
+
}
|
|
2570
|
+
var HTMLXplInputSearchElement: {
|
|
2571
|
+
prototype: HTMLXplInputSearchElement;
|
|
2572
|
+
new (): HTMLXplInputSearchElement;
|
|
2573
|
+
};
|
|
2019
2574
|
interface HTMLXplInputTimeElementEventMap {
|
|
2020
2575
|
"valueChange": string;
|
|
2021
2576
|
"hasErrorStateChanged": string | null;
|
|
@@ -2040,12 +2595,44 @@ declare global {
|
|
|
2040
2595
|
prototype: HTMLXplLargeCardElement;
|
|
2041
2596
|
new (): HTMLXplLargeCardElement;
|
|
2042
2597
|
};
|
|
2598
|
+
interface HTMLXplListElementEventMap {
|
|
2599
|
+
"itemSelect": { itemId?: string };
|
|
2600
|
+
"orderChange": XplListOrderChangeDetail;
|
|
2601
|
+
}
|
|
2043
2602
|
interface HTMLXplListElement extends Components.XplList, HTMLStencilElement {
|
|
2603
|
+
addEventListener<K extends keyof HTMLXplListElementEventMap>(type: K, listener: (this: HTMLXplListElement, ev: XplListCustomEvent<HTMLXplListElementEventMap[K]>) => any, options?: boolean | AddEventListenerOptions): void;
|
|
2604
|
+
addEventListener<K extends keyof DocumentEventMap>(type: K, listener: (this: Document, ev: DocumentEventMap[K]) => any, options?: boolean | AddEventListenerOptions): void;
|
|
2605
|
+
addEventListener<K extends keyof HTMLElementEventMap>(type: K, listener: (this: HTMLElement, ev: HTMLElementEventMap[K]) => any, options?: boolean | AddEventListenerOptions): void;
|
|
2606
|
+
addEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | AddEventListenerOptions): void;
|
|
2607
|
+
removeEventListener<K extends keyof HTMLXplListElementEventMap>(type: K, listener: (this: HTMLXplListElement, ev: XplListCustomEvent<HTMLXplListElementEventMap[K]>) => any, options?: boolean | EventListenerOptions): void;
|
|
2608
|
+
removeEventListener<K extends keyof DocumentEventMap>(type: K, listener: (this: Document, ev: DocumentEventMap[K]) => any, options?: boolean | EventListenerOptions): void;
|
|
2609
|
+
removeEventListener<K extends keyof HTMLElementEventMap>(type: K, listener: (this: HTMLElement, ev: HTMLElementEventMap[K]) => any, options?: boolean | EventListenerOptions): void;
|
|
2610
|
+
removeEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | EventListenerOptions): void;
|
|
2044
2611
|
}
|
|
2045
2612
|
var HTMLXplListElement: {
|
|
2046
2613
|
prototype: HTMLXplListElement;
|
|
2047
2614
|
new (): HTMLXplListElement;
|
|
2048
2615
|
};
|
|
2616
|
+
interface HTMLXplListItemElementEventMap {
|
|
2617
|
+
"itemDragEnd": { itemId?: string; item: HTMLElement };
|
|
2618
|
+
"itemDragStart": { itemId?: string; item: HTMLElement };
|
|
2619
|
+
"itemDrop": { itemId?: string; item: HTMLElement };
|
|
2620
|
+
"itemSelect": { itemId?: string };
|
|
2621
|
+
}
|
|
2622
|
+
interface HTMLXplListItemElement extends Components.XplListItem, HTMLStencilElement {
|
|
2623
|
+
addEventListener<K extends keyof HTMLXplListItemElementEventMap>(type: K, listener: (this: HTMLXplListItemElement, ev: XplListItemCustomEvent<HTMLXplListItemElementEventMap[K]>) => any, options?: boolean | AddEventListenerOptions): void;
|
|
2624
|
+
addEventListener<K extends keyof DocumentEventMap>(type: K, listener: (this: Document, ev: DocumentEventMap[K]) => any, options?: boolean | AddEventListenerOptions): void;
|
|
2625
|
+
addEventListener<K extends keyof HTMLElementEventMap>(type: K, listener: (this: HTMLElement, ev: HTMLElementEventMap[K]) => any, options?: boolean | AddEventListenerOptions): void;
|
|
2626
|
+
addEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | AddEventListenerOptions): void;
|
|
2627
|
+
removeEventListener<K extends keyof HTMLXplListItemElementEventMap>(type: K, listener: (this: HTMLXplListItemElement, ev: XplListItemCustomEvent<HTMLXplListItemElementEventMap[K]>) => any, options?: boolean | EventListenerOptions): void;
|
|
2628
|
+
removeEventListener<K extends keyof DocumentEventMap>(type: K, listener: (this: Document, ev: DocumentEventMap[K]) => any, options?: boolean | EventListenerOptions): void;
|
|
2629
|
+
removeEventListener<K extends keyof HTMLElementEventMap>(type: K, listener: (this: HTMLElement, ev: HTMLElementEventMap[K]) => any, options?: boolean | EventListenerOptions): void;
|
|
2630
|
+
removeEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | EventListenerOptions): void;
|
|
2631
|
+
}
|
|
2632
|
+
var HTMLXplListItemElement: {
|
|
2633
|
+
prototype: HTMLXplListItemElement;
|
|
2634
|
+
new (): HTMLXplListItemElement;
|
|
2635
|
+
};
|
|
2049
2636
|
interface HTMLXplMainNavElementEventMap {
|
|
2050
2637
|
"navWidth": string;
|
|
2051
2638
|
}
|
|
@@ -2080,6 +2667,30 @@ declare global {
|
|
|
2080
2667
|
prototype: HTMLXplModalElement;
|
|
2081
2668
|
new (): HTMLXplModalElement;
|
|
2082
2669
|
};
|
|
2670
|
+
/**
|
|
2671
|
+
* Profile / account block (username, email, default slot for **`xpl-top-nav-item`** / **`xpl-divider`**).
|
|
2672
|
+
* Tag **`xpl-nav-header-menu`**; implementation folder **`xpl-nav-header-menu`**. **`.xpl-nav-header-menu__slot`** is
|
|
2673
|
+
* **`role="list"`** for slotted **`xpl-top-nav-item`** (**`role="listitem"`**).
|
|
2674
|
+
* **Slotted content:** do not add **`xpl-nav-header-menu__*`** BEM classes on nodes you pass into the default slot —
|
|
2675
|
+
* profile, list shell, and **`xpl-top-nav-item`** **`role="listitem"`** are handled by the component. Use
|
|
2676
|
+
* **`xpl-top-nav-item`** (or plain elements that are not Apollo **`xpl-*`** BEM hooks) in the slot only.
|
|
2677
|
+
* **`slot="right-aside-mobile"`** — optional block **between** the profile header and the default-slot list (e.g. narrow-only
|
|
2678
|
+
* duplicate of **every** **`slot="right-aside"`** control per Figma when **`xpl-top-nav`** hides **`right-aside`** on narrow viewports (always)).
|
|
2679
|
+
* 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.
|
|
2680
|
+
* Light-DOM **`slotchange`** is unreliable; a host **`MutationObserver`** (child / subtree / **`slot`** attribute) keeps
|
|
2681
|
+
* **`xpl-nav-header-menu--has-right-aside-mobile`** in sync when nodes are added or retargeted after mount (same pattern as **`xpl-top-nav`**).
|
|
2682
|
+
* Stencil **`newSpecPage`** / mock-doc does not define **`MutationObserver`**; slot presence still updates on the next
|
|
2683
|
+
* deferred flush (**`setTimeout(0)`** coalesced with **`componentDidRender`**). In real browsers the observer handles child /
|
|
2684
|
+
* **`slot`** mutations without stacking uncancellable microtasks.
|
|
2685
|
+
* **Theming:** The host always includes Foundation’s **`dark`** class so **`--xpl-*`** purpose tokens resolve to dark-mode
|
|
2686
|
+
* values even when the page root is light (same contract as **`xpl-top-nav`** / **`xpl-top-nav-item`**).
|
|
2687
|
+
*/
|
|
2688
|
+
interface HTMLXplNavHeaderMenuElement extends Components.XplNavHeaderMenu, HTMLStencilElement {
|
|
2689
|
+
}
|
|
2690
|
+
var HTMLXplNavHeaderMenuElement: {
|
|
2691
|
+
prototype: HTMLXplNavHeaderMenuElement;
|
|
2692
|
+
new (): HTMLXplNavHeaderMenuElement;
|
|
2693
|
+
};
|
|
2083
2694
|
interface HTMLXplNavItemElementEventMap {
|
|
2084
2695
|
"navOpen": boolean;
|
|
2085
2696
|
}
|
|
@@ -2142,18 +2753,18 @@ declare global {
|
|
|
2142
2753
|
prototype: HTMLXplPopoverElement;
|
|
2143
2754
|
new (): HTMLXplPopoverElement;
|
|
2144
2755
|
};
|
|
2145
|
-
interface HTMLXplProgressElement extends Components.XplProgress, HTMLStencilElement {
|
|
2146
|
-
}
|
|
2147
|
-
var HTMLXplProgressElement: {
|
|
2148
|
-
prototype: HTMLXplProgressElement;
|
|
2149
|
-
new (): HTMLXplProgressElement;
|
|
2150
|
-
};
|
|
2151
2756
|
interface HTMLXplProgressBarElement extends Components.XplProgressBar, HTMLStencilElement {
|
|
2152
2757
|
}
|
|
2153
2758
|
var HTMLXplProgressBarElement: {
|
|
2154
2759
|
prototype: HTMLXplProgressBarElement;
|
|
2155
2760
|
new (): HTMLXplProgressBarElement;
|
|
2156
2761
|
};
|
|
2762
|
+
interface HTMLXplProgressIndicatorElement extends Components.XplProgressIndicator, HTMLStencilElement {
|
|
2763
|
+
}
|
|
2764
|
+
var HTMLXplProgressIndicatorElement: {
|
|
2765
|
+
prototype: HTMLXplProgressIndicatorElement;
|
|
2766
|
+
new (): HTMLXplProgressIndicatorElement;
|
|
2767
|
+
};
|
|
2157
2768
|
interface HTMLXplRadioElementEventMap {
|
|
2158
2769
|
"radioChange": string | boolean;
|
|
2159
2770
|
}
|
|
@@ -2247,6 +2858,26 @@ declare global {
|
|
|
2247
2858
|
prototype: HTMLXplSlideoutElement;
|
|
2248
2859
|
new (): HTMLXplSlideoutElement;
|
|
2249
2860
|
};
|
|
2861
|
+
interface HTMLXplSpotlightElementEventMap {
|
|
2862
|
+
"dismiss": void;
|
|
2863
|
+
"primaryAction": void;
|
|
2864
|
+
"secondaryAction": void;
|
|
2865
|
+
"targetClick": void;
|
|
2866
|
+
}
|
|
2867
|
+
interface HTMLXplSpotlightElement extends Components.XplSpotlight, HTMLStencilElement {
|
|
2868
|
+
addEventListener<K extends keyof HTMLXplSpotlightElementEventMap>(type: K, listener: (this: HTMLXplSpotlightElement, ev: XplSpotlightCustomEvent<HTMLXplSpotlightElementEventMap[K]>) => any, options?: boolean | AddEventListenerOptions): void;
|
|
2869
|
+
addEventListener<K extends keyof DocumentEventMap>(type: K, listener: (this: Document, ev: DocumentEventMap[K]) => any, options?: boolean | AddEventListenerOptions): void;
|
|
2870
|
+
addEventListener<K extends keyof HTMLElementEventMap>(type: K, listener: (this: HTMLElement, ev: HTMLElementEventMap[K]) => any, options?: boolean | AddEventListenerOptions): void;
|
|
2871
|
+
addEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | AddEventListenerOptions): void;
|
|
2872
|
+
removeEventListener<K extends keyof HTMLXplSpotlightElementEventMap>(type: K, listener: (this: HTMLXplSpotlightElement, ev: XplSpotlightCustomEvent<HTMLXplSpotlightElementEventMap[K]>) => any, options?: boolean | EventListenerOptions): void;
|
|
2873
|
+
removeEventListener<K extends keyof DocumentEventMap>(type: K, listener: (this: Document, ev: DocumentEventMap[K]) => any, options?: boolean | EventListenerOptions): void;
|
|
2874
|
+
removeEventListener<K extends keyof HTMLElementEventMap>(type: K, listener: (this: HTMLElement, ev: HTMLElementEventMap[K]) => any, options?: boolean | EventListenerOptions): void;
|
|
2875
|
+
removeEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | EventListenerOptions): void;
|
|
2876
|
+
}
|
|
2877
|
+
var HTMLXplSpotlightElement: {
|
|
2878
|
+
prototype: HTMLXplSpotlightElement;
|
|
2879
|
+
new (): HTMLXplSpotlightElement;
|
|
2880
|
+
};
|
|
2250
2881
|
interface HTMLXplTabElementEventMap {
|
|
2251
2882
|
"tabChange": string;
|
|
2252
2883
|
}
|
|
@@ -2333,7 +2964,10 @@ declare global {
|
|
|
2333
2964
|
new (): HTMLXplTabsElement;
|
|
2334
2965
|
};
|
|
2335
2966
|
interface HTMLXplTagElementEventMap {
|
|
2336
|
-
"close":
|
|
2967
|
+
"close": void;
|
|
2968
|
+
"tagDragEnd": TagDragEndDetail;
|
|
2969
|
+
"tagDragStart": TagDragStartDetail;
|
|
2970
|
+
"tagRemove": void;
|
|
2337
2971
|
}
|
|
2338
2972
|
interface HTMLXplTagElement extends Components.XplTag, HTMLStencilElement {
|
|
2339
2973
|
addEventListener<K extends keyof HTMLXplTagElementEventMap>(type: K, listener: (this: HTMLXplTagElement, ev: XplTagCustomEvent<HTMLXplTagElementEventMap[K]>) => any, options?: boolean | AddEventListenerOptions): void;
|
|
@@ -2373,6 +3007,79 @@ declare global {
|
|
|
2373
3007
|
prototype: HTMLXplTooltipElement;
|
|
2374
3008
|
new (): HTMLXplTooltipElement;
|
|
2375
3009
|
};
|
|
3010
|
+
interface HTMLXplTopNavElementEventMap {
|
|
3011
|
+
"brandClick": MouseEvent;
|
|
3012
|
+
"navOpen": boolean;
|
|
3013
|
+
}
|
|
3014
|
+
/**
|
|
3015
|
+
* Horizontal top navigation with **`left-aside`** and a **right rail**: **`right-aside`** then **user menu**
|
|
3016
|
+
* (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`**).
|
|
3017
|
+
* 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.
|
|
3018
|
+
* **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).
|
|
3019
|
+
* **`xpl-top-nav-item`** **`slot="dropdown"`** uses document **capture** for **Escape** first; the shell uses **bubble**
|
|
3020
|
+
* on **`ownerDocument`** so nested dropdowns close before the drawer.
|
|
3021
|
+
* **Theming:** The host always includes Foundation’s **`dark`** class so **`--xpl-*`** purpose tokens under this subtree
|
|
3022
|
+
* resolve to dark-mode values even when the page root is light. Floating overlays (e.g. **`xpl-popover`** / **`xpl-dropdown`**
|
|
3023
|
+
* content teleported outside the host) do not inherit this scope — add **`dark`** on those panels if they should match.
|
|
3024
|
+
* **Layout:** **`right-aside`** and the user-menu region are wrapped internally (**`.xpl-top-nav__right-lead`**, etc.).
|
|
3025
|
+
* Consumers should not add those BEM classes — slot content only.
|
|
3026
|
+
* **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.
|
|
3027
|
+
* **Narrow / mobile** (same breakpoint as above): **`slot="left-aside"`** is **hidden** in the bar until **`nav-control`**
|
|
3028
|
+
* is set **and** the drawer is open (floating panel per Figma). **Without **`nav-control`**, there is no mobile drawer** —
|
|
3029
|
+
* primary links remain hidden below **`md`** until the viewport is wide enough for the horizontal bar. The built-in **brand**
|
|
3030
|
+
* stays in the top bar (**hamburger → brand** when **`nav-control`** is set). **`right-aside`** is hidden in the bar on narrow
|
|
3031
|
+
* viewports (**`top-nav.css`**, one pixel below Tailwind **`md`**); duplicate those actions into **`xpl-nav-header-menu`**
|
|
3032
|
+
* **`slot="right-aside-mobile"`** (below profile, above the list; narrow-only CSS in **`top-nav.css`**) per Figma.
|
|
3033
|
+
* **Account menu vs drawer:** Opening the built-in account **`xpl-popover`** while the mobile drawer is open **closes the drawer**
|
|
3034
|
+
* and emits **`navOpen(false)`** so the two layers do not stack.
|
|
3035
|
+
*/
|
|
3036
|
+
interface HTMLXplTopNavElement extends Components.XplTopNav, HTMLStencilElement {
|
|
3037
|
+
addEventListener<K extends keyof HTMLXplTopNavElementEventMap>(type: K, listener: (this: HTMLXplTopNavElement, ev: XplTopNavCustomEvent<HTMLXplTopNavElementEventMap[K]>) => any, options?: boolean | AddEventListenerOptions): void;
|
|
3038
|
+
addEventListener<K extends keyof DocumentEventMap>(type: K, listener: (this: Document, ev: DocumentEventMap[K]) => any, options?: boolean | AddEventListenerOptions): void;
|
|
3039
|
+
addEventListener<K extends keyof HTMLElementEventMap>(type: K, listener: (this: HTMLElement, ev: HTMLElementEventMap[K]) => any, options?: boolean | AddEventListenerOptions): void;
|
|
3040
|
+
addEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | AddEventListenerOptions): void;
|
|
3041
|
+
removeEventListener<K extends keyof HTMLXplTopNavElementEventMap>(type: K, listener: (this: HTMLXplTopNavElement, ev: XplTopNavCustomEvent<HTMLXplTopNavElementEventMap[K]>) => any, options?: boolean | EventListenerOptions): void;
|
|
3042
|
+
removeEventListener<K extends keyof DocumentEventMap>(type: K, listener: (this: Document, ev: DocumentEventMap[K]) => any, options?: boolean | EventListenerOptions): void;
|
|
3043
|
+
removeEventListener<K extends keyof HTMLElementEventMap>(type: K, listener: (this: HTMLElement, ev: HTMLElementEventMap[K]) => any, options?: boolean | EventListenerOptions): void;
|
|
3044
|
+
removeEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | EventListenerOptions): void;
|
|
3045
|
+
}
|
|
3046
|
+
var HTMLXplTopNavElement: {
|
|
3047
|
+
prototype: HTMLXplTopNavElement;
|
|
3048
|
+
new (): HTMLXplTopNavElement;
|
|
3049
|
+
};
|
|
3050
|
+
interface HTMLXplTopNavItemElementEventMap {
|
|
3051
|
+
"navItemClick": MouseEvent;
|
|
3052
|
+
}
|
|
3053
|
+
/**
|
|
3054
|
+
* Single nav row for **`xpl-top-nav`** / **`xpl-nav-header-menu`**. The host uses **`role="listitem"`** when the row
|
|
3055
|
+
* participates in a list: a **`role="list"`** parent, **`slot="left-aside"`** on **`xpl-top-nav`** (list host is
|
|
3056
|
+
* **`.xpl-top-nav__left-primary`** while slotted nodes stay light-DOM children of **`xpl-top-nav`**), or default-slot rows
|
|
3057
|
+
* under **`xpl-nav-header-menu`**. That flag is
|
|
3058
|
+
* kept in **`@State`** and refreshed after render plus via **`MutationObserver`** on the host (**`class`**, **`slot`**) and
|
|
3059
|
+
* on **`parentElement`** (**`role`**) or on **`.xpl-top-nav__left-primary`** (**`role`**) for **`slot="left-aside"`** under **`xpl-top-nav`**) so DOM context changes
|
|
3060
|
+
* without a full reconnect still re-sync. The internal
|
|
3061
|
+
* **`xpl-top-nav__brand`** row omits **`listitem`** (it sits in **`.xpl-top-nav__brand-bar`**, not **`.xpl-top-nav__left-primary`**),
|
|
3062
|
+
* as do **`slot="right-aside-mobile"`** rows (not a list). **`slot="dropdown"`** uses a local **`.xpl-top-nav-item__dropdown`**
|
|
3063
|
+
* panel (not **`xpl-dropdown`**); see **`TECH_DEBT.md`**.
|
|
3064
|
+
* **Default slot (no `label`):** do not put **`xpl-top-nav-item__inner`** or other **`xpl-top-nav-item__*`** classes on
|
|
3065
|
+
* custom trigger content — the component renders the inner wrapper and BEM elements.
|
|
3066
|
+
* **Theming:** The host always includes Foundation’s **`dark`** class so **`--xpl-*`** purpose tokens resolve to dark-mode
|
|
3067
|
+
* values even when the page root is light (consistent with **`xpl-top-nav`**).
|
|
3068
|
+
*/
|
|
3069
|
+
interface HTMLXplTopNavItemElement extends Components.XplTopNavItem, HTMLStencilElement {
|
|
3070
|
+
addEventListener<K extends keyof HTMLXplTopNavItemElementEventMap>(type: K, listener: (this: HTMLXplTopNavItemElement, ev: XplTopNavItemCustomEvent<HTMLXplTopNavItemElementEventMap[K]>) => any, options?: boolean | AddEventListenerOptions): void;
|
|
3071
|
+
addEventListener<K extends keyof DocumentEventMap>(type: K, listener: (this: Document, ev: DocumentEventMap[K]) => any, options?: boolean | AddEventListenerOptions): void;
|
|
3072
|
+
addEventListener<K extends keyof HTMLElementEventMap>(type: K, listener: (this: HTMLElement, ev: HTMLElementEventMap[K]) => any, options?: boolean | AddEventListenerOptions): void;
|
|
3073
|
+
addEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | AddEventListenerOptions): void;
|
|
3074
|
+
removeEventListener<K extends keyof HTMLXplTopNavItemElementEventMap>(type: K, listener: (this: HTMLXplTopNavItemElement, ev: XplTopNavItemCustomEvent<HTMLXplTopNavItemElementEventMap[K]>) => any, options?: boolean | EventListenerOptions): void;
|
|
3075
|
+
removeEventListener<K extends keyof DocumentEventMap>(type: K, listener: (this: Document, ev: DocumentEventMap[K]) => any, options?: boolean | EventListenerOptions): void;
|
|
3076
|
+
removeEventListener<K extends keyof HTMLElementEventMap>(type: K, listener: (this: HTMLElement, ev: HTMLElementEventMap[K]) => any, options?: boolean | EventListenerOptions): void;
|
|
3077
|
+
removeEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | EventListenerOptions): void;
|
|
3078
|
+
}
|
|
3079
|
+
var HTMLXplTopNavItemElement: {
|
|
3080
|
+
prototype: HTMLXplTopNavItemElement;
|
|
3081
|
+
new (): HTMLXplTopNavItemElement;
|
|
3082
|
+
};
|
|
2376
3083
|
interface HTMLXplUtilityBarElementEventMap {
|
|
2377
3084
|
"navOpen": boolean;
|
|
2378
3085
|
}
|
|
@@ -2424,17 +3131,20 @@ declare global {
|
|
|
2424
3131
|
"xpl-input-date": HTMLXplInputDateElement;
|
|
2425
3132
|
"xpl-input-file": HTMLXplInputFileElement;
|
|
2426
3133
|
"xpl-input-phone": HTMLXplInputPhoneElement;
|
|
3134
|
+
"xpl-input-search": HTMLXplInputSearchElement;
|
|
2427
3135
|
"xpl-input-time": HTMLXplInputTimeElement;
|
|
2428
3136
|
"xpl-large-card": HTMLXplLargeCardElement;
|
|
2429
3137
|
"xpl-list": HTMLXplListElement;
|
|
3138
|
+
"xpl-list-item": HTMLXplListItemElement;
|
|
2430
3139
|
"xpl-main-nav": HTMLXplMainNavElement;
|
|
2431
3140
|
"xpl-modal": HTMLXplModalElement;
|
|
3141
|
+
"xpl-nav-header-menu": HTMLXplNavHeaderMenuElement;
|
|
2432
3142
|
"xpl-nav-item": HTMLXplNavItemElement;
|
|
2433
3143
|
"xpl-pagination": HTMLXplPaginationElement;
|
|
2434
3144
|
"xpl-panel": HTMLXplPanelElement;
|
|
2435
3145
|
"xpl-popover": HTMLXplPopoverElement;
|
|
2436
|
-
"xpl-progress": HTMLXplProgressElement;
|
|
2437
3146
|
"xpl-progress-bar": HTMLXplProgressBarElement;
|
|
3147
|
+
"xpl-progress-indicator": HTMLXplProgressIndicatorElement;
|
|
2438
3148
|
"xpl-radio": HTMLXplRadioElement;
|
|
2439
3149
|
"xpl-secondary-nav": HTMLXplSecondaryNavElement;
|
|
2440
3150
|
"xpl-select": HTMLXplSelectElement;
|
|
@@ -2442,6 +3152,7 @@ declare global {
|
|
|
2442
3152
|
"xpl-side-nav-item": HTMLXplSideNavItemElement;
|
|
2443
3153
|
"xpl-skeleton": HTMLXplSkeletonElement;
|
|
2444
3154
|
"xpl-slideout": HTMLXplSlideoutElement;
|
|
3155
|
+
"xpl-spotlight": HTMLXplSpotlightElement;
|
|
2445
3156
|
"xpl-tab": HTMLXplTabElement;
|
|
2446
3157
|
"xpl-tab-panel": HTMLXplTabPanelElement;
|
|
2447
3158
|
"xpl-table": HTMLXplTableElement;
|
|
@@ -2453,6 +3164,8 @@ declare global {
|
|
|
2453
3164
|
"xpl-toggle": HTMLXplToggleElement;
|
|
2454
3165
|
"xpl-toolbar": HTMLXplToolbarElement;
|
|
2455
3166
|
"xpl-tooltip": HTMLXplTooltipElement;
|
|
3167
|
+
"xpl-top-nav": HTMLXplTopNavElement;
|
|
3168
|
+
"xpl-top-nav-item": HTMLXplTopNavItemElement;
|
|
2456
3169
|
"xpl-utility-bar": HTMLXplUtilityBarElement;
|
|
2457
3170
|
}
|
|
2458
3171
|
}
|
|
@@ -2514,22 +3227,26 @@ declare namespace LocalJSX {
|
|
|
2514
3227
|
/**
|
|
2515
3228
|
* Background color when there is no image src
|
|
2516
3229
|
*/
|
|
2517
|
-
"color"?:
|
|
3230
|
+
"color"?: AvatarColor;
|
|
2518
3231
|
/**
|
|
2519
3232
|
* Sets a disabled state on the avatar when set to true
|
|
2520
3233
|
* @default false
|
|
2521
3234
|
*/
|
|
2522
3235
|
"disabled"?: boolean;
|
|
3236
|
+
/**
|
|
3237
|
+
* When `variant` is `group`, data for each face (max 4 visible + overflow count). Each item: { src?, name?, color? }.
|
|
3238
|
+
*/
|
|
3239
|
+
"groupData"?: AvatarGroupItem[] | string;
|
|
2523
3240
|
/**
|
|
2524
3241
|
* The URL if the avatar should be hyperlinked
|
|
2525
3242
|
*/
|
|
2526
3243
|
"href"?: string;
|
|
2527
3244
|
/**
|
|
2528
|
-
* Alt text for the image
|
|
3245
|
+
* Alt text for the image; also used for initials when no image and no slot.
|
|
2529
3246
|
*/
|
|
2530
3247
|
"name"?: string;
|
|
2531
3248
|
/**
|
|
2532
|
-
* Size of the avatar
|
|
3249
|
+
* Size of the avatar (and of each avatar in a group).
|
|
2533
3250
|
*/
|
|
2534
3251
|
"size"?: 'md' | 'sm';
|
|
2535
3252
|
/**
|
|
@@ -2537,13 +3254,22 @@ declare namespace LocalJSX {
|
|
|
2537
3254
|
*/
|
|
2538
3255
|
"src"?: string;
|
|
2539
3256
|
/**
|
|
2540
|
-
*
|
|
3257
|
+
* Shown for the default avatar, `profile`, and `with-text`; not shown when `variant` is `group`. **Legacy
|
|
3258
|
+
* @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.
|
|
3259
|
+
*/
|
|
3260
|
+
"status"?: AvatarStatus;
|
|
3261
|
+
/**
|
|
3262
|
+
* Secondary text shown when `variant` is `with-text` (e.g. email).
|
|
2541
3263
|
*/
|
|
2542
|
-
"
|
|
3264
|
+
"subText"?: string;
|
|
2543
3265
|
/**
|
|
2544
3266
|
* Where to open the URL chosen for the `href` prop: `_self` (default), `_blank`, `_parent`, or `_top`
|
|
2545
3267
|
*/
|
|
2546
3268
|
"target"?: string;
|
|
3269
|
+
/**
|
|
3270
|
+
* 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.
|
|
3271
|
+
*/
|
|
3272
|
+
"variant"?: AvatarVariant;
|
|
2547
3273
|
}
|
|
2548
3274
|
interface XplBackdrop {
|
|
2549
3275
|
/**
|
|
@@ -2643,6 +3369,16 @@ declare namespace LocalJSX {
|
|
|
2643
3369
|
interface XplBreadcrumbs {
|
|
2644
3370
|
}
|
|
2645
3371
|
interface XplButton {
|
|
3372
|
+
/**
|
|
3373
|
+
* 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).
|
|
3374
|
+
*/
|
|
3375
|
+
"controlAttrs"?: {
|
|
3376
|
+
id?: string;
|
|
3377
|
+
role?: string;
|
|
3378
|
+
'aria-controls'?: string;
|
|
3379
|
+
'aria-selected'?: 'true' | 'false';
|
|
3380
|
+
'aria-current'?: string;
|
|
3381
|
+
};
|
|
2646
3382
|
/**
|
|
2647
3383
|
* Whether button should be disabled
|
|
2648
3384
|
* @default false
|
|
@@ -2773,6 +3509,11 @@ declare namespace LocalJSX {
|
|
|
2773
3509
|
"onDateSelected"?: (event: XplCalendarCustomEvent<string | string[]>) => void;
|
|
2774
3510
|
}
|
|
2775
3511
|
interface XplCheckbox {
|
|
3512
|
+
/**
|
|
3513
|
+
* 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.
|
|
3514
|
+
* @default ''
|
|
3515
|
+
*/
|
|
3516
|
+
"ariaLabel"?: string;
|
|
2776
3517
|
/**
|
|
2777
3518
|
* Whether the input is checked
|
|
2778
3519
|
*/
|
|
@@ -2932,6 +3673,10 @@ declare namespace LocalJSX {
|
|
|
2932
3673
|
* @default true
|
|
2933
3674
|
*/
|
|
2934
3675
|
"closeOnSelect"?: boolean;
|
|
3676
|
+
/**
|
|
3677
|
+
* When `anchorToTrigger` is true, additional placements to try when the default `placement` does not fit (passed to Floating UI `flip`).
|
|
3678
|
+
*/
|
|
3679
|
+
"flipFallbackPlacements"?: Placement[];
|
|
2935
3680
|
/**
|
|
2936
3681
|
* text to display as heading
|
|
2937
3682
|
* @default false
|
|
@@ -2950,6 +3695,11 @@ declare namespace LocalJSX {
|
|
|
2950
3695
|
* options that are listed
|
|
2951
3696
|
*/
|
|
2952
3697
|
"options"?: DropdownItem[];
|
|
3698
|
+
/**
|
|
3699
|
+
* Floating UI placement when `anchorToTrigger` is true (e.g. `bottom-start`, `top-start`).
|
|
3700
|
+
* @default 'bottom-start'
|
|
3701
|
+
*/
|
|
3702
|
+
"placement"?: Placement;
|
|
2953
3703
|
/**
|
|
2954
3704
|
* whether selection should be made when focusing on interactive element
|
|
2955
3705
|
* @default false
|
|
@@ -3116,7 +3866,12 @@ declare namespace LocalJSX {
|
|
|
3116
3866
|
*/
|
|
3117
3867
|
"allowCustomOption"?: boolean;
|
|
3118
3868
|
/**
|
|
3119
|
-
*
|
|
3869
|
+
* 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"`).
|
|
3870
|
+
* @default ''
|
|
3871
|
+
*/
|
|
3872
|
+
"ariaLabel"?: string;
|
|
3873
|
+
/**
|
|
3874
|
+
* Hint for form autofill feature Applies to text, password, number, and search inputs.
|
|
3120
3875
|
*/
|
|
3121
3876
|
"autocomplete"?: string;
|
|
3122
3877
|
/**
|
|
@@ -3209,15 +3964,19 @@ declare namespace LocalJSX {
|
|
|
3209
3964
|
*/
|
|
3210
3965
|
"onFocusEvent"?: (event: XplInputCustomEvent<FocusEvent>) => void;
|
|
3211
3966
|
/**
|
|
3212
|
-
* Event that emits the current value of the input Applies to text
|
|
3967
|
+
* Event that emits the current value of the input Applies to text-like inputs and search inputs.
|
|
3213
3968
|
*/
|
|
3214
3969
|
"onInputEvent"?: (event: XplInputCustomEvent<string>) => void;
|
|
3215
3970
|
/**
|
|
3216
|
-
*
|
|
3971
|
+
* 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"`).
|
|
3972
|
+
*/
|
|
3973
|
+
"onSearch"?: (event: XplInputCustomEvent<string>) => void;
|
|
3974
|
+
/**
|
|
3975
|
+
* Event that emits the current value of the input (including search fields).
|
|
3217
3976
|
*/
|
|
3218
3977
|
"onValueChange"?: (event: XplInputCustomEvent<string>) => void;
|
|
3219
3978
|
/**
|
|
3220
|
-
* Placeholder text that appears when the field has no value Applies to text, password, number, and
|
|
3979
|
+
* Placeholder text that appears when the field has no value Applies to text, password, number, date, and search inputs.
|
|
3221
3980
|
*/
|
|
3222
3981
|
"placeholder"?: string;
|
|
3223
3982
|
/**
|
|
@@ -3233,13 +3992,17 @@ declare namespace LocalJSX {
|
|
|
3233
3992
|
*/
|
|
3234
3993
|
"preferredCountries"?: string[];
|
|
3235
3994
|
/**
|
|
3236
|
-
* Whether the input is editable Applies to text, password, number, and
|
|
3995
|
+
* Whether the input is editable Applies to text, password, number, date, and search inputs.
|
|
3237
3996
|
*/
|
|
3238
3997
|
"readonly"?: boolean;
|
|
3239
3998
|
/**
|
|
3240
3999
|
* Whether the input is required Applies to all input types.
|
|
3241
4000
|
*/
|
|
3242
4001
|
"required"?: boolean;
|
|
4002
|
+
/**
|
|
4003
|
+
* Shell corner radius for search inputs: `rounded` (pill) or `box` (rounded rectangle). Applies to search inputs (`type="search"`).
|
|
4004
|
+
*/
|
|
4005
|
+
"shape"?: 'rounded' | 'box';
|
|
3243
4006
|
/**
|
|
3244
4007
|
* 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
4008
|
*/
|
|
@@ -3253,9 +4016,17 @@ declare namespace LocalJSX {
|
|
|
3253
4016
|
* The type of form control
|
|
3254
4017
|
* @default 'text'
|
|
3255
4018
|
*/
|
|
3256
|
-
"type"?:
|
|
4019
|
+
"type"?: | 'date'
|
|
4020
|
+
| 'time'
|
|
4021
|
+
| 'text'
|
|
4022
|
+
| 'number'
|
|
4023
|
+
| 'password'
|
|
4024
|
+
| 'file'
|
|
4025
|
+
| 'color'
|
|
4026
|
+
| 'phone'
|
|
4027
|
+
| 'search';
|
|
3257
4028
|
/**
|
|
3258
|
-
* Including a `value` will pre-populate the input with the given string. Applies to text, password, number, and
|
|
4029
|
+
* Including a `value` will pre-populate the input with the given string. Applies to text, password, number, date, and search inputs.
|
|
3259
4030
|
*/
|
|
3260
4031
|
"value"?: string;
|
|
3261
4032
|
}
|
|
@@ -3459,6 +4230,90 @@ declare namespace LocalJSX {
|
|
|
3459
4230
|
*/
|
|
3460
4231
|
"value"?: string;
|
|
3461
4232
|
}
|
|
4233
|
+
interface XplInputSearch {
|
|
4234
|
+
/**
|
|
4235
|
+
* 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.
|
|
4236
|
+
* @default 'Search'
|
|
4237
|
+
*/
|
|
4238
|
+
"ariaLabel"?: string;
|
|
4239
|
+
/**
|
|
4240
|
+
* Passed to the native input (`autocomplete` attribute). Default `off` matches common inline-search UX; browsers may still apply heuristics.
|
|
4241
|
+
* @default 'off'
|
|
4242
|
+
*/
|
|
4243
|
+
"autocomplete"?: string;
|
|
4244
|
+
/**
|
|
4245
|
+
* Disables the field and clear control.
|
|
4246
|
+
* @default false
|
|
4247
|
+
*/
|
|
4248
|
+
"disabled"?: boolean;
|
|
4249
|
+
/**
|
|
4250
|
+
* Element id for `aria-describedby` when `hasError` (error message lives on `xpl-input`).
|
|
4251
|
+
*/
|
|
4252
|
+
"errorMessageId"?: string;
|
|
4253
|
+
/**
|
|
4254
|
+
* Set by `xpl-input` when `error` is shown — drives `aria-invalid` / `aria-describedby`.
|
|
4255
|
+
* @default false
|
|
4256
|
+
*/
|
|
4257
|
+
"hasError"?: boolean;
|
|
4258
|
+
/**
|
|
4259
|
+
* When true, parent `xpl-input` renders a visible label — omit `aria-label` on the input.
|
|
4260
|
+
* @default false
|
|
4261
|
+
*/
|
|
4262
|
+
"hasVisibleLabel"?: boolean;
|
|
4263
|
+
/**
|
|
4264
|
+
* Associates the control with the parent `xpl-input` label (`for` / `id`).
|
|
4265
|
+
*/
|
|
4266
|
+
"inputId": string;
|
|
4267
|
+
/**
|
|
4268
|
+
* Form field `name` on the native input.
|
|
4269
|
+
*/
|
|
4270
|
+
"name"?: string;
|
|
4271
|
+
/**
|
|
4272
|
+
* 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).
|
|
4273
|
+
*/
|
|
4274
|
+
"onBlurEvent"?: (event: XplInputSearchCustomEvent<FocusEvent>) => void;
|
|
4275
|
+
/**
|
|
4276
|
+
* 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).
|
|
4277
|
+
*/
|
|
4278
|
+
"onFocusEvent"?: (event: XplInputSearchCustomEvent<FocusEvent>) => void;
|
|
4279
|
+
/**
|
|
4280
|
+
* 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.
|
|
4281
|
+
*/
|
|
4282
|
+
"onInputEvent"?: (event: XplInputSearchCustomEvent<string>) => void;
|
|
4283
|
+
/**
|
|
4284
|
+
* 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`.
|
|
4285
|
+
*/
|
|
4286
|
+
"onSearch"?: (event: XplInputSearchCustomEvent<string>) => void;
|
|
4287
|
+
/**
|
|
4288
|
+
* 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.
|
|
4289
|
+
*/
|
|
4290
|
+
"onValueChange"?: (event: XplInputSearchCustomEvent<string>) => void;
|
|
4291
|
+
/**
|
|
4292
|
+
* Placeholder shown when the value is empty.
|
|
4293
|
+
* @default 'Search'
|
|
4294
|
+
*/
|
|
4295
|
+
"placeholder"?: string;
|
|
4296
|
+
/**
|
|
4297
|
+
* Whether the input is editable.
|
|
4298
|
+
* @default false
|
|
4299
|
+
*/
|
|
4300
|
+
"readonly"?: boolean;
|
|
4301
|
+
/**
|
|
4302
|
+
* Whether the input is required.
|
|
4303
|
+
* @default false
|
|
4304
|
+
*/
|
|
4305
|
+
"required"?: boolean;
|
|
4306
|
+
/**
|
|
4307
|
+
* Shell corner radius: `rounded` (pill) or `box` (rounded rectangle).
|
|
4308
|
+
* @default 'rounded'
|
|
4309
|
+
*/
|
|
4310
|
+
"shape"?: 'rounded' | 'box';
|
|
4311
|
+
/**
|
|
4312
|
+
* Current value (controlled-friendly).
|
|
4313
|
+
* @default ''
|
|
4314
|
+
*/
|
|
4315
|
+
"value"?: string;
|
|
4316
|
+
}
|
|
3462
4317
|
interface XplInputTime {
|
|
3463
4318
|
/**
|
|
3464
4319
|
* 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.
|
|
@@ -3543,10 +4398,114 @@ declare namespace LocalJSX {
|
|
|
3543
4398
|
}
|
|
3544
4399
|
interface XplList {
|
|
3545
4400
|
/**
|
|
3546
|
-
*
|
|
4401
|
+
* Array of list items to render. Each item should follow the ListItem interface. **Deprecated.** Use slot-based xpl-list-item children instead.
|
|
3547
4402
|
* @default []
|
|
3548
4403
|
*/
|
|
3549
4404
|
"items"?: ListItem[];
|
|
4405
|
+
/**
|
|
4406
|
+
* 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).
|
|
4407
|
+
*/
|
|
4408
|
+
"label"?: string;
|
|
4409
|
+
/**
|
|
4410
|
+
* 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.
|
|
4411
|
+
*/
|
|
4412
|
+
"labelledBy"?: string;
|
|
4413
|
+
/**
|
|
4414
|
+
* Emitted when an item is selected.
|
|
4415
|
+
*/
|
|
4416
|
+
"onItemSelect"?: (event: XplListCustomEvent<{ itemId?: string }>) => void;
|
|
4417
|
+
/**
|
|
4418
|
+
* Emitted when the order of items changes (after the DOM has been updated). `orderedItemIds` lists **visible** row ids only (hidden rows excluded).
|
|
4419
|
+
*/
|
|
4420
|
+
"onOrderChange"?: (event: XplListCustomEvent<XplListOrderChangeDetail>) => void;
|
|
4421
|
+
/**
|
|
4422
|
+
* 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.
|
|
4423
|
+
* @default false
|
|
4424
|
+
*/
|
|
4425
|
+
"reorderable"?: boolean;
|
|
4426
|
+
/**
|
|
4427
|
+
* 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()`).
|
|
4428
|
+
* @default false
|
|
4429
|
+
*/
|
|
4430
|
+
"selectable"?: boolean;
|
|
4431
|
+
}
|
|
4432
|
+
interface XplListItem {
|
|
4433
|
+
/**
|
|
4434
|
+
* Whether the item is disabled.
|
|
4435
|
+
* @default false
|
|
4436
|
+
*/
|
|
4437
|
+
"disabled"?: boolean;
|
|
4438
|
+
/**
|
|
4439
|
+
* Whether to show the item in an error state.
|
|
4440
|
+
* @default false
|
|
4441
|
+
*/
|
|
4442
|
+
"error"?: boolean;
|
|
4443
|
+
/**
|
|
4444
|
+
* 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.
|
|
4445
|
+
* @default false
|
|
4446
|
+
*/
|
|
4447
|
+
"hidden"?: boolean;
|
|
4448
|
+
/**
|
|
4449
|
+
* URL for link behavior. When provided, the entire row becomes clickable. Clicks on `actions` or `avatar` slots are prevented from triggering navigation.
|
|
4450
|
+
*/
|
|
4451
|
+
"href"?: string;
|
|
4452
|
+
/**
|
|
4453
|
+
* 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`).
|
|
4454
|
+
*/
|
|
4455
|
+
"item"?: ListItem;
|
|
4456
|
+
/**
|
|
4457
|
+
* 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.
|
|
4458
|
+
*/
|
|
4459
|
+
"itemId"?: string;
|
|
4460
|
+
/**
|
|
4461
|
+
* When set by the parent, indicates this item is the active keyboard reorder item.
|
|
4462
|
+
* @default false
|
|
4463
|
+
*/
|
|
4464
|
+
"keyboardActive"?: boolean;
|
|
4465
|
+
/**
|
|
4466
|
+
* Emitted when a drag operation ends on this item (after drop or cancel).
|
|
4467
|
+
*/
|
|
4468
|
+
"onItemDragEnd"?: (event: XplListItemCustomEvent<{ itemId?: string; item: HTMLElement }>) => void;
|
|
4469
|
+
/**
|
|
4470
|
+
* Emitted when drag starts on this item.
|
|
4471
|
+
*/
|
|
4472
|
+
"onItemDragStart"?: (event: XplListItemCustomEvent<{ itemId?: string; item: HTMLElement }>) => void;
|
|
4473
|
+
/**
|
|
4474
|
+
* Emitted when an item is dropped on this item.
|
|
4475
|
+
*/
|
|
4476
|
+
"onItemDrop"?: (event: XplListItemCustomEvent<{ itemId?: string; item: HTMLElement }>) => void;
|
|
4477
|
+
/**
|
|
4478
|
+
* Emitted when the item is selected (radio change).
|
|
4479
|
+
*/
|
|
4480
|
+
"onItemSelect"?: (event: XplListItemCustomEvent<{ itemId?: string }>) => void;
|
|
4481
|
+
/**
|
|
4482
|
+
* Name attribute for radio inputs (shared across selectable items in a list).
|
|
4483
|
+
*/
|
|
4484
|
+
"radioName"?: string;
|
|
4485
|
+
/**
|
|
4486
|
+
* 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.
|
|
4487
|
+
* @default false
|
|
4488
|
+
*/
|
|
4489
|
+
"reorderable"?: boolean;
|
|
4490
|
+
/**
|
|
4491
|
+
* Whether this item is selectable (shows `xpl-radio` in a shared group).
|
|
4492
|
+
* @default false
|
|
4493
|
+
*/
|
|
4494
|
+
"selectable"?: boolean;
|
|
4495
|
+
/**
|
|
4496
|
+
* Whether this item is selected (radio checked state).
|
|
4497
|
+
* @default false
|
|
4498
|
+
*/
|
|
4499
|
+
"selected"?: boolean;
|
|
4500
|
+
/**
|
|
4501
|
+
* Whether to show a divider below the item.
|
|
4502
|
+
* @default false
|
|
4503
|
+
*/
|
|
4504
|
+
"showDivider"?: boolean;
|
|
4505
|
+
/**
|
|
4506
|
+
* 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).
|
|
4507
|
+
*/
|
|
4508
|
+
"titleBadgeVariant"?: BadgeVariantProp1;
|
|
3550
4509
|
}
|
|
3551
4510
|
interface XplMainNav {
|
|
3552
4511
|
/**
|
|
@@ -3580,6 +4539,34 @@ declare namespace LocalJSX {
|
|
|
3580
4539
|
*/
|
|
3581
4540
|
"variant"?: 'default' | 'warning';
|
|
3582
4541
|
}
|
|
4542
|
+
/**
|
|
4543
|
+
* Profile / account block (username, email, default slot for **`xpl-top-nav-item`** / **`xpl-divider`**).
|
|
4544
|
+
* Tag **`xpl-nav-header-menu`**; implementation folder **`xpl-nav-header-menu`**. **`.xpl-nav-header-menu__slot`** is
|
|
4545
|
+
* **`role="list"`** for slotted **`xpl-top-nav-item`** (**`role="listitem"`**).
|
|
4546
|
+
* **Slotted content:** do not add **`xpl-nav-header-menu__*`** BEM classes on nodes you pass into the default slot —
|
|
4547
|
+
* profile, list shell, and **`xpl-top-nav-item`** **`role="listitem"`** are handled by the component. Use
|
|
4548
|
+
* **`xpl-top-nav-item`** (or plain elements that are not Apollo **`xpl-*`** BEM hooks) in the slot only.
|
|
4549
|
+
* **`slot="right-aside-mobile"`** — optional block **between** the profile header and the default-slot list (e.g. narrow-only
|
|
4550
|
+
* duplicate of **every** **`slot="right-aside"`** control per Figma when **`xpl-top-nav`** hides **`right-aside`** on narrow viewports (always)).
|
|
4551
|
+
* 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.
|
|
4552
|
+
* Light-DOM **`slotchange`** is unreliable; a host **`MutationObserver`** (child / subtree / **`slot`** attribute) keeps
|
|
4553
|
+
* **`xpl-nav-header-menu--has-right-aside-mobile`** in sync when nodes are added or retargeted after mount (same pattern as **`xpl-top-nav`**).
|
|
4554
|
+
* Stencil **`newSpecPage`** / mock-doc does not define **`MutationObserver`**; slot presence still updates on the next
|
|
4555
|
+
* deferred flush (**`setTimeout(0)`** coalesced with **`componentDidRender`**). In real browsers the observer handles child /
|
|
4556
|
+
* **`slot`** mutations without stacking uncancellable microtasks.
|
|
4557
|
+
* **Theming:** The host always includes Foundation’s **`dark`** class so **`--xpl-*`** purpose tokens resolve to dark-mode
|
|
4558
|
+
* values even when the page root is light (same contract as **`xpl-top-nav`** / **`xpl-top-nav-item`**).
|
|
4559
|
+
*/
|
|
4560
|
+
interface XplNavHeaderMenu {
|
|
4561
|
+
/**
|
|
4562
|
+
* Email address shown below the username.
|
|
4563
|
+
*/
|
|
4564
|
+
"email"?: string;
|
|
4565
|
+
/**
|
|
4566
|
+
* Display name shown in the profile block.
|
|
4567
|
+
*/
|
|
4568
|
+
"username"?: string;
|
|
4569
|
+
}
|
|
3583
4570
|
interface XplNavItem {
|
|
3584
4571
|
/**
|
|
3585
4572
|
* @property {boolean} - Whether or not the item should control the main nav state on click
|
|
@@ -3637,7 +4624,7 @@ declare namespace LocalJSX {
|
|
|
3637
4624
|
*/
|
|
3638
4625
|
"accent"?: 'none' | 'primary' | 'secondary' | 'positive' | 'negative' | 'highlight';
|
|
3639
4626
|
/**
|
|
3640
|
-
* Padding density applied to the content area.
|
|
4627
|
+
* 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
4628
|
* @default 'default'
|
|
3642
4629
|
*/
|
|
3643
4630
|
"padding"?: 'default' | 'tight' | 'loose';
|
|
@@ -3668,17 +4655,6 @@ declare namespace LocalJSX {
|
|
|
3668
4655
|
*/
|
|
3669
4656
|
"position"?: PopoverPosition;
|
|
3670
4657
|
}
|
|
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
4658
|
interface XplProgressBar {
|
|
3683
4659
|
/**
|
|
3684
4660
|
* The helper text displayed below the progress bar (recommended for error state)
|
|
@@ -3709,6 +4685,32 @@ declare namespace LocalJSX {
|
|
|
3709
4685
|
*/
|
|
3710
4686
|
"variant"?: 'default' | 'success' | 'error' | 'indeterminate';
|
|
3711
4687
|
}
|
|
4688
|
+
interface XplProgressIndicator {
|
|
4689
|
+
/**
|
|
4690
|
+
* 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].
|
|
4691
|
+
* @default 0
|
|
4692
|
+
*/
|
|
4693
|
+
"currentStep"?: number;
|
|
4694
|
+
/**
|
|
4695
|
+
* Layout direction - 'horizontal' or 'vertical'
|
|
4696
|
+
* @default 'horizontal'
|
|
4697
|
+
*/
|
|
4698
|
+
"layout"?: 'horizontal' | 'vertical';
|
|
4699
|
+
/**
|
|
4700
|
+
* Whether to show step labels
|
|
4701
|
+
* @default true
|
|
4702
|
+
*/
|
|
4703
|
+
"showLabels"?: boolean;
|
|
4704
|
+
/**
|
|
4705
|
+
* Whether to show step numbers inside circles
|
|
4706
|
+
* @default true
|
|
4707
|
+
*/
|
|
4708
|
+
"showNumbers"?: boolean;
|
|
4709
|
+
/**
|
|
4710
|
+
* The steps is an array of the steps name.
|
|
4711
|
+
*/
|
|
4712
|
+
"steps"?: string[];
|
|
4713
|
+
}
|
|
3712
4714
|
interface XplRadio {
|
|
3713
4715
|
/**
|
|
3714
4716
|
* Whether the input is "on"
|
|
@@ -3767,6 +4769,15 @@ declare namespace LocalJSX {
|
|
|
3767
4769
|
* Whether the field is disabled
|
|
3768
4770
|
*/
|
|
3769
4771
|
"disabled"?: boolean;
|
|
4772
|
+
/**
|
|
4773
|
+
* Additional placements to try for the options panel when the default `dropdownPlacement` does not fit. Passed to `xpl-dropdown` / Floating UI `flip`.
|
|
4774
|
+
*/
|
|
4775
|
+
"dropdownFlipFallbackPlacements"?: Placement[];
|
|
4776
|
+
/**
|
|
4777
|
+
* Initial Floating UI placement for the options panel (e.g. `top-start`, `bottom-start`). Forwarded to the inner `xpl-dropdown` when the menu is open.
|
|
4778
|
+
* @default 'bottom-start'
|
|
4779
|
+
*/
|
|
4780
|
+
"dropdownPlacement"?: Placement;
|
|
3770
4781
|
/**
|
|
3771
4782
|
* If an empty string (attribute present with no value), will display visually as an error. If a string is included, will display visually as an error and include the value as an error message.
|
|
3772
4783
|
*/
|
|
@@ -3941,9 +4952,113 @@ declare namespace LocalJSX {
|
|
|
3941
4952
|
*/
|
|
3942
4953
|
"variant"?: 'default' | 'warning';
|
|
3943
4954
|
}
|
|
4955
|
+
interface XplSpotlight {
|
|
4956
|
+
/**
|
|
4957
|
+
* 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`.
|
|
4958
|
+
* @default 'default'
|
|
4959
|
+
*/
|
|
4960
|
+
"actionLayout"?: SpotlightActionLayout;
|
|
4961
|
+
/**
|
|
4962
|
+
* Which corner of the card the anchor dot uses when not using `target`, or as the preferred side for Floating UI.
|
|
4963
|
+
* @default 'top-left'
|
|
4964
|
+
*/
|
|
4965
|
+
"anchorPosition"?: SpotlightAnchorPosition;
|
|
4966
|
+
/**
|
|
4967
|
+
* Body copy when the `body` slot has no slotted content. Whitespace-only values are treated as empty (no fallback paragraph).
|
|
4968
|
+
*/
|
|
4969
|
+
"body"?: string;
|
|
4970
|
+
/**
|
|
4971
|
+
* Current step index (1-based). Used with `totalSteps` for the step label and for disabling default Back/Next when `showSteps` is true.
|
|
4972
|
+
* @default 1
|
|
4973
|
+
*/
|
|
4974
|
+
"currentStep"?: number;
|
|
4975
|
+
/**
|
|
4976
|
+
* Heading when the `title` slot has no slotted content. Whitespace-only values are treated as empty (no fallback title span).
|
|
4977
|
+
*/
|
|
4978
|
+
"heading"?: string;
|
|
4979
|
+
/**
|
|
4980
|
+
* Whether to show the dismiss (close) control.
|
|
4981
|
+
* @default true
|
|
4982
|
+
*/
|
|
4983
|
+
"isDismissible"?: boolean;
|
|
4984
|
+
/**
|
|
4985
|
+
* Controls whether the spotlight is rendered. When false, the host remains in the DOM but the spotlight UI is hidden.
|
|
4986
|
+
* @default true
|
|
4987
|
+
*/
|
|
4988
|
+
"isOpen"?: boolean;
|
|
4989
|
+
/**
|
|
4990
|
+
* Emitted when the dismiss control is activated or Escape is pressed (when dismissible).
|
|
4991
|
+
*/
|
|
4992
|
+
"onDismiss"?: (event: XplSpotlightCustomEvent<void>) => void;
|
|
4993
|
+
/**
|
|
4994
|
+
* Emitted when the primary action control is activated (default: Next).
|
|
4995
|
+
*/
|
|
4996
|
+
"onPrimaryAction"?: (event: XplSpotlightCustomEvent<void>) => void;
|
|
4997
|
+
/**
|
|
4998
|
+
* Emitted when the secondary action control is activated (default: Back).
|
|
4999
|
+
*/
|
|
5000
|
+
"onSecondaryAction"?: (event: XplSpotlightCustomEvent<void>) => void;
|
|
5001
|
+
/**
|
|
5002
|
+
* Emitted when the target indicator is clicked. Consumers typically toggle `isOpen` in response.
|
|
5003
|
+
*/
|
|
5004
|
+
"onTargetClick"?: (event: XplSpotlightCustomEvent<void>) => void;
|
|
5005
|
+
/**
|
|
5006
|
+
* Label used for the default primary action button. Only applies when `showActions` is `true`.
|
|
5007
|
+
* @default 'Next'
|
|
5008
|
+
*/
|
|
5009
|
+
"primaryActionLabel"?: string;
|
|
5010
|
+
/**
|
|
5011
|
+
* Label used for the default secondary action button. Only applies when `showActions` is `true`.
|
|
5012
|
+
* @default 'Back'
|
|
5013
|
+
*/
|
|
5014
|
+
"secondaryActionLabel"?: string;
|
|
5015
|
+
/**
|
|
5016
|
+
* 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.
|
|
5017
|
+
* @default true
|
|
5018
|
+
*/
|
|
5019
|
+
"showActions"?: boolean;
|
|
5020
|
+
/**
|
|
5021
|
+
* 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.
|
|
5022
|
+
* @default true
|
|
5023
|
+
*/
|
|
5024
|
+
"showImage"?: boolean;
|
|
5025
|
+
/**
|
|
5026
|
+
* Whether to show the step counter between actions (`currentStep` of `totalSteps`) and whether default Back/Next use step-based disabled state.
|
|
5027
|
+
* @default true
|
|
5028
|
+
*/
|
|
5029
|
+
"showSteps"?: boolean;
|
|
5030
|
+
/**
|
|
5031
|
+
* 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`.
|
|
5032
|
+
*/
|
|
5033
|
+
"target"?: string;
|
|
5034
|
+
/**
|
|
5035
|
+
* 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.
|
|
5036
|
+
* @default 1
|
|
5037
|
+
*/
|
|
5038
|
+
"totalSteps"?: number;
|
|
5039
|
+
}
|
|
3944
5040
|
interface XplTab {
|
|
3945
5041
|
/**
|
|
3946
|
-
*
|
|
5042
|
+
* Disables this tab (pill or underline).
|
|
5043
|
+
* @default false
|
|
5044
|
+
*/
|
|
5045
|
+
"disabled"?: boolean;
|
|
5046
|
+
/**
|
|
5047
|
+
* Set when the parent `xpl-tabs` has `disabled` (group-disabled).
|
|
5048
|
+
* @default false
|
|
5049
|
+
*/
|
|
5050
|
+
"groupDisabled"?: boolean;
|
|
5051
|
+
/**
|
|
5052
|
+
* Optional icon name for segment-style pills (`type="segment"` on parent `xpl-tabs`). Ignored for default tabs.
|
|
5053
|
+
*/
|
|
5054
|
+
"icon"?: string;
|
|
5055
|
+
/**
|
|
5056
|
+
* Icon position for segment-style pills.
|
|
5057
|
+
* @default 'start'
|
|
5058
|
+
*/
|
|
5059
|
+
"iconPosition"?: 'start' | 'end';
|
|
5060
|
+
/**
|
|
5061
|
+
* 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
5062
|
*/
|
|
3948
5063
|
"onTabChange"?: (event: XplTabCustomEvent<string>) => void;
|
|
3949
5064
|
/**
|
|
@@ -4052,15 +5167,25 @@ declare namespace LocalJSX {
|
|
|
4052
5167
|
"width"?: number;
|
|
4053
5168
|
}
|
|
4054
5169
|
interface XplTabs {
|
|
5170
|
+
/**
|
|
5171
|
+
* Disables the whole tab group (headings, mobile select, and segment pills).
|
|
5172
|
+
* @default false
|
|
5173
|
+
*/
|
|
5174
|
+
"disabled"?: boolean;
|
|
4055
5175
|
/**
|
|
4056
5176
|
* Whether to make the tabs full width
|
|
4057
5177
|
* @default false
|
|
4058
5178
|
*/
|
|
4059
5179
|
"fullWidth"?: boolean;
|
|
4060
5180
|
/**
|
|
4061
|
-
*
|
|
5181
|
+
* 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
5182
|
*/
|
|
4063
5183
|
"onTabChange"?: (event: XplTabsCustomEvent<string>) => void;
|
|
5184
|
+
/**
|
|
5185
|
+
* Visual and layout variant: classic underline tabs or segment (pill) controls.
|
|
5186
|
+
* @default 'tabs'
|
|
5187
|
+
*/
|
|
5188
|
+
"type"?: 'tabs' | 'segment';
|
|
4064
5189
|
/**
|
|
4065
5190
|
* The selected tab target value, defaults to the first tab
|
|
4066
5191
|
*/
|
|
@@ -4068,9 +5193,46 @@ declare namespace LocalJSX {
|
|
|
4068
5193
|
}
|
|
4069
5194
|
interface XplTag {
|
|
4070
5195
|
/**
|
|
4071
|
-
*
|
|
5196
|
+
* Whether the tag is disabled
|
|
5197
|
+
* @default false
|
|
5198
|
+
*/
|
|
5199
|
+
"disabled"?: boolean;
|
|
5200
|
+
/**
|
|
5201
|
+
* Whether the tag shows a dismiss button
|
|
5202
|
+
* @default true
|
|
5203
|
+
*/
|
|
5204
|
+
"dismissible"?: boolean;
|
|
5205
|
+
/**
|
|
5206
|
+
* 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.
|
|
5207
|
+
* @default false
|
|
5208
|
+
*/
|
|
5209
|
+
"isDraggable"?: boolean;
|
|
5210
|
+
/**
|
|
5211
|
+
* Emitted when the tag is dismissed (content click when `isDraggable` is false, or dismiss button click).
|
|
5212
|
+
* @deprecated Use `tagRemove` for dismiss button clicks only. The `close` event will be removed in a future major version.
|
|
5213
|
+
*/
|
|
5214
|
+
"onClose"?: (event: XplTagCustomEvent<void>) => void;
|
|
5215
|
+
/**
|
|
5216
|
+
* 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.
|
|
4072
5217
|
*/
|
|
4073
|
-
"
|
|
5218
|
+
"onTagDragEnd"?: (event: XplTagCustomEvent<TagDragEndDetail>) => void;
|
|
5219
|
+
/**
|
|
5220
|
+
* 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.
|
|
5221
|
+
*/
|
|
5222
|
+
"onTagDragStart"?: (event: XplTagCustomEvent<TagDragStartDetail>) => void;
|
|
5223
|
+
/**
|
|
5224
|
+
* Emitted when the tag dismiss (×) button is clicked
|
|
5225
|
+
*/
|
|
5226
|
+
"onTagRemove"?: (event: XplTagCustomEvent<void>) => void;
|
|
5227
|
+
/**
|
|
5228
|
+
* The size of the tag
|
|
5229
|
+
* @default 'default'
|
|
5230
|
+
*/
|
|
5231
|
+
"size"?: 'default' | 'sm';
|
|
5232
|
+
/**
|
|
5233
|
+
* Optional stable id for the tag. When set, it is included in `tagDragStart` / `tagDragEnd` detail and written to `dataTransfer` as `application/x-tag-id`.
|
|
5234
|
+
*/
|
|
5235
|
+
"tagId"?: string;
|
|
4074
5236
|
}
|
|
4075
5237
|
interface XplToast {
|
|
4076
5238
|
/**
|
|
@@ -4159,6 +5321,111 @@ declare namespace LocalJSX {
|
|
|
4159
5321
|
*/
|
|
4160
5322
|
"text"?: string;
|
|
4161
5323
|
}
|
|
5324
|
+
/**
|
|
5325
|
+
* Horizontal top navigation with **`left-aside`** and a **right rail**: **`right-aside`** then **user menu**
|
|
5326
|
+
* (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`**).
|
|
5327
|
+
* 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.
|
|
5328
|
+
* **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).
|
|
5329
|
+
* **`xpl-top-nav-item`** **`slot="dropdown"`** uses document **capture** for **Escape** first; the shell uses **bubble**
|
|
5330
|
+
* on **`ownerDocument`** so nested dropdowns close before the drawer.
|
|
5331
|
+
* **Theming:** The host always includes Foundation’s **`dark`** class so **`--xpl-*`** purpose tokens under this subtree
|
|
5332
|
+
* resolve to dark-mode values even when the page root is light. Floating overlays (e.g. **`xpl-popover`** / **`xpl-dropdown`**
|
|
5333
|
+
* content teleported outside the host) do not inherit this scope — add **`dark`** on those panels if they should match.
|
|
5334
|
+
* **Layout:** **`right-aside`** and the user-menu region are wrapped internally (**`.xpl-top-nav__right-lead`**, etc.).
|
|
5335
|
+
* Consumers should not add those BEM classes — slot content only.
|
|
5336
|
+
* **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.
|
|
5337
|
+
* **Narrow / mobile** (same breakpoint as above): **`slot="left-aside"`** is **hidden** in the bar until **`nav-control`**
|
|
5338
|
+
* is set **and** the drawer is open (floating panel per Figma). **Without **`nav-control`**, there is no mobile drawer** —
|
|
5339
|
+
* primary links remain hidden below **`md`** until the viewport is wide enough for the horizontal bar. The built-in **brand**
|
|
5340
|
+
* stays in the top bar (**hamburger → brand** when **`nav-control`** is set). **`right-aside`** is hidden in the bar on narrow
|
|
5341
|
+
* viewports (**`top-nav.css`**, one pixel below Tailwind **`md`**); duplicate those actions into **`xpl-nav-header-menu`**
|
|
5342
|
+
* **`slot="right-aside-mobile"`** (below profile, above the list; narrow-only CSS in **`top-nav.css`**) per Figma.
|
|
5343
|
+
* **Account menu vs drawer:** Opening the built-in account **`xpl-popover`** while the mobile drawer is open **closes the drawer**
|
|
5344
|
+
* and emits **`navOpen(false)`** so the two layers do not stack.
|
|
5345
|
+
*/
|
|
5346
|
+
interface XplTopNav {
|
|
5347
|
+
/**
|
|
5348
|
+
* 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.
|
|
5349
|
+
*/
|
|
5350
|
+
"brandHref"?: string;
|
|
5351
|
+
/**
|
|
5352
|
+
* 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.
|
|
5353
|
+
*/
|
|
5354
|
+
"brandLogo"?: string;
|
|
5355
|
+
/**
|
|
5356
|
+
* 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).
|
|
5357
|
+
*/
|
|
5358
|
+
"brandName"?: string;
|
|
5359
|
+
/**
|
|
5360
|
+
* 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.
|
|
5361
|
+
*/
|
|
5362
|
+
"childAccountLabel"?: string;
|
|
5363
|
+
/**
|
|
5364
|
+
* 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`.
|
|
5365
|
+
*/
|
|
5366
|
+
"label"?: string;
|
|
5367
|
+
/**
|
|
5368
|
+
* 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.
|
|
5369
|
+
*/
|
|
5370
|
+
"navControl"?: boolean;
|
|
5371
|
+
/**
|
|
5372
|
+
* 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).
|
|
5373
|
+
*/
|
|
5374
|
+
"onBrandClick"?: (event: XplTopNavCustomEvent<MouseEvent>) => void;
|
|
5375
|
+
/**
|
|
5376
|
+
* 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).
|
|
5377
|
+
*/
|
|
5378
|
+
"onNavOpen"?: (event: XplTopNavCustomEvent<boolean>) => void;
|
|
5379
|
+
}
|
|
5380
|
+
/**
|
|
5381
|
+
* Single nav row for **`xpl-top-nav`** / **`xpl-nav-header-menu`**. The host uses **`role="listitem"`** when the row
|
|
5382
|
+
* participates in a list: a **`role="list"`** parent, **`slot="left-aside"`** on **`xpl-top-nav`** (list host is
|
|
5383
|
+
* **`.xpl-top-nav__left-primary`** while slotted nodes stay light-DOM children of **`xpl-top-nav`**), or default-slot rows
|
|
5384
|
+
* under **`xpl-nav-header-menu`**. That flag is
|
|
5385
|
+
* kept in **`@State`** and refreshed after render plus via **`MutationObserver`** on the host (**`class`**, **`slot`**) and
|
|
5386
|
+
* on **`parentElement`** (**`role`**) or on **`.xpl-top-nav__left-primary`** (**`role`**) for **`slot="left-aside"`** under **`xpl-top-nav`**) so DOM context changes
|
|
5387
|
+
* without a full reconnect still re-sync. The internal
|
|
5388
|
+
* **`xpl-top-nav__brand`** row omits **`listitem`** (it sits in **`.xpl-top-nav__brand-bar`**, not **`.xpl-top-nav__left-primary`**),
|
|
5389
|
+
* as do **`slot="right-aside-mobile"`** rows (not a list). **`slot="dropdown"`** uses a local **`.xpl-top-nav-item__dropdown`**
|
|
5390
|
+
* panel (not **`xpl-dropdown`**); see **`TECH_DEBT.md`**.
|
|
5391
|
+
* **Default slot (no `label`):** do not put **`xpl-top-nav-item__inner`** or other **`xpl-top-nav-item__*`** classes on
|
|
5392
|
+
* custom trigger content — the component renders the inner wrapper and BEM elements.
|
|
5393
|
+
* **Theming:** The host always includes Foundation’s **`dark`** class so **`--xpl-*`** purpose tokens resolve to dark-mode
|
|
5394
|
+
* values even when the page root is light (consistent with **`xpl-top-nav`**).
|
|
5395
|
+
*/
|
|
5396
|
+
interface XplTopNavItem {
|
|
5397
|
+
/**
|
|
5398
|
+
* 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.
|
|
5399
|
+
* @default false
|
|
5400
|
+
*/
|
|
5401
|
+
"active"?: boolean;
|
|
5402
|
+
/**
|
|
5403
|
+
* If set without **`slot="dropdown"`**, the inner control renders as a native **`<a href>`** (link mode).
|
|
5404
|
+
*/
|
|
5405
|
+
"href"?: string;
|
|
5406
|
+
/**
|
|
5407
|
+
* Icon name from **`@xplortech/apollo-icons`** (shown before the label when **`label`** is set).
|
|
5408
|
+
* @default ''
|
|
5409
|
+
*/
|
|
5410
|
+
"icon"?: string;
|
|
5411
|
+
/**
|
|
5412
|
+
* 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.
|
|
5413
|
+
*/
|
|
5414
|
+
"itemAriaLabel"?: string;
|
|
5415
|
+
/**
|
|
5416
|
+
* 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.
|
|
5417
|
+
*/
|
|
5418
|
+
"label"?: string;
|
|
5419
|
+
/**
|
|
5420
|
+
* 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.
|
|
5421
|
+
*/
|
|
5422
|
+
"onNavItemClick"?: (event: XplTopNavItemCustomEvent<MouseEvent>) => void;
|
|
5423
|
+
/**
|
|
5424
|
+
* When true, sets **`aria-current="page"`** and selected styling.
|
|
5425
|
+
* @default false
|
|
5426
|
+
*/
|
|
5427
|
+
"selected"?: boolean;
|
|
5428
|
+
}
|
|
4162
5429
|
interface XplUtilityBar {
|
|
4163
5430
|
/**
|
|
4164
5431
|
* @property {boolean} - Optional property that defines whether or not the main nav is open at startup.
|
|
@@ -4189,14 +5456,17 @@ declare namespace LocalJSX {
|
|
|
4189
5456
|
"isNavOpenAtStartup": boolean;
|
|
4190
5457
|
}
|
|
4191
5458
|
interface XplAvatarAttributes {
|
|
4192
|
-
"color":
|
|
5459
|
+
"color": AvatarColor;
|
|
4193
5460
|
"disabled": boolean;
|
|
5461
|
+
"groupData": AvatarGroupItem[] | string;
|
|
4194
5462
|
"href": string;
|
|
4195
5463
|
"name": string;
|
|
4196
5464
|
"size": 'md' | 'sm';
|
|
4197
5465
|
"src": string;
|
|
4198
|
-
"status":
|
|
5466
|
+
"status": AvatarStatus;
|
|
5467
|
+
"subText": string;
|
|
4199
5468
|
"target": string;
|
|
5469
|
+
"variant": AvatarVariant;
|
|
4200
5470
|
}
|
|
4201
5471
|
interface XplBackdropAttributes {
|
|
4202
5472
|
"relative": boolean;
|
|
@@ -4251,6 +5521,7 @@ declare namespace LocalJSX {
|
|
|
4251
5521
|
"defaultDate": string;
|
|
4252
5522
|
}
|
|
4253
5523
|
interface XplCheckboxAttributes {
|
|
5524
|
+
"ariaLabel": string;
|
|
4254
5525
|
"checked": boolean;
|
|
4255
5526
|
"description": string;
|
|
4256
5527
|
"disabled": boolean;
|
|
@@ -4294,6 +5565,7 @@ declare namespace LocalJSX {
|
|
|
4294
5565
|
"closeOnSelect": boolean;
|
|
4295
5566
|
"mode": 'single' | 'multi';
|
|
4296
5567
|
"anchorToTrigger": boolean;
|
|
5568
|
+
"placement": Placement;
|
|
4297
5569
|
"selectedValues": string | string[];
|
|
4298
5570
|
"selectOnFocus": boolean;
|
|
4299
5571
|
"triggerId": string;
|
|
@@ -4368,7 +5640,17 @@ declare namespace LocalJSX {
|
|
|
4368
5640
|
"hideEyeDropper": boolean;
|
|
4369
5641
|
"defaultCountry": string;
|
|
4370
5642
|
"isInternational": boolean;
|
|
4371
|
-
"
|
|
5643
|
+
"ariaLabel": string;
|
|
5644
|
+
"shape": 'rounded' | 'box';
|
|
5645
|
+
"type": | 'date'
|
|
5646
|
+
| 'time'
|
|
5647
|
+
| 'text'
|
|
5648
|
+
| 'number'
|
|
5649
|
+
| 'password'
|
|
5650
|
+
| 'file'
|
|
5651
|
+
| 'color'
|
|
5652
|
+
| 'phone'
|
|
5653
|
+
| 'search';
|
|
4372
5654
|
}
|
|
4373
5655
|
interface XplInputColorAttributes {
|
|
4374
5656
|
"value": string;
|
|
@@ -4413,6 +5695,21 @@ declare namespace LocalJSX {
|
|
|
4413
5695
|
"required": boolean;
|
|
4414
5696
|
"value": string;
|
|
4415
5697
|
}
|
|
5698
|
+
interface XplInputSearchAttributes {
|
|
5699
|
+
"ariaLabel": string;
|
|
5700
|
+
"autocomplete": string;
|
|
5701
|
+
"disabled": boolean;
|
|
5702
|
+
"errorMessageId": string;
|
|
5703
|
+
"hasError": boolean;
|
|
5704
|
+
"hasVisibleLabel": boolean;
|
|
5705
|
+
"inputId": string;
|
|
5706
|
+
"name": string;
|
|
5707
|
+
"placeholder": string;
|
|
5708
|
+
"readonly": boolean;
|
|
5709
|
+
"required": boolean;
|
|
5710
|
+
"shape": 'rounded' | 'box';
|
|
5711
|
+
"value": string;
|
|
5712
|
+
}
|
|
4416
5713
|
interface XplInputTimeAttributes {
|
|
4417
5714
|
"inputId": string;
|
|
4418
5715
|
"disabled": boolean;
|
|
@@ -4433,6 +5730,26 @@ declare namespace LocalJSX {
|
|
|
4433
5730
|
"name": string;
|
|
4434
5731
|
"description": string;
|
|
4435
5732
|
}
|
|
5733
|
+
interface XplListAttributes {
|
|
5734
|
+
"label": string;
|
|
5735
|
+
"labelledBy": string;
|
|
5736
|
+
"reorderable": boolean;
|
|
5737
|
+
"selectable": boolean;
|
|
5738
|
+
}
|
|
5739
|
+
interface XplListItemAttributes {
|
|
5740
|
+
"disabled": boolean;
|
|
5741
|
+
"error": boolean;
|
|
5742
|
+
"hidden": boolean;
|
|
5743
|
+
"href": string;
|
|
5744
|
+
"itemId": string;
|
|
5745
|
+
"keyboardActive": boolean;
|
|
5746
|
+
"radioName": string;
|
|
5747
|
+
"reorderable": boolean;
|
|
5748
|
+
"selectable": boolean;
|
|
5749
|
+
"selected": boolean;
|
|
5750
|
+
"showDivider": boolean;
|
|
5751
|
+
"titleBadgeVariant": BadgeVariantProp;
|
|
5752
|
+
}
|
|
4436
5753
|
interface XplMainNavAttributes {
|
|
4437
5754
|
"width": 'default' | 'md' | 'sm';
|
|
4438
5755
|
}
|
|
@@ -4441,6 +5758,10 @@ declare namespace LocalJSX {
|
|
|
4441
5758
|
"size": 'large' | 'medium' | 'small';
|
|
4442
5759
|
"variant": 'default' | 'warning';
|
|
4443
5760
|
}
|
|
5761
|
+
interface XplNavHeaderMenuAttributes {
|
|
5762
|
+
"email": string;
|
|
5763
|
+
"username": string;
|
|
5764
|
+
}
|
|
4444
5765
|
interface XplNavItemAttributes {
|
|
4445
5766
|
"navControl": boolean;
|
|
4446
5767
|
}
|
|
@@ -4461,9 +5782,6 @@ declare namespace LocalJSX {
|
|
|
4461
5782
|
"position": PopoverPosition;
|
|
4462
5783
|
"display": 'arrow' | 'menu';
|
|
4463
5784
|
}
|
|
4464
|
-
interface XplProgressAttributes {
|
|
4465
|
-
"currentStep": number;
|
|
4466
|
-
}
|
|
4467
5785
|
interface XplProgressBarAttributes {
|
|
4468
5786
|
"helperText": string;
|
|
4469
5787
|
"label": string;
|
|
@@ -4472,6 +5790,12 @@ declare namespace LocalJSX {
|
|
|
4472
5790
|
"value": number;
|
|
4473
5791
|
"variant": 'default' | 'success' | 'error' | 'indeterminate';
|
|
4474
5792
|
}
|
|
5793
|
+
interface XplProgressIndicatorAttributes {
|
|
5794
|
+
"currentStep": number;
|
|
5795
|
+
"layout": 'horizontal' | 'vertical';
|
|
5796
|
+
"showLabels": boolean;
|
|
5797
|
+
"showNumbers": boolean;
|
|
5798
|
+
}
|
|
4475
5799
|
interface XplRadioAttributes {
|
|
4476
5800
|
"checked": boolean;
|
|
4477
5801
|
"description": string;
|
|
@@ -4485,6 +5809,7 @@ declare namespace LocalJSX {
|
|
|
4485
5809
|
"selectIcon": string;
|
|
4486
5810
|
"description": string;
|
|
4487
5811
|
"disabled": boolean;
|
|
5812
|
+
"dropdownPlacement": Placement;
|
|
4488
5813
|
"error": string;
|
|
4489
5814
|
"label": string;
|
|
4490
5815
|
"mode": 'single' | 'multi';
|
|
@@ -4530,13 +5855,33 @@ declare namespace LocalJSX {
|
|
|
4530
5855
|
"variant": 'default' | 'warning';
|
|
4531
5856
|
"showFooter": boolean;
|
|
4532
5857
|
}
|
|
4533
|
-
interface
|
|
5858
|
+
interface XplSpotlightAttributes {
|
|
5859
|
+
"actionLayout": SpotlightActionLayout;
|
|
5860
|
+
"anchorPosition": SpotlightAnchorPosition;
|
|
5861
|
+
"body": string;
|
|
5862
|
+
"currentStep": number;
|
|
5863
|
+
"heading": string;
|
|
5864
|
+
"isDismissible": boolean;
|
|
5865
|
+
"isOpen": boolean;
|
|
5866
|
+
"primaryActionLabel": string;
|
|
5867
|
+
"secondaryActionLabel": string;
|
|
5868
|
+
"showActions": boolean;
|
|
5869
|
+
"showImage": boolean;
|
|
5870
|
+
"showSteps": boolean;
|
|
4534
5871
|
"target": string;
|
|
5872
|
+
"totalSteps": number;
|
|
5873
|
+
}
|
|
5874
|
+
interface XplTabAttributes {
|
|
5875
|
+
"disabled": boolean;
|
|
5876
|
+
"groupDisabled": boolean;
|
|
5877
|
+
"icon": string;
|
|
5878
|
+
"iconPosition": 'start' | 'end';
|
|
4535
5879
|
"selected": boolean;
|
|
5880
|
+
"target": string;
|
|
4536
5881
|
}
|
|
4537
5882
|
interface XplTabPanelAttributes {
|
|
4538
|
-
"target": string;
|
|
4539
5883
|
"selected": boolean;
|
|
5884
|
+
"target": string;
|
|
4540
5885
|
}
|
|
4541
5886
|
interface XplTableAttributes {
|
|
4542
5887
|
"freeze": boolean;
|
|
@@ -4552,8 +5897,17 @@ declare namespace LocalJSX {
|
|
|
4552
5897
|
"width": number;
|
|
4553
5898
|
}
|
|
4554
5899
|
interface XplTabsAttributes {
|
|
4555
|
-
"
|
|
5900
|
+
"disabled": boolean;
|
|
4556
5901
|
"fullWidth": boolean;
|
|
5902
|
+
"type": 'tabs' | 'segment';
|
|
5903
|
+
"value": string;
|
|
5904
|
+
}
|
|
5905
|
+
interface XplTagAttributes {
|
|
5906
|
+
"disabled": boolean;
|
|
5907
|
+
"dismissible": boolean;
|
|
5908
|
+
"isDraggable": boolean;
|
|
5909
|
+
"size": 'default' | 'sm';
|
|
5910
|
+
"tagId": string;
|
|
4557
5911
|
}
|
|
4558
5912
|
interface XplToastAttributes {
|
|
4559
5913
|
"variant": 'neutral' | 'warning' | 'success';
|
|
@@ -4586,6 +5940,22 @@ declare namespace LocalJSX {
|
|
|
4586
5940
|
| 'bottom-right';
|
|
4587
5941
|
"hideArrow": boolean;
|
|
4588
5942
|
}
|
|
5943
|
+
interface XplTopNavAttributes {
|
|
5944
|
+
"brandHref": string;
|
|
5945
|
+
"brandLogo": string;
|
|
5946
|
+
"brandName": string;
|
|
5947
|
+
"childAccountLabel": string;
|
|
5948
|
+
"label": string;
|
|
5949
|
+
"navControl": boolean;
|
|
5950
|
+
}
|
|
5951
|
+
interface XplTopNavItemAttributes {
|
|
5952
|
+
"active": boolean;
|
|
5953
|
+
"href": string;
|
|
5954
|
+
"icon": string;
|
|
5955
|
+
"itemAriaLabel": string;
|
|
5956
|
+
"label": string;
|
|
5957
|
+
"selected": boolean;
|
|
5958
|
+
}
|
|
4589
5959
|
interface XplUtilityBarAttributes {
|
|
4590
5960
|
"navControl": boolean;
|
|
4591
5961
|
"isNavOpenAtStartup": boolean;
|
|
@@ -4625,17 +5995,20 @@ declare namespace LocalJSX {
|
|
|
4625
5995
|
"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
5996
|
"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
5997
|
"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] };
|
|
5998
|
+
"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
5999
|
"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
6000
|
"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;
|
|
6001
|
+
"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] };
|
|
6002
|
+
"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
6003
|
"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
6004
|
"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] };
|
|
6005
|
+
"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
6006
|
"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
6007
|
"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
6008
|
"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
6009
|
"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
6010
|
"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] };
|
|
6011
|
+
"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
6012
|
"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
6013
|
"xpl-secondary-nav": XplSecondaryNav;
|
|
4641
6014
|
"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 +6016,20 @@ declare namespace LocalJSX {
|
|
|
4643
6016
|
"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
6017
|
"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
6018
|
"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] };
|
|
6019
|
+
"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
6020
|
"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
6021
|
"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
6022
|
"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] };
|
|
4649
6023
|
"xpl-table-header": XplTableHeader;
|
|
4650
6024
|
"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] };
|
|
4651
6025
|
"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;
|
|
6026
|
+
"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
6027
|
"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
6028
|
"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
6029
|
"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
6030
|
"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] };
|
|
6031
|
+
"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] };
|
|
6032
|
+
"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
6033
|
"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
6034
|
}
|
|
4659
6035
|
}
|
|
@@ -4697,11 +6073,32 @@ declare module "@stencil/core" {
|
|
|
4697
6073
|
*/
|
|
4698
6074
|
"xpl-input-file": LocalJSX.IntrinsicElements["xpl-input-file"] & JSXBase.HTMLAttributes<HTMLXplInputFileElement>;
|
|
4699
6075
|
"xpl-input-phone": LocalJSX.IntrinsicElements["xpl-input-phone"] & JSXBase.HTMLAttributes<HTMLXplInputPhoneElement>;
|
|
6076
|
+
"xpl-input-search": LocalJSX.IntrinsicElements["xpl-input-search"] & JSXBase.HTMLAttributes<HTMLXplInputSearchElement>;
|
|
4700
6077
|
"xpl-input-time": LocalJSX.IntrinsicElements["xpl-input-time"] & JSXBase.HTMLAttributes<HTMLXplInputTimeElement>;
|
|
4701
6078
|
"xpl-large-card": LocalJSX.IntrinsicElements["xpl-large-card"] & JSXBase.HTMLAttributes<HTMLXplLargeCardElement>;
|
|
4702
6079
|
"xpl-list": LocalJSX.IntrinsicElements["xpl-list"] & JSXBase.HTMLAttributes<HTMLXplListElement>;
|
|
6080
|
+
"xpl-list-item": LocalJSX.IntrinsicElements["xpl-list-item"] & JSXBase.HTMLAttributes<HTMLXplListItemElement>;
|
|
4703
6081
|
"xpl-main-nav": LocalJSX.IntrinsicElements["xpl-main-nav"] & JSXBase.HTMLAttributes<HTMLXplMainNavElement>;
|
|
4704
6082
|
"xpl-modal": LocalJSX.IntrinsicElements["xpl-modal"] & JSXBase.HTMLAttributes<HTMLXplModalElement>;
|
|
6083
|
+
/**
|
|
6084
|
+
* Profile / account block (username, email, default slot for **`xpl-top-nav-item`** / **`xpl-divider`**).
|
|
6085
|
+
* Tag **`xpl-nav-header-menu`**; implementation folder **`xpl-nav-header-menu`**. **`.xpl-nav-header-menu__slot`** is
|
|
6086
|
+
* **`role="list"`** for slotted **`xpl-top-nav-item`** (**`role="listitem"`**).
|
|
6087
|
+
* **Slotted content:** do not add **`xpl-nav-header-menu__*`** BEM classes on nodes you pass into the default slot —
|
|
6088
|
+
* profile, list shell, and **`xpl-top-nav-item`** **`role="listitem"`** are handled by the component. Use
|
|
6089
|
+
* **`xpl-top-nav-item`** (or plain elements that are not Apollo **`xpl-*`** BEM hooks) in the slot only.
|
|
6090
|
+
* **`slot="right-aside-mobile"`** — optional block **between** the profile header and the default-slot list (e.g. narrow-only
|
|
6091
|
+
* duplicate of **every** **`slot="right-aside"`** control per Figma when **`xpl-top-nav`** hides **`right-aside`** on narrow viewports (always)).
|
|
6092
|
+
* 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.
|
|
6093
|
+
* Light-DOM **`slotchange`** is unreliable; a host **`MutationObserver`** (child / subtree / **`slot`** attribute) keeps
|
|
6094
|
+
* **`xpl-nav-header-menu--has-right-aside-mobile`** in sync when nodes are added or retargeted after mount (same pattern as **`xpl-top-nav`**).
|
|
6095
|
+
* Stencil **`newSpecPage`** / mock-doc does not define **`MutationObserver`**; slot presence still updates on the next
|
|
6096
|
+
* deferred flush (**`setTimeout(0)`** coalesced with **`componentDidRender`**). In real browsers the observer handles child /
|
|
6097
|
+
* **`slot`** mutations without stacking uncancellable microtasks.
|
|
6098
|
+
* **Theming:** The host always includes Foundation’s **`dark`** class so **`--xpl-*`** purpose tokens resolve to dark-mode
|
|
6099
|
+
* values even when the page root is light (same contract as **`xpl-top-nav`** / **`xpl-top-nav-item`**).
|
|
6100
|
+
*/
|
|
6101
|
+
"xpl-nav-header-menu": LocalJSX.IntrinsicElements["xpl-nav-header-menu"] & JSXBase.HTMLAttributes<HTMLXplNavHeaderMenuElement>;
|
|
4705
6102
|
"xpl-nav-item": LocalJSX.IntrinsicElements["xpl-nav-item"] & JSXBase.HTMLAttributes<HTMLXplNavItemElement>;
|
|
4706
6103
|
"xpl-pagination": LocalJSX.IntrinsicElements["xpl-pagination"] & JSXBase.HTMLAttributes<HTMLXplPaginationElement>;
|
|
4707
6104
|
/**
|
|
@@ -4710,8 +6107,8 @@ declare module "@stencil/core" {
|
|
|
4710
6107
|
*/
|
|
4711
6108
|
"xpl-panel": LocalJSX.IntrinsicElements["xpl-panel"] & JSXBase.HTMLAttributes<HTMLXplPanelElement>;
|
|
4712
6109
|
"xpl-popover": LocalJSX.IntrinsicElements["xpl-popover"] & JSXBase.HTMLAttributes<HTMLXplPopoverElement>;
|
|
4713
|
-
"xpl-progress": LocalJSX.IntrinsicElements["xpl-progress"] & JSXBase.HTMLAttributes<HTMLXplProgressElement>;
|
|
4714
6110
|
"xpl-progress-bar": LocalJSX.IntrinsicElements["xpl-progress-bar"] & JSXBase.HTMLAttributes<HTMLXplProgressBarElement>;
|
|
6111
|
+
"xpl-progress-indicator": LocalJSX.IntrinsicElements["xpl-progress-indicator"] & JSXBase.HTMLAttributes<HTMLXplProgressIndicatorElement>;
|
|
4715
6112
|
"xpl-radio": LocalJSX.IntrinsicElements["xpl-radio"] & JSXBase.HTMLAttributes<HTMLXplRadioElement>;
|
|
4716
6113
|
"xpl-secondary-nav": LocalJSX.IntrinsicElements["xpl-secondary-nav"] & JSXBase.HTMLAttributes<HTMLXplSecondaryNavElement>;
|
|
4717
6114
|
"xpl-select": LocalJSX.IntrinsicElements["xpl-select"] & JSXBase.HTMLAttributes<HTMLXplSelectElement>;
|
|
@@ -4719,6 +6116,7 @@ declare module "@stencil/core" {
|
|
|
4719
6116
|
"xpl-side-nav-item": LocalJSX.IntrinsicElements["xpl-side-nav-item"] & JSXBase.HTMLAttributes<HTMLXplSideNavItemElement>;
|
|
4720
6117
|
"xpl-skeleton": LocalJSX.IntrinsicElements["xpl-skeleton"] & JSXBase.HTMLAttributes<HTMLXplSkeletonElement>;
|
|
4721
6118
|
"xpl-slideout": LocalJSX.IntrinsicElements["xpl-slideout"] & JSXBase.HTMLAttributes<HTMLXplSlideoutElement>;
|
|
6119
|
+
"xpl-spotlight": LocalJSX.IntrinsicElements["xpl-spotlight"] & JSXBase.HTMLAttributes<HTMLXplSpotlightElement>;
|
|
4722
6120
|
"xpl-tab": LocalJSX.IntrinsicElements["xpl-tab"] & JSXBase.HTMLAttributes<HTMLXplTabElement>;
|
|
4723
6121
|
"xpl-tab-panel": LocalJSX.IntrinsicElements["xpl-tab-panel"] & JSXBase.HTMLAttributes<HTMLXplTabPanelElement>;
|
|
4724
6122
|
"xpl-table": LocalJSX.IntrinsicElements["xpl-table"] & JSXBase.HTMLAttributes<HTMLXplTableElement>;
|
|
@@ -4730,6 +6128,46 @@ declare module "@stencil/core" {
|
|
|
4730
6128
|
"xpl-toggle": LocalJSX.IntrinsicElements["xpl-toggle"] & JSXBase.HTMLAttributes<HTMLXplToggleElement>;
|
|
4731
6129
|
"xpl-toolbar": LocalJSX.IntrinsicElements["xpl-toolbar"] & JSXBase.HTMLAttributes<HTMLXplToolbarElement>;
|
|
4732
6130
|
"xpl-tooltip": LocalJSX.IntrinsicElements["xpl-tooltip"] & JSXBase.HTMLAttributes<HTMLXplTooltipElement>;
|
|
6131
|
+
/**
|
|
6132
|
+
* Horizontal top navigation with **`left-aside`** and a **right rail**: **`right-aside`** then **user menu**
|
|
6133
|
+
* (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`**).
|
|
6134
|
+
* 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.
|
|
6135
|
+
* **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).
|
|
6136
|
+
* **`xpl-top-nav-item`** **`slot="dropdown"`** uses document **capture** for **Escape** first; the shell uses **bubble**
|
|
6137
|
+
* on **`ownerDocument`** so nested dropdowns close before the drawer.
|
|
6138
|
+
* **Theming:** The host always includes Foundation’s **`dark`** class so **`--xpl-*`** purpose tokens under this subtree
|
|
6139
|
+
* resolve to dark-mode values even when the page root is light. Floating overlays (e.g. **`xpl-popover`** / **`xpl-dropdown`**
|
|
6140
|
+
* content teleported outside the host) do not inherit this scope — add **`dark`** on those panels if they should match.
|
|
6141
|
+
* **Layout:** **`right-aside`** and the user-menu region are wrapped internally (**`.xpl-top-nav__right-lead`**, etc.).
|
|
6142
|
+
* Consumers should not add those BEM classes — slot content only.
|
|
6143
|
+
* **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.
|
|
6144
|
+
* **Narrow / mobile** (same breakpoint as above): **`slot="left-aside"`** is **hidden** in the bar until **`nav-control`**
|
|
6145
|
+
* is set **and** the drawer is open (floating panel per Figma). **Without **`nav-control`**, there is no mobile drawer** —
|
|
6146
|
+
* primary links remain hidden below **`md`** until the viewport is wide enough for the horizontal bar. The built-in **brand**
|
|
6147
|
+
* stays in the top bar (**hamburger → brand** when **`nav-control`** is set). **`right-aside`** is hidden in the bar on narrow
|
|
6148
|
+
* viewports (**`top-nav.css`**, one pixel below Tailwind **`md`**); duplicate those actions into **`xpl-nav-header-menu`**
|
|
6149
|
+
* **`slot="right-aside-mobile"`** (below profile, above the list; narrow-only CSS in **`top-nav.css`**) per Figma.
|
|
6150
|
+
* **Account menu vs drawer:** Opening the built-in account **`xpl-popover`** while the mobile drawer is open **closes the drawer**
|
|
6151
|
+
* and emits **`navOpen(false)`** so the two layers do not stack.
|
|
6152
|
+
*/
|
|
6153
|
+
"xpl-top-nav": LocalJSX.IntrinsicElements["xpl-top-nav"] & JSXBase.HTMLAttributes<HTMLXplTopNavElement>;
|
|
6154
|
+
/**
|
|
6155
|
+
* Single nav row for **`xpl-top-nav`** / **`xpl-nav-header-menu`**. The host uses **`role="listitem"`** when the row
|
|
6156
|
+
* participates in a list: a **`role="list"`** parent, **`slot="left-aside"`** on **`xpl-top-nav`** (list host is
|
|
6157
|
+
* **`.xpl-top-nav__left-primary`** while slotted nodes stay light-DOM children of **`xpl-top-nav`**), or default-slot rows
|
|
6158
|
+
* under **`xpl-nav-header-menu`**. That flag is
|
|
6159
|
+
* kept in **`@State`** and refreshed after render plus via **`MutationObserver`** on the host (**`class`**, **`slot`**) and
|
|
6160
|
+
* on **`parentElement`** (**`role`**) or on **`.xpl-top-nav__left-primary`** (**`role`**) for **`slot="left-aside"`** under **`xpl-top-nav`**) so DOM context changes
|
|
6161
|
+
* without a full reconnect still re-sync. The internal
|
|
6162
|
+
* **`xpl-top-nav__brand`** row omits **`listitem`** (it sits in **`.xpl-top-nav__brand-bar`**, not **`.xpl-top-nav__left-primary`**),
|
|
6163
|
+
* as do **`slot="right-aside-mobile"`** rows (not a list). **`slot="dropdown"`** uses a local **`.xpl-top-nav-item__dropdown`**
|
|
6164
|
+
* panel (not **`xpl-dropdown`**); see **`TECH_DEBT.md`**.
|
|
6165
|
+
* **Default slot (no `label`):** do not put **`xpl-top-nav-item__inner`** or other **`xpl-top-nav-item__*`** classes on
|
|
6166
|
+
* custom trigger content — the component renders the inner wrapper and BEM elements.
|
|
6167
|
+
* **Theming:** The host always includes Foundation’s **`dark`** class so **`--xpl-*`** purpose tokens resolve to dark-mode
|
|
6168
|
+
* values even when the page root is light (consistent with **`xpl-top-nav`**).
|
|
6169
|
+
*/
|
|
6170
|
+
"xpl-top-nav-item": LocalJSX.IntrinsicElements["xpl-top-nav-item"] & JSXBase.HTMLAttributes<HTMLXplTopNavItemElement>;
|
|
4733
6171
|
"xpl-utility-bar": LocalJSX.IntrinsicElements["xpl-utility-bar"] & JSXBase.HTMLAttributes<HTMLXplUtilityBarElement>;
|
|
4734
6172
|
}
|
|
4735
6173
|
}
|