@xplortech/apollo-core 3.1.0 → 3.2.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 +120 -14
- package/build/components/avatar.css +1 -1
- package/build/components/data-card.css +1 -1
- package/build/components/dropdown.css +1 -1
- package/build/components/input-time.css +1 -1
- package/build/components/large-card.css +1 -1
- package/build/components/list-item.css +1 -1
- package/build/components/modal.css +1 -1
- package/build/components/popover.css +1 -1
- package/build/components/side-nav.css +1 -1
- package/build/components/spotlight.css +1 -1
- package/build/components/table-cell-base.css +1 -0
- package/build/components/table-cell.css +1 -0
- package/build/components/table-footer-cell.css +1 -1
- package/build/components/table-header-cell.css +1 -1
- package/build/components/table.css +1 -1
- package/build/components/tag.css +1 -1
- package/build/components/toast.css +1 -1
- package/build/components/toggle.css +1 -1
- package/build/components/toolbar.css +1 -1
- package/build/components/tooltip.css +1 -1
- package/build/components/top-nav.css +1 -1
- package/build/components-manifest.json +19 -3
- package/build/core.css +1 -1
- package/build/style.css +1 -1
- package/build/variables/apollo.css +4 -0
- package/build/variables/field-edge.css +4 -0
- package/build/vendor/flatpickr.css +1 -1
- package/dist/apollo-core/apollo-core.css +1 -1
- package/dist/apollo-core/apollo-core.esm.js +1 -1
- package/dist/apollo-core/p-045a4538.entry.js +1 -0
- package/dist/apollo-core/{p-d443291f.entry.js → p-050a8bf2.entry.js} +1 -1
- package/dist/apollo-core/p-08767607.entry.js +1 -0
- package/dist/apollo-core/{p-149ddd12.entry.js → p-11914cd4.entry.js} +1 -1
- package/dist/apollo-core/{p-581b702c.entry.js → p-14e86de8.entry.js} +1 -1
- package/dist/apollo-core/p-194c0ccd.entry.js +1 -0
- package/dist/apollo-core/p-1c031055.entry.js +1 -0
- package/dist/apollo-core/p-24f7280a.entry.js +1 -0
- package/dist/apollo-core/{p-47bda204.entry.js → p-24fa8a03.entry.js} +1 -1
- package/dist/apollo-core/{p-91895c40.entry.js → p-2971e2ec.entry.js} +1 -1
- package/dist/apollo-core/{p-0958c719.entry.js → p-3417c1ce.entry.js} +1 -1
- package/dist/apollo-core/p-3713cd77.entry.js +1 -0
- package/dist/apollo-core/p-386851a2.entry.js +1 -0
- package/dist/apollo-core/p-3cd1238b.entry.js +1 -0
- package/dist/apollo-core/{p-b45179fb.entry.js → p-49531864.entry.js} +1 -1
- package/dist/apollo-core/p-4e3c6616.entry.js +1 -0
- package/dist/apollo-core/p-5b9fd96e.entry.js +1 -0
- package/dist/apollo-core/{p-cb5b15c2.entry.js → p-5bfac8fd.entry.js} +1 -1
- package/dist/apollo-core/p-5c3be343.entry.js +1 -0
- package/dist/apollo-core/p-5cbf5d42.entry.js +1 -0
- package/dist/apollo-core/p-5ec2b180.entry.js +1 -0
- package/dist/apollo-core/{p-790709c0.entry.js → p-64f5c129.entry.js} +1 -1
- package/dist/apollo-core/{p-28bce81a.entry.js → p-65f6b66c.entry.js} +1 -1
- package/dist/apollo-core/{p-d9070ae5.entry.js → p-715baae0.entry.js} +1 -1
- package/dist/apollo-core/p-72e0455f.entry.js +1 -0
- package/dist/apollo-core/p-7ac7fbc0.entry.js +1 -0
- package/dist/apollo-core/p-7d70e089.entry.js +1 -0
- package/dist/apollo-core/{p-d41b8f46.entry.js → p-7eb02cf3.entry.js} +1 -1
- package/dist/apollo-core/p-7f4463ff.entry.js +1 -0
- package/dist/apollo-core/p-808f3d9c.entry.js +1 -0
- package/dist/apollo-core/p-87582346.entry.js +1 -0
- package/dist/apollo-core/{p-2c995d80.entry.js → p-8f8f4759.entry.js} +1 -1
- package/dist/apollo-core/{p-5d9a593e.entry.js → p-907bc21e.entry.js} +1 -1
- package/dist/apollo-core/p-9905c77c.entry.js +1 -0
- package/dist/apollo-core/{p-54903322.entry.js → p-9d731673.entry.js} +1 -1
- package/dist/apollo-core/{p-2938ab4f.entry.js → p-9feaa8be.entry.js} +1 -1
- package/dist/apollo-core/p-O7gQjVdS.js +1 -0
- package/dist/apollo-core/p-a6ecca68.entry.js +1 -0
- package/dist/apollo-core/p-a789c272.entry.js +1 -0
- package/dist/apollo-core/{p-06a9a27b.entry.js → p-aeb2bcb8.entry.js} +1 -1
- package/dist/apollo-core/p-b3b4678b.entry.js +1 -0
- package/dist/apollo-core/{p-82812126.entry.js → p-b64ed46d.entry.js} +1 -1
- package/dist/apollo-core/{p-0368a1df.entry.js → p-bc821e69.entry.js} +1 -1
- package/dist/apollo-core/p-bd493c4a.entry.js +1 -0
- package/dist/apollo-core/p-bdcece21.entry.js +1 -0
- package/dist/apollo-core/{p-cdb5b5c4.entry.js → p-bfb7a83a.entry.js} +1 -1
- package/dist/apollo-core/{p-cdacfcd4.entry.js → p-c22f70f4.entry.js} +1 -1
- package/dist/apollo-core/{p-5730d96c.entry.js → p-c5bc3b2c.entry.js} +1 -1
- package/dist/apollo-core/{p-4ad79534.entry.js → p-ca83003e.entry.js} +1 -1
- package/dist/apollo-core/p-d3230277.entry.js +1 -0
- package/dist/apollo-core/p-d3ada7d0.entry.js +1 -0
- package/dist/apollo-core/{p-d0bc7c45.entry.js → p-d469bf5d.entry.js} +1 -1
- package/dist/apollo-core/p-d7f8ee34.entry.js +1 -0
- package/dist/apollo-core/p-d879c349.entry.js +1 -0
- package/dist/apollo-core/{p-2139f9f6.entry.js → p-df257cbf.entry.js} +1 -1
- package/dist/apollo-core/p-e09d8beb.entry.js +1 -0
- package/dist/apollo-core/p-e4d50301.entry.js +1 -0
- package/dist/apollo-core/{p-f3a2c79b.entry.js → p-ea9cdd65.entry.js} +1 -1
- package/dist/apollo-core/{p-ca4652b3.entry.js → p-eba654a3.entry.js} +1 -1
- package/dist/apollo-core/{p-4a2323b3.entry.js → p-ee68bed6.entry.js} +1 -1
- package/dist/apollo-core/{p-abdf199b.entry.js → p-f384a990.entry.js} +1 -1
- package/dist/apollo-core/{p-4d4acd1f.entry.js → p-f579e4b0.entry.js} +1 -1
- package/dist/apollo-core/{p-d724c419.entry.js → p-fcb17ff9.entry.js} +1 -1
- package/dist/apollo-core/{p-e2890eb1.entry.js → p-ff16f574.entry.js} +1 -1
- package/dist/cjs/apollo-core.cjs.js +1 -1
- package/dist/cjs/index-3cBvw409.js +8 -12
- package/dist/cjs/loader.cjs.js +1 -1
- package/dist/cjs/table-internal-DssCrBs_.js +67 -0
- package/dist/cjs/xpl-accordion.cjs.entry.js +2 -2
- package/dist/cjs/xpl-application-shell.cjs.entry.js +1 -1
- package/dist/cjs/xpl-avatar_3.cjs.entry.js +4 -4
- package/dist/cjs/xpl-backdrop.cjs.entry.js +1 -1
- package/dist/cjs/xpl-badge.cjs.entry.js +1 -1
- package/dist/cjs/xpl-banner.cjs.entry.js +2 -2
- package/dist/cjs/xpl-breadcrumb-item.cjs.entry.js +1 -1
- package/dist/cjs/xpl-breadcrumbs.cjs.entry.js +1 -1
- package/dist/cjs/xpl-button-row.cjs.entry.js +1 -1
- package/dist/cjs/xpl-button.cjs.entry.js +1 -1
- package/dist/cjs/xpl-calendar.cjs.entry.js +1 -1
- package/dist/cjs/xpl-checkbox.cjs.entry.js +3 -3
- package/dist/cjs/xpl-choicelist.cjs.entry.js +1 -1
- package/dist/cjs/xpl-content-area.cjs.entry.js +1 -1
- package/dist/cjs/xpl-dashboard.cjs.entry.js +1 -1
- package/dist/cjs/xpl-data-card.cjs.entry.js +2 -2
- package/dist/cjs/xpl-dropdown_4.cjs.entry.js +8 -8
- package/dist/cjs/xpl-dynamic-table-cell.cjs.entry.js +2 -2
- package/dist/cjs/xpl-dynamic-table-row.cjs.entry.js +2 -2
- package/dist/cjs/xpl-dynamic-table.cjs.entry.js +2 -2
- package/dist/cjs/xpl-grid-item.cjs.entry.js +1 -1
- package/dist/cjs/xpl-grid.cjs.entry.js +1 -1
- package/dist/cjs/xpl-header-accordion.cjs.entry.js +1 -1
- package/dist/cjs/xpl-icon.cjs.entry.js +2 -2
- package/dist/cjs/xpl-input-color.cjs.entry.js +8 -8
- package/dist/cjs/xpl-input-phone.cjs.entry.js +5 -5
- package/dist/cjs/xpl-input-time.cjs.entry.js +2 -2
- package/dist/cjs/xpl-input_4.cjs.entry.js +10 -10
- package/dist/cjs/xpl-large-card.cjs.entry.js +1 -1
- package/dist/cjs/xpl-list.cjs.entry.js +2 -2
- package/dist/cjs/xpl-main-nav.cjs.entry.js +1 -1
- package/dist/cjs/xpl-modal.cjs.entry.js +1 -1
- package/dist/cjs/xpl-nav-header-menu.cjs.entry.js +2 -2
- package/dist/cjs/xpl-nav-item.cjs.entry.js +2 -2
- package/dist/cjs/xpl-pagination.cjs.entry.js +4 -4
- package/dist/cjs/xpl-panel.cjs.entry.js +2 -2
- package/dist/cjs/xpl-popover.cjs.entry.js +4 -4
- package/dist/cjs/xpl-progress-bar.cjs.entry.js +2 -2
- package/dist/cjs/xpl-progress-indicator.cjs.entry.js +1 -1
- package/dist/cjs/xpl-secondary-nav.cjs.entry.js +1 -1
- package/dist/cjs/xpl-select_2.cjs.entry.js +8 -8
- package/dist/cjs/xpl-side-nav-header-item.cjs.entry.js +2 -2
- package/dist/cjs/xpl-side-nav-item.cjs.entry.js +2 -2
- package/dist/cjs/xpl-side-nav-section.cjs.entry.js +5 -5
- package/dist/cjs/xpl-side-nav.cjs.entry.js +2 -2
- package/dist/cjs/xpl-skeleton.cjs.entry.js +1 -1
- package/dist/cjs/xpl-slideout.cjs.entry.js +1 -1
- package/dist/cjs/xpl-tab-panel.cjs.entry.js +2 -2
- package/dist/cjs/xpl-table-body.cjs.entry.js +1 -1
- package/dist/cjs/xpl-table-cell_3.cjs.entry.js +228 -0
- package/dist/cjs/xpl-table-footer.cjs.entry.js +1 -1
- package/dist/cjs/xpl-table-header.cjs.entry.js +1 -1
- package/dist/cjs/xpl-table-row.cjs.entry.js +43 -2
- package/dist/cjs/xpl-table.cjs.entry.js +1204 -80
- package/dist/cjs/xpl-tabs.cjs.entry.js +5 -5
- package/dist/cjs/xpl-toast.cjs.entry.js +2 -2
- package/dist/cjs/xpl-toggle.cjs.entry.js +3 -3
- package/dist/cjs/xpl-toolbar.cjs.entry.js +2 -2
- package/dist/cjs/xpl-tooltip.cjs.entry.js +1 -1
- package/dist/cjs/xpl-top-nav-item.cjs.entry.js +2 -2
- package/dist/cjs/xpl-top-nav-menu.cjs.entry.js +2 -2
- package/dist/cjs/xpl-top-nav.cjs.entry.js +5 -5
- package/dist/cjs/xpl-utility-bar.cjs.entry.js +1 -1
- package/dist/collection/collection-manifest.json +2 -1
- package/dist/collection/components/xpl-accordion/xpl-accordion.js +2 -2
- package/dist/collection/components/xpl-application-shell/xpl-application-shell.js +1 -1
- package/dist/collection/components/xpl-backdrop/xpl-backdrop.js +1 -1
- package/dist/collection/components/xpl-badge/xpl-badge.js +1 -1
- package/dist/collection/components/xpl-banner/xpl-banner.js +2 -2
- package/dist/collection/components/xpl-breadcrumbs/xpl-breadcrumb-item/xpl-breadcrumb-item.js +1 -1
- package/dist/collection/components/xpl-breadcrumbs/xpl-breadcrumbs/xpl-breadcrumbs.js +1 -1
- package/dist/collection/components/xpl-button/xpl-button.js +1 -1
- 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 +3 -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 +4 -4
- package/dist/collection/components/xpl-dynamic-table/xpl-dynamic-table.js +2 -2
- 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/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 +1 -1
- package/dist/collection/components/xpl-input/xpl-input-time/xpl-input-time.js +2 -2
- package/dist/collection/components/xpl-input/xpl-input.js +2 -2
- package/dist/collection/components/xpl-large-card/xpl-large-card.js +1 -1
- package/dist/collection/components/xpl-list/xpl-list.js +2 -2
- package/dist/collection/components/xpl-main-nav/xpl-main-nav.js +1 -1
- package/dist/collection/components/xpl-modal/xpl-modal.js +1 -1
- package/dist/collection/components/xpl-nav-item/xpl-nav-item.js +2 -2
- package/dist/collection/components/xpl-pagination/xpl-pagination.js +4 -4
- package/dist/collection/components/xpl-panel/xpl-panel.js +2 -2
- package/dist/collection/components/xpl-popover/xpl-popover.js +4 -4
- package/dist/collection/components/xpl-progress-bar/xpl-progress-bar.js +2 -2
- package/dist/collection/components/xpl-progress-indicator/xpl-progress-indicator.js +1 -1
- package/dist/collection/components/xpl-radio/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-header-item/xpl-side-nav-header-item.js +2 -2
- 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-section/xpl-side-nav-section.js +5 -5
- 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-tab-panel/xpl-tab-panel.js +2 -2
- package/dist/collection/components/xpl-table/utils/move-row-dom.js +50 -0
- package/dist/collection/components/xpl-table/utils/table-internal.js +57 -0
- package/dist/collection/components/xpl-table/xpl-table-body/xpl-table-body.js +1 -1
- package/dist/collection/components/xpl-table/xpl-table-cell/xpl-table-cell.js +167 -0
- package/dist/collection/components/xpl-table/xpl-table-footer/xpl-table-footer.js +1 -1
- package/dist/collection/components/xpl-table/xpl-table-footer-cell/xpl-table-footer-cell.js +2 -2
- 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 +44 -2
- package/dist/collection/components/xpl-table/xpl-table.js +1427 -116
- package/dist/collection/components/xpl-table-header/xpl-table-header.js +1 -1
- package/dist/collection/components/xpl-tabs/xpl-tabs.js +5 -5
- package/dist/collection/components/xpl-tag/xpl-tag.js +2 -2
- package/dist/collection/components/xpl-toast/xpl-toast.js +2 -2
- package/dist/collection/components/xpl-toggle/xpl-toggle.js +3 -3
- package/dist/collection/components/xpl-toolbar/xpl-toolbar.js +2 -2
- package/dist/collection/components/xpl-tooltip/xpl-tooltip.js +1 -1
- package/dist/collection/components/xpl-top-nav/xpl-nav-header-menu/xpl-nav-header-menu.js +2 -2
- package/dist/collection/components/xpl-top-nav/xpl-top-nav-item/xpl-top-nav-item.js +2 -2
- package/dist/collection/components/xpl-top-nav/xpl-top-nav-menu/xpl-top-nav-menu.js +2 -2
- package/dist/collection/components/xpl-top-nav/xpl-top-nav.js +5 -5
- package/dist/collection/components/xpl-utility-bar/xpl-utility-bar.js +1 -1
- package/dist/components/index.d.ts +3 -1
- package/dist/components/index.js +1 -1
- package/dist/components/{p-oIn1krdu.js → p-1D7CWIJ-.js} +1 -1
- package/dist/components/{p-xtOHikY0.js → p-2cJsJK3-.js} +1 -1
- package/dist/components/{p-DYmvElhR.js → p-8zrW9vEC.js} +1 -1
- package/dist/components/p-B56GeUtW.js +1 -0
- package/dist/components/p-B6YLKDUX.js +1 -0
- package/dist/components/{p-D--kzomA.js → p-B7aaJikj.js} +1 -1
- package/dist/components/{p-U0JYwf4c.js → p-BOm_p_mz.js} +1 -1
- package/dist/components/p-BZIZSovL.js +1 -0
- package/dist/components/{p-EfW0v54z.js → p-BtLC-jpk.js} +1 -1
- package/dist/components/{p-xFsB212F.js → p-Btb2UkLz.js} +1 -1
- package/dist/components/{p-DAb-txW3.js → p-C0AbGd4t.js} +1 -1
- package/dist/components/p-CFXvQqUO.js +1 -0
- package/dist/components/{p-l3EZ-agL.js → p-CQjJIHK6.js} +1 -1
- package/dist/components/{p-Chpgh5SL.js → p-CV5nn1zR.js} +1 -1
- package/dist/components/p-CdRmVtIN.js +1 -0
- package/dist/components/p-CgemLtmL.js +1 -0
- package/dist/components/p-CmbpWpb0.js +1 -0
- package/dist/components/p-CuVYRPvz.js +1 -0
- package/dist/components/{p-JyNpXfDe.js → p-D09sGbzs.js} +1 -1
- package/dist/components/{p-BdpZR4KO.js → p-DTh_zemx.js} +1 -1
- package/dist/components/{p-CiHTfk3E.js → p-DoVubWyd.js} +1 -1
- package/dist/components/p-Dp62sBqX.js +1 -0
- package/dist/components/p-DqgnC_vS.js +1 -0
- package/dist/components/p-DtV4i45B.js +1 -0
- package/dist/components/{p-wIU7KUhA.js → p-ohy3NrgH.js} +1 -1
- package/dist/components/xpl-accordion.js +1 -1
- package/dist/components/xpl-application-shell.js +1 -1
- package/dist/components/xpl-avatar.js +1 -1
- package/dist/components/xpl-backdrop.js +1 -1
- package/dist/components/xpl-badge.js +1 -1
- package/dist/components/xpl-banner.js +1 -1
- package/dist/components/xpl-breadcrumb-item.js +1 -1
- package/dist/components/xpl-breadcrumbs.js +1 -1
- package/dist/components/xpl-button-row.js +1 -1
- package/dist/components/xpl-button.js +1 -1
- package/dist/components/xpl-calendar.js +1 -1
- package/dist/components/xpl-checkbox.js +1 -1
- package/dist/components/xpl-choicelist.js +1 -1
- package/dist/components/xpl-content-area.js +1 -1
- package/dist/components/xpl-dashboard.js +1 -1
- package/dist/components/xpl-data-card.js +1 -1
- package/dist/components/xpl-divider.js +1 -1
- package/dist/components/xpl-dropdown-group.js +1 -1
- package/dist/components/xpl-dropdown-heading.js +1 -1
- package/dist/components/xpl-dropdown-option.js +1 -1
- package/dist/components/xpl-dropdown.js +1 -1
- package/dist/components/xpl-dynamic-table-cell.js +1 -1
- package/dist/components/xpl-dynamic-table-row.js +1 -1
- package/dist/components/xpl-dynamic-table.js +1 -1
- package/dist/components/xpl-grid-item.js +1 -1
- package/dist/components/xpl-grid.js +1 -1
- package/dist/components/xpl-header-accordion.js +1 -1
- package/dist/components/xpl-icon.js +1 -1
- package/dist/components/xpl-input-color.js +1 -1
- package/dist/components/xpl-input-date.js +1 -1
- package/dist/components/xpl-input-file.js +1 -1
- package/dist/components/xpl-input-phone.js +1 -1
- package/dist/components/xpl-input-search.js +1 -1
- package/dist/components/xpl-input-time.js +1 -1
- package/dist/components/xpl-input.js +1 -1
- package/dist/components/xpl-large-card.js +1 -1
- package/dist/components/xpl-list-item.js +1 -1
- package/dist/components/xpl-list.js +1 -1
- package/dist/components/xpl-main-nav.js +1 -1
- package/dist/components/xpl-modal.js +1 -1
- package/dist/components/xpl-nav-header-menu.js +1 -1
- package/dist/components/xpl-nav-item.js +1 -1
- package/dist/components/xpl-pagination.js +1 -1
- package/dist/components/xpl-panel.js +1 -1
- package/dist/components/xpl-popover.js +1 -1
- package/dist/components/xpl-progress-bar.js +1 -1
- package/dist/components/xpl-progress-indicator.js +1 -1
- package/dist/components/xpl-radio.js +1 -1
- package/dist/components/xpl-secondary-nav.js +1 -1
- package/dist/components/xpl-select.js +1 -1
- package/dist/components/xpl-side-nav-header-item.js +1 -1
- package/dist/components/xpl-side-nav-item.js +1 -1
- package/dist/components/xpl-side-nav-section.js +1 -1
- package/dist/components/xpl-side-nav.js +1 -1
- package/dist/components/xpl-skeleton.js +1 -1
- package/dist/components/xpl-slideout.js +1 -1
- package/dist/components/xpl-spotlight.js +1 -1
- package/dist/components/xpl-tab-panel.js +1 -1
- package/dist/components/xpl-tab.js +1 -1
- package/dist/components/xpl-table-body.js +1 -1
- package/dist/components/xpl-table-cell.d.ts +11 -0
- package/dist/components/xpl-table-cell.js +1 -0
- package/dist/components/xpl-table-footer-cell.js +1 -1
- package/dist/components/xpl-table-footer.js +1 -1
- package/dist/components/xpl-table-header-cell.js +1 -1
- package/dist/components/xpl-table-header.js +1 -1
- package/dist/components/xpl-table-row.js +1 -1
- package/dist/components/xpl-table.js +1 -1
- package/dist/components/xpl-tabs.js +1 -1
- package/dist/components/xpl-tag.js +1 -1
- package/dist/components/xpl-toast.js +1 -1
- package/dist/components/xpl-toggle.js +1 -1
- package/dist/components/xpl-toolbar.js +1 -1
- package/dist/components/xpl-tooltip.js +1 -1
- package/dist/components/xpl-top-nav-item.js +1 -1
- package/dist/components/xpl-top-nav-menu.js +1 -1
- package/dist/components/xpl-top-nav.js +1 -1
- package/dist/components/xpl-utility-bar.js +1 -1
- package/dist/docs/xpl-avatar/readme.md +1 -1
- package/dist/docs/xpl-checkbox/readme.md +1 -3
- package/dist/docs/xpl-data-card/readme.md +1 -1
- package/dist/docs/xpl-dynamic-table/readme.md +4 -1
- package/dist/docs/xpl-dynamic-table-cell/readme.md +2 -0
- package/dist/docs/xpl-dynamic-table-row/readme.md +2 -0
- package/dist/docs/xpl-icon/readme.md +1 -1
- package/dist/docs/xpl-input/xpl-input-time/readme.md +1 -1
- package/dist/docs/xpl-large-card/readme.md +1 -1
- package/dist/docs/xpl-modal/readme.md +2 -2
- package/dist/docs/xpl-popover/readme.md +1 -2
- package/dist/docs/xpl-slideout/readme.md +1 -1
- package/dist/docs/xpl-spotlight/readme.md +1 -0
- package/dist/docs/xpl-table/readme.md +178 -20
- package/dist/docs/xpl-table/xpl-table-body/readme.md +4 -4
- package/dist/docs/xpl-table/xpl-table-cell/readme.md +53 -0
- package/dist/docs/xpl-table/xpl-table-footer/readme.md +4 -4
- package/dist/docs/xpl-table/xpl-table-footer-cell/readme.md +24 -15
- package/dist/docs/xpl-table/xpl-table-header-cell/readme.md +84 -0
- package/dist/docs/xpl-table/xpl-table-row/readme.md +18 -14
- package/dist/docs/xpl-toast/readme.md +2 -2
- package/dist/docs/xpl-toggle/readme.md +1 -1
- package/dist/docs/xpl-toolbar/readme.md +5 -3
- package/dist/docs/xpl-tooltip/readme.md +1 -2
- package/dist/docs.json +776 -113
- package/dist/esm/apollo-core.js +1 -1
- package/dist/esm/index-ukZKsqqq.js +8 -12
- package/dist/esm/loader.js +1 -1
- package/dist/esm/table-internal-O7gQjVdS.js +59 -0
- package/dist/esm/xpl-accordion.entry.js +2 -2
- package/dist/esm/xpl-application-shell.entry.js +1 -1
- package/dist/esm/xpl-avatar_3.entry.js +4 -4
- package/dist/esm/xpl-backdrop.entry.js +1 -1
- package/dist/esm/xpl-badge.entry.js +1 -1
- package/dist/esm/xpl-banner.entry.js +2 -2
- package/dist/esm/xpl-breadcrumb-item.entry.js +1 -1
- package/dist/esm/xpl-breadcrumbs.entry.js +1 -1
- package/dist/esm/xpl-button-row.entry.js +1 -1
- package/dist/esm/xpl-button.entry.js +1 -1
- package/dist/esm/xpl-calendar.entry.js +1 -1
- package/dist/esm/xpl-checkbox.entry.js +3 -3
- package/dist/esm/xpl-choicelist.entry.js +1 -1
- package/dist/esm/xpl-content-area.entry.js +1 -1
- package/dist/esm/xpl-dashboard.entry.js +1 -1
- package/dist/esm/xpl-data-card.entry.js +2 -2
- package/dist/esm/xpl-dropdown_4.entry.js +8 -8
- package/dist/esm/xpl-dynamic-table-cell.entry.js +2 -2
- package/dist/esm/xpl-dynamic-table-row.entry.js +2 -2
- package/dist/esm/xpl-dynamic-table.entry.js +2 -2
- package/dist/esm/xpl-grid-item.entry.js +1 -1
- package/dist/esm/xpl-grid.entry.js +1 -1
- package/dist/esm/xpl-header-accordion.entry.js +1 -1
- package/dist/esm/xpl-icon.entry.js +2 -2
- package/dist/esm/xpl-input-color.entry.js +8 -8
- package/dist/esm/xpl-input-phone.entry.js +5 -5
- package/dist/esm/xpl-input-time.entry.js +2 -2
- package/dist/esm/xpl-input_4.entry.js +10 -10
- package/dist/esm/xpl-large-card.entry.js +1 -1
- package/dist/esm/xpl-list.entry.js +2 -2
- package/dist/esm/xpl-main-nav.entry.js +1 -1
- package/dist/esm/xpl-modal.entry.js +1 -1
- package/dist/esm/xpl-nav-header-menu.entry.js +2 -2
- package/dist/esm/xpl-nav-item.entry.js +2 -2
- package/dist/esm/xpl-pagination.entry.js +4 -4
- package/dist/esm/xpl-panel.entry.js +2 -2
- package/dist/esm/xpl-popover.entry.js +4 -4
- package/dist/esm/xpl-progress-bar.entry.js +2 -2
- package/dist/esm/xpl-progress-indicator.entry.js +1 -1
- package/dist/esm/xpl-secondary-nav.entry.js +1 -1
- package/dist/esm/xpl-select_2.entry.js +8 -8
- package/dist/esm/xpl-side-nav-header-item.entry.js +2 -2
- package/dist/esm/xpl-side-nav-item.entry.js +2 -2
- package/dist/esm/xpl-side-nav-section.entry.js +5 -5
- package/dist/esm/xpl-side-nav.entry.js +2 -2
- package/dist/esm/xpl-skeleton.entry.js +1 -1
- package/dist/esm/xpl-slideout.entry.js +1 -1
- package/dist/esm/xpl-tab-panel.entry.js +2 -2
- package/dist/esm/xpl-table-body.entry.js +1 -1
- package/dist/esm/xpl-table-cell_3.entry.js +224 -0
- package/dist/esm/xpl-table-footer.entry.js +1 -1
- package/dist/esm/xpl-table-header.entry.js +1 -1
- package/dist/esm/xpl-table-row.entry.js +44 -3
- package/dist/esm/xpl-table.entry.js +1204 -80
- package/dist/esm/xpl-tabs.entry.js +5 -5
- package/dist/esm/xpl-toast.entry.js +2 -2
- package/dist/esm/xpl-toggle.entry.js +3 -3
- package/dist/esm/xpl-toolbar.entry.js +2 -2
- package/dist/esm/xpl-tooltip.entry.js +1 -1
- package/dist/esm/xpl-top-nav-item.entry.js +2 -2
- package/dist/esm/xpl-top-nav-menu.entry.js +2 -2
- package/dist/esm/xpl-top-nav.entry.js +5 -5
- package/dist/esm/xpl-utility-bar.entry.js +1 -1
- 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-cell/xpl-table-cell.d.ts +11 -0
- package/dist/types/components/xpl-table/xpl-table-header-cell/xpl-table-header-cell.d.ts +33 -0
- package/dist/types/components/xpl-table/xpl-table-row/xpl-table-row.d.ts +7 -0
- package/dist/types/components/xpl-table/xpl-table.d.ts +126 -22
- package/dist/types/components.d.ts +238 -60
- package/hydrate/index.js +1669 -265
- package/hydrate/index.mjs +1669 -265
- package/package.json +7 -7
- package/dist/apollo-core/p-056a99e4.entry.js +0 -1
- package/dist/apollo-core/p-068e3532.entry.js +0 -1
- package/dist/apollo-core/p-0a0a6e43.entry.js +0 -1
- package/dist/apollo-core/p-1a94c2d9.entry.js +0 -1
- package/dist/apollo-core/p-2faa7b9c.entry.js +0 -1
- package/dist/apollo-core/p-30b1b700.entry.js +0 -1
- package/dist/apollo-core/p-32084caf.entry.js +0 -1
- package/dist/apollo-core/p-38586952.entry.js +0 -1
- package/dist/apollo-core/p-50fae269.entry.js +0 -1
- package/dist/apollo-core/p-60cb3cfb.entry.js +0 -1
- package/dist/apollo-core/p-722b145a.entry.js +0 -1
- package/dist/apollo-core/p-75e5bfe0.entry.js +0 -1
- package/dist/apollo-core/p-77fe3cc1.entry.js +0 -1
- package/dist/apollo-core/p-83bb7607.entry.js +0 -1
- package/dist/apollo-core/p-8664d88b.entry.js +0 -1
- package/dist/apollo-core/p-8a925e9d.entry.js +0 -1
- package/dist/apollo-core/p-9064badb.entry.js +0 -1
- package/dist/apollo-core/p-969d5cca.entry.js +0 -1
- package/dist/apollo-core/p-99a79cf4.entry.js +0 -1
- package/dist/apollo-core/p-ae8a5f66.entry.js +0 -1
- package/dist/apollo-core/p-af8ebf49.entry.js +0 -1
- package/dist/apollo-core/p-b29025b2.entry.js +0 -1
- package/dist/apollo-core/p-b5a61076.entry.js +0 -1
- package/dist/apollo-core/p-bf7d8e18.entry.js +0 -1
- package/dist/apollo-core/p-c48e4884.entry.js +0 -1
- package/dist/apollo-core/p-cc57f20d.entry.js +0 -1
- package/dist/apollo-core/p-dca48977.entry.js +0 -1
- package/dist/apollo-core/p-e1833287.entry.js +0 -1
- package/dist/apollo-core/p-e2b73b60.entry.js +0 -1
- package/dist/apollo-core/p-e7e445b0.entry.js +0 -1
- package/dist/apollo-core/p-f1c103ff.entry.js +0 -1
- package/dist/apollo-core/p-ffc2f0cf.entry.js +0 -1
- package/dist/cjs/xpl-table-footer-cell.cjs.entry.js +0 -18
- package/dist/cjs/xpl-table-header-cell.cjs.entry.js +0 -59
- package/dist/collection/components/xpl-table-header-cell/xpl-table-header-cell.js +0 -190
- package/dist/components/p-9VnxPQLs.js +0 -1
- package/dist/components/p-B2oLZUDD.js +0 -1
- package/dist/components/p-BYYFsuD3.js +0 -1
- package/dist/components/p-BZtxVB1R.js +0 -1
- package/dist/components/p-CnVGKN63.js +0 -1
- package/dist/components/p-Cz7zDaI4.js +0 -1
- package/dist/components/p-D4rv6CNJ.js +0 -1
- package/dist/components/p-YG9Jza0y.js +0 -1
- package/dist/docs/xpl-table-header-cell/readme.md +0 -47
- package/dist/esm/xpl-table-footer-cell.entry.js +0 -16
- package/dist/esm/xpl-table-header-cell.entry.js +0 -57
- package/dist/types/components/xpl-table-header-cell/xpl-table-header-cell.d.ts +0 -13
package/dist/docs.json
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
{
|
|
2
|
-
"timestamp": "2026-08-
|
|
2
|
+
"timestamp": "2026-08-26T18:32:08",
|
|
3
3
|
"compiler": {
|
|
4
4
|
"name": "@stencil/core",
|
|
5
5
|
"version": "4.43.5",
|
|
@@ -466,7 +466,7 @@
|
|
|
466
466
|
"filePath": "src/components/components/xpl-avatar/xpl-avatar.tsx",
|
|
467
467
|
"encapsulation": "none",
|
|
468
468
|
"tag": "xpl-avatar",
|
|
469
|
-
"readme": "# xpl-avatar\n\nThe **Avatar** component shows a person or entity: a photo, initials on a colored surface, or custom slot content. It aligns with Apollo’s Figma patterns for default avatars, profile layouts, stacked groups, and rows with supporting text.\n\n## When to use\n\n- **Default (no `variant`)** — Inline UI: tables, nav, comments, lists. Supports image (`src`), initials from `name`, and an optional status dot (`status`).\n- **Profile (`variant=\"profile\"`)** — Large avatars for profile pages and settings surfaces; optional `status` dot uses the same badge palette as the default avatar.\n- **Group (`variant=\"group\"`)** — Stacked avatar groups with overflow count (`+N`). The `status` prop is not used (status dots are not shown for groups).\n- **With Text (`variant=\"with-text\"`)** — Horizontal layout with avatar paired with name and optional sub-text; optional `status` on the avatar image.\n\n\n| Variant | Purpose | `status` dot |\n| ----------- | ------------------------------------------------------ | ------------ |\n| *(none)* | Standard single avatar | Supported |\n| `profile` | Larger profile-sized avatar for settings/profile pages | Supported |\n| `group` | Stacked avatar group with overflow count (`+N`) | Not shown |\n| `with-text` | Avatar paired with name and optional sub-text | Supported |\n\n\n---\n\n## Quick Start\n\n### Basic Avatar (Image)\n\n```html\n<xpl-avatar name=\"Katie Wilson\" src=\"https://example.com/photo.jpg\"></xpl-avatar>\n```\n\n### Initials Placeholder (No Image)\n\n```html\n<!-- Automatic initials from name -->\n<xpl-avatar name=\"Katie Wilson\" color=\"green\"></xpl-avatar>\n\n<!-- Custom initials via slot -->\n<xpl-avatar color=\"primary\">KW</xpl-avatar>\n```\n\n### With Status Dot\n\nStatus dots are rendered with [`xpl-badge`] using `dot-only` and `bordered`. The `status` prop sets the badge **variant** , so avatar status colors stay aligned with badge semantics across the system.\n\n**Where `status` applies:** default (no `variant`), `profile`, and `with-text`. It does **not** apply to `group` — stacked groups ignore `status`.\n\n**`status` values** (same names as `xpl-badge` `variant` palette values):\n\n\n| `status` | Badge palette | Typical meaning (choose per product copy) |\n| -------- | ---------------- | ----------------------------------------- |\n| `purple` | Purple (default) | Default / general presence |\n| `green` | Green | Positive, available, success-aligned |\n| `yellow` | Yellow | Caution, pending, away, warning-aligned |\n| `orange` | Orange | Attention, busy, secondary emphasis |\n| `gray` | Gray | Neutral, offline, inactive |\n| `red` | Red | Error, do not disturb, critical |\n| `blue` | Blue | Informational, notifications |\n\n\n```html\n<xpl-avatar name=\"Alex Chen\" src=\"photo.jpg\" status=\"green\"></xpl-avatar>\n<xpl-avatar name=\"Jordan Lee\" status=\"red\"></xpl-avatar>\n<xpl-avatar name=\"Sam Smith\" status=\"gray\"></xpl-avatar>\n<xpl-avatar variant=\"with-text\" name=\"Riley Park\" sub-text=\"Designer\" src=\"photo.jpg\" status=\"blue\"></xpl-avatar>\n```\n\n### Clickable Avatar (Link)\n\n```html\n<xpl-avatar name=\"Profile\" src=\"photo.jpg\" href=\"/profile\" target=\"_blank\"></xpl-avatar>\n```\n\n---\n\n## Variant Examples\n\n### Profile Avatar (Larger Size)\n\nFor profile pages and settings surfaces. Optional `status` uses the same badge palette as other non-group variants.\n\n```html\n<!-- Large profile avatar (144px) -->\n<xpl-avatar variant=\"profile\" name=\"Katie Wilson\" src=\"photo.jpg\"></xpl-avatar>\n\n<!-- With status dot -->\n<xpl-avatar variant=\"profile\" name=\"Katie Wilson\" src=\"photo.jpg\" status=\"green\"></xpl-avatar>\n\n<!-- Small profile avatar (80px) -->\n<xpl-avatar variant=\"profile\" name=\"Jordan Lee\" size=\"sm\"></xpl-avatar>\n```\n\n### Avatar Group (Stacked)\n\nDisplays up to 4 visible avatars with a `+N` overflow pill for additional members. The `status` prop is not used in this layout (no per-avatar or group-level status dot).\n\n```html\n<!-- Basic group with JSON data -->\n<xpl-avatar\n variant=\"group\"\n group-data='[\n {\"name\": \"Alex\", \"color\": \"green\"},\n {\"name\": \"Jordan\", \"color\": \"yellow\"},\n {\"name\": \"Sam\", \"color\": \"pink\"},\n {\"src\": \"https://example.com/photo.jpg\", \"name\": \"Dana\"},\n {\"name\": \"Extra User\"}\n ]'\n></xpl-avatar>\n\n<!-- Medium group -->\n<xpl-avatar variant=\"group\" size=\"md\" group-data='[...]'></xpl-avatar>\n\n<!-- Small group -->\n<xpl-avatar variant=\"group\" size=\"sm\" group-data='[...]'></xpl-avatar>\n```\n\n**Group data format:**\n\n```typescript\ninterface AvatarGroupItem {\n src?: string; // Image URL (optional)\n name?: string; // Used for initials and alt text\n color?: 'green' | 'yellow' | 'pink' | 'primary' | 'secondary';\n}\n```\n\n### Avatar with Text\n\nHorizontal layout with avatar + name + optional sub-text (e.g., email).\n\n```html\n<!-- Basic with-text -->\n<xpl-avatar\n variant=\"with-text\"\n name=\"Katie Wilson\"\n sub-text=\"katie@example.com\"\n src=\"photo.jpg\"\n></xpl-avatar>\n\n<!-- Clickable version -->\n<xpl-avatar\n variant=\"with-text\"\n name=\"View Profile\"\n sub-text=\"Product Designer\"\n src=\"photo.jpg\"\n href=\"/profile\"\n></xpl-avatar>\n\n<!-- With status dot on the avatar -->\n<xpl-avatar\n variant=\"with-text\"\n name=\"Katie Wilson\"\n sub-text=\"katie@example.com\"\n src=\"photo.jpg\"\n status=\"green\"\n></xpl-avatar>\n```\n\n---\n\n## Size Options\n\n\n| Size | Default Avatar | Profile Avatar | Group |\n| -------- | -------------- | -------------- | ------------------ |\n| *(none)* | 40×40px | 144×144px | 40×40px per avatar |\n| `md` | 32×32px | — | 32×32px per avatar |\n| `sm` | 24×24px | 80×80px | 24×24px per avatar |\n\n\n---\n\n## Status vs placeholder `color`\n\n- **`status`** — Badge palette for the **status dot** (`purple` | `green` | `yellow` | `orange` | `gray` | `red` | `blue`). Passed through to `xpl-badge` as `variant`. Not used when `variant=\"group\"`.\n- **`color`** — Placeholder **surface** behind initials when there is no `src` (`green` | `yellow` | `pink` | `primary` | `secondary`). Unrelated to the status dot.\n\n## Color Options (Placeholder Backgrounds)\n\nUse `color` when no `src` is provided to set the placeholder background:\n\n- `green` — Positive accent\n- `yellow` — Highlight accent\n- `pink` — Pink accent\n- `primary` — Brand primary\n- `secondary` — Action primary (purple)\n\n---\n\n## Design tokens\n\nThese are the main Apollo Foundation tokens used in `packages/apollo-core/src/css/avatar.css`. Use them when overriding or migrating styles.\n\n| Role | Token(s) |\n| ---- | -------- |\n| Circular shape | `var(--xpl-border-radius-full)` |\n| Placeholder surface (default) | `var(--xpl-background-brand-secondary)`, `var(--xpl-text-inverse)` |\n| Placeholder `green` / `yellow` / `pink` | `var(--xpl-background-accent-positive)` / `var(--xpl-background-accent-highlight)` / `var(--xpl-background-accent-pink)` with `var(--xpl-text-inverse-on-light)` where applicable |\n| Placeholder `primary` / `secondary` | `var(--xpl-background-accent-brand)` / `var(--xpl-background-brand-secondary)` |\n| Link hover overlay | `var(--xpl-background-surface-transparent-25)` |\n| Focus outline | `var(--xpl-border-accent-default)` base; `color` modifiers use `var(--xpl-border-positive)`, `var(--xpl-border-accent-highlight)`, `var(--xpl-border-accent-brand)`, etc. (`outline` / `outline-offset` per `avatar.css`) |\n| With-text primary line | `var(--xpl-text-strong)`, `var(--xpl-font-size-title-5)`, `var(--xpl-font-weight-medium)` |\n| With-text secondary line | `var(--xpl-text-subdued)`, `var(--xpl-font-size-body)` |\n| Group overflow pill | `var(--xpl-background-surface-subtle)`, `var(--xpl-text-subdued)` |\n| Group avatar ring | `box-shadow` using `var(--xpl-border-large)` and `var(--xpl-background-surface-default)` |\n| Width / height | `var(--xpl-size-*)` for standard sizes; profile default uses `9rem` (documented in `TECH_DEBT.md`) |\n| Spacing & overlap | `var(--xpl-space-*)`, `var(--xpl-z-index-*)` |\n\n**Status dots** are styled by `xpl-badge`; see [`xpl-badge` readme](../xpl-badge/readme.md) for badge token usage.\n\n---\n\n## Accessibility\n\n- `name` is required for proper `alt` text on images and screen reader announcements\n- **Status dots** are implemented via `xpl-badge` and marked `aria-hidden` (purely visual); convey meaning in surrounding UI copy or labels if required\n- **Group overflow** includes `aria-label=\"{count} more\"` for screen readers\n- **Links** use native `<a>` elements with full keyboard support\n- **Disabled state**: Use `disabled` prop to disable link behavior while keeping visual styles\n- **Focus management**: All interactive avatars (links) use `:focus-visible` for keyboard focus indicators\n\n---\n\n## Best Practices\n\n1. **Always provide `name`** — Essential for accessibility (alt text and screen readers; for placeholder initials, slot input has higher priority than the value passed in `name`)\n2. **Use `color` for placeholder consistency** — Assign consistent colors to users based on ID or name hash\n3. **Limit group data** — While the component handles any number, consider capping at reasonable numbers for UX\n4. **Slot content** — Use the default slot sparingly; prefer `name` prop for consistent initials generation\n\n---\n\n## Migration Notes\n\n### Status Dot Implementation:\n\n**What changed:** Status dots are implemented with `xpl-badge` (`dot-only` + `bordered`). The `status` prop uses the **badge color palette** (`purple`, `green`, `yellow`, `orange`, `gray`, `red`, `blue`) — the same names as `xpl-badge` `variant` — so avatar status stays consistent with badge semantics.\n\n**Impact:**\n\n- **Internal markup:** The status dot renders as `<xpl-badge dot-only bordered variant=\"...\">` (with `variant` from `status`), not legacy `.xpl-avatar__dot--` classes.\n- **CSS targeting:** Custom selectors like `.xpl-avatar__dot--active` / `--warning` / `--inactive` are not used. Target `.xpl-avatar .xpl-badge--dot-only` if you must override styles.\n- **Prop values:** Use palette names above. Older examples sometimes used labels like `active` / `warning` / `inactive`; map those concepts to the palette (e.g. available → `green`, caution → `yellow`, offline → `gray`) per your design guidelines.\n\n**Recommended migration:**\n\n1. Replace custom CSS on `.xpl-avatar__dot--` with `.xpl-avatar .xpl-badge--dot-only` if needed\n2. Set `status` to the badge palette value that matches the intended color (see the status table in this readme)\n3. Remember `status` applies to default, `profile`, and `with-text` only — not `group`\n\n### Legacy `status` values — scheduled for removal (next major release)\n\n**These legacy string values are deprecated.** They exist only for backward compatibility with older integrations. They **will be removed** in the **next major** version of `@xplortech/apollo-core`. Plan your migration now; do not introduce new usage of the legacy names.\n\n| Deprecated `status` | Current mapping (temporary) | Replace with (badge palette) |\n| ------------------- | --------------------------- | ---------------------------- |\n| `active` | `green` | `green` |\n| `inactive` | `gray` | `gray` |\n| `warning` | `red` | `red` |\n\n**Why:** Status dots use the same vocabulary as `xpl-badge` variants (`purple`, `green`, `yellow`, `orange`, `gray`, `red`, `blue`). The old semantic aliases (`active` / `warning` / `inactive`) duplicate that meaning with different names and increase maintenance cost, so they are being dropped from the public API.\n\n**Action items before the major release:**\n\n1. Search your codebase for `status=\"active\"`, `status=\"inactive\"`, and `status=\"warning\"` on `<xpl-avatar>` (and framework wrappers).\n2. Replace each with the **`green`**, **`gray`**, or **`red`** value from the table above, matching your product intent.\n3. Re-test visuals: the mapped colors are unchanged today; after removal, only palette names will be accepted.\n\n### Component Dependency\n\nThis component now depends on `xpl-badge`. Ensure `xpl-badge` is loaded in your application when using avatars with status dots.\n\n",
|
|
469
|
+
"readme": "# xpl-avatar\n\nThe **Avatar** component shows a person or entity: a photo, initials on a colored surface, or custom slot content. It aligns with Apollo’s Figma patterns for default avatars, profile layouts, stacked groups, and rows with supporting text.\n\n## When to use\n\n- **Default (no `variant`)** — Inline UI: tables, nav, comments, lists. Supports image (`src`), initials from `name`, and an optional status dot (`status`).\n- **Profile (`variant=\"profile\"`)** — Large avatars for profile pages and settings surfaces; optional `status` dot uses the same badge palette as the default avatar.\n- **Group (`variant=\"group\"`)** — Stacked avatar groups with overflow count (`+N`). The `status` prop is not used (status dots are not shown for groups).\n- **With Text (`variant=\"with-text\"`)** — Horizontal layout with avatar paired with name and optional sub-text; optional `status` on the avatar image.\n\n\n| Variant | Purpose | `status` dot |\n| ----------- | ------------------------------------------------------ | ------------ |\n| *(none)* | Standard single avatar | Supported |\n| `profile` | Larger profile-sized avatar for settings/profile pages | Supported |\n| `group` | Stacked avatar group with overflow count (`+N`) | Not shown |\n| `with-text` | Avatar paired with name and optional sub-text | Supported |\n\n\n---\n\n## Quick Start\n\n### Basic Avatar (Image)\n\n```html\n<xpl-avatar name=\"Katie Wilson\" src=\"https://example.com/photo.jpg\"></xpl-avatar>\n```\n\n### Initials Placeholder (No Image)\n\n```html\n<!-- Automatic initials from name -->\n<xpl-avatar name=\"Katie Wilson\" color=\"green\"></xpl-avatar>\n\n<!-- Custom initials via slot -->\n<xpl-avatar color=\"primary\">KW</xpl-avatar>\n```\n\n### With Status Dot\n\nStatus dots are rendered with [`xpl-badge`] using `dot-only` and `bordered`. The `status` prop sets the badge **variant** , so avatar status colors stay aligned with badge semantics across the system.\n\n**Where `status` applies:** default (no `variant`), `profile`, and `with-text`. It does **not** apply to `group` — stacked groups ignore `status`.\n\n**`status` values** (same names as `xpl-badge` `variant` palette values):\n\n\n| `status` | Badge palette | Typical meaning (choose per product copy) |\n| -------- | ---------------- | ----------------------------------------- |\n| `purple` | Purple (default) | Default / general presence |\n| `green` | Green | Positive, available, success-aligned |\n| `yellow` | Yellow | Caution, pending, away, warning-aligned |\n| `orange` | Orange | Attention, busy, secondary emphasis |\n| `gray` | Gray | Neutral, offline, inactive |\n| `red` | Red | Error, do not disturb, critical |\n| `blue` | Blue | Informational, notifications |\n\n\n```html\n<xpl-avatar name=\"Alex Chen\" src=\"photo.jpg\" status=\"green\"></xpl-avatar>\n<xpl-avatar name=\"Jordan Lee\" status=\"red\"></xpl-avatar>\n<xpl-avatar name=\"Sam Smith\" status=\"gray\"></xpl-avatar>\n<xpl-avatar variant=\"with-text\" name=\"Riley Park\" sub-text=\"Designer\" src=\"photo.jpg\" status=\"blue\"></xpl-avatar>\n```\n\n### Clickable Avatar (Link)\n\n```html\n<xpl-avatar name=\"Profile\" src=\"photo.jpg\" href=\"/profile\" target=\"_blank\"></xpl-avatar>\n```\n\n---\n\n## Variant Examples\n\n### Profile Avatar (Larger Size)\n\nFor profile pages and settings surfaces. Optional `status` uses the same badge palette as other non-group variants.\n\n```html\n<!-- Large profile avatar (144px) -->\n<xpl-avatar variant=\"profile\" name=\"Katie Wilson\" src=\"photo.jpg\"></xpl-avatar>\n\n<!-- With status dot -->\n<xpl-avatar variant=\"profile\" name=\"Katie Wilson\" src=\"photo.jpg\" status=\"green\"></xpl-avatar>\n\n<!-- Small profile avatar (80px) -->\n<xpl-avatar variant=\"profile\" name=\"Jordan Lee\" size=\"sm\"></xpl-avatar>\n```\n\n### Avatar Group (Stacked)\n\nDisplays up to 4 visible avatars with a `+N` overflow pill for additional members. The `status` prop is not used in this layout (no per-avatar or group-level status dot).\n\n```html\n<!-- Basic group with JSON data -->\n<xpl-avatar\n variant=\"group\"\n group-data='[\n {\"name\": \"Alex\", \"color\": \"green\"},\n {\"name\": \"Jordan\", \"color\": \"yellow\"},\n {\"name\": \"Sam\", \"color\": \"pink\"},\n {\"src\": \"https://example.com/photo.jpg\", \"name\": \"Dana\"},\n {\"name\": \"Extra User\"}\n ]'\n></xpl-avatar>\n\n<!-- Medium group -->\n<xpl-avatar variant=\"group\" size=\"md\" group-data='[...]'></xpl-avatar>\n\n<!-- Small group -->\n<xpl-avatar variant=\"group\" size=\"sm\" group-data='[...]'></xpl-avatar>\n```\n\n**Group data format:**\n\n```typescript\ninterface AvatarGroupItem {\n src?: string; // Image URL (optional)\n name?: string; // Used for initials and alt text\n color?: 'green' | 'yellow' | 'pink' | 'primary' | 'secondary';\n}\n```\n\n### Avatar with Text\n\nHorizontal layout with avatar + name + optional sub-text (e.g., email).\n\n```html\n<!-- Basic with-text -->\n<xpl-avatar\n variant=\"with-text\"\n name=\"Katie Wilson\"\n sub-text=\"katie@example.com\"\n src=\"photo.jpg\"\n></xpl-avatar>\n\n<!-- Clickable version -->\n<xpl-avatar\n variant=\"with-text\"\n name=\"View Profile\"\n sub-text=\"Product Designer\"\n src=\"photo.jpg\"\n href=\"/profile\"\n></xpl-avatar>\n\n<!-- With status dot on the avatar -->\n<xpl-avatar\n variant=\"with-text\"\n name=\"Katie Wilson\"\n sub-text=\"katie@example.com\"\n src=\"photo.jpg\"\n status=\"green\"\n></xpl-avatar>\n```\n\n---\n\n## Size Options\n\n\n| Size | Default Avatar | Profile Avatar | Group |\n| -------- | -------------- | -------------- | ------------------ |\n| *(none)* | 40×40px | 144×144px | 40×40px per avatar |\n| `md` | 32×32px | — | 32×32px per avatar |\n| `sm` | 24×24px | 80×80px | 24×24px per avatar |\n\n\n---\n\n## Status vs placeholder `color`\n\n- **`status`** — Badge palette for the **status dot** (`purple` | `green` | `yellow` | `orange` | `gray` | `red` | `blue`). Passed through to `xpl-badge` as `variant`. Not used when `variant=\"group\"`.\n- **`color`** — Placeholder **surface** behind initials when there is no `src` (`green` | `yellow` | `pink` | `primary` | `secondary`). Unrelated to the status dot.\n\n## Color Options (Placeholder Backgrounds)\n\nUse `color` when no `src` is provided to set the placeholder background:\n\n- `green` — Positive accent\n- `yellow` — Highlight accent\n- `pink` — Pink accent\n- `primary` — Brand primary\n- `secondary` — Action primary (purple)\n\n---\n\n## Design tokens\n\nThese are the main Apollo Foundation tokens used in `packages/apollo-core/src/css/avatar.css`. Use them when overriding or migrating styles.\n\n| Role | Token(s) |\n| ---- | -------- |\n| Circular shape | `var(--xpl-border-radius-full)` |\n| Placeholder surface (default) | `var(--xpl-background-brand-secondary)`, `var(--xpl-text-inverse)` |\n| Placeholder `green` / `yellow` / `pink` | `var(--xpl-background-accent-positive)` / `var(--xpl-background-accent-highlight)` / `var(--xpl-background-accent-pink)` with `var(--xpl-text-inverse-on-light)` where applicable |\n| Placeholder `primary` / `secondary` | `var(--xpl-background-accent-brand)` / `var(--xpl-background-brand-secondary)` |\n| Link hover overlay | `var(--xpl-background-surface-transparent-25)` |\n| Focus outline | `var(--xpl-border-accent-default)` base; `color` modifiers use `var(--xpl-border-positive)`, `var(--xpl-border-accent-highlight)`, `var(--xpl-border-accent-brand)`, etc. (`outline` / `outline-offset` per `avatar.css`) |\n| With-text primary line | `var(--xpl-text-strong)`, `var(--xpl-font-size-title-5)`, `var(--xpl-font-weight-medium)` |\n| With-text secondary line | `var(--xpl-text-subdued)`, `var(--xpl-font-size-body)` |\n| Group overflow pill | `var(--xpl-background-surface-subtle)`, `var(--xpl-text-subdued)` |\n| Group avatar ring | `box-shadow` using `var(--xpl-border-large)` and `var(--xpl-background-surface-default)` |\n| Width / height | `var(--xpl-size-*)` for standard sizes; profile default uses `var(--xpl-size-900)` (144px) |\n| Spacing & overlap | `var(--xpl-space-*)`, `var(--xpl-z-index-*)` |\n\n**Status dots** are styled by `xpl-badge`; see [`xpl-badge` readme](../xpl-badge/readme.md) for badge token usage.\n\n---\n\n## Accessibility\n\n- `name` is required for proper `alt` text on images and screen reader announcements\n- **Status dots** are implemented via `xpl-badge` and marked `aria-hidden` (purely visual); convey meaning in surrounding UI copy or labels if required\n- **Group overflow** includes `aria-label=\"{count} more\"` for screen readers\n- **Links** use native `<a>` elements with full keyboard support\n- **Disabled state**: Use `disabled` prop to disable link behavior while keeping visual styles\n- **Focus management**: All interactive avatars (links) use `:focus-visible` for keyboard focus indicators\n\n---\n\n## Best Practices\n\n1. **Always provide `name`** — Essential for accessibility (alt text and screen readers; for placeholder initials, slot input has higher priority than the value passed in `name`)\n2. **Use `color` for placeholder consistency** — Assign consistent colors to users based on ID or name hash\n3. **Limit group data** — While the component handles any number, consider capping at reasonable numbers for UX\n4. **Slot content** — Use the default slot sparingly; prefer `name` prop for consistent initials generation\n\n---\n\n## Migration Notes\n\n### Status Dot Implementation:\n\n**What changed:** Status dots are implemented with `xpl-badge` (`dot-only` + `bordered`). The `status` prop uses the **badge color palette** (`purple`, `green`, `yellow`, `orange`, `gray`, `red`, `blue`) — the same names as `xpl-badge` `variant` — so avatar status stays consistent with badge semantics.\n\n**Impact:**\n\n- **Internal markup:** The status dot renders as `<xpl-badge dot-only bordered variant=\"...\">` (with `variant` from `status`), not legacy `.xpl-avatar__dot--` classes.\n- **CSS targeting:** Custom selectors like `.xpl-avatar__dot--active` / `--warning` / `--inactive` are not used. Target `.xpl-avatar .xpl-badge--dot-only` if you must override styles.\n- **Prop values:** Use palette names above. Older examples sometimes used labels like `active` / `warning` / `inactive`; map those concepts to the palette (e.g. available → `green`, caution → `yellow`, offline → `gray`) per your design guidelines.\n\n**Recommended migration:**\n\n1. Replace custom CSS on `.xpl-avatar__dot--` with `.xpl-avatar .xpl-badge--dot-only` if needed\n2. Set `status` to the badge palette value that matches the intended color (see the status table in this readme)\n3. Remember `status` applies to default, `profile`, and `with-text` only — not `group`\n\n### Legacy `status` values — scheduled for removal (next major release)\n\n**These legacy string values are deprecated.** They exist only for backward compatibility with older integrations. They **will be removed** in the **next major** version of `@xplortech/apollo-core`. Plan your migration now; do not introduce new usage of the legacy names.\n\n| Deprecated `status` | Current mapping (temporary) | Replace with (badge palette) |\n| ------------------- | --------------------------- | ---------------------------- |\n| `active` | `green` | `green` |\n| `inactive` | `gray` | `gray` |\n| `warning` | `red` | `red` |\n\n**Why:** Status dots use the same vocabulary as `xpl-badge` variants (`purple`, `green`, `yellow`, `orange`, `gray`, `red`, `blue`). The old semantic aliases (`active` / `warning` / `inactive`) duplicate that meaning with different names and increase maintenance cost, so they are being dropped from the public API.\n\n**Action items before the major release:**\n\n1. Search your codebase for `status=\"active\"`, `status=\"inactive\"`, and `status=\"warning\"` on `<xpl-avatar>` (and framework wrappers).\n2. Replace each with the **`green`**, **`gray`**, or **`red`** value from the table above, matching your product intent.\n3. Re-test visuals: the mapped colors are unchanged today; after removal, only palette names will be accepted.\n\n### Component Dependency\n\nThis component now depends on `xpl-badge`. Ensure `xpl-badge` is loaded in your application when using avatars with status dots.\n\n",
|
|
470
470
|
"docs": "The **Avatar** component shows a person or entity: a photo, initials on a colored surface, or custom slot content. It aligns with Apollo’s Figma patterns for default avatars, profile layouts, stacked groups, and rows with supporting text.",
|
|
471
471
|
"docsTags": [
|
|
472
472
|
{
|
|
@@ -2823,7 +2823,6 @@
|
|
|
2823
2823
|
"dependents": [
|
|
2824
2824
|
"xpl-choicelist",
|
|
2825
2825
|
"xpl-header-accordion",
|
|
2826
|
-
"xpl-table",
|
|
2827
2826
|
"xpl-table-header-cell"
|
|
2828
2827
|
],
|
|
2829
2828
|
"dependencies": [],
|
|
@@ -2834,9 +2833,6 @@
|
|
|
2834
2833
|
"xpl-header-accordion": [
|
|
2835
2834
|
"xpl-checkbox"
|
|
2836
2835
|
],
|
|
2837
|
-
"xpl-table": [
|
|
2838
|
-
"xpl-checkbox"
|
|
2839
|
-
],
|
|
2840
2836
|
"xpl-table-header-cell": [
|
|
2841
2837
|
"xpl-checkbox"
|
|
2842
2838
|
]
|
|
@@ -3152,7 +3148,7 @@
|
|
|
3152
3148
|
"filePath": "src/components/components/xpl-data-card/xpl-data-card.tsx",
|
|
3153
3149
|
"encapsulation": "none",
|
|
3154
3150
|
"tag": "xpl-data-card",
|
|
3155
|
-
"readme": "# xpl-data-card\n\nData Cards display snippets of information and can be linked to larger data sets. Data Cards give users \"at a glance\" information about their data.\n\nThe `icon` and `smallStatIcon` properties accept icon names as strings. See [xpl-icon available icons](../xpl-icon/ICONS.md) for the complete list.\n\n## Design Tokens\n\nThe card is styled entirely with Apollo Foundation purpose-specific tokens (dark mode is automatic — no `.dark` overrides).\n\n| Element / state | Property | Token |\n| --- | --- | --- |\n| Host surface | `background-color` | `--xpl-background-surface-default` |\n| Host / anchor border | `border-color` | `--xpl-border-default` |\n| Host, header, stats text | `color` | `--xpl-text-default` |\n| Header arrow (chevron) icon | `color` | `--xpl-icon-default` |\n| Detail text | `color` | `--xpl-text-subdued` |\n| `.positive` stat | `color` | `--xpl-text-positive` |\n| `.negative` stat | `color` | `--xpl-text-negative` |\n| `.neutral` stat | `color` | `--xpl-text-subdued` |\n| Primary leading icon | `color` | `--xpl-icon-brand` (orange) |\n| Secondary leading icon | `color` | `--xpl-background-action-primary-default` (purple) |\n| Anchor hover / active border | `border` | `--xpl-border-small` + `--xpl-background-action-primary-default` |\n| Anchor focus-visible border | `border` | `--xpl-border-small` + `--xpl-border-focus` (purple) |\n| Anchor focus-visible outline | `outline` | `--xpl-border-focus`, 2px width / 2px offset |\n| Anchor hover / focus-visible radius | `border-radius` | `--xpl-border-radius-default` |\n| Anchor hover shadow | `box-shadow` | `--xpl-
|
|
3151
|
+
"readme": "# xpl-data-card\n\nData Cards display snippets of information and can be linked to larger data sets. Data Cards give users \"at a glance\" information about their data.\n\nThe `icon` and `smallStatIcon` properties accept icon names as strings. See [xpl-icon available icons](../xpl-icon/ICONS.md) for the complete list.\n\n## Design Tokens\n\nThe card is styled entirely with Apollo Foundation purpose-specific tokens (dark mode is automatic — no `.dark` overrides).\n\n| Element / state | Property | Token |\n| --- | --- | --- |\n| Host surface | `background-color` | `--xpl-background-surface-default` |\n| Host / anchor border | `border-color` | `--xpl-border-default` |\n| Host, header, stats text | `color` | `--xpl-text-default` |\n| Header arrow (chevron) icon | `color` | `--xpl-icon-default` |\n| Detail text | `color` | `--xpl-text-subdued` |\n| `.positive` stat | `color` | `--xpl-text-positive` |\n| `.negative` stat | `color` | `--xpl-text-negative` |\n| `.neutral` stat | `color` | `--xpl-text-subdued` |\n| Primary leading icon | `color` | `--xpl-icon-brand` (orange) |\n| Secondary leading icon | `color` | `--xpl-background-action-primary-default` (purple) |\n| Anchor hover / active border | `border` | `--xpl-border-small` + `--xpl-background-action-primary-default` |\n| Anchor focus-visible border | `border` | `--xpl-border-small` + `--xpl-border-focus` (purple) |\n| Anchor focus-visible outline | `outline` | `--xpl-border-focus`, 2px width / 2px offset |\n| Anchor hover / focus-visible radius | `border-radius` | `--xpl-border-radius-default` |\n| Anchor hover shadow | `box-shadow` | `--xpl-elevation-2` (theme-aware) |\n| Header / stat spacing | `margin` | `--xpl-space-4`, `--xpl-space-6` |\n| Container-query stat | `font-size` | `--xpl-font-size-title-2` |\n\nThe resting anchor overlay keeps a `0.375rem` (6px) radius to match the card's `rounded-md`; Foundation has no 6px radius token (see `TECH_DEBT.md`).\n",
|
|
3156
3152
|
"docs": "Data Cards display snippets of information and can be linked to larger data sets. Data Cards give users \"at a glance\" information about their data.\n\nThe `icon` and `smallStatIcon` properties accept icon names as strings. See [xpl-icon available icons](../xpl-icon/ICONS.md) for the complete list.",
|
|
3157
3153
|
"docsTags": [
|
|
3158
3154
|
{
|
|
@@ -4413,8 +4409,8 @@
|
|
|
4413
4409
|
"filePath": "src/components/components/xpl-dynamic-table/xpl-dynamic-table.tsx",
|
|
4414
4410
|
"encapsulation": "none",
|
|
4415
4411
|
"tag": "xpl-dynamic-table",
|
|
4416
|
-
"readme": "# xpl-dynamic-table\n\n> **Note:** This component is currently in beta. Use with caution as it may have breaking changes in future releases.\n\nThe Dynamic Table is a rich content table that can accommodate multiple types of data
|
|
4417
|
-
"docs": "> **Note:** This component is currently in beta. Use with caution as it may have breaking changes in future releases.\n\nThe Dynamic Table is a rich content table that can accommodate multiple types of data.",
|
|
4412
|
+
"readme": "# xpl-dynamic-table\n\n> **Note:** This component is currently in beta. Use with caution as it may have breaking changes in future releases.\n\nThe Dynamic Table is a rich content table that can accommodate multiple types of data.\n\n> **[DEPRECATED]** Use the compositional `<xpl-table>` API instead.\n> This component will be removed in a future major release.\n\n## Design Tokens\n\nThe table, cells, and rows use Apollo Foundation purpose-specific tokens (light / dark resolve automatically — no `.dark` overrides):\n\n**Table** (`.xpl-dynamic-table`)\n\n| Element | Property | Token |\n| --- | --- | --- |\n| Grid columns | `grid-template-columns` | `--xpl-column-widths` (set at runtime from header cell widths) |\n| Row gap (with accordions) | `row-gap` (8px) | `--xpl-space-8` |\n\n**Cell** (`.xpl-dynamic-table-cell`)\n\n| Element | Property | Token |\n| --- | --- | --- |\n| Cell | Background | `--xpl-background-surface-default` |\n| Cell | Border | `--xpl-border-default` |\n| Cell | Text | `--xpl-text-default` |\n| Cell | Typography (title-5 / medium / 1.4286) | `@extend .xpl-text-title-5` |\n| Cell | Height (56px) | `--xpl-size-350` |\n| Cell | Min width (48px) | `--xpl-size-300` |\n| Cell rounded corners | Border radius (8px) | `--xpl-border-radius-default` |\n| Cell icons (chevron, kebab) | Color | `--xpl-icon-default` |\n| Dropdown button (`:focus-visible`) | Inset ring | `--xpl-border-focus` |\n\n**Row** (`.xpl-dynamic-table-row`)\n\n| State | Property | Token |\n| --- | --- | --- |\n| First cell | Left border | `--xpl-border-default` |\n| Selected | Cell background | `--xpl-background-surface-information` |\n| Disabled | Cell background | `--xpl-background-surface-subtlest` |\n| Disabled | Cell / badge text | `--xpl-text-disabled` |\n| Disabled | Cell icons | `--xpl-icon-disabled` |\n",
|
|
4413
|
+
"docs": "> **Note:** This component is currently in beta. Use with caution as it may have breaking changes in future releases.\n\nThe Dynamic Table is a rich content table that can accommodate multiple types of data.\n\n> **[DEPRECATED]** Use the compositional `<xpl-table>` API instead.\n> This component will be removed in a future major release.",
|
|
4418
4414
|
"docsTags": [
|
|
4419
4415
|
{
|
|
4420
4416
|
"name": "since",
|
|
@@ -4466,8 +4462,8 @@
|
|
|
4466
4462
|
"filePath": "src/components/components/xpl-dynamic-table-cell/xpl-dynamic-table-cell.tsx",
|
|
4467
4463
|
"encapsulation": "none",
|
|
4468
4464
|
"tag": "xpl-dynamic-table-cell",
|
|
4469
|
-
"readme": "# xpl-dynamic-table-cell\n\n> **Note:** This component is currently in beta. Use with caution as it may have breaking changes in future releases.\n\n",
|
|
4470
|
-
"docs": "> **Note:** This component is currently in beta. Use with caution as it may have breaking changes in future releases.",
|
|
4465
|
+
"readme": "# xpl-dynamic-table-cell\n\n> **Note:** This component is currently in beta. Use with caution as it may have breaking changes in future releases.\n\n> **[DEPRECATED]** Use `<xpl-table-cell>` instead.\n> This component will be removed in a future major release.\n",
|
|
4466
|
+
"docs": "> **Note:** This component is currently in beta. Use with caution as it may have breaking changes in future releases.\n\n> **[DEPRECATED]** Use `<xpl-table-cell>` instead.\n> This component will be removed in a future major release.",
|
|
4471
4467
|
"docsTags": [
|
|
4472
4468
|
{
|
|
4473
4469
|
"name": "since",
|
|
@@ -4521,8 +4517,8 @@
|
|
|
4521
4517
|
"filePath": "src/components/components/xpl-dynamic-table-row/xpl-dynamic-table-row.tsx",
|
|
4522
4518
|
"encapsulation": "none",
|
|
4523
4519
|
"tag": "xpl-dynamic-table-row",
|
|
4524
|
-
"readme": "# xpl-dynamic-table-row\n\n> **Note:** This component is currently in beta. Use with caution as it may have breaking changes in future releases.\n\n",
|
|
4525
|
-
"docs": "> **Note:** This component is currently in beta. Use with caution as it may have breaking changes in future releases.",
|
|
4520
|
+
"readme": "# xpl-dynamic-table-row\n\n> **Note:** This component is currently in beta. Use with caution as it may have breaking changes in future releases.\n\n> **[DEPRECATED]** Use `<xpl-table-row>` instead.\n> This component will be removed in a future major release.\n",
|
|
4521
|
+
"docs": "> **Note:** This component is currently in beta. Use with caution as it may have breaking changes in future releases.\n\n> **[DEPRECATED]** Use `<xpl-table-row>` instead.\n> This component will be removed in a future major release.",
|
|
4526
4522
|
"docsTags": [
|
|
4527
4523
|
{
|
|
4528
4524
|
"name": "since",
|
|
@@ -8085,7 +8081,7 @@
|
|
|
8085
8081
|
"filePath": "src/components/components/xpl-input/xpl-input-time/xpl-input-time.tsx",
|
|
8086
8082
|
"encapsulation": "none",
|
|
8087
8083
|
"tag": "xpl-input-time",
|
|
8088
|
-
"readme": "# xpl-input-time\n\n\n\n### Design Tokens\n\nTokens used by this component from `@xplortech/apollo-foundation`.\n\n**Color**\n- `--xpl-border-negative` — error state border color (unified with input-date / input-color)\n- `--xpl-icon-default` — leading clock icon color (matches input-date's calendar icon)\n- `--xpl-
|
|
8084
|
+
"readme": "# xpl-input-time\n\n\n\n### Design Tokens\n\nTokens used by this component from `@xplortech/apollo-foundation`.\n\n**Color**\n- `--xpl-border-negative` — error state border color (unified with input-date / input-color)\n- `--xpl-icon-default` — leading clock icon color (matches input-date's calendar icon)\n- `--xpl-elevation-2` — time dropdown box-shadow (theme-aware; references the surface-transparent tokens, which flip to white-based transparency in dark mode)\n",
|
|
8089
8085
|
"docs": "",
|
|
8090
8086
|
"docsTags": [],
|
|
8091
8087
|
"usage": {},
|
|
@@ -8532,7 +8528,7 @@
|
|
|
8532
8528
|
"filePath": "src/components/components/xpl-large-card/xpl-large-card.tsx",
|
|
8533
8529
|
"encapsulation": "none",
|
|
8534
8530
|
"tag": "xpl-large-card",
|
|
8535
|
-
"readme": "# xpl-large-card\n\nA card is a container and can contain any type of information. Cards contain actions and a content slot. Cards are flexible and can be arranged in grids or lists.\n\n## Design Tokens\n\nThe card is styled entirely with Apollo Foundation purpose-specific tokens (dark mode is automatic — no `.dark` overrides).\n\n| Element / state | Property | Token |\n| --- | --- | --- |\n| Host surface | `background-color` | `--xpl-background-surface-default` |\n| Host / anchor border | `border-color` | `--xpl-border-default` |\n| Host, header text | `color` | `--xpl-text-default` |\n| Header arrow (chevron) icon | `color` | `--xpl-icon-default` |\n| Description text | `color` | `--xpl-text-subdued` |\n| Anchor hover / active border | `border` | `--xpl-border-small` + `--xpl-background-action-primary-default` |\n| Anchor focus-visible border | `border` | `--xpl-border-small` + `--xpl-border-focus` (purple) |\n| Anchor focus-visible outline | `outline` | `--xpl-border-focus`, 2px width / 2px offset |\n| Anchor hover / focus-visible radius | `border-radius` | `--xpl-border-radius-default` |\n| Anchor hover shadow | `box-shadow` | `--xpl-
|
|
8531
|
+
"readme": "# xpl-large-card\n\nA card is a container and can contain any type of information. Cards contain actions and a content slot. Cards are flexible and can be arranged in grids or lists.\n\n## Design Tokens\n\nThe card is styled entirely with Apollo Foundation purpose-specific tokens (dark mode is automatic — no `.dark` overrides).\n\n| Element / state | Property | Token |\n| --- | --- | --- |\n| Host surface | `background-color` | `--xpl-background-surface-default` |\n| Host / anchor border | `border-color` | `--xpl-border-default` |\n| Host, header text | `color` | `--xpl-text-default` |\n| Header arrow (chevron) icon | `color` | `--xpl-icon-default` |\n| Description text | `color` | `--xpl-text-subdued` |\n| Anchor hover / active border | `border` | `--xpl-border-small` + `--xpl-background-action-primary-default` |\n| Anchor focus-visible border | `border` | `--xpl-border-small` + `--xpl-border-focus` (purple) |\n| Anchor focus-visible outline | `outline` | `--xpl-border-focus`, 2px width / 2px offset |\n| Anchor hover / focus-visible radius | `border-radius` | `--xpl-border-radius-default` |\n| Anchor hover shadow | `box-shadow` | `--xpl-elevation-2` (theme-aware) |\n| Header / tooltip / icon spacing | `margin` | `--xpl-space-4`, `--xpl-space-6`, `--xpl-space-8` |\n",
|
|
8536
8532
|
"docs": "A card is a container and can contain any type of information. Cards contain actions and a content slot. Cards are flexible and can be arranged in grids or lists.",
|
|
8537
8533
|
"docsTags": [
|
|
8538
8534
|
{
|
|
@@ -9545,7 +9541,7 @@
|
|
|
9545
9541
|
"filePath": "src/components/components/xpl-modal/xpl-modal.tsx",
|
|
9546
9542
|
"encapsulation": "none",
|
|
9547
9543
|
"tag": "xpl-modal",
|
|
9548
|
-
"readme": "# xpl-modal\n\nModals are dialogs that focus the user’s attention exclusively on one task or piece of information via a window layer above the current content.\n\nModals are disruptive and should only be used when disrupting the user’s flow is desired.\n\n## Token Use\n\n`xpl-modal` uses Apollo Foundation purpose-specific tokens; light and dark mode are handled by the token definitions, so the component has no `.dark` overrides.\n\n| Element | Property | Token |\n| ------- | -------- | ----- |\n| `&__dialog` | background | `--xpl-background-surface-default` |\n| `&__dialog` | text color | `--xpl-text-default` |\n| `&__dialog` | radius | `--xpl-border-radius-large` |\n| `&__dialog` | shadow
|
|
9544
|
+
"readme": "# xpl-modal\n\nModals are dialogs that focus the user’s attention exclusively on one task or piece of information via a window layer above the current content.\n\nModals are disruptive and should only be used when disrupting the user’s flow is desired.\n\n## Token Use\n\n`xpl-modal` uses Apollo Foundation purpose-specific tokens; light and dark mode are handled by the token definitions, so the component has no `.dark` overrides.\n\n| Element | Property | Token |\n| ------- | -------- | ----- |\n| `&__dialog` | background | `--xpl-background-surface-default` |\n| `&__dialog` | text color | `--xpl-text-default` |\n| `&__dialog` | radius | `--xpl-border-radius-large` |\n| `&__dialog` | shadow | `--xpl-elevation-4` (theme-aware) |\n| `&__title` | typography (size / weight / line-height) | `@extend .xpl-text-title-3` → `title-3` / `bold` / `1.4` |\n| `&__subtitle` | color | `--xpl-text-subdued` |\n| `&__subtitle` | typography (size / weight / line-height) | `@extend .xpl-text-callout` → `callout` / `normal` / `1.3333` |\n| `&__body` | typography (size / weight / line-height) | `@extend .xpl-text-body` → `body` / `normal` / `1.4286` |\n| `&__alert-icon` | color | `--xpl-icon-negative` |\n\nModal widths are documented CSS literals: small `400px`, medium `600px`, large `800px`, mobile `350px` (see `modal.css` and `TECH_DEBT.md`).\n\n> **Elevation shadow:** the dialog uses `--xpl-elevation-4` (theme-aware), which matches Figma's \"Shadow 4\" style (`y=20`, `blur=25`, color `background-surface-transparent-10`). See `TECH_DEBT.md`.\n\n## Accessibility\n\n`xpl-modal` renders a native `<dialog>` shown via `showModal()`: focus is trapped inside the modal while it is open, and `Escape` closes it (emitting `modalClosed`).\n\nKeyboard tab order follows the DOM order of the footer slots: **close (×) → `primary` → `secondary` → `tertiary` → back to ×**. The footer's visual layout (tertiary pinned far-left, secondary and primary right-aligned) is produced with CSS `order` in `modal.css`, so the visual arrangement and the tab order are independent by design — do not reorder the `<slot>` elements in the component template to change the layout.\n\n### Accessible names\n\nThe dialog is named by the `title` slot: the component wraps that slot in `.xpl-modal__title-text`, gives it a per-instance id, and points the dialog's `aria-labelledby` at it. Always provide a `title` slot — without one the dialog is announced only as \"dialog\". The label deliberately references the title text rather than the whole `.xpl-modal__title` row, which would fold the close button's own name into the dialog's name.\n\nThe close (×) button carries `aria-label=\"Close modal\"`, so screen readers announce its purpose instead of the underlying icon name.\n\n## Mounting and unmounting\n\n`showModal()` promotes the dialog into the browser's top layer, where it survives the removal of its host element. `xpl-modal` closes the dialog when the host disconnects so a removed modal cannot leave a blocking overlay behind, and re-opens it — reattaching the `Escape` and backdrop listeners — if the host is connected again while `isOpen` is still `true`. Frameworks that move or reparent DOM nodes therefore get consistent state without extra work from the consumer.\n",
|
|
9549
9545
|
"docs": "Modals are dialogs that focus the user’s attention exclusively on one task or piece of information via a window layer above the current content.\n\nModals are disruptive and should only be used when disrupting the user’s flow is desired.",
|
|
9550
9546
|
"docsTags": [
|
|
9551
9547
|
{
|
|
@@ -10256,7 +10252,7 @@
|
|
|
10256
10252
|
"filePath": "src/components/components/xpl-popover/xpl-popover.tsx",
|
|
10257
10253
|
"encapsulation": "none",
|
|
10258
10254
|
"tag": "xpl-popover",
|
|
10259
|
-
"readme": "# xpl-popover\n\nA popover is an overlay that pops up over all other layers and is triggered by a click or tap, and dismissed by clicking outside the popover or a dismiss icon. Popovers can contain additional actions and allow those actions to be triggered.\n\n\n### Design Tokens\n\nTokens used by this component from `@xplortech/apollo-foundation`.\n\n**Color**\n- `--xpl-background-surface-default` — content panel background and arrow fill\n- `--xpl-
|
|
10255
|
+
"readme": "# xpl-popover\n\nA popover is an overlay that pops up over all other layers and is triggered by a click or tap, and dismissed by clicking outside the popover or a dismiss icon. Popovers can contain additional actions and allow those actions to be triggered.\n\n\n### Design Tokens\n\nTokens used by this component from `@xplortech/apollo-foundation`.\n\n**Color**\n- `--xpl-background-surface-default` — content panel background and arrow fill\n- `--xpl-elevation-2` — content panel shadow (theme-aware)\n- `--xpl-text-default` — content text color\n- `--xpl-border-default` — content panel border and arrow stroke\n\n**Spacing**\n- `--xpl-space-8` — popover margin (offset from trigger), via `--xpl-popover-margin`\n- `--xpl-space-16` — content panel padding (Figma `padding/tight`; corrected from the legacy 24px during the Foundation migration — see `TECH_DEBT.md`)\n\n**Border**\n- `--xpl-border-small` — border width (1px)\n- `--xpl-border-radius-default` — content panel corner radius (8px)\n\n**Z-index**\n- `--xpl-z-index-100` — content panel stacking order\n- `--xpl-z-index-900` — arrow stacking order\n",
|
|
10260
10256
|
"docs": "A popover is an overlay that pops up over all other layers and is triggered by a click or tap, and dismissed by clicking outside the popover or a dismiss icon. Popovers can contain additional actions and allow those actions to be triggered.",
|
|
10261
10257
|
"docsTags": [
|
|
10262
10258
|
{
|
|
@@ -12755,7 +12751,7 @@
|
|
|
12755
12751
|
"filePath": "src/components/components/xpl-slideout/xpl-slideout.tsx",
|
|
12756
12752
|
"encapsulation": "none",
|
|
12757
12753
|
"tag": "xpl-slideout",
|
|
12758
|
-
"readme": "# xpl-slideout\n\nContent and Footer subcomponents are optional and can be hidden. Slideout always has a header with an X close button upper right. Slide Out Panel OPTIONALLY uses the [<xpl-backdrop>](https://apollo.xplordocs.com/?path=/story/components-backdrop--backdrop) component to overlay content and create focus on the Slide Out Panel content.\n\n## Token Use\n\n`xpl-slideout` uses Apollo Foundation purpose-specific tokens; light and dark mode are handled by the token definitions, so the component has no `.dark` overrides.\n\n| Element | Property | Token |\n| ------- | -------- | ----- |\n| `.slideout` | background | `--xpl-background-surface-default` |\n| `.slideout` | shadow color | `--xpl-color-transparent-neutral-10` / `--xpl-color-transparent-neutral-5` |\n| `.title` | color | `--xpl-text-default` |\n| `.title` | typography (size / weight / line-height) | `@extend .xpl-text-title-3` → `title-3` / `bold` / `1.4` |\n| `.subtitle` | color | `--xpl-text-subdued` |\n| `.subtitle` | typography (size / weight / line-height) | `@extend .xpl-text-body` → `body` / `normal` / `1.4286` |\n| `.content` | text color | `--xpl-text-default` |\n| `.content.has-shadow` | scroll-overflow shadow (top/bottom only) | `--xpl-color-transparent-neutral-10` / `--xpl-color-transparent-neutral-5` |\n| search `.xpl-input-wrapper` | background | `--xpl-background-surface-default` |\n| search `input` | color | `--xpl-text-default` |\n\nPanel widths are documented CSS literals: `min-width: 21.5rem`, `max-width: 37.5rem` (see `slideout.css` and `TECH_DEBT.md`).\n\nThe `.content.has-shadow` shadow is a scroll affordance applied only to the top and bottom edges (per Figma node 52462-9896) to signal that content is hidden behind the header/footer when it overflows.\n\n> **Elevation shadow (
|
|
12754
|
+
"readme": "# xpl-slideout\n\nContent and Footer subcomponents are optional and can be hidden. Slideout always has a header with an X close button upper right. Slide Out Panel OPTIONALLY uses the [<xpl-backdrop>](https://apollo.xplordocs.com/?path=/story/components-backdrop--backdrop) component to overlay content and create focus on the Slide Out Panel content.\n\n## Token Use\n\n`xpl-slideout` uses Apollo Foundation purpose-specific tokens; light and dark mode are handled by the token definitions, so the component has no `.dark` overrides.\n\n| Element | Property | Token |\n| ------- | -------- | ----- |\n| `.slideout` | background | `--xpl-background-surface-default` |\n| `.slideout` | shadow color | `--xpl-color-transparent-neutral-10` / `--xpl-color-transparent-neutral-5` |\n| `.title` | color | `--xpl-text-default` |\n| `.title` | typography (size / weight / line-height) | `@extend .xpl-text-title-3` → `title-3` / `bold` / `1.4` |\n| `.subtitle` | color | `--xpl-text-subdued` |\n| `.subtitle` | typography (size / weight / line-height) | `@extend .xpl-text-body` → `body` / `normal` / `1.4286` |\n| `.content` | text color | `--xpl-text-default` |\n| `.content.has-shadow` | scroll-overflow shadow (top/bottom only) | `--xpl-color-transparent-neutral-10` / `--xpl-color-transparent-neutral-5` |\n| search `.xpl-input-wrapper` | background | `--xpl-background-surface-default` |\n| search `input` | color | `--xpl-text-default` |\n\nPanel widths are documented CSS literals: `min-width: 21.5rem`, `max-width: 37.5rem` (see `slideout.css` and `TECH_DEBT.md`).\n\nThe `.content.has-shadow` shadow is a scroll affordance applied only to the top and bottom edges (per Figma node 52462-9896) to signal that content is hidden behind the header/footer when it overflows.\n\n> **Elevation shadow (documented deviation):** the panel shadow is a custom single-edge shadow cast left onto the page content (`-10px 0 15px -3px`, `4px 0 6px -2px` over `--xpl-color-transparent-neutral-10 / -5`). Figma specs a leading-edge-only shadow for this right-anchored panel; the shared `--xpl-elevation-*` tokens are vertical (bottom-cast) and do not fit a side-anchored panel, so the hand-authored geometry is kept — see `TECH_DEBT.md`.\n",
|
|
12759
12755
|
"docs": "Content and Footer subcomponents are optional and can be hidden. Slideout always has a header with an X close button upper right. Slide Out Panel OPTIONALLY uses the [<xpl-backdrop>](https://apollo.xplordocs.com/?path=/story/components-backdrop--backdrop) component to overlay content and create focus on the Slide Out Panel content.",
|
|
12760
12756
|
"docsTags": [
|
|
12761
12757
|
{
|
|
@@ -12939,7 +12935,7 @@
|
|
|
12939
12935
|
"filePath": "src/components/components/xpl-spotlight/xpl-spotlight.tsx",
|
|
12940
12936
|
"encapsulation": "none",
|
|
12941
12937
|
"tag": "xpl-spotlight",
|
|
12942
|
-
"readme": "# xpl-spotlight\n\n`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.\n\n## Usage Examples\n\nUse the built-in title/body props and default actions for a simple tour step:\n\n```html\n<xpl-spotlight\n heading=\"Review recent activity\"\n body=\"Check status updates here before moving to the next step.\"\n action-layout=\"default\"\n anchor-position=\"top-right\"\n current-step=\"2\"\n total-steps=\"5\"\n is-dismissible=\"true\"\n is-open=\"true\"\n primary-action-label=\"Next\"\n secondary-action-label=\"Back\"\n show-actions=\"true\"\n show-image=\"true\"\n show-steps=\"true\"\n target=\"\"\n></xpl-spotlight>\n```\n\nAnchor the spotlight to a specific element and provide custom media content:\n\n```html\n<button id=\"dashboard-filter-button\" type=\"button\">Filters</button>\n\n<xpl-spotlight\n target=\"#dashboard-filter-button\"\n heading=\"Narrow the results\"\n body=\"Use filters to focus on the accounts or activity that matter most.\"\n current-step=\"1\"\n total-steps=\"3\"\n primary-action-label=\"Next\"\n secondary-action-label=\"Skip\"\n>\n <div slot=\"image\">\n <img src=\"/assets/spotlight-filter-preview.png\" alt=\"Preview of filter controls\" />\n </div>\n</xpl-spotlight>\n```\n\n\nControl visibility from the parent with `is-open` and close it by responding to `dismiss`:\n\n```html\n<xpl-spotlight\n id=\"guided-tour-step\"\n is-open=\"true\"\n heading=\"Review recent activity\"\n body=\"Check status updates here before moving to the next step.\"\n></xpl-spotlight>\n\n<script>\n const spotlight = document.getElementById('guided-tour-step');\n\n spotlight?.addEventListener('dismiss', () => {\n spotlight.setAttribute('is-open', 'false');\n });\n</script>\n```\n\nMirror the same layout in plain HTML when documenting or prototyping the component structure outside the custom element:\n\n```html\n<div class=\"xpl-spotlight xpl-spotlight--top-left xpl-spotlight--visible\"\n role=\"dialog\" aria-modal=\"false\" aria-labelledby=\"spotlight-title\" tabindex=\"-1\">\n <button type=\"button\" class=\"xpl-spotlight__target\" aria-label=\"Spotlight indicator\">\n <div class=\"xpl-spotlight__target-outer\"></div>\n <div class=\"xpl-spotlight__target-inner\"></div>\n </button>\n <div class=\"xpl-spotlight__dismiss\">\n <xpl-button variant=\"secondary\" size=\"sm\" icon-only aria-label=\"Dismiss tour step\">\n <xpl-icon icon=\"xmark\" size=\"16\"></xpl-icon>\n </xpl-button>\n </div>\n <div class=\"xpl-spotlight__frame\">\n <div class=\"xpl-spotlight__image-container\">\n <img src=\"/assets/spotlight-preview.png\" alt=\"Feature preview\" />\n </div>\n <div class=\"xpl-spotlight__content\">\n <div class=\"xpl-spotlight__header\">\n <span class=\"xpl-spotlight__title\" id=\"spotlight-title\">Tour Title</span>\n <p class=\"xpl-spotlight__body\">Copy about the feature and/or functionality the dot is pointing to.</p>\n </div>\n <div class=\"xpl-spotlight__actions xpl-spotlight__actions--dual xpl-spotlight__actions--with-steps\">\n <div class=\"xpl-spotlight__action-slot xpl-spotlight__action-slot--secondary\">\n <xpl-button variant=\"secondary\">Back</xpl-button>\n </div>\n <span class=\"xpl-spotlight__step-text\">2 of 5</span>\n <div class=\"xpl-spotlight__action-slot xpl-spotlight__action-slot--primary\">\n <xpl-button variant=\"primary\">Next</xpl-button>\n </div>\n </div>\n </div>\n </div>\n</div>\n```\n\n## Accessibility\n\n`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:\n\n- When the default title is used, the generated heading element receives the internal `aria-labelledby` id.\n- 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).\n- 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.\n\n### Keyboard navigation\n\n| Key | Behavior |\n|-----|----------|\n| `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. |\n| `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. |\n| `Enter` / `Space` | Activates the focused button (dismiss, primary, or secondary action) via standard `xpl-button` behavior. |\n\n### Focus management\n\n- **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\"`.\n- **On close:** focus returns to the element that was focused before the spotlight opened, provided that element is still in the DOM.\n- The decorative anchor dot (`.xpl-spotlight__target`) is marked `aria-hidden=\"true\"` so it is not announced or focusable.\n\n\n## Design Tokens\n\nThe component relies on Foundation purpose tokens in `spotlight.css` so light/dark mode works without component-level `.dark` overrides.\n\n| Property | Token |\n|----------|-------|\n| 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`) |\n| Image region min-height | `var(--xpl-spotlight-image-min-height)` on `.xpl-spotlight__image-container` (same note as card width) |\n| Card background | `var(--xpl-background-surface-default)` |\n| Host stacking | `var(--xpl-z-index-800)` |\n| Placeholder pattern | `var(--xpl-background-surface-subtle)` |\n| Heading text | `var(--xpl-text-default)` |\n| Body text | `var(--xpl-text-default)` |\n| Step text | `var(--xpl-text-subdued)` |\n| Open/closed visibility | `opacity` transition on `.xpl-spotlight--visible` |\n| Anchor outer ring | `var(--xpl-background-surface-information-bold)` |\n| Anchor inner dot | `var(--xpl-background-accent-default)` |\n| Image placeholder icon/text | `var(--xpl-icon-subtle)` |\n| Focus outline | `var(--xpl-border-focus)` |\n| Anchored host (when `target` is set) | `position: fixed` via `.xpl-spotlight--anchored`; `left` / `top` set from Floating UI (`strategy: 'fixed'`) |\n\n## Icon Mapping\n\n`xpl-spotlight` uses Apollo icons for fixed controls and fallback media placeholders:\n\n| UI area | `xpl-icon` name |\n|---------|------------------|\n| Dismiss button | `xmark` |\n| Empty image placeholder, image affordance | `photo` |\n| Empty image placeholder, video affordance | `video` |\n\n## Deprecated props\n\nNone.\n\n## Notes\n\n- `showImage=\"false\"` hides the media region even if `slot=\"image\"` content is present.\n- 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.\n- `showActions=\"false\"` removes the default actions row entirely.\n- `is-open=\"false\"` keeps the host element mounted but renders no spotlight UI until it is opened again.\n- `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.\n- `primary-action-label` and `secondary-action-label` control the default button text without needing action slots.\n- `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`).\n- If `target` is missing or contains an invalid CSS selector, the component safely falls back to the requested `anchor-position` instead of throwing.\n- **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).\n",
|
|
12938
|
+
"readme": "# xpl-spotlight\n\n`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.\n\n## Usage Examples\n\nUse the built-in title/body props and default actions for a simple tour step:\n\n```html\n<xpl-spotlight\n heading=\"Review recent activity\"\n body=\"Check status updates here before moving to the next step.\"\n action-layout=\"default\"\n anchor-position=\"top-right\"\n current-step=\"2\"\n total-steps=\"5\"\n is-dismissible=\"true\"\n is-open=\"true\"\n primary-action-label=\"Next\"\n secondary-action-label=\"Back\"\n show-actions=\"true\"\n show-image=\"true\"\n show-steps=\"true\"\n target=\"\"\n></xpl-spotlight>\n```\n\nAnchor the spotlight to a specific element and provide custom media content:\n\n```html\n<button id=\"dashboard-filter-button\" type=\"button\">Filters</button>\n\n<xpl-spotlight\n target=\"#dashboard-filter-button\"\n heading=\"Narrow the results\"\n body=\"Use filters to focus on the accounts or activity that matter most.\"\n current-step=\"1\"\n total-steps=\"3\"\n primary-action-label=\"Next\"\n secondary-action-label=\"Skip\"\n>\n <div slot=\"image\">\n <img src=\"/assets/spotlight-filter-preview.png\" alt=\"Preview of filter controls\" />\n </div>\n</xpl-spotlight>\n```\n\n\nControl visibility from the parent with `is-open` and close it by responding to `dismiss`:\n\n```html\n<xpl-spotlight\n id=\"guided-tour-step\"\n is-open=\"true\"\n heading=\"Review recent activity\"\n body=\"Check status updates here before moving to the next step.\"\n></xpl-spotlight>\n\n<script>\n const spotlight = document.getElementById('guided-tour-step');\n\n spotlight?.addEventListener('dismiss', () => {\n spotlight.setAttribute('is-open', 'false');\n });\n</script>\n```\n\nMirror the same layout in plain HTML when documenting or prototyping the component structure outside the custom element:\n\n```html\n<div class=\"xpl-spotlight xpl-spotlight--top-left xpl-spotlight--visible\"\n role=\"dialog\" aria-modal=\"false\" aria-labelledby=\"spotlight-title\" tabindex=\"-1\">\n <button type=\"button\" class=\"xpl-spotlight__target\" aria-label=\"Spotlight indicator\">\n <div class=\"xpl-spotlight__target-outer\"></div>\n <div class=\"xpl-spotlight__target-inner\"></div>\n </button>\n <div class=\"xpl-spotlight__dismiss\">\n <xpl-button variant=\"secondary\" size=\"sm\" icon-only aria-label=\"Dismiss tour step\">\n <xpl-icon icon=\"xmark\" size=\"16\"></xpl-icon>\n </xpl-button>\n </div>\n <div class=\"xpl-spotlight__frame\">\n <div class=\"xpl-spotlight__image-container\">\n <img src=\"/assets/spotlight-preview.png\" alt=\"Feature preview\" />\n </div>\n <div class=\"xpl-spotlight__content\">\n <div class=\"xpl-spotlight__header\">\n <span class=\"xpl-spotlight__title\" id=\"spotlight-title\">Tour Title</span>\n <p class=\"xpl-spotlight__body\">Copy about the feature and/or functionality the dot is pointing to.</p>\n </div>\n <div class=\"xpl-spotlight__actions xpl-spotlight__actions--dual xpl-spotlight__actions--with-steps\">\n <div class=\"xpl-spotlight__action-slot xpl-spotlight__action-slot--secondary\">\n <xpl-button variant=\"secondary\">Back</xpl-button>\n </div>\n <span class=\"xpl-spotlight__step-text\">2 of 5</span>\n <div class=\"xpl-spotlight__action-slot xpl-spotlight__action-slot--primary\">\n <xpl-button variant=\"primary\">Next</xpl-button>\n </div>\n </div>\n </div>\n </div>\n</div>\n```\n\n## Accessibility\n\n`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:\n\n- When the default title is used, the generated heading element receives the internal `aria-labelledby` id.\n- 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).\n- 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.\n\n### Keyboard navigation\n\n| Key | Behavior |\n|-----|----------|\n| `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. |\n| `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. |\n| `Enter` / `Space` | Activates the focused button (dismiss, primary, or secondary action) via standard `xpl-button` behavior. |\n\n### Focus management\n\n- **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\"`.\n- **On close:** focus returns to the element that was focused before the spotlight opened, provided that element is still in the DOM.\n- The decorative anchor dot (`.xpl-spotlight__target`) is marked `aria-hidden=\"true\"` so it is not announced or focusable.\n\n\n## Design Tokens\n\nThe component relies on Foundation purpose tokens in `spotlight.css` so light/dark mode works without component-level `.dark` overrides.\n\n| Property | Token |\n|----------|-------|\n| 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`) |\n| Image region min-height | `var(--xpl-spotlight-image-min-height)` on `.xpl-spotlight__image-container` (same note as card width) |\n| Card background | `var(--xpl-background-surface-default)` |\n| Card shadow | `var(--xpl-elevation-3)` (theme-aware elevation token) |\n| Host stacking | `var(--xpl-z-index-800)` |\n| Placeholder pattern | `var(--xpl-background-surface-subtle)` |\n| Heading text | `var(--xpl-text-default)` |\n| Body text | `var(--xpl-text-default)` |\n| Step text | `var(--xpl-text-subdued)` |\n| Open/closed visibility | `opacity` transition on `.xpl-spotlight--visible` |\n| Anchor outer ring | `var(--xpl-background-surface-information-bold)` |\n| Anchor inner dot | `var(--xpl-background-accent-default)` |\n| Image placeholder icon/text | `var(--xpl-icon-subtle)` |\n| Focus outline | `var(--xpl-border-focus)` |\n| Anchored host (when `target` is set) | `position: fixed` via `.xpl-spotlight--anchored`; `left` / `top` set from Floating UI (`strategy: 'fixed'`) |\n\n## Icon Mapping\n\n`xpl-spotlight` uses Apollo icons for fixed controls and fallback media placeholders:\n\n| UI area | `xpl-icon` name |\n|---------|------------------|\n| Dismiss button | `xmark` |\n| Empty image placeholder, image affordance | `photo` |\n| Empty image placeholder, video affordance | `video` |\n\n## Deprecated props\n\nNone.\n\n## Notes\n\n- `showImage=\"false\"` hides the media region even if `slot=\"image\"` content is present.\n- 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.\n- `showActions=\"false\"` removes the default actions row entirely.\n- `is-open=\"false\"` keeps the host element mounted but renders no spotlight UI until it is opened again.\n- `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.\n- `primary-action-label` and `secondary-action-label` control the default button text without needing action slots.\n- `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`).\n- If `target` is missing or contains an invalid CSS selector, the component safely falls back to the requested `anchor-position` instead of throwing.\n- **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).\n",
|
|
12943
12939
|
"docs": "`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.",
|
|
12944
12940
|
"docsTags": [
|
|
12945
12941
|
{
|
|
@@ -13888,9 +13884,21 @@
|
|
|
13888
13884
|
"filePath": "src/components/components/xpl-table/xpl-table.tsx",
|
|
13889
13885
|
"encapsulation": "none",
|
|
13890
13886
|
"tag": "xpl-table",
|
|
13891
|
-
"readme": "# xpl-table\n\nTables are used to organize and display information from a data set. \n",
|
|
13892
|
-
"docs": "
|
|
13887
|
+
"readme": "# xpl-table\r\n\r\nTables are used to organize and display information from a data set.\r\n\r\n## Rendering modes\r\n\r\n1. **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.\r\n2. **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.\r\n\r\nComposable **selection** (`selectable`), **toolbar**, and copy-paste examples live under **[Usage](#usage)** below (read the breaking-change note first if you are migrating from auto-injected selection cells).\r\n\r\n### Row reorder (`row-reorderable`, managed grip column)\r\n\r\nWhen `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**.\r\n\r\n**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.\r\n\r\n| Attribute | When it applies | Purpose |\r\n| --------- | ---------------- | ------- |\r\n| `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. |\r\n| `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. |\r\n\r\n**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.\r\n\r\n**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.\r\n\r\n**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.\r\n\r\n## Usage\r\n\r\n### Breaking change — compositional `selectable`\r\n\r\n**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`).\r\n\r\n**After:** You **must** add the selection column in your own markup (see **Selection** below). `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.\r\n\r\n### Selection (`selectable`) and `rowSelectionChange`\r\n\r\nSet `selectable` on `xpl-table` and **author the selection column in your template** so the framework that renders the table owns every cell node.\r\n\r\n**Required pieces:**\r\n\r\n- **Header:** one [`xpl-table-header-cell`](xpl-table-header-cell) with `type=\"checkbox\"` (tri-state “select all”).\r\n- **Body:** in each `xpl-table-row`, a cell aligned with that column containing **`xpl-checkbox`** (value is driven from `row-id` on the row).\r\n- **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.\r\n\r\n**Behavior:** After `customElements.whenDefined('xpl-table')`, listen for **`rowSelectionChange`** on the **same** `<xpl-table>` element (`bubbles: false`, `composed: true`). The event payload is `{ selectedRowIds: string[] }`. The host maintains `selectedRowIds`, syncs `checked` / `indeterminate` on the header and row checkboxes, sets `selected` on rows, and shows the bulk toolbar while at least one row is selected. Row checkbox **`aria-label`** is 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.\r\n\r\n**Example (web component):**\r\n\r\n```html\r\n<xpl-table id=\"roster\" selectable label=\"Team roster\">\r\n <xpl-table-header>\r\n <xpl-table-row>\r\n <xpl-table-header-cell type=\"checkbox\"></xpl-table-header-cell>\r\n <xpl-table-header-cell label=\"Name\" sortable sort-key=\"name\"></xpl-table-header-cell>\r\n </xpl-table-row>\r\n </xpl-table-header>\r\n <xpl-table-body>\r\n <xpl-table-row row-id=\"1\">\r\n <xpl-table-cell><xpl-checkbox></xpl-checkbox></xpl-table-cell>\r\n <xpl-table-cell>Ada</xpl-table-cell>\r\n </xpl-table-row>\r\n </xpl-table-body>\r\n</xpl-table>\r\n<script type=\"module\">\r\n await customElements.whenDefined('xpl-table');\r\n document.getElementById('roster')?.addEventListener('rowSelectionChange', (e) => {\r\n console.log(e.detail.selectedRowIds);\r\n });\r\n</script>\r\n```\r\n\r\n#### Framework notes (Vue / React / etc.)\r\n\r\nUse **`xpl-checkbox`** in the selection column so `xpl-table` can sync `checked`, `indeterminate`, and `value` from `row-id`. On **`xpl-table-header-cell`**, the selection header uses **`type=\"checkbox\"`**; the prop is **reflected** to the host attribute so Vue bindings like `:type=\"'checkbox'\"` still expose `type=\"checkbox\"` in the DOM for the table’s column detection and CSS.\r\n\r\n### Legacy (`columns` / `data`)\r\n\r\nSet `columns`, `data`, and optional `footer` as **properties** after `customElements.whenDefined('xpl-table')`, or use attributes where your bundler passes JSON strings.\r\n\r\n```html\r\n<xpl-table id=\"legacy\"></xpl-table>\r\n<script type=\"module\">\r\n await customElements.whenDefined('xpl-table');\r\n const t = document.getElementById('legacy');\r\n t.columns = ['Name', 'Score'];\r\n t.data = [\r\n ['Ada', '100'],\r\n ['Bob', '95'],\r\n ];\r\n t.multiselect = true;\r\n t.addEventListener('tableSelect', (e) => console.log(e.detail));\r\n</script>\r\n```\r\n\r\n## Accessibility\r\n\r\n| Concern | Behavior |\r\n| ------- | -------- |\r\n| Table landmark | Compositional host uses **`role=\"grid\"`**; set **`label`** (maps to `aria-label`). |\r\n| Columns | Header cells use **`role=\"columnheader\"`** with `aria-colindex`; sortable label headers expose sort state via **`aria-sort`**. |\r\n| Selection | Checkbox column: header reflects **checked / mixed** via `aria-checked`; row checkboxes get **`aria-label`** from the first non-selection cell’s text (or override with `checkbox-aria-label` on the checkbox header cell). |\r\n| Sort | Sorting is a **`<button type=\"button\">`** inside the header cell; focus uses **`:focus-visible`** with focus tokens in `table-header-cell.css`. |\r\n| Row reorder | Managed grip is a **`<button>`** with `aria-label` / `aria-pressed` for keyboard reorder mode; live region announces reorder when enabled. |\r\n\r\nKeyboard: **Tab** through sort buttons, checkboxes, reorder grips, and cell actions. **Enter** / **Space** activate sort and the reorder grip per native button semantics.\r\n\r\n## Design Tokens\r\n\r\nCompositional grid layout tokens live in `table.css`; cell, row, header, and toolbar tokens are split across sibling CSS files.\r\n\r\n| Element | Property | Token | Light | Dark |\r\n| ------- | -------- | ----- | ----- | ---- |\r\n| Host (compositional) | border | `--xpl-border-small`, `--xpl-border-default` | neutral-200 | neutral-800 |\r\n| Host (compositional) | border-radius | `--xpl-border-radius-default` | 8px | 8px |\r\n| Host (compositional) | grid columns | `--column-widths` (runtime from header cells) | — | — |\r\n| Selection toolbar | sticky z-index | `--xpl-z-index-200` | 200 | 200 |\r\n| Selection toolbar | min-height | `--xpl-size-350` | 56px | 56px |\r\n| Freeze shadow | gradient | `--xpl-background-surface-transparent-10` → `-0` | near-black 10% | near-white 10% |\r\n| Freeze column | sticky z-index | `--xpl-z-index-100` | 100 | 100 |\r\n| Freeze scroll hint | width | `--xpl-space-24` | 24px | 24px |\r\n| Striped even rows | cell background | `--xpl-background-surface-subtlest` | neutral-50 | neutral-950 |\r\n| Striped + selected | cell background | `--xpl-background-surface-information-bold` | blue-100 | blue-900 |\r\n\r\n## Icon mapping\r\n\r\nWhen Apollo **injects** the reorder column, icons come from table props (override with `\"\"` to omit):\r\n\r\n| Context | Default `xpl-icon` `icon` value |\r\n| ------- | -------------------------------- |\r\n| Pointer / idle grip | `grip-dots-vertical` |\r\n| Keyboard reorder mode | `caret-expand-y` |\r\n\r\nSort direction uses **`xpl-icon`** names from header-cell internals (`graph`, carets, etc.) — see Storybook **Components → Table**.\r\n\r",
|
|
13888
|
+
"docs": "Compositional tables use CSS grid on the host (`role=\"grid\"`). Legacy mode uses a `<table>`.",
|
|
13893
13889
|
"docsTags": [
|
|
13890
|
+
{
|
|
13891
|
+
"name": "slot",
|
|
13892
|
+
"text": "- `xpl-table-header`, `xpl-table-body`, and optional `xpl-table-footer`."
|
|
13893
|
+
},
|
|
13894
|
+
{
|
|
13895
|
+
"name": "slot",
|
|
13896
|
+
"text": "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."
|
|
13897
|
+
},
|
|
13898
|
+
{
|
|
13899
|
+
"name": "slot",
|
|
13900
|
+
"text": "toolbar-actions-right - Bulk actions in the selection toolbar (right group). Same visibility as `toolbar-actions-left`."
|
|
13901
|
+
},
|
|
13894
13902
|
{
|
|
13895
13903
|
"name": "since",
|
|
13896
13904
|
"text": "0.1.1"
|
|
@@ -13908,8 +13916,14 @@
|
|
|
13908
13916
|
},
|
|
13909
13917
|
"mutable": false,
|
|
13910
13918
|
"reflectToAttr": false,
|
|
13911
|
-
"docs": "
|
|
13912
|
-
"docsTags": [
|
|
13919
|
+
"docs": "",
|
|
13920
|
+
"docsTags": [
|
|
13921
|
+
{
|
|
13922
|
+
"name": "deprecated",
|
|
13923
|
+
"text": "Legacy data-driven table API only (`columns` / `data` / `footer`). May be removed in a future major release.\n\nThe header values for each column."
|
|
13924
|
+
}
|
|
13925
|
+
],
|
|
13926
|
+
"deprecation": "Legacy data-driven table API only (`columns` / `data` / `footer`). May be removed in a future major release.\n\nThe header values for each column.",
|
|
13913
13927
|
"values": [
|
|
13914
13928
|
{
|
|
13915
13929
|
"type": "string[]"
|
|
@@ -13930,8 +13944,14 @@
|
|
|
13930
13944
|
},
|
|
13931
13945
|
"mutable": false,
|
|
13932
13946
|
"reflectToAttr": false,
|
|
13933
|
-
"docs": "
|
|
13934
|
-
"docsTags": [
|
|
13947
|
+
"docs": "",
|
|
13948
|
+
"docsTags": [
|
|
13949
|
+
{
|
|
13950
|
+
"name": "deprecated",
|
|
13951
|
+
"text": "Legacy data-driven table API only (`columns` / `data` / `footer`). May be removed in a future major release.\n\nThe data for the body of the table."
|
|
13952
|
+
}
|
|
13953
|
+
],
|
|
13954
|
+
"deprecation": "Legacy data-driven table API only (`columns` / `data` / `footer`). May be removed in a future major release.\n\nThe data for the body of the table.",
|
|
13935
13955
|
"values": [
|
|
13936
13956
|
{
|
|
13937
13957
|
"type": "string[][]"
|
|
@@ -13952,8 +13972,14 @@
|
|
|
13952
13972
|
},
|
|
13953
13973
|
"mutable": false,
|
|
13954
13974
|
"reflectToAttr": false,
|
|
13955
|
-
"docs": "
|
|
13956
|
-
"docsTags": [
|
|
13975
|
+
"docs": "",
|
|
13976
|
+
"docsTags": [
|
|
13977
|
+
{
|
|
13978
|
+
"name": "deprecated",
|
|
13979
|
+
"text": "Legacy data-driven table API only (`columns` / `data` / `footer`). May be removed in a future major release.\n\nThe data for the footer of the table."
|
|
13980
|
+
}
|
|
13981
|
+
],
|
|
13982
|
+
"deprecation": "Legacy data-driven table API only (`columns` / `data` / `footer`). May be removed in a future major release.\n\nThe data for the footer of the table.",
|
|
13957
13983
|
"values": [
|
|
13958
13984
|
{
|
|
13959
13985
|
"type": "string[][]"
|
|
@@ -13975,7 +14001,7 @@
|
|
|
13975
14001
|
"mutable": false,
|
|
13976
14002
|
"attr": "freeze",
|
|
13977
14003
|
"reflectToAttr": false,
|
|
13978
|
-
"docs": "When true, the first column
|
|
14004
|
+
"docs": "When true, the first **data** column (per row) is sticky during horizontal scroll.\nLeading compositional columns are skipped: `selectable` (checkbox) and/or `row-reorderable`\n(grip) are not frozen so they scroll with the grid; the next column stays pinned at `left: 0`.",
|
|
13979
14005
|
"docsTags": [],
|
|
13980
14006
|
"values": [
|
|
13981
14007
|
{
|
|
@@ -13998,20 +14024,48 @@
|
|
|
13998
14024
|
"mutable": false,
|
|
13999
14025
|
"attr": "is-sortable",
|
|
14000
14026
|
"reflectToAttr": false,
|
|
14001
|
-
"docs": "
|
|
14027
|
+
"docs": "",
|
|
14002
14028
|
"docsTags": [
|
|
14029
|
+
{
|
|
14030
|
+
"name": "deprecated",
|
|
14031
|
+
"text": "Legacy data-driven table API only. May be removed in a future major release.\n\nToggles to show the sort button on each table head."
|
|
14032
|
+
},
|
|
14003
14033
|
{
|
|
14004
14034
|
"name": "default",
|
|
14005
14035
|
"text": "false"
|
|
14006
14036
|
}
|
|
14007
14037
|
],
|
|
14008
14038
|
"default": "false",
|
|
14039
|
+
"deprecation": "Legacy data-driven table API only. May be removed in a future major release.\n\nToggles to show the sort button on each table head.",
|
|
14009
14040
|
"values": [
|
|
14010
14041
|
{
|
|
14011
14042
|
"type": "boolean"
|
|
14012
14043
|
}
|
|
14013
14044
|
],
|
|
14014
|
-
"optional":
|
|
14045
|
+
"optional": true,
|
|
14046
|
+
"required": false,
|
|
14047
|
+
"getter": false,
|
|
14048
|
+
"setter": false
|
|
14049
|
+
},
|
|
14050
|
+
{
|
|
14051
|
+
"name": "label",
|
|
14052
|
+
"type": "string",
|
|
14053
|
+
"complexType": {
|
|
14054
|
+
"original": "string",
|
|
14055
|
+
"resolved": "string",
|
|
14056
|
+
"references": {}
|
|
14057
|
+
},
|
|
14058
|
+
"mutable": false,
|
|
14059
|
+
"attr": "label",
|
|
14060
|
+
"reflectToAttr": false,
|
|
14061
|
+
"docs": "Accessible label for the table. Maps to `aria-label` in compositional mode.",
|
|
14062
|
+
"docsTags": [],
|
|
14063
|
+
"values": [
|
|
14064
|
+
{
|
|
14065
|
+
"type": "string"
|
|
14066
|
+
}
|
|
14067
|
+
],
|
|
14068
|
+
"optional": true,
|
|
14015
14069
|
"required": false,
|
|
14016
14070
|
"getter": false,
|
|
14017
14071
|
"setter": false
|
|
@@ -14027,7 +14081,111 @@
|
|
|
14027
14081
|
"mutable": false,
|
|
14028
14082
|
"attr": "multiselect",
|
|
14029
14083
|
"reflectToAttr": false,
|
|
14030
|
-
"docs": "
|
|
14084
|
+
"docs": "",
|
|
14085
|
+
"docsTags": [
|
|
14086
|
+
{
|
|
14087
|
+
"name": "deprecated",
|
|
14088
|
+
"text": "Legacy data-driven table API only. May be removed in a future major release.\n\nToggles a selectable checkbox for each row in the table."
|
|
14089
|
+
}
|
|
14090
|
+
],
|
|
14091
|
+
"deprecation": "Legacy data-driven table API only. May be removed in a future major release.\n\nToggles a selectable checkbox for each row in the table.",
|
|
14092
|
+
"values": [
|
|
14093
|
+
{
|
|
14094
|
+
"type": "boolean"
|
|
14095
|
+
}
|
|
14096
|
+
],
|
|
14097
|
+
"optional": true,
|
|
14098
|
+
"required": false,
|
|
14099
|
+
"getter": false,
|
|
14100
|
+
"setter": false
|
|
14101
|
+
},
|
|
14102
|
+
{
|
|
14103
|
+
"name": "reorderHandleIcon",
|
|
14104
|
+
"type": "string",
|
|
14105
|
+
"complexType": {
|
|
14106
|
+
"original": "string",
|
|
14107
|
+
"resolved": "string",
|
|
14108
|
+
"references": {}
|
|
14109
|
+
},
|
|
14110
|
+
"mutable": false,
|
|
14111
|
+
"attr": "reorder-handle-icon",
|
|
14112
|
+
"reflectToAttr": false,
|
|
14113
|
+
"docs": "Icon name for the optional `xpl-icon` inside each **managed** reorder grip when the row is **not** in\nkeyboard reorder mode (pointer / idle). Set to `\"\"` to omit the icon so you can style the button or author a\nfully custom reorder column in markup. When omitted, defaults to `grip-dots-vertical`.",
|
|
14114
|
+
"docsTags": [],
|
|
14115
|
+
"values": [
|
|
14116
|
+
{
|
|
14117
|
+
"type": "string"
|
|
14118
|
+
}
|
|
14119
|
+
],
|
|
14120
|
+
"optional": true,
|
|
14121
|
+
"required": false,
|
|
14122
|
+
"getter": false,
|
|
14123
|
+
"setter": false
|
|
14124
|
+
},
|
|
14125
|
+
{
|
|
14126
|
+
"name": "reorderHandleIconKeyboard",
|
|
14127
|
+
"type": "string",
|
|
14128
|
+
"complexType": {
|
|
14129
|
+
"original": "string",
|
|
14130
|
+
"resolved": "string",
|
|
14131
|
+
"references": {}
|
|
14132
|
+
},
|
|
14133
|
+
"mutable": false,
|
|
14134
|
+
"attr": "reorder-handle-icon-keyboard",
|
|
14135
|
+
"reflectToAttr": false,
|
|
14136
|
+
"docs": "Icon name for the managed reorder grip **while that row is in keyboard reorder mode** (after the user\nactivates the grip with Enter or Space). Use a different icon than `reorder-handle-icon` so users can see\nthey should use arrow keys. When omitted, defaults to `caret-expand-y` (same as `xpl-list` keyboard reorder).\nSet to `\"\"` to show no icon in keyboard mode only (combine with CSS on\n`.xpl-table__row-drag-handle--keyboard-mode` if needed).",
|
|
14137
|
+
"docsTags": [],
|
|
14138
|
+
"values": [
|
|
14139
|
+
{
|
|
14140
|
+
"type": "string"
|
|
14141
|
+
}
|
|
14142
|
+
],
|
|
14143
|
+
"optional": true,
|
|
14144
|
+
"required": false,
|
|
14145
|
+
"getter": false,
|
|
14146
|
+
"setter": false
|
|
14147
|
+
},
|
|
14148
|
+
{
|
|
14149
|
+
"name": "rowReorderable",
|
|
14150
|
+
"type": "boolean",
|
|
14151
|
+
"complexType": {
|
|
14152
|
+
"original": "boolean",
|
|
14153
|
+
"resolved": "boolean",
|
|
14154
|
+
"references": {}
|
|
14155
|
+
},
|
|
14156
|
+
"mutable": false,
|
|
14157
|
+
"attr": "row-reorderable",
|
|
14158
|
+
"reflectToAttr": false,
|
|
14159
|
+
"docs": "When true (compositional mode only), **prepends** a managed reorder column as the **first** grid\ncolumn (empty header + grip button per body row) and enables HTML5 drag-and-drop row reordering\n(same interaction model as `xpl-list`). With `selectable`, DOM order is **reorder | selection |\ndata** unless you author a custom reorder column. The table updates the DOM and emits\n`rowOrderChange`; consumers should persist order if needed. Ignored in legacy `columns`/`data` mode.",
|
|
14160
|
+
"docsTags": [
|
|
14161
|
+
{
|
|
14162
|
+
"name": "default",
|
|
14163
|
+
"text": "false"
|
|
14164
|
+
}
|
|
14165
|
+
],
|
|
14166
|
+
"default": "false",
|
|
14167
|
+
"values": [
|
|
14168
|
+
{
|
|
14169
|
+
"type": "boolean"
|
|
14170
|
+
}
|
|
14171
|
+
],
|
|
14172
|
+
"optional": false,
|
|
14173
|
+
"required": false,
|
|
14174
|
+
"getter": false,
|
|
14175
|
+
"setter": false
|
|
14176
|
+
},
|
|
14177
|
+
{
|
|
14178
|
+
"name": "selectable",
|
|
14179
|
+
"type": "boolean",
|
|
14180
|
+
"complexType": {
|
|
14181
|
+
"original": "boolean",
|
|
14182
|
+
"resolved": "boolean",
|
|
14183
|
+
"references": {}
|
|
14184
|
+
},
|
|
14185
|
+
"mutable": false,
|
|
14186
|
+
"attr": "selectable",
|
|
14187
|
+
"reflectToAttr": false,
|
|
14188
|
+
"docs": "When true (compositional mode only), enables row selection state, the selection toolbar\n(“N Selected”), and `rowSelectionChange`. **You must add the selection column in your\nmarkup:** a header cell with `type=\"checkbox\"`, a body cell containing `xpl-checkbox` per row\n(aligned with that column), and matching `xpl-table-footer-cell` cells when you use a footer.\nEach body row should use `row-id` on `xpl-table-row` (or accept auto-generated ids) so\n`rowSelectionChange` can report `selectedRowIds`.\n\nThe toolbar uses the same layout as `xpl-toolbar` and is visible only while at least one row\nis selected. Use `toolbar-actions-left` / `toolbar-actions-right` slots on this host for bulk\nactions.",
|
|
14031
14189
|
"docsTags": [],
|
|
14032
14190
|
"values": [
|
|
14033
14191
|
{
|
|
@@ -14049,20 +14207,25 @@
|
|
|
14049
14207
|
},
|
|
14050
14208
|
"mutable": false,
|
|
14051
14209
|
"reflectToAttr": false,
|
|
14052
|
-
"docs": "
|
|
14210
|
+
"docs": "",
|
|
14053
14211
|
"docsTags": [
|
|
14212
|
+
{
|
|
14213
|
+
"name": "deprecated",
|
|
14214
|
+
"text": "Legacy data-driven table API only. May be removed in a future major release.\n\nThe values for the input for each row when multiselect is activated."
|
|
14215
|
+
},
|
|
14054
14216
|
{
|
|
14055
14217
|
"name": "default",
|
|
14056
14218
|
"text": "[]"
|
|
14057
14219
|
}
|
|
14058
14220
|
],
|
|
14059
14221
|
"default": "[]",
|
|
14222
|
+
"deprecation": "Legacy data-driven table API only. May be removed in a future major release.\n\nThe values for the input for each row when multiselect is activated.",
|
|
14060
14223
|
"values": [
|
|
14061
14224
|
{
|
|
14062
14225
|
"type": "string[]"
|
|
14063
14226
|
}
|
|
14064
14227
|
],
|
|
14065
|
-
"optional":
|
|
14228
|
+
"optional": true,
|
|
14066
14229
|
"required": false,
|
|
14067
14230
|
"getter": false,
|
|
14068
14231
|
"setter": false
|
|
@@ -14077,20 +14240,25 @@
|
|
|
14077
14240
|
},
|
|
14078
14241
|
"mutable": false,
|
|
14079
14242
|
"reflectToAttr": false,
|
|
14080
|
-
"docs": "
|
|
14243
|
+
"docs": "",
|
|
14081
14244
|
"docsTags": [
|
|
14245
|
+
{
|
|
14246
|
+
"name": "deprecated",
|
|
14247
|
+
"text": "Use the compositional slot-based API instead. Will be removed in a future major release.\n\nManually determined if the column is sortable."
|
|
14248
|
+
},
|
|
14082
14249
|
{
|
|
14083
14250
|
"name": "default",
|
|
14084
14251
|
"text": "[]"
|
|
14085
14252
|
}
|
|
14086
14253
|
],
|
|
14087
14254
|
"default": "[]",
|
|
14255
|
+
"deprecation": "Use the compositional slot-based API instead. Will be removed in a future major release.\n\nManually determined if the column is sortable.",
|
|
14088
14256
|
"values": [
|
|
14089
14257
|
{
|
|
14090
14258
|
"type": "boolean[]"
|
|
14091
14259
|
}
|
|
14092
14260
|
],
|
|
14093
|
-
"optional":
|
|
14261
|
+
"optional": true,
|
|
14094
14262
|
"required": false,
|
|
14095
14263
|
"getter": false,
|
|
14096
14264
|
"setter": false
|
|
@@ -14106,7 +14274,7 @@
|
|
|
14106
14274
|
"mutable": false,
|
|
14107
14275
|
"attr": "striped",
|
|
14108
14276
|
"reflectToAttr": false,
|
|
14109
|
-
"docs": "Toggles an optional styling of the background of each even row of the
|
|
14277
|
+
"docs": "Toggles an optional styling of the background of each even row of the\ntable body.",
|
|
14110
14278
|
"docsTags": [],
|
|
14111
14279
|
"values": [
|
|
14112
14280
|
{
|
|
@@ -14122,17 +14290,57 @@
|
|
|
14122
14290
|
"methods": [],
|
|
14123
14291
|
"events": [
|
|
14124
14292
|
{
|
|
14125
|
-
"event": "
|
|
14126
|
-
"detail": "
|
|
14293
|
+
"event": "rowOrderChange",
|
|
14294
|
+
"detail": "XplTableRowOrderChangeDetail",
|
|
14295
|
+
"bubbles": false,
|
|
14296
|
+
"complexType": {
|
|
14297
|
+
"original": "XplTableRowOrderChangeDetail",
|
|
14298
|
+
"resolved": "XplTableRowOrderChangeDetail",
|
|
14299
|
+
"references": {
|
|
14300
|
+
"XplTableRowOrderChangeDetail": {
|
|
14301
|
+
"location": "local",
|
|
14302
|
+
"path": "/home/runner/work/apollo/apollo/packages/apollo-core/src/components/components/xpl-table/xpl-table.tsx",
|
|
14303
|
+
"id": "src/components/components/xpl-table/xpl-table.tsx::XplTableRowOrderChangeDetail"
|
|
14304
|
+
}
|
|
14305
|
+
}
|
|
14306
|
+
},
|
|
14307
|
+
"cancelable": true,
|
|
14308
|
+
"composed": true,
|
|
14309
|
+
"docs": "Emitted after body rows are reordered via drag-and-drop (compositional `row-reorderable` mode).",
|
|
14310
|
+
"docsTags": []
|
|
14311
|
+
},
|
|
14312
|
+
{
|
|
14313
|
+
"event": "rowSelectionChange",
|
|
14314
|
+
"detail": "{ selectedRowIds: string[]; }",
|
|
14127
14315
|
"bubbles": false,
|
|
14128
14316
|
"complexType": {
|
|
14129
|
-
"original": "{
|
|
14130
|
-
"resolved": "{
|
|
14317
|
+
"original": "{ selectedRowIds: string[] }",
|
|
14318
|
+
"resolved": "{ selectedRowIds: string[]; }",
|
|
14131
14319
|
"references": {}
|
|
14132
14320
|
},
|
|
14133
14321
|
"cancelable": true,
|
|
14134
14322
|
"composed": true,
|
|
14135
|
-
"docs": "
|
|
14323
|
+
"docs": "Emitted when row selection changes in compositional `selectable` mode (`bubbles: false`,\n`composed: true`).\nListen on this `xpl-table` instance only; the event does not bubble to parents—use\n`table.addEventListener('rowSelectionChange', …)` on the same element. When wiring from a\nscript in static HTML, wait for `customElements.whenDefined('xpl-table')` so the host is ready.\n(Named `rowSelectionChange` to avoid clashing with the native `selectionchange` event.)",
|
|
14324
|
+
"docsTags": []
|
|
14325
|
+
},
|
|
14326
|
+
{
|
|
14327
|
+
"event": "sortChanged",
|
|
14328
|
+
"detail": "XplTableSortChangedDetail",
|
|
14329
|
+
"bubbles": false,
|
|
14330
|
+
"complexType": {
|
|
14331
|
+
"original": "XplTableSortChangedDetail",
|
|
14332
|
+
"resolved": "XplTableSortChangedDetail",
|
|
14333
|
+
"references": {
|
|
14334
|
+
"XplTableSortChangedDetail": {
|
|
14335
|
+
"location": "local",
|
|
14336
|
+
"path": "/home/runner/work/apollo/apollo/packages/apollo-core/src/components/components/xpl-table/xpl-table.tsx",
|
|
14337
|
+
"id": "src/components/components/xpl-table/xpl-table.tsx::XplTableSortChangedDetail"
|
|
14338
|
+
}
|
|
14339
|
+
}
|
|
14340
|
+
},
|
|
14341
|
+
"cancelable": true,
|
|
14342
|
+
"composed": true,
|
|
14343
|
+
"docs": "Emitted when sort changes in **legacy** or **compositional** mode. `event.detail` is a plain\nobject: **sort-key slug → `'asc' | 'desc' | null`** (null = that column not sorted). Keys match\nlegacy column titles (slugified) or compositional `sort-key` / label slugs. Call\n`event.preventDefault()` in legacy mode to skip built-in row sorting; compositional tables do\nnot reorder rows automatically.",
|
|
14136
14344
|
"docsTags": []
|
|
14137
14345
|
},
|
|
14138
14346
|
{
|
|
@@ -14146,24 +14354,106 @@
|
|
|
14146
14354
|
},
|
|
14147
14355
|
"cancelable": true,
|
|
14148
14356
|
"composed": true,
|
|
14149
|
-
"docs": "Callback function that is called when the checkbox for a row of a\n`multiselect` table is checked",
|
|
14357
|
+
"docs": "Callback function that is called when the checkbox for a row of a\n`multiselect` table is checked.",
|
|
14150
14358
|
"docsTags": []
|
|
14151
14359
|
}
|
|
14152
14360
|
],
|
|
14153
|
-
"listeners": [
|
|
14154
|
-
|
|
14155
|
-
|
|
14156
|
-
|
|
14157
|
-
|
|
14158
|
-
|
|
14159
|
-
|
|
14160
|
-
|
|
14161
|
-
|
|
14361
|
+
"listeners": [
|
|
14362
|
+
{
|
|
14363
|
+
"event": "xplTableColumnWidthsChange",
|
|
14364
|
+
"capture": false,
|
|
14365
|
+
"passive": false
|
|
14366
|
+
},
|
|
14367
|
+
{
|
|
14368
|
+
"event": "checkboxChange",
|
|
14369
|
+
"capture": false,
|
|
14370
|
+
"passive": false
|
|
14371
|
+
},
|
|
14372
|
+
{
|
|
14373
|
+
"event": "headerCheckboxChange",
|
|
14374
|
+
"capture": false,
|
|
14375
|
+
"passive": false
|
|
14376
|
+
},
|
|
14377
|
+
{
|
|
14378
|
+
"event": "pointerdown",
|
|
14379
|
+
"capture": true,
|
|
14380
|
+
"passive": true
|
|
14381
|
+
},
|
|
14382
|
+
{
|
|
14383
|
+
"event": "pointerdown",
|
|
14384
|
+
"capture": true,
|
|
14385
|
+
"passive": true
|
|
14386
|
+
},
|
|
14387
|
+
{
|
|
14388
|
+
"event": "dragstart",
|
|
14389
|
+
"capture": true,
|
|
14390
|
+
"passive": true
|
|
14391
|
+
},
|
|
14392
|
+
{
|
|
14393
|
+
"event": "dragend",
|
|
14394
|
+
"capture": true,
|
|
14395
|
+
"passive": true
|
|
14396
|
+
},
|
|
14397
|
+
{
|
|
14398
|
+
"event": "dragover",
|
|
14399
|
+
"capture": true,
|
|
14400
|
+
"passive": false
|
|
14401
|
+
},
|
|
14402
|
+
{
|
|
14403
|
+
"event": "dragenter",
|
|
14404
|
+
"capture": true,
|
|
14405
|
+
"passive": false
|
|
14406
|
+
},
|
|
14407
|
+
{
|
|
14408
|
+
"event": "dragleave",
|
|
14409
|
+
"capture": true,
|
|
14410
|
+
"passive": true
|
|
14411
|
+
},
|
|
14412
|
+
{
|
|
14413
|
+
"event": "drop",
|
|
14414
|
+
"capture": true,
|
|
14415
|
+
"passive": false
|
|
14416
|
+
},
|
|
14417
|
+
{
|
|
14418
|
+
"event": "headerSortChange",
|
|
14419
|
+
"capture": false,
|
|
14420
|
+
"passive": false
|
|
14421
|
+
}
|
|
14162
14422
|
],
|
|
14163
|
-
"
|
|
14164
|
-
|
|
14165
|
-
|
|
14166
|
-
"
|
|
14423
|
+
"styles": [],
|
|
14424
|
+
"slots": [
|
|
14425
|
+
{
|
|
14426
|
+
"name": "",
|
|
14427
|
+
"docs": "`xpl-table-header`, `xpl-table-body`, and optional `xpl-table-footer`."
|
|
14428
|
+
},
|
|
14429
|
+
{
|
|
14430
|
+
"name": "toolbar-actions-left",
|
|
14431
|
+
"docs": "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."
|
|
14432
|
+
},
|
|
14433
|
+
{
|
|
14434
|
+
"name": "toolbar-actions-right",
|
|
14435
|
+
"docs": "Bulk actions in the selection toolbar (right group). Same visibility as `toolbar-actions-left`."
|
|
14436
|
+
}
|
|
14437
|
+
],
|
|
14438
|
+
"parts": [],
|
|
14439
|
+
"states": [],
|
|
14440
|
+
"dependents": [],
|
|
14441
|
+
"dependencies": [
|
|
14442
|
+
"xpl-table-header-cell",
|
|
14443
|
+
"xpl-table-cell",
|
|
14444
|
+
"xpl-icon",
|
|
14445
|
+
"xpl-table-footer-cell"
|
|
14446
|
+
],
|
|
14447
|
+
"dependencyGraph": {
|
|
14448
|
+
"xpl-table": [
|
|
14449
|
+
"xpl-table-header-cell",
|
|
14450
|
+
"xpl-table-cell",
|
|
14451
|
+
"xpl-icon",
|
|
14452
|
+
"xpl-table-footer-cell"
|
|
14453
|
+
],
|
|
14454
|
+
"xpl-table-header-cell": [
|
|
14455
|
+
"xpl-icon",
|
|
14456
|
+
"xpl-checkbox"
|
|
14167
14457
|
]
|
|
14168
14458
|
}
|
|
14169
14459
|
},
|
|
@@ -14171,7 +14461,7 @@
|
|
|
14171
14461
|
"filePath": "src/components/components/xpl-table/xpl-table-body/xpl-table-body.tsx",
|
|
14172
14462
|
"encapsulation": "none",
|
|
14173
14463
|
"tag": "xpl-table-body",
|
|
14174
|
-
"readme": "# xpl-table-body\n\nRow group for compositional table body content. Uses `display: contents` so slotted rows participate in the parent grid layout.\n\n
|
|
14464
|
+
"readme": "# xpl-table-body\n\nRow group for compositional table body content. Uses `display: contents` so slotted rows participate in the parent grid layout.\n\n## Design Tokens\n\n| Element | Property | Token | Light | Dark |\n| ------- | -------- | ----- | ----- | ---- |\n| Host | display | — | `contents` | `contents` |\n",
|
|
14175
14465
|
"docs": "Row group for compositional table body content. Uses `display: contents` so slotted rows participate in the parent grid layout.",
|
|
14176
14466
|
"docsTags": [],
|
|
14177
14467
|
"usage": {},
|
|
@@ -14187,11 +14477,163 @@
|
|
|
14187
14477
|
"dependencies": [],
|
|
14188
14478
|
"dependencyGraph": {}
|
|
14189
14479
|
},
|
|
14480
|
+
{
|
|
14481
|
+
"filePath": "src/components/components/xpl-table/xpl-table-cell/xpl-table-cell.tsx",
|
|
14482
|
+
"encapsulation": "none",
|
|
14483
|
+
"tag": "xpl-table-cell",
|
|
14484
|
+
"readme": "# xpl-table-cell\n\nBody 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.\n\n## Design Tokens\n\nExtends `.xpl-table-cell-base` (`table-cell-base.css`); row states (selected, disabled, striped) are applied from `table-row.css`.\n\n| Element | Property | Token | Light | Dark |\n| ------- | -------- | ----- | ----- | ---- |\n| Cell | background | `--xpl-background-surface-default` | neutral-0 | neutral-1000 |\n| Cell | text | `--xpl-text-default` | neutral-900 | neutral-50 |\n| Cell | border (right/bottom) | `--xpl-border-small`, `--xpl-border-default` | 1px, neutral-200 | 1px, neutral-800 |\n| Cell | padding | `--xpl-space-10`, `--xpl-space-16` | 10px / 16px | 10px / 16px |\n| Cell | min-height | `--xpl-size-350` | 56px | 56px |\n| Cell | typography | `@extend .xpl-text-title-5` | title-5 / medium | title-5 / medium |\n| Bold text | font-weight | `--xpl-font-weight-semibold` | 600 | 600 |\n| Disabled | text | `--xpl-text-disabled` | neutral-400 | neutral-600 |\n| Caption slot | text | `--xpl-text-subdued` | neutral-600 | neutral-400 |\n| Icon | color | `--xpl-icon-default` | neutral-900 | neutral-50 |\n| Reorder grip | color | `--xpl-icon-subtle` | neutral-600 | neutral-400 |\n| Reorder grip focus | outline | `--xpl-border-focus` | purple-500 | purple-400 |\n| Checkbox-only column | padding | `--xpl-space-16` + `--xpl-space-4` | 20px / 16px | 20px / 16px |\n",
|
|
14485
|
+
"docs": "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.",
|
|
14486
|
+
"docsTags": [],
|
|
14487
|
+
"usage": {},
|
|
14488
|
+
"props": [
|
|
14489
|
+
{
|
|
14490
|
+
"name": "align",
|
|
14491
|
+
"type": "\"center\" | \"left\" | \"right\"",
|
|
14492
|
+
"complexType": {
|
|
14493
|
+
"original": "'left' | 'right' | 'center'",
|
|
14494
|
+
"resolved": "\"center\" | \"left\" | \"right\"",
|
|
14495
|
+
"references": {}
|
|
14496
|
+
},
|
|
14497
|
+
"mutable": false,
|
|
14498
|
+
"attr": "align",
|
|
14499
|
+
"reflectToAttr": false,
|
|
14500
|
+
"docs": "Horizontal text alignment within the cell.",
|
|
14501
|
+
"docsTags": [
|
|
14502
|
+
{
|
|
14503
|
+
"name": "default",
|
|
14504
|
+
"text": "'left'"
|
|
14505
|
+
}
|
|
14506
|
+
],
|
|
14507
|
+
"default": "'left'",
|
|
14508
|
+
"values": [
|
|
14509
|
+
{
|
|
14510
|
+
"value": "center",
|
|
14511
|
+
"type": "string"
|
|
14512
|
+
},
|
|
14513
|
+
{
|
|
14514
|
+
"value": "left",
|
|
14515
|
+
"type": "string"
|
|
14516
|
+
},
|
|
14517
|
+
{
|
|
14518
|
+
"value": "right",
|
|
14519
|
+
"type": "string"
|
|
14520
|
+
}
|
|
14521
|
+
],
|
|
14522
|
+
"optional": false,
|
|
14523
|
+
"required": false,
|
|
14524
|
+
"getter": false,
|
|
14525
|
+
"setter": false
|
|
14526
|
+
},
|
|
14527
|
+
{
|
|
14528
|
+
"name": "bold",
|
|
14529
|
+
"type": "boolean",
|
|
14530
|
+
"complexType": {
|
|
14531
|
+
"original": "boolean",
|
|
14532
|
+
"resolved": "boolean",
|
|
14533
|
+
"references": {}
|
|
14534
|
+
},
|
|
14535
|
+
"mutable": false,
|
|
14536
|
+
"attr": "bold",
|
|
14537
|
+
"reflectToAttr": false,
|
|
14538
|
+
"docs": "Renders cell text in bold (--xpl-font-weight-semibold).",
|
|
14539
|
+
"docsTags": [
|
|
14540
|
+
{
|
|
14541
|
+
"name": "default",
|
|
14542
|
+
"text": "false"
|
|
14543
|
+
}
|
|
14544
|
+
],
|
|
14545
|
+
"default": "false",
|
|
14546
|
+
"values": [
|
|
14547
|
+
{
|
|
14548
|
+
"type": "boolean"
|
|
14549
|
+
}
|
|
14550
|
+
],
|
|
14551
|
+
"optional": false,
|
|
14552
|
+
"required": false,
|
|
14553
|
+
"getter": false,
|
|
14554
|
+
"setter": false
|
|
14555
|
+
},
|
|
14556
|
+
{
|
|
14557
|
+
"name": "disabled",
|
|
14558
|
+
"type": "boolean",
|
|
14559
|
+
"complexType": {
|
|
14560
|
+
"original": "boolean",
|
|
14561
|
+
"resolved": "boolean",
|
|
14562
|
+
"references": {}
|
|
14563
|
+
},
|
|
14564
|
+
"mutable": false,
|
|
14565
|
+
"attr": "disabled",
|
|
14566
|
+
"reflectToAttr": false,
|
|
14567
|
+
"docs": "Whether the cell and its interactive children are disabled. Set automatically by xpl-table-row.",
|
|
14568
|
+
"docsTags": [
|
|
14569
|
+
{
|
|
14570
|
+
"name": "default",
|
|
14571
|
+
"text": "false"
|
|
14572
|
+
}
|
|
14573
|
+
],
|
|
14574
|
+
"default": "false",
|
|
14575
|
+
"values": [
|
|
14576
|
+
{
|
|
14577
|
+
"type": "boolean"
|
|
14578
|
+
}
|
|
14579
|
+
],
|
|
14580
|
+
"optional": false,
|
|
14581
|
+
"required": false,
|
|
14582
|
+
"getter": false,
|
|
14583
|
+
"setter": false
|
|
14584
|
+
},
|
|
14585
|
+
{
|
|
14586
|
+
"name": "underline",
|
|
14587
|
+
"type": "boolean",
|
|
14588
|
+
"complexType": {
|
|
14589
|
+
"original": "boolean",
|
|
14590
|
+
"resolved": "boolean",
|
|
14591
|
+
"references": {}
|
|
14592
|
+
},
|
|
14593
|
+
"mutable": false,
|
|
14594
|
+
"attr": "underline",
|
|
14595
|
+
"reflectToAttr": false,
|
|
14596
|
+
"docs": "Adds an underline to cell text.",
|
|
14597
|
+
"docsTags": [
|
|
14598
|
+
{
|
|
14599
|
+
"name": "default",
|
|
14600
|
+
"text": "false"
|
|
14601
|
+
}
|
|
14602
|
+
],
|
|
14603
|
+
"default": "false",
|
|
14604
|
+
"values": [
|
|
14605
|
+
{
|
|
14606
|
+
"type": "boolean"
|
|
14607
|
+
}
|
|
14608
|
+
],
|
|
14609
|
+
"optional": false,
|
|
14610
|
+
"required": false,
|
|
14611
|
+
"getter": false,
|
|
14612
|
+
"setter": false
|
|
14613
|
+
}
|
|
14614
|
+
],
|
|
14615
|
+
"methods": [],
|
|
14616
|
+
"events": [],
|
|
14617
|
+
"listeners": [],
|
|
14618
|
+
"styles": [],
|
|
14619
|
+
"slots": [],
|
|
14620
|
+
"parts": [],
|
|
14621
|
+
"states": [],
|
|
14622
|
+
"dependents": [
|
|
14623
|
+
"xpl-table"
|
|
14624
|
+
],
|
|
14625
|
+
"dependencies": [],
|
|
14626
|
+
"dependencyGraph": {
|
|
14627
|
+
"xpl-table": [
|
|
14628
|
+
"xpl-table-cell"
|
|
14629
|
+
]
|
|
14630
|
+
}
|
|
14631
|
+
},
|
|
14190
14632
|
{
|
|
14191
14633
|
"filePath": "src/components/components/xpl-table/xpl-table-footer/xpl-table-footer.tsx",
|
|
14192
14634
|
"encapsulation": "none",
|
|
14193
14635
|
"tag": "xpl-table-footer",
|
|
14194
|
-
"readme": "# xpl-table-footer\n\nRow group for compositional table footer content. Uses `display: contents` so slotted footer rows participate in the parent grid layout.\n\n
|
|
14636
|
+
"readme": "# xpl-table-footer\n\nRow group for compositional table footer content. Uses `display: contents` so slotted footer rows participate in the parent grid layout.\n\n## Design Tokens\n\n| Element | Property | Token | Light | Dark |\n| ------- | -------- | ----- | ----- | ---- |\n| Host | display | — | `contents` | `contents` |\n",
|
|
14195
14637
|
"docs": "Row group for compositional table footer content. Uses `display: contents` so slotted footer rows participate in the parent grid layout.",
|
|
14196
14638
|
"docsTags": [],
|
|
14197
14639
|
"usage": {},
|
|
@@ -14211,8 +14653,8 @@
|
|
|
14211
14653
|
"filePath": "src/components/components/xpl-table/xpl-table-footer-cell/xpl-table-footer-cell.tsx",
|
|
14212
14654
|
"encapsulation": "none",
|
|
14213
14655
|
"tag": "xpl-table-footer-cell",
|
|
14214
|
-
"readme": "# xpl-table-footer-cell\n\nFooter cell for compositional tables. Extends the shared `.xpl-table-cell-base` styles with
|
|
14215
|
-
"docs": "Footer cell for compositional tables. Extends the shared `.xpl-table-cell-base` styles with
|
|
14656
|
+
"readme": "# xpl-table-footer-cell\n\nFooter cell for compositional tables. Extends the shared `.xpl-table-cell-base` styles with footer-row border rules from `table.css`.\n\n## Design Tokens\n\n| Element | Property | Token | Light | Dark |\n| ------- | -------- | ----- | ----- | ---- |\n| Cell | extends | `.xpl-table-cell-base` | (shared compositional cell base) | (shared compositional cell base) |\n| Cell | background | `--xpl-background-surface-default` | neutral-0 | neutral-1000 |\n| Cell | text | `--xpl-text-default` | neutral-900 | neutral-50 |\n| Cell | border (right/bottom) | `--xpl-border-small`, `--xpl-border-default` | 1px, neutral-200 | 1px, neutral-800 |\n| Last footer row | border-bottom | none (host draws frame) | — | — |\n",
|
|
14657
|
+
"docs": "Footer cell for compositional tables. Extends the shared `.xpl-table-cell-base` styles with footer-row border rules from `table.css`.",
|
|
14216
14658
|
"docsTags": [],
|
|
14217
14659
|
"usage": {},
|
|
14218
14660
|
"props": [
|
|
@@ -14262,9 +14704,15 @@
|
|
|
14262
14704
|
"slots": [],
|
|
14263
14705
|
"parts": [],
|
|
14264
14706
|
"states": [],
|
|
14265
|
-
"dependents": [
|
|
14707
|
+
"dependents": [
|
|
14708
|
+
"xpl-table"
|
|
14709
|
+
],
|
|
14266
14710
|
"dependencies": [],
|
|
14267
|
-
"dependencyGraph": {
|
|
14711
|
+
"dependencyGraph": {
|
|
14712
|
+
"xpl-table": [
|
|
14713
|
+
"xpl-table-footer-cell"
|
|
14714
|
+
]
|
|
14715
|
+
}
|
|
14268
14716
|
},
|
|
14269
14717
|
{
|
|
14270
14718
|
"filePath": "src/components/components/xpl-table-header/xpl-table-header.tsx",
|
|
@@ -14292,19 +14740,127 @@
|
|
|
14292
14740
|
"dependencyGraph": {}
|
|
14293
14741
|
},
|
|
14294
14742
|
{
|
|
14295
|
-
"filePath": "src/components/components/xpl-table-header-cell/xpl-table-header-cell.tsx",
|
|
14743
|
+
"filePath": "src/components/components/xpl-table/xpl-table-header-cell/xpl-table-header-cell.tsx",
|
|
14296
14744
|
"encapsulation": "none",
|
|
14297
14745
|
"tag": "xpl-table-header-cell",
|
|
14298
|
-
"readme": "# xpl-table-header-cell\n\n> **Note:** This component is currently in beta. Use with caution as it may have breaking changes in future releases.\n\nThe `icon` property accepts icon names as strings. See [xpl-icon available icons](../xpl-icon/ICONS.md) for the complete list.\n\n---\n",
|
|
14299
|
-
"docs": "> **Note:** This component is currently in beta. Use with caution as it may have breaking changes in future releases.\n\nThe `icon` property accepts icon names as strings. See [xpl-icon available icons](../xpl-icon/ICONS.md) for the complete list.\n\n
|
|
14300
|
-
"docsTags": [
|
|
14301
|
-
{
|
|
14302
|
-
"name": "since",
|
|
14303
|
-
"text": "1.3.0"
|
|
14304
|
-
}
|
|
14305
|
-
],
|
|
14746
|
+
"readme": "# xpl-table-header-cell\r\n\r\n> **Note:** This component is currently in beta. Use with caution as it may have breaking changes in future releases.\r\n\r\nThe `icon` property accepts icon names as strings. See [xpl-icon available icons](../xpl-icon/ICONS.md) for the complete list.\r\n\r\nWhen this cell is used inside a compositional [`xpl-table`](../xpl-table) with `selectable`, **you** add a `type=\"checkbox\"` header cell for select-all; `xpl-table` keeps `checked` and `indeterminate` in sync with row selection.\r\n\r\n**Frameworks (Vue / etc.):** `type` is **reflected** to the DOM. You may bind with `:type=\"'checkbox'\"` or `type=\"checkbox\"`; the host will still expose `type=\"checkbox\"` as an attribute so the table’s selection column logic and styles stay correct.\r\n\r\nFor **sortable** columns (`type=\"label\"`), set **`sortable`** and optionally **`sort-key`**; the parent table emits **`sortChanged`** (see [`xpl-table` events](../xpl-table#events)).\r\n\r\n**Column width (compositional grid):** Each header cell defines one grid column on the parent `xpl-table`. By default the track is **`auto`** (sizes from content). Set **`width`** for a fixed pixel width (minimum 48px), or **`column-width`** for any CSS grid track string (`1fr`, `minmax(120px, 1fr)`, etc.). When both are set, **`column-width` wins**.\r\n\r\n## Design Tokens\r\n\r\n| Element | Property | Token | Light | Dark |\r\n| ------- | -------- | ----- | ----- | ---- |\r\n| Cell | background | `--xpl-background-surface-subtlest` | neutral-50 | neutral-950 |\r\n| Cell | text | `--xpl-text-subdued` | neutral-600 | neutral-400 |\r\n| Cell | border (right/bottom) | `--xpl-border-small`, `--xpl-border-default` | 1px, neutral-200 | 1px, neutral-800 |\r\n| Cell | min-width | `--xpl-size-300` | 48px | 48px |\r\n| Cell | min-height | `--xpl-size-350` | 56px | 56px |\r\n| Cell | typography | `@extend .xpl-text-title-5` | title-5 / medium | title-5 / medium |\r\n| Sort button | padding | `--xpl-space-12`, `--xpl-space-16` | 12px / 16px | 12px / 16px |\r\n| Sort button focus | outline | `--xpl-border-focus` | purple-500 | purple-400 |\r\n| Sort icon (default) | color | `--xpl-text-subdued` | neutral-600 | neutral-400 |\r\n| Sort icon (active) | color | `--xpl-icon-information` | blue-500 | blue-400 |\r\n| Checkbox column | padding | `--xpl-space-16` + `--xpl-space-4` | 20px / 16px | 20px / 16px |\r\n\r\n---\r\n\r",
|
|
14747
|
+
"docs": "> **Note:** This component is currently in beta. Use with caution as it may have breaking changes in future releases.\r\n\r\nThe `icon` property accepts icon names as strings. See [xpl-icon available icons](../xpl-icon/ICONS.md) for the complete list.\r\n\r\nWhen this cell is used inside a compositional [`xpl-table`](../xpl-table) with `selectable`, **you** add a `type=\"checkbox\"` header cell for select-all; `xpl-table` keeps `checked` and `indeterminate` in sync with row selection.\r\n\r\n**Frameworks (Vue / etc.):** `type` is **reflected** to the DOM. You may bind with `:type=\"'checkbox'\"` or `type=\"checkbox\"`; the host will still expose `type=\"checkbox\"` as an attribute so the table’s selection column logic and styles stay correct.\r\n\r\nFor **sortable** columns (`type=\"label\"`), set **`sortable`** and optionally **`sort-key`**; the parent table emits **`sortChanged`** (see [`xpl-table` events](../xpl-table#events)).\r\n\r\n**Column width (compositional grid):** Each header cell defines one grid column on the parent `xpl-table`. By default the track is **`auto`** (sizes from content). Set **`width`** for a fixed pixel width (minimum 48px), or **`column-width`** for any CSS grid track string (`1fr`, `minmax(120px, 1fr)`, etc.). When both are set, **`column-width` wins**.",
|
|
14748
|
+
"docsTags": [],
|
|
14306
14749
|
"usage": {},
|
|
14307
14750
|
"props": [
|
|
14751
|
+
{
|
|
14752
|
+
"name": "align",
|
|
14753
|
+
"type": "\"center\" | \"left\" | \"right\"",
|
|
14754
|
+
"complexType": {
|
|
14755
|
+
"original": "'left' | 'right' | 'center'",
|
|
14756
|
+
"resolved": "\"center\" | \"left\" | \"right\"",
|
|
14757
|
+
"references": {}
|
|
14758
|
+
},
|
|
14759
|
+
"mutable": false,
|
|
14760
|
+
"attr": "align",
|
|
14761
|
+
"reflectToAttr": false,
|
|
14762
|
+
"docs": "Horizontal text alignment within the header cell.",
|
|
14763
|
+
"docsTags": [
|
|
14764
|
+
{
|
|
14765
|
+
"name": "default",
|
|
14766
|
+
"text": "'left'"
|
|
14767
|
+
}
|
|
14768
|
+
],
|
|
14769
|
+
"default": "'left'",
|
|
14770
|
+
"values": [
|
|
14771
|
+
{
|
|
14772
|
+
"value": "center",
|
|
14773
|
+
"type": "string"
|
|
14774
|
+
},
|
|
14775
|
+
{
|
|
14776
|
+
"value": "left",
|
|
14777
|
+
"type": "string"
|
|
14778
|
+
},
|
|
14779
|
+
{
|
|
14780
|
+
"value": "right",
|
|
14781
|
+
"type": "string"
|
|
14782
|
+
}
|
|
14783
|
+
],
|
|
14784
|
+
"optional": false,
|
|
14785
|
+
"required": false,
|
|
14786
|
+
"getter": false,
|
|
14787
|
+
"setter": false
|
|
14788
|
+
},
|
|
14789
|
+
{
|
|
14790
|
+
"name": "checkboxAriaLabel",
|
|
14791
|
+
"type": "string",
|
|
14792
|
+
"complexType": {
|
|
14793
|
+
"original": "string",
|
|
14794
|
+
"resolved": "string",
|
|
14795
|
+
"references": {}
|
|
14796
|
+
},
|
|
14797
|
+
"mutable": false,
|
|
14798
|
+
"attr": "checkbox-aria-label",
|
|
14799
|
+
"reflectToAttr": false,
|
|
14800
|
+
"docs": "Accessible name for the header checkbox (native `aria-label`).\nDefaults to “Select all rows” when `type` is `checkbox`.",
|
|
14801
|
+
"docsTags": [],
|
|
14802
|
+
"values": [
|
|
14803
|
+
{
|
|
14804
|
+
"type": "string"
|
|
14805
|
+
}
|
|
14806
|
+
],
|
|
14807
|
+
"optional": true,
|
|
14808
|
+
"required": false,
|
|
14809
|
+
"getter": false,
|
|
14810
|
+
"setter": false
|
|
14811
|
+
},
|
|
14812
|
+
{
|
|
14813
|
+
"name": "checked",
|
|
14814
|
+
"type": "boolean",
|
|
14815
|
+
"complexType": {
|
|
14816
|
+
"original": "boolean",
|
|
14817
|
+
"resolved": "boolean",
|
|
14818
|
+
"references": {}
|
|
14819
|
+
},
|
|
14820
|
+
"mutable": false,
|
|
14821
|
+
"attr": "checked",
|
|
14822
|
+
"reflectToAttr": false,
|
|
14823
|
+
"docs": "Whether the header checkbox is checked",
|
|
14824
|
+
"docsTags": [
|
|
14825
|
+
{
|
|
14826
|
+
"name": "default",
|
|
14827
|
+
"text": "false"
|
|
14828
|
+
}
|
|
14829
|
+
],
|
|
14830
|
+
"default": "false",
|
|
14831
|
+
"values": [
|
|
14832
|
+
{
|
|
14833
|
+
"type": "boolean"
|
|
14834
|
+
}
|
|
14835
|
+
],
|
|
14836
|
+
"optional": false,
|
|
14837
|
+
"required": false,
|
|
14838
|
+
"getter": false,
|
|
14839
|
+
"setter": false
|
|
14840
|
+
},
|
|
14841
|
+
{
|
|
14842
|
+
"name": "columnWidth",
|
|
14843
|
+
"type": "string",
|
|
14844
|
+
"complexType": {
|
|
14845
|
+
"original": "string",
|
|
14846
|
+
"resolved": "string",
|
|
14847
|
+
"references": {}
|
|
14848
|
+
},
|
|
14849
|
+
"mutable": false,
|
|
14850
|
+
"attr": "column-width",
|
|
14851
|
+
"reflectToAttr": true,
|
|
14852
|
+
"docs": "CSS grid track size for this column (e.g. `1fr`, `minmax(120px, 1fr)`, `auto`). When set, overrides `width`.\nUse this when you need flexible columns; default layout uses `auto` per column unless you set a track here.",
|
|
14853
|
+
"docsTags": [],
|
|
14854
|
+
"values": [
|
|
14855
|
+
{
|
|
14856
|
+
"type": "string"
|
|
14857
|
+
}
|
|
14858
|
+
],
|
|
14859
|
+
"optional": true,
|
|
14860
|
+
"required": false,
|
|
14861
|
+
"getter": false,
|
|
14862
|
+
"setter": false
|
|
14863
|
+
},
|
|
14308
14864
|
{
|
|
14309
14865
|
"name": "icon",
|
|
14310
14866
|
"type": "string",
|
|
@@ -14328,6 +14884,35 @@
|
|
|
14328
14884
|
"getter": false,
|
|
14329
14885
|
"setter": false
|
|
14330
14886
|
},
|
|
14887
|
+
{
|
|
14888
|
+
"name": "indeterminate",
|
|
14889
|
+
"type": "boolean",
|
|
14890
|
+
"complexType": {
|
|
14891
|
+
"original": "boolean",
|
|
14892
|
+
"resolved": "boolean",
|
|
14893
|
+
"references": {}
|
|
14894
|
+
},
|
|
14895
|
+
"mutable": false,
|
|
14896
|
+
"attr": "indeterminate",
|
|
14897
|
+
"reflectToAttr": false,
|
|
14898
|
+
"docs": "Whether the checkbox is in indeterminate (partially selected) state",
|
|
14899
|
+
"docsTags": [
|
|
14900
|
+
{
|
|
14901
|
+
"name": "default",
|
|
14902
|
+
"text": "false"
|
|
14903
|
+
}
|
|
14904
|
+
],
|
|
14905
|
+
"default": "false",
|
|
14906
|
+
"values": [
|
|
14907
|
+
{
|
|
14908
|
+
"type": "boolean"
|
|
14909
|
+
}
|
|
14910
|
+
],
|
|
14911
|
+
"optional": false,
|
|
14912
|
+
"required": false,
|
|
14913
|
+
"getter": false,
|
|
14914
|
+
"setter": false
|
|
14915
|
+
},
|
|
14331
14916
|
{
|
|
14332
14917
|
"name": "label",
|
|
14333
14918
|
"type": "string",
|
|
@@ -14339,12 +14924,8 @@
|
|
|
14339
14924
|
"mutable": false,
|
|
14340
14925
|
"attr": "label",
|
|
14341
14926
|
"reflectToAttr": false,
|
|
14342
|
-
"docs": "",
|
|
14927
|
+
"docs": "Text to display in the cell.",
|
|
14343
14928
|
"docsTags": [
|
|
14344
|
-
{
|
|
14345
|
-
"name": "property",
|
|
14346
|
-
"text": "{string} - Text to display in the cell"
|
|
14347
|
-
},
|
|
14348
14929
|
{
|
|
14349
14930
|
"name": "default",
|
|
14350
14931
|
"text": "''"
|
|
@@ -14361,6 +14942,57 @@
|
|
|
14361
14942
|
"getter": false,
|
|
14362
14943
|
"setter": false
|
|
14363
14944
|
},
|
|
14945
|
+
{
|
|
14946
|
+
"name": "sortDirection",
|
|
14947
|
+
"type": "\"asc\" | \"desc\"",
|
|
14948
|
+
"complexType": {
|
|
14949
|
+
"original": "'asc' | 'desc' | null",
|
|
14950
|
+
"resolved": "\"asc\" | \"desc\"",
|
|
14951
|
+
"references": {}
|
|
14952
|
+
},
|
|
14953
|
+
"mutable": true,
|
|
14954
|
+
"attr": "sort-direction",
|
|
14955
|
+
"reflectToAttr": true,
|
|
14956
|
+
"docs": "Active sort direction for this column when `sortable`. Set by `xpl-table` when used inside\na compositional table; may be set by the app for controlled updates.",
|
|
14957
|
+
"docsTags": [],
|
|
14958
|
+
"values": [
|
|
14959
|
+
{
|
|
14960
|
+
"value": "asc",
|
|
14961
|
+
"type": "string"
|
|
14962
|
+
},
|
|
14963
|
+
{
|
|
14964
|
+
"value": "desc",
|
|
14965
|
+
"type": "string"
|
|
14966
|
+
}
|
|
14967
|
+
],
|
|
14968
|
+
"optional": true,
|
|
14969
|
+
"required": false,
|
|
14970
|
+
"getter": false,
|
|
14971
|
+
"setter": false
|
|
14972
|
+
},
|
|
14973
|
+
{
|
|
14974
|
+
"name": "sortKey",
|
|
14975
|
+
"type": "string",
|
|
14976
|
+
"complexType": {
|
|
14977
|
+
"original": "string",
|
|
14978
|
+
"resolved": "string",
|
|
14979
|
+
"references": {}
|
|
14980
|
+
},
|
|
14981
|
+
"mutable": false,
|
|
14982
|
+
"attr": "sort-key",
|
|
14983
|
+
"reflectToAttr": false,
|
|
14984
|
+
"docs": "When `sortable` is true, optional stable id used as the key in `sortChanged`’s detail object.\nFalls back to a slug of `label` when omitted.",
|
|
14985
|
+
"docsTags": [],
|
|
14986
|
+
"values": [
|
|
14987
|
+
{
|
|
14988
|
+
"type": "string"
|
|
14989
|
+
}
|
|
14990
|
+
],
|
|
14991
|
+
"optional": true,
|
|
14992
|
+
"required": false,
|
|
14993
|
+
"getter": false,
|
|
14994
|
+
"setter": false
|
|
14995
|
+
},
|
|
14364
14996
|
{
|
|
14365
14997
|
"name": "sortable",
|
|
14366
14998
|
"type": "boolean",
|
|
@@ -14372,12 +15004,8 @@
|
|
|
14372
15004
|
"mutable": false,
|
|
14373
15005
|
"attr": "sortable",
|
|
14374
15006
|
"reflectToAttr": false,
|
|
14375
|
-
"docs": "",
|
|
15007
|
+
"docs": "When true (and `type` is `label`), renders a sort control (button + affordance icon).",
|
|
14376
15008
|
"docsTags": [
|
|
14377
|
-
{
|
|
14378
|
-
"name": "property",
|
|
14379
|
-
"text": "{boolean} - Whether the cell is sortable or not"
|
|
14380
|
-
},
|
|
14381
15009
|
{
|
|
14382
15010
|
"name": "default",
|
|
14383
15011
|
"text": "false"
|
|
@@ -14389,28 +15017,24 @@
|
|
|
14389
15017
|
"type": "boolean"
|
|
14390
15018
|
}
|
|
14391
15019
|
],
|
|
14392
|
-
"optional":
|
|
15020
|
+
"optional": false,
|
|
14393
15021
|
"required": false,
|
|
14394
15022
|
"getter": false,
|
|
14395
15023
|
"setter": false
|
|
14396
15024
|
},
|
|
14397
15025
|
{
|
|
14398
15026
|
"name": "type",
|
|
14399
|
-
"type": "\"checkbox\" | \"icon\" | \"label\"",
|
|
15027
|
+
"type": "\"checkbox\" | \"empty\" | \"icon\" | \"label\"",
|
|
14400
15028
|
"complexType": {
|
|
14401
|
-
"original": "'label' | 'checkbox' | 'icon'",
|
|
14402
|
-
"resolved": "\"checkbox\" | \"icon\" | \"label\"",
|
|
15029
|
+
"original": "'label' | 'checkbox' | 'icon' | 'empty'",
|
|
15030
|
+
"resolved": "\"checkbox\" | \"empty\" | \"icon\" | \"label\"",
|
|
14403
15031
|
"references": {}
|
|
14404
15032
|
},
|
|
14405
15033
|
"mutable": false,
|
|
14406
15034
|
"attr": "type",
|
|
14407
|
-
"reflectToAttr":
|
|
14408
|
-
"docs": "",
|
|
15035
|
+
"reflectToAttr": true,
|
|
15036
|
+
"docs": "The type of cell to render. **Reflected** to the host `type` attribute so `xpl-table` (and CSS\n`[type=\"checkbox\"]`) can find the selection column after frameworks set the prop without syncing\nthe attribute (e.g. Vue `:type=\"'checkbox'\"`).",
|
|
14409
15037
|
"docsTags": [
|
|
14410
|
-
{
|
|
14411
|
-
"name": "property",
|
|
14412
|
-
"text": "{string} - The type of cell to render"
|
|
14413
|
-
},
|
|
14414
15038
|
{
|
|
14415
15039
|
"name": "default",
|
|
14416
15040
|
"text": "'label'"
|
|
@@ -14422,6 +15046,10 @@
|
|
|
14422
15046
|
"value": "checkbox",
|
|
14423
15047
|
"type": "string"
|
|
14424
15048
|
},
|
|
15049
|
+
{
|
|
15050
|
+
"value": "empty",
|
|
15051
|
+
"type": "string"
|
|
15052
|
+
},
|
|
14425
15053
|
{
|
|
14426
15054
|
"value": "icon",
|
|
14427
15055
|
"type": "string"
|
|
@@ -14446,14 +15074,9 @@
|
|
|
14446
15074
|
},
|
|
14447
15075
|
"mutable": false,
|
|
14448
15076
|
"attr": "width",
|
|
14449
|
-
"reflectToAttr":
|
|
14450
|
-
"docs": "",
|
|
14451
|
-
"docsTags": [
|
|
14452
|
-
{
|
|
14453
|
-
"name": "property",
|
|
14454
|
-
"text": "{number} - Width of the cell, in pixels. Minimum width is 48px. If no value is provided, it will default\nto fit the content of the cell with 16px of padding on each side"
|
|
14455
|
-
}
|
|
14456
|
-
],
|
|
15077
|
+
"reflectToAttr": true,
|
|
15078
|
+
"docs": "Fixed width for this column in pixels (minimum 48px). Sets the grid track to `Npx`.\nIgnored when `columnWidth` is set. When omitted, the column track defaults to `auto` (content-sized).",
|
|
15079
|
+
"docsTags": [],
|
|
14457
15080
|
"values": [
|
|
14458
15081
|
{
|
|
14459
15082
|
"type": "number"
|
|
@@ -14468,17 +15091,37 @@
|
|
|
14468
15091
|
"methods": [],
|
|
14469
15092
|
"events": [
|
|
14470
15093
|
{
|
|
14471
|
-
"event": "
|
|
14472
|
-
"detail": "
|
|
15094
|
+
"event": "headerCheckboxChange",
|
|
15095
|
+
"detail": "boolean",
|
|
14473
15096
|
"bubbles": true,
|
|
14474
15097
|
"complexType": {
|
|
14475
|
-
"original": "
|
|
14476
|
-
"resolved": "
|
|
15098
|
+
"original": "boolean",
|
|
15099
|
+
"resolved": "boolean",
|
|
14477
15100
|
"references": {}
|
|
14478
15101
|
},
|
|
14479
15102
|
"cancelable": true,
|
|
14480
15103
|
"composed": true,
|
|
14481
|
-
"docs": "Emitted when
|
|
15104
|
+
"docs": "Emitted when header checkbox changes",
|
|
15105
|
+
"docsTags": []
|
|
15106
|
+
},
|
|
15107
|
+
{
|
|
15108
|
+
"event": "headerSortChange",
|
|
15109
|
+
"detail": "HeaderSortChangeDetail",
|
|
15110
|
+
"bubbles": true,
|
|
15111
|
+
"complexType": {
|
|
15112
|
+
"original": "HeaderSortChangeDetail",
|
|
15113
|
+
"resolved": "HeaderSortChangeDetail",
|
|
15114
|
+
"references": {
|
|
15115
|
+
"HeaderSortChangeDetail": {
|
|
15116
|
+
"location": "local",
|
|
15117
|
+
"path": "/home/runner/work/apollo/apollo/packages/apollo-core/src/components/components/xpl-table/xpl-table-header-cell/xpl-table-header-cell.tsx",
|
|
15118
|
+
"id": "src/components/components/xpl-table/xpl-table-header-cell/xpl-table-header-cell.tsx::HeaderSortChangeDetail"
|
|
15119
|
+
}
|
|
15120
|
+
}
|
|
15121
|
+
},
|
|
15122
|
+
"cancelable": true,
|
|
15123
|
+
"composed": true,
|
|
15124
|
+
"docs": "Emitted when a sortable label header is activated. Parent `xpl-table` coordinates columns and emits `sortChanged`.",
|
|
14482
15125
|
"docsTags": []
|
|
14483
15126
|
}
|
|
14484
15127
|
],
|
|
@@ -14487,15 +15130,20 @@
|
|
|
14487
15130
|
"slots": [],
|
|
14488
15131
|
"parts": [],
|
|
14489
15132
|
"states": [],
|
|
14490
|
-
"dependents": [
|
|
15133
|
+
"dependents": [
|
|
15134
|
+
"xpl-table"
|
|
15135
|
+
],
|
|
14491
15136
|
"dependencies": [
|
|
14492
|
-
"xpl-
|
|
14493
|
-
"xpl-
|
|
15137
|
+
"xpl-icon",
|
|
15138
|
+
"xpl-checkbox"
|
|
14494
15139
|
],
|
|
14495
15140
|
"dependencyGraph": {
|
|
14496
15141
|
"xpl-table-header-cell": [
|
|
14497
|
-
"xpl-
|
|
14498
|
-
"xpl-
|
|
15142
|
+
"xpl-icon",
|
|
15143
|
+
"xpl-checkbox"
|
|
15144
|
+
],
|
|
15145
|
+
"xpl-table": [
|
|
15146
|
+
"xpl-table-header-cell"
|
|
14499
15147
|
]
|
|
14500
15148
|
}
|
|
14501
15149
|
},
|
|
@@ -14503,7 +15151,7 @@
|
|
|
14503
15151
|
"filePath": "src/components/components/xpl-table/xpl-table-row/xpl-table-row.tsx",
|
|
14504
15152
|
"encapsulation": "none",
|
|
14505
15153
|
"tag": "xpl-table-row",
|
|
14506
|
-
"readme": "# xpl-table-row\n\nData row for compositional tables. Uses `display: contents` by default so cells align to the parent grid; when the body supports subgrid, the row becomes a full-width subgrid for drag interactions.\n\n
|
|
15154
|
+
"readme": "# xpl-table-row\n\nData row for compositional tables. Uses `display: contents` by default so cells align to the parent grid; when the body supports subgrid, the row becomes a full-width subgrid for drag interactions.\n\n## Design Tokens\n\nRow state styles target descendant `.xpl-table-cell` nodes (see `table-row.css`).\n\n| Element | Property | Token | Light | Dark |\n| ------- | -------- | ----- | ----- | ---- |\n| Host (default) | display | — | `contents` | `contents` |\n| Host (subgrid body) | display | — | `grid` with `subgrid` | `grid` with `subgrid` |\n| Disabled row | background | `--xpl-background-surface-subtlest` | neutral-50 | neutral-950 |\n| Disabled row | text | `--xpl-text-disabled` | neutral-400 | neutral-600 |\n| Dragging row | background | `--xpl-background-surface-subtle` | neutral-100 | neutral-900 |\n| Dragging row | opacity | `--xpl-opacity-75` | 0.75 | 0.75 |\n| Selected row | background | `--xpl-background-surface-information` | blue-50 | blue-950 |\n| Selected grip (reorder) | icon color | `--xpl-icon-information` | blue-500 | blue-400 |\n| Drag-over outline | inset ring | `--xpl-border-focus`, `--xpl-border-small` | purple-500 | purple-400 |\n| Striped even | background | `--xpl-background-surface-subtlest` | neutral-50 | neutral-950 |\n| Striped selected | background | `--xpl-background-surface-information-bold` | blue-100 | blue-900 |\n| Keyboard reorder grip | outline | `--xpl-border-focus` | purple-500 | purple-400 |\n",
|
|
14507
15155
|
"docs": "Data row for compositional tables. Uses `display: contents` by default so cells align to the parent grid; when the body supports subgrid, the row becomes a full-width subgrid for drag interactions.",
|
|
14508
15156
|
"docsTags": [],
|
|
14509
15157
|
"usage": {},
|
|
@@ -15067,7 +15715,7 @@
|
|
|
15067
15715
|
"filePath": "src/components/components/xpl-toast/xpl-toast.tsx",
|
|
15068
15716
|
"encapsulation": "none",
|
|
15069
15717
|
"tag": "xpl-toast",
|
|
15070
|
-
"readme": "# xpl-toast\n\nToasts are brief, non-disruptive messages that provide quick, at-a-glance feedback. They can have 3 sentiments; neutral, positive and negative and contain actions such as a button or link, or a close button. Messaging can include a title and caption limited to 85 characters. Keep your toast messaging short and to the point and tone in line with the sentiment of the Toast. \n\nThe Toast component is configurable by Sentiment plus show/hide properties for Icon, Caption, Button and Dismissible. Use the nested component’s properties to customize further as needed. \n\nWhen possible, Toasts should auto-dismiss after 8 seconds. When an action is present, it may not be desirable to time out the Toast depending on your specific context. \n\nMatch your messaging with the sentiment of the toast. Most messages will have a neutral sentiment. Reserve negative sentiments for when an explicit failure has occurred. Give users the information they need to correct the issue. \n\nToasts only support a single action and up to 85 characters. If multiple actions can be taken, or the message is longer than a few words, use a [Modal component](https://apollo.xplordocs.com/?path=/story/components-modal--modal) instead.\n\n## Usage\n\n```html\n<!-- Neutral toast with a caption, auto-dismissing after the default 8s -->\n<xpl-toast caption=\"Your changes have been saved.\">\n <p slot=\"title\">Saved</p>\n</xpl-toast>\n\n<!-- With an action. Auto-dismiss is suppressed while the action slot has content -->\n<xpl-toast variant=\"warning\" caption=\"We couldn't reach the server.\">\n <p slot=\"title\">Sync failed</p>\n <xpl-button slot=\"action\" size=\"sm\">Retry</xpl-button>\n</xpl-toast>\n\n<!-- No close button; disable auto-dismiss with timeout=\"0\" -->\n<xpl-toast dismissible=\"false\" timeout=\"0\">\n <p slot=\"title\">Uploading…</p>\n</xpl-toast>\n```\n\n## Deprecations\n\n### `dismissable` → `dismissible`\n\nThe **`dismissable`** prop is misspelled and is **deprecated**. Use **`dismissible`** instead.\n\n```html\n<!-- Before -->\n<xpl-toast dismissable=\"false\">…</xpl-toast>\n\n<!-- After -->\n<xpl-toast dismissible=\"false\">…</xpl-toast>\n```\n\nBoth props are supported during the deprecation window, so no consumer change is required immediately:\n\n| `dismissable` | `dismissible` | Close button shown | Notes |\n| ------------- | ------------- | ------------------ | ----- |\n| unset | unset | ✅ | Default (`dismissible` defaults to `true`) |\n| unset | `false` | ❌ | Recommended usage |\n| `false` | unset | ❌ | Existing markup keeps working |\n| `false` | `true` | ❌ | `dismissable` wins while it exists |\n\n`dismissable` has **no default** (`undefined` when unset) so the component can tell \"not set\" from \"set to `false`\". When it is used, the component logs a one-time deprecation warning to the console. `dismissable` will be removed in the next major version, at which point `dismissible` becomes the only option.\n\n## Positioning\n\nThe default position is arbitrarily set to `40px` from top and `40px` from right of the browser viewport on desktop and bottom-center on mobile. This position should be adjusted to ensure it's not covering your App's header. Apollo, by design, does not prescribe a position for toasts because this will be dependent on the app that it is being used in.\n\nPositioning of toasts should be global to your app. For example, if it is decided that your app will always position the toast in the top right corner, then this convention should be followed throughout. It should not be positioned top-right on one screen and bottom-center on another.\n\n*****Consult your designer for the best placement for your product.**\n\n### Overriding the default position\n\nThe toast uses `position: fixed` and can be repositioned by overriding the `.xpl-toast` CSS class in your app's stylesheet. Set `top`, `right`, `bottom`, and `left` as needed and use `unset` or `initial` to clear any defaults you don't want.\n\n**Top-left example:**\n```css\n.xpl-toast {\n top: 24px;\n right: unset;\n left: 24px;\n}\n```\n\n**Bottom-right example:**\n```css\n.xpl-toast {\n top: unset;\n right: 24px;\n bottom: 24px;\n}\n```\n\n**Centered at the top:**\n```css\n.xpl-toast {\n top: 24px;\n right: unset;\n left: 50%;\n transform: translateX(-50%);\n}\n```\n\nThe mobile breakpoint (≤ 768px) resets the toast to bottom-center. If your app needs a different mobile position, override the media query as well:\n\n```css\n@media screen and (max-width: 768px) {\n .xpl-toast {\n /* your mobile overrides */\n bottom: 16px;\n left: 50%;\n transform: translateX(-50%);\n }\n}\n```\n\n> **Tip:** Place these overrides in a global stylesheet so every toast in your app appears in the same location.\n\n## Token Use\n\n`xpl-toast` follows the same messaging-component token pattern as [`xpl-banner`](../xpl-banner) (background `--xpl-background-messaging-*` + accent/sentiment border). Light and dark mode are handled by the Foundation token definitions, so the component has no `.dark` overrides.\n\n| Variant / element | Property | Token |\n| ----------------- | -------- | ----- |\n| `neutral` (default) | background | `--xpl-background-messaging-information` |\n| `neutral` (default) | border | `--xpl-border-accent-information` |\n| `&--warning` | background | `--xpl-background-messaging-negative` |\n| `&--warning` | border | `--xpl-border-negative` |\n| `&--success` | background | `--xpl-background-messaging-positive` |\n| `&--success` | border | `--xpl-border-positive` |\n| `&__icon--neutral` | color | `--xpl-icon-default` |\n| `&__icon--warning` | color | `--xpl-icon-negative` |\n| `&__icon--success` | color | `--xpl-icon-positive` |\n| `&` | body radius | `--xpl-border-radius-small` |\n| `&` | shadow
|
|
15718
|
+
"readme": "# xpl-toast\n\nToasts are brief, non-disruptive messages that provide quick, at-a-glance feedback. They can have 3 sentiments; neutral, positive and negative and contain actions such as a button or link, or a close button. Messaging can include a title and caption limited to 85 characters. Keep your toast messaging short and to the point and tone in line with the sentiment of the Toast. \n\nThe Toast component is configurable by Sentiment plus show/hide properties for Icon, Caption, Button and Dismissible. Use the nested component’s properties to customize further as needed. \n\nWhen possible, Toasts should auto-dismiss after 8 seconds. When an action is present, it may not be desirable to time out the Toast depending on your specific context. \n\nMatch your messaging with the sentiment of the toast. Most messages will have a neutral sentiment. Reserve negative sentiments for when an explicit failure has occurred. Give users the information they need to correct the issue. \n\nToasts only support a single action and up to 85 characters. If multiple actions can be taken, or the message is longer than a few words, use a [Modal component](https://apollo.xplordocs.com/?path=/story/components-modal--modal) instead.\n\n## Usage\n\n```html\n<!-- Neutral toast with a caption, auto-dismissing after the default 8s -->\n<xpl-toast caption=\"Your changes have been saved.\">\n <p slot=\"title\">Saved</p>\n</xpl-toast>\n\n<!-- With an action. Auto-dismiss is suppressed while the action slot has content -->\n<xpl-toast variant=\"warning\" caption=\"We couldn't reach the server.\">\n <p slot=\"title\">Sync failed</p>\n <xpl-button slot=\"action\" size=\"sm\">Retry</xpl-button>\n</xpl-toast>\n\n<!-- No close button; disable auto-dismiss with timeout=\"0\" -->\n<xpl-toast dismissible=\"false\" timeout=\"0\">\n <p slot=\"title\">Uploading…</p>\n</xpl-toast>\n```\n\n## Deprecations\n\n### `dismissable` → `dismissible`\n\nThe **`dismissable`** prop is misspelled and is **deprecated**. Use **`dismissible`** instead.\n\n```html\n<!-- Before -->\n<xpl-toast dismissable=\"false\">…</xpl-toast>\n\n<!-- After -->\n<xpl-toast dismissible=\"false\">…</xpl-toast>\n```\n\nBoth props are supported during the deprecation window, so no consumer change is required immediately:\n\n| `dismissable` | `dismissible` | Close button shown | Notes |\n| ------------- | ------------- | ------------------ | ----- |\n| unset | unset | ✅ | Default (`dismissible` defaults to `true`) |\n| unset | `false` | ❌ | Recommended usage |\n| `false` | unset | ❌ | Existing markup keeps working |\n| `false` | `true` | ❌ | `dismissable` wins while it exists |\n\n`dismissable` has **no default** (`undefined` when unset) so the component can tell \"not set\" from \"set to `false`\". When it is used, the component logs a one-time deprecation warning to the console. `dismissable` will be removed in the next major version, at which point `dismissible` becomes the only option.\n\n## Positioning\n\nThe default position is arbitrarily set to `40px` from top and `40px` from right of the browser viewport on desktop and bottom-center on mobile. This position should be adjusted to ensure it's not covering your App's header. Apollo, by design, does not prescribe a position for toasts because this will be dependent on the app that it is being used in.\n\nPositioning of toasts should be global to your app. For example, if it is decided that your app will always position the toast in the top right corner, then this convention should be followed throughout. It should not be positioned top-right on one screen and bottom-center on another.\n\n*****Consult your designer for the best placement for your product.**\n\n### Overriding the default position\n\nThe toast uses `position: fixed` and can be repositioned by overriding the `.xpl-toast` CSS class in your app's stylesheet. Set `top`, `right`, `bottom`, and `left` as needed and use `unset` or `initial` to clear any defaults you don't want.\n\n**Top-left example:**\n```css\n.xpl-toast {\n top: 24px;\n right: unset;\n left: 24px;\n}\n```\n\n**Bottom-right example:**\n```css\n.xpl-toast {\n top: unset;\n right: 24px;\n bottom: 24px;\n}\n```\n\n**Centered at the top:**\n```css\n.xpl-toast {\n top: 24px;\n right: unset;\n left: 50%;\n transform: translateX(-50%);\n}\n```\n\nThe mobile breakpoint (≤ 768px) resets the toast to bottom-center. If your app needs a different mobile position, override the media query as well:\n\n```css\n@media screen and (max-width: 768px) {\n .xpl-toast {\n /* your mobile overrides */\n bottom: 16px;\n left: 50%;\n transform: translateX(-50%);\n }\n}\n```\n\n> **Tip:** Place these overrides in a global stylesheet so every toast in your app appears in the same location.\n\n## Token Use\n\n`xpl-toast` follows the same messaging-component token pattern as [`xpl-banner`](../xpl-banner) (background `--xpl-background-messaging-*` + accent/sentiment border). Light and dark mode are handled by the Foundation token definitions, so the component has no `.dark` overrides.\n\n| Variant / element | Property | Token |\n| ----------------- | -------- | ----- |\n| `neutral` (default) | background | `--xpl-background-messaging-information` |\n| `neutral` (default) | border | `--xpl-border-accent-information` |\n| `&--warning` | background | `--xpl-background-messaging-negative` |\n| `&--warning` | border | `--xpl-border-negative` |\n| `&--success` | background | `--xpl-background-messaging-positive` |\n| `&--success` | border | `--xpl-border-positive` |\n| `&__icon--neutral` | color | `--xpl-icon-default` |\n| `&__icon--warning` | color | `--xpl-icon-negative` |\n| `&__icon--success` | color | `--xpl-icon-positive` |\n| `&` | body radius | `--xpl-border-radius-small` |\n| `&` | shadow | `--xpl-elevation-3` (theme-aware) |\n| `&__title` | typography (size / weight / line-height) | `@extend .xpl-text-title-5` → `title-5` / `medium` / `1.4286` |\n| `&__caption` | typography (size / weight / line-height) | `@extend .xpl-text-callout` → `callout` / `normal` / `1.3333` |\n| `&__close` | margin | `@apply ml-4` |\n\nThe close control is an [`xpl-button`](../xpl-button) (`variant=\"tertiary\"`, `size=\"sm\"`, `iconOnly`), so its radius, colors, and hover / focus / active states come from `button.css` rather than `toast.css`.\n\nLike `xpl-banner`, the messaging backgrounds resolve to transparent in dark mode; the sentiment border and page surface carry the visual treatment in that theme.\n\n## Accessibility\n\n- The close control is an [`xpl-button`](../xpl-button), so it is focusable and keyboard-activable (Tab, then Enter or Space) and gets the shared `:focus-visible` outline.\n- It carries `aria-label=\"Dismiss notification\"` and `type=\"button\"` — the explicit type keeps a toast rendered inside a `<form>` from submitting it when the toast is closed.\n- Toast content is projected through the `title` and `action` slots. Provide the title as text (e.g. `<p slot=\"title\">`) so screen readers announce the message.\n- Dismissing runs a fade-out animation and then removes the host element from the DOM, so a dismissed toast leaves nothing behind in the accessibility tree.\n\n> **Elevation shadow:** the toast uses `--xpl-elevation-3` (theme-aware), re-specified by design during the elevation 1–4 formalization — an earlier note citing the single \"Shadow 4\" style was superseded. See `TECH_DEBT.md`.\n",
|
|
15071
15719
|
"docs": "Toasts are brief, non-disruptive messages that provide quick, at-a-glance feedback. They can have 3 sentiments; neutral, positive and negative and contain actions such as a button or link, or a close button. Messaging can include a title and caption limited to 85 characters. Keep your toast messaging short and to the point and tone in line with the sentiment of the Toast. \n\nThe Toast component is configurable by Sentiment plus show/hide properties for Icon, Caption, Button and Dismissible. Use the nested component’s properties to customize further as needed. \n\nWhen possible, Toasts should auto-dismiss after 8 seconds. When an action is present, it may not be desirable to time out the Toast depending on your specific context. \n\nMatch your messaging with the sentiment of the toast. Most messages will have a neutral sentiment. Reserve negative sentiments for when an explicit failure has occurred. Give users the information they need to correct the issue. \n\nToasts only support a single action and up to 85 characters. If multiple actions can be taken, or the message is longer than a few words, use a [Modal component](https://apollo.xplordocs.com/?path=/story/components-modal--modal) instead.",
|
|
15072
15720
|
"docsTags": [
|
|
15073
15721
|
{
|
|
@@ -15287,7 +15935,7 @@
|
|
|
15287
15935
|
"filePath": "src/components/components/xpl-toggle/xpl-toggle.tsx",
|
|
15288
15936
|
"encapsulation": "none",
|
|
15289
15937
|
"tag": "xpl-toggle",
|
|
15290
|
-
"readme": "# xpl-toggle\n\nA Toggle is a type of form control that is used to switch between enabled and disabled states of an element.\n\n## Usage\n\n```html\n<xpl-toggle heading=\"Notifications\" label=\"Email me\" checked></xpl-toggle>\n<xpl-toggle label=\"Compact\" variant=\"small\"></xpl-toggle>\n<xpl-toggle label=\"Unavailable\" disabled></xpl-toggle>\n```\n\n## Design Tokens\n\nThe toggle uses Apollo Foundation purpose-specific tokens so it themes automatically\nin light and dark mode (no `.dark` overrides).\n\n| Element / state | Property | Token |\n| --- | --- | --- |\n| Track (off) | `background-color` | `--xpl-background-accent-neutral` |\n| Track (off, hover) | `background-color` | `--xpl-background-accent-neutral-bold` |\n| Track (on) | `background-color` | `--xpl-background-action-primary-default` |\n| Track (on, hover) | `background-color` | `--xpl-background-action-primary-hover` |\n| Track (disabled, on/off) | `background-color` | `--xpl-background-action-disabled` |\n| Track border | `border-color` | `--xpl-border-default` |\n| Knob (all states) | `background-color` | `--xpl-background-surface-inverse-on-dark` (always-light — resolves to neutral-0 in both modes) |\n| Knob shadow | `box-shadow`
|
|
15938
|
+
"readme": "# xpl-toggle\n\nA Toggle is a type of form control that is used to switch between enabled and disabled states of an element.\n\n## Usage\n\n```html\n<xpl-toggle heading=\"Notifications\" label=\"Email me\" checked></xpl-toggle>\n<xpl-toggle label=\"Compact\" variant=\"small\"></xpl-toggle>\n<xpl-toggle label=\"Unavailable\" disabled></xpl-toggle>\n```\n\n## Design Tokens\n\nThe toggle uses Apollo Foundation purpose-specific tokens so it themes automatically\nin light and dark mode (no `.dark` overrides).\n\n| Element / state | Property | Token |\n| --- | --- | --- |\n| Track (off) | `background-color` | `--xpl-background-accent-neutral` |\n| Track (off, hover) | `background-color` | `--xpl-background-accent-neutral-bold` |\n| Track (on) | `background-color` | `--xpl-background-action-primary-default` |\n| Track (on, hover) | `background-color` | `--xpl-background-action-primary-hover` |\n| Track (disabled, on/off) | `background-color` | `--xpl-background-action-disabled` |\n| Track border | `border-color` | `--xpl-border-default` |\n| Knob (all states) | `background-color` | `--xpl-background-surface-inverse-on-dark` (always-light — resolves to neutral-0 in both modes) |\n| Knob shadow | `box-shadow` | `--xpl-elevation-1` (theme-aware) |\n| Focus ring | `outline-color` | `--xpl-border-focus` (2px outline, 2px offset) |\n| Heading | `color` | `--xpl-text-strong` |\n| Heading | typography | `@extend .xpl-text-title-5` — 14px / medium / 1.4286 (via shared `label.css`) |\n| Trailing label | `color` | `--xpl-text-strong` |\n| Trailing label | typography | `@extend .xpl-text-body` — 14px / normal / 1.4286 |\n| Label (disabled) | `color` | `--xpl-text-disabled` |\n| Description (`small`) | `color` | `--xpl-text-subdued` |\n| Description (`small`) | typography | `@extend .xpl-text-callout` — 12px / normal / 1.3333 (via shared `label.css`) |\n\n**Sizing:** knob (`--xpl-size-125` / small `--xpl-size-075`), default track height\n(`--xpl-size-150`), small track height/radius (`--xpl-size-100` / `--xpl-border-radius-default`),\ndefault track + knob radius (`--xpl-border-radius-full`), inset (`--xpl-space-2`), knob travel\n(`translateX(--xpl-size-125)` / small `--xpl-size-075`). The `44px`/`28px` track widths have no\nmatching Foundation token and remain literals (see TECH_DEBT.md).\n\nThe knob glyphs (X / check marks) remain hardcoded data-URI SVGs; a `mask-image` +\n`var(--xpl-icon-*)` refactor is tracked in TECH_DEBT.md.\n\n## Accessibility\n\nThe toggle renders a native `<input type=\"checkbox\">`, so it is keyboard-focusable and\noperable with Tab and Space. The `:focus-visible` outline is applied to the control itself.\n",
|
|
15291
15939
|
"docs": "A Toggle is a type of form control that is used to switch between enabled and disabled states of an element.",
|
|
15292
15940
|
"docsTags": [
|
|
15293
15941
|
{
|
|
@@ -15500,7 +16148,7 @@
|
|
|
15500
16148
|
"filePath": "src/components/components/xpl-toolbar/xpl-toolbar.tsx",
|
|
15501
16149
|
"encapsulation": "none",
|
|
15502
16150
|
"tag": "xpl-toolbar",
|
|
15503
|
-
"readme": "# xpl-toolbar\n\n> **Note:** This component is currently in beta. Use with caution as it may have breaking changes in future releases.\n\n## Design Tokens\n\nThe toolbar is an **always-dark** selection bar (nav-rail pattern) — its surface stays dark\nin both light and dark themes. Styling comes from Apollo Foundation tokens\n(`packages/apollo-core/src/css/toolbar.css`):\n\n| Element | Property | Token | Resolves (light / dark) |\n| --- | --- | --- | --- |\n| `.toolbar` surface | `background-color` | `--xpl-background-surface-inverse-on-light` | neutral-1000 / neutral-1000 |\n| `.toolbar` top/bottom border | `border-color` | `--xpl-border-default` | neutral-600 (always-dark host) |\n| `.toolbar` elevation | `box-shadow` | `--xpl-
|
|
16151
|
+
"readme": "# xpl-toolbar\n\n> **Note:** This component is currently in beta. Use with caution as it may have breaking changes in future releases.\n\n## Design Tokens\n\nThe toolbar is an **always-dark** selection bar (nav-rail pattern) — its surface stays dark\nin both light and dark themes. Styling comes from Apollo Foundation tokens\n(`packages/apollo-core/src/css/toolbar.css`):\n\n| Element | Property | Token | Resolves (light / dark) |\n| --- | --- | --- | --- |\n| `.toolbar` surface | `background-color` | `--xpl-background-surface-inverse-on-light` | neutral-1000 / neutral-1000 |\n| `.toolbar` top/bottom border | `border-color` | `--xpl-border-default` | neutral-600 (always-dark host) |\n| `.toolbar` elevation | `box-shadow` | `--xpl-elevation-1` | theme-aware (near-black light / near-white dark) |\n| `.toolbar` height | `height` | `--xpl-size-350` | 56px |\n| `.selected-item-count` text | `color` | `--xpl-text-inverse-on-dark` | white / white |\n| `.selected-item-count` divider | `border-color` | `--xpl-border-default` | neutral-600 (always-dark host) |\n| `.selected-item-count` label | `font-size` / `font-weight` / `line-height` | `@extend .xpl-text-title-5` (14px, medium, 1.4286) | — |\n\n> **Design note:** the always-dark surface decision is confirmed (there is no\n> toolbar node in `figma-manifest.json`). The elevation uses the theme-aware\n> `--xpl-elevation-1` token: in dark mode the shadow color flips to near-white, so\n> the always-dark bar gets a light halo beneath it — flagged for design verification\n> (see `TECH_DEBT.md`).\n",
|
|
15504
16152
|
"docs": "> **Note:** This component is currently in beta. Use with caution as it may have breaking changes in future releases.",
|
|
15505
16153
|
"docsTags": [
|
|
15506
16154
|
{
|
|
@@ -15562,7 +16210,7 @@
|
|
|
15562
16210
|
"filePath": "src/components/components/xpl-tooltip/xpl-tooltip.tsx",
|
|
15563
16211
|
"encapsulation": "none",
|
|
15564
16212
|
"tag": "xpl-tooltip",
|
|
15565
|
-
"readme": "# xpl-tooltip\n\nTooltips are intended to be short one to two sentence messages adding contextual information for the user. Keep messages short and to the point. Tooltips are static and do not contain actions, and only appear when the context is hovered.\n\nTooltip variants control one of 8 arrow positions indicating the direction the tooltip will appear in relation to it's trigger:\n\"bottom-left\" | \"bottom-middle\" | \"bottom-right\" | \"left\" | \"right\" | \"top-left\" | \"top-middle\" | \"top-right\"\n\n\n### Design Tokens\n\nTokens used by this component from `@xplortech/apollo-foundation`.\n\n**Color**\n- `--xpl-background-surface-default` — tooltip background and arrow fill\n- `--xpl-
|
|
16213
|
+
"readme": "# xpl-tooltip\n\nTooltips are intended to be short one to two sentence messages adding contextual information for the user. Keep messages short and to the point. Tooltips are static and do not contain actions, and only appear when the context is hovered.\n\nTooltip variants control one of 8 arrow positions indicating the direction the tooltip will appear in relation to it's trigger:\n\"bottom-left\" | \"bottom-middle\" | \"bottom-right\" | \"left\" | \"right\" | \"top-left\" | \"top-middle\" | \"top-right\"\n\n\n### Design Tokens\n\nTokens used by this component from `@xplortech/apollo-foundation`.\n\n**Color**\n- `--xpl-background-surface-default` — tooltip background and arrow fill\n- `--xpl-elevation-3` — tooltip shadow (theme-aware)\n- `--xpl-text-default` — tooltip text color\n- `--xpl-border-default` — tooltip border and arrow stroke (keeps the arrow edge theme-aware in dark mode)\n\n**Spacing**\n- `--xpl-space-6` — vertical padding\n- `--xpl-space-8` — horizontal padding\n- `--xpl-space-12` — offset from trigger, via `--xpl-tooltip-margin`\n\n**Typography**\n- `.xpl-text-callout` — text style (via `@extend`)\n\n**Border**\n- `--xpl-border-small` — border width (1px)\n- `--xpl-border-radius-small` — corner radius (4px)\n\n**Z-index**\n- `--xpl-z-index-900` — tooltip stacking order\n- `--xpl-z-index-100` — arrow base stacking order (elevated to `--xpl-z-index-900` per position variant)\n",
|
|
15566
16214
|
"docs": "Tooltips are intended to be short one to two sentence messages adding contextual information for the user. Keep messages short and to the point. Tooltips are static and do not contain actions, and only appear when the context is hovered.\n\nTooltip variants control one of 8 arrow positions indicating the direction the tooltip will appear in relation to it's trigger:\n\"bottom-left\" | \"bottom-middle\" | \"bottom-right\" | \"left\" | \"right\" | \"top-left\" | \"top-middle\" | \"top-right\"",
|
|
15567
16215
|
"docsTags": [
|
|
15568
16216
|
{
|
|
@@ -16628,6 +17276,21 @@
|
|
|
16628
17276
|
"docstring": "",
|
|
16629
17277
|
"path": "src/components/components/xpl-badge/xpl-badge.tsx"
|
|
16630
17278
|
},
|
|
17279
|
+
"src/components/components/xpl-table/xpl-table.tsx::XplTableRowOrderChangeDetail": {
|
|
17280
|
+
"declaration": "export interface XplTableRowOrderChangeDetail {\n /** Stable id of the moved row (`row-id`). */\n rowId: string;\n direction: 'up' | 'down';\n /** Visible body row ids in DOM order after the move. */\n orderedRowIds: string[];\n fromIndex: number;\n toIndex: number;\n}",
|
|
17281
|
+
"docstring": "",
|
|
17282
|
+
"path": "src/components/components/xpl-table/xpl-table.tsx"
|
|
17283
|
+
},
|
|
17284
|
+
"src/components/components/xpl-table/xpl-table.tsx::XplTableSortChangedDetail": {
|
|
17285
|
+
"declaration": "export interface XplTableSortChangedDetail {\n /**\n * @deprecated Prefer slug keys on this object. Index of the column whose sort was toggled (legacy tables).\n */\n colNum?: number;\n /**\n * @deprecated Prefer slug keys. Legacy **slugified** column title for `colNum` (same rules as sort-key slugs).\n */\n colName?: string;\n /**\n * @deprecated Prefer slug keys. Per-column sort state in visual column order (`null` when unsorted / N/A).\n */\n sortTypeArr?: ('asc' | 'desc' | null)[];\n [slug: string]: 'asc' | 'desc' | null | number | string | ('asc' | 'desc' | null)[] | undefined;\n}",
|
|
17286
|
+
"docstring": "`sortChanged` event detail: sort-key slug → direction, plus **legacy** fields for consumers that\nstill read `colNum` / `colName` / `sortTypeArr` from the data-driven table API.\n\nIndex signature allows slug keys alongside legacy properties (cannot use `Record<>` alone without conflicting\nwith `colNum`).",
|
|
17287
|
+
"path": "src/components/components/xpl-table/xpl-table.tsx"
|
|
17288
|
+
},
|
|
17289
|
+
"src/components/components/xpl-table/xpl-table-header-cell/xpl-table-header-cell.tsx::HeaderSortChangeDetail": {
|
|
17290
|
+
"declaration": "export interface HeaderSortChangeDetail {\n columnIndex: number;\n sortKey: string;\n}",
|
|
17291
|
+
"docstring": "",
|
|
17292
|
+
"path": "src/components/components/xpl-table/xpl-table-header-cell/xpl-table-header-cell.tsx"
|
|
17293
|
+
},
|
|
16631
17294
|
"src/components/components/xpl-tag/xpl-tag.tsx::TagDragEndDetail": {
|
|
16632
17295
|
"declaration": "export interface TagDragEndDetail {\n tagId?: string;\n dropped: boolean;\n originalEvent: DragEvent;\n}",
|
|
16633
17296
|
"docstring": "Detail for drag end event",
|