@xplortech/apollo-core 2.6.0 → 2.7.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.typings/apollo-components.html-data.json +737 -63
- package/build/style.css +5415 -1805
- package/dist/apollo-core/apollo-core.css +62 -22
- package/dist/apollo-core/apollo-core.esm.js +1 -1
- package/dist/apollo-core/{p-8a1affce.entry.js → p-084d26ed.entry.js} +1 -1
- package/dist/apollo-core/p-146d5d55.entry.js +1 -0
- package/dist/apollo-core/p-16742606.entry.js +1 -0
- package/dist/apollo-core/{p-42016063.entry.js → p-28d12fd3.entry.js} +1 -1
- package/dist/apollo-core/p-3eb5eb7c.entry.js +1 -0
- package/dist/apollo-core/p-4882f0bd.entry.js +1 -0
- package/dist/apollo-core/p-64b34268.entry.js +1 -0
- package/dist/apollo-core/p-6c956d4e.entry.js +1 -0
- package/dist/apollo-core/p-71b75f36.entry.js +1 -0
- package/dist/apollo-core/{p-02167464.entry.js → p-7eb86c63.entry.js} +1 -1
- package/dist/apollo-core/{p-1fd3dc87.entry.js → p-84254a24.entry.js} +1 -1
- package/dist/apollo-core/p-9f2a0321.entry.js +1 -0
- package/dist/apollo-core/{p-C_Z2nG0p.js → p-C7bgJs6C.js} +2 -2
- package/dist/apollo-core/p-cde83ab0.entry.js +1 -0
- package/dist/apollo-core/p-e7363036.entry.js +1 -0
- package/dist/cjs/apollo-core.cjs.js +3 -3
- package/dist/cjs/{index-DH6pgWru.js → index-BQ97-AWw.js} +18 -15
- package/dist/cjs/loader.cjs.js +2 -2
- package/dist/cjs/xpl-accordion.cjs.entry.js +3 -3
- package/dist/cjs/xpl-application-shell.cjs.entry.js +2 -2
- package/dist/cjs/{xpl-avatar_47.cjs.entry.js → xpl-avatar_61.cjs.entry.js} +6096 -1461
- package/dist/cjs/xpl-button-row.cjs.entry.js +2 -2
- package/dist/cjs/xpl-calendar.cjs.entry.js +2 -2
- package/dist/cjs/xpl-dynamic-table-cell.cjs.entry.js +3 -3
- package/dist/cjs/xpl-dynamic-table-row.cjs.entry.js +3 -3
- package/dist/cjs/xpl-dynamic-table.cjs.entry.js +2 -2
- package/dist/cjs/xpl-grid-item.cjs.entry.js +2 -2
- package/dist/cjs/xpl-grid.cjs.entry.js +2 -2
- package/dist/cjs/xpl-large-card.cjs.entry.js +2 -2
- package/dist/cjs/xpl-main-nav.cjs.entry.js +2 -2
- package/dist/cjs/xpl-toggle.cjs.entry.js +4 -4
- package/dist/cjs/xpl-toolbar.cjs.entry.js +3 -3
- package/dist/collection/collection-manifest.json +18 -7
- package/dist/collection/components/xpl-accordion/xpl-accordion.js +2 -2
- package/dist/collection/components/xpl-application-shell/xpl-application-shell.js +1 -1
- package/dist/collection/components/xpl-avatar/avatar.stories.js +122 -107
- package/dist/collection/components/xpl-avatar/xpl-avatar.js +249 -15
- package/dist/collection/components/xpl-backdrop/xpl-backdrop.js +1 -1
- package/dist/collection/components/xpl-badge/badge.stories.js +1 -33
- package/dist/collection/components/xpl-badge/xpl-badge.js +1 -1
- package/dist/collection/components/xpl-banner/xpl-banner.js +4 -3
- package/dist/collection/components/xpl-breadcrumbs/xpl-breadcrumb-item/xpl-breadcrumb-item.js +1 -1
- package/dist/collection/components/xpl-breadcrumbs/xpl-breadcrumbs/xpl-breadcrumbs.js +1 -1
- package/dist/collection/components/xpl-button/xpl-button.js +21 -3
- package/dist/collection/components/xpl-button-row/xpl-button-row.js +1 -1
- package/dist/collection/components/xpl-calendar/xpl-calendar.js +1 -1
- package/dist/collection/components/xpl-checkbox/xpl-checkbox.js +47 -25
- package/dist/collection/components/xpl-choicelist/xpl-choicelist.js +1 -1
- package/dist/collection/components/xpl-content-area/xpl-content-area.js +1 -1
- package/dist/collection/components/xpl-dashboard/xpl-dashboard.js +1 -1
- package/dist/collection/components/xpl-data-card/xpl-data-card.js +2 -2
- package/dist/collection/components/xpl-divider/xpl-divider.js +1 -1
- package/dist/collection/components/xpl-dropdown/xpl-dropdown-group/xpl-dropdown-group.js +1 -1
- package/dist/collection/components/xpl-dropdown/xpl-dropdown-heading/xpl-dropdown-heading.js +1 -1
- package/dist/collection/components/xpl-dropdown/xpl-dropdown-option/xpl-dropdown-option.js +2 -2
- package/dist/collection/components/xpl-dropdown/xpl-dropdown.js +2 -2
- package/dist/collection/components/xpl-dynamic-table/xpl-dynamic-table.js +1 -1
- package/dist/collection/components/xpl-dynamic-table-cell/xpl-dynamic-table-cell.js +2 -2
- package/dist/collection/components/xpl-dynamic-table-row/xpl-dynamic-table-row.js +2 -2
- package/dist/collection/components/xpl-grid/xpl-grid.js +1 -1
- package/dist/collection/components/xpl-grid-item/xpl-grid-item.js +1 -1
- package/dist/collection/components/xpl-header-accordion/xpl-header-accordion.js +46 -53
- package/dist/collection/components/xpl-icon/xpl-icon.js +2 -2
- package/dist/collection/components/xpl-input/input.stories.js +96 -1
- package/dist/collection/components/xpl-input/xpl-input-color/xpl-input-color.js +8 -8
- package/dist/collection/components/xpl-input/xpl-input-date/xpl-input-date.js +3 -3
- package/dist/collection/components/xpl-input/xpl-input-file/xpl-input-file.js +4 -4
- package/dist/collection/components/xpl-input/xpl-input-phone/xpl-input-phone.js +5 -5
- package/dist/collection/components/xpl-input/xpl-input-search/xpl-input-search.js +485 -0
- package/dist/collection/components/xpl-input/xpl-input-time/xpl-input-time.js +2 -2
- package/dist/collection/components/xpl-input/xpl-input.js +130 -18
- package/dist/collection/components/xpl-large-card/xpl-large-card.js +1 -1
- package/dist/collection/components/xpl-list/list.stories.js +300 -63
- package/dist/collection/components/xpl-list/xpl-list-item/xpl-list-item.js +818 -0
- package/dist/collection/components/xpl-list/xpl-list.js +579 -21
- package/dist/collection/components/xpl-main-nav/xpl-main-nav.js +1 -1
- package/dist/collection/components/xpl-modal/xpl-modal.js +1 -1
- package/dist/collection/components/xpl-nav-item/xpl-nav-item.js +2 -2
- package/dist/collection/components/xpl-pagination/xpl-pagination.js +3 -3
- package/dist/collection/components/xpl-panel/panel.stories.js +5 -3
- package/dist/collection/components/xpl-panel/xpl-panel.js +3 -3
- package/dist/collection/components/xpl-popover/xpl-popover.js +4 -4
- package/dist/collection/components/xpl-progress-bar/xpl-progress-bar.js +2 -2
- package/dist/collection/components/xpl-progress-indicator/progress-indicator.stories.js +118 -0
- package/dist/collection/components/xpl-progress-indicator/xpl-progress-indicator.js +171 -0
- package/dist/collection/components/xpl-radio/xpl-radio.js +3 -3
- package/dist/collection/components/xpl-secondary-nav/xpl-secondary-nav.js +1 -1
- package/dist/collection/components/xpl-select/xpl-select.js +6 -6
- package/dist/collection/components/xpl-side-nav/xpl-side-nav-item/xpl-side-nav-item.js +2 -2
- package/dist/collection/components/xpl-side-nav/xpl-side-nav.js +2 -2
- package/dist/collection/components/xpl-skeleton/xpl-skeleton.js +1 -1
- package/dist/collection/components/xpl-slideout/xpl-slideout.js +1 -1
- package/dist/collection/components/xpl-spotlight/spotlight.stories.js +385 -0
- package/dist/collection/components/xpl-spotlight/xpl-spotlight.js +1085 -0
- package/dist/collection/components/xpl-tab/xpl-tab.js +261 -8
- package/dist/collection/components/xpl-tab-panel/xpl-tab-panel.js +22 -15
- package/dist/collection/components/xpl-table/table.stories.js +319 -67
- package/dist/collection/components/xpl-table/utils/move-row-dom.js +50 -0
- package/dist/collection/components/xpl-table/utils/table-internal.js +58 -0
- package/dist/collection/components/xpl-table/xpl-table-body/xpl-table-body.js +7 -0
- package/dist/collection/components/xpl-table/xpl-table-cell/xpl-table-cell.js +155 -0
- package/dist/collection/components/xpl-table/xpl-table-footer/xpl-table-footer.js +7 -0
- package/dist/collection/components/xpl-table/xpl-table-footer-cell/xpl-table-footer-cell.js +37 -0
- package/dist/collection/components/xpl-table/xpl-table-header/table-header.stories.js +131 -0
- package/dist/collection/components/xpl-table/xpl-table-header/xpl-table-header.js +7 -0
- package/dist/collection/components/xpl-table/xpl-table-header-cell/table-header-cell.stories.js +105 -0
- package/dist/collection/components/xpl-table/xpl-table-header-cell/xpl-table-header-cell.js +402 -0
- package/dist/collection/components/xpl-table/xpl-table-row/xpl-table-row.js +121 -0
- package/dist/collection/components/xpl-table/xpl-table.js +1448 -143
- package/dist/collection/components/xpl-tabs/segment-control.stories.js +31 -0
- package/dist/collection/components/xpl-tabs/tabs.shared.js +156 -0
- package/dist/collection/components/xpl-tabs/tabs.stories.js +10 -60
- package/dist/collection/components/xpl-tabs/xpl-tabs.js +338 -62
- package/dist/collection/components/xpl-tag/tag.stories.js +153 -0
- package/dist/collection/components/xpl-tag/xpl-tag.js +312 -9
- package/dist/collection/components/xpl-toast/xpl-toast.js +2 -2
- package/dist/collection/components/xpl-toggle/xpl-toggle.js +3 -3
- package/dist/collection/components/xpl-toolbar/xpl-toolbar.js +2 -2
- package/dist/collection/components/xpl-tooltip/xpl-tooltip.js +1 -1
- package/dist/collection/components/xpl-top-nav/top-nav.stories.js +625 -0
- package/dist/collection/components/xpl-top-nav/xpl-nav-header-menu/xpl-nav-header-menu.js +122 -0
- package/dist/collection/components/xpl-top-nav/xpl-top-nav-item/xpl-top-nav-item.js +481 -0
- package/dist/collection/components/xpl-top-nav/xpl-top-nav.js +433 -0
- package/dist/collection/components/xpl-utility-bar/xpl-utility-bar.js +1 -1
- package/dist/collection/utils/lifecycle.js +79 -0
- package/dist/collection/utils/tab-a11y-ids.js +22 -0
- package/dist/components/floating-ui.dom.js +1 -0
- package/dist/components/index.js +1 -1
- package/dist/components/lifecycle.js +1 -0
- package/dist/components/tab-a11y-ids.js +1 -0
- package/dist/components/xpl-accordion.js +1 -1
- package/dist/components/xpl-application-shell.js +1 -1
- package/dist/components/xpl-avatar2.js +1 -1
- package/dist/components/xpl-backdrop2.js +1 -1
- package/dist/components/xpl-badge2.js +1 -1
- package/dist/components/xpl-banner.js +1 -1
- package/dist/components/xpl-breadcrumb-item.js +1 -1
- package/dist/components/xpl-breadcrumbs.js +1 -1
- package/dist/components/xpl-button-row.js +1 -1
- package/dist/components/xpl-button2.js +1 -1
- package/dist/components/xpl-calendar.js +1 -1
- package/dist/components/xpl-checkbox2.js +1 -1
- package/dist/components/xpl-choicelist.js +1 -1
- package/dist/components/xpl-content-area.js +1 -1
- package/dist/components/xpl-dashboard.js +1 -1
- package/dist/components/xpl-data-card.js +1 -1
- package/dist/components/xpl-divider2.js +1 -1
- package/dist/components/xpl-dropdown-group2.js +1 -1
- package/dist/components/xpl-dropdown-heading2.js +1 -1
- package/dist/components/xpl-dropdown-option2.js +1 -1
- package/dist/components/xpl-dropdown2.js +1 -1
- package/dist/components/xpl-dynamic-table-cell.js +1 -1
- package/dist/components/xpl-dynamic-table-row.js +1 -1
- package/dist/components/xpl-dynamic-table.js +1 -1
- package/dist/components/xpl-grid-item.js +1 -1
- package/dist/components/xpl-grid.js +1 -1
- package/dist/components/xpl-header-accordion.js +1 -1
- package/dist/components/xpl-icon2.js +1 -1
- package/dist/components/xpl-input-date2.js +1 -1
- package/dist/components/xpl-input-file2.js +1 -1
- package/dist/components/xpl-input-search.d.ts +11 -0
- package/dist/components/xpl-input-search.js +1 -0
- package/dist/components/xpl-input-search2.js +1 -0
- package/dist/components/xpl-input2.js +1 -1
- package/dist/components/xpl-large-card.js +1 -1
- package/dist/components/{xpl-progress.d.ts → xpl-list-item.d.ts} +4 -4
- package/dist/components/xpl-list-item.js +1 -0
- package/dist/components/xpl-list-item2.js +1 -0
- package/dist/components/xpl-list.js +1 -1
- package/dist/components/xpl-main-nav.js +1 -1
- package/dist/components/xpl-modal.js +1 -1
- package/dist/components/xpl-nav-header-menu.d.ts +11 -0
- package/dist/components/xpl-nav-header-menu.js +1 -0
- package/dist/components/xpl-nav-item.js +1 -1
- package/dist/components/xpl-pagination.js +1 -1
- package/dist/components/xpl-panel.js +1 -1
- package/dist/components/xpl-popover2.js +1 -1
- package/dist/components/xpl-progress-bar.js +1 -1
- package/dist/components/xpl-progress-indicator.d.ts +11 -0
- package/dist/components/xpl-progress-indicator.js +1 -0
- package/dist/components/xpl-radio2.js +1 -1
- package/dist/components/xpl-secondary-nav.js +1 -1
- package/dist/components/xpl-select2.js +1 -1
- package/dist/components/xpl-side-nav-item.js +1 -1
- package/dist/components/xpl-side-nav.js +1 -1
- package/dist/components/xpl-skeleton.js +1 -1
- package/dist/components/xpl-slideout.js +1 -1
- package/dist/components/xpl-spotlight.d.ts +11 -0
- package/dist/components/xpl-spotlight.js +1 -0
- package/dist/components/xpl-tab-panel.js +1 -1
- package/dist/components/xpl-tab.js +1 -1
- package/dist/components/xpl-table-body.d.ts +11 -0
- package/dist/components/xpl-table-body.js +1 -0
- package/dist/components/xpl-table-cell.d.ts +11 -0
- package/dist/components/xpl-table-cell.js +1 -0
- package/dist/components/xpl-table-cell2.js +1 -0
- package/dist/components/xpl-table-footer-cell.d.ts +11 -0
- package/dist/components/xpl-table-footer-cell.js +1 -0
- package/dist/components/xpl-table-footer-cell2.js +1 -0
- package/dist/components/xpl-table-footer.d.ts +11 -0
- package/dist/components/xpl-table-footer.js +1 -0
- package/dist/components/xpl-table-header-cell.js +1 -1
- package/dist/components/xpl-table-header-cell2.js +1 -0
- package/dist/components/xpl-table-header.js +1 -1
- package/dist/components/xpl-table-row.d.ts +11 -0
- package/dist/components/xpl-table-row.js +1 -0
- package/dist/components/xpl-table.js +1 -1
- package/dist/components/xpl-tabs.js +1 -1
- package/dist/components/xpl-tag2.js +1 -1
- package/dist/components/xpl-toast.js +1 -1
- package/dist/components/xpl-toggle.js +1 -1
- package/dist/components/xpl-toolbar.js +1 -1
- package/dist/components/xpl-tooltip2.js +1 -1
- package/dist/components/xpl-top-nav-item.d.ts +11 -0
- package/dist/components/xpl-top-nav-item.js +1 -0
- package/dist/components/xpl-top-nav-item2.js +1 -0
- package/dist/components/xpl-top-nav.d.ts +11 -0
- package/dist/components/xpl-top-nav.js +1 -0
- package/dist/components/xpl-utility-bar.js +1 -1
- package/dist/docs/xpl-avatar/readme.md +289 -15
- package/dist/docs/xpl-badge/readme.md +14 -9
- package/dist/docs/xpl-banner/readme.md +48 -11
- package/dist/docs/xpl-button/readme.md +28 -18
- package/dist/docs/xpl-calendar/readme.md +1 -1
- package/dist/docs/xpl-checkbox/readme.md +19 -16
- package/dist/docs/xpl-divider/readme.md +6 -4
- package/dist/docs/xpl-dropdown/readme.md +1 -1
- package/dist/docs/xpl-dynamic-table/readme.md +22 -19
- package/dist/docs/xpl-dynamic-table-cell/readme.md +20 -18
- package/dist/docs/xpl-dynamic-table-row/readme.md +21 -19
- package/dist/docs/xpl-icon/readme.md +15 -3
- package/dist/docs/xpl-input/readme.md +66 -41
- package/dist/docs/xpl-input/xpl-input-color/readme.md +1 -0
- package/dist/docs/xpl-input/xpl-input-phone/readme.md +1 -0
- package/dist/docs/xpl-input/xpl-input-search/readme.md +175 -0
- package/dist/docs/xpl-input/xpl-input-time/readme.md +1 -0
- package/dist/docs/xpl-list/readme.md +320 -10
- package/dist/docs/xpl-list/xpl-list-item/readme.md +99 -0
- package/dist/docs/xpl-pagination/readme.md +1 -0
- package/dist/docs/xpl-panel/readme.md +108 -17
- package/dist/docs/xpl-popover/readme.md +2 -0
- package/dist/docs/xpl-progress-indicator/readme.md +234 -0
- package/dist/docs/xpl-radio/readme.md +6 -4
- package/dist/docs/xpl-select/readme.md +2 -1
- package/dist/docs/xpl-side-nav/readme.md +2 -2
- package/dist/docs/xpl-slideout/readme.md +1 -1
- package/dist/docs/xpl-spotlight/readme.md +235 -0
- package/dist/docs/xpl-tab/readme.md +43 -7
- package/dist/docs/xpl-tab-panel/readme.md +42 -0
- package/dist/docs/xpl-table/readme.md +110 -46
- package/dist/docs/xpl-table/xpl-table-body/readme.md +10 -0
- package/dist/docs/xpl-table/xpl-table-cell/readme.md +33 -0
- package/dist/docs/xpl-table/xpl-table-footer/readme.md +10 -0
- package/dist/docs/xpl-table/xpl-table-footer-cell/readme.md +30 -0
- package/dist/docs/{xpl-table-header → xpl-table/xpl-table-header}/readme.md +13 -13
- package/dist/docs/xpl-table/xpl-table-header-cell/readme.md +66 -0
- package/dist/docs/xpl-table/xpl-table-row/readme.md +19 -0
- package/dist/docs/xpl-tabs/readme.md +62 -8
- package/dist/docs/xpl-tag/readme.md +379 -4
- package/dist/docs/xpl-toast/readme.md +1 -1
- package/dist/docs/xpl-top-nav/readme.md +179 -0
- package/dist/docs/xpl-top-nav/xpl-nav-header-menu/readme.md +81 -0
- package/dist/docs/xpl-top-nav/xpl-top-nav-item/readme.md +87 -0
- package/dist/esm/apollo-core.js +4 -4
- package/dist/esm/{index-C_Z2nG0p.js → index-C7bgJs6C.js} +18 -16
- package/dist/esm/loader.js +3 -3
- package/dist/esm/xpl-accordion.entry.js +3 -3
- package/dist/esm/xpl-application-shell.entry.js +2 -2
- package/dist/esm/{xpl-avatar_47.entry.js → xpl-avatar_61.entry.js} +6082 -1461
- package/dist/esm/xpl-button-row.entry.js +2 -2
- package/dist/esm/xpl-calendar.entry.js +2 -2
- package/dist/esm/xpl-dynamic-table-cell.entry.js +3 -3
- package/dist/esm/xpl-dynamic-table-row.entry.js +3 -3
- package/dist/esm/xpl-dynamic-table.entry.js +2 -2
- package/dist/esm/xpl-grid-item.entry.js +2 -2
- package/dist/esm/xpl-grid.entry.js +2 -2
- package/dist/esm/xpl-large-card.entry.js +2 -2
- package/dist/esm/xpl-main-nav.entry.js +2 -2
- package/dist/esm/xpl-toggle.entry.js +4 -4
- package/dist/esm/xpl-toolbar.entry.js +3 -3
- package/dist/types/components/xpl-avatar/avatar.stories.d.ts +88 -29
- package/dist/types/components/xpl-avatar/xpl-avatar.d.ts +29 -2
- package/dist/types/components/xpl-badge/badge.stories.d.ts +0 -19
- package/dist/types/components/xpl-button/xpl-button.d.ts +7 -0
- package/dist/types/components/xpl-checkbox/xpl-checkbox.d.ts +4 -3
- package/dist/types/components/xpl-header-accordion/xpl-header-accordion.d.ts +9 -10
- package/dist/types/components/xpl-input/input.stories.d.ts +1 -0
- package/dist/types/components/xpl-input/xpl-input-search/xpl-input-search.d.ts +39 -0
- package/dist/types/components/xpl-input/xpl-input.d.ts +13 -5
- package/dist/types/components/xpl-list/list.stories.d.ts +299 -13
- package/dist/types/components/xpl-list/listitem.d.ts +13 -0
- package/dist/types/components/xpl-list/xpl-list-item/xpl-list-item.d.ts +71 -0
- package/dist/types/components/xpl-list/xpl-list.d.ts +55 -2
- package/dist/types/components/xpl-panel/panel.stories.d.ts +2 -0
- package/dist/types/components/xpl-progress-indicator/progress-indicator.stories.d.ts +62 -0
- package/dist/types/components/xpl-progress-indicator/xpl-progress-indicator.d.ts +11 -0
- package/dist/types/components/xpl-spotlight/spotlight.stories.d.ts +197 -0
- package/dist/types/components/xpl-spotlight/xpl-spotlight.d.ts +101 -0
- package/dist/types/components/xpl-tab/xpl-tab.d.ts +14 -1
- package/dist/types/components/xpl-tab-panel/xpl-tab-panel.d.ts +2 -1
- package/dist/types/components/xpl-table/table.stories.d.ts +161 -19
- package/dist/types/components/xpl-table/utils/move-row-dom.d.ts +3 -0
- package/dist/types/components/xpl-table/utils/table-internal.d.ts +8 -0
- package/dist/types/components/xpl-table/xpl-table-body/xpl-table-body.d.ts +3 -0
- package/dist/types/components/xpl-table/xpl-table-cell/xpl-table-cell.d.ts +11 -0
- package/dist/types/components/xpl-table/xpl-table-footer/xpl-table-footer.d.ts +3 -0
- package/dist/types/components/xpl-table/xpl-table-footer-cell/xpl-table-footer-cell.d.ts +4 -0
- package/dist/types/components/{xpl-table-header → xpl-table/xpl-table-header}/table-header.stories.d.ts +13 -16
- package/dist/types/components/{xpl-table-header-cell → xpl-table/xpl-table-header-cell}/table-header-cell.stories.d.ts +24 -20
- package/dist/types/components/xpl-table/xpl-table-header-cell/xpl-table-header-cell.d.ts +32 -0
- package/dist/types/components/xpl-table/xpl-table-row/xpl-table-row.d.ts +13 -0
- package/dist/types/components/xpl-table/xpl-table.d.ts +123 -21
- package/dist/types/components/xpl-tabs/segment-control.stories.d.ts +112 -0
- package/dist/types/components/xpl-tabs/tabs.shared.d.ts +156 -0
- package/dist/types/components/xpl-tabs/tabs.stories.d.ts +65 -12
- package/dist/types/components/xpl-tabs/xpl-tabs.d.ts +37 -18
- package/dist/types/components/xpl-tag/tag.stories.d.ts +65 -0
- package/dist/types/components/xpl-tag/xpl-tag.d.ts +36 -1
- package/dist/types/components/xpl-top-nav/top-nav.stories.d.ts +471 -0
- package/dist/types/components/xpl-top-nav/xpl-nav-header-menu/xpl-nav-header-menu.d.ts +18 -0
- package/dist/types/components/xpl-top-nav/xpl-top-nav-item/xpl-top-nav-item.d.ts +48 -0
- package/dist/types/components/xpl-top-nav/xpl-top-nav.d.ts +51 -0
- package/dist/types/components.d.ts +1888 -148
- package/dist/types/utils/lifecycle.d.ts +16 -0
- package/dist/types/utils/tab-a11y-ids.d.ts +4 -0
- package/package.json +3 -3
- package/dist/apollo-core/p-0bce3874.entry.js +0 -1
- package/dist/apollo-core/p-5549756c.entry.js +0 -1
- package/dist/apollo-core/p-56fa4941.entry.js +0 -1
- package/dist/apollo-core/p-76c324da.entry.js +0 -1
- package/dist/apollo-core/p-7a3224b4.entry.js +0 -1
- package/dist/apollo-core/p-7e924697.entry.js +0 -1
- package/dist/apollo-core/p-9efca9e1.entry.js +0 -1
- package/dist/apollo-core/p-b252b380.entry.js +0 -1
- package/dist/apollo-core/p-c91daac1.entry.js +0 -1
- package/dist/apollo-core/p-d9b62508.entry.js +0 -1
- package/dist/apollo-core/p-eaea16d1.entry.js +0 -1
- package/dist/apollo-core/p-eed13bca.entry.js +0 -1
- package/dist/apollo-core/p-f5af9539.entry.js +0 -1
- package/dist/cjs/xpl-list.cjs.entry.js +0 -32
- package/dist/cjs/xpl-table-header-cell.cjs.entry.js +0 -57
- package/dist/cjs/xpl-table-header.cjs.entry.js +0 -14
- package/dist/collection/components/xpl-progress/progress.stories.js +0 -106
- package/dist/collection/components/xpl-progress/xpl-progress.js +0 -60
- package/dist/collection/components/xpl-table-header/table-header.stories.js +0 -126
- package/dist/collection/components/xpl-table-header/xpl-table-header.js +0 -7
- package/dist/collection/components/xpl-table-header-cell/table-header-cell.stories.js +0 -75
- package/dist/collection/components/xpl-table-header-cell/xpl-table-header-cell.js +0 -188
- package/dist/components/xpl-progress.js +0 -1
- package/dist/docs/xpl-progress/readme.md +0 -22
- package/dist/docs/xpl-table-header-cell/readme.md +0 -47
- package/dist/esm/xpl-list.entry.js +0 -30
- package/dist/esm/xpl-table-header-cell.entry.js +0 -55
- package/dist/esm/xpl-table-header.entry.js +0 -12
- package/dist/types/components/xpl-progress/progress.stories.d.ts +0 -38
- package/dist/types/components/xpl-progress/xpl-progress.d.ts +0 -6
- package/dist/types/components/xpl-table-header-cell/xpl-table-header-cell.d.ts +0 -13
- /package/dist/types/components/{xpl-table-header → xpl-table/xpl-table-header}/xpl-table-header.d.ts +0 -0
|
@@ -0,0 +1,235 @@
|
|
|
1
|
+
# xpl-spotlight
|
|
2
|
+
|
|
3
|
+
`xpl-spotlight` renders a guided-tour callout with an anchor dot, optional media, step messaging, and prop-driven footer actions. It can either render inline using the requested `anchorPosition` or attach to a target element with Floating UI when `target` is provided.
|
|
4
|
+
|
|
5
|
+
## Usage Examples
|
|
6
|
+
|
|
7
|
+
Use the built-in title/body props and default actions for a simple tour step:
|
|
8
|
+
|
|
9
|
+
```html
|
|
10
|
+
<xpl-spotlight
|
|
11
|
+
heading="Review recent activity"
|
|
12
|
+
body="Check status updates here before moving to the next step."
|
|
13
|
+
action-layout="default"
|
|
14
|
+
anchor-position="top-right"
|
|
15
|
+
current-step="2"
|
|
16
|
+
total-steps="5"
|
|
17
|
+
is-dismissible="true"
|
|
18
|
+
is-open="true"
|
|
19
|
+
primary-action-label="Next"
|
|
20
|
+
secondary-action-label="Back"
|
|
21
|
+
show-actions="true"
|
|
22
|
+
show-image="true"
|
|
23
|
+
show-steps="true"
|
|
24
|
+
target=""
|
|
25
|
+
></xpl-spotlight>
|
|
26
|
+
```
|
|
27
|
+
|
|
28
|
+
Anchor the spotlight to a specific element and provide custom media content:
|
|
29
|
+
|
|
30
|
+
```html
|
|
31
|
+
<button id="dashboard-filter-button" type="button">Filters</button>
|
|
32
|
+
|
|
33
|
+
<xpl-spotlight
|
|
34
|
+
target="#dashboard-filter-button"
|
|
35
|
+
heading="Narrow the results"
|
|
36
|
+
body="Use filters to focus on the accounts or activity that matter most."
|
|
37
|
+
current-step="1"
|
|
38
|
+
total-steps="3"
|
|
39
|
+
primary-action-label="Next"
|
|
40
|
+
secondary-action-label="Skip"
|
|
41
|
+
>
|
|
42
|
+
<div slot="image">
|
|
43
|
+
<img src="/assets/spotlight-filter-preview.png" alt="Preview of filter controls" />
|
|
44
|
+
</div>
|
|
45
|
+
</xpl-spotlight>
|
|
46
|
+
```
|
|
47
|
+
|
|
48
|
+
|
|
49
|
+
Control visibility from the parent with `is-open` and close it by responding to `dismiss`:
|
|
50
|
+
|
|
51
|
+
```html
|
|
52
|
+
<xpl-spotlight
|
|
53
|
+
id="guided-tour-step"
|
|
54
|
+
is-open="true"
|
|
55
|
+
heading="Review recent activity"
|
|
56
|
+
body="Check status updates here before moving to the next step."
|
|
57
|
+
></xpl-spotlight>
|
|
58
|
+
|
|
59
|
+
<script>
|
|
60
|
+
const spotlight = document.getElementById('guided-tour-step');
|
|
61
|
+
|
|
62
|
+
spotlight?.addEventListener('dismiss', () => {
|
|
63
|
+
spotlight.setAttribute('is-open', 'false');
|
|
64
|
+
});
|
|
65
|
+
</script>
|
|
66
|
+
```
|
|
67
|
+
|
|
68
|
+
Mirror the same layout in plain HTML when documenting or prototyping the component structure outside the custom element:
|
|
69
|
+
|
|
70
|
+
```html
|
|
71
|
+
<div class="xpl-spotlight xpl-spotlight--top-left xpl-spotlight--visible"
|
|
72
|
+
role="dialog" aria-modal="false" aria-labelledby="spotlight-title" tabindex="-1">
|
|
73
|
+
<button type="button" class="xpl-spotlight__target" aria-label="Spotlight indicator">
|
|
74
|
+
<div class="xpl-spotlight__target-outer"></div>
|
|
75
|
+
<div class="xpl-spotlight__target-inner"></div>
|
|
76
|
+
</button>
|
|
77
|
+
<div class="xpl-spotlight__dismiss">
|
|
78
|
+
<xpl-button variant="secondary" size="sm" icon-only aria-label="Dismiss tour step">
|
|
79
|
+
<xpl-icon icon="xmark" size="16"></xpl-icon>
|
|
80
|
+
</xpl-button>
|
|
81
|
+
</div>
|
|
82
|
+
<div class="xpl-spotlight__frame">
|
|
83
|
+
<div class="xpl-spotlight__image-container">
|
|
84
|
+
<img src="/assets/spotlight-preview.png" alt="Feature preview" />
|
|
85
|
+
</div>
|
|
86
|
+
<div class="xpl-spotlight__content">
|
|
87
|
+
<div class="xpl-spotlight__header">
|
|
88
|
+
<span class="xpl-spotlight__title" id="spotlight-title">Tour Title</span>
|
|
89
|
+
<p class="xpl-spotlight__body">Copy about the feature and/or functionality the dot is pointing to.</p>
|
|
90
|
+
</div>
|
|
91
|
+
<div class="xpl-spotlight__actions xpl-spotlight__actions--dual xpl-spotlight__actions--with-steps">
|
|
92
|
+
<div class="xpl-spotlight__action-slot xpl-spotlight__action-slot--secondary">
|
|
93
|
+
<xpl-button variant="secondary">Back</xpl-button>
|
|
94
|
+
</div>
|
|
95
|
+
<span class="xpl-spotlight__step-text">2 of 5</span>
|
|
96
|
+
<div class="xpl-spotlight__action-slot xpl-spotlight__action-slot--primary">
|
|
97
|
+
<xpl-button variant="primary">Next</xpl-button>
|
|
98
|
+
</div>
|
|
99
|
+
</div>
|
|
100
|
+
</div>
|
|
101
|
+
</div>
|
|
102
|
+
</div>
|
|
103
|
+
```
|
|
104
|
+
|
|
105
|
+
## Accessibility
|
|
106
|
+
|
|
107
|
+
`xpl-spotlight` renders with `role="dialog"` and `aria-modal="false"` so assistive technologies treat it as a **non-modal** tour callout: focus is not trapped inside the card, and users can tab to the rest of the page while the step is open. The accessible name comes from the title region:
|
|
108
|
+
|
|
109
|
+
- When the default title is used, the generated heading element receives the internal `aria-labelledby` id.
|
|
110
|
+
- When a custom `title` slot is provided, the component assigns that same id to the first slotted title element if it does not already have one. If the slotted element already has an `id`, that value is kept and `aria-labelledby` references it (the host does not point at a missing id).
|
|
111
|
+
- When neither a `heading` prop nor a `title` slot is provided, the dialog falls back to `aria-label="Tour step"` so that assistive technologies always have an accessible name.
|
|
112
|
+
|
|
113
|
+
### Keyboard navigation
|
|
114
|
+
|
|
115
|
+
| Key | Behavior |
|
|
116
|
+
|-----|----------|
|
|
117
|
+
| `Tab` / `Shift+Tab` | Moves focus between interactive controls (dismiss button, secondary action, primary action). Focus is **not** trapped — users can tab out of the spotlight to the rest of the page. |
|
|
118
|
+
| `Escape` | Emits `dismiss` when `isDismissible` is true and focus is inside the spotlight. Does nothing when focus is outside the component or the spotlight is closed. |
|
|
119
|
+
| `Enter` / `Space` | Activates the focused button (dismiss, primary, or secondary action) via standard `xpl-button` behavior. |
|
|
120
|
+
|
|
121
|
+
### Focus management
|
|
122
|
+
|
|
123
|
+
- **On open:** focus moves automatically to the dismiss button (if `isDismissible` is true) or the first action button. When neither a dismiss button nor action buttons are rendered, the host element itself receives focus via `tabindex="-1"`.
|
|
124
|
+
- **On close:** focus returns to the element that was focused before the spotlight opened, provided that element is still in the DOM.
|
|
125
|
+
- The decorative anchor dot (`.xpl-spotlight__target`) is marked `aria-hidden="true"` so it is not announced or focusable.
|
|
126
|
+
|
|
127
|
+
|
|
128
|
+
## Design Tokens
|
|
129
|
+
|
|
130
|
+
The component relies on Foundation purpose tokens in `spotlight.css` so light/dark mode works without component-level `.dark` overrides.
|
|
131
|
+
|
|
132
|
+
| Property | Token |
|
|
133
|
+
|----------|-------|
|
|
134
|
+
| Card width | `var(--xpl-spotlight-width)` on the host (defined in `spotlight.css`; design-specific width until shared layout tokens exist — see `TECH_DEBT.md`) |
|
|
135
|
+
| Image region min-height | `var(--xpl-spotlight-image-min-height)` on `.xpl-spotlight__image-container` (same note as card width) |
|
|
136
|
+
| Card background | `var(--xpl-background-surface-default)` |
|
|
137
|
+
| Host stacking | `var(--xpl-z-index-800)` |
|
|
138
|
+
| Placeholder pattern | `var(--xpl-background-surface-subtle)` |
|
|
139
|
+
| Heading text | `var(--xpl-text-default)` |
|
|
140
|
+
| Body text | `var(--xpl-text-default)` |
|
|
141
|
+
| Step text | `var(--xpl-text-subdued)` |
|
|
142
|
+
| Open/closed visibility | `opacity` transition on `.xpl-spotlight--visible` |
|
|
143
|
+
| Anchor outer ring | `var(--xpl-background-surface-information-bold)` |
|
|
144
|
+
| Anchor inner dot | `var(--xpl-background-accent-default)` |
|
|
145
|
+
| Image placeholder icon/text | `var(--xpl-icon-subtle)` |
|
|
146
|
+
| Focus outline | `var(--xpl-border-focus)` |
|
|
147
|
+
| Anchored host (when `target` is set) | `position: fixed` via `.xpl-spotlight--anchored`; `left` / `top` set from Floating UI (`strategy: 'fixed'`) |
|
|
148
|
+
|
|
149
|
+
## Icon Mapping
|
|
150
|
+
|
|
151
|
+
`xpl-spotlight` uses Apollo icons for fixed controls and fallback media placeholders:
|
|
152
|
+
|
|
153
|
+
| UI area | `xpl-icon` name |
|
|
154
|
+
|---------|------------------|
|
|
155
|
+
| Dismiss button | `xmark` |
|
|
156
|
+
| Empty image placeholder, image affordance | `photo` |
|
|
157
|
+
| Empty image placeholder, video affordance | `video` |
|
|
158
|
+
|
|
159
|
+
## Deprecated props
|
|
160
|
+
|
|
161
|
+
None.
|
|
162
|
+
|
|
163
|
+
## Notes
|
|
164
|
+
|
|
165
|
+
- `showImage="false"` hides the media region even if `slot="image"` content is present.
|
|
166
|
+
- When `showImage` is left enabled and no `slot="image"` content is provided, the component renders the built-in placeholder instead of collapsing the media region.
|
|
167
|
+
- `showActions="false"` removes the default actions row entirely.
|
|
168
|
+
- `is-open="false"` keeps the host element mounted but renders no spotlight UI until it is opened again.
|
|
169
|
+
- `action-layout` defaults to `"default"`. `action-layout="default"` renders the Back/Next pair with **disabled** edge buttons at step boundaries (Back disabled on step 1, Next disabled on the last step). `action-layout="dual"` renders the Back/Next pair with **hidden** edge buttons at step boundaries. `action-layout="single"` renders a single primary action.
|
|
170
|
+
- `primary-action-label` and `secondary-action-label` control the default button text without needing action slots.
|
|
171
|
+
- `target` enables Floating UI positioning with `offset`, `flip`, `shift`, and `autoUpdate` so the spotlight follows the referenced element on resize and scroll. Default offset and shift padding match Foundation spacing (`--xpl-space-12` / `--xpl-space-8`).
|
|
172
|
+
- If `target` is missing or contains an invalid CSS selector, the component safely falls back to the requested `anchor-position` instead of throwing.
|
|
173
|
+
- **Storybook:** open **Components → Spotlight** to adjust props via controls. Set `target` to `#spotlight-story-anchor` to preview Floating UI anchoring against the demo button on the canvas. The **Design** addon links to the Apollo Web Figma file (replace the `node-id` in Storybook with the Spotlight frame when Design publishes a dedicated link).
|
|
174
|
+
|
|
175
|
+
<!-- Auto Generated Below -->
|
|
176
|
+
|
|
177
|
+
|
|
178
|
+
## Properties
|
|
179
|
+
|
|
180
|
+
| Property | Attribute | Description | Type | Default |
|
|
181
|
+
| ---------------------- | ------------------------ | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------- | ------------ |
|
|
182
|
+
| `actionLayout` | `action-layout` | 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`. | `"default" \| "dual" \| "single"` | `'default'` |
|
|
183
|
+
| `anchorPosition` | `anchor-position` | Which corner of the card the anchor dot uses when not using `target`, or as the preferred side for Floating UI. | `"bottom-left" \| "bottom-right" \| "top-left" \| "top-right"` | `'top-left'` |
|
|
184
|
+
| `body` | `body` | Body copy when the `body` slot has no slotted content. Whitespace-only values are treated as empty (no fallback paragraph). | `string` | `undefined` |
|
|
185
|
+
| `currentStep` | `current-step` | Current step index (1-based). Used with `totalSteps` for the step label and for disabling default Back/Next when `showSteps` is true. | `number` | `1` |
|
|
186
|
+
| `heading` | `heading` | Heading when the `title` slot has no slotted content. Whitespace-only values are treated as empty (no fallback title span). | `string` | `undefined` |
|
|
187
|
+
| `isDismissible` | `is-dismissible` | Whether to show the dismiss (close) control. | `boolean` | `true` |
|
|
188
|
+
| `isOpen` | `is-open` | Controls whether the spotlight is rendered. When false, the host remains in the DOM but the spotlight UI is hidden. | `boolean` | `true` |
|
|
189
|
+
| `primaryActionLabel` | `primary-action-label` | Label used for the default primary action button. Only applies when `showActions` is `true`. | `string` | `'Next'` |
|
|
190
|
+
| `secondaryActionLabel` | `secondary-action-label` | Label used for the default secondary action button. Only applies when `showActions` is `true`. | `string` | `'Back'` |
|
|
191
|
+
| `showActions` | `show-actions` | 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. | `boolean` | `true` |
|
|
192
|
+
| `showImage` | `show-image` | 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. | `boolean` | `true` |
|
|
193
|
+
| `showSteps` | `show-steps` | Whether to show the step counter between actions (`currentStep` of `totalSteps`) and whether default Back/Next use step-based disabled state. | `boolean` | `true` |
|
|
194
|
+
| `target` | `target` | 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`. | `string` | `undefined` |
|
|
195
|
+
| `totalSteps` | `total-steps` | 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. | `number` | `1` |
|
|
196
|
+
|
|
197
|
+
|
|
198
|
+
## Events
|
|
199
|
+
|
|
200
|
+
| Event | Description | Type |
|
|
201
|
+
| ----------------- | ---------------------------------------------------------------------------------------------- | ------------------- |
|
|
202
|
+
| `dismiss` | Emitted when the dismiss control is activated or Escape is pressed (when dismissible). | `CustomEvent<void>` |
|
|
203
|
+
| `primaryAction` | Emitted when the primary action control is activated (default: Next). | `CustomEvent<void>` |
|
|
204
|
+
| `secondaryAction` | Emitted when the secondary action control is activated (default: Back). | `CustomEvent<void>` |
|
|
205
|
+
| `targetClick` | Emitted when the target indicator is clicked. Consumers typically toggle `isOpen` in response. | `CustomEvent<void>` |
|
|
206
|
+
|
|
207
|
+
|
|
208
|
+
## Slots
|
|
209
|
+
|
|
210
|
+
| Slot | Description |
|
|
211
|
+
| --------- | -------------------------------------------------------------------------------------------------------------- |
|
|
212
|
+
| `"body"` | Main description; falls back to the `body` prop when the slot is empty and `body` has non-whitespace text |
|
|
213
|
+
| `"image"` | Optional media slot. When empty and `showImage` is true, the component renders a built-in placeholder instead. |
|
|
214
|
+
| `"title"` | Step title; falls back to the `heading` prop when the slot is empty and `heading` has non-whitespace text |
|
|
215
|
+
|
|
216
|
+
|
|
217
|
+
## Dependencies
|
|
218
|
+
|
|
219
|
+
### Depends on
|
|
220
|
+
|
|
221
|
+
- [xpl-button](../xpl-button)
|
|
222
|
+
- [xpl-icon](../xpl-icon)
|
|
223
|
+
|
|
224
|
+
### Graph
|
|
225
|
+
```mermaid
|
|
226
|
+
graph TD;
|
|
227
|
+
xpl-spotlight --> xpl-button
|
|
228
|
+
xpl-spotlight --> xpl-icon
|
|
229
|
+
xpl-button --> xpl-icon
|
|
230
|
+
style xpl-spotlight fill:#f9f,stroke:#333,stroke-width:4px
|
|
231
|
+
```
|
|
232
|
+
|
|
233
|
+
----------------------------------------------
|
|
234
|
+
|
|
235
|
+
*Built with [StencilJS](https://stenciljs.com/)*
|
|
@@ -1,24 +1,60 @@
|
|
|
1
1
|
# xpl-tab
|
|
2
2
|
|
|
3
|
+
`xpl-tab` is the **label / trigger** for one tab in an `xpl-tabs` group. Place each instance in the **`heading`** slot of `xpl-tabs`. The **`target`** string links this tab to the matching **`xpl-tab-panel`** (same `target` value). The parent sets **`selected`** and syncs **`value`**; you normally do not set `selected` by hand.
|
|
3
4
|
|
|
5
|
+
Underline tabs render a native **`<button role="tab">`**; segment tabs render **`xpl-button`** with the same tab semantics on the inner control. For variant-specific examples, icon usage, and token tables, see the matching section on the **Tabs** or **Segment control** Storybook page.
|
|
6
|
+
|
|
7
|
+
**`group-disabled`** is applied by `xpl-tabs` when the group has **`disabled`**; it keeps pills and underline buttons in a disabled state together with the parent.
|
|
8
|
+
|
|
9
|
+
## Accessibility
|
|
10
|
+
|
|
11
|
+
- **IDs and ARIA:** With a parent **`xpl-tabs`**, the tab control and matching **`xpl-tab-panel`** share scoped DOM ids derived from **`data-tabs-instance-id`** on the group and each pair’s **`target`** (see **`xpl-tabs`** accessibility notes). Underline tabs set **`id`**, **`role="tab"`**, **`aria-controls`**, and **`aria-selected`** on the native `<button>`. Segment tabs wrap **`xpl-button`**, which forwards **`id`**, **`role`**, and **`aria-*`** attributes to its inner `<button>` so focus and **`aria-labelledby`** stay correct.
|
|
12
|
+
- Underline tabs expose a **single focusable button** per tab.
|
|
13
|
+
- Segment tabs delegate rendering to **`xpl-button`** with the same tab semantics as underline mode; activation follows the same **`tabChange`** event.
|
|
14
|
+
- Disabled tabs are skipped when moving with arrow keys.
|
|
4
15
|
|
|
5
16
|
<!-- Auto Generated Below -->
|
|
6
17
|
|
|
7
18
|
|
|
8
19
|
## Properties
|
|
9
20
|
|
|
10
|
-
| Property
|
|
11
|
-
|
|
|
12
|
-
| `
|
|
13
|
-
| `
|
|
21
|
+
| Property | Attribute | Description | Type | Default |
|
|
22
|
+
| --------------- | --------------------- | ------------------------------------------------------------------------------------------------------------- | ------------------ | ----------- |
|
|
23
|
+
| `disabled` | `disabled` | Disables this tab (pill or underline). | `boolean` | `false` |
|
|
24
|
+
| `groupDisabled` | `data-group-disabled` | Set when the parent `xpl-tabs` has `disabled` (group-disabled). | `boolean` | `false` |
|
|
25
|
+
| `icon` | `icon` | Optional icon name for segment-style pills (`type="segment"` on parent `xpl-tabs`). Ignored for default tabs. | `string` | `undefined` |
|
|
26
|
+
| `iconPosition` | `icon-position` | Icon position for segment-style pills. | `"end" \| "start"` | `'start'` |
|
|
27
|
+
| `selected` | `selected` | Whether the tab is selected | `boolean` | `false` |
|
|
28
|
+
| `target` | `target` | The target of the tab, required for the tab to be selected | `string` | `undefined` |
|
|
14
29
|
|
|
15
30
|
|
|
16
31
|
## Events
|
|
17
32
|
|
|
18
|
-
| Event | Description
|
|
19
|
-
| ----------- |
|
|
20
|
-
| `tabChange` |
|
|
33
|
+
| Event | Description | Type |
|
|
34
|
+
| ----------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | --------------------- |
|
|
35
|
+
| `tabChange` | 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. | `CustomEvent<string>` |
|
|
36
|
+
|
|
37
|
+
|
|
38
|
+
## Slots
|
|
39
|
+
|
|
40
|
+
| Slot | Description |
|
|
41
|
+
| ---- | ---------------------------------------------------------------------------------- |
|
|
42
|
+
| | The label for the tab (or pill label when parent `xpl-tabs` has `type="segment"`). |
|
|
43
|
+
|
|
44
|
+
|
|
45
|
+
## Dependencies
|
|
46
|
+
|
|
47
|
+
### Depends on
|
|
48
|
+
|
|
49
|
+
- [xpl-button](../xpl-button)
|
|
21
50
|
|
|
51
|
+
### Graph
|
|
52
|
+
```mermaid
|
|
53
|
+
graph TD;
|
|
54
|
+
xpl-tab --> xpl-button
|
|
55
|
+
xpl-button --> xpl-icon
|
|
56
|
+
style xpl-tab fill:#f9f,stroke:#333,stroke-width:4px
|
|
57
|
+
```
|
|
22
58
|
|
|
23
59
|
----------------------------------------------
|
|
24
60
|
|
|
@@ -1,6 +1,41 @@
|
|
|
1
1
|
# xpl-tab-panel
|
|
2
2
|
|
|
3
|
+
`xpl-tab-panel` is the **content region** for one tab. Place each panel in the **`panel`** slot of `xpl-tabs` and set **`target`** to the same string as its paired **`xpl-tab`**. Only the panel whose `target` matches the group’s selection is visible; others stay hidden via CSS until selected.
|
|
3
4
|
|
|
5
|
+
## When to use
|
|
6
|
+
|
|
7
|
+
- One panel per tab in the same `xpl-tabs` as the corresponding `xpl-tab`.
|
|
8
|
+
- Put any markup or other components in the **default slot** (panel body).
|
|
9
|
+
|
|
10
|
+
## Usage
|
|
11
|
+
|
|
12
|
+
```html
|
|
13
|
+
<xpl-tabs value="overview">
|
|
14
|
+
<xpl-tab slot="heading" target="overview">Overview</xpl-tab>
|
|
15
|
+
<xpl-tab slot="heading" target="activity">Activity</xpl-tab>
|
|
16
|
+
<xpl-tab-panel slot="panel" target="overview">
|
|
17
|
+
<p class="xpl-text-body">Overview content.</p>
|
|
18
|
+
</xpl-tab-panel>
|
|
19
|
+
<xpl-tab-panel slot="panel" target="activity">
|
|
20
|
+
<p class="xpl-text-body">Activity content.</p>
|
|
21
|
+
</xpl-tab-panel>
|
|
22
|
+
</xpl-tabs>
|
|
23
|
+
```
|
|
24
|
+
|
|
25
|
+
The parent **`xpl-tabs`** updates each panel’s **`selected`** state from **`value`** / user interaction; consumers typically only set **`target`** and slot content.
|
|
26
|
+
|
|
27
|
+
## Accessibility
|
|
28
|
+
|
|
29
|
+
- The host sets **`role="tabpanel"`**, a stable **`id`** (`…-panel-<target>` scoped by the parent **`xpl-tabs`** instance), and **`aria-labelledby`** referencing the paired tab control’s **`id`**. Use the same **`target`** on **`xpl-tab`** and **`xpl-tab-panel`** so the references stay aligned (see **`xpl-tabs`** accessibility section for the full id pattern).
|
|
30
|
+
- Hidden panels use display toggling (`xpl-tab-panel` / `--selected` in `tabs.css`), not `aria-hidden` on the host; panel content stays in the DOM for simpler state sync.
|
|
31
|
+
|
|
32
|
+
## Token use
|
|
33
|
+
|
|
34
|
+
| Part | Token / approach |
|
|
35
|
+
| ---- | ---------------- |
|
|
36
|
+
| Panel visibility | `tabs.css`: hidden unless `xpl-tab-panel--selected` (`display` via Tailwind `@apply`) |
|
|
37
|
+
| Default padding | `py-6` in `tabs.css` on `.xpl-tab-panel` |
|
|
38
|
+
| Inner content | Use typography classes (`xpl-text-body`, etc.) and Foundation tokens as elsewhere in Apollo |
|
|
4
39
|
|
|
5
40
|
<!-- Auto Generated Below -->
|
|
6
41
|
|
|
@@ -13,6 +48,13 @@
|
|
|
13
48
|
| `target` | `target` | The target of the tab, required for the tab to be selected | `string` | `undefined` |
|
|
14
49
|
|
|
15
50
|
|
|
51
|
+
## Slots
|
|
52
|
+
|
|
53
|
+
| Slot | Description |
|
|
54
|
+
| ---- | ------------------------------------- |
|
|
55
|
+
| | Content rendered inside of the panel. |
|
|
56
|
+
|
|
57
|
+
|
|
16
58
|
----------------------------------------------
|
|
17
59
|
|
|
18
60
|
*Built with [StencilJS](https://stenciljs.com/)*
|
|
@@ -1,46 +1,110 @@
|
|
|
1
|
-
# xpl-table
|
|
2
|
-
|
|
3
|
-
Tables are used to organize and display information from a data set.
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
1
|
+
# xpl-table
|
|
2
|
+
|
|
3
|
+
Tables are used to organize and display information from a data set.
|
|
4
|
+
|
|
5
|
+
## Rendering modes
|
|
6
|
+
|
|
7
|
+
1. **Compositional (recommended)** — Provide `xpl-table-header`, `xpl-table-body`, and optional `xpl-table-footer` with `xpl-table-row` / `xpl-table-header-cell` / `xpl-table-cell` / `xpl-table-footer-cell`. The host uses CSS grid (`role="grid"`). Column widths come from each **`xpl-table-header-cell`** (`width` in px, or `column-width` for any grid track; default `auto` / content-sized). Use `label` for an accessible name. **Sorting:** set `sortable` (and optional `sort-key`) on label header cells; `xpl-table` emits **`sortChanged`** with sort-key slugs → `asc` / `desc` / `null`. The host does **not** reorder row DOM — listen and update your data (or reorder nodes yourself), same as the main Table Storybook demo.
|
|
8
|
+
2. **Legacy data-driven** — Set `columns`, `data`, and optionally `footer` for a built-in `<table>` implementation. That path supports `isSortable` / `sortableColumns`, `multiselect`, and emits `sortChanged` / `tableSelect` (legacy can reorder rows unless you `preventDefault`). Prefer compositional markup for new work.
|
|
9
|
+
|
|
10
|
+
**Selection (compositional only):** Set `selectable` on `xpl-table` and **author the selection column in your template** so the framework that renders the table (Ember, React, Angular, etc.) owns every cell node. Required pieces:
|
|
11
|
+
|
|
12
|
+
- **Header:** one `xpl-table-header-cell` with `type="checkbox"` (tri-state “select all”).
|
|
13
|
+
- **Body:** in each `xpl-table-row`, a cell aligned with that column containing `xpl-checkbox` (value is driven from `row-id` on the row).
|
|
14
|
+
- **Footer:** if you use `xpl-table-footer`, add a leading `xpl-table-footer-cell` per row for the selection column (often empty) so column counts stay aligned.
|
|
15
|
+
|
|
16
|
+
`xpl-table` keeps `selectedRowIds`, syncs `checked` / `indeterminate` on the header and row checkboxes, sets `selected` on rows, shows the bulk toolbar, and emits `rowSelectionChange` **on the `xpl-table` element** (`bubbles: false`). From a static script, use `customElements.whenDefined('xpl-table')` before `addEventListener`. Row checkboxes get an accessible name derived from the first **non-selection** data cell in that row (e.g. `Select row, Jordan Lee`); the header uses “Select all rows” unless you set `checkbox-aria-label` on the checkbox header cell.
|
|
17
|
+
|
|
18
|
+
### Breaking change — compositional `selectable`
|
|
19
|
+
|
|
20
|
+
**Before:** Setting `selectable` alone caused the table to **inject** selection header/body/footer cells into the light DOM (including nodes marked `data-xpl-selection-managed`).
|
|
21
|
+
|
|
22
|
+
**After:** You **must** add the selection column in your own markup, as described above. `xpl-table` no longer creates or removes those cells; it only syncs selection state and emits events. If you previously relied on automatic injection, add the header checkbox column, per-row checkbox cells, and (when using a footer) leading footer cells so column counts match.
|
|
23
|
+
|
|
24
|
+
### Row reorder (`row-reorderable`, managed grip column)
|
|
25
|
+
|
|
26
|
+
When `row-reorderable` is set, Apollo can **inject** a leading reorder column with a native **button** + optional `xpl-icon` on each body row (unless you author that column yourself). Keyboard and pointer reorder share the same grip; **keyboard mode** is indicated by `aria-pressed`, updated labels, the class `xpl-table__row-drag-handle--keyboard-mode`, and optionally a **different icon**.
|
|
27
|
+
|
|
28
|
+
**Pointer drag (full row):** Body rows use CSS **`subgrid`** so `xpl-table-row` is a real grid box (like `xpl-list-item`’s row surface). When `CSS.supports('grid-template-columns','subgrid')` is true, **`draggable`** is set on **`xpl-table-row`** so the browser’s drag image matches the whole row; drag still **starts only from the grip** (pointer-down there sets the drag token—dragging from other cells is ignored). Engines without subgrid keep **`draggable`** on the grip button only.
|
|
29
|
+
|
|
30
|
+
| Attribute | When it applies | Purpose |
|
|
31
|
+
| --------- | ---------------- | ------- |
|
|
32
|
+
| `reorder-handle-icon` | Default / drag affordance | Icon name for `xpl-icon` (default `grip-dots-vertical`). Use `reorder-handle-icon=""` to omit the injected icon and use CSS or your own markup in a **custom** reorder cell instead. |
|
|
33
|
+
| `reorder-handle-icon-keyboard` | While that row is in **keyboard reorder mode** (Enter or Space on the grip) | Icon name for the same grip when the user is using **Arrow Up/Down** to move the row (default `caret-expand-y`, matching `xpl-list`). Use `reorder-handle-icon-keyboard=""` to show **no** icon in keyboard mode only. |
|
|
34
|
+
|
|
35
|
+
**Recommended for product UIs:** Set **both** attributes to your design-system icon names so drag vs keyboard modes are visually distinct. You can still add styles targeting `.xpl-table__row-drag-handle--keyboard-mode` (e.g. outline) for extra clarity.
|
|
36
|
+
|
|
37
|
+
**Interaction:** Focus the grip → **Enter** or **Space** → **Arrow Up/Down** to reorder → **Escape** to exit. Pointer down on the row exits keyboard mode; starting a drag also exits keyboard mode.
|
|
38
|
+
|
|
39
|
+
**Custom reorder column:** If you add reorder cells in your own template (not injected), **you** own icons, keyboard behavior, and `rowOrderChange` — these attributes apply only to **managed** injected grips.
|
|
40
|
+
|
|
41
|
+
<!-- Auto Generated Below -->
|
|
42
|
+
|
|
43
|
+
|
|
44
|
+
## Overview
|
|
45
|
+
|
|
46
|
+
Compositional tables use CSS grid on the host (`role="grid"`). Legacy mode uses a `<table>`.
|
|
47
|
+
|
|
48
|
+
## Properties
|
|
49
|
+
|
|
50
|
+
| Property | Attribute | Description | Type | Default |
|
|
51
|
+
| --------------------------- | ------------------------------ | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ------------ | ----------- |
|
|
52
|
+
| `columns` | -- | <span style="color:red">**[DEPRECATED]**</span> Legacy data-driven table API only (`columns` / `data` / `footer`). May be removed in a future major release. The header values for each column.<br/><br/> | `string[]` | `undefined` |
|
|
53
|
+
| `data` | -- | <span style="color:red">**[DEPRECATED]**</span> Legacy data-driven table API only (`columns` / `data` / `footer`). May be removed in a future major release. The data for the body of the table.<br/><br/> | `string[][]` | `undefined` |
|
|
54
|
+
| `footer` | -- | <span style="color:red">**[DEPRECATED]**</span> Legacy data-driven table API only (`columns` / `data` / `footer`). May be removed in a future major release. The data for the footer of the table.<br/><br/> | `string[][]` | `undefined` |
|
|
55
|
+
| `freeze` | `freeze` | When true, the first **data** column (per row) is sticky during horizontal scroll. Leading compositional columns are skipped: `selectable` (checkbox) and/or `row-reorderable` (grip) are not frozen so they scroll with the grid; the next column stays pinned at `left: 0`. | `boolean` | `undefined` |
|
|
56
|
+
| `isSortable` | `is-sortable` | <span style="color:red">**[DEPRECATED]**</span> Legacy data-driven table API only. May be removed in a future major release. Toggles to show the sort button on each table head.<br/><br/> | `boolean` | `false` |
|
|
57
|
+
| `label` | `label` | Accessible label for the table. Maps to `aria-label` in compositional mode. | `string` | `undefined` |
|
|
58
|
+
| `multiselect` | `multiselect` | <span style="color:red">**[DEPRECATED]**</span> Legacy data-driven table API only. May be removed in a future major release. Toggles a selectable checkbox for each row in the table.<br/><br/> | `boolean` | `undefined` |
|
|
59
|
+
| `reorderHandleIcon` | `reorder-handle-icon` | Icon name for the optional `xpl-icon` inside each **managed** reorder grip when the row is **not** in keyboard reorder mode (pointer / idle). Set to `""` to omit the icon so you can style the button or author a fully custom reorder column in markup. When omitted, defaults to `grip-dots-vertical`. | `string` | `undefined` |
|
|
60
|
+
| `reorderHandleIconKeyboard` | `reorder-handle-icon-keyboard` | Icon name for the managed reorder grip **while that row is in keyboard reorder mode** (after the user activates the grip with Enter or Space). Use a different icon than `reorder-handle-icon` so users can see they should use arrow keys. When omitted, defaults to `caret-expand-y` (same as `xpl-list` keyboard reorder). Set to `""` to show no icon in keyboard mode only (combine with CSS on `.xpl-table__row-drag-handle--keyboard-mode` if needed). | `string` | `undefined` |
|
|
61
|
+
| `rowReorderable` | `row-reorderable` | When true (compositional mode only), **prepends** a managed reorder column as the **first** grid column (empty header + grip button per body row) and enables HTML5 drag-and-drop row reordering (same interaction model as `xpl-list`). With `selectable`, DOM order is **reorder \| selection \| data** unless you author a custom reorder column. The table updates the DOM and emits `rowOrderChange`; consumers should persist order if needed. Ignored in legacy `columns`/`data` mode. | `boolean` | `undefined` |
|
|
62
|
+
| `selectable` | `selectable` | When true (compositional mode only), enables row selection state, the selection toolbar (“N Selected”), and `rowSelectionChange`. **You must add the selection column in your markup:** a header cell with `type="checkbox"`, a body cell containing `xpl-checkbox` per row (aligned with that column), and matching `xpl-table-footer-cell` cells when you use a footer. Each body row should use `row-id` on `xpl-table-row` (or accept auto-generated ids) so `rowSelectionChange` can report `selectedRowIds`. The toolbar uses the same layout as `xpl-toolbar` and is visible only while at least one row is selected. Use `toolbar-actions-left` / `toolbar-actions-right` slots on this host for bulk actions. | `boolean` | `undefined` |
|
|
63
|
+
| `selectedValues` | -- | <span style="color:red">**[DEPRECATED]**</span> Legacy data-driven table API only. May be removed in a future major release. The values for the input for each row when multiselect is activated.<br/><br/> | `string[]` | `[]` |
|
|
64
|
+
| `sortableColumns` | -- | <span style="color:red">**[DEPRECATED]**</span> Use the compositional slot-based API instead. Will be removed in a future major release. Manually determined if the column is sortable.<br/><br/> | `boolean[]` | `[]` |
|
|
65
|
+
| `striped` | `striped` | Toggles an optional styling of the background of each even row of the table body. | `boolean` | `undefined` |
|
|
66
|
+
|
|
67
|
+
|
|
68
|
+
## Events
|
|
69
|
+
|
|
70
|
+
| Event | Description | Type |
|
|
71
|
+
| -------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------- |
|
|
72
|
+
| `rowOrderChange` | Emitted after body rows are reordered via drag-and-drop (compositional `row-reorderable` mode). | `CustomEvent<XplTableRowOrderChangeDetail>` |
|
|
73
|
+
| `rowSelectionChange` | Emitted when row selection changes in compositional `selectable` mode. Listen on this `xpl-table` instance only; the event does not bubble to parents—use `table.addEventListener('rowSelectionChange', …)` on the same element. When wiring from a script in static HTML, wait for `customElements.whenDefined('xpl-table')` so the host is ready. (Named `rowSelectionChange` to avoid clashing with the native `selectionchange` event.) | `CustomEvent<{ selectedRowIds: string[]; }>` |
|
|
74
|
+
| `sortChanged` | Emitted when sort changes in **legacy** or **compositional** mode. `event.detail` is a plain object: **sort-key slug → `'asc' \| 'desc' \| null`** (null = that column not sorted). Keys match legacy column titles (slugified) or compositional `sort-key` / label slugs. Call `event.preventDefault()` in legacy mode to skip built-in row sorting; compositional tables do not reorder rows automatically. | `CustomEvent<XplTableSortChangedDetail>` |
|
|
75
|
+
| `tableSelect` | Callback function that is called when the checkbox for a row of a `multiselect` table is checked. | `CustomEvent<any>` |
|
|
76
|
+
|
|
77
|
+
|
|
78
|
+
## Slots
|
|
79
|
+
|
|
80
|
+
| Slot | Description |
|
|
81
|
+
| ------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------ |
|
|
82
|
+
| | `xpl-table-header`, `xpl-table-body`, and optional `xpl-table-footer`. |
|
|
83
|
+
| `"toolbar-actions-left"` | Bulk actions in the selection toolbar (left group). Only when `selectable` is set; the toolbar is shown only while at least one row is selected. |
|
|
84
|
+
| `"toolbar-actions-right"` | Bulk actions in the selection toolbar (right group). Same visibility as `toolbar-actions-left`. |
|
|
85
|
+
|
|
86
|
+
|
|
87
|
+
## Dependencies
|
|
88
|
+
|
|
89
|
+
### Depends on
|
|
90
|
+
|
|
91
|
+
- [xpl-table-header-cell](xpl-table-header-cell)
|
|
92
|
+
- [xpl-table-cell](xpl-table-cell)
|
|
93
|
+
- [xpl-icon](../xpl-icon)
|
|
94
|
+
- [xpl-table-footer-cell](xpl-table-footer-cell)
|
|
95
|
+
|
|
96
|
+
### Graph
|
|
97
|
+
```mermaid
|
|
98
|
+
graph TD;
|
|
99
|
+
xpl-table --> xpl-table-header-cell
|
|
100
|
+
xpl-table --> xpl-table-cell
|
|
101
|
+
xpl-table --> xpl-icon
|
|
102
|
+
xpl-table --> xpl-table-footer-cell
|
|
103
|
+
xpl-table-header-cell --> xpl-icon
|
|
104
|
+
xpl-table-header-cell --> xpl-checkbox
|
|
105
|
+
style xpl-table fill:#f9f,stroke:#333,stroke-width:4px
|
|
106
|
+
```
|
|
107
|
+
|
|
108
|
+
----------------------------------------------
|
|
109
|
+
|
|
110
|
+
*Built with [StencilJS](https://stenciljs.com/)*
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
# xpl-table-cell
|
|
2
|
+
|
|
3
|
+
Body cell for compositional [`xpl-table`](../readme.md). Place content in the default slot; use `align`, `bold`, and `underline` for typography. Interactive controls inside the cell inherit `disabled` when the parent [`xpl-table-row`](../xpl-table-row) is disabled.
|
|
4
|
+
|
|
5
|
+
<!-- Auto Generated Below -->
|
|
6
|
+
|
|
7
|
+
|
|
8
|
+
## Properties
|
|
9
|
+
|
|
10
|
+
| Property | Attribute | Description | Type | Default |
|
|
11
|
+
| ----------- | ----------- | ----------------------------------------------------------------------------------------------- | ------------------------------- | -------- |
|
|
12
|
+
| `align` | `align` | Horizontal text alignment within the cell. | `"center" \| "left" \| "right"` | `'left'` |
|
|
13
|
+
| `bold` | `bold` | Renders cell text in bold (--xpl-font-weight-semibold). | `boolean` | `false` |
|
|
14
|
+
| `disabled` | `disabled` | Whether the cell and its interactive children are disabled. Set automatically by xpl-table-row. | `boolean` | `false` |
|
|
15
|
+
| `underline` | `underline` | Adds an underline to cell text. | `boolean` | `false` |
|
|
16
|
+
|
|
17
|
+
|
|
18
|
+
## Dependencies
|
|
19
|
+
|
|
20
|
+
### Used by
|
|
21
|
+
|
|
22
|
+
- [xpl-table](..)
|
|
23
|
+
|
|
24
|
+
### Graph
|
|
25
|
+
```mermaid
|
|
26
|
+
graph TD;
|
|
27
|
+
xpl-table --> xpl-table-cell
|
|
28
|
+
style xpl-table-cell fill:#f9f,stroke:#333,stroke-width:4px
|
|
29
|
+
```
|
|
30
|
+
|
|
31
|
+
----------------------------------------------
|
|
32
|
+
|
|
33
|
+
*Built with [StencilJS](https://stenciljs.com/)*
|