@ds-mo/ui 14.22.2 → 14.23.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 +5 -1
- package/dist/agent.json +56 -13
- package/dist/angular/ds-panel-tools.d.ts +7 -1
- package/dist/angular/ds-panel-tools.js +7 -4
- package/dist/angular/ds-shell-app.d.ts +7 -1
- package/dist/angular/ds-shell-app.js +5 -2
- package/dist/angular/ds-shell-tools.d.ts +4 -1
- package/dist/angular/ds-shell-tools.js +7 -4
- package/dist/components/ds-message-scroller.js +1 -1
- package/dist/components/ds-message-scroller.js.map +1 -1
- package/dist/components/ds-panel-tools.js +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-tools.js +1 -1
- package/dist/components/p-Bd-Kpekh.js +2 -0
- package/dist/components/p-Bd-Kpekh.js.map +1 -0
- package/dist/components/p-C13fWp2x.js +2 -0
- package/dist/components/p-C13fWp2x.js.map +1 -0
- package/dist/docs/components.json +178 -3
- package/dist/lib/components/PanelTools/panel-tools-types.d.ts +76 -1
- package/dist/lib/components/ShellApp/shell-app-types.d.ts +3 -1
- package/dist/lib/shell/index.d.ts +1 -1
- package/dist/lib/shell/index.js.map +2 -2
- package/dist/mcp-data/registry/agent-activity.json +1 -1
- package/dist/mcp-data/registry/agent-questionnaire.json +1 -1
- package/dist/mcp-data/registry/agent-response.json +1 -1
- package/dist/mcp-data/registry/agent-source-list.json +1 -1
- package/dist/mcp-data/registry/agent-tool-call.json +1 -1
- package/dist/mcp-data/registry/attachment-list.json +1 -1
- package/dist/mcp-data/registry/avatar.json +1 -1
- package/dist/mcp-data/registry/badge.json +1 -1
- package/dist/mcp-data/registry/banner.json +1 -1
- package/dist/mcp-data/registry/bar-action.json +1 -1
- package/dist/mcp-data/registry/bar-nav.json +1 -1
- package/dist/mcp-data/registry/bar-title.json +1 -1
- package/dist/mcp-data/registry/bar-workflow.json +1 -1
- package/dist/mcp-data/registry/breadcrumb.json +1 -1
- package/dist/mcp-data/registry/button-filled.json +1 -1
- package/dist/mcp-data/registry/button-unfilled.json +1 -1
- package/dist/mcp-data/registry/card-chart.json +1 -1
- package/dist/mcp-data/registry/card-overview.json +1 -1
- package/dist/mcp-data/registry/card-setting.json +1 -1
- package/dist/mcp-data/registry/chart-legend.json +1 -1
- package/dist/mcp-data/registry/chart.json +1 -1
- package/dist/mcp-data/registry/checkbox.json +1 -1
- package/dist/mcp-data/registry/chip.json +1 -1
- package/dist/mcp-data/registry/code-block.json +1 -1
- package/dist/mcp-data/registry/conversation-list-item.json +1 -1
- package/dist/mcp-data/registry/conversation-list-section.json +1 -1
- package/dist/mcp-data/registry/conversation-list.json +1 -1
- package/dist/mcp-data/registry/divider.json +1 -1
- package/dist/mcp-data/registry/empty-state.json +1 -1
- package/dist/mcp-data/registry/field.json +1 -1
- package/dist/mcp-data/registry/filter-menu.json +1 -1
- package/dist/mcp-data/registry/icon.json +1 -1
- package/dist/mcp-data/registry/input.json +1 -1
- package/dist/mcp-data/registry/loader.json +1 -1
- package/dist/mcp-data/registry/markdown.json +1 -1
- package/dist/mcp-data/registry/menu.json +1 -1
- package/dist/mcp-data/registry/message-actions.json +1 -1
- package/dist/mcp-data/registry/message-bubble.json +1 -1
- package/dist/mcp-data/registry/message-composer.json +1 -1
- package/dist/mcp-data/registry/message-scroller.json +9 -2
- package/dist/mcp-data/registry/message.json +1 -1
- package/dist/mcp-data/registry/mobile-bar-nav.json +1 -1
- package/dist/mcp-data/registry/mobile-header.json +1 -1
- package/dist/mcp-data/registry/mobile-section-switcher.json +1 -1
- package/dist/mcp-data/registry/mobile-sheet-nav.json +1 -1
- package/dist/mcp-data/registry/modal.json +1 -1
- package/dist/mcp-data/registry/pagination.json +1 -1
- package/dist/mcp-data/registry/panel-nav.json +1 -1
- package/dist/mcp-data/registry/panel-sub-nav.json +1 -1
- package/dist/mcp-data/registry/panel-tool-header.json +1 -1
- package/dist/mcp-data/registry/panel-tool-search.json +1 -1
- package/dist/mcp-data/registry/panel-tools.json +62 -15
- package/dist/mcp-data/registry/paper-texture.json +1 -1
- package/dist/mcp-data/registry/radio.json +1 -1
- package/dist/mcp-data/registry/registry.json +56 -13
- package/dist/mcp-data/registry/scroll-overlay.json +1 -1
- package/dist/mcp-data/registry/select.json +1 -1
- package/dist/mcp-data/registry/shell-app.json +22 -3
- package/dist/mcp-data/registry/shell-page.json +1 -1
- package/dist/mcp-data/registry/shell-tools.json +39 -6
- package/dist/mcp-data/registry/skeleton.json +1 -1
- package/dist/mcp-data/registry/slider.json +1 -1
- package/dist/mcp-data/registry/swatch-picker.json +1 -1
- package/dist/mcp-data/registry/switch.json +1 -1
- package/dist/mcp-data/registry/tab-group.json +1 -1
- package/dist/mcp-data/registry/table-filter.json +1 -1
- package/dist/mcp-data/registry/table-group.json +1 -1
- package/dist/mcp-data/registry/table-saved-views.json +1 -1
- package/dist/mcp-data/registry/table-search.json +1 -1
- package/dist/mcp-data/registry/table-sort.json +1 -1
- package/dist/mcp-data/registry/table-toolbar.json +1 -1
- package/dist/mcp-data/registry/table.json +1 -1
- package/dist/mcp-data/registry/tag.json +1 -1
- package/dist/mcp-data/registry/text.json +1 -1
- package/dist/mcp-data/registry/toast.json +1 -1
- package/dist/mcp-data/registry/tooltip-chart.json +1 -1
- package/dist/mcp-data/registry/tooltip.json +1 -1
- package/dist/mcp-data/registry/typing-indicator.json +1 -1
- package/dist/react/ds-panel-tools.d.ts +2 -1
- package/dist/react/ds-panel-tools.js +1 -0
- package/dist/react/ds-shell-app.d.ts +2 -1
- package/dist/react/ds-shell-app.js +1 -0
- package/dist/react/ds-shell-tools.d.ts +2 -1
- package/dist/react/ds-shell-tools.js +2 -1
- package/dist/types/components/MessageScroller/MessageScroller.d.ts +14 -0
- package/dist/types/components/MessageScroller/message-scroller-transcript.d.ts +9 -0
- package/dist/types/components/PanelTools/PanelTools.d.ts +17 -1
- package/dist/types/components/PanelTools/index.d.ts +1 -1
- package/dist/types/components/PanelTools/panel-tools-types.d.ts +76 -1
- package/dist/types/components/PanelTools/panel-tools-utils.d.ts +17 -1
- package/dist/types/components/ShellApp/ShellApp.d.ts +4 -1
- package/dist/types/components/ShellApp/shell-app-types.d.ts +3 -1
- package/dist/types/components/ShellTools/ShellTools.d.ts +5 -1
- package/dist/types/components/ShellTools/index.d.ts +1 -1
- package/dist/types/components.d.ts +34 -2
- package/dist/types/shell/index.d.ts +1 -1
- package/dist/vue/ds-panel-tools.js +3 -0
- package/dist/vue/ds-shell-app.js +2 -0
- package/dist/vue/ds-shell-tools.js +5 -2
- package/package.json +3 -3
- package/dist/components/p-COFw_fcj.js +0 -2
- package/dist/components/p-COFw_fcj.js.map +0 -1
- package/dist/components/p-CvHrCyuz.js +0 -2
- package/dist/components/p-CvHrCyuz.js.map +0 -1
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
{
|
|
2
|
-
"timestamp": "2026-08-
|
|
2
|
+
"timestamp": "2026-08-31T23:08:34",
|
|
3
3
|
"compiler": {
|
|
4
4
|
"name": "@stencil/core",
|
|
5
5
|
"version": "4.43.5",
|
|
@@ -2041,6 +2041,7 @@
|
|
|
2041
2041
|
"ds-mobile-bar-nav",
|
|
2042
2042
|
"ds-mobile-sheet-nav",
|
|
2043
2043
|
"ds-panel-nav",
|
|
2044
|
+
"ds-panel-tools",
|
|
2044
2045
|
"ds-select",
|
|
2045
2046
|
"ds-tab-group"
|
|
2046
2047
|
],
|
|
@@ -2078,6 +2079,9 @@
|
|
|
2078
2079
|
"ds-panel-nav": [
|
|
2079
2080
|
"ds-badge"
|
|
2080
2081
|
],
|
|
2082
|
+
"ds-panel-tools": [
|
|
2083
|
+
"ds-badge"
|
|
2084
|
+
],
|
|
2081
2085
|
"ds-select": [
|
|
2082
2086
|
"ds-badge"
|
|
2083
2087
|
],
|
|
@@ -9251,6 +9255,7 @@
|
|
|
9251
9255
|
"dependents": [
|
|
9252
9256
|
"ds-pagination",
|
|
9253
9257
|
"ds-panel-tool-search",
|
|
9258
|
+
"ds-panel-tools",
|
|
9254
9259
|
"ds-table",
|
|
9255
9260
|
"ds-table-search",
|
|
9256
9261
|
"ds-table-toolbar"
|
|
@@ -9263,6 +9268,9 @@
|
|
|
9263
9268
|
"ds-panel-tool-search": [
|
|
9264
9269
|
"ds-divider"
|
|
9265
9270
|
],
|
|
9271
|
+
"ds-panel-tools": [
|
|
9272
|
+
"ds-divider"
|
|
9273
|
+
],
|
|
9266
9274
|
"ds-table": [
|
|
9267
9275
|
"ds-divider"
|
|
9268
9276
|
],
|
|
@@ -11095,6 +11103,7 @@
|
|
|
11095
11103
|
"ds-mobile-bar-nav",
|
|
11096
11104
|
"ds-mobile-sheet-nav",
|
|
11097
11105
|
"ds-panel-nav",
|
|
11106
|
+
"ds-panel-tools",
|
|
11098
11107
|
"ds-select",
|
|
11099
11108
|
"ds-tab-group",
|
|
11100
11109
|
"ds-table",
|
|
@@ -11157,6 +11166,9 @@
|
|
|
11157
11166
|
"ds-panel-nav": [
|
|
11158
11167
|
"ds-icon"
|
|
11159
11168
|
],
|
|
11169
|
+
"ds-panel-tools": [
|
|
11170
|
+
"ds-icon"
|
|
11171
|
+
],
|
|
11160
11172
|
"ds-select": [
|
|
11161
11173
|
"ds-icon"
|
|
11162
11174
|
],
|
|
@@ -19319,6 +19331,41 @@
|
|
|
19319
19331
|
"docsTags": [],
|
|
19320
19332
|
"usage": {},
|
|
19321
19333
|
"props": [
|
|
19334
|
+
{
|
|
19335
|
+
"name": "accessories",
|
|
19336
|
+
"type": "PanelToolsRailAccessory[]",
|
|
19337
|
+
"complexType": {
|
|
19338
|
+
"original": "PanelToolsRailAccessory[]",
|
|
19339
|
+
"resolved": "PanelToolsRailAccessory[]",
|
|
19340
|
+
"references": {
|
|
19341
|
+
"PanelToolsRailAccessory": {
|
|
19342
|
+
"location": "import",
|
|
19343
|
+
"path": "./panel-tools-types",
|
|
19344
|
+
"id": "src/wc/components/PanelTools/panel-tools-types.ts::PanelToolsRailAccessory",
|
|
19345
|
+
"referenceLocation": "PanelToolsRailAccessory"
|
|
19346
|
+
}
|
|
19347
|
+
}
|
|
19348
|
+
},
|
|
19349
|
+
"mutable": false,
|
|
19350
|
+
"reflectToAttr": false,
|
|
19351
|
+
"docs": "Desktop/tablet-only application-owned rail boundaries and direct intents.\nSet via JS property and replace the array reference to update.",
|
|
19352
|
+
"docsTags": [
|
|
19353
|
+
{
|
|
19354
|
+
"name": "default",
|
|
19355
|
+
"text": "[]"
|
|
19356
|
+
}
|
|
19357
|
+
],
|
|
19358
|
+
"default": "[]",
|
|
19359
|
+
"values": [
|
|
19360
|
+
{
|
|
19361
|
+
"type": "PanelToolsRailAccessory[]"
|
|
19362
|
+
}
|
|
19363
|
+
],
|
|
19364
|
+
"optional": false,
|
|
19365
|
+
"required": false,
|
|
19366
|
+
"getter": false,
|
|
19367
|
+
"setter": false
|
|
19368
|
+
},
|
|
19322
19369
|
{
|
|
19323
19370
|
"name": "activeTool",
|
|
19324
19371
|
"type": "string",
|
|
@@ -19814,6 +19861,27 @@
|
|
|
19814
19861
|
"docs": "Emitted when fullscreen changes, including Escape-initiated exits.",
|
|
19815
19862
|
"docsTags": []
|
|
19816
19863
|
},
|
|
19864
|
+
{
|
|
19865
|
+
"event": "dsRailAccessoryAction",
|
|
19866
|
+
"detail": "PanelToolsRailAccessoryActionDetail",
|
|
19867
|
+
"bubbles": true,
|
|
19868
|
+
"complexType": {
|
|
19869
|
+
"original": "PanelToolsRailAccessoryActionDetail",
|
|
19870
|
+
"resolved": "PanelToolsRailAccessoryActionDetail",
|
|
19871
|
+
"references": {
|
|
19872
|
+
"PanelToolsRailAccessoryActionDetail": {
|
|
19873
|
+
"location": "import",
|
|
19874
|
+
"path": "./panel-tools-types",
|
|
19875
|
+
"id": "src/wc/components/PanelTools/panel-tools-types.ts::PanelToolsRailAccessoryActionDetail",
|
|
19876
|
+
"referenceLocation": "PanelToolsRailAccessoryActionDetail"
|
|
19877
|
+
}
|
|
19878
|
+
}
|
|
19879
|
+
},
|
|
19880
|
+
"cancelable": true,
|
|
19881
|
+
"composed": true,
|
|
19882
|
+
"docs": "Direct accessory intent. Emitting this event never changes the active tool or drawer.",
|
|
19883
|
+
"docsTags": []
|
|
19884
|
+
},
|
|
19817
19885
|
{
|
|
19818
19886
|
"event": "dsToolChange",
|
|
19819
19887
|
"detail": "{ id: string; selected: boolean; }",
|
|
@@ -19854,12 +19922,20 @@
|
|
|
19854
19922
|
"dependencies": [
|
|
19855
19923
|
"ds-tooltip",
|
|
19856
19924
|
"ds-button-unfilled",
|
|
19925
|
+
"ds-text",
|
|
19926
|
+
"ds-icon",
|
|
19927
|
+
"ds-badge",
|
|
19928
|
+
"ds-divider",
|
|
19857
19929
|
"ds-panel-tool-header"
|
|
19858
19930
|
],
|
|
19859
19931
|
"dependencyGraph": {
|
|
19860
19932
|
"ds-panel-tools": [
|
|
19861
19933
|
"ds-tooltip",
|
|
19862
19934
|
"ds-button-unfilled",
|
|
19935
|
+
"ds-text",
|
|
19936
|
+
"ds-icon",
|
|
19937
|
+
"ds-badge",
|
|
19938
|
+
"ds-divider",
|
|
19863
19939
|
"ds-panel-tool-header"
|
|
19864
19940
|
],
|
|
19865
19941
|
"ds-tooltip": [
|
|
@@ -22691,6 +22767,27 @@
|
|
|
22691
22767
|
"docs": "Managed drawer/fullscreen presentation state.",
|
|
22692
22768
|
"docsTags": []
|
|
22693
22769
|
},
|
|
22770
|
+
{
|
|
22771
|
+
"event": "dsRailAccessoryAction",
|
|
22772
|
+
"detail": "PanelToolsRailAccessoryActionDetail",
|
|
22773
|
+
"bubbles": true,
|
|
22774
|
+
"complexType": {
|
|
22775
|
+
"original": "PanelToolsRailAccessoryActionDetail",
|
|
22776
|
+
"resolved": "PanelToolsRailAccessoryActionDetail",
|
|
22777
|
+
"references": {
|
|
22778
|
+
"PanelToolsRailAccessoryActionDetail": {
|
|
22779
|
+
"location": "import",
|
|
22780
|
+
"path": "../PanelTools/panel-tools-types",
|
|
22781
|
+
"id": "src/wc/components/PanelTools/panel-tools-types.ts::PanelToolsRailAccessoryActionDetail",
|
|
22782
|
+
"referenceLocation": "PanelToolsRailAccessoryActionDetail"
|
|
22783
|
+
}
|
|
22784
|
+
}
|
|
22785
|
+
},
|
|
22786
|
+
"cancelable": true,
|
|
22787
|
+
"composed": true,
|
|
22788
|
+
"docs": "Managed desktop/tablet rail accessory intent.",
|
|
22789
|
+
"docsTags": []
|
|
22790
|
+
},
|
|
22694
22791
|
{
|
|
22695
22792
|
"event": "dsResponsiveModeChange",
|
|
22696
22793
|
"detail": "{ mode: ShellResponsiveMode; }",
|
|
@@ -22855,6 +22952,10 @@
|
|
|
22855
22952
|
"ds-panel-tools": [
|
|
22856
22953
|
"ds-tooltip",
|
|
22857
22954
|
"ds-button-unfilled",
|
|
22955
|
+
"ds-text",
|
|
22956
|
+
"ds-icon",
|
|
22957
|
+
"ds-badge",
|
|
22958
|
+
"ds-divider",
|
|
22858
22959
|
"ds-panel-tool-header"
|
|
22859
22960
|
],
|
|
22860
22961
|
"ds-panel-tool-header": [
|
|
@@ -23323,6 +23424,41 @@
|
|
|
23323
23424
|
"docsTags": [],
|
|
23324
23425
|
"usage": {},
|
|
23325
23426
|
"props": [
|
|
23427
|
+
{
|
|
23428
|
+
"name": "accessories",
|
|
23429
|
+
"type": "PanelToolsRailAccessory[]",
|
|
23430
|
+
"complexType": {
|
|
23431
|
+
"original": "PanelToolsRailAccessory[]",
|
|
23432
|
+
"resolved": "PanelToolsRailAccessory[]",
|
|
23433
|
+
"references": {
|
|
23434
|
+
"PanelToolsRailAccessory": {
|
|
23435
|
+
"location": "import",
|
|
23436
|
+
"path": "../PanelTools/panel-tools-types",
|
|
23437
|
+
"id": "src/wc/components/PanelTools/panel-tools-types.ts::PanelToolsRailAccessory",
|
|
23438
|
+
"referenceLocation": "PanelToolsRailAccessory"
|
|
23439
|
+
}
|
|
23440
|
+
}
|
|
23441
|
+
},
|
|
23442
|
+
"mutable": false,
|
|
23443
|
+
"reflectToAttr": false,
|
|
23444
|
+
"docs": "Desktop/tablet rail accessories. Intentionally omitted from the mobile tool stage.",
|
|
23445
|
+
"docsTags": [
|
|
23446
|
+
{
|
|
23447
|
+
"name": "default",
|
|
23448
|
+
"text": "[]"
|
|
23449
|
+
}
|
|
23450
|
+
],
|
|
23451
|
+
"default": "[]",
|
|
23452
|
+
"values": [
|
|
23453
|
+
{
|
|
23454
|
+
"type": "PanelToolsRailAccessory[]"
|
|
23455
|
+
}
|
|
23456
|
+
],
|
|
23457
|
+
"optional": false,
|
|
23458
|
+
"required": false,
|
|
23459
|
+
"getter": false,
|
|
23460
|
+
"setter": false
|
|
23461
|
+
},
|
|
23326
23462
|
{
|
|
23327
23463
|
"name": "activeTool",
|
|
23328
23464
|
"type": "string",
|
|
@@ -23879,6 +24015,27 @@
|
|
|
23879
24015
|
"docs": "",
|
|
23880
24016
|
"docsTags": []
|
|
23881
24017
|
},
|
|
24018
|
+
{
|
|
24019
|
+
"event": "dsRailAccessoryAction",
|
|
24020
|
+
"detail": "PanelToolsRailAccessoryActionDetail",
|
|
24021
|
+
"bubbles": true,
|
|
24022
|
+
"complexType": {
|
|
24023
|
+
"original": "PanelToolsRailAccessoryActionDetail",
|
|
24024
|
+
"resolved": "PanelToolsRailAccessoryActionDetail",
|
|
24025
|
+
"references": {
|
|
24026
|
+
"PanelToolsRailAccessoryActionDetail": {
|
|
24027
|
+
"location": "import",
|
|
24028
|
+
"path": "../PanelTools/panel-tools-types",
|
|
24029
|
+
"id": "src/wc/components/PanelTools/panel-tools-types.ts::PanelToolsRailAccessoryActionDetail",
|
|
24030
|
+
"referenceLocation": "PanelToolsRailAccessoryActionDetail"
|
|
24031
|
+
}
|
|
24032
|
+
}
|
|
24033
|
+
},
|
|
24034
|
+
"cancelable": true,
|
|
24035
|
+
"composed": true,
|
|
24036
|
+
"docs": "",
|
|
24037
|
+
"docsTags": []
|
|
24038
|
+
},
|
|
23882
24039
|
{
|
|
23883
24040
|
"event": "dsToolChange",
|
|
23884
24041
|
"detail": "{ id: string; selected: boolean; }",
|
|
@@ -23925,6 +24082,10 @@
|
|
|
23925
24082
|
"ds-panel-tools": [
|
|
23926
24083
|
"ds-tooltip",
|
|
23927
24084
|
"ds-button-unfilled",
|
|
24085
|
+
"ds-text",
|
|
24086
|
+
"ds-icon",
|
|
24087
|
+
"ds-badge",
|
|
24088
|
+
"ds-divider",
|
|
23928
24089
|
"ds-panel-tool-header"
|
|
23929
24090
|
],
|
|
23930
24091
|
"ds-tooltip": [
|
|
@@ -31531,6 +31692,7 @@
|
|
|
31531
31692
|
"ds-panel-sub-nav",
|
|
31532
31693
|
"ds-panel-tool-header",
|
|
31533
31694
|
"ds-panel-tool-search",
|
|
31695
|
+
"ds-panel-tools",
|
|
31534
31696
|
"ds-radio",
|
|
31535
31697
|
"ds-select",
|
|
31536
31698
|
"ds-slider",
|
|
@@ -31663,6 +31825,9 @@
|
|
|
31663
31825
|
"ds-panel-tool-search": [
|
|
31664
31826
|
"ds-text"
|
|
31665
31827
|
],
|
|
31828
|
+
"ds-panel-tools": [
|
|
31829
|
+
"ds-text"
|
|
31830
|
+
],
|
|
31666
31831
|
"ds-radio": [
|
|
31667
31832
|
"ds-text"
|
|
31668
31833
|
],
|
|
@@ -33753,7 +33918,12 @@
|
|
|
33753
33918
|
"path": "src/wc/components/PanelTools/panel-tools-types.ts"
|
|
33754
33919
|
},
|
|
33755
33920
|
"src/wc/components/PanelTools/panel-tools-types.ts::PanelToolsItem": {
|
|
33756
|
-
"declaration": "export interface PanelToolsItem {\n id: PanelToolsToolId;\n /** Icon name for <ds-icon>. */\n icon: string;\n /** Visible and accessible fallback label for custom tool ids. */\n label?: string;\n /** Explicit rail region; canonical Agents/Help placement is the fallback. */\n railPlacement?:
|
|
33921
|
+
"declaration": "export interface PanelToolsItem {\n id: PanelToolsToolId;\n /** Icon name for <ds-icon>. */\n icon: string;\n /** Visible and accessible fallback label for custom tool ids. */\n label?: string;\n /** Explicit rail region; canonical Agents/Help placement is the fallback. */\n railPlacement?: PanelToolsRailPlacement;\n /** Stable ordering within the selected rail region. */\n order?: number;\n /** Optional shortcut label displayed by the tooltip. */\n shortcutKey?: string;\n /** Mobile destination recipe; canonical ids retain their explicit defaults. */\n mobileDestination?: 'search' | 'inbox' | 'activity' | 'messages' | 'agents' | 'help';\n /** Whether this rail button is currently pressed/active. */\n selected?: boolean;\n /** Show a notification dot. */\n dot?: boolean;\n isInactive?: boolean;\n ariaLabel?: string;\n}",
|
|
33922
|
+
"docstring": "",
|
|
33923
|
+
"path": "src/wc/components/PanelTools/panel-tools-types.ts"
|
|
33924
|
+
},
|
|
33925
|
+
"src/wc/components/PanelTools/panel-tools-types.ts::PanelToolsRailAccessory": {
|
|
33926
|
+
"declaration": "export type PanelToolsRailAccessory =\n | PanelToolsRailDividerAccessory\n | PanelToolsRailShortcutAccessory\n | PanelToolsRailTransientAccessory;",
|
|
33757
33927
|
"docstring": "",
|
|
33758
33928
|
"path": "src/wc/components/PanelTools/panel-tools-types.ts"
|
|
33759
33929
|
},
|
|
@@ -33767,6 +33937,11 @@
|
|
|
33767
33937
|
"docstring": "",
|
|
33768
33938
|
"path": "src/wc/components/PanelTools/panel-tools-types.ts"
|
|
33769
33939
|
},
|
|
33940
|
+
"src/wc/components/PanelTools/panel-tools-types.ts::PanelToolsRailAccessoryActionDetail": {
|
|
33941
|
+
"declaration": "export interface PanelToolsRailAccessoryActionDetail {\n accessoryId: string;\n actionId: string;\n /** Rendered action control, suitable for anchoring an application-owned overlay. */\n anchor: HTMLElement;\n}",
|
|
33942
|
+
"docstring": "",
|
|
33943
|
+
"path": "src/wc/components/PanelTools/panel-tools-types.ts"
|
|
33944
|
+
},
|
|
33770
33945
|
"src/wc/components/PaperTexture/paper-texture-types.ts::PaperTextureConfig": {
|
|
33771
33946
|
"declaration": "export interface PaperTextureConfig {\n image?: HTMLImageElement | string;\n colorFront?: string;\n colorBack?: string;\n contrast?: number;\n roughness?: number;\n fiber?: number;\n fiberSize?: number;\n crumples?: number;\n crumpleSize?: number;\n folds?: number;\n foldCount?: number;\n fade?: number;\n drops?: number;\n seed?: number;\n fit?: PaperTextureFit;\n scale?: number;\n rotation?: number;\n originX?: number;\n originY?: number;\n offsetX?: number;\n offsetY?: number;\n worldWidth?: number;\n worldHeight?: number;\n speed?: number;\n frame?: number;\n minPixelRatio?: number;\n maxPixelCount?: number;\n /** CSS opacity applied after the shader has rendered. */\n opacity?: number;\n}",
|
|
33772
33947
|
"docstring": "Literal parameters forwarded to Paper Design's paper texture shader.\nColors intentionally remain ordinary CSS color strings; they are not token\nreferences and are parsed once into shader RGBA uniforms.",
|
|
@@ -33793,7 +33968,7 @@
|
|
|
33793
33968
|
"path": "src/wc/components/ShellApp/shell-app-types.ts"
|
|
33794
33969
|
},
|
|
33795
33970
|
"src/wc/components/ShellApp/shell-app-types.ts::ShellToolsConfig": {
|
|
33796
|
-
"declaration": "export interface ShellToolsConfig {\n items?: PanelToolsItem[];\n headers?: PanelToolsHeaders;\n storageKey?: string;\n fullscreenHeaderMode?: 'shared' | 'split';\n toolsLabel?: string;\n toolShortcutsLabel?: string;\n inboxLabel?: string;\n inboxNavigationLabel?: string;\n /** Temporarily conceal the mobile bar while a tool-owned keyboard interaction needs the space. */\n mobileBarHidden?: boolean;\n}",
|
|
33971
|
+
"declaration": "export interface ShellToolsConfig {\n items?: PanelToolsItem[];\n /** Desktop/tablet-only direct rail intents and decorative group boundaries. */\n accessories?: PanelToolsRailAccessory[];\n headers?: PanelToolsHeaders;\n storageKey?: string;\n fullscreenHeaderMode?: 'shared' | 'split';\n toolsLabel?: string;\n toolShortcutsLabel?: string;\n inboxLabel?: string;\n inboxNavigationLabel?: string;\n /** Temporarily conceal the mobile bar while a tool-owned keyboard interaction needs the space. */\n mobileBarHidden?: boolean;\n}",
|
|
33797
33972
|
"docstring": "Product-owned global tools supplied to managed ShellApp. Tool view content\nremains mounted in the corresponding named `*-view` slots.",
|
|
33798
33973
|
"path": "src/wc/components/ShellApp/shell-app-types.ts"
|
|
33799
33974
|
},
|
|
@@ -9,6 +9,7 @@ export declare const PANEL_TOOLS_PRIMARY_TOOL_ID: CanonicalPanelToolsToolId;
|
|
|
9
9
|
export declare const PANEL_TOOLS_FOOTER_TOOL_ID: CanonicalPanelToolsToolId;
|
|
10
10
|
export declare const PANEL_TOOLS_LABELS: Record<CanonicalPanelToolsToolId, string>;
|
|
11
11
|
export declare const PANEL_TOOLS_SHORTCUTS: Partial<Record<CanonicalPanelToolsToolId, string>>;
|
|
12
|
+
export type PanelToolsRailPlacement = 'header' | 'body' | 'footer';
|
|
12
13
|
export interface PanelToolsItem {
|
|
13
14
|
id: PanelToolsToolId;
|
|
14
15
|
/** Icon name for <ds-icon>. */
|
|
@@ -16,7 +17,7 @@ export interface PanelToolsItem {
|
|
|
16
17
|
/** Visible and accessible fallback label for custom tool ids. */
|
|
17
18
|
label?: string;
|
|
18
19
|
/** Explicit rail region; canonical Agents/Help placement is the fallback. */
|
|
19
|
-
railPlacement?:
|
|
20
|
+
railPlacement?: PanelToolsRailPlacement;
|
|
20
21
|
/** Stable ordering within the selected rail region. */
|
|
21
22
|
order?: number;
|
|
22
23
|
/** Optional shortcut label displayed by the tooltip. */
|
|
@@ -30,6 +31,79 @@ export interface PanelToolsItem {
|
|
|
30
31
|
isInactive?: boolean;
|
|
31
32
|
ariaLabel?: string;
|
|
32
33
|
}
|
|
34
|
+
export type PanelToolsRailAccessoryVisual = {
|
|
35
|
+
type: 'icon';
|
|
36
|
+
icon: string;
|
|
37
|
+
} | {
|
|
38
|
+
type: 'initial';
|
|
39
|
+
initial: string;
|
|
40
|
+
} | {
|
|
41
|
+
type: 'image';
|
|
42
|
+
src: string;
|
|
43
|
+
};
|
|
44
|
+
export interface PanelToolsRailAccessoryAction {
|
|
45
|
+
/** Stable application-owned action id emitted with the accessory id. */
|
|
46
|
+
id: string;
|
|
47
|
+
/** Overrides the accessory label for the primary action. */
|
|
48
|
+
ariaLabel?: string;
|
|
49
|
+
isInactive?: boolean;
|
|
50
|
+
}
|
|
51
|
+
export interface PanelToolsRailAccessorySecondaryAction {
|
|
52
|
+
id: string;
|
|
53
|
+
icon: string;
|
|
54
|
+
ariaLabel: string;
|
|
55
|
+
isInactive?: boolean;
|
|
56
|
+
}
|
|
57
|
+
export type PanelToolsRailTransientTone = 'active' | 'positive';
|
|
58
|
+
interface PanelToolsRailAccessoryBase {
|
|
59
|
+
/** Stable application-owned identity. Duplicate or blank ids are omitted. */
|
|
60
|
+
id: string;
|
|
61
|
+
/** Explicit rail region; accessories never infer placement from their id. */
|
|
62
|
+
railPlacement: PanelToolsRailPlacement;
|
|
63
|
+
/** Stable ordering within the selected rail region. */
|
|
64
|
+
order: number;
|
|
65
|
+
}
|
|
66
|
+
/** Decorative boundary between application-owned rail accessory groups. */
|
|
67
|
+
export interface PanelToolsRailDividerAccessory extends PanelToolsRailAccessoryBase {
|
|
68
|
+
type: 'divider';
|
|
69
|
+
}
|
|
70
|
+
/**
|
|
71
|
+
* A compact one-action shortcut that matches standard tool-button geometry.
|
|
72
|
+
* PanelTools owns its initial orb, notification dot, and transient interaction paint.
|
|
73
|
+
*/
|
|
74
|
+
export interface PanelToolsRailShortcutAccessory extends PanelToolsRailAccessoryBase {
|
|
75
|
+
type: 'shortcut';
|
|
76
|
+
/** Accessible shortcut name and action-label fallback. */
|
|
77
|
+
ariaLabel: string;
|
|
78
|
+
/** One or two displayed graphemes. Longer values are truncated visually. */
|
|
79
|
+
initials: string;
|
|
80
|
+
/** Supplemental notification dot. Include its meaning in the accessible label when needed. */
|
|
81
|
+
dot?: boolean;
|
|
82
|
+
action: PanelToolsRailAccessoryAction;
|
|
83
|
+
}
|
|
84
|
+
/**
|
|
85
|
+
* A direct application intent that never selects a tool or changes drawer state.
|
|
86
|
+
* PanelTools owns the two-control-height surface and its focus behavior.
|
|
87
|
+
*/
|
|
88
|
+
export interface PanelToolsRailTransientAccessory extends PanelToolsRailAccessoryBase {
|
|
89
|
+
type: 'transient';
|
|
90
|
+
/** Accessible accessory name and primary-action fallback label. */
|
|
91
|
+
ariaLabel: string;
|
|
92
|
+
visual: PanelToolsRailAccessoryVisual;
|
|
93
|
+
/** State announced with the primary action and shown in its tooltip. */
|
|
94
|
+
statusText: string;
|
|
95
|
+
/** Bold surface treatment. Active uses brand; positive uses positive semantic color. */
|
|
96
|
+
statusTone: PanelToolsRailTransientTone;
|
|
97
|
+
primaryAction: PanelToolsRailAccessoryAction;
|
|
98
|
+
secondaryAction?: PanelToolsRailAccessorySecondaryAction;
|
|
99
|
+
}
|
|
100
|
+
export type PanelToolsRailAccessory = PanelToolsRailDividerAccessory | PanelToolsRailShortcutAccessory | PanelToolsRailTransientAccessory;
|
|
101
|
+
export interface PanelToolsRailAccessoryActionDetail {
|
|
102
|
+
accessoryId: string;
|
|
103
|
+
actionId: string;
|
|
104
|
+
/** Rendered action control, suitable for anchoring an application-owned overlay. */
|
|
105
|
+
anchor: HTMLElement;
|
|
106
|
+
}
|
|
33
107
|
/** Canonical shell recipe used by Lab and by managed ShellApp examples. */
|
|
34
108
|
export declare const PANEL_TOOLS_DEFAULT_ITEMS: PanelToolsItem[];
|
|
35
109
|
export interface PanelToolsHeaderAction {
|
|
@@ -64,3 +138,4 @@ export interface PanelToolsHeaderConfig {
|
|
|
64
138
|
}
|
|
65
139
|
/** Per-tool header state. The application replaces the object when a tool changes depth or actions. */
|
|
66
140
|
export type PanelToolsHeaders = Partial<Record<PanelToolsToolId, PanelToolsHeaderConfig>>;
|
|
141
|
+
export {};
|
|
@@ -3,7 +3,7 @@ import type { BarTitleActionItem, BarTitlePrimaryAction } from '../BarTitle/bar-
|
|
|
3
3
|
import type { BreadcrumbItem } from '../Breadcrumb/breadcrumb-types';
|
|
4
4
|
import type { MobileHeaderTone } from '../MobileHeader/mobile-header-types';
|
|
5
5
|
import type { PanelNavGroup, PanelNavItem, PanelNavRouterMode } from '../PanelNav/panel-nav-types';
|
|
6
|
-
import type { PanelToolsHeaders, PanelToolsHeaderAction, PanelToolsItem } from '../PanelTools/panel-tools-types';
|
|
6
|
+
import type { PanelToolsHeaders, PanelToolsHeaderAction, PanelToolsItem, PanelToolsRailAccessory } from '../PanelTools/panel-tools-types';
|
|
7
7
|
import type { NavChromeStyle } from '../../shell/nav-chrome';
|
|
8
8
|
import type { ShellPageContentInset, ShellPageContentSurface } from '../ShellPage/shell-page-types';
|
|
9
9
|
export type ShellAppComposition = 'managed' | 'slotted';
|
|
@@ -93,6 +93,8 @@ export interface ShellPageChromeConfig {
|
|
|
93
93
|
*/
|
|
94
94
|
export interface ShellToolsConfig {
|
|
95
95
|
items?: PanelToolsItem[];
|
|
96
|
+
/** Desktop/tablet-only direct rail intents and decorative group boundaries. */
|
|
97
|
+
accessories?: PanelToolsRailAccessory[];
|
|
96
98
|
headers?: PanelToolsHeaders;
|
|
97
99
|
storageKey?: string;
|
|
98
100
|
fullscreenHeaderMode?: 'shared' | 'split';
|
|
@@ -3,7 +3,7 @@ export type { PanelNavChildItem, PanelNavChildSelectDetail, PanelNavGroup, Panel
|
|
|
3
3
|
export type { BarNavTab } from '../components/BarNav/bar-nav-types';
|
|
4
4
|
export type { ShellPageContentInset, ShellPageContentSurface, ShellPageDesktopHeaderPlacement, } from '../components/ShellPage/shell-page-types';
|
|
5
5
|
export type { ShellAppComposition, ShellNavigationConfig, ShellNavigationSelectDetail, ShellPageChromeConfig, ShellSectionNavigation, ShellToolsConfig, } from '../components/ShellApp/shell-app-types';
|
|
6
|
-
export type { PanelToolsHeaderAction, PanelToolsHeaderActionDetail, PanelToolHeaderActionDetail, PanelToolsHeaderConfig, PanelToolsHeaders, PanelToolsItem, PanelToolsToolId, } from '../components/PanelTools/panel-tools-types';
|
|
6
|
+
export type { PanelToolsHeaderAction, PanelToolsHeaderActionDetail, PanelToolHeaderActionDetail, PanelToolsHeaderConfig, PanelToolsHeaders, PanelToolsItem, PanelToolsRailAccessory, PanelToolsRailAccessoryAction, PanelToolsRailAccessoryActionDetail, PanelToolsRailAccessorySecondaryAction, PanelToolsRailAccessoryVisual, PanelToolsRailDividerAccessory, PanelToolsRailPlacement, PanelToolsRailShortcutAccessory, PanelToolsRailTransientAccessory, PanelToolsRailTransientTone, PanelToolsToolId, } from '../components/PanelTools/panel-tools-types';
|
|
7
7
|
export { PANEL_TOOLS_DEFAULT_ITEMS } from '../components/PanelTools/panel-tools-types';
|
|
8
8
|
export { NAV_STYLE_HINT_ATTR, readNavStyleAttr, setNavStyleHint, clearNavStyleHint, } from './nav-chrome';
|
|
9
9
|
export type { MenuPlacement } from '../components/Menu/menu-placement';
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": 3,
|
|
3
3
|
"sources": ["../../../src/wc/components/PanelTools/panel-tools-types.ts", "../../../src/wc/shell/nav-chrome.ts", "../../../src/wc/components/Menu/menu-placement.ts", "../../../src/wc/shell/shell-gradient-presets.ts", "../../../src/wc/shell/shell-responsive.ts"],
|
|
4
|
-
"sourcesContent": ["/** Application-owned tool id for the shell rail and responsive tool views. */\nexport type PanelToolsToolId = string;\n\n/** Canonical Motive shell recipe used when item metadata is omitted. */\nexport type CanonicalPanelToolsToolId =\n | 'search'\n | 'messages'\n | 'agents'\n | 'stacks'\n | 'activity'\n | 'help';\n\nexport const PANEL_TOOLS_TOOL_IDS: CanonicalPanelToolsToolId[] = [\n 'agents',\n 'messages',\n 'activity',\n 'search',\n 'stacks',\n 'help',\n];\n\n/** Rail header slot \u2014 mirrors panel-nav M logo row. */\nexport const PANEL_TOOLS_PRIMARY_TOOL_ID: CanonicalPanelToolsToolId = 'agents';\n\n/** Rail footer slot \u2014 flush to the bottom of the tools column. */\nexport const PANEL_TOOLS_FOOTER_TOOL_ID: CanonicalPanelToolsToolId = 'help';\n\nexport const PANEL_TOOLS_LABELS: Record<CanonicalPanelToolsToolId, string> = {\n search: 'Search',\n messages: 'Messages',\n stacks: 'Stacks',\n activity: 'Activity',\n agents: 'Agents',\n help: 'Help & Support',\n};\n\nexport const PANEL_TOOLS_SHORTCUTS: Partial<Record<CanonicalPanelToolsToolId, string>> = {\n search: 'K',\n agents: 'A',\n messages: 'M',\n stacks: 'S',\n activity: 'N',\n help: '/',\n};\n\nexport interface PanelToolsItem {\n id: PanelToolsToolId;\n /** Icon name for <ds-icon>. */\n icon: string;\n /** Visible and accessible fallback label for custom tool ids. */\n label?: string;\n /** Explicit rail region; canonical Agents/Help placement is the fallback. */\n railPlacement?: 'header' | 'body' | 'footer';\n /** Stable ordering within the selected rail region. */\n order?: number;\n /** Optional shortcut label displayed by the tooltip. */\n shortcutKey?: string;\n /** Mobile destination recipe; canonical ids retain their explicit defaults. */\n mobileDestination?: 'search' | 'inbox' | 'activity' | 'messages' | 'agents' | 'help';\n /** Whether this rail button is currently pressed/active. */\n selected?: boolean;\n /** Show a notification dot. */\n dot?: boolean;\n isInactive?: boolean;\n ariaLabel?: string;\n}\n\n/** Canonical shell recipe used by Lab and by managed ShellApp examples. */\nexport const PANEL_TOOLS_DEFAULT_ITEMS: PanelToolsItem[] = [\n {\n id: 'agents',\n icon: 'AI',\n label: PANEL_TOOLS_LABELS.agents,\n railPlacement: 'header',\n order: 0,\n shortcutKey: PANEL_TOOLS_SHORTCUTS.agents,\n mobileDestination: 'agents',\n },\n {\n id: 'messages',\n icon: 'MessageBubbleStack',\n label: PANEL_TOOLS_LABELS.messages,\n order: 0,\n shortcutKey: PANEL_TOOLS_SHORTCUTS.messages,\n mobileDestination: 'messages',\n },\n {\n id: 'activity',\n icon: 'Bell',\n label: PANEL_TOOLS_LABELS.activity,\n order: 1,\n shortcutKey: PANEL_TOOLS_SHORTCUTS.activity,\n mobileDestination: 'activity',\n },\n {\n id: 'search',\n icon: 'MagnifyingGlass',\n label: PANEL_TOOLS_LABELS.search,\n order: 2,\n shortcutKey: PANEL_TOOLS_SHORTCUTS.search,\n mobileDestination: 'search',\n },\n {\n id: 'help',\n icon: 'CircleQuestion',\n label: PANEL_TOOLS_LABELS.help,\n railPlacement: 'footer',\n order: 0,\n shortcutKey: PANEL_TOOLS_SHORTCUTS.help,\n mobileDestination: 'help',\n },\n];\n\nexport interface PanelToolsHeaderAction {\n id: string;\n icon: string;\n ariaLabel: string;\n triggerId?: string;\n controls?: string;\n expanded?: boolean;\n haspopup?: 'menu' | 'dialog' | 'listbox' | 'tree' | 'grid';\n pressed?: boolean;\n isInactive?: boolean;\n}\n\nexport interface PanelToolsHeaderActionDetail {\n tool: PanelToolsToolId;\n id: string;\n /** Rendered header action host. Pass this to an external overlay's element anchor prop. */\n anchor?: HTMLElement;\n}\n\nexport interface PanelToolHeaderActionDetail {\n id: string;\n originalEvent: MouseEvent;\n /** Rendered action host, suitable for anchoring an external overlay across a shadow boundary. */\n anchor: HTMLElement;\n}\n\nexport interface PanelToolsHeaderConfig {\n title?: string;\n showBack?: boolean;\n backIcon?: string;\n backAriaLabel?: string;\n actions?: PanelToolsHeaderAction[];\n}\n\n/** Per-tool header state. The application replaces the object when a tool changes depth or actions. */\nexport type PanelToolsHeaders = Partial<Record<PanelToolsToolId, PanelToolsHeaderConfig>>;\n", "/** Nav chrome style slot \u2014 dashboard vs settings. Colors unified for now; texture hooks use the class. */\nexport type NavChromeStyle = 'dashboard' | 'settings';\n\n/** Document hint for first paint before framework props land. */\nexport const NAV_STYLE_HINT_ATTR = 'data-nav-style';\n\nexport function readNavStyleAttr(attr: string | null): NavChromeStyle | undefined {\n if (attr === 'dashboard' || attr === 'settings') return attr;\n return undefined;\n}\n\nexport function setNavStyleHint(style: NavChromeStyle): void {\n if (typeof document === 'undefined') return;\n document.documentElement.setAttribute(NAV_STYLE_HINT_ATTR, style);\n}\n\nexport function clearNavStyleHint(): void {\n if (typeof document === 'undefined') return;\n document.documentElement.removeAttribute(NAV_STYLE_HINT_ATTR);\n}\n\nexport function resolveNavChromeStyle(\n styleProp: NavChromeStyle,\n hostAttr: string | null,\n docHint?: string | null\n): NavChromeStyle {\n const fromHost = readNavStyleAttr(hostAttr);\n if (fromHost) return fromHost;\n\n const hint =\n docHint !== undefined\n ? docHint\n : typeof document !== 'undefined'\n ? document.documentElement.getAttribute(NAV_STYLE_HINT_ATTR)\n : null;\n const fromHint = readNavStyleAttr(hint);\n if (fromHint) return fromHint;\n\n return styleProp;\n}\n\nexport function shouldResyncNavChromeStyle(\n renderedStyle: NavChromeStyle,\n style: NavChromeStyle\n): boolean {\n return renderedStyle !== style;\n}\n", "import type { ChoicePopupAnchorAlignment } from '../../utils/choice-popup-alignment';\nimport type { MenuAlign, MenuSide } from './menu-position';\n\n/** Placement props bindable on `ds-menu` (side, align, offsets). */\nexport interface MenuPlacement {\n side: MenuSide;\n align: MenuAlign;\n anchorAlignment: ChoicePopupAnchorAlignment;\n sideOffset: number | string;\n alignOffset: number | string;\n}\n\n/**\n * Canonical `ds-menu` placement for the **panel-nav footer user menu**.\n * Anchor from `dsNavUserAction` detail `{ anchor }` (id `ds-panel-nav-user-menu-anchor`).\n *\n * Not for BarNav overflow menus \u2014 those use `side=\"bottom\"` / `align=\"end\"` internally.\n * `align: 'end'` bottom-aligns the last choice cell on the anchor; the side offset nudges into the content area:\n * - `sideOffset` space-100 + space-050 (12px): 4px past the panel-nav outer edge (anchor is ~8px inset).\n * - `anchorAlignment: 'choice-cell'`: the shared section inset puts the last row edge on the footer user row.\n */\nexport const PANEL_NAV_USER_MENU_PLACEMENT = {\n side: 'right',\n align: 'end',\n anchorAlignment: 'choice-cell',\n sideOffset: 'calc(var(--dimension-space-100) + var(--dimension-space-050))',\n alignOffset: 0,\n} as const satisfies MenuPlacement;\n\n/**\n * Canonical placement for PanelNav's collapsed child-route flyout.\n * The parent control is 8px inside the panel edge, so a 12px side offset leaves\n * a 4px visual gap outside the panel. Start choice-cell alignment places the\n * first flyout row on the same block axis as its parent control.\n */\nexport const PANEL_NAV_CHILD_MENU_PLACEMENT = {\n side: 'right',\n align: 'start',\n anchorAlignment: 'choice-cell',\n sideOffset: 'calc(var(--dimension-space-100) + var(--dimension-space-050))',\n alignOffset: 0,\n} as const satisfies MenuPlacement;\n\n/**\n * Canonical placement for a menu opened by a PanelTools header action.\n * Matches BarNav overflow: the 32px trigger is 8px inside the 48px header, so\n * a 12px side offset places the popup 4px below the header edge. Choice-cell\n * alignment keeps the final menu item edge aligned with the trigger.\n */\nexport const PANEL_TOOLS_HEADER_MENU_PLACEMENT = {\n side: 'bottom',\n align: 'end',\n anchorAlignment: 'choice-cell',\n sideOffset: 'calc(var(--dimension-space-100) + var(--dimension-space-050))',\n alignOffset: 0,\n} as const satisfies MenuPlacement;\n", "/** Built-in shell chrome wash presets. */\nexport type ShellGradientPreset = 'none' | 'cool' | 'neutral' | 'warm' | 'fresh';\n\nexport const SHELL_GRADIENT_PRESETS: ShellGradientPreset[] = [\n 'none',\n 'cool',\n 'neutral',\n 'warm',\n 'fresh',\n];\n\n/** Wash presets shown after the `none` option in pickers. */\nexport const SHELL_GRADIENT_WASH_PRESETS: Exclude<ShellGradientPreset, 'none'>[] = [\n 'cool',\n 'neutral',\n 'warm',\n 'fresh',\n];\n\n/** Default wash when `gradient-preset` is omitted. */\nexport const DEFAULT_SHELL_GRADIENT_PRESET: ShellGradientPreset = 'neutral';\n\nexport const SHELL_GRADIENT_PRESET_LABELS: Record<ShellGradientPreset, string> = {\n none: 'None',\n cool: 'Cool',\n neutral: 'Neutral',\n warm: 'Warm',\n fresh: 'Fresh',\n};\n\nexport interface ShellGradientStop {\n color: string;\n position: number;\n}\n\nexport interface ShellGradientRecipe {\n opacity: number;\n stops: readonly ShellGradientStop[];\n}\n\nexport interface ShellGradientPickerPreview {\n backgroundColor: string;\n backgroundImage?: string;\n opacity?: number;\n}\n\nexport interface ShellGradientPickerOption {\n value: ShellGradientPreset;\n label: string;\n preview: ShellGradientPickerPreview;\n}\n\nexport interface ShellGradientPickerSection {\n options: ShellGradientPickerOption[];\n}\n\nconst SHELL_GRADIENT_RECIPES: Record<Exclude<ShellGradientPreset, 'none'>, ShellGradientRecipe> = {\n cool: {\n opacity: 0.1,\n stops: [\n { color: 'var(--color-background-transparent)', position: 0 },\n { color: 'var(--color-color-intent-blue-strong-background)', position: 100 },\n ],\n },\n neutral: {\n opacity: 0.1,\n stops: [\n { color: 'var(--color-background-transparent)', position: 0 },\n { color: 'var(--color-color-intent-grey-strong-background)', position: 100 },\n ],\n },\n warm: {\n opacity: 0.1,\n stops: [\n { color: 'var(--color-background-transparent)', position: 0 },\n { color: 'var(--color-color-intent-yellow-strong-background)', position: 100 },\n ],\n },\n fresh: {\n opacity: 0.4,\n stops: [\n { color: 'var(--color-color-intent-cyan-faint-background)', position: 0 },\n { color: 'var(--color-background-transparent)', position: 47 },\n { color: 'var(--color-background-transparent)', position: 58 },\n { color: 'var(--color-color-intent-red-faint-background)', position: 83 },\n { color: 'var(--color-color-intent-pink-faint-background)', position: 100 },\n ],\n },\n};\n\nconst GRADIENT_GEOMETRY = '100% 100% at 0% 0%';\n\nexport function shellGradientPresetStopToken(preset: ShellGradientPreset): string | null {\n if (preset === 'none') return null;\n const stops = SHELL_GRADIENT_RECIPES[preset].stops;\n return stops[stops.length - 1]?.color ?? null;\n}\n\nexport function shellGradientPresetRecipe(preset: ShellGradientPreset): ShellGradientRecipe | null {\n const normalized = normalizeShellGradientPreset(preset);\n return normalized === 'none' ? null : SHELL_GRADIENT_RECIPES[normalized];\n}\n\nexport function shellGradientPresetOpacity(preset: ShellGradientPreset): string {\n return String(shellGradientPresetRecipe(preset)?.opacity ?? 0);\n}\n\nexport function isShellGradientPreset(value: string): value is ShellGradientPreset {\n return (SHELL_GRADIENT_PRESETS as string[]).includes(value);\n}\n\n/**\n * Coerce unknown/absent presets to the default. Runtime values escape the\n * type: removing the reflected `gradient-preset` attribute (e.g. an Angular\n * `[attr.gradient-preset]=\"null\"` binding) drives the prop to null past its\n * field default \u2014 without normalization the stop lookup interpolates the\n * literal string \"undefined\" into CSS and the wash silently disappears.\n */\nexport function normalizeShellGradientPreset(\n value: string | null | undefined\n): ShellGradientPreset {\n return value != null && isShellGradientPreset(value) ? value : DEFAULT_SHELL_GRADIENT_PRESET;\n}\n\n/** Radial wash for a preset \u2014 transparent at top-left into the intent stop. `none` returns no image. */\nexport function buildShellRadialGradientForPreset(preset: ShellGradientPreset): string {\n const normalized = normalizeShellGradientPreset(preset);\n if (normalized === 'none') return 'none';\n\n return buildShellRadialGradientFromStops(SHELL_GRADIENT_RECIPES[normalized].stops);\n}\n\n/** Build the production shell geometry from an ordered set of design-time stops. */\nexport function buildShellRadialGradientFromStops(stops: readonly ShellGradientStop[]): string {\n const serialized = stops.map(stop => `${stop.color} ${stop.position}%`).join(', ');\n return `radial-gradient(${GRADIENT_GEOMETRY}, ${serialized})`;\n}\n\n/** Generic SwatchPicker sections for the fixed shell appearance presets. */\nexport function shellGradientPickerSections(): ShellGradientPickerSection[] {\n return [\n {\n options: [\n {\n value: 'none',\n label: SHELL_GRADIENT_PRESET_LABELS.none,\n preview: {\n backgroundColor: 'var(--color-background-secondary)',\n },\n },\n ],\n },\n {\n options: SHELL_GRADIENT_WASH_PRESETS.map(preset => ({\n value: preset,\n label: SHELL_GRADIENT_PRESET_LABELS[preset],\n preview: {\n backgroundColor: 'var(--color-background-secondary)',\n backgroundImage: buildShellRadialGradientForPreset(preset),\n opacity: Number(shellGradientPresetOpacity(preset)),\n },\n })),\n },\n ];\n}\n", "import type { PanelToolsToolId } from '../components/PanelTools/panel-tools-types';\n\nexport type ShellResponsiveMode = 'desktop' | 'tablet' | 'mobile';\nexport type MobileDestination =\n | 'area'\n | 'search'\n | 'inbox'\n | 'activity'\n | 'messages'\n | 'agents'\n | 'help';\nexport type ShellInboxToolId = PanelToolsToolId;\n\nexport const SHELL_DESKTOP_BREAKPOINT = 1200;\nexport const SHELL_MOBILE_BREAKPOINT = 768;\nexport const SHELL_DEFAULT_INBOX_TOOL: ShellInboxToolId = 'activity';\n\nexport function resolveShellResponsiveMode(width: number): ShellResponsiveMode {\n if (width >= SHELL_DESKTOP_BREAKPOINT) return 'desktop';\n if (width >= SHELL_MOBILE_BREAKPOINT) return 'tablet';\n return 'mobile';\n}\n\nexport function resolveManagedShellPageCapacity(\n mode: ShellResponsiveMode\n): 'roomy' | 'compact' | 'constrained' {\n return mode === 'desktop' ? 'roomy' : 'compact';\n}\n\nexport function shellMobileDestinationForTool(\n open: boolean,\n tool: PanelToolsToolId | ''\n): MobileDestination {\n if (!open || !tool) return 'area';\n if (tool === 'help') return 'help';\n if (tool === 'search') return 'search';\n if (tool === 'messages') return 'messages';\n if (tool === 'agents') return 'agents';\n return 'inbox';\n}\n\n/** Explicit item metadata wins over the legacy canonical Stacks/Activity grouping. */\nexport function itemUsesShellInbox(item: {\n id: PanelToolsToolId;\n mobileDestination?: MobileDestination;\n}): boolean {\n return (\n item.mobileDestination === 'inbox' ||\n (item.mobileDestination === undefined && isShellInboxTool(item.id))\n );\n}\n\nexport function isShellInboxTool(tool: string): tool is ShellInboxToolId {\n return tool === 'stacks' || tool === 'activity';\n}\n\nexport function resolveAvailableInboxTool(\n preferred: string,\n available: readonly PanelToolsToolId[]\n): ShellInboxToolId | '' {\n const inbox = available.filter(isShellInboxTool);\n if (isShellInboxTool(preferred) && inbox.includes(preferred)) return preferred;\n if (inbox.includes(SHELL_DEFAULT_INBOX_TOOL)) return SHELL_DEFAULT_INBOX_TOOL;\n return inbox[0] ?? '';\n}\n\n/** Active-destination reselects are inert unless they also dismiss the Menu pane. */\nexport function shouldEmitMobileDestinationChange(\n active: MobileDestination,\n next: MobileDestination,\n navigationOpen: boolean\n): boolean {\n return navigationOpen || active !== next;\n}\n"],
|
|
5
|
-
"mappings": ";AA2BO,IAAM,qBAAgE;AAAA,EAC3E,QAAQ;AAAA,EACR,UAAU;AAAA,EACV,QAAQ;AAAA,EACR,UAAU;AAAA,EACV,QAAQ;AAAA,EACR,MAAM;AACR;AAEO,IAAM,wBAA4E;AAAA,EACvF,QAAQ;AAAA,EACR,QAAQ;AAAA,EACR,UAAU;AAAA,EACV,QAAQ;AAAA,EACR,UAAU;AAAA,EACV,MAAM;AACR;
|
|
4
|
+
"sourcesContent": ["/** Application-owned tool id for the shell rail and responsive tool views. */\nexport type PanelToolsToolId = string;\n\n/** Canonical Motive shell recipe used when item metadata is omitted. */\nexport type CanonicalPanelToolsToolId =\n | 'search'\n | 'messages'\n | 'agents'\n | 'stacks'\n | 'activity'\n | 'help';\n\nexport const PANEL_TOOLS_TOOL_IDS: CanonicalPanelToolsToolId[] = [\n 'agents',\n 'messages',\n 'activity',\n 'search',\n 'stacks',\n 'help',\n];\n\n/** Rail header slot \u2014 mirrors panel-nav M logo row. */\nexport const PANEL_TOOLS_PRIMARY_TOOL_ID: CanonicalPanelToolsToolId = 'agents';\n\n/** Rail footer slot \u2014 flush to the bottom of the tools column. */\nexport const PANEL_TOOLS_FOOTER_TOOL_ID: CanonicalPanelToolsToolId = 'help';\n\nexport const PANEL_TOOLS_LABELS: Record<CanonicalPanelToolsToolId, string> = {\n search: 'Search',\n messages: 'Messages',\n stacks: 'Stacks',\n activity: 'Activity',\n agents: 'Agents',\n help: 'Help & Support',\n};\n\nexport const PANEL_TOOLS_SHORTCUTS: Partial<Record<CanonicalPanelToolsToolId, string>> = {\n search: 'K',\n agents: 'A',\n messages: 'M',\n stacks: 'S',\n activity: 'N',\n help: '/',\n};\n\nexport type PanelToolsRailPlacement = 'header' | 'body' | 'footer';\n\nexport interface PanelToolsItem {\n id: PanelToolsToolId;\n /** Icon name for <ds-icon>. */\n icon: string;\n /** Visible and accessible fallback label for custom tool ids. */\n label?: string;\n /** Explicit rail region; canonical Agents/Help placement is the fallback. */\n railPlacement?: PanelToolsRailPlacement;\n /** Stable ordering within the selected rail region. */\n order?: number;\n /** Optional shortcut label displayed by the tooltip. */\n shortcutKey?: string;\n /** Mobile destination recipe; canonical ids retain their explicit defaults. */\n mobileDestination?: 'search' | 'inbox' | 'activity' | 'messages' | 'agents' | 'help';\n /** Whether this rail button is currently pressed/active. */\n selected?: boolean;\n /** Show a notification dot. */\n dot?: boolean;\n isInactive?: boolean;\n ariaLabel?: string;\n}\n\nexport type PanelToolsRailAccessoryVisual =\n | { type: 'icon'; icon: string }\n | { type: 'initial'; initial: string }\n | { type: 'image'; src: string };\n\nexport interface PanelToolsRailAccessoryAction {\n /** Stable application-owned action id emitted with the accessory id. */\n id: string;\n /** Overrides the accessory label for the primary action. */\n ariaLabel?: string;\n isInactive?: boolean;\n}\n\nexport interface PanelToolsRailAccessorySecondaryAction {\n id: string;\n icon: string;\n ariaLabel: string;\n isInactive?: boolean;\n}\n\nexport type PanelToolsRailTransientTone = 'active' | 'positive';\n\ninterface PanelToolsRailAccessoryBase {\n /** Stable application-owned identity. Duplicate or blank ids are omitted. */\n id: string;\n /** Explicit rail region; accessories never infer placement from their id. */\n railPlacement: PanelToolsRailPlacement;\n /** Stable ordering within the selected rail region. */\n order: number;\n}\n\n/** Decorative boundary between application-owned rail accessory groups. */\nexport interface PanelToolsRailDividerAccessory extends PanelToolsRailAccessoryBase {\n type: 'divider';\n}\n\n/**\n * A compact one-action shortcut that matches standard tool-button geometry.\n * PanelTools owns its initial orb, notification dot, and transient interaction paint.\n */\nexport interface PanelToolsRailShortcutAccessory extends PanelToolsRailAccessoryBase {\n type: 'shortcut';\n /** Accessible shortcut name and action-label fallback. */\n ariaLabel: string;\n /** One or two displayed graphemes. Longer values are truncated visually. */\n initials: string;\n /** Supplemental notification dot. Include its meaning in the accessible label when needed. */\n dot?: boolean;\n action: PanelToolsRailAccessoryAction;\n}\n\n/**\n * A direct application intent that never selects a tool or changes drawer state.\n * PanelTools owns the two-control-height surface and its focus behavior.\n */\nexport interface PanelToolsRailTransientAccessory extends PanelToolsRailAccessoryBase {\n type: 'transient';\n /** Accessible accessory name and primary-action fallback label. */\n ariaLabel: string;\n visual: PanelToolsRailAccessoryVisual;\n /** State announced with the primary action and shown in its tooltip. */\n statusText: string;\n /** Bold surface treatment. Active uses brand; positive uses positive semantic color. */\n statusTone: PanelToolsRailTransientTone;\n primaryAction: PanelToolsRailAccessoryAction;\n secondaryAction?: PanelToolsRailAccessorySecondaryAction;\n}\n\nexport type PanelToolsRailAccessory =\n | PanelToolsRailDividerAccessory\n | PanelToolsRailShortcutAccessory\n | PanelToolsRailTransientAccessory;\n\nexport interface PanelToolsRailAccessoryActionDetail {\n accessoryId: string;\n actionId: string;\n /** Rendered action control, suitable for anchoring an application-owned overlay. */\n anchor: HTMLElement;\n}\n\n/** Canonical shell recipe used by Lab and by managed ShellApp examples. */\nexport const PANEL_TOOLS_DEFAULT_ITEMS: PanelToolsItem[] = [\n {\n id: 'agents',\n icon: 'AI',\n label: PANEL_TOOLS_LABELS.agents,\n railPlacement: 'header',\n order: 0,\n shortcutKey: PANEL_TOOLS_SHORTCUTS.agents,\n mobileDestination: 'agents',\n },\n {\n id: 'messages',\n icon: 'MessageBubbleStack',\n label: PANEL_TOOLS_LABELS.messages,\n order: 0,\n shortcutKey: PANEL_TOOLS_SHORTCUTS.messages,\n mobileDestination: 'messages',\n },\n {\n id: 'activity',\n icon: 'Bell',\n label: PANEL_TOOLS_LABELS.activity,\n order: 1,\n shortcutKey: PANEL_TOOLS_SHORTCUTS.activity,\n mobileDestination: 'activity',\n },\n {\n id: 'search',\n icon: 'MagnifyingGlass',\n label: PANEL_TOOLS_LABELS.search,\n order: 2,\n shortcutKey: PANEL_TOOLS_SHORTCUTS.search,\n mobileDestination: 'search',\n },\n {\n id: 'help',\n icon: 'CircleQuestion',\n label: PANEL_TOOLS_LABELS.help,\n railPlacement: 'footer',\n order: 0,\n shortcutKey: PANEL_TOOLS_SHORTCUTS.help,\n mobileDestination: 'help',\n },\n];\n\nexport interface PanelToolsHeaderAction {\n id: string;\n icon: string;\n ariaLabel: string;\n triggerId?: string;\n controls?: string;\n expanded?: boolean;\n haspopup?: 'menu' | 'dialog' | 'listbox' | 'tree' | 'grid';\n pressed?: boolean;\n isInactive?: boolean;\n}\n\nexport interface PanelToolsHeaderActionDetail {\n tool: PanelToolsToolId;\n id: string;\n /** Rendered header action host. Pass this to an external overlay's element anchor prop. */\n anchor?: HTMLElement;\n}\n\nexport interface PanelToolHeaderActionDetail {\n id: string;\n originalEvent: MouseEvent;\n /** Rendered action host, suitable for anchoring an external overlay across a shadow boundary. */\n anchor: HTMLElement;\n}\n\nexport interface PanelToolsHeaderConfig {\n title?: string;\n showBack?: boolean;\n backIcon?: string;\n backAriaLabel?: string;\n actions?: PanelToolsHeaderAction[];\n}\n\n/** Per-tool header state. The application replaces the object when a tool changes depth or actions. */\nexport type PanelToolsHeaders = Partial<Record<PanelToolsToolId, PanelToolsHeaderConfig>>;\n", "/** Nav chrome style slot \u2014 dashboard vs settings. Colors unified for now; texture hooks use the class. */\nexport type NavChromeStyle = 'dashboard' | 'settings';\n\n/** Document hint for first paint before framework props land. */\nexport const NAV_STYLE_HINT_ATTR = 'data-nav-style';\n\nexport function readNavStyleAttr(attr: string | null): NavChromeStyle | undefined {\n if (attr === 'dashboard' || attr === 'settings') return attr;\n return undefined;\n}\n\nexport function setNavStyleHint(style: NavChromeStyle): void {\n if (typeof document === 'undefined') return;\n document.documentElement.setAttribute(NAV_STYLE_HINT_ATTR, style);\n}\n\nexport function clearNavStyleHint(): void {\n if (typeof document === 'undefined') return;\n document.documentElement.removeAttribute(NAV_STYLE_HINT_ATTR);\n}\n\nexport function resolveNavChromeStyle(\n styleProp: NavChromeStyle,\n hostAttr: string | null,\n docHint?: string | null\n): NavChromeStyle {\n const fromHost = readNavStyleAttr(hostAttr);\n if (fromHost) return fromHost;\n\n const hint =\n docHint !== undefined\n ? docHint\n : typeof document !== 'undefined'\n ? document.documentElement.getAttribute(NAV_STYLE_HINT_ATTR)\n : null;\n const fromHint = readNavStyleAttr(hint);\n if (fromHint) return fromHint;\n\n return styleProp;\n}\n\nexport function shouldResyncNavChromeStyle(\n renderedStyle: NavChromeStyle,\n style: NavChromeStyle\n): boolean {\n return renderedStyle !== style;\n}\n", "import type { ChoicePopupAnchorAlignment } from '../../utils/choice-popup-alignment';\nimport type { MenuAlign, MenuSide } from './menu-position';\n\n/** Placement props bindable on `ds-menu` (side, align, offsets). */\nexport interface MenuPlacement {\n side: MenuSide;\n align: MenuAlign;\n anchorAlignment: ChoicePopupAnchorAlignment;\n sideOffset: number | string;\n alignOffset: number | string;\n}\n\n/**\n * Canonical `ds-menu` placement for the **panel-nav footer user menu**.\n * Anchor from `dsNavUserAction` detail `{ anchor }` (id `ds-panel-nav-user-menu-anchor`).\n *\n * Not for BarNav overflow menus \u2014 those use `side=\"bottom\"` / `align=\"end\"` internally.\n * `align: 'end'` bottom-aligns the last choice cell on the anchor; the side offset nudges into the content area:\n * - `sideOffset` space-100 + space-050 (12px): 4px past the panel-nav outer edge (anchor is ~8px inset).\n * - `anchorAlignment: 'choice-cell'`: the shared section inset puts the last row edge on the footer user row.\n */\nexport const PANEL_NAV_USER_MENU_PLACEMENT = {\n side: 'right',\n align: 'end',\n anchorAlignment: 'choice-cell',\n sideOffset: 'calc(var(--dimension-space-100) + var(--dimension-space-050))',\n alignOffset: 0,\n} as const satisfies MenuPlacement;\n\n/**\n * Canonical placement for PanelNav's collapsed child-route flyout.\n * The parent control is 8px inside the panel edge, so a 12px side offset leaves\n * a 4px visual gap outside the panel. Start choice-cell alignment places the\n * first flyout row on the same block axis as its parent control.\n */\nexport const PANEL_NAV_CHILD_MENU_PLACEMENT = {\n side: 'right',\n align: 'start',\n anchorAlignment: 'choice-cell',\n sideOffset: 'calc(var(--dimension-space-100) + var(--dimension-space-050))',\n alignOffset: 0,\n} as const satisfies MenuPlacement;\n\n/**\n * Canonical placement for a menu opened by a PanelTools header action.\n * Matches BarNav overflow: the 32px trigger is 8px inside the 48px header, so\n * a 12px side offset places the popup 4px below the header edge. Choice-cell\n * alignment keeps the final menu item edge aligned with the trigger.\n */\nexport const PANEL_TOOLS_HEADER_MENU_PLACEMENT = {\n side: 'bottom',\n align: 'end',\n anchorAlignment: 'choice-cell',\n sideOffset: 'calc(var(--dimension-space-100) + var(--dimension-space-050))',\n alignOffset: 0,\n} as const satisfies MenuPlacement;\n", "/** Built-in shell chrome wash presets. */\nexport type ShellGradientPreset = 'none' | 'cool' | 'neutral' | 'warm' | 'fresh';\n\nexport const SHELL_GRADIENT_PRESETS: ShellGradientPreset[] = [\n 'none',\n 'cool',\n 'neutral',\n 'warm',\n 'fresh',\n];\n\n/** Wash presets shown after the `none` option in pickers. */\nexport const SHELL_GRADIENT_WASH_PRESETS: Exclude<ShellGradientPreset, 'none'>[] = [\n 'cool',\n 'neutral',\n 'warm',\n 'fresh',\n];\n\n/** Default wash when `gradient-preset` is omitted. */\nexport const DEFAULT_SHELL_GRADIENT_PRESET: ShellGradientPreset = 'neutral';\n\nexport const SHELL_GRADIENT_PRESET_LABELS: Record<ShellGradientPreset, string> = {\n none: 'None',\n cool: 'Cool',\n neutral: 'Neutral',\n warm: 'Warm',\n fresh: 'Fresh',\n};\n\nexport interface ShellGradientStop {\n color: string;\n position: number;\n}\n\nexport interface ShellGradientRecipe {\n opacity: number;\n stops: readonly ShellGradientStop[];\n}\n\nexport interface ShellGradientPickerPreview {\n backgroundColor: string;\n backgroundImage?: string;\n opacity?: number;\n}\n\nexport interface ShellGradientPickerOption {\n value: ShellGradientPreset;\n label: string;\n preview: ShellGradientPickerPreview;\n}\n\nexport interface ShellGradientPickerSection {\n options: ShellGradientPickerOption[];\n}\n\nconst SHELL_GRADIENT_RECIPES: Record<Exclude<ShellGradientPreset, 'none'>, ShellGradientRecipe> = {\n cool: {\n opacity: 0.1,\n stops: [\n { color: 'var(--color-background-transparent)', position: 0 },\n { color: 'var(--color-color-intent-blue-strong-background)', position: 100 },\n ],\n },\n neutral: {\n opacity: 0.1,\n stops: [\n { color: 'var(--color-background-transparent)', position: 0 },\n { color: 'var(--color-color-intent-grey-strong-background)', position: 100 },\n ],\n },\n warm: {\n opacity: 0.1,\n stops: [\n { color: 'var(--color-background-transparent)', position: 0 },\n { color: 'var(--color-color-intent-yellow-strong-background)', position: 100 },\n ],\n },\n fresh: {\n opacity: 0.4,\n stops: [\n { color: 'var(--color-color-intent-cyan-faint-background)', position: 0 },\n { color: 'var(--color-background-transparent)', position: 47 },\n { color: 'var(--color-background-transparent)', position: 58 },\n { color: 'var(--color-color-intent-red-faint-background)', position: 83 },\n { color: 'var(--color-color-intent-pink-faint-background)', position: 100 },\n ],\n },\n};\n\nconst GRADIENT_GEOMETRY = '100% 100% at 0% 0%';\n\nexport function shellGradientPresetStopToken(preset: ShellGradientPreset): string | null {\n if (preset === 'none') return null;\n const stops = SHELL_GRADIENT_RECIPES[preset].stops;\n return stops[stops.length - 1]?.color ?? null;\n}\n\nexport function shellGradientPresetRecipe(preset: ShellGradientPreset): ShellGradientRecipe | null {\n const normalized = normalizeShellGradientPreset(preset);\n return normalized === 'none' ? null : SHELL_GRADIENT_RECIPES[normalized];\n}\n\nexport function shellGradientPresetOpacity(preset: ShellGradientPreset): string {\n return String(shellGradientPresetRecipe(preset)?.opacity ?? 0);\n}\n\nexport function isShellGradientPreset(value: string): value is ShellGradientPreset {\n return (SHELL_GRADIENT_PRESETS as string[]).includes(value);\n}\n\n/**\n * Coerce unknown/absent presets to the default. Runtime values escape the\n * type: removing the reflected `gradient-preset` attribute (e.g. an Angular\n * `[attr.gradient-preset]=\"null\"` binding) drives the prop to null past its\n * field default \u2014 without normalization the stop lookup interpolates the\n * literal string \"undefined\" into CSS and the wash silently disappears.\n */\nexport function normalizeShellGradientPreset(\n value: string | null | undefined\n): ShellGradientPreset {\n return value != null && isShellGradientPreset(value) ? value : DEFAULT_SHELL_GRADIENT_PRESET;\n}\n\n/** Radial wash for a preset \u2014 transparent at top-left into the intent stop. `none` returns no image. */\nexport function buildShellRadialGradientForPreset(preset: ShellGradientPreset): string {\n const normalized = normalizeShellGradientPreset(preset);\n if (normalized === 'none') return 'none';\n\n return buildShellRadialGradientFromStops(SHELL_GRADIENT_RECIPES[normalized].stops);\n}\n\n/** Build the production shell geometry from an ordered set of design-time stops. */\nexport function buildShellRadialGradientFromStops(stops: readonly ShellGradientStop[]): string {\n const serialized = stops.map(stop => `${stop.color} ${stop.position}%`).join(', ');\n return `radial-gradient(${GRADIENT_GEOMETRY}, ${serialized})`;\n}\n\n/** Generic SwatchPicker sections for the fixed shell appearance presets. */\nexport function shellGradientPickerSections(): ShellGradientPickerSection[] {\n return [\n {\n options: [\n {\n value: 'none',\n label: SHELL_GRADIENT_PRESET_LABELS.none,\n preview: {\n backgroundColor: 'var(--color-background-secondary)',\n },\n },\n ],\n },\n {\n options: SHELL_GRADIENT_WASH_PRESETS.map(preset => ({\n value: preset,\n label: SHELL_GRADIENT_PRESET_LABELS[preset],\n preview: {\n backgroundColor: 'var(--color-background-secondary)',\n backgroundImage: buildShellRadialGradientForPreset(preset),\n opacity: Number(shellGradientPresetOpacity(preset)),\n },\n })),\n },\n ];\n}\n", "import type { PanelToolsToolId } from '../components/PanelTools/panel-tools-types';\n\nexport type ShellResponsiveMode = 'desktop' | 'tablet' | 'mobile';\nexport type MobileDestination =\n | 'area'\n | 'search'\n | 'inbox'\n | 'activity'\n | 'messages'\n | 'agents'\n | 'help';\nexport type ShellInboxToolId = PanelToolsToolId;\n\nexport const SHELL_DESKTOP_BREAKPOINT = 1200;\nexport const SHELL_MOBILE_BREAKPOINT = 768;\nexport const SHELL_DEFAULT_INBOX_TOOL: ShellInboxToolId = 'activity';\n\nexport function resolveShellResponsiveMode(width: number): ShellResponsiveMode {\n if (width >= SHELL_DESKTOP_BREAKPOINT) return 'desktop';\n if (width >= SHELL_MOBILE_BREAKPOINT) return 'tablet';\n return 'mobile';\n}\n\nexport function resolveManagedShellPageCapacity(\n mode: ShellResponsiveMode\n): 'roomy' | 'compact' | 'constrained' {\n return mode === 'desktop' ? 'roomy' : 'compact';\n}\n\nexport function shellMobileDestinationForTool(\n open: boolean,\n tool: PanelToolsToolId | ''\n): MobileDestination {\n if (!open || !tool) return 'area';\n if (tool === 'help') return 'help';\n if (tool === 'search') return 'search';\n if (tool === 'messages') return 'messages';\n if (tool === 'agents') return 'agents';\n return 'inbox';\n}\n\n/** Explicit item metadata wins over the legacy canonical Stacks/Activity grouping. */\nexport function itemUsesShellInbox(item: {\n id: PanelToolsToolId;\n mobileDestination?: MobileDestination;\n}): boolean {\n return (\n item.mobileDestination === 'inbox' ||\n (item.mobileDestination === undefined && isShellInboxTool(item.id))\n );\n}\n\nexport function isShellInboxTool(tool: string): tool is ShellInboxToolId {\n return tool === 'stacks' || tool === 'activity';\n}\n\nexport function resolveAvailableInboxTool(\n preferred: string,\n available: readonly PanelToolsToolId[]\n): ShellInboxToolId | '' {\n const inbox = available.filter(isShellInboxTool);\n if (isShellInboxTool(preferred) && inbox.includes(preferred)) return preferred;\n if (inbox.includes(SHELL_DEFAULT_INBOX_TOOL)) return SHELL_DEFAULT_INBOX_TOOL;\n return inbox[0] ?? '';\n}\n\n/** Active-destination reselects are inert unless they also dismiss the Menu pane. */\nexport function shouldEmitMobileDestinationChange(\n active: MobileDestination,\n next: MobileDestination,\n navigationOpen: boolean\n): boolean {\n return navigationOpen || active !== next;\n}\n"],
|
|
5
|
+
"mappings": "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",
|
|
6
6
|
"names": []
|
|
7
7
|
}
|
|
@@ -131,7 +131,7 @@
|
|
|
131
131
|
"complexPropertyNote": "Assign these non-primitive values as JavaScript properties: items.",
|
|
132
132
|
"peerDependencies": {
|
|
133
133
|
"required": [
|
|
134
|
-
"@ds-mo/tokens ^6.5.
|
|
134
|
+
"@ds-mo/tokens ^6.5.1",
|
|
135
135
|
"@ds-mo/icons ^7.0.0"
|
|
136
136
|
],
|
|
137
137
|
"frameworks": "Custom Elements; React 18/19 wrappers; Vue 3 wrappers; Angular 19-22 standalone adapters."
|
|
@@ -236,7 +236,7 @@
|
|
|
236
236
|
"complexPropertyNote": "Assign these non-primitive values as JavaScript properties: answers, labels, questions.",
|
|
237
237
|
"peerDependencies": {
|
|
238
238
|
"required": [
|
|
239
|
-
"@ds-mo/tokens ^6.5.
|
|
239
|
+
"@ds-mo/tokens ^6.5.1",
|
|
240
240
|
"@ds-mo/icons ^7.0.0"
|
|
241
241
|
],
|
|
242
242
|
"frameworks": "Custom Elements; React 18/19 wrappers; Vue 3 wrappers; Angular 19-22 standalone adapters."
|
|
@@ -228,7 +228,7 @@
|
|
|
228
228
|
"complexPropertyNote": "Assign these non-primitive values as JavaScript properties: parts.",
|
|
229
229
|
"peerDependencies": {
|
|
230
230
|
"required": [
|
|
231
|
-
"@ds-mo/tokens ^6.5.
|
|
231
|
+
"@ds-mo/tokens ^6.5.1",
|
|
232
232
|
"@ds-mo/icons ^7.0.0"
|
|
233
233
|
],
|
|
234
234
|
"frameworks": "Custom Elements; React 18/19 wrappers; Vue 3 wrappers; Angular 19-22 standalone adapters."
|
|
@@ -147,7 +147,7 @@
|
|
|
147
147
|
"complexPropertyNote": "Assign these non-primitive values as JavaScript properties: items.",
|
|
148
148
|
"peerDependencies": {
|
|
149
149
|
"required": [
|
|
150
|
-
"@ds-mo/tokens ^6.5.
|
|
150
|
+
"@ds-mo/tokens ^6.5.1",
|
|
151
151
|
"@ds-mo/icons ^7.0.0"
|
|
152
152
|
],
|
|
153
153
|
"frameworks": "Custom Elements; React 18/19 wrappers; Vue 3 wrappers; Angular 19-22 standalone adapters."
|
|
@@ -227,7 +227,7 @@
|
|
|
227
227
|
"complexPropertyNote": "Assign these non-primitive values as JavaScript properties: input, output.",
|
|
228
228
|
"peerDependencies": {
|
|
229
229
|
"required": [
|
|
230
|
-
"@ds-mo/tokens ^6.5.
|
|
230
|
+
"@ds-mo/tokens ^6.5.1",
|
|
231
231
|
"@ds-mo/icons ^7.0.0"
|
|
232
232
|
],
|
|
233
233
|
"frameworks": "Custom Elements; React 18/19 wrappers; Vue 3 wrappers; Angular 19-22 standalone adapters."
|
|
@@ -111,7 +111,7 @@
|
|
|
111
111
|
"complexPropertyNote": "Assign these non-primitive values as JavaScript properties: items.",
|
|
112
112
|
"peerDependencies": {
|
|
113
113
|
"required": [
|
|
114
|
-
"@ds-mo/tokens ^6.5.
|
|
114
|
+
"@ds-mo/tokens ^6.5.1",
|
|
115
115
|
"@ds-mo/icons ^7.0.0"
|
|
116
116
|
],
|
|
117
117
|
"frameworks": "Custom Elements; React 18/19 wrappers; Vue 3 wrappers; Angular 19-22 standalone adapters."
|