@ds-mo/ui 15.1.1 → 15.3.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 +4 -4
- package/dist/agent.json +711 -48
- package/dist/angular/ds-card-setting.d.ts +1 -1
- package/dist/angular/ds-card-setting.js +3 -3
- package/dist/angular/ds-input-time.d.ts +1 -1
- package/dist/angular/ds-input-time.js +3 -3
- package/dist/angular/ds-input.d.ts +5 -1
- package/dist/angular/ds-input.js +10 -4
- package/dist/angular/ds-map-cluster-marker.d.ts +18 -0
- package/dist/angular/ds-map-cluster-marker.js +43 -0
- package/dist/angular/ds-map-entity-marker.d.ts +18 -0
- package/dist/angular/ds-map-entity-marker.js +43 -0
- package/dist/angular/ds-radio-tile.d.ts +15 -0
- package/dist/angular/ds-radio-tile.js +43 -0
- package/dist/angular/ds-setting-row.d.ts +18 -0
- package/dist/angular/ds-setting-row.js +42 -0
- package/dist/angular/ds-slider.d.ts +1 -1
- package/dist/angular/ds-slider.js +3 -3
- package/dist/angular/ds-textarea.d.ts +1 -1
- package/dist/angular/ds-textarea.js +3 -3
- package/dist/angular/ds-time-picker.d.ts +1 -1
- package/dist/angular/ds-time-picker.js +3 -3
- package/dist/angular/index.d.ts +1 -1
- package/dist/angular/index.js +4 -0
- package/dist/angular/number-value-accessor.d.ts +9 -0
- package/dist/angular/number-value-accessor.js +39 -0
- package/dist/angular/proxies.d.ts +4 -0
- package/dist/angular/proxies.js +4 -0
- package/dist/angular/radio-value-accessor.d.ts +1 -1
- package/dist/angular/radio-value-accessor.js +2 -2
- package/dist/angular/select-value-accessor.d.ts +1 -1
- package/dist/angular/select-value-accessor.js +2 -2
- package/dist/angular/text-value-accessor.d.ts +1 -1
- package/dist/angular/text-value-accessor.js +2 -2
- 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-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-chart.js +1 -1
- package/dist/components/ds-card-navigation.js +1 -1
- package/dist/components/ds-card-overview.js +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-chart-legend.js +1 -1
- package/dist/components/ds-chart.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-filter.js.map +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-preferences.js.map +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-search.js.map +1 -1
- package/dist/components/ds-data-sort.js +1 -1
- package/dist/components/ds-data-toolbar.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-input-date.js +1 -1
- package/dist/components/ds-input-date.js.map +1 -1
- package/dist/components/ds-input-time.js +1 -1
- package/dist/components/ds-input-time.js.map +1 -1
- package/dist/components/ds-input.js +1 -1
- package/dist/components/ds-map-cluster-marker.d.ts +11 -0
- package/dist/components/ds-map-cluster-marker.js +2 -0
- package/dist/components/ds-map-cluster-marker.js.map +1 -0
- package/dist/components/ds-map-entity-marker.d.ts +11 -0
- package/dist/components/ds-map-entity-marker.js +2 -0
- package/dist/components/ds-map-entity-marker.js.map +1 -0
- 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-bubble.js.map +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-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-tool-search.js.map +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.d.ts +11 -0
- package/dist/components/ds-radio-tile.js +2 -0
- package/dist/components/ds-radio-tile.js.map +1 -0
- 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.js +1 -1
- package/dist/components/ds-setting-row.d.ts +11 -0
- package/dist/components/ds-setting-row.js +2 -0
- package/dist/components/ds-setting-row.js.map +1 -0
- package/dist/components/ds-shell-app.js +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-slider.js.map +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-textarea.js.map +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-etifxiDc.js → p-3bsypMrY.js} +2 -2
- package/dist/components/{p-Bm7rqs3C.js → p-AM_ht6Im.js} +2 -2
- package/dist/components/{p-Bm7rqs3C.js.map → p-AM_ht6Im.js.map} +1 -1
- package/dist/components/{p-Bn8I7iw6.js → p-AmT4GlhM.js} +2 -2
- package/dist/components/{p-FIBCluwV.js → p-B-HOVYoH.js} +2 -2
- package/dist/components/{p-CmexIVnE.js → p-B7QEpaMe.js} +2 -2
- package/dist/components/{p-CUcUHwI3.js → p-B7bXN-vf.js} +2 -2
- package/dist/components/p-BHI4LcGK.js +2 -0
- package/dist/components/p-BHI4LcGK.js.map +1 -0
- package/dist/components/{p-BhJXmuRA.js → p-BSuMDPaV.js} +2 -2
- package/dist/components/{p-0FYD2bev.js → p-BU1B6NW8.js} +2 -2
- package/dist/components/{p-Do2FJd1y.js → p-BVwg5XVz.js} +2 -2
- package/dist/components/{p-CYzFfFcH.js → p-BXSHN1OK.js} +2 -2
- package/dist/components/{p-ljbw3UMZ.js → p-BYJtvRQm.js} +2 -2
- package/dist/components/{p-CzIpquvw.js → p-Bh1Fx0aW.js} +2 -2
- package/dist/components/{p-CiJ1WR11.js → p-Bm3KWMe4.js} +2 -2
- package/dist/components/{p-DVINzOoK.js → p-Bo7GxFBh.js} +2 -2
- package/dist/components/{p-8yBdCXCn.js → p-BsM37Prt.js} +2 -2
- package/dist/components/p-Bu4OmhKK.js +2 -0
- package/dist/components/{p-CdGXzRP8.js.map → p-Bu4OmhKK.js.map} +1 -1
- package/dist/components/{p-DpoTwJAR.js → p-BugKaVWc.js} +2 -2
- package/dist/components/p-C-c8SJ00.js +2 -0
- package/dist/components/p-C-c8SJ00.js.map +1 -0
- package/dist/components/{p-Bpd6YCo4.js → p-C3-dcROG.js} +2 -2
- package/dist/components/p-C4VeD49U.js +2 -0
- package/dist/components/{p-BKZdqJQB.js.map → p-C4VeD49U.js.map} +1 -1
- package/dist/components/{p-CNxvnQ6A.js → p-CCpJT31M.js} +2 -2
- package/dist/components/p-CCpJT31M.js.map +1 -0
- package/dist/components/{p-Dzndkdx5.js → p-CI7c9kp-.js} +2 -2
- package/dist/components/{p-CdgOLWX9.js → p-CJD0kLeV.js} +2 -2
- package/dist/components/{p-BeNa6tw5.js → p-C_gJD8l3.js} +2 -2
- package/dist/components/{p-DwbcNDJF.js → p-Cihjy4WY.js} +2 -2
- package/dist/components/{p-BgQMEHRa.js → p-Co5MiPNa.js} +2 -2
- package/dist/components/{p-CD4DZPy_.js → p-CrL9wxZg.js} +2 -2
- package/dist/components/{p-CGidq1iC.js → p-CuwopElg.js} +2 -2
- package/dist/components/p-CwUXroLs.js +2 -0
- package/dist/components/{p-etg-Uk1u.js.map → p-CwUXroLs.js.map} +1 -1
- package/dist/components/{p-Cqc2U1ZQ.js → p-CzQ_JF6A.js} +2 -2
- package/dist/components/{p-BciTtTwx.js → p-CztB8Pbq.js} +2 -2
- package/dist/components/{p-BciTtTwx.js.map → p-CztB8Pbq.js.map} +1 -1
- package/dist/components/{p-ZhP2tVmM.js → p-D0KD-Nr_.js} +2 -2
- package/dist/components/{p-DOAybCp0.js → p-DCLRAH5i.js} +2 -2
- package/dist/components/{p-Dn9QHL4O.js → p-DFkw6wrS.js} +2 -2
- package/dist/components/{p-D1vQGJzc.js → p-DHapI2sf.js} +2 -2
- package/dist/components/p-DQPzqcYR.js +2 -0
- package/dist/components/p-DQPzqcYR.js.map +1 -0
- package/dist/components/{p-DHICPS4n.js → p-DWmYCOKz.js} +2 -2
- package/dist/components/p-DX2RyZba.js +2 -0
- package/dist/components/{p-C-3YqeTb.js.map → p-DX2RyZba.js.map} +1 -1
- package/dist/components/{p-vfCu7XSc.js → p-DZ58Sg5a.js} +2 -2
- package/dist/components/{p-D0y7Sja6.js → p-Dcn1eDVt.js} +2 -2
- package/dist/components/{p-E5W27Fu_.js → p-DcrdyDRw.js} +2 -2
- package/dist/components/p-DhKvqh5G.js +2 -0
- package/dist/components/p-DhKvqh5G.js.map +1 -0
- package/dist/components/p-Fkkd3gMB.js +2 -0
- package/dist/components/{p-DEW7r0U9.js.map → p-Fkkd3gMB.js.map} +1 -1
- package/dist/components/{p-xdmJCPCg.js → p-Gb-vTuXr.js} +2 -2
- package/dist/components/p-TVkFIMXz.js +2 -0
- package/dist/components/p-TVkFIMXz.js.map +1 -0
- package/dist/components/p-cuZva5tl.js +2 -0
- package/dist/components/{p-Dw9sE6Iw.js.map → p-cuZva5tl.js.map} +1 -1
- package/dist/components/p-fYZK3zqM.js +2 -0
- package/dist/components/{p-C6xVxqOn.js.map → p-fYZK3zqM.js.map} +1 -1
- package/dist/components/{p-CiH4GG6r.js → p-iGNHXFZA.js} +2 -2
- package/dist/components/{p-5URekSny.js → p-lADW-TI8.js} +2 -2
- package/dist/components/{p-D922f6Tb.js → p-p_MwknM3.js} +2 -2
- package/dist/components/{p-Dfs98tpL.js → p-tJaC01aE.js} +2 -2
- package/dist/components/{p-B_jdoM7e.js → p-z8L-YMi3.js} +2 -2
- package/dist/docs/components.json +1909 -44
- package/dist/framework/angular.d.ts +1 -0
- package/dist/framework/angular.js +1 -0
- 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 +4 -4
- 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 +2 -2
- package/dist/mcp-data/registry/card-chart.json +2 -2
- package/dist/mcp-data/registry/card-navigation.json +2 -2
- package/dist/mcp-data/registry/card-overview.json +2 -2
- package/dist/mcp-data/registry/card-setting.json +36 -15
- package/dist/mcp-data/registry/card-settings-scope.json +2 -2
- 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.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 +3 -3
- 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 +27 -14
- package/dist/mcp-data/registry/field.json +6 -5
- package/dist/mcp-data/registry/filter-menu.json +2 -2
- package/dist/mcp-data/registry/icon.json +2 -2
- package/dist/mcp-data/registry/input-date.json +2 -2
- package/dist/mcp-data/registry/input-time.json +26 -7
- package/dist/mcp-data/registry/input.json +265 -15
- package/dist/mcp-data/registry/loader.json +2 -2
- package/dist/mcp-data/registry/map-cluster-marker.json +263 -0
- package/dist/mcp-data/registry/map-entity-marker.json +321 -0
- 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/pagination.json +2 -2
- 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 +398 -0
- package/dist/mcp-data/registry/radio.json +2 -2
- package/dist/mcp-data/registry/registry.json +724 -49
- 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.json +2 -2
- package/dist/mcp-data/registry/setting-row.json +213 -0
- package/dist/mcp-data/registry/shell-app.json +3 -3
- package/dist/mcp-data/registry/shell-page.json +5 -5
- package/dist/mcp-data/registry/shell-tools.json +2 -2
- package/dist/mcp-data/registry/skeleton.json +2 -2
- package/dist/mcp-data/registry/slider.json +32 -12
- 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 +5 -5
- 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 +72 -5
- package/dist/mcp-data/registry/time-picker.json +28 -9
- 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/react/components.d.ts +4 -0
- package/dist/react/components.js +4 -0
- package/dist/react/ds-input.d.ts +2 -0
- package/dist/react/ds-input.js +2 -0
- package/dist/react/ds-map-cluster-marker.d.ts +12 -0
- package/dist/react/ds-map-cluster-marker.js +12 -0
- package/dist/react/ds-map-entity-marker.d.ts +12 -0
- package/dist/react/ds-map-entity-marker.js +12 -0
- package/dist/react/ds-radio-tile.d.ts +12 -0
- package/dist/react/ds-radio-tile.js +12 -0
- package/dist/react/ds-setting-row.d.ts +12 -0
- package/dist/react/ds-setting-row.js +12 -0
- package/dist/types/components/CardSetting/CardSetting.d.ts +5 -3
- package/dist/types/components/CardSetting/index.d.ts +1 -1
- package/dist/types/components/EmptyState/EmptyState.d.ts +3 -0
- package/dist/types/components/Field/Field.d.ts +4 -0
- package/dist/types/components/Input/Input.d.ts +50 -1
- package/dist/types/components/InputTime/InputTime.d.ts +3 -0
- package/dist/types/components/MapClusterMarker/MapClusterMarker.d.ts +19 -0
- package/dist/types/components/MapEntityMarker/MapEntityMarker.d.ts +26 -0
- package/dist/types/components/RadioTile/RadioTile.d.ts +40 -0
- package/dist/types/components/RadioTile/index.d.ts +2 -0
- package/dist/types/components/SettingRow/SettingRow.d.ts +18 -0
- package/dist/types/components/Slider/Slider.d.ts +8 -1
- package/dist/types/components/Slider/index.d.ts +1 -1
- package/dist/types/components/Textarea/Textarea.d.ts +12 -0
- package/dist/types/components/TimePicker/TimePicker.d.ts +4 -0
- package/dist/types/components.d.ts +627 -11
- package/dist/types/utils/text-constraints.d.ts +20 -0
- package/dist/vue/components.d.ts +4 -0
- package/dist/vue/components.js +4 -0
- package/dist/vue/ds-card-setting.js +1 -0
- package/dist/vue/ds-input-time.js +1 -0
- package/dist/vue/ds-input.js +17 -0
- package/dist/vue/ds-map-cluster-marker.d.ts +3 -0
- package/dist/vue/ds-map-cluster-marker.js +14 -0
- package/dist/vue/ds-map-entity-marker.d.ts +3 -0
- package/dist/vue/ds-map-entity-marker.js +17 -0
- package/dist/vue/ds-radio-tile.d.ts +3 -0
- package/dist/vue/ds-radio-tile.js +24 -0
- package/dist/vue/ds-setting-row.d.ts +3 -0
- package/dist/vue/ds-setting-row.js +14 -0
- package/dist/vue/ds-slider.d.ts +1 -1
- package/dist/vue/ds-slider.js +2 -1
- package/dist/vue/ds-textarea.js +4 -0
- package/dist/vue/ds-time-picker.js +1 -0
- package/package.json +5 -5
- package/dist/components/p-0qY_HDId.js +0 -2
- package/dist/components/p-0qY_HDId.js.map +0 -1
- package/dist/components/p-BKZdqJQB.js +0 -2
- package/dist/components/p-C-3YqeTb.js +0 -2
- package/dist/components/p-C6xVxqOn.js +0 -2
- package/dist/components/p-CNxvnQ6A.js.map +0 -1
- package/dist/components/p-CdGXzRP8.js +0 -2
- package/dist/components/p-DEW7r0U9.js +0 -2
- package/dist/components/p-DVOjjuXc.js +0 -2
- package/dist/components/p-DVOjjuXc.js.map +0 -1
- package/dist/components/p-Di5FH7eh.js +0 -2
- package/dist/components/p-Di5FH7eh.js.map +0 -1
- package/dist/components/p-Dw9sE6Iw.js +0 -2
- package/dist/components/p-etg-Uk1u.js +0 -2
- package/dist/components/p-xtGGIZmU.js +0 -2
- package/dist/components/p-xtGGIZmU.js.map +0 -1
- /package/dist/components/{p-etifxiDc.js.map → p-3bsypMrY.js.map} +0 -0
- /package/dist/components/{p-Bn8I7iw6.js.map → p-AmT4GlhM.js.map} +0 -0
- /package/dist/components/{p-FIBCluwV.js.map → p-B-HOVYoH.js.map} +0 -0
- /package/dist/components/{p-CmexIVnE.js.map → p-B7QEpaMe.js.map} +0 -0
- /package/dist/components/{p-CUcUHwI3.js.map → p-B7bXN-vf.js.map} +0 -0
- /package/dist/components/{p-BhJXmuRA.js.map → p-BSuMDPaV.js.map} +0 -0
- /package/dist/components/{p-0FYD2bev.js.map → p-BU1B6NW8.js.map} +0 -0
- /package/dist/components/{p-Do2FJd1y.js.map → p-BVwg5XVz.js.map} +0 -0
- /package/dist/components/{p-CYzFfFcH.js.map → p-BXSHN1OK.js.map} +0 -0
- /package/dist/components/{p-ljbw3UMZ.js.map → p-BYJtvRQm.js.map} +0 -0
- /package/dist/components/{p-CzIpquvw.js.map → p-Bh1Fx0aW.js.map} +0 -0
- /package/dist/components/{p-CiJ1WR11.js.map → p-Bm3KWMe4.js.map} +0 -0
- /package/dist/components/{p-DVINzOoK.js.map → p-Bo7GxFBh.js.map} +0 -0
- /package/dist/components/{p-8yBdCXCn.js.map → p-BsM37Prt.js.map} +0 -0
- /package/dist/components/{p-DpoTwJAR.js.map → p-BugKaVWc.js.map} +0 -0
- /package/dist/components/{p-Bpd6YCo4.js.map → p-C3-dcROG.js.map} +0 -0
- /package/dist/components/{p-Dzndkdx5.js.map → p-CI7c9kp-.js.map} +0 -0
- /package/dist/components/{p-CdgOLWX9.js.map → p-CJD0kLeV.js.map} +0 -0
- /package/dist/components/{p-BeNa6tw5.js.map → p-C_gJD8l3.js.map} +0 -0
- /package/dist/components/{p-DwbcNDJF.js.map → p-Cihjy4WY.js.map} +0 -0
- /package/dist/components/{p-BgQMEHRa.js.map → p-Co5MiPNa.js.map} +0 -0
- /package/dist/components/{p-CD4DZPy_.js.map → p-CrL9wxZg.js.map} +0 -0
- /package/dist/components/{p-CGidq1iC.js.map → p-CuwopElg.js.map} +0 -0
- /package/dist/components/{p-Cqc2U1ZQ.js.map → p-CzQ_JF6A.js.map} +0 -0
- /package/dist/components/{p-ZhP2tVmM.js.map → p-D0KD-Nr_.js.map} +0 -0
- /package/dist/components/{p-DOAybCp0.js.map → p-DCLRAH5i.js.map} +0 -0
- /package/dist/components/{p-Dn9QHL4O.js.map → p-DFkw6wrS.js.map} +0 -0
- /package/dist/components/{p-D1vQGJzc.js.map → p-DHapI2sf.js.map} +0 -0
- /package/dist/components/{p-DHICPS4n.js.map → p-DWmYCOKz.js.map} +0 -0
- /package/dist/components/{p-vfCu7XSc.js.map → p-DZ58Sg5a.js.map} +0 -0
- /package/dist/components/{p-D0y7Sja6.js.map → p-Dcn1eDVt.js.map} +0 -0
- /package/dist/components/{p-E5W27Fu_.js.map → p-DcrdyDRw.js.map} +0 -0
- /package/dist/components/{p-xdmJCPCg.js.map → p-Gb-vTuXr.js.map} +0 -0
- /package/dist/components/{p-CiH4GG6r.js.map → p-iGNHXFZA.js.map} +0 -0
- /package/dist/components/{p-5URekSny.js.map → p-lADW-TI8.js.map} +0 -0
- /package/dist/components/{p-D922f6Tb.js.map → p-p_MwknM3.js.map} +0 -0
- /package/dist/components/{p-Dfs98tpL.js.map → p-tJaC01aE.js.map} +0 -0
- /package/dist/components/{p-B_jdoM7e.js.map → p-z8L-YMi3.js.map} +0 -0
|
@@ -191,8 +191,8 @@
|
|
|
191
191
|
},
|
|
192
192
|
"peerDependencies": {
|
|
193
193
|
"required": [
|
|
194
|
-
"@ds-mo/tokens ^6.5.
|
|
195
|
-
"@ds-mo/icons ^8.1.
|
|
194
|
+
"@ds-mo/tokens ^6.5.2",
|
|
195
|
+
"@ds-mo/icons ^8.1.1"
|
|
196
196
|
],
|
|
197
197
|
"frameworks": "Custom Elements; React 18/19 wrappers; Vue 3 wrappers; Angular 19-22 standalone adapters."
|
|
198
198
|
}
|
|
@@ -0,0 +1,263 @@
|
|
|
1
|
+
{
|
|
2
|
+
"$schema": "https://ui.shadcn.com/schema/registry-item.json",
|
|
3
|
+
"name": "map-cluster-marker",
|
|
4
|
+
"title": "MapClusterMarker",
|
|
5
|
+
"description": "Engine-independent map cluster button with compact count formatting and a hover or focus caption.",
|
|
6
|
+
"type": "registry:ui",
|
|
7
|
+
"meta": {
|
|
8
|
+
"library": "@ds-mo/ui",
|
|
9
|
+
"distribution": "npm",
|
|
10
|
+
"storybook": "https://zainadeel.github.io/compomo/?path=/story/map-cluster-marker",
|
|
11
|
+
"source": "src/wc/components/MapClusterMarker/MapClusterMarker.tsx",
|
|
12
|
+
"intentStatus": "complete",
|
|
13
|
+
"intent": {
|
|
14
|
+
"audience": "general",
|
|
15
|
+
"status": "experimental",
|
|
16
|
+
"summary": "Engine-independent map cluster button with compact count formatting and a hover or focus caption.",
|
|
17
|
+
"useWhen": [
|
|
18
|
+
"An application map needs one interactive marker to represent several nearby entities.",
|
|
19
|
+
"The map engine can mount a custom element and retain ownership of clustering, coordinates, anchoring, and camera behavior."
|
|
20
|
+
],
|
|
21
|
+
"avoidWhen": [
|
|
22
|
+
"The marker represents one vehicle, asset, person, or travel group; use MapEntityMarker.",
|
|
23
|
+
"The count is a notification attached to another control; use Badge.",
|
|
24
|
+
"The component would be asked to calculate clusters or own geographic and selected-entity business state."
|
|
25
|
+
],
|
|
26
|
+
"alternatives": [
|
|
27
|
+
{
|
|
28
|
+
"when": "One map entity needs operating state, bearing, and an optional dashed outline.",
|
|
29
|
+
"component": "component:ds-map-entity-marker",
|
|
30
|
+
"reason": "MapEntityMarker owns single-entity marker semantics and geometry."
|
|
31
|
+
},
|
|
32
|
+
{
|
|
33
|
+
"when": "A count supplements another non-map control.",
|
|
34
|
+
"component": "component:ds-badge",
|
|
35
|
+
"reason": "Badge owns compact notification and counter indicators."
|
|
36
|
+
}
|
|
37
|
+
],
|
|
38
|
+
"commonlyComposedWith": [
|
|
39
|
+
"component:ds-map-entity-marker",
|
|
40
|
+
"component:ds-text"
|
|
41
|
+
],
|
|
42
|
+
"accessibility": [
|
|
43
|
+
"The component renders a native button and label is its accessible action name. Prefer a label that includes the full count and outcome, such as ‘Zoom to 24 vehicles’.",
|
|
44
|
+
"Caption is a supplemental visual identifier and is hidden from assistive technology to avoid duplicating label.",
|
|
45
|
+
"Keyboard focus reveals the same caption as hover and uses the shared visible focus ring.",
|
|
46
|
+
"The compact displayed count does not replace the full count in label."
|
|
47
|
+
],
|
|
48
|
+
"states": [
|
|
49
|
+
"count is rounded to a non-negative whole number and compacts with a k suffix at one thousand and above.",
|
|
50
|
+
"dimmed is visual de-emphasis only. The map owner decides when selection context should dim cluster peers and keeps every cluster operable. A dimmed cluster returns to full opacity while hovered or keyboard-focused so its revealed caption remains legible.",
|
|
51
|
+
"Activation emits dsClick without calculating a cluster expansion or changing camera state internally."
|
|
52
|
+
],
|
|
53
|
+
"responsiveBehavior": [
|
|
54
|
+
"Marker height and minimum width stay fixed across breakpoints so map-engine anchors remain stable; width grows only for the compact count.",
|
|
55
|
+
"The map owner controls collision handling, overlays, and viewport-aware caption placement."
|
|
56
|
+
],
|
|
57
|
+
"frameworkCaveats": {
|
|
58
|
+
"customElements": [
|
|
59
|
+
"A map engine that accepts an Element for a custom marker or div icon can mount ds-map-cluster-marker directly.",
|
|
60
|
+
"Listen for dsClick and keep cluster membership, expansion zoom, z-index, coordinates, and camera movement in application state."
|
|
61
|
+
],
|
|
62
|
+
"react": [
|
|
63
|
+
"Pass count as a number and handle dsClick through the generated event binding."
|
|
64
|
+
],
|
|
65
|
+
"angular": [
|
|
66
|
+
"Bind count as a number and keep map-engine marker lifecycle in the owning map adapter."
|
|
67
|
+
]
|
|
68
|
+
},
|
|
69
|
+
"references": [
|
|
70
|
+
{
|
|
71
|
+
"label": "Storybook examples",
|
|
72
|
+
"path": "src/wc/components/MapClusterMarker/MapClusterMarker.stories.ts"
|
|
73
|
+
}
|
|
74
|
+
],
|
|
75
|
+
"styling": {
|
|
76
|
+
"rationale": "The component owns stable map anchoring geometry and semantic cluster recipes; the map engine owns host placement and stacking.",
|
|
77
|
+
"protected": [
|
|
78
|
+
{
|
|
79
|
+
"properties": [
|
|
80
|
+
"height",
|
|
81
|
+
"min-width",
|
|
82
|
+
"padding",
|
|
83
|
+
"border-radius",
|
|
84
|
+
"background",
|
|
85
|
+
"color",
|
|
86
|
+
"opacity"
|
|
87
|
+
],
|
|
88
|
+
"reason": "Cluster geometry, count legibility, interaction treatment, and de-emphasis are one accessible visual recipe.",
|
|
89
|
+
"props": [
|
|
90
|
+
"count",
|
|
91
|
+
"dimmed"
|
|
92
|
+
]
|
|
93
|
+
}
|
|
94
|
+
],
|
|
95
|
+
"customProperties": []
|
|
96
|
+
}
|
|
97
|
+
},
|
|
98
|
+
"api": {
|
|
99
|
+
"props": {
|
|
100
|
+
"caption": {
|
|
101
|
+
"type": "string",
|
|
102
|
+
"resolvedType": "string",
|
|
103
|
+
"attribute": "caption",
|
|
104
|
+
"default": "''",
|
|
105
|
+
"required": false,
|
|
106
|
+
"mutable": false,
|
|
107
|
+
"description": "Short visible cluster identifier revealed on hover or keyboard focus."
|
|
108
|
+
},
|
|
109
|
+
"count": {
|
|
110
|
+
"type": "number",
|
|
111
|
+
"resolvedType": "number",
|
|
112
|
+
"attribute": "count",
|
|
113
|
+
"default": "0",
|
|
114
|
+
"required": false,
|
|
115
|
+
"mutable": false,
|
|
116
|
+
"description": "Number of represented entities, compacted at one thousand and above."
|
|
117
|
+
},
|
|
118
|
+
"dimmed": {
|
|
119
|
+
"type": "boolean",
|
|
120
|
+
"resolvedType": "boolean",
|
|
121
|
+
"attribute": "dimmed",
|
|
122
|
+
"default": "false",
|
|
123
|
+
"required": false,
|
|
124
|
+
"mutable": false,
|
|
125
|
+
"description": "De-emphasizes this cluster when an owner-managed selection is active elsewhere."
|
|
126
|
+
},
|
|
127
|
+
"label": {
|
|
128
|
+
"type": "string",
|
|
129
|
+
"resolvedType": "string",
|
|
130
|
+
"attribute": "label",
|
|
131
|
+
"required": true,
|
|
132
|
+
"mutable": false,
|
|
133
|
+
"description": "Accessible action label. Describe the cluster and what activation does."
|
|
134
|
+
}
|
|
135
|
+
},
|
|
136
|
+
"events": [
|
|
137
|
+
{
|
|
138
|
+
"name": "dsClick",
|
|
139
|
+
"detail": "MouseEvent",
|
|
140
|
+
"bubbles": true,
|
|
141
|
+
"cancelable": true,
|
|
142
|
+
"composed": true,
|
|
143
|
+
"description": "Fired when the cluster's native button is activated."
|
|
144
|
+
}
|
|
145
|
+
],
|
|
146
|
+
"methods": [
|
|
147
|
+
{
|
|
148
|
+
"name": "setFocus",
|
|
149
|
+
"signature": "setFocus() => Promise<void>",
|
|
150
|
+
"description": "Moves keyboard focus to the cluster button."
|
|
151
|
+
}
|
|
152
|
+
],
|
|
153
|
+
"slots": []
|
|
154
|
+
},
|
|
155
|
+
"props": {
|
|
156
|
+
"caption": {
|
|
157
|
+
"type": "string",
|
|
158
|
+
"resolvedType": "string",
|
|
159
|
+
"attribute": "caption",
|
|
160
|
+
"default": "''",
|
|
161
|
+
"required": false,
|
|
162
|
+
"mutable": false,
|
|
163
|
+
"description": "Short visible cluster identifier revealed on hover or keyboard focus."
|
|
164
|
+
},
|
|
165
|
+
"count": {
|
|
166
|
+
"type": "number",
|
|
167
|
+
"resolvedType": "number",
|
|
168
|
+
"attribute": "count",
|
|
169
|
+
"default": "0",
|
|
170
|
+
"required": false,
|
|
171
|
+
"mutable": false,
|
|
172
|
+
"description": "Number of represented entities, compacted at one thousand and above."
|
|
173
|
+
},
|
|
174
|
+
"dimmed": {
|
|
175
|
+
"type": "boolean",
|
|
176
|
+
"resolvedType": "boolean",
|
|
177
|
+
"attribute": "dimmed",
|
|
178
|
+
"default": "false",
|
|
179
|
+
"required": false,
|
|
180
|
+
"mutable": false,
|
|
181
|
+
"description": "De-emphasizes this cluster when an owner-managed selection is active elsewhere."
|
|
182
|
+
},
|
|
183
|
+
"label": {
|
|
184
|
+
"type": "string",
|
|
185
|
+
"resolvedType": "string",
|
|
186
|
+
"attribute": "label",
|
|
187
|
+
"required": true,
|
|
188
|
+
"mutable": false,
|
|
189
|
+
"description": "Accessible action label. Describe the cluster and what activation does."
|
|
190
|
+
}
|
|
191
|
+
},
|
|
192
|
+
"events": [
|
|
193
|
+
{
|
|
194
|
+
"name": "dsClick",
|
|
195
|
+
"detail": "MouseEvent",
|
|
196
|
+
"bubbles": true,
|
|
197
|
+
"cancelable": true,
|
|
198
|
+
"composed": true,
|
|
199
|
+
"description": "Fired when the cluster's native button is activated."
|
|
200
|
+
}
|
|
201
|
+
],
|
|
202
|
+
"methods": [
|
|
203
|
+
{
|
|
204
|
+
"name": "setFocus",
|
|
205
|
+
"signature": "setFocus() => Promise<void>",
|
|
206
|
+
"description": "Moves keyboard focus to the cluster button."
|
|
207
|
+
}
|
|
208
|
+
],
|
|
209
|
+
"slots": [],
|
|
210
|
+
"exports": {
|
|
211
|
+
"customElement": "ds-map-cluster-marker",
|
|
212
|
+
"react": "DsMapClusterMarker",
|
|
213
|
+
"vue": "DsMapClusterMarker",
|
|
214
|
+
"angular": "DsMapClusterMarker"
|
|
215
|
+
},
|
|
216
|
+
"consumption": {
|
|
217
|
+
"install": "npm install @ds-mo/ui @ds-mo/tokens @ds-mo/icons",
|
|
218
|
+
"cssSetup": "import '@ds-mo/tokens';\nimport '@ds-mo/tokens/reset';\nimport '@ds-mo/tokens/globals';",
|
|
219
|
+
"customElements": {
|
|
220
|
+
"import": "import '@ds-mo/ui/dist/components/ds-map-cluster-marker.js';",
|
|
221
|
+
"example": "<ds-map-cluster-marker></ds-map-cluster-marker>"
|
|
222
|
+
},
|
|
223
|
+
"react": {
|
|
224
|
+
"import": "import { DsMapClusterMarker } from '@ds-mo/ui/react';",
|
|
225
|
+
"example": "<DsMapClusterMarker />"
|
|
226
|
+
},
|
|
227
|
+
"vue": {
|
|
228
|
+
"import": "import { DsMapClusterMarker } from '@ds-mo/ui/vue';",
|
|
229
|
+
"example": "<DsMapClusterMarker />"
|
|
230
|
+
},
|
|
231
|
+
"angular": {
|
|
232
|
+
"import": "import { DsMapClusterMarker } from '@ds-mo/ui/angular/ds-map-cluster-marker';",
|
|
233
|
+
"example": "<ds-map-cluster-marker></ds-map-cluster-marker>"
|
|
234
|
+
},
|
|
235
|
+
"peerDependencies": {
|
|
236
|
+
"required": [
|
|
237
|
+
"@ds-mo/tokens ^6.5.2",
|
|
238
|
+
"@ds-mo/icons ^8.1.1"
|
|
239
|
+
],
|
|
240
|
+
"frameworks": "Custom Elements; React 18/19 wrappers; Vue 3 wrappers; Angular 19-22 standalone adapters."
|
|
241
|
+
}
|
|
242
|
+
}
|
|
243
|
+
},
|
|
244
|
+
"dependencies": [
|
|
245
|
+
"@ds-mo/ui",
|
|
246
|
+
"@ds-mo/tokens"
|
|
247
|
+
],
|
|
248
|
+
"registryDependencies": [
|
|
249
|
+
"text"
|
|
250
|
+
],
|
|
251
|
+
"files": [
|
|
252
|
+
{
|
|
253
|
+
"path": "src/wc/components/MapClusterMarker/MapClusterMarker.css",
|
|
254
|
+
"content": "@import '../../utils/focus-ring.css';\n@import '../../utils/map-marker.css';\n\n:host {\n --_map-marker-background: var(--color-entity-cluster-marker-background);\n --_map-marker-foreground: var(--color-entity-cluster-marker-foreground);\n --_map-marker-interaction-hover: var(--color-entity-cluster-marker-interaction-hover);\n --_map-marker-interaction-pressed: var(--color-entity-cluster-marker-interaction-pressed);\n}\n\n.map-marker__button {\n width: max-content;\n padding-inline: 0;\n border-radius: var(--dimension-radius-half);\n}\n\n.map-marker__button,\n.map-marker__caption {\n -webkit-backdrop-filter: blur(var(--effect-blur-md));\n backdrop-filter: blur(var(--effect-blur-md));\n}\n\n.map-cluster-marker__button--padded {\n padding-inline: var(--dimension-space-100);\n}\n\n.map-cluster-marker__count {\n position: relative;\n z-index: 2;\n display: inline-flex;\n white-space: nowrap;\n}\n",
|
|
255
|
+
"type": "registry:ui"
|
|
256
|
+
},
|
|
257
|
+
{
|
|
258
|
+
"path": "src/wc/components/MapClusterMarker/MapClusterMarker.tsx",
|
|
259
|
+
"content": "import { Component, Event, EventEmitter, h, Host, Method, Prop } from '@stencil/core';\n\nconst formatCount = (count: number): string => {\n const normalizedCount = Math.max(0, Math.round(Number.isFinite(count) ? count : 0));\n if (normalizedCount < 1000) return String(normalizedCount);\n const compactCount = Math.round(normalizedCount / 100) / 10;\n return `${Number.isInteger(compactCount) ? compactCount.toFixed(0) : compactCount.toFixed(1)}k`;\n};\n\n@Component({\n tag: 'ds-map-cluster-marker',\n styleUrl: 'MapClusterMarker.css',\n scoped: true,\n})\nexport class MapClusterMarker {\n /** Accessible action label. Describe the cluster and what activation does. */\n @Prop() label!: string;\n\n /** Short visible cluster identifier revealed on hover or keyboard focus. */\n @Prop() caption: string = '';\n\n /** Number of represented entities, compacted at one thousand and above. */\n @Prop() count: number = 0;\n\n /** De-emphasizes this cluster when an owner-managed selection is active elsewhere. */\n @Prop({ reflect: true }) dimmed: boolean = false;\n\n /** Fired when the cluster's native button is activated. */\n @Event() dsClick!: EventEmitter<MouseEvent>;\n\n private buttonEl?: HTMLButtonElement;\n\n /** Moves keyboard focus to the cluster button. */\n @Method()\n async setFocus(): Promise<void> {\n this.buttonEl?.focus();\n }\n\n private handleClick = (event: MouseEvent) => {\n this.dsClick.emit(event);\n };\n\n render() {\n const caption = this.caption.trim();\n const countLabel = formatCount(this.count);\n\n return (\n <Host class={{ 'map-cluster-marker': true, 'map-marker--dimmed': this.dimmed }}>\n <button\n ref={element => (this.buttonEl = element)}\n type=\"button\"\n class={{\n 'map-marker__button': true,\n 'map-cluster-marker__button--padded': countLabel.length > 1,\n 'ds-focus-ring': true,\n }}\n aria-label={this.label}\n onClick={this.handleClick}\n >\n <ds-text\n class=\"map-cluster-marker__count\"\n as=\"span\"\n variant=\"text-body-medium\"\n color=\"inherit\"\n emphasis\n >\n {countLabel}\n </ds-text>\n </button>\n {caption && (\n <ds-text\n class=\"map-marker__caption\"\n as=\"span\"\n variant=\"text-caption\"\n color=\"inherit\"\n aria-hidden=\"true\"\n >\n {caption}\n </ds-text>\n )}\n </Host>\n );\n }\n}\n",
|
|
260
|
+
"type": "registry:ui"
|
|
261
|
+
}
|
|
262
|
+
]
|
|
263
|
+
}
|
|
@@ -0,0 +1,321 @@
|
|
|
1
|
+
{
|
|
2
|
+
"$schema": "https://ui.shadcn.com/schema/registry-item.json",
|
|
3
|
+
"name": "map-entity-marker",
|
|
4
|
+
"title": "MapEntityMarker",
|
|
5
|
+
"description": "Engine-independent map marker button for a vehicle, asset, person, or travel group with operating-state color, bearing, an optional dashed outline, and a hover or focus caption.",
|
|
6
|
+
"type": "registry:ui",
|
|
7
|
+
"meta": {
|
|
8
|
+
"library": "@ds-mo/ui",
|
|
9
|
+
"distribution": "npm",
|
|
10
|
+
"storybook": "https://zainadeel.github.io/compomo/?path=/story/map-entity-marker",
|
|
11
|
+
"source": "src/wc/components/MapEntityMarker/MapEntityMarker.tsx",
|
|
12
|
+
"intentStatus": "complete",
|
|
13
|
+
"intent": {
|
|
14
|
+
"audience": "general",
|
|
15
|
+
"status": "experimental",
|
|
16
|
+
"summary": "Engine-independent map marker button for a vehicle, asset, person, or travel group with operating-state color, bearing, an optional dashed outline, and a hover or focus caption.",
|
|
17
|
+
"useWhen": [
|
|
18
|
+
"An application map needs a consistent interactive marker for one entity.",
|
|
19
|
+
"The map engine can mount a custom element and retain ownership of coordinates, anchoring, and camera behavior."
|
|
20
|
+
],
|
|
21
|
+
"avoidWhen": [
|
|
22
|
+
"Several nearby entities must be represented as one count; use MapClusterMarker.",
|
|
23
|
+
"The content is a legend item or non-interactive status swatch.",
|
|
24
|
+
"The component would be asked to own geographic coordinates, clustering, map-engine adapters, or selected-entity business state."
|
|
25
|
+
],
|
|
26
|
+
"alternatives": [
|
|
27
|
+
{
|
|
28
|
+
"when": "Several nearby entities are represented by a compact count.",
|
|
29
|
+
"component": "component:ds-map-cluster-marker",
|
|
30
|
+
"reason": "MapClusterMarker owns cluster count formatting and cluster interaction geometry."
|
|
31
|
+
}
|
|
32
|
+
],
|
|
33
|
+
"commonlyComposedWith": [
|
|
34
|
+
"component:ds-map-cluster-marker",
|
|
35
|
+
"component:ds-icon"
|
|
36
|
+
],
|
|
37
|
+
"accessibility": [
|
|
38
|
+
"The component renders a native button and label is its accessible action name. Prefer an action-oriented label such as ‘Open vehicle 412’.",
|
|
39
|
+
"Caption is a supplemental visual identifier and is hidden from assistive technology to avoid duplicating label.",
|
|
40
|
+
"Keyboard focus reveals the same caption as hover and uses the shared visible focus ring.",
|
|
41
|
+
"Operating-state and outline meaning must be present in nearby map legend or application detail content; do not rely on marker color alone.",
|
|
42
|
+
"The optional dashed outline remains differentiated by a dashed border in forced-colors mode."
|
|
43
|
+
],
|
|
44
|
+
"states": [
|
|
45
|
+
"Unknown represents unavailable current motion and uses the existing stale-background token. The application resolves stale telemetry to Unknown regardless of previous motion; a known Immobilized state takes precedence.",
|
|
46
|
+
"The dashed outline is an independent visual option. Unknown is solid unless the owner explicitly requests dashes.",
|
|
47
|
+
"immobilized always renders the upright MapKey glyph instead of the entity icon so the state is identifiable without interpreting bearing.",
|
|
48
|
+
"bearing rotates only MapEntityTravelGroup and MapEntityVehicle glyphs and is normalized to a clockwise value from 0 through 359 degrees. Immobilized, asset, person, and other glyphs remain upright.",
|
|
49
|
+
"dimmed is visual de-emphasis only. The map owner decides when selection context should dim peer markers and keeps every marker operable. A dimmed marker returns to full opacity while hovered or keyboard-focused so its revealed caption remains legible.",
|
|
50
|
+
"Activation emits dsClick without changing application selection internally."
|
|
51
|
+
],
|
|
52
|
+
"responsiveBehavior": [
|
|
53
|
+
"Marker geometry stays fixed across breakpoints so map-engine anchors remain stable.",
|
|
54
|
+
"The map owner controls collision handling, overlays, and viewport-aware caption placement."
|
|
55
|
+
],
|
|
56
|
+
"frameworkCaveats": {
|
|
57
|
+
"customElements": [
|
|
58
|
+
"A map engine that accepts an Element for a custom marker or div icon can mount ds-map-entity-marker directly.",
|
|
59
|
+
"Listen for dsClick and keep selected entity, z-index, coordinates, and camera movement in application state."
|
|
60
|
+
],
|
|
61
|
+
"react": [
|
|
62
|
+
"Pass numeric bearing as a property and handle dsClick through the generated event binding."
|
|
63
|
+
],
|
|
64
|
+
"angular": [
|
|
65
|
+
"Bind bearing as a number and keep map-engine marker lifecycle in the owning map adapter."
|
|
66
|
+
]
|
|
67
|
+
},
|
|
68
|
+
"references": [
|
|
69
|
+
{
|
|
70
|
+
"label": "Storybook examples",
|
|
71
|
+
"path": "src/wc/components/MapEntityMarker/MapEntityMarker.stories.ts"
|
|
72
|
+
}
|
|
73
|
+
],
|
|
74
|
+
"styling": {
|
|
75
|
+
"rationale": "The component owns stable map anchoring geometry and semantic marker recipes; the map engine owns host placement and stacking.",
|
|
76
|
+
"protected": [
|
|
77
|
+
{
|
|
78
|
+
"properties": [
|
|
79
|
+
"width",
|
|
80
|
+
"height",
|
|
81
|
+
"min-width",
|
|
82
|
+
"padding",
|
|
83
|
+
"border",
|
|
84
|
+
"border-radius",
|
|
85
|
+
"background",
|
|
86
|
+
"color",
|
|
87
|
+
"opacity"
|
|
88
|
+
],
|
|
89
|
+
"reason": "Marker geometry, operating-state colors, outline distinction, and de-emphasis are one accessible visual recipe.",
|
|
90
|
+
"props": [
|
|
91
|
+
"state",
|
|
92
|
+
"dashed",
|
|
93
|
+
"dimmed"
|
|
94
|
+
]
|
|
95
|
+
}
|
|
96
|
+
],
|
|
97
|
+
"customProperties": []
|
|
98
|
+
}
|
|
99
|
+
},
|
|
100
|
+
"api": {
|
|
101
|
+
"props": {
|
|
102
|
+
"bearing": {
|
|
103
|
+
"type": "number",
|
|
104
|
+
"resolvedType": "number",
|
|
105
|
+
"attribute": "bearing",
|
|
106
|
+
"default": "0",
|
|
107
|
+
"required": false,
|
|
108
|
+
"mutable": false,
|
|
109
|
+
"description": "Clockwise map bearing for travel-group and vehicle icons. Values are normalized to 0–359."
|
|
110
|
+
},
|
|
111
|
+
"caption": {
|
|
112
|
+
"type": "string",
|
|
113
|
+
"resolvedType": "string",
|
|
114
|
+
"attribute": "caption",
|
|
115
|
+
"default": "''",
|
|
116
|
+
"required": false,
|
|
117
|
+
"mutable": false,
|
|
118
|
+
"description": "Short visible identifier revealed on hover or keyboard focus."
|
|
119
|
+
},
|
|
120
|
+
"dashed": {
|
|
121
|
+
"type": "boolean",
|
|
122
|
+
"resolvedType": "boolean",
|
|
123
|
+
"attribute": "dashed",
|
|
124
|
+
"default": "false",
|
|
125
|
+
"required": false,
|
|
126
|
+
"mutable": false,
|
|
127
|
+
"description": "Adds an optional dashed outline without changing the operating state."
|
|
128
|
+
},
|
|
129
|
+
"dimmed": {
|
|
130
|
+
"type": "boolean",
|
|
131
|
+
"resolvedType": "boolean",
|
|
132
|
+
"attribute": "dimmed",
|
|
133
|
+
"default": "false",
|
|
134
|
+
"required": false,
|
|
135
|
+
"mutable": false,
|
|
136
|
+
"description": "De-emphasizes this marker when an owner-managed selection is active elsewhere."
|
|
137
|
+
},
|
|
138
|
+
"icon": {
|
|
139
|
+
"type": "string",
|
|
140
|
+
"resolvedType": "string",
|
|
141
|
+
"attribute": "icon",
|
|
142
|
+
"default": "'MapEntityTravelGroup'",
|
|
143
|
+
"required": false,
|
|
144
|
+
"mutable": false,
|
|
145
|
+
"description": "Canonical IcoMo icon name for the represented map entity. Immobilized state uses MapKey."
|
|
146
|
+
},
|
|
147
|
+
"label": {
|
|
148
|
+
"type": "string",
|
|
149
|
+
"resolvedType": "string",
|
|
150
|
+
"attribute": "label",
|
|
151
|
+
"required": true,
|
|
152
|
+
"mutable": false,
|
|
153
|
+
"description": "Accessible action label. Describe what activating the marker opens."
|
|
154
|
+
},
|
|
155
|
+
"state": {
|
|
156
|
+
"type": "MapEntityMarkerState",
|
|
157
|
+
"resolvedType": "\"idling\" | \"immobilized\" | \"moving\" | \"stationary\" | \"unknown\"",
|
|
158
|
+
"attribute": "state",
|
|
159
|
+
"default": "'moving'",
|
|
160
|
+
"required": false,
|
|
161
|
+
"mutable": false,
|
|
162
|
+
"description": "Semantic operating state that selects the marker background."
|
|
163
|
+
}
|
|
164
|
+
},
|
|
165
|
+
"events": [
|
|
166
|
+
{
|
|
167
|
+
"name": "dsClick",
|
|
168
|
+
"detail": "MouseEvent",
|
|
169
|
+
"bubbles": true,
|
|
170
|
+
"cancelable": true,
|
|
171
|
+
"composed": true,
|
|
172
|
+
"description": "Fired when the marker's native button is activated."
|
|
173
|
+
}
|
|
174
|
+
],
|
|
175
|
+
"methods": [
|
|
176
|
+
{
|
|
177
|
+
"name": "setFocus",
|
|
178
|
+
"signature": "setFocus() => Promise<void>",
|
|
179
|
+
"description": "Moves keyboard focus to the marker button."
|
|
180
|
+
}
|
|
181
|
+
],
|
|
182
|
+
"slots": []
|
|
183
|
+
},
|
|
184
|
+
"props": {
|
|
185
|
+
"bearing": {
|
|
186
|
+
"type": "number",
|
|
187
|
+
"resolvedType": "number",
|
|
188
|
+
"attribute": "bearing",
|
|
189
|
+
"default": "0",
|
|
190
|
+
"required": false,
|
|
191
|
+
"mutable": false,
|
|
192
|
+
"description": "Clockwise map bearing for travel-group and vehicle icons. Values are normalized to 0–359."
|
|
193
|
+
},
|
|
194
|
+
"caption": {
|
|
195
|
+
"type": "string",
|
|
196
|
+
"resolvedType": "string",
|
|
197
|
+
"attribute": "caption",
|
|
198
|
+
"default": "''",
|
|
199
|
+
"required": false,
|
|
200
|
+
"mutable": false,
|
|
201
|
+
"description": "Short visible identifier revealed on hover or keyboard focus."
|
|
202
|
+
},
|
|
203
|
+
"dashed": {
|
|
204
|
+
"type": "boolean",
|
|
205
|
+
"resolvedType": "boolean",
|
|
206
|
+
"attribute": "dashed",
|
|
207
|
+
"default": "false",
|
|
208
|
+
"required": false,
|
|
209
|
+
"mutable": false,
|
|
210
|
+
"description": "Adds an optional dashed outline without changing the operating state."
|
|
211
|
+
},
|
|
212
|
+
"dimmed": {
|
|
213
|
+
"type": "boolean",
|
|
214
|
+
"resolvedType": "boolean",
|
|
215
|
+
"attribute": "dimmed",
|
|
216
|
+
"default": "false",
|
|
217
|
+
"required": false,
|
|
218
|
+
"mutable": false,
|
|
219
|
+
"description": "De-emphasizes this marker when an owner-managed selection is active elsewhere."
|
|
220
|
+
},
|
|
221
|
+
"icon": {
|
|
222
|
+
"type": "string",
|
|
223
|
+
"resolvedType": "string",
|
|
224
|
+
"attribute": "icon",
|
|
225
|
+
"default": "'MapEntityTravelGroup'",
|
|
226
|
+
"required": false,
|
|
227
|
+
"mutable": false,
|
|
228
|
+
"description": "Canonical IcoMo icon name for the represented map entity. Immobilized state uses MapKey."
|
|
229
|
+
},
|
|
230
|
+
"label": {
|
|
231
|
+
"type": "string",
|
|
232
|
+
"resolvedType": "string",
|
|
233
|
+
"attribute": "label",
|
|
234
|
+
"required": true,
|
|
235
|
+
"mutable": false,
|
|
236
|
+
"description": "Accessible action label. Describe what activating the marker opens."
|
|
237
|
+
},
|
|
238
|
+
"state": {
|
|
239
|
+
"type": "MapEntityMarkerState",
|
|
240
|
+
"resolvedType": "\"idling\" | \"immobilized\" | \"moving\" | \"stationary\" | \"unknown\"",
|
|
241
|
+
"attribute": "state",
|
|
242
|
+
"default": "'moving'",
|
|
243
|
+
"required": false,
|
|
244
|
+
"mutable": false,
|
|
245
|
+
"description": "Semantic operating state that selects the marker background."
|
|
246
|
+
}
|
|
247
|
+
},
|
|
248
|
+
"events": [
|
|
249
|
+
{
|
|
250
|
+
"name": "dsClick",
|
|
251
|
+
"detail": "MouseEvent",
|
|
252
|
+
"bubbles": true,
|
|
253
|
+
"cancelable": true,
|
|
254
|
+
"composed": true,
|
|
255
|
+
"description": "Fired when the marker's native button is activated."
|
|
256
|
+
}
|
|
257
|
+
],
|
|
258
|
+
"methods": [
|
|
259
|
+
{
|
|
260
|
+
"name": "setFocus",
|
|
261
|
+
"signature": "setFocus() => Promise<void>",
|
|
262
|
+
"description": "Moves keyboard focus to the marker button."
|
|
263
|
+
}
|
|
264
|
+
],
|
|
265
|
+
"slots": [],
|
|
266
|
+
"exports": {
|
|
267
|
+
"customElement": "ds-map-entity-marker",
|
|
268
|
+
"react": "DsMapEntityMarker",
|
|
269
|
+
"vue": "DsMapEntityMarker",
|
|
270
|
+
"angular": "DsMapEntityMarker"
|
|
271
|
+
},
|
|
272
|
+
"consumption": {
|
|
273
|
+
"install": "npm install @ds-mo/ui @ds-mo/tokens @ds-mo/icons",
|
|
274
|
+
"cssSetup": "import '@ds-mo/tokens';\nimport '@ds-mo/tokens/reset';\nimport '@ds-mo/tokens/globals';",
|
|
275
|
+
"customElements": {
|
|
276
|
+
"import": "import '@ds-mo/ui/dist/components/ds-map-entity-marker.js';",
|
|
277
|
+
"example": "<ds-map-entity-marker></ds-map-entity-marker>"
|
|
278
|
+
},
|
|
279
|
+
"react": {
|
|
280
|
+
"import": "import { DsMapEntityMarker } from '@ds-mo/ui/react';",
|
|
281
|
+
"example": "<DsMapEntityMarker />"
|
|
282
|
+
},
|
|
283
|
+
"vue": {
|
|
284
|
+
"import": "import { DsMapEntityMarker } from '@ds-mo/ui/vue';",
|
|
285
|
+
"example": "<DsMapEntityMarker />"
|
|
286
|
+
},
|
|
287
|
+
"angular": {
|
|
288
|
+
"import": "import { DsMapEntityMarker } from '@ds-mo/ui/angular/ds-map-entity-marker';",
|
|
289
|
+
"example": "<ds-map-entity-marker></ds-map-entity-marker>"
|
|
290
|
+
},
|
|
291
|
+
"peerDependencies": {
|
|
292
|
+
"required": [
|
|
293
|
+
"@ds-mo/tokens ^6.5.2",
|
|
294
|
+
"@ds-mo/icons ^8.1.1"
|
|
295
|
+
],
|
|
296
|
+
"frameworks": "Custom Elements; React 18/19 wrappers; Vue 3 wrappers; Angular 19-22 standalone adapters."
|
|
297
|
+
}
|
|
298
|
+
}
|
|
299
|
+
},
|
|
300
|
+
"dependencies": [
|
|
301
|
+
"@ds-mo/ui",
|
|
302
|
+
"@ds-mo/tokens",
|
|
303
|
+
"@ds-mo/icons"
|
|
304
|
+
],
|
|
305
|
+
"registryDependencies": [
|
|
306
|
+
"icon",
|
|
307
|
+
"text"
|
|
308
|
+
],
|
|
309
|
+
"files": [
|
|
310
|
+
{
|
|
311
|
+
"path": "src/wc/components/MapEntityMarker/MapEntityMarker.css",
|
|
312
|
+
"content": "@import '../../utils/focus-ring.css';\n@import '../../utils/map-marker.css';\n\n:host([state='moving']) {\n --_map-marker-background: var(--color-entity-marker-background-in-motion);\n}\n\n:host([state='idling']) {\n --_map-marker-background: var(--color-entity-marker-background-idling);\n}\n\n:host([state='stationary']) {\n --_map-marker-background: var(--color-entity-marker-background-stationary);\n}\n\n:host([state='immobilized']) {\n --_map-marker-background: var(--color-entity-marker-background-immobilized);\n}\n\n:host([state='unknown']) {\n --_map-marker-background: var(--color-entity-marker-background-stale);\n}\n\n.map-marker__button {\n width: var(--dimension-size-300);\n border-radius: var(--dimension-radius-half);\n}\n\n:host(.map-entity-marker--dashed) .map-marker__button::after {\n display: none;\n}\n\n.map-entity-marker__dashed-outline {\n position: absolute;\n z-index: 3;\n inset: 0;\n width: 100%;\n height: 100%;\n overflow: visible;\n pointer-events: none;\n transform: rotate(-90deg);\n fill: none;\n stroke: currentcolor;\n stroke-width: 1;\n stroke-linecap: butt;\n}\n\n.map-entity-marker__glyph {\n position: relative;\n z-index: 2;\n display: inline-flex;\n transform: rotate(var(--ds-map-entity-marker-bearing));\n}\n\n@media (forced-colors: active) {\n :host(.map-entity-marker--dashed) .map-marker__button::after {\n display: block;\n outline-style: dashed;\n }\n\n .map-entity-marker__dashed-outline {\n display: none;\n }\n}\n",
|
|
313
|
+
"type": "registry:ui"
|
|
314
|
+
},
|
|
315
|
+
{
|
|
316
|
+
"path": "src/wc/components/MapEntityMarker/MapEntityMarker.tsx",
|
|
317
|
+
"content": "import { Component, Event, EventEmitter, h, Host, Method, Prop } from '@stencil/core';\n\nexport type MapEntityMarkerState = 'moving' | 'idling' | 'stationary' | 'immobilized' | 'unknown';\n\nconst normalizeBearing = (bearing: number): number => {\n if (!Number.isFinite(bearing)) return 0;\n return ((bearing % 360) + 360) % 360;\n};\n\nconst BEARING_ICONS = new Set(['MapEntityTravelGroup', 'MapEntityVehicle']);\n\nconst DASHED_OUTLINE_CENTER = 8;\nconst DASHED_OUTLINE_RADIUS = 6.5;\nconst DASHED_OUTLINE_SEGMENT_ANGLE = 45;\nconst DASHED_OUTLINE_HALF_GAP_ANGLE = 6;\n\nconst dashedOutlinePoint = (angle: number): [number, number] => {\n const radians = (angle * Math.PI) / 180;\n return [\n DASHED_OUTLINE_CENTER + DASHED_OUTLINE_RADIUS * Math.cos(radians),\n DASHED_OUTLINE_CENTER + DASHED_OUTLINE_RADIUS * Math.sin(radians),\n ];\n};\n\nconst DASHED_OUTLINE_PATH = Array.from({ length: 8 }, (_, index) => {\n const segmentStart = index * DASHED_OUTLINE_SEGMENT_ANGLE + DASHED_OUTLINE_HALF_GAP_ANGLE;\n const segmentEnd = (index + 1) * DASHED_OUTLINE_SEGMENT_ANGLE - DASHED_OUTLINE_HALF_GAP_ANGLE;\n const [startX, startY] = dashedOutlinePoint(segmentStart);\n const [endX, endY] = dashedOutlinePoint(segmentEnd);\n return `M ${startX.toFixed(3)} ${startY.toFixed(3)} A ${DASHED_OUTLINE_RADIUS} ${DASHED_OUTLINE_RADIUS} 0 0 1 ${endX.toFixed(3)} ${endY.toFixed(3)}`;\n}).join(' ');\n\n@Component({\n tag: 'ds-map-entity-marker',\n styleUrl: 'MapEntityMarker.css',\n scoped: true,\n})\nexport class MapEntityMarker {\n /** Accessible action label. Describe what activating the marker opens. */\n @Prop() label!: string;\n\n /** Short visible identifier revealed on hover or keyboard focus. */\n @Prop() caption: string = '';\n\n /** Canonical IcoMo icon name for the represented map entity. Immobilized state uses MapKey. */\n @Prop() icon: string = 'MapEntityTravelGroup';\n\n /** Semantic operating state that selects the marker background. */\n @Prop({ reflect: true }) state: MapEntityMarkerState = 'moving';\n\n /** Adds an optional dashed outline without changing the operating state. */\n @Prop({ reflect: true }) dashed: boolean = false;\n\n /** Clockwise map bearing for travel-group and vehicle icons. Values are normalized to 0–359. */\n @Prop() bearing: number = 0;\n\n /** De-emphasizes this marker when an owner-managed selection is active elsewhere. */\n @Prop({ reflect: true }) dimmed: boolean = false;\n\n /** Fired when the marker's native button is activated. */\n @Event() dsClick!: EventEmitter<MouseEvent>;\n\n private buttonEl?: HTMLButtonElement;\n\n /** Moves keyboard focus to the marker button. */\n @Method()\n async setFocus(): Promise<void> {\n this.buttonEl?.focus();\n }\n\n private handleClick = (event: MouseEvent) => {\n this.dsClick.emit(event);\n };\n\n render() {\n const caption = this.caption.trim();\n const markerIcon = this.state === 'immobilized' ? 'MapKey' : this.icon;\n const bearing = BEARING_ICONS.has(markerIcon) ? normalizeBearing(this.bearing) : 0;\n\n return (\n <Host\n class={{\n 'map-entity-marker': true,\n 'map-marker--dimmed': this.dimmed,\n 'map-entity-marker--dashed': this.dashed,\n }}\n >\n <button\n ref={element => (this.buttonEl = element)}\n type=\"button\"\n class=\"map-marker__button ds-focus-ring\"\n aria-label={this.label}\n onClick={this.handleClick}\n >\n <span\n class=\"map-entity-marker__glyph\"\n style={{ '--ds-map-entity-marker-bearing': `${bearing}deg` }}\n aria-hidden=\"true\"\n >\n <ds-icon name={markerIcon} size=\"sm\" color=\"inherit\"></ds-icon>\n </span>\n {this.dashed && (\n // eslint-disable-next-line compomo/prefer-ds-icon -- The dashed ring is a component-owned geometric primitive with eight exact equal arcs.\n <svg class=\"map-entity-marker__dashed-outline\" viewBox=\"0 0 16 16\" aria-hidden=\"true\">\n <path d={DASHED_OUTLINE_PATH}></path>\n </svg>\n )}\n </button>\n {caption && (\n <ds-text\n class=\"map-marker__caption\"\n as=\"span\"\n variant=\"text-caption\"\n color=\"inherit\"\n aria-hidden=\"true\"\n >\n {caption}\n </ds-text>\n )}\n </Host>\n );\n }\n}\n",
|
|
318
|
+
"type": "registry:ui"
|
|
319
|
+
}
|
|
320
|
+
]
|
|
321
|
+
}
|
|
@@ -138,8 +138,8 @@
|
|
|
138
138
|
},
|
|
139
139
|
"peerDependencies": {
|
|
140
140
|
"required": [
|
|
141
|
-
"@ds-mo/tokens ^6.5.
|
|
142
|
-
"@ds-mo/icons ^8.1.
|
|
141
|
+
"@ds-mo/tokens ^6.5.2",
|
|
142
|
+
"@ds-mo/icons ^8.1.1"
|
|
143
143
|
],
|
|
144
144
|
"frameworks": "Custom Elements; React 18/19 wrappers; Vue 3 wrappers; Angular 19-22 standalone adapters."
|
|
145
145
|
}
|
|
@@ -563,8 +563,8 @@
|
|
|
563
563
|
"complexPropertyNote": "Assign these non-primitive values as JavaScript properties: anchor, boundary, items, sections.",
|
|
564
564
|
"peerDependencies": {
|
|
565
565
|
"required": [
|
|
566
|
-
"@ds-mo/tokens ^6.5.
|
|
567
|
-
"@ds-mo/icons ^8.1.
|
|
566
|
+
"@ds-mo/tokens ^6.5.2",
|
|
567
|
+
"@ds-mo/icons ^8.1.1"
|
|
568
568
|
],
|
|
569
569
|
"frameworks": "Custom Elements; React 18/19 wrappers; Vue 3 wrappers; Angular 19-22 standalone adapters."
|
|
570
570
|
}
|
|
@@ -167,8 +167,8 @@
|
|
|
167
167
|
},
|
|
168
168
|
"peerDependencies": {
|
|
169
169
|
"required": [
|
|
170
|
-
"@ds-mo/tokens ^6.5.
|
|
171
|
-
"@ds-mo/icons ^8.1.
|
|
170
|
+
"@ds-mo/tokens ^6.5.2",
|
|
171
|
+
"@ds-mo/icons ^8.1.1"
|
|
172
172
|
],
|
|
173
173
|
"frameworks": "Custom Elements; React 18/19 wrappers; Vue 3 wrappers; Angular 19-22 standalone adapters."
|
|
174
174
|
}
|
|
@@ -127,8 +127,8 @@
|
|
|
127
127
|
},
|
|
128
128
|
"peerDependencies": {
|
|
129
129
|
"required": [
|
|
130
|
-
"@ds-mo/tokens ^6.5.
|
|
131
|
-
"@ds-mo/icons ^8.1.
|
|
130
|
+
"@ds-mo/tokens ^6.5.2",
|
|
131
|
+
"@ds-mo/icons ^8.1.1"
|
|
132
132
|
],
|
|
133
133
|
"frameworks": "Custom Elements; React 18/19 wrappers; Vue 3 wrappers; Angular 19-22 standalone adapters."
|
|
134
134
|
}
|