@xplortech/apollo-core 2.8.1 → 2.10.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 +20 -12
- package/build/style.css +2086 -1875
- package/dist/apollo-core/apollo-core.css +20 -18
- package/dist/apollo-core/apollo-core.esm.js +1 -1
- package/dist/apollo-core/p-0e45f332.entry.js +1 -0
- package/dist/apollo-core/p-0f251f98.entry.js +1 -0
- package/dist/apollo-core/p-1691c4f3.entry.js +1 -0
- package/dist/apollo-core/p-172ac720.entry.js +1 -0
- package/dist/apollo-core/p-23870463.entry.js +1 -0
- package/dist/apollo-core/{p-36ba29da.entry.js → p-3b8639b7.entry.js} +1 -1
- package/dist/apollo-core/p-44a16751.entry.js +1 -0
- package/dist/apollo-core/p-4efecab2.entry.js +1 -0
- package/dist/apollo-core/p-5094dd97.entry.js +1 -0
- package/dist/apollo-core/p-70e7facc.entry.js +1 -0
- package/dist/apollo-core/{p-6a15f1e0.entry.js → p-728341d2.entry.js} +1 -1
- package/dist/apollo-core/p-910be81f.entry.js +1 -0
- package/dist/apollo-core/{p-b61d7952.entry.js → p-9adf3694.entry.js} +1 -1
- package/dist/apollo-core/p-CK3_k8jD.js +1 -0
- package/dist/apollo-core/p-CXkZUm1c.js +2 -0
- package/dist/apollo-core/p-c17b6351.entry.js +1 -0
- package/dist/apollo-core/p-e08b434c.entry.js +1 -0
- package/dist/apollo-core/{p-ca127ee8.entry.js → p-e9e7577f.entry.js} +1 -1
- package/dist/cjs/apollo-core.cjs.js +3 -3
- package/dist/cjs/{index-BQ97-AWw.js → index-BaXVr8ux.js} +36 -9
- package/dist/cjs/loader.cjs.js +2 -2
- package/dist/cjs/package.json +3 -0
- package/dist/cjs/v4-_2BfiRUa.js +52 -0
- package/dist/cjs/xpl-accordion.cjs.entry.js +3 -3
- package/dist/cjs/xpl-application-shell.cjs.entry.js +2 -2
- package/dist/cjs/xpl-avatar_54.cjs.entry.js +709 -177
- package/dist/cjs/xpl-button-row.cjs.entry.js +2 -2
- package/dist/cjs/xpl-calendar.cjs.entry.js +3 -3
- package/dist/cjs/xpl-dynamic-table-cell.cjs.entry.js +3 -3
- package/dist/cjs/xpl-dynamic-table-row.cjs.entry.js +3 -3
- package/dist/cjs/xpl-dynamic-table.cjs.entry.js +2 -2
- package/dist/cjs/xpl-grid-item.cjs.entry.js +2 -2
- package/dist/cjs/xpl-grid.cjs.entry.js +2 -2
- package/dist/cjs/xpl-large-card.cjs.entry.js +2 -2
- package/dist/cjs/xpl-main-nav.cjs.entry.js +2 -2
- package/dist/cjs/xpl-table-header-cell.cjs.entry.js +1 -1
- package/dist/cjs/xpl-table-header.cjs.entry.js +2 -2
- package/dist/cjs/xpl-toggle.cjs.entry.js +5 -5
- package/dist/cjs/xpl-toolbar.cjs.entry.js +3 -3
- package/dist/collection/collection-manifest.json +5 -5
- package/dist/collection/components/xpl-accordion/xpl-accordion.js +2 -2
- package/dist/collection/components/xpl-application-shell/xpl-application-shell.js +1 -1
- package/dist/collection/components/xpl-avatar/xpl-avatar.js +4 -4
- package/dist/collection/components/xpl-backdrop/xpl-backdrop.js +1 -1
- package/dist/collection/components/xpl-badge/xpl-badge.js +2 -2
- package/dist/collection/components/xpl-banner/banner.stories.js +5 -0
- package/dist/collection/components/xpl-banner/xpl-banner.js +2 -2
- package/dist/collection/components/xpl-breadcrumbs/xpl-breadcrumb-item/xpl-breadcrumb-item.js +1 -1
- package/dist/collection/components/xpl-breadcrumbs/xpl-breadcrumbs/xpl-breadcrumbs.js +1 -1
- package/dist/collection/components/xpl-button/button.stories.js +5 -0
- package/dist/collection/components/xpl-button/xpl-button.js +16 -1
- package/dist/collection/components/xpl-button-row/button-row.stories.js +1 -11
- package/dist/collection/components/xpl-button-row/xpl-button-row.js +1 -1
- package/dist/collection/components/xpl-calendar/xpl-calendar.js +1 -1
- package/dist/collection/components/xpl-checkbox/xpl-checkbox.js +4 -4
- package/dist/collection/components/xpl-choicelist/xpl-choicelist.js +1 -1
- package/dist/collection/components/xpl-content-area/xpl-content-area.js +1 -1
- package/dist/collection/components/xpl-dashboard/xpl-dashboard.js +1 -1
- package/dist/collection/components/xpl-data-card/xpl-data-card.js +2 -2
- package/dist/collection/components/xpl-divider/xpl-divider.js +1 -1
- package/dist/collection/components/xpl-dropdown/xpl-dropdown-group/xpl-dropdown-group.js +1 -1
- package/dist/collection/components/xpl-dropdown/xpl-dropdown-heading/xpl-dropdown-heading.js +1 -1
- package/dist/collection/components/xpl-dropdown/xpl-dropdown-option/xpl-dropdown-option.js +2 -2
- package/dist/collection/components/xpl-dropdown/xpl-dropdown.js +208 -31
- package/dist/collection/components/xpl-dynamic-table/xpl-dynamic-table.js +1 -1
- package/dist/collection/components/xpl-dynamic-table-cell/xpl-dynamic-table-cell.js +2 -2
- package/dist/collection/components/xpl-dynamic-table-row/xpl-dynamic-table-row.js +2 -2
- package/dist/collection/components/xpl-grid/xpl-grid.js +1 -1
- package/dist/collection/components/xpl-grid-item/xpl-grid-item.js +1 -1
- package/dist/collection/components/xpl-header-accordion/xpl-header-accordion.js +1 -1
- package/dist/collection/components/xpl-icon/xpl-icon.js +2 -2
- package/dist/collection/components/xpl-input/input.stories.js +1 -1
- package/dist/collection/components/xpl-input/xpl-input-color/xpl-input-color.js +11 -9
- package/dist/collection/components/xpl-input/xpl-input-date/xpl-input-date.js +3 -3
- package/dist/collection/components/xpl-input/xpl-input-file/xpl-input-file.js +4 -4
- package/dist/collection/components/xpl-input/xpl-input-phone/xpl-input-phone.js +25 -6
- package/dist/collection/components/xpl-input/xpl-input-search/xpl-input-search.js +1 -1
- package/dist/collection/components/xpl-input/xpl-input-time/xpl-input-time.js +2 -2
- package/dist/collection/components/xpl-input/xpl-input.js +3 -3
- package/dist/collection/components/xpl-large-card/xpl-large-card.js +1 -1
- package/dist/collection/components/xpl-list/xpl-list.js +2 -2
- package/dist/collection/components/xpl-main-nav/xpl-main-nav.js +1 -1
- package/dist/collection/components/xpl-modal/xpl-modal.js +4 -1
- package/dist/collection/components/xpl-nav-item/xpl-nav-item.js +2 -2
- package/dist/collection/components/xpl-pagination/xpl-pagination.js +26 -8
- package/dist/collection/components/xpl-panel/xpl-panel.js +2 -2
- package/dist/collection/components/xpl-popover/popover.stories.js +3 -7
- package/dist/collection/components/xpl-popover/xpl-popover.js +5 -5
- package/dist/collection/components/xpl-progress-bar/xpl-progress-bar.js +2 -2
- package/dist/collection/components/xpl-progress-indicator/xpl-progress-indicator.js +1 -1
- package/dist/collection/components/xpl-radio/radio.stories.js +19 -17
- package/dist/collection/components/xpl-radio/xpl-radio.js +3 -3
- package/dist/collection/components/xpl-secondary-nav/xpl-secondary-nav.js +1 -1
- package/dist/collection/components/xpl-select/xpl-select.js +16 -11
- package/dist/collection/components/xpl-side-nav/side-nav-constants.js +2 -0
- package/dist/collection/components/xpl-side-nav/side-nav.stories.js +301 -186
- package/dist/collection/components/xpl-side-nav/xpl-side-nav-item/xpl-side-nav-item.js +80 -14
- package/dist/collection/components/xpl-side-nav/xpl-side-nav.js +284 -3
- package/dist/collection/components/xpl-skeleton/xpl-skeleton.js +1 -1
- package/dist/collection/components/xpl-slideout/xpl-slideout.js +1 -1
- package/dist/collection/components/xpl-spotlight/xpl-spotlight.js +16 -6
- package/dist/collection/components/xpl-tab-panel/xpl-tab-panel.js +2 -2
- package/dist/collection/components/xpl-table/xpl-table.js +13 -22
- package/dist/collection/components/xpl-table-header/xpl-table-header.js +1 -1
- package/dist/collection/components/xpl-tabs/xpl-tabs.js +5 -5
- package/dist/collection/components/xpl-tag/xpl-tag.js +4 -4
- package/dist/collection/components/xpl-toast/xpl-toast.js +2 -2
- package/dist/collection/components/xpl-toggle/xpl-toggle.js +3 -3
- package/dist/collection/components/xpl-toolbar/xpl-toolbar.js +2 -2
- package/dist/collection/components/xpl-tooltip/tooltip-arrow.js +1 -1
- package/dist/collection/components/xpl-tooltip/tooltip.stories.js +6 -37
- package/dist/collection/components/xpl-tooltip/xpl-tooltip.js +1 -1
- package/dist/collection/components/xpl-top-nav/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.js +5 -5
- package/dist/collection/components/xpl-utility-bar/xpl-utility-bar.js +1 -1
- package/dist/components/index.d.ts +141 -12
- package/dist/components/index.js +1 -1
- package/dist/components/p-3qMYyqTe.js +1 -0
- package/dist/components/p-B1PBAEzg.js +1 -0
- package/dist/components/p-BG0-6Xek.js +1 -0
- package/dist/components/p-BT_Lq3Vd.js +1 -0
- package/dist/components/p-BWyAzrwu.js +1 -0
- package/dist/components/p-B_Wi--Ov.js +1 -0
- package/dist/components/p-Bd6JweBt.js +1 -0
- package/dist/components/p-Bn-27-xj.js +1 -0
- package/dist/components/{xpl-top-nav-item2.js → p-Bs6vq0C6.js} +1 -1
- package/dist/components/{xpl-input-file2.js → p-C9BO2vL-.js} +1 -1
- package/dist/components/p-CFW_w5Wj.js +1 -0
- package/dist/components/{floating-ui.dom.js → p-CFpsSZyr.js} +1 -1
- package/dist/components/p-CGNq3DyC.js +1 -0
- package/dist/components/p-CK3_k8jD.js +1 -0
- package/dist/components/p-CVqbA9op.js +1 -0
- package/dist/components/p-CtIUusUL.js +1 -0
- package/dist/components/p-CzwViN3U.js +1 -0
- package/dist/components/p-D97c0GjM.js +1 -0
- package/dist/components/p-DBWV65V-.js +1 -0
- package/dist/components/{xpl-tag2.js → p-DEl4Rvzs.js} +1 -1
- package/dist/components/p-DPTHmitJ.js +1 -0
- package/dist/components/{xpl-input-search2.js → p-DllC7F-H.js} +1 -1
- package/dist/components/p-Ds28UyUR.js +1 -0
- package/dist/components/p-U5dPMCXE.js +1 -0
- package/dist/components/p-hPUzON4O.js +1 -0
- package/dist/components/p-kPHfCq1d.js +1 -0
- package/dist/components/xpl-accordion.js +1 -1
- package/dist/components/xpl-application-shell.js +1 -1
- package/dist/components/xpl-avatar.js +1 -1
- package/dist/components/xpl-backdrop.js +1 -1
- package/dist/components/xpl-badge.js +1 -1
- package/dist/components/xpl-banner.js +1 -1
- package/dist/components/xpl-breadcrumb-item.js +1 -1
- package/dist/components/xpl-breadcrumbs.js +1 -1
- package/dist/components/xpl-button-row.js +1 -1
- package/dist/components/xpl-button.js +1 -1
- package/dist/components/xpl-calendar.js +1 -1
- package/dist/components/xpl-checkbox.js +1 -1
- package/dist/components/xpl-choicelist.js +1 -1
- package/dist/components/xpl-content-area.js +1 -1
- package/dist/components/xpl-dashboard.js +1 -1
- package/dist/components/xpl-data-card.js +1 -1
- package/dist/components/xpl-divider.js +1 -1
- package/dist/components/xpl-dropdown-group.js +1 -1
- package/dist/components/xpl-dropdown-heading.js +1 -1
- package/dist/components/xpl-dropdown-option.js +1 -1
- package/dist/components/xpl-dropdown.js +1 -1
- package/dist/components/xpl-dynamic-table-cell.js +1 -1
- package/dist/components/xpl-dynamic-table-row.js +1 -1
- package/dist/components/xpl-dynamic-table.js +1 -1
- package/dist/components/xpl-grid-item.js +1 -1
- package/dist/components/xpl-grid.js +1 -1
- package/dist/components/xpl-header-accordion.js +1 -1
- package/dist/components/xpl-icon.js +1 -1
- package/dist/components/xpl-input-color.js +1 -1
- package/dist/components/xpl-input-date.js +1 -1
- package/dist/components/xpl-input-file.js +1 -1
- package/dist/components/xpl-input-phone.js +1 -1
- package/dist/components/xpl-input-search.js +1 -1
- package/dist/components/xpl-input-time.js +1 -1
- package/dist/components/xpl-input.js +1 -1
- package/dist/components/xpl-large-card.js +1 -1
- package/dist/components/xpl-list-item.js +1 -1
- package/dist/components/xpl-list.js +1 -1
- package/dist/components/xpl-main-nav.js +1 -1
- package/dist/components/xpl-modal.js +1 -1
- package/dist/components/xpl-nav-header-menu.js +1 -1
- package/dist/components/xpl-nav-item.js +1 -1
- package/dist/components/xpl-pagination.js +1 -1
- package/dist/components/xpl-panel.js +1 -1
- package/dist/components/xpl-popover.js +1 -1
- package/dist/components/xpl-progress-bar.js +1 -1
- package/dist/components/xpl-progress-indicator.js +1 -1
- package/dist/components/xpl-radio.js +1 -1
- package/dist/components/xpl-secondary-nav.js +1 -1
- package/dist/components/xpl-select.js +1 -1
- package/dist/components/xpl-side-nav-item.js +1 -1
- package/dist/components/xpl-side-nav.js +1 -1
- package/dist/components/xpl-skeleton.js +1 -1
- package/dist/components/xpl-slideout.js +1 -1
- package/dist/components/xpl-spotlight.js +1 -1
- package/dist/components/xpl-tab-panel.js +1 -1
- package/dist/components/xpl-tab.js +1 -1
- package/dist/components/xpl-table-header-cell.js +1 -1
- package/dist/components/xpl-table-header.js +1 -1
- package/dist/components/xpl-table.js +1 -1
- package/dist/components/xpl-tabs.js +1 -1
- package/dist/components/xpl-tag.js +1 -1
- package/dist/components/xpl-toast.js +1 -1
- package/dist/components/xpl-toggle.js +1 -1
- package/dist/components/xpl-toolbar.js +1 -1
- package/dist/components/xpl-tooltip.js +1 -1
- package/dist/components/xpl-top-nav-item.js +1 -1
- package/dist/components/xpl-top-nav.js +1 -1
- package/dist/components/xpl-utility-bar.js +1 -1
- package/dist/docs/xpl-backdrop/readme.md +2 -0
- package/dist/docs/xpl-badge/readme.md +34 -0
- package/dist/docs/xpl-button/readme.md +2 -0
- package/dist/docs/xpl-button-row/readme.md +13 -0
- package/dist/docs/xpl-checkbox/readme.md +23 -1
- package/dist/docs/xpl-divider/readme.md +22 -4
- package/dist/docs/xpl-input/readme.md +51 -0
- package/dist/docs/xpl-input/xpl-input-date/readme.md +7 -0
- package/dist/docs/xpl-input/xpl-input-phone/readme.md +21 -0
- package/dist/docs/xpl-popover/readme.md +24 -0
- package/dist/docs/xpl-radio/readme.md +21 -4
- package/dist/docs/xpl-side-nav/readme.md +153 -5
- package/dist/docs/xpl-side-nav/xpl-side-nav-item/readme.md +165 -32
- package/dist/docs/xpl-table/readme.md +2 -0
- package/dist/docs/xpl-tooltip/readme.md +29 -1
- package/dist/esm/apollo-core.js +4 -4
- package/dist/esm/{index-C7bgJs6C.js → index-CXkZUm1c.js} +36 -9
- package/dist/esm/loader.js +3 -3
- package/dist/esm/v4-CK3_k8jD.js +50 -0
- package/dist/esm/xpl-accordion.entry.js +3 -3
- package/dist/esm/xpl-application-shell.entry.js +2 -2
- package/dist/esm/xpl-avatar_54.entry.js +709 -177
- package/dist/esm/xpl-button-row.entry.js +2 -2
- package/dist/esm/xpl-calendar.entry.js +3 -3
- package/dist/esm/xpl-dynamic-table-cell.entry.js +3 -3
- package/dist/esm/xpl-dynamic-table-row.entry.js +3 -3
- package/dist/esm/xpl-dynamic-table.entry.js +2 -2
- package/dist/esm/xpl-grid-item.entry.js +2 -2
- package/dist/esm/xpl-grid.entry.js +2 -2
- package/dist/esm/xpl-large-card.entry.js +2 -2
- package/dist/esm/xpl-main-nav.entry.js +2 -2
- package/dist/esm/xpl-table-header-cell.entry.js +1 -1
- package/dist/esm/xpl-table-header.entry.js +2 -2
- package/dist/esm/xpl-toggle.entry.js +5 -5
- package/dist/esm/xpl-toolbar.entry.js +3 -3
- package/dist/types/components/xpl-banner/banner.stories.d.ts +2 -0
- package/dist/types/components/xpl-button/button.stories.d.ts +2 -0
- package/dist/types/components/xpl-button/xpl-button.d.ts +1 -0
- package/dist/types/components/xpl-dropdown/xpl-dropdown.d.ts +16 -0
- package/dist/types/components/xpl-input/xpl-input-phone/xpl-input-phone.d.ts +1 -0
- package/dist/types/components/xpl-pagination/xpl-pagination.d.ts +4 -0
- package/dist/types/components/xpl-radio/radio.stories.d.ts +11 -10
- package/dist/types/components/xpl-side-nav/side-nav-constants.d.ts +2 -0
- package/dist/types/components/xpl-side-nav/side-nav.stories.d.ts +53 -32
- package/dist/types/components/xpl-side-nav/xpl-side-nav-item/xpl-side-nav-item.d.ts +10 -0
- package/dist/types/components/xpl-side-nav/xpl-side-nav.d.ts +31 -0
- package/dist/types/components/xpl-spotlight/xpl-spotlight.d.ts +1 -0
- package/dist/types/components.d.ts +223 -20
- package/dist/types/stencil-public-runtime.d.ts +1 -0
- package/package.json +39 -38
- package/dist/apollo-core/p-0bf50890.entry.js +0 -1
- package/dist/apollo-core/p-1947e7a8.entry.js +0 -1
- package/dist/apollo-core/p-27928cb0.entry.js +0 -1
- package/dist/apollo-core/p-34438721.entry.js +0 -1
- package/dist/apollo-core/p-35c2f72d.entry.js +0 -1
- package/dist/apollo-core/p-368c81f1.entry.js +0 -1
- package/dist/apollo-core/p-406b27a8.entry.js +0 -1
- package/dist/apollo-core/p-5d63b4ce.entry.js +0 -1
- package/dist/apollo-core/p-689f1dae.entry.js +0 -1
- package/dist/apollo-core/p-8d692d05.entry.js +0 -1
- package/dist/apollo-core/p-C7bgJs6C.js +0 -2
- package/dist/apollo-core/p-Cqlsd6nf.js +0 -1
- package/dist/apollo-core/p-cd56a3d5.entry.js +0 -1
- package/dist/apollo-core/p-dc205893.entry.js +0 -1
- package/dist/cjs/v4-D4KzFnn8.js +0 -67
- package/dist/components/index3.js +0 -1
- package/dist/components/v4.js +0 -1
- package/dist/components/xpl-avatar2.js +0 -1
- package/dist/components/xpl-backdrop2.js +0 -1
- package/dist/components/xpl-badge2.js +0 -1
- package/dist/components/xpl-button2.js +0 -1
- package/dist/components/xpl-checkbox2.js +0 -1
- package/dist/components/xpl-divider2.js +0 -1
- package/dist/components/xpl-dropdown-group2.js +0 -1
- package/dist/components/xpl-dropdown-heading2.js +0 -1
- package/dist/components/xpl-dropdown-option2.js +0 -1
- package/dist/components/xpl-dropdown2.js +0 -1
- package/dist/components/xpl-icon2.js +0 -1
- package/dist/components/xpl-input-date2.js +0 -1
- package/dist/components/xpl-input2.js +0 -1
- package/dist/components/xpl-list-item2.js +0 -1
- package/dist/components/xpl-popover2.js +0 -1
- package/dist/components/xpl-radio2.js +0 -1
- package/dist/components/xpl-select2.js +0 -1
- package/dist/components/xpl-tooltip2.js +0 -1
- package/dist/esm/v4-Cqlsd6nf.js +0 -65
- /package/dist/components/{_commonjsHelpers.js → p-BFTU3MAI.js} +0 -0
- /package/dist/components/{index2.js → p-CH4yJ6Qx.js} +0 -0
- /package/dist/components/{tab-a11y-ids.js → p-Yj_QFaRn.js} +0 -0
- /package/dist/{index.cjs.js → index.cjs} +0 -0
- /package/dist/types/{Users/roc/Sites → home/runner/work/apollo}/apollo/packages/apollo-core/.stencil/css/typography.stories.d.ts +0 -0
- /package/loader/{cdn.js → cdn.cjs} +0 -0
- /package/loader/{index.cjs.js → index.cjs} +0 -0
|
@@ -162,6 +162,7 @@ The **`state`** prop (`neutral` | `warning` | `success`) is deprecated. Use **`s
|
|
|
162
162
|
- [xpl-button-row](../xpl-button-row)
|
|
163
163
|
- [xpl-list-item](../xpl-list/xpl-list-item)
|
|
164
164
|
- [xpl-modal](../xpl-modal)
|
|
165
|
+
- [xpl-side-nav](../xpl-side-nav)
|
|
165
166
|
- [xpl-slideout](../xpl-slideout)
|
|
166
167
|
- [xpl-spotlight](../xpl-spotlight)
|
|
167
168
|
- [xpl-tab](../xpl-tab)
|
|
@@ -179,6 +180,7 @@ graph TD;
|
|
|
179
180
|
xpl-button-row --> xpl-button
|
|
180
181
|
xpl-list-item --> xpl-button
|
|
181
182
|
xpl-modal --> xpl-button
|
|
183
|
+
xpl-side-nav --> xpl-button
|
|
182
184
|
xpl-slideout --> xpl-button
|
|
183
185
|
xpl-spotlight --> xpl-button
|
|
184
186
|
xpl-tab --> xpl-button
|
|
@@ -2,6 +2,19 @@
|
|
|
2
2
|
|
|
3
3
|
|
|
4
4
|
|
|
5
|
+
### Design Tokens
|
|
6
|
+
|
|
7
|
+
Tokens used by this component from `@xplortech/apollo-foundation`.
|
|
8
|
+
|
|
9
|
+
**Color**
|
|
10
|
+
- `--xpl-border-default` — top border color
|
|
11
|
+
|
|
12
|
+
**Spacing**
|
|
13
|
+
- `--xpl-space-{0,16,24}` — padding / margins
|
|
14
|
+
|
|
15
|
+
**Border**
|
|
16
|
+
- `--xpl-border-small` — top border width (1px)
|
|
17
|
+
|
|
5
18
|
<!-- Auto Generated Below -->
|
|
6
19
|
|
|
7
20
|
|
|
@@ -4,6 +4,26 @@ Checkboxes allow users to make selections or choices. Checkboxes can be multi-se
|
|
|
4
4
|
|
|
5
5
|
Provide visible label text in the default slot, or set `aria-label` when the checkbox has no adjacent label (for example, icon-only toolbars or table selection cells).
|
|
6
6
|
|
|
7
|
+
## Design Tokens
|
|
8
|
+
|
|
9
|
+
The checkbox component uses the following Apollo Foundation tokens:
|
|
10
|
+
|
|
11
|
+
| Token | Usage |
|
|
12
|
+
|-------|-------|
|
|
13
|
+
| `--xpl-background-surface-default` | Default checkbox background; styled label background (resting/hover/focused) |
|
|
14
|
+
| `--xpl-background-action-primary-default` | Checked/indeterminate state background and border |
|
|
15
|
+
| `--xpl-background-action-disabled` | Disabled state background; disabled label background (styled variant) |
|
|
16
|
+
| `--xpl-background-surface-information` | Checked/indeterminate label background (styled variant) |
|
|
17
|
+
| `--xpl-text-inverse` | Checkmark and indeterminate icon color (checked / indeterminate states; inverse foreground on primary fill) |
|
|
18
|
+
| `--xpl-icon-disabled` | Checkmark and indeterminate icon color (disabled state) |
|
|
19
|
+
| `--xpl-border-strong` | Resting (unchecked) border color |
|
|
20
|
+
| `--xpl-border-hover` | Hover, checked, and indeterminate border color; styled container hover/focus border |
|
|
21
|
+
| `--xpl-border-default` | Styled container border; disabled state border |
|
|
22
|
+
| `--xpl-border-focus` | Focus visible outline |
|
|
23
|
+
| `--xpl-border-radius-small` | Checkbox corner radius and styled container corner radius (4px) |
|
|
24
|
+
| `--xpl-border-small` | Border width (1px) |
|
|
25
|
+
| `--xpl-size-100` | Checkbox dimensions (16px) |
|
|
26
|
+
|
|
7
27
|
<!-- Auto Generated Below -->
|
|
8
28
|
|
|
9
29
|
|
|
@@ -20,7 +40,7 @@ Provide visible label text in the default slot, or set `aria-label` when the che
|
|
|
20
40
|
| `name` | `name` | The name attribute for the html input. (submitted in form as name/value pair) | `string` | `undefined` |
|
|
21
41
|
| `required` | `required` | Whether the input is required | `boolean` | `undefined` |
|
|
22
42
|
| `styled` | `styled` | Whether the input is contained in a box with a border and a background | `boolean` | `undefined` |
|
|
23
|
-
| `value` | `value` | The value attribute for the checkbox input. (
|
|
43
|
+
| `value` | `value` | The value attribute for the checkbox input. (submitted in form as name/value pair) | `string` | `undefined` |
|
|
24
44
|
|
|
25
45
|
|
|
26
46
|
## Events
|
|
@@ -36,6 +56,7 @@ Provide visible label text in the default slot, or set `aria-label` when the che
|
|
|
36
56
|
|
|
37
57
|
- [xpl-choicelist](../xpl-choicelist)
|
|
38
58
|
- [xpl-header-accordion](../xpl-header-accordion)
|
|
59
|
+
- [xpl-table](../xpl-table)
|
|
39
60
|
- [xpl-table-header-cell](../xpl-table-header-cell)
|
|
40
61
|
|
|
41
62
|
### Graph
|
|
@@ -43,6 +64,7 @@ Provide visible label text in the default slot, or set `aria-label` when the che
|
|
|
43
64
|
graph TD;
|
|
44
65
|
xpl-choicelist --> xpl-checkbox
|
|
45
66
|
xpl-header-accordion --> xpl-checkbox
|
|
67
|
+
xpl-table --> xpl-checkbox
|
|
46
68
|
xpl-table-header-cell --> xpl-checkbox
|
|
47
69
|
style xpl-checkbox fill:#f9f,stroke:#333,stroke-width:4px
|
|
48
70
|
```
|
|
@@ -1,7 +1,25 @@
|
|
|
1
|
-
# xpl-divider
|
|
2
|
-
|
|
3
|
-
Allows for easy separation and titling of sections within forms or other content.
|
|
4
|
-
|
|
1
|
+
# xpl-divider
|
|
2
|
+
|
|
3
|
+
Allows for easy separation and titling of sections within forms or other content.
|
|
4
|
+
|
|
5
|
+
### Design Tokens
|
|
6
|
+
|
|
7
|
+
Tokens used by this component from `@xplortech/apollo-foundation`.
|
|
8
|
+
|
|
9
|
+
**Color**
|
|
10
|
+
- `--xpl-border-default` — divider line color
|
|
11
|
+
- `--xpl-text-default` — label text color
|
|
12
|
+
|
|
13
|
+
**Spacing**
|
|
14
|
+
- `--xpl-space-{0,4,16}` — padding / margin
|
|
15
|
+
|
|
16
|
+
**Typography**
|
|
17
|
+
- `--xpl-font-size-body` — base label font size
|
|
18
|
+
- Tier typography extends the shared type scale from `typography.css`: tier 3 → `.xpl-text-title-3`, tier 2 → `.xpl-text-title-4`, tier 1 → `.xpl-text-title-5`
|
|
19
|
+
|
|
20
|
+
**Border**
|
|
21
|
+
- `--xpl-border-small` — line width (1px)
|
|
22
|
+
|
|
5
23
|
<!-- Auto Generated Below -->
|
|
6
24
|
|
|
7
25
|
|
|
@@ -4,6 +4,57 @@ A flexible form input that supports multiple `type` values: `text`, `number`, `p
|
|
|
4
4
|
|
|
5
5
|
For `type="phone"`, the value is always emitted in **E.164** format (e.g. `+14155551234`). See [`xpl-input-phone`](xpl-input-phone) for full phone-input documentation.
|
|
6
6
|
|
|
7
|
+
## Design Tokens
|
|
8
|
+
|
|
9
|
+
The `xpl-input` component uses Apollo Foundation tokens for consistent theming across light and dark modes:
|
|
10
|
+
|
|
11
|
+
| Element | Property | Token |
|
|
12
|
+
|---------|----------|-------|
|
|
13
|
+
| Input wrapper border (default) | `border-color` | `var(--xpl-border-default)` |
|
|
14
|
+
| Input wrapper border (focus) | `border-color` | `var(--xpl-border-focus)` |
|
|
15
|
+
| Input wrapper border (error) | `border-color` | `var(--xpl-border-negative)` |
|
|
16
|
+
| Input wrapper background (default) | `background-color` | `var(--xpl-background-surface-default)` |
|
|
17
|
+
| Input/textarea background | `background-color` | `var(--xpl-background-surface-transparent-0)` |
|
|
18
|
+
| Disabled/readonly wrapper background | `background-color` | `var(--xpl-background-action-disabled)` |
|
|
19
|
+
| Post element background | `background-color` | `var(--xpl-background-surface-subtle)` |
|
|
20
|
+
| Input text | `color` | `var(--xpl-text-default)` |
|
|
21
|
+
| Disabled/readonly text | `color` | `var(--xpl-text-disabled)` |
|
|
22
|
+
| Label text | `color` | `var(--xpl-text-strong)` |
|
|
23
|
+
| Description text | `color` | `var(--xpl-text-subdued)` |
|
|
24
|
+
| Error text | `color` | `var(--xpl-text-negative)` |
|
|
25
|
+
| Character counter background (default) | `background-color` | `var(--xpl-background-surface-default)` |
|
|
26
|
+
| Character counter background (disabled/readonly) | `background-color` | `var(--xpl-background-action-disabled)` |
|
|
27
|
+
| Character counter text | `color` | `var(--xpl-text-subdued)` |
|
|
28
|
+
| Calendar/password icon | `color` | `var(--xpl-icon-default)` |
|
|
29
|
+
|
|
30
|
+
### Spacing Tokens
|
|
31
|
+
|
|
32
|
+
| Element | Property | Token |
|
|
33
|
+
|---------|----------|-------|
|
|
34
|
+
| Input | `padding-right` | `var(--xpl-space-8)` |
|
|
35
|
+
| Textarea | `padding-top` | `var(--xpl-space-12)` |
|
|
36
|
+
| Textarea | `padding-bottom` | `var(--xpl-space-8)` |
|
|
37
|
+
| Wrapper | `padding-left` | `var(--xpl-space-12)` |
|
|
38
|
+
| Pre element (leading icon/text) | `padding-right` | `var(--xpl-space-8)` |
|
|
39
|
+
| Post element (trailing unit / AM-PM) | `padding-left`, `padding-right` | `var(--xpl-space-12)` |
|
|
40
|
+
| Label | `padding-bottom` | `var(--xpl-space-4)` |
|
|
41
|
+
| Character counter | `padding` | `var(--xpl-space-8) var(--xpl-space-12)` |
|
|
42
|
+
| Error message | `padding`, `gap` | `var(--xpl-space-4)` |
|
|
43
|
+
| Calendar icon | `right` | `var(--xpl-space-12)` |
|
|
44
|
+
| Password button | `padding-left`, `padding-right` | `var(--xpl-space-12)` |
|
|
45
|
+
|
|
46
|
+
### Dimension Tokens
|
|
47
|
+
|
|
48
|
+
| Element | Property | Token |
|
|
49
|
+
|---------|----------|-------|
|
|
50
|
+
| Input | `height` | `var(--xpl-size-250)` (40px; matches Figma `form/height`) |
|
|
51
|
+
| Textarea | `min-height` | `var(--xpl-size-250)` (40px) |
|
|
52
|
+
| Textarea | `height` | `var(--xpl-size-700)` (112px; rounded up from 98px) |
|
|
53
|
+
| Wrapper | `border-width` | `var(--xpl-border-small)` |
|
|
54
|
+
| Wrapper | `border-radius` | `var(--xpl-border-radius-small)` (4px; matches Figma `border/radius/small`) |
|
|
55
|
+
| Post element | `height` | `var(--xpl-size-250)` (40px; vertically centered via flex) |
|
|
56
|
+
| Post element | `border-left-width` | `var(--xpl-border-small)` |
|
|
57
|
+
|
|
7
58
|
### Delegated types (`search`, `phone`, `date`, `time`, …)
|
|
8
59
|
|
|
9
60
|
`valueChange`, `inputEvent`, `focusEvent`, and `blurEvent` are emitted by the inner component and **bubble** to `<xpl-input>`. For **`type="search"`**, **`focusEvent`** and **`blurEvent`** are **re-emitted from `<xpl-input>`** (parent uses **`onFocusEvent`** / **`onBlurEvent`** on **`<xpl-input-search>`** with **`stopPropagation`**) so **`event.target`** matches **`type="text"`**. For **`valueChange`** and **`inputEvent`** on search, events still **bubble** from **`xpl-input-search`** without parent re-emission; **`event.target`** may be the inner host—prefer **`event.detail`** (the string) or **`event.currentTarget`** when you attach the listener on **`<xpl-input>`**. Other delegated types follow the same **`event.detail`** / **`event.currentTarget`** guidance.
|
|
@@ -99,6 +99,26 @@ Countries with custom formatters: US/CA, GB, AU, DE/AT/CH, FR, BR, MX, JP, CN, I
|
|
|
99
99
|
|
|
100
100
|
28 countries are currently supported. See `phone-country-data.ts` for the full list. Countries with custom number formatting are noted above. To add a new country, add an entry to the `PHONE_COUNTRIES` array and optionally add a formatter in `phone-format.ts`.
|
|
101
101
|
|
|
102
|
+
### Design Tokens
|
|
103
|
+
|
|
104
|
+
Tokens used by this component from `@xplortech/apollo-foundation`.
|
|
105
|
+
|
|
106
|
+
**Color**
|
|
107
|
+
- `--xpl-background-surface-subtlest` — trigger background
|
|
108
|
+
- `--xpl-background-surface-information` — trigger hover / open background
|
|
109
|
+
- `--xpl-border-negative` — error state border
|
|
110
|
+
- `--xpl-border-focus` — wrapper and trigger focus outline
|
|
111
|
+
- `--xpl-border-default` — trigger divider, search border
|
|
112
|
+
- `--xpl-text-default` — trigger text, dial code
|
|
113
|
+
- `--xpl-text-subdued` — clear button color
|
|
114
|
+
- `--xpl-icon-default` — search icon
|
|
115
|
+
|
|
116
|
+
**Border**
|
|
117
|
+
- `--xpl-border-small` — trigger divider width (1px)
|
|
118
|
+
|
|
119
|
+
**Focus**
|
|
120
|
+
- `--xpl-border-focus` — `:focus-visible` outline (inset, 2px)
|
|
121
|
+
|
|
102
122
|
<!-- Auto Generated Below -->
|
|
103
123
|
|
|
104
124
|
|
|
@@ -108,6 +128,7 @@ Countries with custom formatters: US/CA, GB, AU, DE/AT/CH, FR, BR, MX, JP, CN, I
|
|
|
108
128
|
| -------------------- | ------------------ | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | ---------- | ----------- |
|
|
109
129
|
| `defaultCountry` | `default-country` | Default country code (ISO 3166-1 alpha-2) when value is empty, e.g. "US". | `string` | `'US'` |
|
|
110
130
|
| `disabled` | `disabled` | Whether the field is disabled | `boolean` | `undefined` |
|
|
131
|
+
| `error` | `error` | Whether the field is in an error state. When true, the input renders with the error border styling. The error message itself is owned by the parent `xpl-input` wrapper. | `boolean` | `undefined` |
|
|
111
132
|
| `inputId` | `input-id` | The `inputId` is used to associate the input with a label. | `string` | `undefined` |
|
|
112
133
|
| `isInternational` | `is-international` | Enables international mode with a country selector and dial code prefix. When false, the input is locked to `defaultCountry` with no country picker and no dial code shown in the display value. Emitted value is still E.164. | `boolean` | `true` |
|
|
113
134
|
| `name` | `name` | Most inputs are used in forms, and should have a `name` associated with the input for handling form data. | `string` | `undefined` |
|
|
@@ -2,6 +2,30 @@
|
|
|
2
2
|
|
|
3
3
|
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.
|
|
4
4
|
|
|
5
|
+
|
|
6
|
+
### Design Tokens
|
|
7
|
+
|
|
8
|
+
Tokens used by this component from `@xplortech/apollo-foundation`.
|
|
9
|
+
|
|
10
|
+
**Color**
|
|
11
|
+
- `--xpl-background-surface-default` — content panel background and arrow fill
|
|
12
|
+
- `--xpl-background-surface-transparent-10` — shadow primary layer
|
|
13
|
+
- `--xpl-background-surface-transparent-5` — shadow secondary layer
|
|
14
|
+
- `--xpl-text-default` — content text color
|
|
15
|
+
- `--xpl-border-default` — content panel border and arrow stroke
|
|
16
|
+
|
|
17
|
+
**Spacing**
|
|
18
|
+
- `--xpl-space-8` — popover margin (offset from trigger), via `--xpl-popover-margin`
|
|
19
|
+
- `--xpl-space-16` — content panel padding (Figma `padding/tight`; corrected from the legacy 24px during the Foundation migration — see `TECH_DEBT.md`)
|
|
20
|
+
|
|
21
|
+
**Border**
|
|
22
|
+
- `--xpl-border-small` — border width (1px)
|
|
23
|
+
- `--xpl-border-radius-default` — content panel corner radius (8px)
|
|
24
|
+
|
|
25
|
+
**Z-index**
|
|
26
|
+
- `--xpl-z-index-100` — content panel stacking order
|
|
27
|
+
- `--xpl-z-index-900` — arrow stacking order
|
|
28
|
+
|
|
5
29
|
<!-- Auto Generated Below -->
|
|
6
30
|
|
|
7
31
|
|
|
@@ -1,7 +1,24 @@
|
|
|
1
|
-
# xpl-radio
|
|
2
|
-
|
|
3
|
-
Radio buttons allow users to make selections or choices. Radios are always single select, and can also act as controls.
|
|
4
|
-
|
|
1
|
+
# xpl-radio
|
|
2
|
+
|
|
3
|
+
Radio buttons allow users to make selections or choices. Radios are always single select, and can also act as controls.
|
|
4
|
+
|
|
5
|
+
## Design Tokens
|
|
6
|
+
|
|
7
|
+
The radio component uses the following Apollo Foundation tokens:
|
|
8
|
+
|
|
9
|
+
| Token | Usage |
|
|
10
|
+
|-------|-------|
|
|
11
|
+
| `--xpl-background-surface-default` | Disabled checked state background; styled label background (resting/hover/focused) |
|
|
12
|
+
| `--xpl-background-action-disabled` | Disabled state background; disabled label background (styled variant) |
|
|
13
|
+
| `--xpl-background-surface-information` | Checked label background (styled variant) |
|
|
14
|
+
| `--xpl-border-strong` | Resting (unchecked) border color |
|
|
15
|
+
| `--xpl-border-hover` | Checked/hover/active border color; styled container hover/focus border |
|
|
16
|
+
| `--xpl-border-default` | Disabled state border color |
|
|
17
|
+
| `--xpl-border-focus` | Focus visible outline |
|
|
18
|
+
| `--xpl-border-radius-small` | Styled container corner radius (4px) |
|
|
19
|
+
| `--xpl-border-small` | Default border width (1px) |
|
|
20
|
+
| `--xpl-size-100` | Radio dimensions (16px) |
|
|
21
|
+
|
|
5
22
|
<!-- Auto Generated Below -->
|
|
6
23
|
|
|
7
24
|
|
|
@@ -27,7 +27,75 @@ Use the **`label`** prop for a unique accessible name on the `<nav>` when multip
|
|
|
27
27
|
</xpl-side-nav>
|
|
28
28
|
```
|
|
29
29
|
|
|
30
|
-
**Link rows:** use `xpl-side-nav-item` with `link`
|
|
30
|
+
**Link rows:** use `xpl-side-nav-item` with `link` when the row needs to be a real `<a>` element (framework router components, right-click / open-in-new-tab, semantic link role). For typical in-app navigation, the default button mode is simpler. See [xpl-side-nav-item](./xpl-side-nav-item) **Link mode** for usage and styling guidance.
|
|
31
|
+
|
|
32
|
+
## Mobile behavior
|
|
33
|
+
|
|
34
|
+
Below the Tailwind `md` breakpoint (768px) the sidebar collapses to a ~56px top bar with a built-in toggle button (`sidebar-left-show` / `sidebar-left-hide`). Activating the toggle opens a drawer containing the `section` + `nav-footer` content over an [`xpl-backdrop`](../xpl-backdrop) scrim. Above `md` the toggle and backdrop are hidden and the sidebar renders inline — no markup changes are needed for either layout.
|
|
35
|
+
|
|
36
|
+
**Keyboard / focus:**
|
|
37
|
+
- **Escape** closes the drawer and returns focus to the toggle.
|
|
38
|
+
- A **backdrop click** closes the drawer.
|
|
39
|
+
- **Focus is trapped** inside the open drawer — Tab cycles only through the toggle and drawer rows.
|
|
40
|
+
- The toggle exposes `aria-expanded` and a dynamic `aria-label` ("Open/Close navigation menu").
|
|
41
|
+
|
|
42
|
+
**Row-level responsive scaling (applied automatically inside the drawer):**
|
|
43
|
+
|
|
44
|
+
| Property | Desktop (≥ 768px) | Mobile (< 768px) |
|
|
45
|
+
|---|---|---|
|
|
46
|
+
| Tap target (`xpl-side-nav-item` wrapper) | — (inner button sized by content) | `min-height: 48px; padding: 6px 8px` |
|
|
47
|
+
| Leading / trailing icon size | 16px | 24px |
|
|
48
|
+
| Top-level label typography | `title-4` (16px, medium) | `title-3` (20px, medium) |
|
|
49
|
+
| Child item label typography | `title-5` | `title-4` (16px, medium) |
|
|
50
|
+
| Footer item label typography | `title-5` | `title-4` (16px, medium) |
|
|
51
|
+
| Footer row min-height | `28px` | `--xpl-size-200` (32px) |
|
|
52
|
+
| Footer leading / trailing icon | 16px | 20px |
|
|
53
|
+
|
|
54
|
+
No markup or props are needed for these changes — they are driven entirely by CSS.
|
|
55
|
+
|
|
56
|
+
### Open state API
|
|
57
|
+
|
|
58
|
+
The `open` prop, `openChange` event, and `toggle()` / `setOpen()` methods control and observe the drawer. The component works **uncontrolled** (the built-in toggle flips `open`) or **controlled** (the consumer owns `open`).
|
|
59
|
+
|
|
60
|
+
**Uncontrolled** — the built-in toggle manages everything; listen to `openChange` if you need to react:
|
|
61
|
+
|
|
62
|
+
```html
|
|
63
|
+
<xpl-side-nav label="Main navigation" id="nav">
|
|
64
|
+
<div slot="section">…</div>
|
|
65
|
+
<div slot="nav-footer">…</div>
|
|
66
|
+
</xpl-side-nav>
|
|
67
|
+
<script>
|
|
68
|
+
document.getElementById('nav').addEventListener('openChange', (e) => {
|
|
69
|
+
console.log('drawer open:', e.detail);
|
|
70
|
+
});
|
|
71
|
+
</script>
|
|
72
|
+
```
|
|
73
|
+
|
|
74
|
+
**Controlled** — own `open` and update it from `openChange` (and/or the imperative methods):
|
|
75
|
+
|
|
76
|
+
```html
|
|
77
|
+
<xpl-side-nav label="Main navigation" id="nav" open>…</xpl-side-nav>
|
|
78
|
+
<script>
|
|
79
|
+
const nav = document.getElementById('nav');
|
|
80
|
+
// Keep your state in sync with user-driven changes (toggle, Escape, backdrop):
|
|
81
|
+
nav.addEventListener('openChange', (e) => {
|
|
82
|
+
nav.open = e.detail;
|
|
83
|
+
});
|
|
84
|
+
// Programmatic control:
|
|
85
|
+
await nav.toggle();
|
|
86
|
+
await nav.setOpen(false);
|
|
87
|
+
</script>
|
|
88
|
+
```
|
|
89
|
+
|
|
90
|
+
> **v2 breaking change (beta):** the mobile toggle + drawer are now built in. Consumers who previously wrapped their own toggle around `xpl-side-nav` should remove it.
|
|
91
|
+
|
|
92
|
+
### Implementation details (mobile drawer)
|
|
93
|
+
|
|
94
|
+
- **Host class hooks** — when the drawer is open the host carries `xpl-side-nav--open` alongside `xpl-side-nav`. Useful for app-level CSS that needs to react (e.g. lock body scroll).
|
|
95
|
+
- **Drawer transition** — `transform` + `opacity` + `visibility` over **300 ms** with `ease-out`. Closed state is `translateX(-100%)` + `opacity: 0` + `visibility: hidden`; the `visibility` flip is delayed 300 ms on close so the slide is visible.
|
|
96
|
+
- **Backdrop transition** — `opacity` + `visibility` over **500 ms** with `ease-in-out`. Open state uses `opacity-50` (matches the native `xpl-backdrop` value, not full opaque). Visibility delayed 500 ms on close. `pointer-events: none` applies immediately on close so page content is tappable while the scrim fades out.
|
|
97
|
+
- **Drawer geometry** — width `80vw` with a `min-width: 300px` floor (Figma spec; no Foundation token yet — see `TECH_DEBT.md`). The remaining `20vw` shows the backdrop scrim.
|
|
98
|
+
- **Toggle styling overrides** — the built-in `xpl-button` toggle uses `padding-inline: var(--xpl-space-12)` on its inner `<button>` and renders its icon at `var(--xpl-size-200)` (32 px) so the icon's left edge aligns with the drawer's nav-item icon column.
|
|
31
99
|
|
|
32
100
|
### Multi-Navigation Layouts (Accessibility)
|
|
33
101
|
|
|
@@ -54,17 +122,97 @@ When multiple navigation landmarks exist on a page (e.g., side nav, top nav, bre
|
|
|
54
122
|
|
|
55
123
|
## Related components
|
|
56
124
|
|
|
57
|
-
- [xpl-side-nav-item](
|
|
125
|
+
- [xpl-side-nav-item](./xpl-side-nav-item) — Navigation rows for section and footer: leaf button, expandable parent, or link (real `<a>`) mode.
|
|
58
126
|
|
|
59
127
|
<!-- Auto Generated Below -->
|
|
60
128
|
|
|
61
129
|
|
|
130
|
+
## Overview
|
|
131
|
+
|
|
132
|
+
Slot-based sidebar for app navigation: a scrollable main `section` and a fixed
|
|
133
|
+
`nav-footer`. Compose with `xpl-side-nav-item` for rows.
|
|
134
|
+
|
|
135
|
+
**Mobile (v2):** below the Tailwind `md` breakpoint, the sidebar collapses to a
|
|
136
|
+
~56px top bar with a toggle button (`sidebar-left-show` / `sidebar-left-hide`).
|
|
137
|
+
Activating the toggle opens a drawer containing the `section` + `nav-footer`
|
|
138
|
+
content behind an `xpl-backdrop` scrim. The drawer traps focus while open;
|
|
139
|
+
Escape or a backdrop click closes it and returns focus to the toggle. Above
|
|
140
|
+
`md` the toggle and backdrop are hidden via CSS and the sidebar renders inline.
|
|
141
|
+
|
|
142
|
+
The toggle is always rendered (no gating prop) and hidden above the breakpoint
|
|
143
|
+
in CSS. Open state is exposed via the `open` prop (controlled or uncontrolled),
|
|
144
|
+
the `openChange` event, and the `toggle()` / `setOpen()` methods.
|
|
145
|
+
|
|
146
|
+
**v2 breaking change (beta):** consumers who wrapped their own mobile toggle
|
|
147
|
+
around `xpl-side-nav` should remove it — the toggle and drawer are now built in.
|
|
148
|
+
|
|
62
149
|
## Properties
|
|
63
150
|
|
|
64
|
-
| Property | Attribute | Description
|
|
65
|
-
| -------- | --------- |
|
|
66
|
-
| `label` | `label` | Accessible label for the navigation landmark. Maps to `aria-label` on the `<nav>` element. Recommended when multiple navigation landmarks exist on a page (e.g., side nav + top nav + breadcrumbs) to help screen readers distinguish them.
|
|
151
|
+
| Property | Attribute | Description | Type | Default |
|
|
152
|
+
| -------- | --------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | --------- | ----------- |
|
|
153
|
+
| `label` | `label` | Accessible label for the navigation landmark. Maps to `aria-label` on the `<nav>` element. Recommended when multiple navigation landmarks exist on a page (e.g., side nav + top nav + breadcrumbs) to help screen readers distinguish them. | `string` | `undefined` |
|
|
154
|
+
| `open` | `open` | Whether the mobile drawer is open. Reflected to the `open` attribute so CSS and host state stay in sync. Controlled (consumer owns `open`) or uncontrolled (built-in toggle flips it). Has no visible effect above the `md` breakpoint, where the sidebar always renders inline. | `boolean` | `false` |
|
|
155
|
+
|
|
156
|
+
|
|
157
|
+
## Events
|
|
67
158
|
|
|
159
|
+
| Event | Description | Type |
|
|
160
|
+
| ------------ | ------------------------------------------------------------------------------------------------------------------------------------------------------------------ | ---------------------- |
|
|
161
|
+
| `openChange` | Emitted when the mobile drawer open state changes: toggle activation, Escape, or a backdrop click. Detail is the new open state (`true` = open, `false` = closed). | `CustomEvent<boolean>` |
|
|
162
|
+
|
|
163
|
+
|
|
164
|
+
## Methods
|
|
165
|
+
|
|
166
|
+
### `setOpen(open: boolean) => Promise<void>`
|
|
167
|
+
|
|
168
|
+
Programmatically set the mobile drawer open state. Emits `openChange` when it changes.
|
|
169
|
+
|
|
170
|
+
#### Parameters
|
|
171
|
+
|
|
172
|
+
| Name | Type | Description |
|
|
173
|
+
| ------ | --------- | ----------- |
|
|
174
|
+
| `open` | `boolean` | |
|
|
175
|
+
|
|
176
|
+
#### Returns
|
|
177
|
+
|
|
178
|
+
Type: `Promise<void>`
|
|
179
|
+
|
|
180
|
+
|
|
181
|
+
|
|
182
|
+
### `toggle() => Promise<void>`
|
|
183
|
+
|
|
184
|
+
Programmatically toggle the mobile drawer open/closed. Emits `openChange`.
|
|
185
|
+
|
|
186
|
+
#### Returns
|
|
187
|
+
|
|
188
|
+
Type: `Promise<void>`
|
|
189
|
+
|
|
190
|
+
|
|
191
|
+
|
|
192
|
+
|
|
193
|
+
## Slots
|
|
194
|
+
|
|
195
|
+
| Slot | Description |
|
|
196
|
+
| -------------- | ------------------------------------------------------------ |
|
|
197
|
+
| `"nav-footer"` | Footer items (e.g. Help, Logout), separated by a top border. |
|
|
198
|
+
| `"section"` | Primary navigation items (`xpl-side-nav-item`). |
|
|
199
|
+
|
|
200
|
+
|
|
201
|
+
## Dependencies
|
|
202
|
+
|
|
203
|
+
### Depends on
|
|
204
|
+
|
|
205
|
+
- [xpl-button](../xpl-button)
|
|
206
|
+
- [xpl-backdrop](../xpl-backdrop)
|
|
207
|
+
|
|
208
|
+
### Graph
|
|
209
|
+
```mermaid
|
|
210
|
+
graph TD;
|
|
211
|
+
xpl-side-nav --> xpl-button
|
|
212
|
+
xpl-side-nav --> xpl-backdrop
|
|
213
|
+
xpl-button --> xpl-icon
|
|
214
|
+
style xpl-side-nav fill:#f9f,stroke:#333,stroke-width:4px
|
|
215
|
+
```
|
|
68
216
|
|
|
69
217
|
----------------------------------------------
|
|
70
218
|
|