@ds-mo/ui 15.11.1 → 15.12.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/dist/.package-ready.json +1 -1
- package/dist/agent-patterns.json +1 -1
- package/dist/agent.json +114 -18
- package/dist/angular/ds-card-action-center.d.ts +1 -1
- package/dist/angular/ds-card-action-center.js +3 -3
- package/dist/angular/ds-card-chart.d.ts +1 -1
- package/dist/angular/ds-card-chart.js +3 -3
- package/dist/angular/ds-card-navigation.d.ts +1 -1
- package/dist/angular/ds-card-navigation.js +3 -3
- package/dist/angular/ds-card-setting.d.ts +1 -1
- package/dist/angular/ds-card-setting.js +3 -3
- package/dist/angular/ds-card-settings-scope.d.ts +1 -1
- package/dist/angular/ds-card-settings-scope.js +3 -3
- package/dist/angular/ds-field.d.ts +1 -1
- package/dist/angular/ds-field.js +3 -3
- package/dist/angular/ds-inline-banner-settings.d.ts +1 -1
- package/dist/angular/ds-inline-banner-settings.js +3 -3
- package/dist/angular/ds-pagination.d.ts +1 -1
- package/dist/angular/ds-pagination.js +3 -3
- package/dist/angular/ds-radio.d.ts +1 -1
- package/dist/angular/ds-radio.js +3 -3
- package/dist/angular/ds-setting-row-radio.d.ts +1 -1
- package/dist/angular/ds-setting-row-radio.js +3 -3
- package/dist/angular/ds-setting-row-toggle.d.ts +1 -1
- package/dist/angular/ds-setting-row-toggle.js +3 -3
- package/dist/angular/ds-skeleton.d.ts +1 -1
- package/dist/angular/ds-skeleton.js +3 -3
- package/dist/components/THIRD-PARTY-NOTICES +1 -1
- package/dist/components/bundled-dependencies.json +1 -1
- package/dist/components/ds-agent-activity.js +1 -1
- package/dist/components/ds-agent-questionnaire.js +1 -1
- package/dist/components/ds-agent-response.js +1 -1
- package/dist/components/ds-agent-response.js.map +1 -1
- package/dist/components/ds-agent-source-list.js +1 -1
- package/dist/components/ds-agent-tool-call.js +1 -1
- package/dist/components/ds-attachment-list.js +1 -1
- package/dist/components/ds-badge.js +1 -1
- package/dist/components/ds-banner.js +1 -1
- package/dist/components/ds-bar-action.js +1 -1
- package/dist/components/ds-bar-nav.js +1 -1
- package/dist/components/ds-bar-page-title.js +1 -1
- package/dist/components/ds-bar-title.js +1 -1
- package/dist/components/ds-bar-workflow.js +1 -1
- package/dist/components/ds-breadcrumb.js +1 -1
- package/dist/components/ds-button-filled.js +1 -1
- package/dist/components/ds-button-inverted.js +1 -1
- package/dist/components/ds-button-unfilled.js +1 -1
- package/dist/components/ds-calendar.js +1 -1
- package/dist/components/ds-card-action-center.js +1 -1
- package/dist/components/ds-card-action-center.js.map +1 -1
- package/dist/components/ds-card-chart.js +1 -1
- package/dist/components/ds-card-chart.js.map +1 -1
- package/dist/components/ds-card-navigation.js +1 -1
- package/dist/components/ds-card-navigation.js.map +1 -1
- package/dist/components/ds-card-overview.js +1 -1
- package/dist/components/ds-card-overview.js.map +1 -1
- package/dist/components/ds-card-setting.js +1 -1
- package/dist/components/ds-card-setting.js.map +1 -1
- package/dist/components/ds-card-settings-scope.js +1 -1
- package/dist/components/ds-card-settings-scope.js.map +1 -1
- package/dist/components/ds-chart-legend.js +1 -1
- package/dist/components/ds-chart.js +1 -1
- package/dist/components/ds-checkbox-group.js +1 -1
- package/dist/components/ds-checkbox.js +1 -1
- package/dist/components/ds-chip.js +1 -1
- package/dist/components/ds-code-block.js +1 -1
- package/dist/components/ds-conversation-list-item.js +1 -1
- package/dist/components/ds-conversation-list-section.js +1 -1
- package/dist/components/ds-conversation-list.js +1 -1
- package/dist/components/ds-data-customize.js +1 -1
- package/dist/components/ds-data-customize.js.map +1 -1
- package/dist/components/ds-data-filter.js +1 -1
- package/dist/components/ds-data-group.js +1 -1
- package/dist/components/ds-data-preferences.js +1 -1
- package/dist/components/ds-data-saved-views.js +1 -1
- package/dist/components/ds-data-saved-views.js.map +1 -1
- package/dist/components/ds-data-search.js +1 -1
- package/dist/components/ds-data-sort.js +1 -1
- package/dist/components/ds-data-toolbar.js +1 -1
- package/dist/components/ds-divider.js +1 -1
- package/dist/components/ds-empty-state.js +1 -1
- package/dist/components/ds-field.js +1 -1
- package/dist/components/ds-filter-menu.js +1 -1
- package/dist/components/ds-inline-banner-settings.js +1 -1
- package/dist/components/ds-inline-banner-settings.js.map +1 -1
- package/dist/components/ds-input-date.js +1 -1
- package/dist/components/ds-input-time.js +1 -1
- package/dist/components/ds-input.js +1 -1
- package/dist/components/ds-map-cluster-marker.js +1 -1
- package/dist/components/ds-map-entity-marker.js +1 -1
- package/dist/components/ds-map-marker.js +1 -1
- package/dist/components/ds-markdown.js +1 -1
- package/dist/components/ds-menu.js +1 -1
- package/dist/components/ds-message-actions.js +1 -1
- package/dist/components/ds-message-bubble.js +1 -1
- package/dist/components/ds-message-composer.js +1 -1
- package/dist/components/ds-message-scroller.js +1 -1
- package/dist/components/ds-message.js +1 -1
- package/dist/components/ds-mobile-bar-nav.js +1 -1
- package/dist/components/ds-mobile-header.js +1 -1
- package/dist/components/ds-mobile-section-switcher.js +1 -1
- package/dist/components/ds-mobile-sheet-nav.js +1 -1
- package/dist/components/ds-modal.js +1 -1
- package/dist/components/ds-navigation-tab-group.js +1 -1
- package/dist/components/ds-pagination.js +1 -1
- package/dist/components/ds-panel-nav.js +1 -1
- package/dist/components/ds-panel-sub-nav.js +1 -1
- package/dist/components/ds-panel-tool-header.js +1 -1
- package/dist/components/ds-panel-tool-search.js +1 -1
- package/dist/components/ds-panel-tools.js +1 -1
- package/dist/components/ds-paper-texture.js +1 -1
- package/dist/components/ds-radio-tile.js +1 -1
- package/dist/components/ds-radio.js +1 -1
- package/dist/components/ds-score.js +1 -1
- package/dist/components/ds-scroll-overlay.js +1 -1
- package/dist/components/ds-select-toggle.js +1 -1
- package/dist/components/ds-select.js +1 -1
- package/dist/components/ds-setting-row-checkbox.js +1 -1
- package/dist/components/ds-setting-row-radio.js +1 -1
- package/dist/components/ds-setting-row-radio.js.map +1 -1
- package/dist/components/ds-setting-row-toggle.js +1 -1
- package/dist/components/ds-setting-row-toggle.js.map +1 -1
- package/dist/components/ds-shell-app.js +1 -1
- package/dist/components/ds-shell-app.js.map +1 -1
- package/dist/components/ds-shell-page.js +1 -1
- package/dist/components/ds-shell-tools.js +1 -1
- package/dist/components/ds-skeleton.js +1 -1
- package/dist/components/ds-slider.js +1 -1
- package/dist/components/ds-swatch-picker.js +1 -1
- package/dist/components/ds-switch.js +1 -1
- package/dist/components/ds-tab-group.js +1 -1
- package/dist/components/ds-table.js +1 -1
- package/dist/components/ds-table.js.map +1 -1
- package/dist/components/ds-tag.js +1 -1
- package/dist/components/ds-text.js +1 -1
- package/dist/components/ds-textarea.js +1 -1
- package/dist/components/ds-time-picker.js +1 -1
- package/dist/components/ds-toast.js +1 -1
- package/dist/components/ds-tooltip-chart.js +1 -1
- package/dist/components/ds-tooltip.js +1 -1
- package/dist/components/ds-typing-indicator.js +1 -1
- package/dist/components/{p-6QYDIPd1.js → p-3dG9v5Aw.js} +2 -2
- package/dist/components/{p-DwFnt0W0.js → p-5PReYMiY.js} +2 -2
- package/dist/components/{p-CzTJAO2J.js → p-8fddX3V3.js} +2 -2
- package/dist/components/{p-Cw1ljgW1.js → p-9u2WDF0J.js} +2 -2
- package/dist/components/{p-M9pOLcyK.js → p-B-ChwMFE.js} +2 -2
- package/dist/components/{p-y2Sdv9M3.js → p-BAIYOobl.js} +2 -2
- package/dist/components/{p-DKG26pp5.js → p-BIMW5_Z7.js} +2 -2
- package/dist/components/p-BMI0F08u.js +2 -0
- package/dist/components/{p-B5rN3slq.js.map → p-BMI0F08u.js.map} +1 -1
- package/dist/components/p-BV8sNEVP.js +2 -0
- package/dist/components/p-BV8sNEVP.js.map +1 -0
- package/dist/components/p-BVUdtuog.js +2 -0
- package/dist/components/p-BVUdtuog.js.map +1 -0
- package/dist/components/{p-CgYDQSLW.js → p-BYo1-6b5.js} +2 -2
- package/dist/components/{p-S5QCVAdH.js → p-BZbJkJpG.js} +2 -2
- package/dist/components/{p-D2rASHHq.js → p-BcYzHn1E.js} +2 -2
- package/dist/components/{p-0EpjqRWc.js → p-BfRAVR40.js} +2 -2
- package/dist/components/p-BnE9MeXS.js +2 -0
- package/dist/components/{p-CEB8RFih.js.map → p-BnE9MeXS.js.map} +1 -1
- package/dist/components/p-BoFK9lmP.js +2 -0
- package/dist/components/p-BoFK9lmP.js.map +1 -0
- package/dist/components/{p-BBZz2Dvg.js → p-BoWpIl_m.js} +2 -2
- package/dist/components/{p-DixX2_Bd.js → p-BpPHCF63.js} +2 -2
- package/dist/components/p-BpssHpam.js +2 -0
- package/dist/components/p-BpssHpam.js.map +1 -0
- package/dist/components/{p-DfwvHxYi.js → p-By_jYvHp.js} +2 -2
- package/dist/components/p-C5HGwzy9.js +2 -0
- package/dist/components/{p-Ba-dSshd.js.map → p-C5HGwzy9.js.map} +1 -1
- package/dist/components/{p-D4r6oWyQ.js → p-C860ilDn.js} +2 -2
- package/dist/components/{p-DGDF4NMV.js → p-CEHhx4VQ.js} +2 -2
- package/dist/components/{p-BqIRExej.js → p-CL0FpMKo.js} +2 -2
- package/dist/components/{p-CEm0AoDR.js → p-CQnjpuMX.js} +2 -2
- package/dist/components/{p-B9Q7fXxW.js → p-CUG4EkKn.js} +2 -2
- package/dist/components/{p-D-cZ6cRI.js → p-CYmz92EF.js} +2 -2
- package/dist/components/{p-DfzXyVoM.js → p-CbP9ASmI.js} +2 -2
- package/dist/components/{p-DvMCOJwc.js → p-CbPGO7vl.js} +2 -2
- package/dist/components/{p-DfphSI9S.js → p-CdMIA5hz.js} +2 -2
- package/dist/components/{p-Cxk1A7Sx.js → p-CeaIWw1Q.js} +2 -2
- package/dist/components/{p-CW-7vLUB.js → p-Cfqvxxs2.js} +2 -2
- package/dist/components/{p-CsPqGA8B.js → p-CpqLGzv4.js} +2 -2
- package/dist/components/{p-DKg181YU.js → p-DFR9hqDU.js} +2 -2
- package/dist/components/p-DKZP3jCY.js +2 -0
- package/dist/components/p-DKZP3jCY.js.map +1 -0
- package/dist/components/{p-CTAF7SkL.js → p-DMPn_dt7.js} +2 -2
- package/dist/components/{p-CYRTkP1A.js → p-DYruK9cb.js} +2 -2
- package/dist/components/{p-CqfYCn-e.js → p-DiUaIJ91.js} +2 -2
- package/dist/components/{p-OFJpWJcN.js → p-DimFbKZH.js} +2 -2
- package/dist/components/p-DmyU1fd-.js +2 -0
- package/dist/components/p-DmyU1fd-.js.map +1 -0
- package/dist/components/{p-BkajUPiA.js → p-DuhJ49iN.js} +2 -2
- package/dist/components/{p-CqW2eyiF.js → p-E0RqkUNq.js} +2 -2
- package/dist/components/{p-D_iZPukF.js → p-G6r6yYg8.js} +2 -2
- package/dist/components/p-HNktxWtF.js +2 -0
- package/dist/components/p-HNktxWtF.js.map +1 -0
- package/dist/components/{p-87FjWil8.js → p-IQdLCfJJ.js} +2 -2
- package/dist/components/{p-CAARHqjE.js → p-KTaiJztz.js} +2 -2
- package/dist/components/{p-BM-UYlIS.js → p-N-2CZze7.js} +2 -2
- package/dist/components/{p-Ch00yccW.js → p-Nx52go85.js} +2 -2
- package/dist/components/{p-CaNMVLhm.js → p-WEffoQQD.js} +2 -2
- package/dist/components/{p-DDawngok.js → p-XKt6j1UN.js} +2 -2
- package/dist/components/{p-CeXf9-X3.js → p-mSCnWLhL.js} +2 -2
- package/dist/components/{p-C8D853vs.js → p-nakO4viw.js} +2 -2
- package/dist/components/{p-BC9xYdJD.js → p-pkJ3X3s7.js} +2 -2
- package/dist/components/{p-BNnw_O4e.js → p-r_e6_0nP.js} +2 -2
- package/dist/components/p-zsWHUNJ9.js +2 -0
- package/dist/components/p-zsWHUNJ9.js.map +1 -0
- package/dist/docs/components.json +642 -22
- package/dist/lint/index.js +1 -1
- package/dist/mcp-data/registry/agent-activity.json +2 -2
- package/dist/mcp-data/registry/agent-questionnaire.json +2 -2
- package/dist/mcp-data/registry/agent-response.json +2 -2
- package/dist/mcp-data/registry/agent-source-list.json +2 -2
- package/dist/mcp-data/registry/agent-tool-call.json +2 -2
- package/dist/mcp-data/registry/attachment-list.json +2 -2
- package/dist/mcp-data/registry/avatar.json +2 -2
- package/dist/mcp-data/registry/badge.json +2 -2
- package/dist/mcp-data/registry/banner.json +2 -2
- package/dist/mcp-data/registry/bar-action.json +2 -2
- package/dist/mcp-data/registry/bar-nav.json +2 -2
- package/dist/mcp-data/registry/bar-page-title.json +2 -2
- package/dist/mcp-data/registry/bar-title.json +2 -2
- package/dist/mcp-data/registry/bar-workflow.json +2 -2
- package/dist/mcp-data/registry/breadcrumb.json +2 -2
- package/dist/mcp-data/registry/button-filled.json +2 -2
- package/dist/mcp-data/registry/button-inverted.json +2 -2
- package/dist/mcp-data/registry/button-unfilled.json +2 -2
- package/dist/mcp-data/registry/calendar.json +2 -2
- package/dist/mcp-data/registry/card-action-center.json +25 -5
- package/dist/mcp-data/registry/card-chart.json +25 -5
- package/dist/mcp-data/registry/card-navigation.json +25 -5
- package/dist/mcp-data/registry/card-overview.json +4 -4
- package/dist/mcp-data/registry/card-setting.json +25 -5
- package/dist/mcp-data/registry/card-settings-scope.json +24 -4
- package/dist/mcp-data/registry/chart-legend.json +2 -2
- package/dist/mcp-data/registry/chart.json +2 -2
- package/dist/mcp-data/registry/checkbox-group.json +2 -2
- package/dist/mcp-data/registry/checkbox.json +2 -2
- package/dist/mcp-data/registry/chip.json +2 -2
- package/dist/mcp-data/registry/code-block.json +2 -2
- package/dist/mcp-data/registry/conversation-list-item.json +2 -2
- package/dist/mcp-data/registry/conversation-list-section.json +2 -2
- package/dist/mcp-data/registry/conversation-list.json +2 -2
- package/dist/mcp-data/registry/data-customize.json +2 -2
- package/dist/mcp-data/registry/data-filter.json +2 -2
- package/dist/mcp-data/registry/data-group.json +2 -2
- package/dist/mcp-data/registry/data-preferences.json +2 -2
- package/dist/mcp-data/registry/data-saved-views.json +2 -2
- package/dist/mcp-data/registry/data-search.json +2 -2
- package/dist/mcp-data/registry/data-sort.json +2 -2
- package/dist/mcp-data/registry/data-toolbar.json +2 -2
- package/dist/mcp-data/registry/divider.json +2 -2
- package/dist/mcp-data/registry/empty-state.json +2 -2
- package/dist/mcp-data/registry/field.json +24 -4
- package/dist/mcp-data/registry/filter-menu.json +2 -2
- package/dist/mcp-data/registry/icon.json +2 -2
- package/dist/mcp-data/registry/inline-banner-settings.json +24 -4
- package/dist/mcp-data/registry/input-date.json +3 -3
- package/dist/mcp-data/registry/input-time.json +3 -3
- package/dist/mcp-data/registry/input.json +2 -2
- package/dist/mcp-data/registry/loader.json +2 -2
- package/dist/mcp-data/registry/map-cluster-marker.json +2 -2
- package/dist/mcp-data/registry/map-entity-marker.json +2 -2
- package/dist/mcp-data/registry/map-marker.json +2 -2
- package/dist/mcp-data/registry/markdown.json +2 -2
- package/dist/mcp-data/registry/menu.json +2 -2
- package/dist/mcp-data/registry/message-actions.json +2 -2
- package/dist/mcp-data/registry/message-bubble.json +2 -2
- package/dist/mcp-data/registry/message-composer.json +2 -2
- package/dist/mcp-data/registry/message-scroller.json +2 -2
- package/dist/mcp-data/registry/message.json +2 -2
- package/dist/mcp-data/registry/mobile-bar-nav.json +2 -2
- package/dist/mcp-data/registry/mobile-header.json +2 -2
- package/dist/mcp-data/registry/mobile-section-switcher.json +2 -2
- package/dist/mcp-data/registry/mobile-sheet-nav.json +2 -2
- package/dist/mcp-data/registry/modal.json +2 -2
- package/dist/mcp-data/registry/navigation-tab-group.json +2 -2
- package/dist/mcp-data/registry/pagination.json +24 -4
- package/dist/mcp-data/registry/panel-nav.json +2 -2
- package/dist/mcp-data/registry/panel-sub-nav.json +2 -2
- package/dist/mcp-data/registry/panel-tool-header.json +2 -2
- package/dist/mcp-data/registry/panel-tool-search.json +2 -2
- package/dist/mcp-data/registry/panel-tools.json +2 -2
- package/dist/mcp-data/registry/paper-texture.json +2 -2
- package/dist/mcp-data/registry/radio-tile.json +2 -2
- package/dist/mcp-data/registry/radio.json +24 -4
- package/dist/mcp-data/registry/registry.json +115 -19
- package/dist/mcp-data/registry/score.json +2 -2
- package/dist/mcp-data/registry/scroll-overlay.json +2 -2
- package/dist/mcp-data/registry/select-toggle.json +2 -2
- package/dist/mcp-data/registry/select.json +2 -2
- package/dist/mcp-data/registry/setting-row-checkbox.json +2 -2
- package/dist/mcp-data/registry/setting-row-radio.json +24 -4
- package/dist/mcp-data/registry/setting-row-toggle.json +25 -5
- package/dist/mcp-data/registry/shell-app.json +5 -4
- package/dist/mcp-data/registry/shell-page.json +2 -2
- package/dist/mcp-data/registry/shell-tools.json +2 -2
- package/dist/mcp-data/registry/skeleton.json +102 -10
- package/dist/mcp-data/registry/slider.json +2 -2
- package/dist/mcp-data/registry/swatch-picker.json +2 -2
- package/dist/mcp-data/registry/switch.json +2 -2
- package/dist/mcp-data/registry/tab-group.json +2 -2
- package/dist/mcp-data/registry/table.json +19 -8
- package/dist/mcp-data/registry/tag.json +2 -2
- package/dist/mcp-data/registry/text.json +2 -2
- package/dist/mcp-data/registry/textarea.json +2 -2
- package/dist/mcp-data/registry/time-picker.json +2 -2
- package/dist/mcp-data/registry/toast.json +2 -2
- package/dist/mcp-data/registry/tooltip-chart.json +2 -2
- package/dist/mcp-data/registry/tooltip.json +2 -2
- package/dist/mcp-data/registry/typing-indicator.json +2 -2
- package/dist/types/components/CardActionCenter/CardActionCenter.d.ts +2 -0
- package/dist/types/components/CardChart/CardChart.d.ts +2 -0
- package/dist/types/components/CardNavigation/CardNavigation.d.ts +2 -0
- package/dist/types/components/CardSetting/CardSetting.d.ts +2 -0
- package/dist/types/components/CardSettingsScope/CardSettingsScope.d.ts +2 -0
- package/dist/types/components/Field/Field.d.ts +3 -0
- package/dist/types/components/InlineBannerSettings/InlineBannerSettings.d.ts +2 -0
- package/dist/types/components/InputDate/InputDate.d.ts +5 -6
- package/dist/types/components/InputTime/InputTime.d.ts +5 -6
- package/dist/types/components/Pagination/Pagination.d.ts +3 -0
- package/dist/types/components/Radio/Radio.d.ts +2 -0
- package/dist/types/components/SettingRowRadio/SettingRowRadio.d.ts +2 -0
- package/dist/types/components/SettingRowToggle/SettingRowToggle.d.ts +2 -0
- package/dist/types/components/Skeleton/Skeleton.d.ts +13 -1
- package/dist/types/components/Skeleton/index.d.ts +1 -1
- package/dist/types/components/Table/Table.d.ts +6 -49
- package/dist/types/components/Table/table-caption-controller.d.ts +54 -0
- package/dist/types/components/Table/table-cell-editor.d.ts +1 -1
- package/dist/types/components/Table/table-editing-controller.d.ts +37 -0
- package/dist/types/components.d.ts +169 -4
- package/dist/types/utils/picker-popup-controller.d.ts +24 -0
- package/dist/types/utils/select-controller.d.ts +1 -0
- package/dist/vue/ds-card-action-center.js +1 -0
- package/dist/vue/ds-card-chart.js +1 -0
- package/dist/vue/ds-card-navigation.js +1 -0
- package/dist/vue/ds-card-setting.js +1 -0
- package/dist/vue/ds-card-settings-scope.js +1 -0
- package/dist/vue/ds-field.js +2 -1
- package/dist/vue/ds-inline-banner-settings.js +2 -1
- package/dist/vue/ds-pagination.js +1 -0
- package/dist/vue/ds-radio.js +1 -0
- package/dist/vue/ds-setting-row-radio.js +2 -1
- package/dist/vue/ds-setting-row-toggle.js +1 -0
- package/dist/vue/ds-skeleton.js +4 -0
- package/package.json +6 -6
- package/dist/components/p-B5rN3slq.js +0 -2
- package/dist/components/p-BT6xQogY.js +0 -2
- package/dist/components/p-BT6xQogY.js.map +0 -1
- package/dist/components/p-Ba-dSshd.js +0 -2
- package/dist/components/p-CEB8RFih.js +0 -2
- package/dist/components/p-CMrHRjjH.js +0 -2
- package/dist/components/p-CMrHRjjH.js.map +0 -1
- package/dist/components/p-CPNA8raE.js +0 -2
- package/dist/components/p-CPNA8raE.js.map +0 -1
- package/dist/components/p-Cnzry0_v.js +0 -2
- package/dist/components/p-Cnzry0_v.js.map +0 -1
- package/dist/components/p-Djkk338n.js +0 -2
- package/dist/components/p-Djkk338n.js.map +0 -1
- package/dist/components/p-hWKa8Jn8.js +0 -2
- package/dist/components/p-hWKa8Jn8.js.map +0 -1
- package/dist/components/p-xCqqM1Rg.js +0 -2
- package/dist/components/p-xCqqM1Rg.js.map +0 -1
- package/dist/types/utils/cartesian-chart-layout.d.ts +0 -13
- package/dist/types/utils/chart-viewport-controller.d.ts +0 -21
- /package/dist/components/{p-6QYDIPd1.js.map → p-3dG9v5Aw.js.map} +0 -0
- /package/dist/components/{p-DwFnt0W0.js.map → p-5PReYMiY.js.map} +0 -0
- /package/dist/components/{p-CzTJAO2J.js.map → p-8fddX3V3.js.map} +0 -0
- /package/dist/components/{p-Cw1ljgW1.js.map → p-9u2WDF0J.js.map} +0 -0
- /package/dist/components/{p-M9pOLcyK.js.map → p-B-ChwMFE.js.map} +0 -0
- /package/dist/components/{p-y2Sdv9M3.js.map → p-BAIYOobl.js.map} +0 -0
- /package/dist/components/{p-DKG26pp5.js.map → p-BIMW5_Z7.js.map} +0 -0
- /package/dist/components/{p-CgYDQSLW.js.map → p-BYo1-6b5.js.map} +0 -0
- /package/dist/components/{p-S5QCVAdH.js.map → p-BZbJkJpG.js.map} +0 -0
- /package/dist/components/{p-D2rASHHq.js.map → p-BcYzHn1E.js.map} +0 -0
- /package/dist/components/{p-0EpjqRWc.js.map → p-BfRAVR40.js.map} +0 -0
- /package/dist/components/{p-BBZz2Dvg.js.map → p-BoWpIl_m.js.map} +0 -0
- /package/dist/components/{p-DixX2_Bd.js.map → p-BpPHCF63.js.map} +0 -0
- /package/dist/components/{p-DfwvHxYi.js.map → p-By_jYvHp.js.map} +0 -0
- /package/dist/components/{p-D4r6oWyQ.js.map → p-C860ilDn.js.map} +0 -0
- /package/dist/components/{p-DGDF4NMV.js.map → p-CEHhx4VQ.js.map} +0 -0
- /package/dist/components/{p-BqIRExej.js.map → p-CL0FpMKo.js.map} +0 -0
- /package/dist/components/{p-CEm0AoDR.js.map → p-CQnjpuMX.js.map} +0 -0
- /package/dist/components/{p-B9Q7fXxW.js.map → p-CUG4EkKn.js.map} +0 -0
- /package/dist/components/{p-D-cZ6cRI.js.map → p-CYmz92EF.js.map} +0 -0
- /package/dist/components/{p-DfzXyVoM.js.map → p-CbP9ASmI.js.map} +0 -0
- /package/dist/components/{p-DvMCOJwc.js.map → p-CbPGO7vl.js.map} +0 -0
- /package/dist/components/{p-DfphSI9S.js.map → p-CdMIA5hz.js.map} +0 -0
- /package/dist/components/{p-Cxk1A7Sx.js.map → p-CeaIWw1Q.js.map} +0 -0
- /package/dist/components/{p-CW-7vLUB.js.map → p-Cfqvxxs2.js.map} +0 -0
- /package/dist/components/{p-CsPqGA8B.js.map → p-CpqLGzv4.js.map} +0 -0
- /package/dist/components/{p-DKg181YU.js.map → p-DFR9hqDU.js.map} +0 -0
- /package/dist/components/{p-CTAF7SkL.js.map → p-DMPn_dt7.js.map} +0 -0
- /package/dist/components/{p-CYRTkP1A.js.map → p-DYruK9cb.js.map} +0 -0
- /package/dist/components/{p-CqfYCn-e.js.map → p-DiUaIJ91.js.map} +0 -0
- /package/dist/components/{p-OFJpWJcN.js.map → p-DimFbKZH.js.map} +0 -0
- /package/dist/components/{p-BkajUPiA.js.map → p-DuhJ49iN.js.map} +0 -0
- /package/dist/components/{p-CqW2eyiF.js.map → p-E0RqkUNq.js.map} +0 -0
- /package/dist/components/{p-D_iZPukF.js.map → p-G6r6yYg8.js.map} +0 -0
- /package/dist/components/{p-87FjWil8.js.map → p-IQdLCfJJ.js.map} +0 -0
- /package/dist/components/{p-CAARHqjE.js.map → p-KTaiJztz.js.map} +0 -0
- /package/dist/components/{p-BM-UYlIS.js.map → p-N-2CZze7.js.map} +0 -0
- /package/dist/components/{p-Ch00yccW.js.map → p-Nx52go85.js.map} +0 -0
- /package/dist/components/{p-CaNMVLhm.js.map → p-WEffoQQD.js.map} +0 -0
- /package/dist/components/{p-DDawngok.js.map → p-XKt6j1UN.js.map} +0 -0
- /package/dist/components/{p-CeXf9-X3.js.map → p-mSCnWLhL.js.map} +0 -0
- /package/dist/components/{p-C8D853vs.js.map → p-nakO4viw.js.map} +0 -0
- /package/dist/components/{p-BC9xYdJD.js.map → p-pkJ3X3s7.js.map} +0 -0
- /package/dist/components/{p-BNnw_O4e.js.map → p-r_e6_0nP.js.map} +0 -0
|
@@ -34,7 +34,8 @@
|
|
|
34
34
|
"The application accepts or rejects change requests by updating the controlled checked value and owns persistence and errors.",
|
|
35
35
|
"Name the enabled setting consistently; the label must not change when the switch is toggled.",
|
|
36
36
|
"Non-emphasis rows without supporting copy use ds-text color secondary (foreground-secondary) on the title. Non-emphasis rows with description keep a primary title.",
|
|
37
|
-
"Supporting copy is text-body-small in every variant."
|
|
37
|
+
"Supporting copy is text-body-small in every variant.",
|
|
38
|
+
"isLoading preserves the copy wrapping and switch footprint, replaces them with skeletons, and prevents value changes."
|
|
38
39
|
],
|
|
39
40
|
"responsiveBehavior": [
|
|
40
41
|
"The copy wraps while the switch keeps its natural size in the trailing column, including at narrow widths."
|
|
@@ -88,6 +89,15 @@
|
|
|
88
89
|
"mutable": false,
|
|
89
90
|
"description": "Prevent changes while the setting is unavailable."
|
|
90
91
|
},
|
|
92
|
+
"isLoading": {
|
|
93
|
+
"type": "boolean",
|
|
94
|
+
"resolvedType": "boolean",
|
|
95
|
+
"attribute": "is-loading",
|
|
96
|
+
"default": "false",
|
|
97
|
+
"required": false,
|
|
98
|
+
"mutable": false,
|
|
99
|
+
"description": "Preserve the real row geometry while replacing copy and switch with skeletons."
|
|
100
|
+
},
|
|
91
101
|
"label": {
|
|
92
102
|
"type": "string",
|
|
93
103
|
"resolvedType": "string",
|
|
@@ -146,6 +156,15 @@
|
|
|
146
156
|
"mutable": false,
|
|
147
157
|
"description": "Prevent changes while the setting is unavailable."
|
|
148
158
|
},
|
|
159
|
+
"isLoading": {
|
|
160
|
+
"type": "boolean",
|
|
161
|
+
"resolvedType": "boolean",
|
|
162
|
+
"attribute": "is-loading",
|
|
163
|
+
"default": "false",
|
|
164
|
+
"required": false,
|
|
165
|
+
"mutable": false,
|
|
166
|
+
"description": "Preserve the real row geometry while replacing copy and switch with skeletons."
|
|
167
|
+
},
|
|
149
168
|
"label": {
|
|
150
169
|
"type": "string",
|
|
151
170
|
"resolvedType": "string",
|
|
@@ -203,8 +222,8 @@
|
|
|
203
222
|
},
|
|
204
223
|
"peerDependencies": {
|
|
205
224
|
"required": [
|
|
206
|
-
"@ds-mo/tokens ^8.0.
|
|
207
|
-
"@ds-mo/icons ^8.1.
|
|
225
|
+
"@ds-mo/tokens ^8.0.1",
|
|
226
|
+
"@ds-mo/icons ^8.1.2"
|
|
208
227
|
],
|
|
209
228
|
"frameworks": "Custom Elements; React 18/19 wrappers; Vue 3 wrappers; Angular 19-22 standalone adapters."
|
|
210
229
|
}
|
|
@@ -215,18 +234,19 @@
|
|
|
215
234
|
"@ds-mo/tokens"
|
|
216
235
|
],
|
|
217
236
|
"registryDependencies": [
|
|
237
|
+
"skeleton",
|
|
218
238
|
"switch",
|
|
219
239
|
"text"
|
|
220
240
|
],
|
|
221
241
|
"files": [
|
|
222
242
|
{
|
|
223
243
|
"path": "src/wc/components/SettingRowToggle/SettingRowToggle.css",
|
|
224
|
-
"content": "@import '../../utils/settings-row.css';\n\n:host {\n display: grid;\n grid-template-columns: minmax(0, 1fr) auto;\n align-items: start;\n gap: var(--dimension-space-200);\n}\n\n.setting-row-toggle__copy {\n display: flex;\n flex-direction: column;\n min-width: 0;\n gap: var(--dimension-space-050);\n overflow-wrap: anywhere;\n -webkit-user-select: none;\n user-select: none;\n}\n",
|
|
244
|
+
"content": "@import '../../utils/settings-row.css';\n\n:host {\n display: grid;\n grid-template-columns: minmax(0, 1fr) auto;\n align-items: start;\n gap: var(--dimension-space-200);\n}\n\n.setting-row-toggle__copy {\n display: flex;\n flex-direction: column;\n min-width: 0;\n gap: var(--dimension-space-050);\n overflow-wrap: anywhere;\n -webkit-user-select: none;\n user-select: none;\n}\n\n.setting-row-toggle__line,\n.setting-row-toggle__control {\n display: grid;\n min-width: 0;\n align-items: center;\n}\n\n.setting-row-toggle__line > *,\n.setting-row-toggle__control > * {\n grid-area: 1 / 1;\n}\n\n:host(.setting-row-toggle--loading) ds-text,\n:host(.setting-row-toggle--loading) ds-switch {\n visibility: hidden;\n}\n\n.setting-row-toggle__control > ds-skeleton {\n height: 100%;\n}\n",
|
|
225
245
|
"type": "registry:ui"
|
|
226
246
|
},
|
|
227
247
|
{
|
|
228
248
|
"path": "src/wc/components/SettingRowToggle/SettingRowToggle.tsx",
|
|
229
|
-
"content": "import { Component, Event, EventEmitter, h, Host, Prop } from '@stencil/core';\nimport { CONTROL_SUPPORTING_TEXT_VARIANT } from '../../utils';\n\nlet settingRowToggleSequence = 0;\n\nexport type SettingRowToggleVariant = 'emphasis' | 'non-emphasis';\n\n/** A labeled binary setting that applies immediately through its application owner. */\n@Component({\n tag: 'ds-setting-row-toggle',\n styleUrl: 'SettingRowToggle.css',\n scoped: true,\n})\nexport class SettingRowToggle {\n /** Name of the enabled setting. */\n @Prop() label!: string;\n /** Supporting copy explaining the setting and its alternative. */\n @Prop() description?: string;\n /** Controlled enabled state. */\n @Prop() checked = false;\n /** Prevent changes while the setting is unavailable. */\n @Prop() disabled = false;\n /** Typography recipe for the setting copy. */\n @Prop() variant: SettingRowToggleVariant = 'emphasis';\n\n /** Requests the next value; the application owns acceptance and persistence. */\n @Event() dsChange!: EventEmitter<boolean>;\n\n private readonly rowId = `ds-setting-row-toggle-${++settingRowToggleSequence}`;\n\n private handleChange = (event: CustomEvent<boolean>) => {\n event.stopPropagation();\n // Keep the composed switch controlled until the owner accepts this request.\n (event.target as HTMLDsSwitchElement).checked = this.checked;\n this.dsChange.emit(event.detail);\n };\n\n render() {\n const hasDescription = Boolean(this.description?.trim());\n const titleColor = this.variant === 'non-emphasis' && !hasDescription ? 'secondary' : 'primary';\n\n return (\n <Host>\n <div class=\"setting-row-toggle__copy\">\n <ds-text\n
|
|
249
|
+
"content": "import { Component, Event, EventEmitter, h, Host, Prop } from '@stencil/core';\nimport { CONTROL_SUPPORTING_TEXT_VARIANT } from '../../utils';\n\nlet settingRowToggleSequence = 0;\n\nexport type SettingRowToggleVariant = 'emphasis' | 'non-emphasis';\n\n/** A labeled binary setting that applies immediately through its application owner. */\n@Component({\n tag: 'ds-setting-row-toggle',\n styleUrl: 'SettingRowToggle.css',\n scoped: true,\n})\nexport class SettingRowToggle {\n /** Name of the enabled setting. */\n @Prop() label!: string;\n /** Supporting copy explaining the setting and its alternative. */\n @Prop() description?: string;\n /** Controlled enabled state. */\n @Prop() checked = false;\n /** Prevent changes while the setting is unavailable. */\n @Prop() disabled = false;\n /** Preserve the real row geometry while replacing copy and switch with skeletons. */\n @Prop() isLoading = false;\n /** Typography recipe for the setting copy. */\n @Prop() variant: SettingRowToggleVariant = 'emphasis';\n\n /** Requests the next value; the application owns acceptance and persistence. */\n @Event() dsChange!: EventEmitter<boolean>;\n\n private readonly rowId = `ds-setting-row-toggle-${++settingRowToggleSequence}`;\n\n private handleChange = (event: CustomEvent<boolean>) => {\n event.stopPropagation();\n // Keep the composed switch controlled until the owner accepts this request.\n (event.target as HTMLDsSwitchElement).checked = this.checked;\n if (!this.isLoading) this.dsChange.emit(event.detail);\n };\n\n render() {\n const hasDescription = Boolean(this.description?.trim());\n const titleColor = this.variant === 'non-emphasis' && !hasDescription ? 'secondary' : 'primary';\n\n return (\n <Host\n aria-busy={this.isLoading ? 'true' : undefined}\n class={{ 'setting-row-toggle--loading': this.isLoading }}\n >\n <div class=\"setting-row-toggle__copy\">\n <div class=\"setting-row-toggle__line\">\n <ds-text\n textId={`${this.rowId}-label`}\n variant=\"text-body-medium\"\n color={titleColor}\n emphasis={this.variant === 'emphasis'}\n >\n {this.label}\n </ds-text>\n {this.isLoading && <ds-skeleton width=\"75%\" />}\n </div>\n {hasDescription && (\n <div class=\"setting-row-toggle__line\">\n <ds-text\n textId={`${this.rowId}-description`}\n variant={CONTROL_SUPPORTING_TEXT_VARIANT.md}\n color=\"secondary\"\n >\n {this.description}\n </ds-text>\n {this.isLoading && (\n <ds-skeleton width=\"95%\" textVariant={CONTROL_SUPPORTING_TEXT_VARIANT.md} />\n )}\n </div>\n )}\n </div>\n <div class=\"setting-row-toggle__control\" inert={this.isLoading}>\n <ds-switch\n checked={this.checked}\n disabled={this.disabled}\n aria-labelledby={`${this.rowId}-label`}\n aria-describedby={hasDescription ? `${this.rowId}-description` : undefined}\n onDsChange={this.handleChange}\n />\n {this.isLoading && <ds-skeleton variant=\"control\" width=\"100%\" rounded={true} />}\n </div>\n </Host>\n );\n }\n}\n",
|
|
230
250
|
"type": "registry:ui"
|
|
231
251
|
}
|
|
232
252
|
]
|
|
@@ -105,7 +105,8 @@
|
|
|
105
105
|
"Managed page-header capacity follows only the fixed shell breakpoint: roomy on desktop and compact on tablet. Opening PanelTools does not compact or constrain BarTitle.",
|
|
106
106
|
"Mobile keeps at most the first eligible ordered icon command visible and moves labeled buttons, menu choices, split actions, and explicit overflow commands into one shell-owned text-only page-actions menu.",
|
|
107
107
|
"The bottom bar remains visible at all route and tool depths in the foundation release.",
|
|
108
|
-
"A mobile shell banner paints a fixed top edge with its resolved background through exit motion. Color variants and theme changes follow the banner automatically; native Safari status-area tint remains a device-verified browser behavior."
|
|
108
|
+
"A mobile shell banner paints a fixed top edge with its resolved background through exit motion. Color variants and theme changes follow the banner automatically; native Safari status-area tint remains a device-verified browser behavior.",
|
|
109
|
+
"The routed content lane owns a size-query container. Full-height page compositions consume --ds-shell-content-block-size and subtract their page-local header; banners and desktop or mobile navigation resize that lane automatically."
|
|
109
110
|
],
|
|
110
111
|
"frameworkCaveats": {
|
|
111
112
|
"customElements": [
|
|
@@ -691,8 +692,8 @@
|
|
|
691
692
|
"complexPropertyNote": "Assign these non-primitive values as JavaScript properties: navigation, pageChrome, paperTexture, tools.",
|
|
692
693
|
"peerDependencies": {
|
|
693
694
|
"required": [
|
|
694
|
-
"@ds-mo/tokens ^8.0.
|
|
695
|
-
"@ds-mo/icons ^8.1.
|
|
695
|
+
"@ds-mo/tokens ^8.0.1",
|
|
696
|
+
"@ds-mo/icons ^8.1.2"
|
|
696
697
|
],
|
|
697
698
|
"frameworks": "Custom Elements; React 18/19 wrappers; Vue 3 wrappers; Angular 19-22 standalone adapters."
|
|
698
699
|
}
|
|
@@ -721,7 +722,7 @@
|
|
|
721
722
|
"files": [
|
|
722
723
|
{
|
|
723
724
|
"path": "src/wc/components/ShellApp/ShellApp.css",
|
|
724
|
-
"content": ":host {\n display: flex;\n flex-direction: column;\n height: 100%;\n min-height: 0;\n box-sizing: border-box;\n overflow: hidden;\n overscroll-behavior: none;\n font-family: var(--typography-font-family-ui, system-ui);\n --ds-shell-panel-tools-width: var(--dimension-panel-width-xs);\n --ds-shell-gradient-context: flat;\n}\n\n:host {\n /* Shared solid Chrome base; gradient and paper layers composite above it. */\n --_shell-chrome-bg: var(--color-chrome-background-theme);\n}\n\n:host(.shell-app--gradient) {\n --ds-shell-gradient-context: gradient;\n}\n\n.shell-app__row {\n display: flex;\n flex: 1 1 0;\n min-height: 0;\n position: relative;\n}\n\n.shell-app__banner {\n --_shell-banner-edge-display: none;\n flex: 0 0 auto;\n min-width: 0;\n position: relative;\n z-index: 5;\n}\n\n.shell-app__banner ::slotted(ds-banner) {\n display: grid;\n width: 100%;\n}\n\n/*\n * One chrome layer behind the shell row. Wash uses background-attachment: fixed\n * so the pattern is locked to the viewport — panel/tools collapse only changes the\n * transparent window, not the pattern phase. JS sets wash background-size from\n * readShellViewportDimensions(), not the shell element box.\n */\n.shell-app__chrome {\n position: absolute;\n inset: 0;\n pointer-events: none;\n z-index: 0;\n overflow: hidden;\n background-color: var(--_shell-chrome-bg);\n}\n\n:host(.shell-app--gradient) .shell-app__chrome::before {\n content: '';\n position: absolute;\n inset: 0;\n pointer-events: none;\n background-position: 0 0;\n background-attachment: fixed;\n z-index: 1;\n opacity: var(--ds-shell-gradient-opacity, 1);\n background-image: var(--ds-shell-gradient-image, none);\n background-size: var(--ds-shell-gradient-size, auto);\n background-repeat: no-repeat;\n}\n\n.shell-app__paper-texture {\n z-index: 2;\n}\n\n.shell-app__panel {\n flex: 0 0 auto;\n min-height: 0;\n height: 100%;\n position: relative;\n /* Above main so resize handle line can paint over the workspace edge */\n z-index: 2;\n}\n\n.shell-app__panel ::slotted(ds-panel-nav) {\n display: block;\n height: 100%;\n}\n\n.shell-app__panel > ds-panel-nav {\n display: block;\n height: 100%;\n}\n\n.shell-app__main {\n flex: 1 1 auto;\n min-width: 0;\n min-height: 0;\n display: grid;\n grid-template-columns: minmax(0, 1fr) auto;\n grid-template-rows: auto minmax(0, 1fr);\n grid-template-areas:\n 'bar tools'\n 'content tools';\n position: relative;\n z-index: 1;\n}\n\n.shell-app__mobile-sheet-nav,\n.shell-app__mobile-bar-nav {\n display: none;\n}\n\n.shell-app__bar {\n grid-area: bar;\n flex: 0 0 auto;\n min-width: 0;\n}\n\n.shell-app__bar ::slotted(ds-bar-nav) {\n display: block;\n}\n\n.shell-app__bar ::slotted(ds-bar-title),\n.shell-app__bar ::slotted(ds-bar-page-title) {\n display: block;\n}\n\n.shell-app__bar > ds-bar-nav {\n display: block;\n}\n\n.shell-app__bar > ds-bar-title,\n.shell-app__bar > ds-bar-page-title {\n display: block;\n}\n\n.shell-app__content {\n grid-area: content;\n flex: 1 1 auto;\n min-width: 0;\n min-height: 0;\n overflow: auto;\n overscroll-behavior: none;\n /* Limit reflow to the page column — not on __main (breaks tools flex shrink). */\n contain: layout;\n}\n\n/* Layout scroller, not a control: keep it keyboard-focusable without a page-sized ring. */\n.shell-app__content:focus,\n.shell-app__content:focus-visible {\n outline: none;\n}\n\n/* Opaque page surface — masks the fixed chrome layer in the content column. */\n.shell-app__content {\n position: relative;\n z-index: 1;\n background-color: var(--color-background-primary);\n}\n\n.shell-app__tools {\n grid-area: tools;\n flex: 0 0 auto;\n min-width: 0;\n min-height: 0;\n height: 100%;\n display: flex;\n position: relative;\n z-index: 0;\n overflow: hidden;\n /* Chrome surface context inherited by PanelTools and its slotted products. */\n --_shell-tools-border: var(--color-chrome-border-tertiary);\n --_shell-tools-border-secondary: var(--color-chrome-border-secondary);\n --_shell-tools-divider: var(--color-chrome-divider);\n --_shell-tools-background-theme: var(--color-chrome-background-theme);\n --_shell-tools-fg-primary: var(--color-chrome-foreground-primary);\n --_shell-tools-fg-secondary: var(--color-chrome-foreground-secondary);\n}\n\n.shell-app__tools ::slotted(ds-panel-tools) {\n display: block;\n height: 100%;\n min-height: 0;\n}\n\n.shell-app__tools ::slotted(ds-shell-tools) {\n display: block;\n height: 100%;\n min-height: 0;\n}\n\n.shell-app__tools > ds-shell-tools {\n display: block;\n height: 100%;\n min-height: 0;\n}\n\n.shell-app__tool-slot-proxy {\n display: block;\n width: 100%;\n height: 100%;\n min-width: 0;\n min-height: 0;\n}\n\n.shell-app__content > ds-shell-page {\n display: block;\n min-height: 100%;\n}\n\n:host(.shell-app--tools-fullscreen) .shell-app__row {\n /* Anchor fixed fullscreen tools to the available stage below the banner. */\n contain: layout;\n}\n\n:host(.shell-app--tools-fullscreen) .shell-app__main {\n /* Above panel chrome while remaining below the global banner layer. */\n z-index: 3;\n}\n\n:host(.shell-app--tools-fullscreen) .shell-app__tools {\n /* Fullscreen tools must outrank retained page-owned overlays in content. */\n z-index: 2;\n}\n\n:host(.shell-app--tools-fullscreen) .shell-app__panel,\n:host(.shell-app--tools-fullscreen) .shell-app__bar,\n:host(.shell-app--tools-fullscreen) .shell-app__content {\n visibility: hidden;\n /* Descendants can override visibility, but must not paint through tools. */\n content-visibility: hidden;\n}\n\n:host(.shell-app--mobile) {\n --_shell-chrome-bg: var(--color-background-primary);\n padding-block-start: env(safe-area-inset-top);\n background: var(--ds-shell-safe-area-background, var(--color-background-primary));\n}\n\n:host(.shell-app--mobile) .shell-app__banner {\n --_shell-banner-edge-display: block;\n}\n\n/* Refresh the Mobile WebKit stage layer without remounting app content. */\n:host(.shell-app--mobile.shell-app--foreground-refresh) .shell-app__main {\n transform: translateZ(0);\n}\n\n:host(.shell-app--mobile) .shell-app__chrome,\n:host(.shell-app--mobile) .shell-app__panel,\n:host(.shell-app--mobile) .shell-app__bar {\n display: none;\n}\n\n:host(.shell-app--mobile) .shell-app__main {\n width: 100%;\n box-sizing: border-box;\n grid-template-columns: minmax(0, 1fr);\n grid-template-rows: minmax(0, 1fr) auto;\n grid-template-areas:\n 'stage'\n 'mobile-bar-nav';\n background: var(--color-background-primary);\n}\n\n:host(.shell-app--mobile) .shell-app__content,\n:host(.shell-app--mobile) .shell-app__tools,\n:host(.shell-app--mobile) .shell-app__mobile-sheet-nav {\n grid-area: stage;\n min-width: 0;\n min-height: 0;\n height: 100%;\n position: relative;\n}\n\n:host(.shell-app--mobile) .shell-app__content {\n z-index: 1;\n overflow: auto;\n}\n\n:host(.shell-app--mobile) .shell-app__tools {\n z-index: 2;\n width: 100%;\n overflow: hidden;\n background: var(--color-background-primary);\n}\n\n:host(.shell-app--mobile) .shell-app__mobile-sheet-nav {\n display: block;\n z-index: 3;\n overflow: hidden;\n background: var(--color-background-primary);\n}\n\n:host(.shell-app--mobile) .shell-app__mobile-bar-nav {\n grid-area: mobile-bar-nav;\n display: block;\n min-width: 0;\n position: relative;\n z-index: 4;\n}\n\n:host(.shell-app--mobile) .shell-app__tools[hidden],\n:host(.shell-app--mobile) .shell-app__mobile-sheet-nav[hidden],\n:host(.shell-app--mobile) .shell-app__mobile-bar-nav[hidden] {\n display: none;\n}\n\n:host(.shell-app--mobile-tool-active) .shell-app__content,\n:host(.shell-app--mobile-sheet-nav-open) .shell-app__content,\n:host(.shell-app--mobile-sheet-nav-open) .shell-app__tools {\n visibility: hidden;\n}\n",
|
|
725
|
+
"content": ":host {\n display: flex;\n flex-direction: column;\n height: 100%;\n min-height: 0;\n box-sizing: border-box;\n overflow: hidden;\n overscroll-behavior: none;\n font-family: var(--typography-font-family-ui, system-ui);\n --ds-shell-panel-tools-width: var(--dimension-panel-width-xs);\n --ds-shell-gradient-context: flat;\n}\n\n:host {\n /* Shared solid Chrome base; gradient and paper layers composite above it. */\n --_shell-chrome-bg: var(--color-chrome-background-theme);\n}\n\n:host(.shell-app--gradient) {\n --ds-shell-gradient-context: gradient;\n}\n\n.shell-app__row {\n display: flex;\n flex: 1 1 0;\n min-height: 0;\n position: relative;\n}\n\n.shell-app__banner {\n --_shell-banner-edge-display: none;\n flex: 0 0 auto;\n min-width: 0;\n position: relative;\n z-index: 5;\n}\n\n.shell-app__banner ::slotted(ds-banner) {\n display: grid;\n width: 100%;\n}\n\n/*\n * One chrome layer behind the shell row. Wash uses background-attachment: fixed\n * so the pattern is locked to the viewport — panel/tools collapse only changes the\n * transparent window, not the pattern phase. JS sets wash background-size from\n * readShellViewportDimensions(), not the shell element box.\n */\n.shell-app__chrome {\n position: absolute;\n inset: 0;\n pointer-events: none;\n z-index: 0;\n overflow: hidden;\n background-color: var(--_shell-chrome-bg);\n}\n\n:host(.shell-app--gradient) .shell-app__chrome::before {\n content: '';\n position: absolute;\n inset: 0;\n pointer-events: none;\n background-position: 0 0;\n background-attachment: fixed;\n z-index: 1;\n opacity: var(--ds-shell-gradient-opacity, 1);\n background-image: var(--ds-shell-gradient-image, none);\n background-size: var(--ds-shell-gradient-size, auto);\n background-repeat: no-repeat;\n}\n\n.shell-app__paper-texture {\n z-index: 2;\n}\n\n.shell-app__panel {\n flex: 0 0 auto;\n min-height: 0;\n height: 100%;\n position: relative;\n /* Above main so resize handle line can paint over the workspace edge */\n z-index: 2;\n}\n\n.shell-app__panel ::slotted(ds-panel-nav) {\n display: block;\n height: 100%;\n}\n\n.shell-app__panel > ds-panel-nav {\n display: block;\n height: 100%;\n}\n\n.shell-app__main {\n flex: 1 1 auto;\n min-width: 0;\n min-height: 0;\n display: grid;\n grid-template-columns: minmax(0, 1fr) auto;\n grid-template-rows: auto minmax(0, 1fr);\n grid-template-areas:\n 'bar tools'\n 'content tools';\n position: relative;\n z-index: 1;\n}\n\n.shell-app__mobile-sheet-nav,\n.shell-app__mobile-bar-nav {\n display: none;\n}\n\n.shell-app__bar {\n grid-area: bar;\n flex: 0 0 auto;\n min-width: 0;\n}\n\n.shell-app__bar ::slotted(ds-bar-nav) {\n display: block;\n}\n\n.shell-app__bar ::slotted(ds-bar-title),\n.shell-app__bar ::slotted(ds-bar-page-title) {\n display: block;\n}\n\n.shell-app__bar > ds-bar-nav {\n display: block;\n}\n\n.shell-app__bar > ds-bar-title,\n.shell-app__bar > ds-bar-page-title {\n display: block;\n}\n\n.shell-app__content {\n grid-area: content;\n /* Full-height pages use this lane, including banner and mobile navigation reflow. */\n container-type: size;\n container-name: ds-shell-content;\n flex: 1 1 auto;\n min-width: 0;\n min-height: 0;\n overflow: auto;\n overscroll-behavior: none;\n /* Limit reflow to the page column — not on __main (breaks tools flex shrink). */\n contain: layout;\n}\n\n/* Layout scroller, not a control: keep it keyboard-focusable without a page-sized ring. */\n.shell-app__content:focus,\n.shell-app__content:focus-visible {\n outline: none;\n}\n\n/* Opaque page surface — masks the fixed chrome layer in the content column. */\n.shell-app__content {\n position: relative;\n z-index: 1;\n background-color: var(--color-background-primary);\n}\n\n.shell-app__tools {\n grid-area: tools;\n flex: 0 0 auto;\n min-width: 0;\n min-height: 0;\n height: 100%;\n display: flex;\n position: relative;\n z-index: 0;\n overflow: hidden;\n /* Chrome surface context inherited by PanelTools and its slotted products. */\n --_shell-tools-border: var(--color-chrome-border-tertiary);\n --_shell-tools-border-secondary: var(--color-chrome-border-secondary);\n --_shell-tools-divider: var(--color-chrome-divider);\n --_shell-tools-background-theme: var(--color-chrome-background-theme);\n --_shell-tools-fg-primary: var(--color-chrome-foreground-primary);\n --_shell-tools-fg-secondary: var(--color-chrome-foreground-secondary);\n}\n\n.shell-app__tools ::slotted(ds-panel-tools) {\n display: block;\n height: 100%;\n min-height: 0;\n}\n\n.shell-app__tools ::slotted(ds-shell-tools) {\n display: block;\n height: 100%;\n min-height: 0;\n}\n\n.shell-app__tools > ds-shell-tools {\n display: block;\n height: 100%;\n min-height: 0;\n}\n\n.shell-app__tool-slot-proxy {\n display: block;\n width: 100%;\n height: 100%;\n min-width: 0;\n min-height: 0;\n}\n\n.shell-app__content > ds-shell-page {\n --ds-shell-content-block-size: 100cqh;\n display: block;\n min-height: 100%;\n}\n\n:host(.shell-app--tools-fullscreen) .shell-app__row {\n /* Anchor fixed fullscreen tools to the available stage below the banner. */\n contain: layout;\n}\n\n:host(.shell-app--tools-fullscreen) .shell-app__main {\n /* Above panel chrome while remaining below the global banner layer. */\n z-index: 3;\n}\n\n:host(.shell-app--tools-fullscreen) .shell-app__tools {\n /* Fullscreen tools must outrank retained page-owned overlays in content. */\n z-index: 2;\n}\n\n:host(.shell-app--tools-fullscreen) .shell-app__panel,\n:host(.shell-app--tools-fullscreen) .shell-app__bar,\n:host(.shell-app--tools-fullscreen) .shell-app__content {\n visibility: hidden;\n /* Descendants can override visibility, but must not paint through tools. */\n content-visibility: hidden;\n}\n\n:host(.shell-app--mobile) {\n --_shell-chrome-bg: var(--color-background-primary);\n padding-block-start: env(safe-area-inset-top);\n background: var(--ds-shell-safe-area-background, var(--color-background-primary));\n}\n\n:host(.shell-app--mobile) .shell-app__banner {\n --_shell-banner-edge-display: block;\n}\n\n/* Refresh the Mobile WebKit stage layer without remounting app content. */\n:host(.shell-app--mobile.shell-app--foreground-refresh) .shell-app__main {\n transform: translateZ(0);\n}\n\n:host(.shell-app--mobile) .shell-app__chrome,\n:host(.shell-app--mobile) .shell-app__panel,\n:host(.shell-app--mobile) .shell-app__bar {\n display: none;\n}\n\n:host(.shell-app--mobile) .shell-app__main {\n width: 100%;\n box-sizing: border-box;\n grid-template-columns: minmax(0, 1fr);\n grid-template-rows: minmax(0, 1fr) auto;\n grid-template-areas:\n 'stage'\n 'mobile-bar-nav';\n background: var(--color-background-primary);\n}\n\n:host(.shell-app--mobile) .shell-app__content,\n:host(.shell-app--mobile) .shell-app__tools,\n:host(.shell-app--mobile) .shell-app__mobile-sheet-nav {\n grid-area: stage;\n min-width: 0;\n min-height: 0;\n height: 100%;\n position: relative;\n}\n\n:host(.shell-app--mobile) .shell-app__content {\n z-index: 1;\n overflow: auto;\n}\n\n:host(.shell-app--mobile) .shell-app__tools {\n z-index: 2;\n width: 100%;\n overflow: hidden;\n background: var(--color-background-primary);\n}\n\n:host(.shell-app--mobile) .shell-app__mobile-sheet-nav {\n display: block;\n z-index: 3;\n overflow: hidden;\n background: var(--color-background-primary);\n}\n\n:host(.shell-app--mobile) .shell-app__mobile-bar-nav {\n grid-area: mobile-bar-nav;\n display: block;\n min-width: 0;\n position: relative;\n z-index: 4;\n}\n\n:host(.shell-app--mobile) .shell-app__tools[hidden],\n:host(.shell-app--mobile) .shell-app__mobile-sheet-nav[hidden],\n:host(.shell-app--mobile) .shell-app__mobile-bar-nav[hidden] {\n display: none;\n}\n\n:host(.shell-app--mobile-tool-active) .shell-app__content,\n:host(.shell-app--mobile-sheet-nav-open) .shell-app__content,\n:host(.shell-app--mobile-sheet-nav-open) .shell-app__tools {\n visibility: hidden;\n}\n",
|
|
725
726
|
"type": "registry:ui"
|
|
726
727
|
},
|
|
727
728
|
{
|
|
@@ -332,8 +332,8 @@
|
|
|
332
332
|
},
|
|
333
333
|
"peerDependencies": {
|
|
334
334
|
"required": [
|
|
335
|
-
"@ds-mo/tokens ^8.0.
|
|
336
|
-
"@ds-mo/icons ^8.1.
|
|
335
|
+
"@ds-mo/tokens ^8.0.1",
|
|
336
|
+
"@ds-mo/icons ^8.1.2"
|
|
337
337
|
],
|
|
338
338
|
"frameworks": "Custom Elements; React 18/19 wrappers; Vue 3 wrappers; Angular 19-22 standalone adapters."
|
|
339
339
|
}
|
|
@@ -457,8 +457,8 @@
|
|
|
457
457
|
"complexPropertyNote": "Assign these non-primitive values as JavaScript properties: accessories, headers, items.",
|
|
458
458
|
"peerDependencies": {
|
|
459
459
|
"required": [
|
|
460
|
-
"@ds-mo/tokens ^8.0.
|
|
461
|
-
"@ds-mo/icons ^8.1.
|
|
460
|
+
"@ds-mo/tokens ^8.0.1",
|
|
461
|
+
"@ds-mo/icons ^8.1.2"
|
|
462
462
|
],
|
|
463
463
|
"frameworks": "Custom Elements; React 18/19 wrappers; Vue 3 wrappers; Angular 19-22 standalone adapters."
|
|
464
464
|
}
|
|
@@ -59,7 +59,9 @@
|
|
|
59
59
|
"Shimmer is on by default and may be disabled for a static placeholder. Reduced motion always produces the static final shape.",
|
|
60
60
|
"Rounded is an optional visual treatment for icon and control atoms rather than a semantic state.",
|
|
61
61
|
"Omitted background is for primary and secondary surfaces. Explicit faint documents a faint parent while using the same standard base and shimmer tokens; other contexts use matching surface tokens.",
|
|
62
|
-
"The owner decides whether to delay initial visibility and when to replace the complete composition."
|
|
62
|
+
"The owner decides whether to delay initial visibility and when to replace the complete composition.",
|
|
63
|
+
"preserveLayout uses projected text or a control as the hidden, inert size source, retaining wrapping and responsive dimensions; set isLoading false to reveal that same mounted content. Use one atom per text or control, not a whole page.",
|
|
64
|
+
"Control appearance mirrors the pending control: filled masks the entire container; outlined retains its border with icon or text atoms; borderless masks only those contents. Set controlContent to match the control anatomy and preserveLayout to retain its exact footprint."
|
|
63
65
|
],
|
|
64
66
|
"responsiveBehavior": [
|
|
65
67
|
"The owning layout changes placeholder count, width, visibility, and arrangement to match its real responsive content.",
|
|
@@ -103,7 +105,11 @@
|
|
|
103
105
|
"textVariant",
|
|
104
106
|
"iconSize",
|
|
105
107
|
"controlSize",
|
|
106
|
-
"rounded"
|
|
108
|
+
"rounded",
|
|
109
|
+
"preserveLayout",
|
|
110
|
+
"isLoading",
|
|
111
|
+
"controlAppearance",
|
|
112
|
+
"controlContent"
|
|
107
113
|
]
|
|
108
114
|
},
|
|
109
115
|
{
|
|
@@ -116,7 +122,9 @@
|
|
|
116
122
|
"reason": "The component owns its surface and interaction treatment; use its semantic presentation props or compose an application-owned surrounding surface.",
|
|
117
123
|
"props": [
|
|
118
124
|
"background",
|
|
119
|
-
"variant"
|
|
125
|
+
"variant",
|
|
126
|
+
"controlAppearance",
|
|
127
|
+
"controlContent"
|
|
120
128
|
]
|
|
121
129
|
}
|
|
122
130
|
],
|
|
@@ -133,6 +141,24 @@
|
|
|
133
141
|
"mutable": false,
|
|
134
142
|
"description": "Actual parent surface context. Omit on primary and secondary surfaces."
|
|
135
143
|
},
|
|
144
|
+
"controlAppearance": {
|
|
145
|
+
"type": "SkeletonControlAppearance",
|
|
146
|
+
"resolvedType": "\"borderless\" | \"filled\" | \"outlined\"",
|
|
147
|
+
"attribute": "control-appearance",
|
|
148
|
+
"default": "'filled'",
|
|
149
|
+
"required": false,
|
|
150
|
+
"mutable": false,
|
|
151
|
+
"description": "Filled controls replace the entire shape; other appearances retain the frame and mask its contents."
|
|
152
|
+
},
|
|
153
|
+
"controlContent": {
|
|
154
|
+
"type": "SkeletonControlContent",
|
|
155
|
+
"resolvedType": "\"icon\" | \"icon-label\" | \"icon-label-icon\" | \"label\" | \"label-icon\"",
|
|
156
|
+
"attribute": "control-content",
|
|
157
|
+
"default": "'label'",
|
|
158
|
+
"required": false,
|
|
159
|
+
"mutable": false,
|
|
160
|
+
"description": "Content anatomy for outlined and borderless control placeholders."
|
|
161
|
+
},
|
|
136
162
|
"controlSize": {
|
|
137
163
|
"type": "ControlSize",
|
|
138
164
|
"resolvedType": "\"lg\" | \"md\" | \"sm\" | \"xs\"",
|
|
@@ -151,6 +177,24 @@
|
|
|
151
177
|
"mutable": false,
|
|
152
178
|
"description": "Iconography token whose square canvas defines the icon canvas."
|
|
153
179
|
},
|
|
180
|
+
"isLoading": {
|
|
181
|
+
"type": "boolean",
|
|
182
|
+
"resolvedType": "boolean",
|
|
183
|
+
"attribute": "is-loading",
|
|
184
|
+
"default": "true",
|
|
185
|
+
"required": false,
|
|
186
|
+
"mutable": false,
|
|
187
|
+
"description": "With preserveLayout, reveal the same projected content when loading completes."
|
|
188
|
+
},
|
|
189
|
+
"preserveLayout": {
|
|
190
|
+
"type": "boolean",
|
|
191
|
+
"resolvedType": "boolean",
|
|
192
|
+
"attribute": "preserve-layout",
|
|
193
|
+
"default": "false",
|
|
194
|
+
"required": false,
|
|
195
|
+
"mutable": false,
|
|
196
|
+
"description": "Derive geometry from a projected control or text instead of estimating its footprint."
|
|
197
|
+
},
|
|
154
198
|
"rounded": {
|
|
155
199
|
"type": "boolean",
|
|
156
200
|
"resolvedType": "boolean",
|
|
@@ -197,7 +241,12 @@
|
|
|
197
241
|
},
|
|
198
242
|
"events": [],
|
|
199
243
|
"methods": [],
|
|
200
|
-
"slots": [
|
|
244
|
+
"slots": [
|
|
245
|
+
{
|
|
246
|
+
"name": "",
|
|
247
|
+
"description": "Real text or a control whose footprint is retained with preserveLayout."
|
|
248
|
+
}
|
|
249
|
+
]
|
|
201
250
|
},
|
|
202
251
|
"props": {
|
|
203
252
|
"background": {
|
|
@@ -208,6 +257,24 @@
|
|
|
208
257
|
"mutable": false,
|
|
209
258
|
"description": "Actual parent surface context. Omit on primary and secondary surfaces."
|
|
210
259
|
},
|
|
260
|
+
"controlAppearance": {
|
|
261
|
+
"type": "SkeletonControlAppearance",
|
|
262
|
+
"resolvedType": "\"borderless\" | \"filled\" | \"outlined\"",
|
|
263
|
+
"attribute": "control-appearance",
|
|
264
|
+
"default": "'filled'",
|
|
265
|
+
"required": false,
|
|
266
|
+
"mutable": false,
|
|
267
|
+
"description": "Filled controls replace the entire shape; other appearances retain the frame and mask its contents."
|
|
268
|
+
},
|
|
269
|
+
"controlContent": {
|
|
270
|
+
"type": "SkeletonControlContent",
|
|
271
|
+
"resolvedType": "\"icon\" | \"icon-label\" | \"icon-label-icon\" | \"label\" | \"label-icon\"",
|
|
272
|
+
"attribute": "control-content",
|
|
273
|
+
"default": "'label'",
|
|
274
|
+
"required": false,
|
|
275
|
+
"mutable": false,
|
|
276
|
+
"description": "Content anatomy for outlined and borderless control placeholders."
|
|
277
|
+
},
|
|
211
278
|
"controlSize": {
|
|
212
279
|
"type": "ControlSize",
|
|
213
280
|
"resolvedType": "\"lg\" | \"md\" | \"sm\" | \"xs\"",
|
|
@@ -226,6 +293,24 @@
|
|
|
226
293
|
"mutable": false,
|
|
227
294
|
"description": "Iconography token whose square canvas defines the icon canvas."
|
|
228
295
|
},
|
|
296
|
+
"isLoading": {
|
|
297
|
+
"type": "boolean",
|
|
298
|
+
"resolvedType": "boolean",
|
|
299
|
+
"attribute": "is-loading",
|
|
300
|
+
"default": "true",
|
|
301
|
+
"required": false,
|
|
302
|
+
"mutable": false,
|
|
303
|
+
"description": "With preserveLayout, reveal the same projected content when loading completes."
|
|
304
|
+
},
|
|
305
|
+
"preserveLayout": {
|
|
306
|
+
"type": "boolean",
|
|
307
|
+
"resolvedType": "boolean",
|
|
308
|
+
"attribute": "preserve-layout",
|
|
309
|
+
"default": "false",
|
|
310
|
+
"required": false,
|
|
311
|
+
"mutable": false,
|
|
312
|
+
"description": "Derive geometry from a projected control or text instead of estimating its footprint."
|
|
313
|
+
},
|
|
229
314
|
"rounded": {
|
|
230
315
|
"type": "boolean",
|
|
231
316
|
"resolvedType": "boolean",
|
|
@@ -272,7 +357,12 @@
|
|
|
272
357
|
},
|
|
273
358
|
"events": [],
|
|
274
359
|
"methods": [],
|
|
275
|
-
"slots": [
|
|
360
|
+
"slots": [
|
|
361
|
+
{
|
|
362
|
+
"name": "",
|
|
363
|
+
"description": "Real text or a control whose footprint is retained with preserveLayout."
|
|
364
|
+
}
|
|
365
|
+
],
|
|
276
366
|
"exports": {
|
|
277
367
|
"customElement": "ds-skeleton",
|
|
278
368
|
"react": "DsSkeleton",
|
|
@@ -300,8 +390,8 @@
|
|
|
300
390
|
},
|
|
301
391
|
"peerDependencies": {
|
|
302
392
|
"required": [
|
|
303
|
-
"@ds-mo/tokens ^8.0.
|
|
304
|
-
"@ds-mo/icons ^8.1.
|
|
393
|
+
"@ds-mo/tokens ^8.0.1",
|
|
394
|
+
"@ds-mo/icons ^8.1.2"
|
|
305
395
|
],
|
|
306
396
|
"frameworks": "Custom Elements; React 18/19 wrappers; Vue 3 wrappers; Angular 19-22 standalone adapters."
|
|
307
397
|
}
|
|
@@ -311,16 +401,18 @@
|
|
|
311
401
|
"@ds-mo/ui",
|
|
312
402
|
"@ds-mo/tokens"
|
|
313
403
|
],
|
|
314
|
-
"registryDependencies": [
|
|
404
|
+
"registryDependencies": [
|
|
405
|
+
"skeleton"
|
|
406
|
+
],
|
|
315
407
|
"files": [
|
|
316
408
|
{
|
|
317
409
|
"path": "src/wc/components/Skeleton/Skeleton.css",
|
|
318
|
-
"content": "@import '../../utils/radius.css';\n@import '../../utils/control-density.css';\n@import '../../utils/shimmer.css';\n\n:host {\n display: inline-flex;\n align-items: center;\n justify-content: center;\n box-sizing: border-box;\n min-width: 0;\n vertical-align: middle;\n --ds-skeleton-base: var(--color-foreground-quaternary);\n --ds-shimmer: var(--color-shimmer-shimmer);\n}\n\n.skeleton__shape {\n --ds-shimmer-surface-base: var(--ds-skeleton-base);\n\n display: block;\n width: 100%;\n height: 100%;\n flex: 0 0 auto;\n background-color: var(--ds-skeleton-base);\n border-radius: var(--dimension-radius-025);\n}\n\n/* ── Background context ────────────────────────────────────────────────── */\n\n:host(.skeleton--background-medium) {\n --ds-skeleton-base: var(--color-foreground-on-medium-background-quaternary);\n --ds-shimmer: var(--color-shimmer-shimmer-on-medium-background);\n}\n\n:host(.skeleton--background-bold) {\n --ds-skeleton-base: var(--color-foreground-on-bold-background-quaternary);\n --ds-shimmer: var(--color-shimmer-shimmer-on-bold-background);\n}\n\n:host(.skeleton--background-strong) {\n --ds-skeleton-base: var(--color-foreground-on-strong-background-quaternary);\n --ds-shimmer: var(--color-shimmer-shimmer-on-strong-background);\n}\n\n:host(.skeleton--background-translucent) {\n --ds-skeleton-base: var(--color-translucent-foreground-quaternary);\n --ds-shimmer: var(--color-translucent-shimmer);\n}\n\n:host(.skeleton--background-inverted) {\n --ds-skeleton-base: var(--color-inverted-foreground-quaternary);\n --ds-shimmer: var(--color-inverted-shimmer);\n}\n\n:host(.skeleton--background-media) {\n --ds-skeleton-base: var(--color-media-foreground-quaternary);\n --ds-shimmer: var(--color-media-shimmer);\n}\n\n:host(.skeleton--background-always-dark) {\n --ds-skeleton-base: var(--color-always-dark-foreground-quaternary);\n --ds-shimmer: var(--color-always-dark-shimmer);\n}\n\n:host(.skeleton--background-navigation) {\n --ds-skeleton-base: var(--color-navigation-foreground-quaternary);\n --ds-shimmer: var(--color-navigation-shimmer);\n}\n\n/* ── Text ──────────────────────────────────────────────────────────────── */\n\n:host(.skeleton--text) {\n width: 100%;\n height: var(--ds-skeleton-canvas-size);\n padding-block: 0;\n}\n\n:host(.skeleton--text) .skeleton__shape {\n height: 75%;\n}\n\n:host(.skeleton--text-text-display-medium) {\n --ds-skeleton-canvas-size: var(--typography-lineheight-3xl);\n}\n:host(.skeleton--text-text-display-small) {\n --ds-skeleton-canvas-size: var(--typography-lineheight-2xl);\n}\n:host(.skeleton--text-text-title-large) {\n --ds-skeleton-canvas-size: var(--typography-lineheight-xl);\n}\n:host(.skeleton--text-text-title-medium),\n:host(.skeleton--text-text-body-large) {\n --ds-skeleton-canvas-size: var(--typography-lineheight-lg);\n}\n:host(.skeleton--text-text-title-small),\n:host(.skeleton--text-text-body-medium) {\n --ds-skeleton-canvas-size: var(--typography-lineheight-md);\n}\n:host(.skeleton--text-text-body-small) {\n --ds-skeleton-canvas-size: var(--typography-lineheight-sm);\n}\n:host(.skeleton--text-text-caption) {\n --ds-skeleton-canvas-size: var(--typography-lineheight-xs);\n}\n\n/* ── Icon ──────────────────────────────────────────────────────────────── */\n\n:host(.skeleton--icon) {\n width: var(--ds-skeleton-canvas-size);\n height: var(--ds-skeleton-canvas-size);\n padding: 0;\n}\n\n:host(.skeleton--icon) .skeleton__shape {\n width: 75%;\n height: 75%;\n}\n\n:host(.skeleton--icon.skeleton--rounded) .skeleton__shape {\n border-radius: var(--dimension-radius-half);\n}\n\n:host(.skeleton--icon-xs) {\n --ds-skeleton-canvas-size: var(--dimension-iconography-xs);\n}\n:host(.skeleton--icon-sm) {\n --ds-skeleton-canvas-size: var(--dimension-iconography-sm);\n}\n:host(.skeleton--icon-md) {\n --ds-skeleton-canvas-size: var(--dimension-iconography-md);\n}\n:host(.skeleton--icon-lg) {\n --ds-skeleton-canvas-size: var(--dimension-iconography-lg);\n}\n:host(.skeleton--icon-xl) {\n --ds-skeleton-canvas-size: var(--dimension-iconography-xl);\n}\n:host(.skeleton--icon-2xl) {\n --ds-skeleton-canvas-size: var(--dimension-iconography-2xl);\n}\n:host(.skeleton--icon-3xl) {\n --ds-skeleton-canvas-size: var(--dimension-iconography-3xl);\n}\n\n/* ── Control ───────────────────────────────────────────────────────────── */\n\n:host(.skeleton--control) {\n width: 100%;\n height: var(--ds-control-height);\n}\n\n:host(.skeleton--control) .skeleton__shape {\n border-radius: var(--ds-control-radius, var(--dimension-radius-025));\n}\n\n:host(.skeleton--control.skeleton--rounded) .skeleton__shape {\n border-radius: var(--dimension-radius-half);\n}\n\n@media (forced-colors: active) {\n .skeleton__shape {\n background-color: var(--ds-forced-color-disabled);\n }\n}\n",
|
|
410
|
+
"content": "@import '../../utils/radius.css';\n@import '../../utils/control-density.css';\n@import '../../utils/control-parts.css';\n@import '../../utils/shimmer.css';\n\n:host {\n display: inline-flex;\n align-items: center;\n justify-content: center;\n box-sizing: border-box;\n min-width: 0;\n vertical-align: middle;\n --ds-skeleton-base: var(--color-foreground-quaternary);\n --ds-shimmer: var(--color-shimmer-shimmer);\n --ds-skeleton-border: var(--color-border-secondary);\n}\n\n.skeleton__shape {\n --ds-shimmer-surface-base: var(--ds-skeleton-base);\n\n display: block;\n width: 100%;\n height: 100%;\n flex: 0 0 auto;\n background-color: var(--ds-skeleton-base);\n border-radius: var(--dimension-radius-025);\n}\n\n/* ── Background context ────────────────────────────────────────────────── */\n\n:host(.skeleton--background-medium) {\n --ds-skeleton-border: var(--color-border-on-medium-background-secondary);\n --ds-skeleton-base: var(--color-foreground-on-medium-background-quaternary);\n --ds-shimmer: var(--color-shimmer-shimmer-on-medium-background);\n}\n\n:host(.skeleton--background-bold) {\n --ds-skeleton-border: var(--color-border-on-bold-background-secondary);\n --ds-skeleton-base: var(--color-foreground-on-bold-background-quaternary);\n --ds-shimmer: var(--color-shimmer-shimmer-on-bold-background);\n}\n\n:host(.skeleton--background-strong) {\n --ds-skeleton-border: var(--color-border-on-strong-background-secondary);\n --ds-skeleton-base: var(--color-foreground-on-strong-background-quaternary);\n --ds-shimmer: var(--color-shimmer-shimmer-on-strong-background);\n}\n\n:host(.skeleton--background-translucent) {\n --ds-skeleton-border: var(--color-translucent-border-secondary);\n --ds-skeleton-base: var(--color-translucent-foreground-quaternary);\n --ds-shimmer: var(--color-translucent-shimmer);\n}\n\n:host(.skeleton--background-inverted) {\n --ds-skeleton-border: var(--color-inverted-border-secondary);\n --ds-skeleton-base: var(--color-inverted-foreground-quaternary);\n --ds-shimmer: var(--color-inverted-shimmer);\n}\n\n:host(.skeleton--background-media) {\n --ds-skeleton-border: var(--color-media-border-secondary);\n --ds-skeleton-base: var(--color-media-foreground-quaternary);\n --ds-shimmer: var(--color-media-shimmer);\n}\n\n:host(.skeleton--background-always-dark) {\n --ds-skeleton-border: var(--color-always-dark-border-secondary);\n --ds-skeleton-base: var(--color-always-dark-foreground-quaternary);\n --ds-shimmer: var(--color-always-dark-shimmer);\n}\n\n:host(.skeleton--background-navigation) {\n --ds-skeleton-base: var(--color-navigation-foreground-quaternary);\n --ds-shimmer: var(--color-navigation-shimmer);\n}\n\n/* ── Text ──────────────────────────────────────────────────────────────── */\n\n:host(.skeleton--text) {\n width: 100%;\n height: var(--ds-skeleton-canvas-size);\n padding-block: 0;\n}\n\n:host(.skeleton--text) .skeleton__shape {\n height: 75%;\n}\n\n:host(.skeleton--text-text-display-medium) {\n --ds-skeleton-canvas-size: var(--typography-lineheight-3xl);\n}\n:host(.skeleton--text-text-display-small) {\n --ds-skeleton-canvas-size: var(--typography-lineheight-2xl);\n}\n:host(.skeleton--text-text-title-large) {\n --ds-skeleton-canvas-size: var(--typography-lineheight-xl);\n}\n:host(.skeleton--text-text-title-medium),\n:host(.skeleton--text-text-body-large) {\n --ds-skeleton-canvas-size: var(--typography-lineheight-lg);\n}\n:host(.skeleton--text-text-title-small),\n:host(.skeleton--text-text-body-medium) {\n --ds-skeleton-canvas-size: var(--typography-lineheight-md);\n}\n:host(.skeleton--text-text-body-small) {\n --ds-skeleton-canvas-size: var(--typography-lineheight-sm);\n}\n:host(.skeleton--text-text-caption) {\n --ds-skeleton-canvas-size: var(--typography-lineheight-xs);\n}\n\n/* ── Icon ──────────────────────────────────────────────────────────────── */\n\n:host(.skeleton--icon) {\n width: var(--ds-skeleton-canvas-size);\n height: var(--ds-skeleton-canvas-size);\n padding: 0;\n}\n\n:host(.skeleton--icon) .skeleton__shape {\n width: 75%;\n height: 75%;\n}\n\n:host(.skeleton--icon.skeleton--rounded) .skeleton__shape {\n border-radius: var(--dimension-radius-half);\n}\n\n:host(.skeleton--icon-xs) {\n --ds-skeleton-canvas-size: var(--dimension-iconography-xs);\n}\n:host(.skeleton--icon-sm) {\n --ds-skeleton-canvas-size: var(--dimension-iconography-sm);\n}\n:host(.skeleton--icon-md) {\n --ds-skeleton-canvas-size: var(--dimension-iconography-md);\n}\n:host(.skeleton--icon-lg) {\n --ds-skeleton-canvas-size: var(--dimension-iconography-lg);\n}\n:host(.skeleton--icon-xl) {\n --ds-skeleton-canvas-size: var(--dimension-iconography-xl);\n}\n:host(.skeleton--icon-2xl) {\n --ds-skeleton-canvas-size: var(--dimension-iconography-2xl);\n}\n:host(.skeleton--icon-3xl) {\n --ds-skeleton-canvas-size: var(--dimension-iconography-3xl);\n}\n\n/* ── Control ───────────────────────────────────────────────────────────── */\n\n:host(.skeleton--control) {\n width: 100%;\n height: var(--ds-control-height);\n}\n\n:host(.skeleton--control) .skeleton__shape {\n border-radius: var(--ds-control-radius, var(--dimension-radius-025));\n}\n\n:host(.skeleton--control.skeleton--rounded) .skeleton__shape {\n border-radius: var(--dimension-radius-half);\n}\n\n.skeleton__control {\n width: 100%;\n height: 100%;\n min-width: 0;\n}\n\n.skeleton__control--icon {\n justify-content: center;\n padding: 0;\n}\n\n.skeleton__control-label {\n display: flex;\n flex: 1 1 auto;\n align-items: center;\n overflow: hidden;\n}\n\n:host(.skeleton--control-outlined) .skeleton__control {\n box-shadow: inset 0 0 0 var(--dimension-stroke-width-012) var(--ds-skeleton-border);\n}\n\n:host(.skeleton--rounded) .skeleton__control {\n border-radius: var(--dimension-radius-half);\n}\n\n@media (forced-colors: active) {\n .skeleton__shape {\n background-color: var(--ds-forced-color-disabled);\n }\n :host(.skeleton--control-outlined) .skeleton__control {\n outline: var(--dimension-stroke-width-012) solid var(--ds-forced-color-disabled);\n outline-offset: calc(-1 * var(--dimension-stroke-width-012));\n }\n}\n\n/* Projected content supplies its intrinsic size, wrapping and responsive metrics. */\n:host(.skeleton--preserve-layout) {\n display: grid;\n width: auto;\n height: auto;\n align-items: stretch;\n justify-content: stretch;\n padding: 0;\n}\n\n:host(.skeleton--preserve-layout) .skeleton__source,\n:host(.skeleton--preserve-layout) .skeleton__control,\n:host(.skeleton--preserve-layout) .skeleton__shape {\n grid-area: 1 / 1;\n min-width: 0;\n}\n\n.skeleton__source {\n display: grid;\n visibility: hidden;\n}\n\n:host(.skeleton--preserve-layout) .skeleton__shape {\n height: 100%;\n width: 100%;\n}\n\n:host(.skeleton--preserve-layout.skeleton--text) .skeleton__shape {\n /* Alpha mask only: each retained line uses the atomic text skeleton's inset. */\n mask-image: repeating-linear-gradient(\n to bottom,\n transparent 0,\n transparent calc(var(--ds-skeleton-canvas-size) * 0.125),\n currentColor calc(var(--ds-skeleton-canvas-size) * 0.125),\n currentColor calc(var(--ds-skeleton-canvas-size) * 0.875),\n transparent calc(var(--ds-skeleton-canvas-size) * 0.875),\n transparent var(--ds-skeleton-canvas-size)\n );\n}\n\n:host(.skeleton--content-ready) .skeleton__source {\n visibility: inherit;\n}\n",
|
|
319
411
|
"type": "registry:ui"
|
|
320
412
|
},
|
|
321
413
|
{
|
|
322
414
|
"path": "src/wc/components/Skeleton/Skeleton.tsx",
|
|
323
|
-
"content": "import { Component, Prop, h, Host } from '@stencil/core';\nimport type { IconSize } from '../Icon/Icon';\nimport type { TextVariant } from '../Text/text-types';\nimport type
|
|
415
|
+
"content": "import { Component, Prop, h, Host } from '@stencil/core';\nimport type { IconSize } from '../Icon/Icon';\nimport type { TextVariant } from '../Text/text-types';\nimport { CONTROL_TEXT_VARIANT, type ControlSize } from '../../utils/control-text';\n\nexport type SkeletonVariant = 'text' | 'icon' | 'control';\nexport type SkeletonControlAppearance = 'filled' | 'outlined' | 'borderless';\nexport type SkeletonControlContent =\n | 'label'\n | 'icon'\n | 'icon-label'\n | 'label-icon'\n | 'icon-label-icon';\nexport type SkeletonBackground =\n | 'faint'\n | 'medium'\n | 'bold'\n | 'strong'\n | 'translucent'\n | 'inverted'\n | 'media'\n | 'navigation'\n | 'always-dark';\n\n/** @slot - Real text or a control whose footprint is retained with preserveLayout. */\n@Component({\n tag: 'ds-skeleton',\n styleUrl: 'Skeleton.css',\n shadow: true,\n})\nexport class Skeleton {\n @Prop() variant: SkeletonVariant = 'text';\n /** Text metric recipe whose line-height defines the text canvas. */\n @Prop() textVariant: TextVariant = 'text-body-medium';\n /** Iconography token whose square canvas defines the icon canvas. */\n @Prop() iconSize: IconSize = 'md';\n /** Shared control-density size whose height defines the control canvas. */\n @Prop() controlSize: ControlSize = 'md';\n /** Filled controls replace the entire shape; other appearances retain the frame and mask its contents. */\n @Prop() controlAppearance: SkeletonControlAppearance = 'filled';\n /** Content anatomy for outlined and borderless control placeholders. */\n @Prop() controlContent: SkeletonControlContent = 'label';\n /** Width of text and control skeleton canvases. Numbers resolve to px. Ignored for icons. */\n @Prop() width: string | number | undefined;\n /** Round icon skeletons into circles and control skeletons into pills. Ignored for text. */\n @Prop() rounded: boolean = false;\n /** Whether to show the shimmer animation. */\n @Prop() shimmer: boolean = true;\n /** Derive geometry from a projected control or text instead of estimating its footprint. */\n @Prop() preserveLayout: boolean = false;\n /** With preserveLayout, reveal the same projected content when loading completes. */\n @Prop() isLoading: boolean = true;\n /** Actual parent surface context. Omit on primary and secondary surfaces. */\n @Prop() background: SkeletonBackground | undefined;\n\n private get widthCss() {\n const v = this.width;\n if (v == null) return undefined;\n return typeof v === 'number' ? `${v}px` : v;\n }\n\n private renderControl() {\n const iconOnly = this.controlContent === 'icon';\n const icon = () => (\n <ds-skeleton\n variant=\"icon\"\n iconSize={this.controlSize}\n background={this.background}\n shimmer={this.shimmer}\n />\n );\n return (\n <span\n class={{\n skeleton__control: true,\n 'ds-control-frame': true,\n 'skeleton__control--icon': iconOnly,\n }}\n >\n {(iconOnly || this.controlContent.startsWith('icon-')) && icon()}\n {!iconOnly && (\n <span class=\"skeleton__control-label ds-control-label-box\">\n <ds-skeleton\n textVariant={CONTROL_TEXT_VARIANT[this.controlSize]}\n background={this.background}\n shimmer={this.shimmer}\n />\n </span>\n )}\n {!iconOnly && this.controlContent.endsWith('-icon') && icon()}\n </span>\n );\n }\n\n render() {\n return (\n <Host\n aria-hidden={this.isLoading ? 'true' : undefined}\n class={{\n skeleton: true,\n [`skeleton--${this.variant}`]: true,\n [`skeleton--text-${this.textVariant}`]: this.variant === 'text',\n [`skeleton--icon-${this.iconSize}`]: this.variant === 'icon',\n [`ds-control--${this.controlSize}`]: this.variant === 'control',\n [`skeleton--control-${this.controlAppearance}`]: this.variant === 'control',\n [`skeleton--background-${this.background}`]: !!this.background,\n 'skeleton--rounded': this.variant !== 'text' && this.rounded,\n 'skeleton--preserve-layout': this.preserveLayout,\n 'skeleton--content-ready': this.preserveLayout && !this.isLoading,\n }}\n style={this.variant === 'icon' ? undefined : { width: this.widthCss }}\n >\n {this.preserveLayout && (\n <span class=\"skeleton__source\" inert={this.isLoading}>\n <slot />\n </span>\n )}\n {this.isLoading &&\n (this.variant === 'control' && this.controlAppearance !== 'filled' ? (\n this.renderControl()\n ) : (\n <span\n class={{\n skeleton__shape: true,\n 'ds-shimmer-surface': this.shimmer,\n }}\n />\n ))}\n </Host>\n );\n }\n}\n",
|
|
324
416
|
"type": "registry:ui"
|
|
325
417
|
}
|
|
326
418
|
]
|
|
@@ -696,8 +696,8 @@
|
|
|
696
696
|
"complexPropertyNote": "Assign these non-primitive values as JavaScript properties: formatOptions, ticks, valueTexts.",
|
|
697
697
|
"peerDependencies": {
|
|
698
698
|
"required": [
|
|
699
|
-
"@ds-mo/tokens ^8.0.
|
|
700
|
-
"@ds-mo/icons ^8.1.
|
|
699
|
+
"@ds-mo/tokens ^8.0.1",
|
|
700
|
+
"@ds-mo/icons ^8.1.2"
|
|
701
701
|
],
|
|
702
702
|
"frameworks": "Custom Elements; React 18/19 wrappers; Vue 3 wrappers; Angular 19-22 standalone adapters."
|
|
703
703
|
}
|
|
@@ -227,8 +227,8 @@
|
|
|
227
227
|
"complexPropertyNote": "Assign these non-primitive values as JavaScript properties: options, sections.",
|
|
228
228
|
"peerDependencies": {
|
|
229
229
|
"required": [
|
|
230
|
-
"@ds-mo/tokens ^8.0.
|
|
231
|
-
"@ds-mo/icons ^8.1.
|
|
230
|
+
"@ds-mo/tokens ^8.0.1",
|
|
231
|
+
"@ds-mo/icons ^8.1.2"
|
|
232
232
|
],
|
|
233
233
|
"frameworks": "Custom Elements; React 18/19 wrappers; Vue 3 wrappers; Angular 19-22 standalone adapters."
|
|
234
234
|
}
|
|
@@ -378,8 +378,8 @@
|
|
|
378
378
|
},
|
|
379
379
|
"peerDependencies": {
|
|
380
380
|
"required": [
|
|
381
|
-
"@ds-mo/tokens ^8.0.
|
|
382
|
-
"@ds-mo/icons ^8.1.
|
|
381
|
+
"@ds-mo/tokens ^8.0.1",
|
|
382
|
+
"@ds-mo/icons ^8.1.2"
|
|
383
383
|
],
|
|
384
384
|
"frameworks": "Custom Elements; React 18/19 wrappers; Vue 3 wrappers; Angular 19-22 standalone adapters."
|
|
385
385
|
}
|
|
@@ -352,8 +352,8 @@
|
|
|
352
352
|
"complexPropertyNote": "Assign these non-primitive values as JavaScript properties: tabs.",
|
|
353
353
|
"peerDependencies": {
|
|
354
354
|
"required": [
|
|
355
|
-
"@ds-mo/tokens ^8.0.
|
|
356
|
-
"@ds-mo/icons ^8.1.
|
|
355
|
+
"@ds-mo/tokens ^8.0.1",
|
|
356
|
+
"@ds-mo/icons ^8.1.2"
|
|
357
357
|
],
|
|
358
358
|
"frameworks": "Custom Elements; React 18/19 wrappers; Vue 3 wrappers; Angular 19-22 standalone adapters."
|
|
359
359
|
}
|