@ds-mo/ui 11.1.0 → 12.1.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.
Files changed (246) hide show
  1. package/README.md +1 -1
  2. package/dist/.build-stamp +1 -1
  3. package/dist/agent-patterns.json +150 -9
  4. package/dist/agent.json +488 -174
  5. package/dist/angular/ds-bar-title.d.ts +28 -0
  6. package/dist/angular/ds-bar-title.js +48 -0
  7. package/dist/angular/ds-panel-nav.d.ts +1 -1
  8. package/dist/angular/{ds-app-shell.d.ts → ds-shell-app.d.ts} +5 -5
  9. package/dist/angular/{ds-app-shell.js → ds-shell-app.js} +10 -10
  10. package/dist/angular/ds-shell-page.d.ts +12 -0
  11. package/dist/angular/ds-shell-page.js +38 -0
  12. package/dist/angular/index.d.ts +1 -1
  13. package/dist/angular/index.js +3 -1
  14. package/dist/angular/proxies.d.ts +3 -1
  15. package/dist/angular/proxies.js +3 -1
  16. package/dist/components/ds-agent-activity.js +1 -1
  17. package/dist/components/ds-agent-response.js +1 -1
  18. package/dist/components/ds-agent-response.js.map +1 -1
  19. package/dist/components/ds-agent-source-list.js +1 -1
  20. package/dist/components/ds-agent-tool-call.js +1 -1
  21. package/dist/components/ds-attachment-list.js +1 -1
  22. package/dist/components/ds-avatar.js +1 -1
  23. package/dist/components/ds-avatar.js.map +1 -1
  24. package/dist/components/ds-badge.js +1 -1
  25. package/dist/components/ds-bar-nav.js +1 -1
  26. package/dist/components/ds-bar-nav.js.map +1 -1
  27. package/dist/components/{ds-app-shell.d.ts → ds-bar-title.d.ts} +4 -4
  28. package/dist/components/ds-bar-title.js +2 -0
  29. package/dist/components/ds-bar-title.js.map +1 -0
  30. package/dist/components/ds-button-filled.js +1 -1
  31. package/dist/components/ds-button-unfilled.js +1 -1
  32. package/dist/components/ds-card-data-viz-donut.js +1 -1
  33. package/dist/components/ds-card-setting.js +1 -1
  34. package/dist/components/ds-card-shell-data-viz.js +1 -1
  35. package/dist/components/ds-chart-bar.js +1 -1
  36. package/dist/components/ds-chart-donut.js +1 -1
  37. package/dist/components/ds-chart-legend.js +1 -1
  38. package/dist/components/ds-chart-line.js +1 -1
  39. package/dist/components/ds-checkbox.js +1 -1
  40. package/dist/components/ds-chip.js +1 -1
  41. package/dist/components/ds-code-block.js +1 -1
  42. package/dist/components/ds-conversation-list-item.js +1 -1
  43. package/dist/components/ds-conversation-list-item.js.map +1 -1
  44. package/dist/components/ds-conversation-list-section.js +1 -1
  45. package/dist/components/ds-conversation-list.js +1 -1
  46. package/dist/components/ds-empty-state.js +1 -1
  47. package/dist/components/ds-field.js +1 -1
  48. package/dist/components/ds-icon.js +1 -1
  49. package/dist/components/ds-input.js +1 -1
  50. package/dist/components/ds-markdown.js +1 -1
  51. package/dist/components/ds-menu.js +1 -1
  52. package/dist/components/ds-message-composer.js +1 -1
  53. package/dist/components/ds-message-composer.js.map +1 -1
  54. package/dist/components/ds-message-scroller.js +1 -1
  55. package/dist/components/ds-message-scroller.js.map +1 -1
  56. package/dist/components/ds-message.js +1 -1
  57. package/dist/components/ds-modal.js +1 -1
  58. package/dist/components/ds-modal.js.map +1 -1
  59. package/dist/components/ds-panel-nav.js +1 -1
  60. package/dist/components/ds-panel-nav.js.map +1 -1
  61. package/dist/components/ds-panel-sub-nav.js +1 -1
  62. package/dist/components/ds-panel-sub-nav.js.map +1 -1
  63. package/dist/components/ds-panel-tool-header.js +1 -1
  64. package/dist/components/ds-panel-tool-search.js +1 -1
  65. package/dist/components/ds-panel-tool-search.js.map +1 -1
  66. package/dist/components/ds-panel-tools.js +1 -1
  67. package/dist/components/ds-panel-tools.js.map +1 -1
  68. package/dist/components/ds-radio.js +1 -1
  69. package/dist/components/ds-select-multi.js +1 -1
  70. package/dist/components/ds-select-multi.js.map +1 -1
  71. package/dist/components/ds-select.js +1 -1
  72. package/dist/components/ds-select.js.map +1 -1
  73. package/dist/components/ds-shell-app.d.ts +11 -0
  74. package/dist/components/ds-shell-app.js +2 -0
  75. package/dist/components/ds-shell-app.js.map +1 -0
  76. package/dist/components/ds-shell-gradient-picker.js +1 -1
  77. package/dist/components/ds-shell-gradient-picker.js.map +1 -1
  78. package/dist/components/ds-shell-gradient-swatch.js +1 -1
  79. package/dist/components/ds-shell-page.d.ts +11 -0
  80. package/dist/components/ds-shell-page.js +2 -0
  81. package/dist/components/ds-shell-page.js.map +1 -0
  82. package/dist/components/ds-skeleton.js +1 -1
  83. package/dist/components/ds-slider.js +1 -1
  84. package/dist/components/ds-slider.js.map +1 -1
  85. package/dist/components/ds-swatch-picker.js +1 -1
  86. package/dist/components/ds-switch.js +1 -1
  87. package/dist/components/ds-tab-group.js +1 -1
  88. package/dist/components/ds-tag.js +1 -1
  89. package/dist/components/ds-text.js +1 -1
  90. package/dist/components/ds-toast.js +1 -1
  91. package/dist/components/ds-tooltip-data-viz.js +1 -1
  92. package/dist/components/ds-tooltip.js +1 -1
  93. package/dist/components/ds-typing-indicator.js +1 -1
  94. package/dist/components/{p-DJ78wdNv.js → p-B9jvSGid.js} +2 -2
  95. package/dist/components/{p-DuNZGFkV.js → p-BAfG3M8z.js} +2 -2
  96. package/dist/components/p-BAfG3M8z.js.map +1 -0
  97. package/dist/components/{p-Dh4q5TSS.js → p-BfEjWe8U.js} +2 -2
  98. package/dist/components/{p-CZZYGqKz.js → p-Bs6SS34m.js} +2 -2
  99. package/dist/components/p-BzsITTZa.js +2 -0
  100. package/dist/components/p-BzsITTZa.js.map +1 -0
  101. package/dist/components/p-C3Zfn7hz.js +2 -0
  102. package/dist/components/p-C3Zfn7hz.js.map +1 -0
  103. package/dist/components/{p-bNpFhP5L.js → p-CR7yMitN.js} +2 -2
  104. package/dist/components/p-CTV_QWC5.js +2 -0
  105. package/dist/components/p-CTV_QWC5.js.map +1 -0
  106. package/dist/components/p-CUik7PCi.js +2 -0
  107. package/dist/components/p-CUik7PCi.js.map +1 -0
  108. package/dist/components/{p-BKhG2xrW.js → p-D2x17ei-.js} +1 -1
  109. package/dist/components/{p-BKhG2xrW.js.map → p-D2x17ei-.js.map} +1 -1
  110. package/dist/components/{p-CjP8sYlo.js → p-DABj3qTX.js} +2 -2
  111. package/dist/components/p-DfIch2Dk.js +2 -0
  112. package/dist/components/{p-BCCt2eT_.js.map → p-DfIch2Dk.js.map} +1 -1
  113. package/dist/components/{p-Bet_UjML.js → p-Dfxnxx7L.js} +2 -2
  114. package/dist/components/{p-CrwU83-g.js → p-Dg3xLna0.js} +2 -2
  115. package/dist/components/{p-BaZRP4Oo.js → p-DpyTrZa2.js} +2 -2
  116. package/dist/components/{p-P_4vE1ub.js → p-Dqwcw1-m.js} +2 -2
  117. package/dist/components/{p-CyoHRqy6.js → p-DszI94sZ.js} +2 -2
  118. package/dist/components/{p-DrDHC7V6.js → p-DxeHimqk.js} +2 -2
  119. package/dist/components/{p-DrDHC7V6.js.map → p-DxeHimqk.js.map} +1 -1
  120. package/dist/components/p-Dy3Skua8.js +2 -0
  121. package/dist/components/{p-B_qVPsEU.js.map → p-Dy3Skua8.js.map} +1 -1
  122. package/dist/components/{p-CLn7QnE0.js → p-Dy_sZ-dI.js} +2 -2
  123. package/dist/components/{p-BEWtqFX7.js → p-LFGbdi7Y.js} +2 -2
  124. package/dist/components/{p-0kEg-Z4f.js → p-liMPkhUP.js} +2 -2
  125. package/dist/components/{p-CPPAndX2.js → p-tDXHTAJh.js} +2 -2
  126. package/dist/components/{p-DTqCBjUj.js → p-webARv8d.js} +2 -2
  127. package/dist/docs/components.json +1122 -330
  128. package/dist/lib/shell/chrome-transition.d.ts +1 -1
  129. package/dist/lib/shell/index.js +1 -1
  130. package/dist/lib/shell/index.js.map +1 -1
  131. package/dist/lib/shell/shell-gradient.d.ts +2 -2
  132. package/dist/mcp-data/registry/agent-activity.json +1 -1
  133. package/dist/mcp-data/registry/agent-response.json +1 -1
  134. package/dist/mcp-data/registry/agent-source-list.json +1 -1
  135. package/dist/mcp-data/registry/agent-tool-call.json +1 -1
  136. package/dist/mcp-data/registry/attachment-list.json +1 -1
  137. package/dist/mcp-data/registry/avatar.json +2 -2
  138. package/dist/mcp-data/registry/badge.json +5 -5
  139. package/dist/mcp-data/registry/bar-nav.json +9 -9
  140. package/dist/mcp-data/registry/bar-title.json +451 -0
  141. package/dist/mcp-data/registry/button-filled.json +1 -1
  142. package/dist/mcp-data/registry/button-unfilled.json +1 -1
  143. package/dist/mcp-data/registry/card-data-viz-donut.json +1 -1
  144. package/dist/mcp-data/registry/card-setting.json +1 -1
  145. package/dist/mcp-data/registry/card-shell-data-viz.json +1 -1
  146. package/dist/mcp-data/registry/chart-bar.json +1 -1
  147. package/dist/mcp-data/registry/chart-donut.json +1 -1
  148. package/dist/mcp-data/registry/chart-legend.json +1 -1
  149. package/dist/mcp-data/registry/chart-line.json +1 -1
  150. package/dist/mcp-data/registry/checkbox.json +1 -1
  151. package/dist/mcp-data/registry/chip.json +1 -1
  152. package/dist/mcp-data/registry/code-block.json +5 -4
  153. package/dist/mcp-data/registry/conversation-list-item.json +1 -1
  154. package/dist/mcp-data/registry/conversation-list-section.json +1 -1
  155. package/dist/mcp-data/registry/conversation-list.json +1 -1
  156. package/dist/mcp-data/registry/divider.json +1 -1
  157. package/dist/mcp-data/registry/empty-state.json +1 -1
  158. package/dist/mcp-data/registry/field.json +1 -1
  159. package/dist/mcp-data/registry/icon.json +2 -2
  160. package/dist/mcp-data/registry/input.json +1 -1
  161. package/dist/mcp-data/registry/loader.json +1 -1
  162. package/dist/mcp-data/registry/markdown.json +1 -1
  163. package/dist/mcp-data/registry/menu.json +2 -2
  164. package/dist/mcp-data/registry/message-bubble.json +1 -1
  165. package/dist/mcp-data/registry/message-composer.json +8 -6
  166. package/dist/mcp-data/registry/message-scroller.json +5 -4
  167. package/dist/mcp-data/registry/message.json +1 -1
  168. package/dist/mcp-data/registry/modal.json +6 -5
  169. package/dist/mcp-data/registry/panel-nav.json +9 -9
  170. package/dist/mcp-data/registry/panel-sub-nav.json +2 -2
  171. package/dist/mcp-data/registry/panel-tool-header.json +5 -4
  172. package/dist/mcp-data/registry/panel-tool-search.json +7 -6
  173. package/dist/mcp-data/registry/panel-tools.json +14 -14
  174. package/dist/mcp-data/registry/radio.json +1 -1
  175. package/dist/mcp-data/registry/registry.json +497 -177
  176. package/dist/mcp-data/registry/select-multi.json +3 -2
  177. package/dist/mcp-data/registry/select.json +3 -2
  178. package/dist/mcp-data/registry/shell-app.json +213 -0
  179. package/dist/mcp-data/registry/shell-gradient-picker.json +9 -9
  180. package/dist/mcp-data/registry/shell-gradient-swatch.json +3 -3
  181. package/dist/mcp-data/registry/shell-page.json +200 -0
  182. package/dist/mcp-data/registry/skeleton.json +1 -1
  183. package/dist/mcp-data/registry/slider.json +1 -1
  184. package/dist/mcp-data/registry/swatch-picker.json +2 -2
  185. package/dist/mcp-data/registry/switch.json +1 -1
  186. package/dist/mcp-data/registry/tab-group.json +1 -1
  187. package/dist/mcp-data/registry/tag.json +1 -1
  188. package/dist/mcp-data/registry/text.json +1 -1
  189. package/dist/mcp-data/registry/toast.json +1 -1
  190. package/dist/mcp-data/registry/tooltip-data-viz.json +1 -1
  191. package/dist/mcp-data/registry/tooltip.json +1 -1
  192. package/dist/mcp-data/registry/typing-indicator.json +1 -1
  193. package/dist/react/components.d.ts +3 -1
  194. package/dist/react/components.js +3 -1
  195. package/dist/react/ds-bar-title.d.ts +14 -0
  196. package/dist/react/ds-bar-title.js +16 -0
  197. package/dist/react/{ds-app-shell.d.ts → ds-shell-app.d.ts} +3 -3
  198. package/dist/react/ds-shell-app.js +12 -0
  199. package/dist/react/ds-shell-page.d.ts +9 -0
  200. package/dist/react/ds-shell-page.js +12 -0
  201. package/dist/types/components/Badge/Badge.d.ts +1 -1
  202. package/dist/types/components/BarTitle/BarTitle.d.ts +76 -0
  203. package/dist/types/components/BarTitle/bar-title-types.d.ts +30 -0
  204. package/dist/types/components/BarTitle/index.d.ts +2 -0
  205. package/dist/types/components/Menu/Menu.d.ts +5 -0
  206. package/dist/types/components/PanelNav/PanelNav.d.ts +1 -1
  207. package/dist/types/components/{AppShell/AppShell.d.ts → ShellApp/ShellApp.d.ts} +3 -3
  208. package/dist/types/components/ShellPage/ShellPage.d.ts +42 -0
  209. package/dist/types/components/ShellPage/index.d.ts +3 -0
  210. package/dist/types/components/ShellPage/shell-page-responsive.d.ts +12 -0
  211. package/dist/types/components/ShellPage/shell-page-types.d.ts +5 -0
  212. package/dist/types/components.d.ts +278 -55
  213. package/dist/types/shell/chrome-transition.d.ts +1 -1
  214. package/dist/types/shell/shell-gradient.d.ts +2 -2
  215. package/dist/types/shell/shell-shortcuts.d.ts +1 -1
  216. package/package.json +3 -3
  217. package/dist/components/ds-app-shell.js +0 -2
  218. package/dist/components/ds-app-shell.js.map +0 -1
  219. package/dist/components/p-BCCt2eT_.js +0 -2
  220. package/dist/components/p-B_qVPsEU.js +0 -2
  221. package/dist/components/p-BsnezUUC.js +0 -2
  222. package/dist/components/p-BsnezUUC.js.map +0 -1
  223. package/dist/components/p-C1K5QGUZ.js +0 -2
  224. package/dist/components/p-C1K5QGUZ.js.map +0 -1
  225. package/dist/components/p-CKaJx0IX.js +0 -2
  226. package/dist/components/p-CKaJx0IX.js.map +0 -1
  227. package/dist/components/p-DuNZGFkV.js.map +0 -1
  228. package/dist/components/p-ZTugT4as.js +0 -2
  229. package/dist/components/p-ZTugT4as.js.map +0 -1
  230. package/dist/mcp-data/registry/app-shell.json +0 -210
  231. package/dist/react/ds-app-shell.js +0 -12
  232. /package/dist/components/{p-DJ78wdNv.js.map → p-B9jvSGid.js.map} +0 -0
  233. /package/dist/components/{p-Dh4q5TSS.js.map → p-BfEjWe8U.js.map} +0 -0
  234. /package/dist/components/{p-CZZYGqKz.js.map → p-Bs6SS34m.js.map} +0 -0
  235. /package/dist/components/{p-bNpFhP5L.js.map → p-CR7yMitN.js.map} +0 -0
  236. /package/dist/components/{p-CjP8sYlo.js.map → p-DABj3qTX.js.map} +0 -0
  237. /package/dist/components/{p-Bet_UjML.js.map → p-Dfxnxx7L.js.map} +0 -0
  238. /package/dist/components/{p-CrwU83-g.js.map → p-Dg3xLna0.js.map} +0 -0
  239. /package/dist/components/{p-BaZRP4Oo.js.map → p-DpyTrZa2.js.map} +0 -0
  240. /package/dist/components/{p-P_4vE1ub.js.map → p-Dqwcw1-m.js.map} +0 -0
  241. /package/dist/components/{p-CyoHRqy6.js.map → p-DszI94sZ.js.map} +0 -0
  242. /package/dist/components/{p-CLn7QnE0.js.map → p-Dy_sZ-dI.js.map} +0 -0
  243. /package/dist/components/{p-BEWtqFX7.js.map → p-LFGbdi7Y.js.map} +0 -0
  244. /package/dist/components/{p-0kEg-Z4f.js.map → p-liMPkhUP.js.map} +0 -0
  245. /package/dist/components/{p-CPPAndX2.js.map → p-tDXHTAJh.js.map} +0 -0
  246. /package/dist/components/{p-DTqCBjUj.js.map → p-webARv8d.js.map} +0 -0
@@ -1 +0,0 @@
1
- {"version":3,"names":["flagIconLoaders","FlagAustria","import","then","m","FlagBelgium","FlagBulgaria","FlagCanada","FlagCroatia","FlagCyprus","FlagCzechRepublic","FlagDenmark","FlagEU","FlagEstonia","FlagFinland","FlagFrance","FlagGermany","FlagGreece","FlagHungary","FlagIreland","FlagItaly","FlagLatvia","FlagLithuania","FlagLuxembourg","FlagMalta","FlagMexico","FlagNetherlands","FlagPoland","FlagPortugal","FlagRomania","FlagSlovakia","FlagSlovenia","FlagSpain","FlagSweden","FlagUnitedKingdom","FlagUnitedStates","systemIconLoaders","AI","AIChip","AINew","AISparkle","AUX","AUXFilled","AndroidFilled","ArrowDown","ArrowLeft","ArrowPath","ArrowRight","ArrowUp","ArrowsDiagonal","ArrowsDiff","ArrowsDiffDisabled","ArrowsVertical","AtSign","Avatar","BackslashBrackets","BatteryCharging","BatteryEmpty","BatteryFull","BatteryHalf","BatteryLow","Beaker","Bell","BellCircle","BellExclamation","BellFilled","BellRinging","BellWifi","BlackWhite","BlankUI","Bluetooth","Bolt","BoltFilled","Bookmark","Box","Braces","Bug","BuildingFacility","BuildingHome","BuildingOffice","BuildingPublic","BuildingShop","Bulb","Calculator","Calendar","CalendarClock","CameraA","CameraB","Card","CardPerson","Cart","Chart","Check","CheckCircle","CheckCircleFilled","CheckDouble","ChevronDown","ChevronLeft","ChevronLeftDouble","ChevronRight","ChevronRightDouble","ChevronUp","ChevronUpDown","Circle","CircleArrow","CircleArrowsDiff","CircleArrowsDiffDisabled","CircleConcentricFilled","CircleConcentricThree","CircleConcentricTwo","CircleExclamation","CircleExclamationFilled","CircleFastForward","CircleFilled","CircleGrid","CirclePlay","CircleQuestion","CircleSlash","Clipboard","ClipboardCheck","Clock","ClockDefer","ClockFilled","ClockSixteenHour","Cloud","CloudEllipses","CloudLightning","CloudRain","CloudRainSun","CloudSun","CloudWind","Cluster","Coin","CoinStack","CoinStackGeneral","Compass","Copy","Crop","Cross","CrossCircle","CrossCircleFilled","Cube","Cup","CursorPointer","CursorPointerMinus","CursorPointerPlus","Dashboard","DeviceAIDashcamPlus","DeviceAssetTracker","DeviceDVR","DeviceDashcam","DeviceDashcamLiveStream","DeviceDoorSensor","DeviceMobile","DeviceMobileTwo","DeviceOmnicam","DeviceSensor","DeviceTablet","DeviceVehicleGateway","Devices","Document","DocumentArrow","DocumentChart","DocumentDollar","DocumentGear","DocumentInverted","DocumentPencil","DocumentPlus","DocumentQuestion","DocumentReceipt","DocumentStacked","Dot","DotFilled","DotPath","Download","Drag","Ellipses","Email","Engine","Enter","EntityAsset","EntityAssetFilled","EntityDriver","EntityDriverFilled","EntityTravelGroup","EntityTravelGroupFilled","EntityVehicle","EntityVehicleCharging","EntityVehicleChargingFilled","EntityVehicleFilled","EntityVehicleImmobilized","EntityVehicleImmobilizedFilled","ErrorTriangle","ErrorTriangleFilled","ErrorTriangleSimpleFilled","Export","ExternalLink","Eye","EyeDisabled","EyeLock","FastForward","FastForwardSkip","Filters","FitToScreen","Flag","FlagFilled","FloppyDisk","Folder","FolderFilled","FuelPump","FullScreen","FullScreenExit","Gauge","GaugeTemperature","Gear","GearCheck","Geofence","GeofenceCircle","GeofenceDiamond","GeofenceSquare","GlobeNetwork","GlobeWorldMap","Graph","GraphArrow","GraphBars","GraphDecreasing","GraphIncreasing","GroupBy","Hamburger","HandHeart","HandOpen","Headset","History","HourGlass","Image","Import","ImportClock","Inbox","IosFilled","Jerrycan","KeyA","KeyB","KeyCmd","KeyShift","LED","Layers","Leaf","LeftCollapse","LeftCollapseB","LeftExpand","LeftExpandB","LeftTurnSignal","LetterB","LetterC","LetterI","License","LicensePlate","Lifebuoy","Link","List","Loads","LocationPin","LocationPinArrows","LocationPinDisabled","LocationPinDollar","LockClosed","LockClosedFilled","LockOpen","Logout","Logs","LogsMagnifyingGlass","MagnifyingGlass","MagnifyingGlassGraph","MagnifyingGlassZoomIn","MagnifyingGlassZoomOut","MapNavigation","MapPage","MapPin","MarkRead","Match","MessageBubble","MessageBubbleStack","Messaging","Mic","MicMute","Minimize","Monitor","Notification","NumberTen","OctagonSubtract","Odometer","OverviewAI","PanelCollapse","PanelExpand","Paperclip","PaperplaneSend","Paragraph","ParagraphCheck","ParagraphPencil","Pause","PauseFilled","Pencil","PencilSquiggle","Person","PersonAt","PersonConnect","PersonFrame","PersonGear","PersonGroup","PersonGroupArrows","PersonManager","PersonShield","PersonStar","Phone","PhoneDisconnect","PicmanFilled","Pin","PipBottomLeft","PipBottomRight","PipTopLeft","PipTopRight","Play","PlayFilled","Plug","Plus","PlusCircle","Preferences","Printer","PunchCard","Puzzle","PuzzleJoined","Redo","Refresh","Restore","RewardRibbon","Rewind","RewindSkip","RewindSkipFilled","RightCollapse","RightCollapseB","RightExpand","RightExpandB","RightTurnSignal","Rotate","Satellite","Scan","Scissor","Scope","Seatbelt","SeatbeltBuckle","Shapes","ShareCircles","ShareCirclesFilled","SharePaperplane","Shield","ShieldCheck","ShieldCheckmarkFilled","ShieldCircle","ShieldCircleFilled","ShieldCross","ShieldCrossFilled","ShieldFilled","ShieldLock","ShieldLockFilled","ShoppingBag","Snowflake","SpeakerPhone","SpeedometerArrow","SpeedometerLeft","SpeedometerRight","SpikeCirclePercentage","SpikeCirclePercentageFilled","Square","SquareArrowTopRight","SquareCheck","SquareCheckFilled","SquareDollar","SquareDollarFilled","SquareDottedMinus","SquareFilled","SquareGrid","SquarePencil","SquarePlus","SquareSubtract","SquareSubtractFilled","Star","StarFilled","Stopwatch","Street","Subtract","SubtractCircle","SubtractCircleFilled","Table","Tag","Target","TargetDollar","Text","ThemeDark","ThemeLight","ThumbsDown","ThumbsDownFilled","ThumbsUp","ThumbsUpFilled","TirePressure","Toggle","TrafficLight","Trash","Trophy","TurnSignal","TurnSignalFilled","Undo","Upgrade","Upload","VehicleTrailer","VehicleTruck","VehicleTruckMagnifyingGlass","Video","ViewMenu","Volume","VolumeFilled","VolumeMute","VolumeMuteFilled","WandSparkle","Waveform","Webhooks","Whistle","WifiHorizontal","WifiTower","WifiVertical","WifiVerticalFilled","WifiVerticalFilledDisabled","WorkflowA","WorkflowB","Wrench","ZoomBackOut","CACHE_KEY","Symbol","for","iconCacheKey","name","flag","iconCache","g","globalThis","Map","FORBIDDEN_ELEMENTS","Set","isValidIconSvgElement","el","has","localName","toLowerCase","attr","getAttributeNames","lower","startsWith","value","getAttribute","i","children","length","isValidIconSvgRoot","root","parseIconSvg","svg","DOMParser","doc","parseFromString","querySelector","documentElement","iconCss","Icon","__stencil_proxyCustomElement","HTMLElement","constructor","registerHost","this","size","color","loadToken","renderedSvg","resolveSvg","key","token","cached","get","undefined","loaders","loader","Object","prototype","hasOwnProperty","call","set","catch","componentWillLoad","updateSvg","container","replaceChildren","removeAttribute","setAttribute","style","display","flexShrink","width","height","onIconChange","componentDidRender","render","isCustomColor","cls","icon","h","Host","alignItems","justifyContent","class","role","label"],"sources":["src/wc/components/Icon/flag-icon-catalog.ts","src/wc/components/Icon/system-icon-catalog.ts","src/wc/components/Icon/icon-cache.ts","src/wc/components/Icon/icon-svg.ts","src/wc/components/Icon/Icon.css?tag=ds-icon&encapsulation=scoped","src/wc/components/Icon/Icon.tsx"],"sourcesContent":["/** Auto-generated by scripts/generate-icon-catalog.mjs — do not edit. */\n\nexport const flagIconLoaders: Record<string, () => Promise<string>> = {\n FlagAustria: () => import('@ds-mo/icons/svg/flags/FlagAustria').then(m => m.FlagAustria),\n FlagBelgium: () => import('@ds-mo/icons/svg/flags/FlagBelgium').then(m => m.FlagBelgium),\n FlagBulgaria: () => import('@ds-mo/icons/svg/flags/FlagBulgaria').then(m => m.FlagBulgaria),\n FlagCanada: () => import('@ds-mo/icons/svg/flags/FlagCanada').then(m => m.FlagCanada),\n FlagCroatia: () => import('@ds-mo/icons/svg/flags/FlagCroatia').then(m => m.FlagCroatia),\n FlagCyprus: () => import('@ds-mo/icons/svg/flags/FlagCyprus').then(m => m.FlagCyprus),\n FlagCzechRepublic: () => import('@ds-mo/icons/svg/flags/FlagCzechRepublic').then(m => m.FlagCzechRepublic),\n FlagDenmark: () => import('@ds-mo/icons/svg/flags/FlagDenmark').then(m => m.FlagDenmark),\n FlagEU: () => import('@ds-mo/icons/svg/flags/FlagEU').then(m => m.FlagEU),\n FlagEstonia: () => import('@ds-mo/icons/svg/flags/FlagEstonia').then(m => m.FlagEstonia),\n FlagFinland: () => import('@ds-mo/icons/svg/flags/FlagFinland').then(m => m.FlagFinland),\n FlagFrance: () => import('@ds-mo/icons/svg/flags/FlagFrance').then(m => m.FlagFrance),\n FlagGermany: () => import('@ds-mo/icons/svg/flags/FlagGermany').then(m => m.FlagGermany),\n FlagGreece: () => import('@ds-mo/icons/svg/flags/FlagGreece').then(m => m.FlagGreece),\n FlagHungary: () => import('@ds-mo/icons/svg/flags/FlagHungary').then(m => m.FlagHungary),\n FlagIreland: () => import('@ds-mo/icons/svg/flags/FlagIreland').then(m => m.FlagIreland),\n FlagItaly: () => import('@ds-mo/icons/svg/flags/FlagItaly').then(m => m.FlagItaly),\n FlagLatvia: () => import('@ds-mo/icons/svg/flags/FlagLatvia').then(m => m.FlagLatvia),\n FlagLithuania: () => import('@ds-mo/icons/svg/flags/FlagLithuania').then(m => m.FlagLithuania),\n FlagLuxembourg: () => import('@ds-mo/icons/svg/flags/FlagLuxembourg').then(m => m.FlagLuxembourg),\n FlagMalta: () => import('@ds-mo/icons/svg/flags/FlagMalta').then(m => m.FlagMalta),\n FlagMexico: () => import('@ds-mo/icons/svg/flags/FlagMexico').then(m => m.FlagMexico),\n FlagNetherlands: () => import('@ds-mo/icons/svg/flags/FlagNetherlands').then(m => m.FlagNetherlands),\n FlagPoland: () => import('@ds-mo/icons/svg/flags/FlagPoland').then(m => m.FlagPoland),\n FlagPortugal: () => import('@ds-mo/icons/svg/flags/FlagPortugal').then(m => m.FlagPortugal),\n FlagRomania: () => import('@ds-mo/icons/svg/flags/FlagRomania').then(m => m.FlagRomania),\n FlagSlovakia: () => import('@ds-mo/icons/svg/flags/FlagSlovakia').then(m => m.FlagSlovakia),\n FlagSlovenia: () => import('@ds-mo/icons/svg/flags/FlagSlovenia').then(m => m.FlagSlovenia),\n FlagSpain: () => import('@ds-mo/icons/svg/flags/FlagSpain').then(m => m.FlagSpain),\n FlagSweden: () => import('@ds-mo/icons/svg/flags/FlagSweden').then(m => m.FlagSweden),\n FlagUnitedKingdom: () => import('@ds-mo/icons/svg/flags/FlagUnitedKingdom').then(m => m.FlagUnitedKingdom),\n FlagUnitedStates: () => import('@ds-mo/icons/svg/flags/FlagUnitedStates').then(m => m.FlagUnitedStates),\n};\n","/** Auto-generated by scripts/generate-icon-catalog.mjs — do not edit. */\n\nexport const systemIconLoaders: Record<string, () => Promise<string>> = {\n AI: () => import('@ds-mo/icons/svg/AI').then(m => m.AI),\n AIChip: () => import('@ds-mo/icons/svg/AIChip').then(m => m.AIChip),\n AINew: () => import('@ds-mo/icons/svg/AINew').then(m => m.AINew),\n AISparkle: () => import('@ds-mo/icons/svg/AISparkle').then(m => m.AISparkle),\n AUX: () => import('@ds-mo/icons/svg/AUX').then(m => m.AUX),\n AUXFilled: () => import('@ds-mo/icons/svg/AUXFilled').then(m => m.AUXFilled),\n AndroidFilled: () => import('@ds-mo/icons/svg/AndroidFilled').then(m => m.AndroidFilled),\n ArrowDown: () => import('@ds-mo/icons/svg/ArrowDown').then(m => m.ArrowDown),\n ArrowLeft: () => import('@ds-mo/icons/svg/ArrowLeft').then(m => m.ArrowLeft),\n ArrowPath: () => import('@ds-mo/icons/svg/ArrowPath').then(m => m.ArrowPath),\n ArrowRight: () => import('@ds-mo/icons/svg/ArrowRight').then(m => m.ArrowRight),\n ArrowUp: () => import('@ds-mo/icons/svg/ArrowUp').then(m => m.ArrowUp),\n ArrowsDiagonal: () => import('@ds-mo/icons/svg/ArrowsDiagonal').then(m => m.ArrowsDiagonal),\n ArrowsDiff: () => import('@ds-mo/icons/svg/ArrowsDiff').then(m => m.ArrowsDiff),\n ArrowsDiffDisabled: () => import('@ds-mo/icons/svg/ArrowsDiffDisabled').then(m => m.ArrowsDiffDisabled),\n ArrowsVertical: () => import('@ds-mo/icons/svg/ArrowsVertical').then(m => m.ArrowsVertical),\n AtSign: () => import('@ds-mo/icons/svg/AtSign').then(m => m.AtSign),\n Avatar: () => import('@ds-mo/icons/svg/Avatar').then(m => m.Avatar),\n BackslashBrackets: () => import('@ds-mo/icons/svg/BackslashBrackets').then(m => m.BackslashBrackets),\n BatteryCharging: () => import('@ds-mo/icons/svg/BatteryCharging').then(m => m.BatteryCharging),\n BatteryEmpty: () => import('@ds-mo/icons/svg/BatteryEmpty').then(m => m.BatteryEmpty),\n BatteryFull: () => import('@ds-mo/icons/svg/BatteryFull').then(m => m.BatteryFull),\n BatteryHalf: () => import('@ds-mo/icons/svg/BatteryHalf').then(m => m.BatteryHalf),\n BatteryLow: () => import('@ds-mo/icons/svg/BatteryLow').then(m => m.BatteryLow),\n Beaker: () => import('@ds-mo/icons/svg/Beaker').then(m => m.Beaker),\n Bell: () => import('@ds-mo/icons/svg/Bell').then(m => m.Bell),\n BellCircle: () => import('@ds-mo/icons/svg/BellCircle').then(m => m.BellCircle),\n BellExclamation: () => import('@ds-mo/icons/svg/BellExclamation').then(m => m.BellExclamation),\n BellFilled: () => import('@ds-mo/icons/svg/BellFilled').then(m => m.BellFilled),\n BellRinging: () => import('@ds-mo/icons/svg/BellRinging').then(m => m.BellRinging),\n BellWifi: () => import('@ds-mo/icons/svg/BellWifi').then(m => m.BellWifi),\n BlackWhite: () => import('@ds-mo/icons/svg/BlackWhite').then(m => m.BlackWhite),\n BlankUI: () => import('@ds-mo/icons/svg/BlankUI').then(m => m.BlankUI),\n Bluetooth: () => import('@ds-mo/icons/svg/Bluetooth').then(m => m.Bluetooth),\n Bolt: () => import('@ds-mo/icons/svg/Bolt').then(m => m.Bolt),\n BoltFilled: () => import('@ds-mo/icons/svg/BoltFilled').then(m => m.BoltFilled),\n Bookmark: () => import('@ds-mo/icons/svg/Bookmark').then(m => m.Bookmark),\n Box: () => import('@ds-mo/icons/svg/Box').then(m => m.Box),\n Braces: () => import('@ds-mo/icons/svg/Braces').then(m => m.Braces),\n Bug: () => import('@ds-mo/icons/svg/Bug').then(m => m.Bug),\n BuildingFacility: () => import('@ds-mo/icons/svg/BuildingFacility').then(m => m.BuildingFacility),\n BuildingHome: () => import('@ds-mo/icons/svg/BuildingHome').then(m => m.BuildingHome),\n BuildingOffice: () => import('@ds-mo/icons/svg/BuildingOffice').then(m => m.BuildingOffice),\n BuildingPublic: () => import('@ds-mo/icons/svg/BuildingPublic').then(m => m.BuildingPublic),\n BuildingShop: () => import('@ds-mo/icons/svg/BuildingShop').then(m => m.BuildingShop),\n Bulb: () => import('@ds-mo/icons/svg/Bulb').then(m => m.Bulb),\n Calculator: () => import('@ds-mo/icons/svg/Calculator').then(m => m.Calculator),\n Calendar: () => import('@ds-mo/icons/svg/Calendar').then(m => m.Calendar),\n CalendarClock: () => import('@ds-mo/icons/svg/CalendarClock').then(m => m.CalendarClock),\n CameraA: () => import('@ds-mo/icons/svg/CameraA').then(m => m.CameraA),\n CameraB: () => import('@ds-mo/icons/svg/CameraB').then(m => m.CameraB),\n Card: () => import('@ds-mo/icons/svg/Card').then(m => m.Card),\n CardPerson: () => import('@ds-mo/icons/svg/CardPerson').then(m => m.CardPerson),\n Cart: () => import('@ds-mo/icons/svg/Cart').then(m => m.Cart),\n Chart: () => import('@ds-mo/icons/svg/Chart').then(m => m.Chart),\n Check: () => import('@ds-mo/icons/svg/Check').then(m => m.Check),\n CheckCircle: () => import('@ds-mo/icons/svg/CheckCircle').then(m => m.CheckCircle),\n CheckCircleFilled: () => import('@ds-mo/icons/svg/CheckCircleFilled').then(m => m.CheckCircleFilled),\n CheckDouble: () => import('@ds-mo/icons/svg/CheckDouble').then(m => m.CheckDouble),\n ChevronDown: () => import('@ds-mo/icons/svg/ChevronDown').then(m => m.ChevronDown),\n ChevronLeft: () => import('@ds-mo/icons/svg/ChevronLeft').then(m => m.ChevronLeft),\n ChevronLeftDouble: () => import('@ds-mo/icons/svg/ChevronLeftDouble').then(m => m.ChevronLeftDouble),\n ChevronRight: () => import('@ds-mo/icons/svg/ChevronRight').then(m => m.ChevronRight),\n ChevronRightDouble: () => import('@ds-mo/icons/svg/ChevronRightDouble').then(m => m.ChevronRightDouble),\n ChevronUp: () => import('@ds-mo/icons/svg/ChevronUp').then(m => m.ChevronUp),\n ChevronUpDown: () => import('@ds-mo/icons/svg/ChevronUpDown').then(m => m.ChevronUpDown),\n Circle: () => import('@ds-mo/icons/svg/Circle').then(m => m.Circle),\n CircleArrow: () => import('@ds-mo/icons/svg/CircleArrow').then(m => m.CircleArrow),\n CircleArrowsDiff: () => import('@ds-mo/icons/svg/CircleArrowsDiff').then(m => m.CircleArrowsDiff),\n CircleArrowsDiffDisabled: () => import('@ds-mo/icons/svg/CircleArrowsDiffDisabled').then(m => m.CircleArrowsDiffDisabled),\n CircleConcentricFilled: () => import('@ds-mo/icons/svg/CircleConcentricFilled').then(m => m.CircleConcentricFilled),\n CircleConcentricThree: () => import('@ds-mo/icons/svg/CircleConcentricThree').then(m => m.CircleConcentricThree),\n CircleConcentricTwo: () => import('@ds-mo/icons/svg/CircleConcentricTwo').then(m => m.CircleConcentricTwo),\n CircleExclamation: () => import('@ds-mo/icons/svg/CircleExclamation').then(m => m.CircleExclamation),\n CircleExclamationFilled: () => import('@ds-mo/icons/svg/CircleExclamationFilled').then(m => m.CircleExclamationFilled),\n CircleFastForward: () => import('@ds-mo/icons/svg/CircleFastForward').then(m => m.CircleFastForward),\n CircleFilled: () => import('@ds-mo/icons/svg/CircleFilled').then(m => m.CircleFilled),\n CircleGrid: () => import('@ds-mo/icons/svg/CircleGrid').then(m => m.CircleGrid),\n CirclePlay: () => import('@ds-mo/icons/svg/CirclePlay').then(m => m.CirclePlay),\n CircleQuestion: () => import('@ds-mo/icons/svg/CircleQuestion').then(m => m.CircleQuestion),\n CircleSlash: () => import('@ds-mo/icons/svg/CircleSlash').then(m => m.CircleSlash),\n Clipboard: () => import('@ds-mo/icons/svg/Clipboard').then(m => m.Clipboard),\n ClipboardCheck: () => import('@ds-mo/icons/svg/ClipboardCheck').then(m => m.ClipboardCheck),\n Clock: () => import('@ds-mo/icons/svg/Clock').then(m => m.Clock),\n ClockDefer: () => import('@ds-mo/icons/svg/ClockDefer').then(m => m.ClockDefer),\n ClockFilled: () => import('@ds-mo/icons/svg/ClockFilled').then(m => m.ClockFilled),\n ClockSixteenHour: () => import('@ds-mo/icons/svg/ClockSixteenHour').then(m => m.ClockSixteenHour),\n Cloud: () => import('@ds-mo/icons/svg/Cloud').then(m => m.Cloud),\n CloudEllipses: () => import('@ds-mo/icons/svg/CloudEllipses').then(m => m.CloudEllipses),\n CloudLightning: () => import('@ds-mo/icons/svg/CloudLightning').then(m => m.CloudLightning),\n CloudRain: () => import('@ds-mo/icons/svg/CloudRain').then(m => m.CloudRain),\n CloudRainSun: () => import('@ds-mo/icons/svg/CloudRainSun').then(m => m.CloudRainSun),\n CloudSun: () => import('@ds-mo/icons/svg/CloudSun').then(m => m.CloudSun),\n CloudWind: () => import('@ds-mo/icons/svg/CloudWind').then(m => m.CloudWind),\n Cluster: () => import('@ds-mo/icons/svg/Cluster').then(m => m.Cluster),\n Coin: () => import('@ds-mo/icons/svg/Coin').then(m => m.Coin),\n CoinStack: () => import('@ds-mo/icons/svg/CoinStack').then(m => m.CoinStack),\n CoinStackGeneral: () => import('@ds-mo/icons/svg/CoinStackGeneral').then(m => m.CoinStackGeneral),\n Compass: () => import('@ds-mo/icons/svg/Compass').then(m => m.Compass),\n Copy: () => import('@ds-mo/icons/svg/Copy').then(m => m.Copy),\n Crop: () => import('@ds-mo/icons/svg/Crop').then(m => m.Crop),\n Cross: () => import('@ds-mo/icons/svg/Cross').then(m => m.Cross),\n CrossCircle: () => import('@ds-mo/icons/svg/CrossCircle').then(m => m.CrossCircle),\n CrossCircleFilled: () => import('@ds-mo/icons/svg/CrossCircleFilled').then(m => m.CrossCircleFilled),\n Cube: () => import('@ds-mo/icons/svg/Cube').then(m => m.Cube),\n Cup: () => import('@ds-mo/icons/svg/Cup').then(m => m.Cup),\n CursorPointer: () => import('@ds-mo/icons/svg/CursorPointer').then(m => m.CursorPointer),\n CursorPointerMinus: () => import('@ds-mo/icons/svg/CursorPointerMinus').then(m => m.CursorPointerMinus),\n CursorPointerPlus: () => import('@ds-mo/icons/svg/CursorPointerPlus').then(m => m.CursorPointerPlus),\n Dashboard: () => import('@ds-mo/icons/svg/Dashboard').then(m => m.Dashboard),\n DeviceAIDashcamPlus: () => import('@ds-mo/icons/svg/DeviceAIDashcamPlus').then(m => m.DeviceAIDashcamPlus),\n DeviceAssetTracker: () => import('@ds-mo/icons/svg/DeviceAssetTracker').then(m => m.DeviceAssetTracker),\n DeviceDVR: () => import('@ds-mo/icons/svg/DeviceDVR').then(m => m.DeviceDVR),\n DeviceDashcam: () => import('@ds-mo/icons/svg/DeviceDashcam').then(m => m.DeviceDashcam),\n DeviceDashcamLiveStream: () => import('@ds-mo/icons/svg/DeviceDashcamLiveStream').then(m => m.DeviceDashcamLiveStream),\n DeviceDoorSensor: () => import('@ds-mo/icons/svg/DeviceDoorSensor').then(m => m.DeviceDoorSensor),\n DeviceMobile: () => import('@ds-mo/icons/svg/DeviceMobile').then(m => m.DeviceMobile),\n DeviceMobileTwo: () => import('@ds-mo/icons/svg/DeviceMobileTwo').then(m => m.DeviceMobileTwo),\n DeviceOmnicam: () => import('@ds-mo/icons/svg/DeviceOmnicam').then(m => m.DeviceOmnicam),\n DeviceSensor: () => import('@ds-mo/icons/svg/DeviceSensor').then(m => m.DeviceSensor),\n DeviceTablet: () => import('@ds-mo/icons/svg/DeviceTablet').then(m => m.DeviceTablet),\n DeviceVehicleGateway: () => import('@ds-mo/icons/svg/DeviceVehicleGateway').then(m => m.DeviceVehicleGateway),\n Devices: () => import('@ds-mo/icons/svg/Devices').then(m => m.Devices),\n Document: () => import('@ds-mo/icons/svg/Document').then(m => m.Document),\n DocumentArrow: () => import('@ds-mo/icons/svg/DocumentArrow').then(m => m.DocumentArrow),\n DocumentChart: () => import('@ds-mo/icons/svg/DocumentChart').then(m => m.DocumentChart),\n DocumentDollar: () => import('@ds-mo/icons/svg/DocumentDollar').then(m => m.DocumentDollar),\n DocumentGear: () => import('@ds-mo/icons/svg/DocumentGear').then(m => m.DocumentGear),\n DocumentInverted: () => import('@ds-mo/icons/svg/DocumentInverted').then(m => m.DocumentInverted),\n DocumentPencil: () => import('@ds-mo/icons/svg/DocumentPencil').then(m => m.DocumentPencil),\n DocumentPlus: () => import('@ds-mo/icons/svg/DocumentPlus').then(m => m.DocumentPlus),\n DocumentQuestion: () => import('@ds-mo/icons/svg/DocumentQuestion').then(m => m.DocumentQuestion),\n DocumentReceipt: () => import('@ds-mo/icons/svg/DocumentReceipt').then(m => m.DocumentReceipt),\n DocumentStacked: () => import('@ds-mo/icons/svg/DocumentStacked').then(m => m.DocumentStacked),\n Dot: () => import('@ds-mo/icons/svg/Dot').then(m => m.Dot),\n DotFilled: () => import('@ds-mo/icons/svg/DotFilled').then(m => m.DotFilled),\n DotPath: () => import('@ds-mo/icons/svg/DotPath').then(m => m.DotPath),\n Download: () => import('@ds-mo/icons/svg/Download').then(m => m.Download),\n Drag: () => import('@ds-mo/icons/svg/Drag').then(m => m.Drag),\n Ellipses: () => import('@ds-mo/icons/svg/Ellipses').then(m => m.Ellipses),\n Email: () => import('@ds-mo/icons/svg/Email').then(m => m.Email),\n Engine: () => import('@ds-mo/icons/svg/Engine').then(m => m.Engine),\n Enter: () => import('@ds-mo/icons/svg/Enter').then(m => m.Enter),\n EntityAsset: () => import('@ds-mo/icons/svg/EntityAsset').then(m => m.EntityAsset),\n EntityAssetFilled: () => import('@ds-mo/icons/svg/EntityAssetFilled').then(m => m.EntityAssetFilled),\n EntityDriver: () => import('@ds-mo/icons/svg/EntityDriver').then(m => m.EntityDriver),\n EntityDriverFilled: () => import('@ds-mo/icons/svg/EntityDriverFilled').then(m => m.EntityDriverFilled),\n EntityTravelGroup: () => import('@ds-mo/icons/svg/EntityTravelGroup').then(m => m.EntityTravelGroup),\n EntityTravelGroupFilled: () => import('@ds-mo/icons/svg/EntityTravelGroupFilled').then(m => m.EntityTravelGroupFilled),\n EntityVehicle: () => import('@ds-mo/icons/svg/EntityVehicle').then(m => m.EntityVehicle),\n EntityVehicleCharging: () => import('@ds-mo/icons/svg/EntityVehicleCharging').then(m => m.EntityVehicleCharging),\n EntityVehicleChargingFilled: () => import('@ds-mo/icons/svg/EntityVehicleChargingFilled').then(m => m.EntityVehicleChargingFilled),\n EntityVehicleFilled: () => import('@ds-mo/icons/svg/EntityVehicleFilled').then(m => m.EntityVehicleFilled),\n EntityVehicleImmobilized: () => import('@ds-mo/icons/svg/EntityVehicleImmobilized').then(m => m.EntityVehicleImmobilized),\n EntityVehicleImmobilizedFilled: () => import('@ds-mo/icons/svg/EntityVehicleImmobilizedFilled').then(m => m.EntityVehicleImmobilizedFilled),\n ErrorTriangle: () => import('@ds-mo/icons/svg/ErrorTriangle').then(m => m.ErrorTriangle),\n ErrorTriangleFilled: () => import('@ds-mo/icons/svg/ErrorTriangleFilled').then(m => m.ErrorTriangleFilled),\n ErrorTriangleSimpleFilled: () => import('@ds-mo/icons/svg/ErrorTriangleSimpleFilled').then(m => m.ErrorTriangleSimpleFilled),\n Export: () => import('@ds-mo/icons/svg/Export').then(m => m.Export),\n ExternalLink: () => import('@ds-mo/icons/svg/ExternalLink').then(m => m.ExternalLink),\n Eye: () => import('@ds-mo/icons/svg/Eye').then(m => m.Eye),\n EyeDisabled: () => import('@ds-mo/icons/svg/EyeDisabled').then(m => m.EyeDisabled),\n EyeLock: () => import('@ds-mo/icons/svg/EyeLock').then(m => m.EyeLock),\n FastForward: () => import('@ds-mo/icons/svg/FastForward').then(m => m.FastForward),\n FastForwardSkip: () => import('@ds-mo/icons/svg/FastForwardSkip').then(m => m.FastForwardSkip),\n Filters: () => import('@ds-mo/icons/svg/Filters').then(m => m.Filters),\n FitToScreen: () => import('@ds-mo/icons/svg/FitToScreen').then(m => m.FitToScreen),\n Flag: () => import('@ds-mo/icons/svg/Flag').then(m => m.Flag),\n FlagFilled: () => import('@ds-mo/icons/svg/FlagFilled').then(m => m.FlagFilled),\n FloppyDisk: () => import('@ds-mo/icons/svg/FloppyDisk').then(m => m.FloppyDisk),\n Folder: () => import('@ds-mo/icons/svg/Folder').then(m => m.Folder),\n FolderFilled: () => import('@ds-mo/icons/svg/FolderFilled').then(m => m.FolderFilled),\n FuelPump: () => import('@ds-mo/icons/svg/FuelPump').then(m => m.FuelPump),\n FullScreen: () => import('@ds-mo/icons/svg/FullScreen').then(m => m.FullScreen),\n FullScreenExit: () => import('@ds-mo/icons/svg/FullScreenExit').then(m => m.FullScreenExit),\n Gauge: () => import('@ds-mo/icons/svg/Gauge').then(m => m.Gauge),\n GaugeTemperature: () => import('@ds-mo/icons/svg/GaugeTemperature').then(m => m.GaugeTemperature),\n Gear: () => import('@ds-mo/icons/svg/Gear').then(m => m.Gear),\n GearCheck: () => import('@ds-mo/icons/svg/GearCheck').then(m => m.GearCheck),\n Geofence: () => import('@ds-mo/icons/svg/Geofence').then(m => m.Geofence),\n GeofenceCircle: () => import('@ds-mo/icons/svg/GeofenceCircle').then(m => m.GeofenceCircle),\n GeofenceDiamond: () => import('@ds-mo/icons/svg/GeofenceDiamond').then(m => m.GeofenceDiamond),\n GeofenceSquare: () => import('@ds-mo/icons/svg/GeofenceSquare').then(m => m.GeofenceSquare),\n GlobeNetwork: () => import('@ds-mo/icons/svg/GlobeNetwork').then(m => m.GlobeNetwork),\n GlobeWorldMap: () => import('@ds-mo/icons/svg/GlobeWorldMap').then(m => m.GlobeWorldMap),\n Graph: () => import('@ds-mo/icons/svg/Graph').then(m => m.Graph),\n GraphArrow: () => import('@ds-mo/icons/svg/GraphArrow').then(m => m.GraphArrow),\n GraphBars: () => import('@ds-mo/icons/svg/GraphBars').then(m => m.GraphBars),\n GraphDecreasing: () => import('@ds-mo/icons/svg/GraphDecreasing').then(m => m.GraphDecreasing),\n GraphIncreasing: () => import('@ds-mo/icons/svg/GraphIncreasing').then(m => m.GraphIncreasing),\n GroupBy: () => import('@ds-mo/icons/svg/GroupBy').then(m => m.GroupBy),\n Hamburger: () => import('@ds-mo/icons/svg/Hamburger').then(m => m.Hamburger),\n HandHeart: () => import('@ds-mo/icons/svg/HandHeart').then(m => m.HandHeart),\n HandOpen: () => import('@ds-mo/icons/svg/HandOpen').then(m => m.HandOpen),\n Headset: () => import('@ds-mo/icons/svg/Headset').then(m => m.Headset),\n History: () => import('@ds-mo/icons/svg/History').then(m => m.History),\n HourGlass: () => import('@ds-mo/icons/svg/HourGlass').then(m => m.HourGlass),\n Image: () => import('@ds-mo/icons/svg/Image').then(m => m.Image),\n Import: () => import('@ds-mo/icons/svg/Import').then(m => m.Import),\n ImportClock: () => import('@ds-mo/icons/svg/ImportClock').then(m => m.ImportClock),\n Inbox: () => import('@ds-mo/icons/svg/Inbox').then(m => m.Inbox),\n IosFilled: () => import('@ds-mo/icons/svg/IosFilled').then(m => m.IosFilled),\n Jerrycan: () => import('@ds-mo/icons/svg/Jerrycan').then(m => m.Jerrycan),\n KeyA: () => import('@ds-mo/icons/svg/KeyA').then(m => m.KeyA),\n KeyB: () => import('@ds-mo/icons/svg/KeyB').then(m => m.KeyB),\n KeyCmd: () => import('@ds-mo/icons/svg/KeyCmd').then(m => m.KeyCmd),\n KeyShift: () => import('@ds-mo/icons/svg/KeyShift').then(m => m.KeyShift),\n LED: () => import('@ds-mo/icons/svg/LED').then(m => m.LED),\n Layers: () => import('@ds-mo/icons/svg/Layers').then(m => m.Layers),\n Leaf: () => import('@ds-mo/icons/svg/Leaf').then(m => m.Leaf),\n LeftCollapse: () => import('@ds-mo/icons/svg/LeftCollapse').then(m => m.LeftCollapse),\n LeftCollapseB: () => import('@ds-mo/icons/svg/LeftCollapseB').then(m => m.LeftCollapseB),\n LeftExpand: () => import('@ds-mo/icons/svg/LeftExpand').then(m => m.LeftExpand),\n LeftExpandB: () => import('@ds-mo/icons/svg/LeftExpandB').then(m => m.LeftExpandB),\n LeftTurnSignal: () => import('@ds-mo/icons/svg/LeftTurnSignal').then(m => m.LeftTurnSignal),\n LetterB: () => import('@ds-mo/icons/svg/LetterB').then(m => m.LetterB),\n LetterC: () => import('@ds-mo/icons/svg/LetterC').then(m => m.LetterC),\n LetterI: () => import('@ds-mo/icons/svg/LetterI').then(m => m.LetterI),\n License: () => import('@ds-mo/icons/svg/License').then(m => m.License),\n LicensePlate: () => import('@ds-mo/icons/svg/LicensePlate').then(m => m.LicensePlate),\n Lifebuoy: () => import('@ds-mo/icons/svg/Lifebuoy').then(m => m.Lifebuoy),\n Link: () => import('@ds-mo/icons/svg/Link').then(m => m.Link),\n List: () => import('@ds-mo/icons/svg/List').then(m => m.List),\n Loads: () => import('@ds-mo/icons/svg/Loads').then(m => m.Loads),\n LocationPin: () => import('@ds-mo/icons/svg/LocationPin').then(m => m.LocationPin),\n LocationPinArrows: () => import('@ds-mo/icons/svg/LocationPinArrows').then(m => m.LocationPinArrows),\n LocationPinDisabled: () => import('@ds-mo/icons/svg/LocationPinDisabled').then(m => m.LocationPinDisabled),\n LocationPinDollar: () => import('@ds-mo/icons/svg/LocationPinDollar').then(m => m.LocationPinDollar),\n LockClosed: () => import('@ds-mo/icons/svg/LockClosed').then(m => m.LockClosed),\n LockClosedFilled: () => import('@ds-mo/icons/svg/LockClosedFilled').then(m => m.LockClosedFilled),\n LockOpen: () => import('@ds-mo/icons/svg/LockOpen').then(m => m.LockOpen),\n Logout: () => import('@ds-mo/icons/svg/Logout').then(m => m.Logout),\n Logs: () => import('@ds-mo/icons/svg/Logs').then(m => m.Logs),\n LogsMagnifyingGlass: () => import('@ds-mo/icons/svg/LogsMagnifyingGlass').then(m => m.LogsMagnifyingGlass),\n MagnifyingGlass: () => import('@ds-mo/icons/svg/MagnifyingGlass').then(m => m.MagnifyingGlass),\n MagnifyingGlassGraph: () => import('@ds-mo/icons/svg/MagnifyingGlassGraph').then(m => m.MagnifyingGlassGraph),\n MagnifyingGlassZoomIn: () => import('@ds-mo/icons/svg/MagnifyingGlassZoomIn').then(m => m.MagnifyingGlassZoomIn),\n MagnifyingGlassZoomOut: () => import('@ds-mo/icons/svg/MagnifyingGlassZoomOut').then(m => m.MagnifyingGlassZoomOut),\n MapNavigation: () => import('@ds-mo/icons/svg/MapNavigation').then(m => m.MapNavigation),\n MapPage: () => import('@ds-mo/icons/svg/MapPage').then(m => m.MapPage),\n MapPin: () => import('@ds-mo/icons/svg/MapPin').then(m => m.MapPin),\n MarkRead: () => import('@ds-mo/icons/svg/MarkRead').then(m => m.MarkRead),\n Match: () => import('@ds-mo/icons/svg/Match').then(m => m.Match),\n MessageBubble: () => import('@ds-mo/icons/svg/MessageBubble').then(m => m.MessageBubble),\n MessageBubbleStack: () => import('@ds-mo/icons/svg/MessageBubbleStack').then(m => m.MessageBubbleStack),\n Messaging: () => import('@ds-mo/icons/svg/Messaging').then(m => m.Messaging),\n Mic: () => import('@ds-mo/icons/svg/Mic').then(m => m.Mic),\n MicMute: () => import('@ds-mo/icons/svg/MicMute').then(m => m.MicMute),\n Minimize: () => import('@ds-mo/icons/svg/Minimize').then(m => m.Minimize),\n Monitor: () => import('@ds-mo/icons/svg/Monitor').then(m => m.Monitor),\n Notification: () => import('@ds-mo/icons/svg/Notification').then(m => m.Notification),\n NumberTen: () => import('@ds-mo/icons/svg/NumberTen').then(m => m.NumberTen),\n OctagonSubtract: () => import('@ds-mo/icons/svg/OctagonSubtract').then(m => m.OctagonSubtract),\n Odometer: () => import('@ds-mo/icons/svg/Odometer').then(m => m.Odometer),\n OverviewAI: () => import('@ds-mo/icons/svg/OverviewAI').then(m => m.OverviewAI),\n PanelCollapse: () => import('@ds-mo/icons/svg/PanelCollapse').then(m => m.PanelCollapse),\n PanelExpand: () => import('@ds-mo/icons/svg/PanelExpand').then(m => m.PanelExpand),\n Paperclip: () => import('@ds-mo/icons/svg/Paperclip').then(m => m.Paperclip),\n PaperplaneSend: () => import('@ds-mo/icons/svg/PaperplaneSend').then(m => m.PaperplaneSend),\n Paragraph: () => import('@ds-mo/icons/svg/Paragraph').then(m => m.Paragraph),\n ParagraphCheck: () => import('@ds-mo/icons/svg/ParagraphCheck').then(m => m.ParagraphCheck),\n ParagraphPencil: () => import('@ds-mo/icons/svg/ParagraphPencil').then(m => m.ParagraphPencil),\n Pause: () => import('@ds-mo/icons/svg/Pause').then(m => m.Pause),\n PauseFilled: () => import('@ds-mo/icons/svg/PauseFilled').then(m => m.PauseFilled),\n Pencil: () => import('@ds-mo/icons/svg/Pencil').then(m => m.Pencil),\n PencilSquiggle: () => import('@ds-mo/icons/svg/PencilSquiggle').then(m => m.PencilSquiggle),\n Person: () => import('@ds-mo/icons/svg/Person').then(m => m.Person),\n PersonAt: () => import('@ds-mo/icons/svg/PersonAt').then(m => m.PersonAt),\n PersonConnect: () => import('@ds-mo/icons/svg/PersonConnect').then(m => m.PersonConnect),\n PersonFrame: () => import('@ds-mo/icons/svg/PersonFrame').then(m => m.PersonFrame),\n PersonGear: () => import('@ds-mo/icons/svg/PersonGear').then(m => m.PersonGear),\n PersonGroup: () => import('@ds-mo/icons/svg/PersonGroup').then(m => m.PersonGroup),\n PersonGroupArrows: () => import('@ds-mo/icons/svg/PersonGroupArrows').then(m => m.PersonGroupArrows),\n PersonManager: () => import('@ds-mo/icons/svg/PersonManager').then(m => m.PersonManager),\n PersonShield: () => import('@ds-mo/icons/svg/PersonShield').then(m => m.PersonShield),\n PersonStar: () => import('@ds-mo/icons/svg/PersonStar').then(m => m.PersonStar),\n Phone: () => import('@ds-mo/icons/svg/Phone').then(m => m.Phone),\n PhoneDisconnect: () => import('@ds-mo/icons/svg/PhoneDisconnect').then(m => m.PhoneDisconnect),\n PicmanFilled: () => import('@ds-mo/icons/svg/PicmanFilled').then(m => m.PicmanFilled),\n Pin: () => import('@ds-mo/icons/svg/Pin').then(m => m.Pin),\n PipBottomLeft: () => import('@ds-mo/icons/svg/PipBottomLeft').then(m => m.PipBottomLeft),\n PipBottomRight: () => import('@ds-mo/icons/svg/PipBottomRight').then(m => m.PipBottomRight),\n PipTopLeft: () => import('@ds-mo/icons/svg/PipTopLeft').then(m => m.PipTopLeft),\n PipTopRight: () => import('@ds-mo/icons/svg/PipTopRight').then(m => m.PipTopRight),\n Play: () => import('@ds-mo/icons/svg/Play').then(m => m.Play),\n PlayFilled: () => import('@ds-mo/icons/svg/PlayFilled').then(m => m.PlayFilled),\n Plug: () => import('@ds-mo/icons/svg/Plug').then(m => m.Plug),\n Plus: () => import('@ds-mo/icons/svg/Plus').then(m => m.Plus),\n PlusCircle: () => import('@ds-mo/icons/svg/PlusCircle').then(m => m.PlusCircle),\n Preferences: () => import('@ds-mo/icons/svg/Preferences').then(m => m.Preferences),\n Printer: () => import('@ds-mo/icons/svg/Printer').then(m => m.Printer),\n PunchCard: () => import('@ds-mo/icons/svg/PunchCard').then(m => m.PunchCard),\n Puzzle: () => import('@ds-mo/icons/svg/Puzzle').then(m => m.Puzzle),\n PuzzleJoined: () => import('@ds-mo/icons/svg/PuzzleJoined').then(m => m.PuzzleJoined),\n Redo: () => import('@ds-mo/icons/svg/Redo').then(m => m.Redo),\n Refresh: () => import('@ds-mo/icons/svg/Refresh').then(m => m.Refresh),\n Restore: () => import('@ds-mo/icons/svg/Restore').then(m => m.Restore),\n RewardRibbon: () => import('@ds-mo/icons/svg/RewardRibbon').then(m => m.RewardRibbon),\n Rewind: () => import('@ds-mo/icons/svg/Rewind').then(m => m.Rewind),\n RewindSkip: () => import('@ds-mo/icons/svg/RewindSkip').then(m => m.RewindSkip),\n RewindSkipFilled: () => import('@ds-mo/icons/svg/RewindSkipFilled').then(m => m.RewindSkipFilled),\n RightCollapse: () => import('@ds-mo/icons/svg/RightCollapse').then(m => m.RightCollapse),\n RightCollapseB: () => import('@ds-mo/icons/svg/RightCollapseB').then(m => m.RightCollapseB),\n RightExpand: () => import('@ds-mo/icons/svg/RightExpand').then(m => m.RightExpand),\n RightExpandB: () => import('@ds-mo/icons/svg/RightExpandB').then(m => m.RightExpandB),\n RightTurnSignal: () => import('@ds-mo/icons/svg/RightTurnSignal').then(m => m.RightTurnSignal),\n Rotate: () => import('@ds-mo/icons/svg/Rotate').then(m => m.Rotate),\n Satellite: () => import('@ds-mo/icons/svg/Satellite').then(m => m.Satellite),\n Scan: () => import('@ds-mo/icons/svg/Scan').then(m => m.Scan),\n Scissor: () => import('@ds-mo/icons/svg/Scissor').then(m => m.Scissor),\n Scope: () => import('@ds-mo/icons/svg/Scope').then(m => m.Scope),\n Seatbelt: () => import('@ds-mo/icons/svg/Seatbelt').then(m => m.Seatbelt),\n SeatbeltBuckle: () => import('@ds-mo/icons/svg/SeatbeltBuckle').then(m => m.SeatbeltBuckle),\n Shapes: () => import('@ds-mo/icons/svg/Shapes').then(m => m.Shapes),\n ShareCircles: () => import('@ds-mo/icons/svg/ShareCircles').then(m => m.ShareCircles),\n ShareCirclesFilled: () => import('@ds-mo/icons/svg/ShareCirclesFilled').then(m => m.ShareCirclesFilled),\n SharePaperplane: () => import('@ds-mo/icons/svg/SharePaperplane').then(m => m.SharePaperplane),\n Shield: () => import('@ds-mo/icons/svg/Shield').then(m => m.Shield),\n ShieldCheck: () => import('@ds-mo/icons/svg/ShieldCheck').then(m => m.ShieldCheck),\n ShieldCheckmarkFilled: () => import('@ds-mo/icons/svg/ShieldCheckmarkFilled').then(m => m.ShieldCheckmarkFilled),\n ShieldCircle: () => import('@ds-mo/icons/svg/ShieldCircle').then(m => m.ShieldCircle),\n ShieldCircleFilled: () => import('@ds-mo/icons/svg/ShieldCircleFilled').then(m => m.ShieldCircleFilled),\n ShieldCross: () => import('@ds-mo/icons/svg/ShieldCross').then(m => m.ShieldCross),\n ShieldCrossFilled: () => import('@ds-mo/icons/svg/ShieldCrossFilled').then(m => m.ShieldCrossFilled),\n ShieldFilled: () => import('@ds-mo/icons/svg/ShieldFilled').then(m => m.ShieldFilled),\n ShieldLock: () => import('@ds-mo/icons/svg/ShieldLock').then(m => m.ShieldLock),\n ShieldLockFilled: () => import('@ds-mo/icons/svg/ShieldLockFilled').then(m => m.ShieldLockFilled),\n ShoppingBag: () => import('@ds-mo/icons/svg/ShoppingBag').then(m => m.ShoppingBag),\n Snowflake: () => import('@ds-mo/icons/svg/Snowflake').then(m => m.Snowflake),\n SpeakerPhone: () => import('@ds-mo/icons/svg/SpeakerPhone').then(m => m.SpeakerPhone),\n SpeedometerArrow: () => import('@ds-mo/icons/svg/SpeedometerArrow').then(m => m.SpeedometerArrow),\n SpeedometerLeft: () => import('@ds-mo/icons/svg/SpeedometerLeft').then(m => m.SpeedometerLeft),\n SpeedometerRight: () => import('@ds-mo/icons/svg/SpeedometerRight').then(m => m.SpeedometerRight),\n SpikeCirclePercentage: () => import('@ds-mo/icons/svg/SpikeCirclePercentage').then(m => m.SpikeCirclePercentage),\n SpikeCirclePercentageFilled: () => import('@ds-mo/icons/svg/SpikeCirclePercentageFilled').then(m => m.SpikeCirclePercentageFilled),\n Square: () => import('@ds-mo/icons/svg/Square').then(m => m.Square),\n SquareArrowTopRight: () => import('@ds-mo/icons/svg/SquareArrowTopRight').then(m => m.SquareArrowTopRight),\n SquareCheck: () => import('@ds-mo/icons/svg/SquareCheck').then(m => m.SquareCheck),\n SquareCheckFilled: () => import('@ds-mo/icons/svg/SquareCheckFilled').then(m => m.SquareCheckFilled),\n SquareDollar: () => import('@ds-mo/icons/svg/SquareDollar').then(m => m.SquareDollar),\n SquareDollarFilled: () => import('@ds-mo/icons/svg/SquareDollarFilled').then(m => m.SquareDollarFilled),\n SquareDottedMinus: () => import('@ds-mo/icons/svg/SquareDottedMinus').then(m => m.SquareDottedMinus),\n SquareFilled: () => import('@ds-mo/icons/svg/SquareFilled').then(m => m.SquareFilled),\n SquareGrid: () => import('@ds-mo/icons/svg/SquareGrid').then(m => m.SquareGrid),\n SquarePencil: () => import('@ds-mo/icons/svg/SquarePencil').then(m => m.SquarePencil),\n SquarePlus: () => import('@ds-mo/icons/svg/SquarePlus').then(m => m.SquarePlus),\n SquareSubtract: () => import('@ds-mo/icons/svg/SquareSubtract').then(m => m.SquareSubtract),\n SquareSubtractFilled: () => import('@ds-mo/icons/svg/SquareSubtractFilled').then(m => m.SquareSubtractFilled),\n Star: () => import('@ds-mo/icons/svg/Star').then(m => m.Star),\n StarFilled: () => import('@ds-mo/icons/svg/StarFilled').then(m => m.StarFilled),\n Stopwatch: () => import('@ds-mo/icons/svg/Stopwatch').then(m => m.Stopwatch),\n Street: () => import('@ds-mo/icons/svg/Street').then(m => m.Street),\n Subtract: () => import('@ds-mo/icons/svg/Subtract').then(m => m.Subtract),\n SubtractCircle: () => import('@ds-mo/icons/svg/SubtractCircle').then(m => m.SubtractCircle),\n SubtractCircleFilled: () => import('@ds-mo/icons/svg/SubtractCircleFilled').then(m => m.SubtractCircleFilled),\n Table: () => import('@ds-mo/icons/svg/Table').then(m => m.Table),\n Tag: () => import('@ds-mo/icons/svg/Tag').then(m => m.Tag),\n Target: () => import('@ds-mo/icons/svg/Target').then(m => m.Target),\n TargetDollar: () => import('@ds-mo/icons/svg/TargetDollar').then(m => m.TargetDollar),\n Text: () => import('@ds-mo/icons/svg/Text').then(m => m.Text),\n ThemeDark: () => import('@ds-mo/icons/svg/ThemeDark').then(m => m.ThemeDark),\n ThemeLight: () => import('@ds-mo/icons/svg/ThemeLight').then(m => m.ThemeLight),\n ThumbsDown: () => import('@ds-mo/icons/svg/ThumbsDown').then(m => m.ThumbsDown),\n ThumbsDownFilled: () => import('@ds-mo/icons/svg/ThumbsDownFilled').then(m => m.ThumbsDownFilled),\n ThumbsUp: () => import('@ds-mo/icons/svg/ThumbsUp').then(m => m.ThumbsUp),\n ThumbsUpFilled: () => import('@ds-mo/icons/svg/ThumbsUpFilled').then(m => m.ThumbsUpFilled),\n TirePressure: () => import('@ds-mo/icons/svg/TirePressure').then(m => m.TirePressure),\n Toggle: () => import('@ds-mo/icons/svg/Toggle').then(m => m.Toggle),\n TrafficLight: () => import('@ds-mo/icons/svg/TrafficLight').then(m => m.TrafficLight),\n Trash: () => import('@ds-mo/icons/svg/Trash').then(m => m.Trash),\n Trophy: () => import('@ds-mo/icons/svg/Trophy').then(m => m.Trophy),\n TurnSignal: () => import('@ds-mo/icons/svg/TurnSignal').then(m => m.TurnSignal),\n TurnSignalFilled: () => import('@ds-mo/icons/svg/TurnSignalFilled').then(m => m.TurnSignalFilled),\n Undo: () => import('@ds-mo/icons/svg/Undo').then(m => m.Undo),\n Upgrade: () => import('@ds-mo/icons/svg/Upgrade').then(m => m.Upgrade),\n Upload: () => import('@ds-mo/icons/svg/Upload').then(m => m.Upload),\n VehicleTrailer: () => import('@ds-mo/icons/svg/VehicleTrailer').then(m => m.VehicleTrailer),\n VehicleTruck: () => import('@ds-mo/icons/svg/VehicleTruck').then(m => m.VehicleTruck),\n VehicleTruckMagnifyingGlass: () => import('@ds-mo/icons/svg/VehicleTruckMagnifyingGlass').then(m => m.VehicleTruckMagnifyingGlass),\n Video: () => import('@ds-mo/icons/svg/Video').then(m => m.Video),\n ViewMenu: () => import('@ds-mo/icons/svg/ViewMenu').then(m => m.ViewMenu),\n Volume: () => import('@ds-mo/icons/svg/Volume').then(m => m.Volume),\n VolumeFilled: () => import('@ds-mo/icons/svg/VolumeFilled').then(m => m.VolumeFilled),\n VolumeMute: () => import('@ds-mo/icons/svg/VolumeMute').then(m => m.VolumeMute),\n VolumeMuteFilled: () => import('@ds-mo/icons/svg/VolumeMuteFilled').then(m => m.VolumeMuteFilled),\n WandSparkle: () => import('@ds-mo/icons/svg/WandSparkle').then(m => m.WandSparkle),\n Waveform: () => import('@ds-mo/icons/svg/Waveform').then(m => m.Waveform),\n Webhooks: () => import('@ds-mo/icons/svg/Webhooks').then(m => m.Webhooks),\n Whistle: () => import('@ds-mo/icons/svg/Whistle').then(m => m.Whistle),\n WifiHorizontal: () => import('@ds-mo/icons/svg/WifiHorizontal').then(m => m.WifiHorizontal),\n WifiTower: () => import('@ds-mo/icons/svg/WifiTower').then(m => m.WifiTower),\n WifiVertical: () => import('@ds-mo/icons/svg/WifiVertical').then(m => m.WifiVertical),\n WifiVerticalFilled: () => import('@ds-mo/icons/svg/WifiVerticalFilled').then(m => m.WifiVerticalFilled),\n WifiVerticalFilledDisabled: () => import('@ds-mo/icons/svg/WifiVerticalFilledDisabled').then(m => m.WifiVerticalFilledDisabled),\n WorkflowA: () => import('@ds-mo/icons/svg/WorkflowA').then(m => m.WorkflowA),\n WorkflowB: () => import('@ds-mo/icons/svg/WorkflowB').then(m => m.WorkflowB),\n Wrench: () => import('@ds-mo/icons/svg/Wrench').then(m => m.Wrench),\n ZoomBackOut: () => import('@ds-mo/icons/svg/ZoomBackOut').then(m => m.ZoomBackOut),\n};\n","/**\n * Shared SVG glyph cache for ds-icon.\n *\n * Keyed on a global symbol so every module instance (the compiled Stencil chunk\n * inside dist/components and any direct source import, e.g. via `@ds-mo/ui/utils`)\n * reads and writes the same cache. Without this, `registerIcons` called from an\n * app would fill a different Map than the one ds-icon resolves from.\n */\nconst CACHE_KEY = Symbol.for('ds-mo.icon-svg-cache');\n\ntype IconCacheMap = Map<string, string>;\n\ntype GlobalWithIconCache = { [CACHE_KEY]?: IconCacheMap };\n\nexport function iconCacheKey(name: string, flag: boolean): string {\n return flag ? `flag:${name}` : `system:${name}`;\n}\n\nexport function iconCache(): IconCacheMap {\n const g = globalThis as GlobalWithIconCache;\n return (g[CACHE_KEY] ??= new Map());\n}\n\n/**\n * Pre-register glyphs so ds-icon renders them synchronously — no lazy-chunk\n * fetch, no first-paint pop-in. Import the SVG strings from `@ds-mo/icons`\n * in the app (statically, so they ship in the app's own bundle):\n *\n * ```ts\n * import { Bell } from '@ds-mo/icons/svg/Bell';\n * import { FlagUnitedStates } from '@ds-mo/icons/svg/flags/FlagUnitedStates';\n * import { registerIcons } from '@ds-mo/ui/utils';\n *\n * registerIcons({ Bell });\n * registerIcons({ FlagUnitedStates });\n * ```\n *\n * Icons that are not registered still work — they lazy-load on first render\n * and stay cached afterwards.\n */\nexport function registerIcons(icons: Record<string, string>, options?: { flag?: boolean }): void {\n const cache = iconCache();\n for (const [name, svg] of Object.entries(icons)) {\n const flag = options?.flag ?? name.startsWith('Flag');\n cache.set(iconCacheKey(name, flag), svg);\n }\n}\n","/**\n * Glyph markup validation + Trusted-Types-safe parsing for ds-icon.\n *\n * Glyphs normally come from the trusted @ds-mo/icons build pipeline, but\n * `registerIcons` accepts arbitrary app-provided strings and injection is a\n * sink — so every glyph is validated at the render boundary. Injection uses\n * parsed DOM nodes (never innerHTML), which keeps ds-icon working under a\n * strict CSP with `require-trusted-types-for 'script'`.\n */\n\n/** Structural view of an element so the walk is unit-testable without a DOM. */\nexport interface IconSvgElementLike {\n localName: string;\n getAttributeNames(): string[];\n getAttribute(name: string): string | null;\n children: ArrayLike<IconSvgElementLike>;\n}\n\n/** Elements that can execute or embed foreign content — never valid in a glyph. */\nconst FORBIDDEN_ELEMENTS = new Set([\n 'script',\n 'foreignobject',\n 'iframe',\n 'object',\n 'embed',\n 'animation', // SVG 1.2 external-content element (distinct from animate/animateTransform)\n]);\n\nfunction isValidIconSvgElement(el: IconSvgElementLike): boolean {\n if (FORBIDDEN_ELEMENTS.has(el.localName.toLowerCase())) return false;\n\n for (const attr of el.getAttributeNames()) {\n const lower = attr.toLowerCase();\n // Event handler attributes (onclick, onload, …) — any casing.\n if (lower.startsWith('on')) return false;\n // References must stay internal (#gradient-id); rejects javascript:, data:,\n // and external URLs on <use>, <a>, <image>, …\n if (lower === 'href' || lower === 'xlink:href') {\n const value = el.getAttribute(attr) ?? '';\n if (!value.startsWith('#')) return false;\n }\n }\n\n for (let i = 0; i < el.children.length; i++) {\n if (!isValidIconSvgElement(el.children[i])) return false;\n }\n\n return true;\n}\n\n/** True when `root` is an `<svg>` whose whole tree passes validation. */\nexport function isValidIconSvgRoot(root: IconSvgElementLike | null): boolean {\n return root != null && root.localName === 'svg' && isValidIconSvgElement(root);\n}\n\n/**\n * Parse + validate glyph markup. Returns a detached `<svg>` element ready to\n * append (appending adopts it into the document), or `null` when the markup\n * is not well-formed XML, not rooted at `<svg>`, or fails validation —\n * ds-icon renders an empty fixed-size box in that case.\n */\nexport function parseIconSvg(svg: string): SVGElement | null {\n if (typeof DOMParser === 'undefined') return null;\n\n const doc = new DOMParser().parseFromString(svg, 'image/svg+xml');\n // Malformed XML yields a parsererror document (root or nested, per browser).\n if (doc.querySelector('parsererror')) return null;\n\n const root = doc.documentElement as unknown as IconSvgElementLike;\n if (!isValidIconSvgRoot(root)) return null;\n\n return doc.documentElement as unknown as SVGElement;\n}\n","/* ── Base icon ───────────────────────────────────────────────────────────── */\n\n.icon {\n display: inline-flex;\n align-items: center;\n justify-content: center;\n flex-shrink: 0;\n line-height: 0;\n color: inherit;\n /* Explicit size so the SVG (width/height: 100% via JS) has a defined container */\n width: var(--_icon-sz, var(--dimension-iconography-md));\n height: var(--_icon-sz, var(--dimension-iconography-md));\n}\n\n.icon__svg {\n display: contents;\n line-height: 0;\n}\n\n/* SVG width/height are set via inline style in updateSvg() because Stencil's\n scoped CSS cannot reach innerHTML-injected elements (they lack the sc-* class). */\n\n/* ── Sizes ───────────────────────────────────────────────────────────────── */\n\n.icon--size-xs { --_icon-sz: var(--dimension-iconography-xs); }\n.icon--size-sm { --_icon-sz: var(--dimension-iconography-sm); }\n.icon--size-md { --_icon-sz: var(--dimension-iconography-md); }\n.icon--size-lg { --_icon-sz: var(--dimension-iconography-lg); }\n.icon--size-xl { --_icon-sz: var(--dimension-iconography-xl); }\n.icon--size-2xl { --_icon-sz: var(--dimension-iconography-2xl); }\n.icon--size-3xl { --_icon-sz: var(--dimension-iconography-3xl); }\n\n/* ── Colors — hierarchy ──────────────────────────────────────────────────── */\n\n.icon--color-primary { color: var(--color-foreground-primary); }\n.icon--color-secondary { color: var(--color-foreground-secondary); }\n.icon--color-tertiary { color: var(--color-foreground-tertiary); }\n.icon--color-quaternary { color: var(--color-foreground-quaternary); }\n.icon--color-inherit { color: inherit; }\n\n/* ── Colors — intent (bold contrast default) ─────────────────────────────── */\n\n.icon--color-brand { color: var(--color-foreground-bold-brand); }\n.icon--color-negative { color: var(--color-foreground-bold-negative); }\n.icon--color-positive { color: var(--color-foreground-bold-positive); }\n.icon--color-warning { color: var(--color-foreground-bold-warning); }\n.icon--color-caution { color: var(--color-foreground-bold-caution); }\n.icon--color-ai { color: var(--color-foreground-bold-ai); }\n.icon--color-guide { color: var(--color-foreground-bold-guide); }\n.icon--color-neutral { color: var(--color-foreground-bold-neutral); }\n\n/* ── Colors — intent faint ───────────────────────────────────────────────── */\n\n.icon--color-faint-brand { color: var(--color-foreground-faint-brand); }\n.icon--color-faint-negative { color: var(--color-foreground-faint-negative); }\n.icon--color-faint-positive { color: var(--color-foreground-faint-positive); }\n.icon--color-faint-warning { color: var(--color-foreground-faint-warning); }\n.icon--color-faint-caution { color: var(--color-foreground-faint-caution); }\n.icon--color-faint-ai { color: var(--color-foreground-faint-ai); }\n.icon--color-faint-neutral { color: var(--color-foreground-faint-neutral); }\n\n/* ── Colors — intent medium ─────────────────────────────────────────────── */\n\n.icon--color-medium-brand { color: var(--color-foreground-medium-brand); }\n.icon--color-medium-negative { color: var(--color-foreground-medium-negative); }\n.icon--color-medium-positive { color: var(--color-foreground-medium-positive); }\n.icon--color-medium-warning { color: var(--color-foreground-medium-warning); }\n.icon--color-medium-caution { color: var(--color-foreground-medium-caution); }\n.icon--color-medium-ai { color: var(--color-foreground-medium-ai); }\n.icon--color-medium-neutral { color: var(--color-foreground-medium-neutral); }\n\n/* ── Colors — intent bold (explicit) ────────────────────────────────────── */\n\n.icon--color-bold-brand { color: var(--color-foreground-bold-brand); }\n.icon--color-bold-negative { color: var(--color-foreground-bold-negative); }\n.icon--color-bold-positive { color: var(--color-foreground-bold-positive); }\n.icon--color-bold-warning { color: var(--color-foreground-bold-warning); }\n.icon--color-bold-caution { color: var(--color-foreground-bold-caution); }\n.icon--color-bold-ai { color: var(--color-foreground-bold-ai); }\n.icon--color-bold-neutral { color: var(--color-foreground-bold-neutral); }\n\n/* ── Colors — intent strong ──────────────────────────────────────────────── */\n\n.icon--color-strong-brand { color: var(--color-foreground-strong-brand); }\n.icon--color-strong-negative { color: var(--color-foreground-strong-negative); }\n.icon--color-strong-positive { color: var(--color-foreground-strong-positive); }\n.icon--color-strong-warning { color: var(--color-foreground-strong-warning); }\n.icon--color-strong-caution { color: var(--color-foreground-strong-caution); }\n.icon--color-strong-ai { color: var(--color-foreground-strong-ai); }\n.icon--color-strong-neutral { color: var(--color-foreground-strong-neutral); }\n\n/* ── Colors — contextual ────────────────────────────────────────────────── */\n\n.icon--color-on-strong { color: var(--color-foreground-on-strong-background-primary); }\n.icon--color-on-bold { color: var(--color-foreground-on-bold-background-primary); }\n","import { Component, Prop, Element, State, Watch, h, Host } from '@stencil/core';\nimport { flagIconLoaders } from './flag-icon-catalog';\nimport { systemIconLoaders } from './system-icon-catalog';\nimport { iconCache, iconCacheKey } from './icon-cache';\nimport { parseIconSvg } from './icon-svg';\n\nexport type IconSize = 'xs' | 'sm' | 'md' | 'lg' | 'xl' | '2xl' | '3xl';\n\nexport type IconColorToken =\n // Hierarchy\n | 'primary' | 'secondary' | 'tertiary' | 'quaternary'\n // Intent — bold contrast (default)\n | 'brand' | 'negative' | 'positive' | 'warning' | 'caution' | 'ai' | 'guide' | 'neutral'\n // Intent — faint\n | 'faint-brand' | 'faint-negative' | 'faint-positive' | 'faint-warning'\n | 'faint-caution' | 'faint-ai' | 'faint-neutral'\n // Intent — medium\n | 'medium-brand' | 'medium-negative' | 'medium-positive' | 'medium-warning'\n | 'medium-caution' | 'medium-ai' | 'medium-neutral'\n // Intent — bold (explicit)\n | 'bold-brand' | 'bold-negative' | 'bold-positive' | 'bold-warning'\n | 'bold-caution' | 'bold-ai' | 'bold-neutral'\n // Intent — strong\n | 'strong-brand' | 'strong-negative' | 'strong-positive' | 'strong-warning'\n | 'strong-caution' | 'strong-ai' | 'strong-neutral'\n // Contextual\n | 'on-strong' | 'on-bold'\n // Pass-through\n | 'inherit';\n\nexport type IconColor = IconColorToken | `var(--${string})`;\n\n@Component({\n tag: 'ds-icon',\n styleUrl: 'Icon.css',\n scoped: true,\n})\nexport class Icon {\n @Element() el!: HTMLElement;\n\n /** Exact canonical IcoMo export name, including the `Flag` prefix for flags. */\n @Prop() name: string = '';\n /** Iconography size token. Maps to `--dimension-iconography-{size}`. Default `md` = 20 px. */\n @Prop() size: IconSize = 'md';\n /**\n * Semantic foreground color token, or a raw CSS var reference. `tertiary`\n * and the still-fainter `quaternary` are restricted to icons inside genuinely\n * inactive/disabled UI or to purely decorative icons; informative icons must\n * retain sufficient contrast.\n */\n @Prop() color: IconColor = 'inherit';\n /** Accessible label. Sets `role=\"img\"` and `aria-label`. Omit for decorative icons. */\n @Prop() label: string | undefined;\n\n /** Resolved SVG markup — set synchronously on cache hit, async after a lazy load. */\n @State() private svg: string = '';\n\n /** Guards against out-of-order async resolutions when `name`/`flag` change quickly. */\n private loadToken = 0;\n\n /**\n * Cache hit → render synchronously (pre-registered via `registerIcons` or\n * previously loaded). Miss → fire the per-icon lazy loader; the glyph pops in\n * when the (tiny, per-icon) chunk resolves and stays cached for every other\n * ds-icon instance.\n */\n private resolveSvg() {\n const flag = this.name.startsWith('Flag');\n const key = iconCacheKey(this.name, flag);\n const token = ++this.loadToken;\n\n const cached = iconCache().get(key);\n if (cached !== undefined) {\n this.svg = cached;\n return;\n }\n\n // Own-key lookup only: names resolve by exact canonical IcoMo export key —\n // never meta.json aliases (not in the maps) and never inherited prototype\n // keys ('constructor', 'toString', …) that a bare index access would hit.\n const loaders = flag ? flagIconLoaders : systemIconLoaders;\n const loader = Object.prototype.hasOwnProperty.call(loaders, this.name)\n ? loaders[this.name]\n : undefined;\n if (!loader) {\n this.svg = '';\n return;\n }\n\n loader()\n .then(svg => {\n iconCache().set(key, svg);\n if (token === this.loadToken) this.svg = svg;\n })\n .catch(() => {\n if (token === this.loadToken) this.svg = '';\n });\n }\n\n componentWillLoad() {\n // Fire-and-forget: do not return the promise — a cache miss must not block\n // the parent render tree on a network fetch.\n this.resolveSvg();\n }\n\n /** Last markup injected into the DOM — skips redundant re-parse on unrelated re-renders. */\n private renderedSvg: string | null = null;\n\n private updateSvg() {\n const container = this.el.querySelector<HTMLElement>('.icon__svg');\n if (!container) return;\n if (this.svg === this.renderedSvg) return;\n this.renderedSvg = this.svg;\n\n // Validate + inject as parsed DOM nodes — never innerHTML. Keeps ds-icon\n // Trusted-Types compatible and rejects executable/foreign content in\n // glyph strings (registerIcons accepts app-provided markup).\n const svg = this.svg ? parseIconSvg(this.svg) : null;\n if (!svg) {\n container.replaceChildren();\n return;\n }\n\n // Stencil's scoped CSS cannot reach injected elements (no sc-* class).\n // Apply width/height as inline styles so sizing works regardless of scope class.\n svg.removeAttribute('width');\n svg.removeAttribute('height');\n // Prevent SVG from being natively focusable (Firefox/IE default) while\n // sitting inside an aria-hidden parent — fixes aria-hidden-focus violation.\n svg.setAttribute('focusable', 'false');\n svg.setAttribute('aria-hidden', 'true');\n svg.style.display = 'block';\n svg.style.flexShrink = '0';\n svg.style.width = '100%';\n svg.style.height = '100%';\n container.replaceChildren(svg);\n }\n\n @Watch('name')\n onIconChange() {\n this.resolveSvg();\n }\n\n componentDidRender() {\n this.updateSvg();\n }\n\n render() {\n const isCustomColor = typeof this.color === 'string' && this.color.startsWith('var(--');\n\n const cls: Record<string, boolean> = {\n icon: true,\n [`icon--size-${this.size}`]: true,\n [`icon--color-${this.color}`]: !!this.color && !isCustomColor && this.color !== 'inherit',\n 'icon--color-inherit': this.color === 'inherit',\n };\n\n const style = isCustomColor ? { color: this.color as string } : undefined;\n\n return (\n <Host style={{ display: 'inline-flex', alignItems: 'center', justifyContent: 'center' }}>\n <span\n class={cls}\n style={style}\n role={this.label ? 'img' : 'presentation'}\n aria-label={this.label}\n aria-hidden={!this.label ? 'true' : undefined}\n >\n <span class=\"icon__svg\" />\n </span>\n </Host>\n );\n }\n}\n"],"mappings":"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","ignoreList":[]}
@@ -1,2 +0,0 @@
1
- import{p as e,H as s,c as o,h as a,a as n,t}from"./index.js";import{d as i}from"./p-DrDHC7V6.js";import{d}from"./p-DTqCBjUj.js";import{d as l}from"./p-DuNZGFkV.js";import{d as r}from"./p-Cpr3K41-.js";import{d as c}from"./p-CZZYGqKz.js";const h=()=>`.ds-control--md.sc-ds-panel-tool-header-h,.ds-control--md.sc-ds-panel-tool-header,.ds-control--sm.sc-ds-panel-tool-header-h,.ds-control--sm.sc-ds-panel-tool-header,.ds-control--xs.sc-ds-panel-tool-header-h,.ds-control--xs.sc-ds-panel-tool-header{--ds-control-radius:var(--dimension-radius-025)}.ds-control--md.sc-ds-panel-tool-header-h,.ds-control--md.sc-ds-panel-tool-header{--ds-control-height:var(--dimension-size-400);--ds-control-icon:var(--dimension-iconography-md);--ds-control-padding-inline:var(--dimension-space-075);--ds-control-label-inset:var(--dimension-space-025);--ds-control-gap:var(--dimension-space-050)}.ds-control--sm.sc-ds-panel-tool-header-h,.ds-control--sm.sc-ds-panel-tool-header{--ds-control-height:var(--dimension-size-300);--ds-control-icon:var(--dimension-iconography-sm);--ds-control-padding-inline:var(--dimension-space-050);--ds-control-label-inset:var(--dimension-space-025);--ds-control-gap:var(--dimension-space-025)}.ds-control--xs.sc-ds-panel-tool-header-h,.ds-control--xs.sc-ds-panel-tool-header{--ds-control-height:var(--dimension-size-200);--ds-control-icon:var(--dimension-iconography-xs);--ds-control-padding-inline:var(--dimension-space-025);--ds-control-label-inset:var(--dimension-space-025);--ds-control-gap:0}.sc-ds-panel-tool-header-h{display:block;flex:0 0 auto;box-sizing:border-box}.panel-tool-header.sc-ds-panel-tool-header{display:flex;align-items:center;gap:var(--dimension-space-050);height:var(--dimension-size-600);padding:var(--dimension-space-100);box-sizing:border-box;border-bottom:var(--dimension-stroke-width-012) solid var(--color-border-tertiary);color:var(--color-foreground-primary);-webkit-user-select:none;user-select:none}.panel-tool-header__leading.sc-ds-panel-tool-header,.panel-tool-header__trailing.sc-ds-panel-tool-header{display:flex;align-items:center;min-width:0}.panel-tool-header__leading.sc-ds-panel-tool-header:empty,.panel-tool-header__trailing.sc-ds-panel-tool-header:empty{display:none}.panel-tool-header__leading.sc-ds-panel-tool-header{flex:0 0 auto}.panel-tool-header__trailing.sc-ds-panel-tool-header{flex:0 0 auto;gap:var(--dimension-space-050);justify-content:flex-end}ds-text.panel-tool-header__heading.sc-ds-panel-tool-header{display:inline-flex;flex:1 1 0;align-items:center;width:auto;min-width:0;height:var(--ds-control-height);padding-inline:calc(var(--ds-control-padding-inline) + var(--ds-control-label-inset));box-sizing:border-box;text-align:left;-webkit-user-select:none;user-select:none}`;const p=e(class e extends s{constructor(e){super();if(e!==false){this.__registerHost()}this.dsBack=o(this,"dsBack");this.dsMenuToggle=o(this,"dsMenuToggle");this.dsAction=o(this,"dsAction");this.heading="";this.showBack=false;this.backIcon="ChevronLeft";this.backAriaLabel="Back";this.showMenu=true;this.menuAriaLabel="More options";this.menuTriggerId="";this.menuExpanded=false;this.actions=[]}async focusMenuTrigger(){const e=this.el.querySelector('ds-button-unfilled.panel-tool-header__menu, ds-button-unfilled[data-header-action-id="menu"]');await(e?.setFocus?.())}render(){const e=this.actions.length>0;const s=e?this.actions:this.showMenu?[{id:"menu",icon:"Ellipses",ariaLabel:this.menuAriaLabel,triggerId:this.menuTriggerId,controls:this.menuControls,expanded:this.menuExpanded,haspopup:"menu"}]:[];return a(n,{key:"730614824e04298a90aa91aa93a20e75d8e97024"},a("header",{key:"dab3457d5f63b81e7139e66a882b979f90f4f177",class:"panel-tool-header"},a("div",{key:"307fd6762cb63b1f91c65f4fa96e6b5f0238187a",class:"panel-tool-header__leading"},this.showBack?a("ds-button-unfilled",{class:"panel-tool-header__back",variant:"icon",icon:this.backIcon,size:"md","aria-label":this.backAriaLabel,activeFill:false,hasBorder:false,onDsClick:e=>this.dsBack.emit(e.detail)}):null),a("ds-text",{key:"8ec96f2fba2002a8ded74a90f14882f6bed1dfca",class:"panel-tool-header__heading ds-control--md",as:"h2",variant:"text-body-medium",emphasis:true,color:"primary",lineTruncation:1},this.heading),a("div",{key:"f115242167a0019b45a791b9f8ea08118c62b95c",class:"panel-tool-header__trailing"},s.map((s=>a("ds-button-unfilled",{key:s.id,id:s.triggerId||undefined,"data-header-action-id":s.id,class:{"panel-tool-header__action":true,"panel-tool-header__menu":s.id==="menu"},variant:"icon",icon:s.icon,size:"md","aria-label":s.ariaLabel,haspopup:s.haspopup,controls:s.controls,expanded:s.expanded,pressed:s.pressed,isActive:!!s.expanded,isInactive:s.isInactive,activeFill:false,hasBorder:false,onDsClick:o=>{if(!e&&s.id==="menu")this.dsMenuToggle.emit(o.detail);this.dsAction.emit({id:s.id,originalEvent:o.detail})}}))))))}get el(){return this}static get style(){return h()}},[2,"ds-panel-tool-header",{heading:[1],showBack:[4,"show-back"],backIcon:[1,"back-icon"],backAriaLabel:[1,"back-aria-label"],showMenu:[4,"show-menu"],menuAriaLabel:[1,"menu-aria-label"],menuTriggerId:[1,"menu-trigger-id"],menuControls:[1,"menu-controls"],menuExpanded:[4,"menu-expanded"],actions:[16],focusMenuTrigger:[64]}]);function m(){if(typeof customElements==="undefined"){return}const e=["ds-panel-tool-header","ds-badge","ds-button-unfilled","ds-icon","ds-loader","ds-text"];e.forEach((e=>{switch(e){case"ds-panel-tool-header":if(!customElements.get(t(e))){customElements.define(t(e),p)}break;case"ds-badge":if(!customElements.get(t(e))){i()}break;case"ds-button-unfilled":if(!customElements.get(t(e))){d()}break;case"ds-icon":if(!customElements.get(t(e))){l()}break;case"ds-loader":if(!customElements.get(t(e))){r()}break;case"ds-text":if(!customElements.get(t(e))){c()}break}}))}m();export{p as P,m as d};
2
- //# sourceMappingURL=p-ZTugT4as.js.map
@@ -1 +0,0 @@
1
- {"version":3,"names":["panelToolHeaderCss","PanelToolHeader","__stencil_proxyCustomElement","HTMLElement","constructor","registerHost","this","heading","showBack","backIcon","backAriaLabel","showMenu","menuAriaLabel","menuTriggerId","menuExpanded","actions","focusMenuTrigger","trigger","el","querySelector","setFocus","render","authoredActions","length","id","icon","ariaLabel","triggerId","controls","menuControls","expanded","haspopup","h","Host","key","class","variant","size","activeFill","hasBorder","onDsClick","event","dsBack","emit","detail","as","emphasis","color","lineTruncation","map","action","undefined","pressed","isActive","isInactive","dsMenuToggle","dsAction","originalEvent"],"sources":["src/wc/components/PanelToolHeader/PanelToolHeader.css?tag=ds-panel-tool-header&encapsulation=scoped","src/wc/components/PanelToolHeader/PanelToolHeader.tsx"],"sourcesContent":["@import '../../utils/control-density.css';\n\n:host {\n display: block;\n flex: 0 0 auto;\n box-sizing: border-box;\n}\n\n.panel-tool-header {\n display: flex;\n align-items: center;\n gap: var(--dimension-space-050);\n height: var(--dimension-size-600);\n padding: var(--dimension-space-100);\n box-sizing: border-box;\n border-bottom: var(--dimension-stroke-width-012) solid var(--color-border-tertiary);\n color: var(--color-foreground-primary);\n -webkit-user-select: none;\n user-select: none;\n}\n\n.panel-tool-header__leading,\n.panel-tool-header__trailing {\n display: flex;\n align-items: center;\n min-width: 0;\n}\n\n.panel-tool-header__leading:empty,\n.panel-tool-header__trailing:empty {\n display: none;\n}\n\n.panel-tool-header__leading {\n flex: 0 0 auto;\n}\n\n.panel-tool-header__trailing {\n flex: 0 0 auto;\n gap: var(--dimension-space-050);\n justify-content: flex-end;\n}\n\nds-text.panel-tool-header__heading {\n display: inline-flex;\n flex: 1 1 0;\n align-items: center;\n width: auto;\n min-width: 0;\n height: var(--ds-control-height);\n padding-inline: calc(var(--ds-control-padding-inline) + var(--ds-control-label-inset));\n box-sizing: border-box;\n text-align: left;\n -webkit-user-select: none;\n user-select: none;\n}\n","import { Component, Element, Event, EventEmitter, h, Host, Method, Prop } from '@stencil/core';\nimport type { PanelToolsHeaderAction } from '../PanelTools/panel-tools-types';\n\n@Component({\n tag: 'ds-panel-tool-header',\n styleUrl: 'PanelToolHeader.css',\n scoped: true,\n})\nexport class PanelToolHeader {\n @Element() el!: HTMLElement;\n\n /** Visible heading for the active tool view. */\n @Prop() heading: string = '';\n /** Show the leading Back action. */\n @Prop() showBack: boolean = false;\n /** Canonical icon for the leading navigation or dismiss action. */\n @Prop() backIcon: string = 'ChevronLeft';\n /** Accessible name for the leading navigation or dismiss action. */\n @Prop() backAriaLabel: string = 'Back';\n /** Show the trailing options-menu trigger. */\n @Prop() showMenu: boolean = true;\n /** Accessible name for the options-menu trigger. */\n @Prop() menuAriaLabel: string = 'More options';\n /** Stable id placed on the menu trigger host for ds-menu anchoring. */\n @Prop() menuTriggerId: string = '';\n /** Id of the menu controlled by the trigger. */\n @Prop() menuControls: string | undefined;\n /** Whether the controlled menu is open. */\n @Prop() menuExpanded: boolean = false;\n /** Trailing application-owned icon actions. When present, these replace the legacy menu action. */\n @Prop() actions: PanelToolsHeaderAction[] = [];\n\n @Event() dsBack!: EventEmitter<MouseEvent>;\n @Event() dsMenuToggle!: EventEmitter<MouseEvent>;\n @Event() dsAction!: EventEmitter<{ id: string; originalEvent: MouseEvent }>;\n\n @Method()\n async focusMenuTrigger() {\n const trigger = this.el.querySelector(\n 'ds-button-unfilled.panel-tool-header__menu, ds-button-unfilled[data-header-action-id=\"menu\"]'\n ) as (HTMLElement & { setFocus?: () => Promise<void> }) | null;\n await trigger?.setFocus?.();\n }\n\n render() {\n const authoredActions = this.actions.length > 0;\n const actions: PanelToolsHeaderAction[] = authoredActions\n ? this.actions\n : this.showMenu\n ? [\n {\n id: 'menu',\n icon: 'Ellipses',\n ariaLabel: this.menuAriaLabel,\n triggerId: this.menuTriggerId,\n controls: this.menuControls,\n expanded: this.menuExpanded,\n haspopup: 'menu',\n },\n ]\n : [];\n\n return (\n <Host>\n <header class=\"panel-tool-header\">\n <div class=\"panel-tool-header__leading\">\n {this.showBack ? (\n <ds-button-unfilled\n class=\"panel-tool-header__back\"\n variant=\"icon\"\n icon={this.backIcon}\n size=\"md\"\n aria-label={this.backAriaLabel}\n activeFill={false}\n hasBorder={false}\n onDsClick={(event: CustomEvent<MouseEvent>) => this.dsBack.emit(event.detail)}\n />\n ) : null}\n </div>\n <ds-text\n class=\"panel-tool-header__heading ds-control--md\"\n as=\"h2\"\n variant=\"text-body-medium\"\n emphasis\n color=\"primary\"\n lineTruncation={1}\n >\n {this.heading}\n </ds-text>\n <div class=\"panel-tool-header__trailing\">\n {actions.map(action => (\n <ds-button-unfilled\n key={action.id}\n id={action.triggerId || undefined}\n data-header-action-id={action.id}\n class={{\n 'panel-tool-header__action': true,\n 'panel-tool-header__menu': action.id === 'menu',\n }}\n variant=\"icon\"\n icon={action.icon}\n size=\"md\"\n aria-label={action.ariaLabel}\n haspopup={action.haspopup}\n controls={action.controls}\n expanded={action.expanded}\n pressed={action.pressed}\n isActive={!!action.expanded}\n isInactive={action.isInactive}\n activeFill={false}\n hasBorder={false}\n onDsClick={(event: CustomEvent<MouseEvent>) => {\n if (!authoredActions && action.id === 'menu')\n this.dsMenuToggle.emit(event.detail);\n this.dsAction.emit({ id: action.id, originalEvent: event.detail });\n }}\n />\n ))}\n </div>\n </header>\n </Host>\n );\n }\n}\n"],"mappings":"4OAAA,MAAMA,EAAqB,IAAM,67E,MCQpBC,EAAeC,EAAA,MAAAD,UAAAE,EAL5B,WAAAC,CAAAC,G,mJASUC,KAAAC,QAAkB,GAElBD,KAAAE,SAAoB,MAEpBF,KAAAG,SAAmB,cAEnBH,KAAAI,cAAwB,OAExBJ,KAAAK,SAAoB,KAEpBL,KAAAM,cAAwB,eAExBN,KAAAO,cAAwB,GAIxBP,KAAAQ,aAAwB,MAExBR,KAAAS,QAAoC,EA6F7C,CAtFC,sBAAMC,GACJ,MAAMC,EAAUX,KAAKY,GAAGC,cACtB,sGAEIF,GAASG,a,CAGjB,MAAAC,GACE,MAAMC,EAAkBhB,KAAKS,QAAQQ,OAAS,EAC9C,MAAMR,EAAoCO,EACtChB,KAAKS,QACLT,KAAKK,SACL,CACE,CACEa,GAAI,OACJC,KAAM,WACNC,UAAWpB,KAAKM,cAChBe,UAAWrB,KAAKO,cAChBe,SAAUtB,KAAKuB,aACfC,SAAUxB,KAAKQ,aACfiB,SAAU,SAGd,GAEJ,OACEC,EAACC,EAAI,CAAAC,IAAA,4CACHF,EAAA,UAAAE,IAAA,2CAAQC,MAAM,qBACZH,EAAA,OAAAE,IAAA,2CAAKC,MAAM,8BACR7B,KAAKE,SACJwB,EAAA,sBACEG,MAAM,0BACNC,QAAQ,OACRX,KAAMnB,KAAKG,SACX4B,KAAK,KAAI,aACG/B,KAAKI,cACjB4B,WAAY,MACZC,UAAW,MACXC,UAAYC,GAAmCnC,KAAKoC,OAAOC,KAAKF,EAAMG,UAEtE,MAENZ,EAAA,WAAAE,IAAA,2CACEC,MAAM,4CACNU,GAAG,KACHT,QAAQ,mBACRU,SAAQ,KACRC,MAAM,UACNC,eAAgB,GAEf1C,KAAKC,SAERyB,EAAA,OAAAE,IAAA,2CAAKC,MAAM,+BACRpB,EAAQkC,KAAIC,GACXlB,EAAA,sBACEE,IAAKgB,EAAO1B,GACZA,GAAI0B,EAAOvB,WAAawB,UAAS,wBACVD,EAAO1B,GAC9BW,MAAO,CACL,4BAA6B,KAC7B,0BAA2Be,EAAO1B,KAAO,QAE3CY,QAAQ,OACRX,KAAMyB,EAAOzB,KACbY,KAAK,KAAI,aACGa,EAAOxB,UACnBK,SAAUmB,EAAOnB,SACjBH,SAAUsB,EAAOtB,SACjBE,SAAUoB,EAAOpB,SACjBsB,QAASF,EAAOE,QAChBC,WAAYH,EAAOpB,SACnBwB,WAAYJ,EAAOI,WACnBhB,WAAY,MACZC,UAAW,MACXC,UAAYC,IACV,IAAKnB,GAAmB4B,EAAO1B,KAAO,OACpClB,KAAKiD,aAAaZ,KAAKF,EAAMG,QAC/BtC,KAAKkD,SAASb,KAAK,CAAEnB,GAAI0B,EAAO1B,GAAIiC,cAAehB,EAAMG,QAAS,Q","ignoreList":[]}
@@ -1,210 +0,0 @@
1
- {
2
- "$schema": "https://ui.shadcn.com/schema/registry-item.json",
3
- "name": "app-shell",
4
- "title": "AppShell",
5
- "description": "The single required workspace root for standard authenticated application pages, coordinating primary and secondary navigation, tools chrome, responsive composition, content geometry, shared styling, and shell behavior.",
6
- "type": "registry:ui",
7
- "meta": {
8
- "library": "@ds-mo/ui",
9
- "distribution": "npm",
10
- "storybook": "https://zainadeel.github.io/compomo/?path=/story/app-shell",
11
- "source": "src/wc/components/AppShell/AppShell.tsx",
12
- "intentStatus": "complete",
13
- "intent": {
14
- "audience": "specialized",
15
- "status": "stable",
16
- "summary": "The single required workspace root for standard authenticated application pages, coordinating primary and secondary navigation, tools chrome, responsive composition, content geometry, shared styling, and shell behavior.",
17
- "useWhen": [
18
- "Building any standard authenticated product or workspace page with CompoMo.",
19
- "PanelNav, BarNav, PanelTools, page content, shared chrome, responsive behavior, and shell shortcuts must be composed as one application frame.",
20
- "Future application templates need the supported base-page composition boundary."
21
- ],
22
- "avoidWhen": [
23
- "Building authentication, onboarding, public, marketing, print, error, or intentionally focused full-screen experiences that require a different layout.",
24
- "Another AppShell already exists in the page; applications must render exactly one and must never nest AppShells.",
25
- "Building content inside an existing AppShell; render the page content rather than another shell."
26
- ],
27
- "commonlyComposedWith": [
28
- "component:ds-panel-nav",
29
- "component:ds-bar-nav",
30
- "component:ds-panel-tools",
31
- "component:ds-swatch-picker"
32
- ],
33
- "patterns": [
34
- "pattern:application-shell"
35
- ],
36
- "accessibility": [
37
- "Keep primary destinations in PanelNav and secondary route sections in BarNav.",
38
- "Ensure the default content region contains the page's single main landmark.",
39
- "Keep PanelNav, BarNav, and PanelTools chrome available in the shell's supported desktop and tablet compositions.",
40
- "Do not override browser keyboard chords when enabling shell shortcuts.",
41
- "Require Search and Help as the minimum PanelTools actions and provide accessible labels for every tool.",
42
- "Preserve focus and accessible names across navigation, collapse, overflow, and responsive presentation changes."
43
- ],
44
- "states": [
45
- "Render exactly one AppShell as the workspace root and never nest it.",
46
- "PanelNav, BarNav, and PanelTools are required shell regions; PanelTools contains at least Search and Help even when no additional product tools apply.",
47
- "The application router owns the current route, authorization filtering, Dashboard or Settings context, destination collections, section collections, and localized content labels.",
48
- "AppShell propagates navStyle and coordinates layout, gradient alignment, transitions, metrics, shortcuts, and responsive composition.",
49
- "Set gradientPreset to the single resolved global chrome preference: neutral by default, none for solid chrome, or cool, neutral, warm, and fresh for token-based washes.",
50
- "The application owns gradient preference persistence, cross-tab synchronization, and server or account precedence; AppShell owns rendering the resolved preset across authenticated routes.",
51
- "Dashboard represents day-to-day operational work while Settings represents administrative and configuration work; route state selects the context.",
52
- "Update PanelNav groups, BarNav tabs and heading, navStyle, basePath, and currentUrl atomically from one resolved route state.",
53
- "BarNav remains present: it shows route-section tabs when available and the active PanelNav destination label as heading otherwise.",
54
- "The application filters unauthorized destinations, sections, and tools before passing them into shell components."
55
- ],
56
- "responsiveBehavior": [
57
- "AppShell owns the fixed system breakpoints and resolves desktop at 1200px and wider, tablet from 768px through 1199px, and mobile below 768px.",
58
- "On desktop, PanelNav defaults expanded, permits user collapse or expansion, and respects the locally persisted desktop preference.",
59
- "On tablet, AppShell keeps PanelNav permanently collapsed and prevents user expansion without overwriting the desktop preference.",
60
- "On mobile, AppShell remains the page root but replaces PanelNav and desktop navigation composition with a future dedicated mobile navigation design.",
61
- "Keep PanelNav width, BarNav height, PanelTools chrome, and main-content origin stable except during intentional responsive or collapse transitions.",
62
- "The current runtime does not yet implement the complete desktop, tablet, and mobile composition contract; consuming applications must enforce missing breakpoint behavior until AppShell provides it."
63
- ],
64
- "frameworkCaveats": {
65
- "customElements": [
66
- "Assign complex navigation and tool collections as JavaScript properties on the slotted components.",
67
- "Stamp route-derived nav-style before components connect when deterministic first paint is required."
68
- ],
69
- "react": [
70
- "Use generated wrappers and preserve native slot names for PanelNav, BarNav, PanelTools, and main content.",
71
- "Resolve all shell inputs from one router state before rendering the composition."
72
- ],
73
- "angular": [
74
- "Use generated standalone adapters and preserve slot attributes in templates.",
75
- "Bind complex inputs as properties and update navigation inputs atomically from one resolved router state.",
76
- "Bind both nav-style attributes and properties when deterministic first paint is required."
77
- ]
78
- },
79
- "references": [
80
- {
81
- "label": "Component guide",
82
- "path": "src/wc/components/AppShell/AppShell.mdx"
83
- },
84
- {
85
- "label": "Executable Storybook composition",
86
- "path": "src/wc/components/AppShell/AppShell.stories.ts"
87
- },
88
- {
89
- "label": "Framework integration",
90
- "path": "docs/framework-integration.md"
91
- },
92
- {
93
- "label": "Application shell contract",
94
- "path": "agent/patterns/application-shell/pattern.agent.json"
95
- }
96
- ]
97
- },
98
- "api": {
99
- "props": {
100
- "gradientPreset": {
101
- "type": "ShellGradientPreset",
102
- "resolvedType": "\"cool\" | \"fresh\" | \"neutral\" | \"none\" | \"warm\"",
103
- "attribute": "gradient-preset",
104
- "default": "'neutral'",
105
- "required": false,
106
- "mutable": false,
107
- "description": "Shell chrome wash preset. `none` renders solid chrome; the remaining\npresets use token-based washes that adapt to the active color theme."
108
- },
109
- "navStyle": {
110
- "type": "NavChromeStyle",
111
- "resolvedType": "\"dashboard\" | \"settings\"",
112
- "attribute": "nav-style",
113
- "default": "'dashboard'",
114
- "required": false,
115
- "mutable": false,
116
- "description": "Chrome style propagated to slotted `ds-panel-nav` and `ds-bar-nav`."
117
- },
118
- "shortcutsEnabled": {
119
- "type": "boolean",
120
- "resolvedType": "boolean",
121
- "attribute": "shortcuts-enabled",
122
- "default": "true",
123
- "required": false,
124
- "mutable": false,
125
- "description": "When `true` (default), registers global shell keyboard shortcuts. `[` toggles panel nav; `]` closes tools; K/A/S/M/N/? toggle tool drawers. Modifiers are ignored so browser chords like ⌘N stay native."
126
- }
127
- },
128
- "events": [],
129
- "methods": [],
130
- "slots": []
131
- },
132
- "props": {
133
- "gradientPreset": {
134
- "type": "ShellGradientPreset",
135
- "resolvedType": "\"cool\" | \"fresh\" | \"neutral\" | \"none\" | \"warm\"",
136
- "attribute": "gradient-preset",
137
- "default": "'neutral'",
138
- "required": false,
139
- "mutable": false,
140
- "description": "Shell chrome wash preset. `none` renders solid chrome; the remaining\npresets use token-based washes that adapt to the active color theme."
141
- },
142
- "navStyle": {
143
- "type": "NavChromeStyle",
144
- "resolvedType": "\"dashboard\" | \"settings\"",
145
- "attribute": "nav-style",
146
- "default": "'dashboard'",
147
- "required": false,
148
- "mutable": false,
149
- "description": "Chrome style propagated to slotted `ds-panel-nav` and `ds-bar-nav`."
150
- },
151
- "shortcutsEnabled": {
152
- "type": "boolean",
153
- "resolvedType": "boolean",
154
- "attribute": "shortcuts-enabled",
155
- "default": "true",
156
- "required": false,
157
- "mutable": false,
158
- "description": "When `true` (default), registers global shell keyboard shortcuts. `[` toggles panel nav; `]` closes tools; K/A/S/M/N/? toggle tool drawers. Modifiers are ignored so browser chords like ⌘N stay native."
159
- }
160
- },
161
- "events": [],
162
- "methods": [],
163
- "slots": [],
164
- "exports": {
165
- "customElement": "ds-app-shell",
166
- "react": "DsAppShell",
167
- "angular": "DsAppShell"
168
- },
169
- "consumption": {
170
- "install": "npm install @ds-mo/ui @ds-mo/tokens @ds-mo/icons",
171
- "cssSetup": "import '@ds-mo/tokens';\nimport '@ds-mo/tokens/reset';\nimport '@ds-mo/tokens/globals';",
172
- "customElements": {
173
- "import": "import '@ds-mo/ui/dist/components/ds-app-shell.js';",
174
- "example": "<ds-app-shell></ds-app-shell>"
175
- },
176
- "react": {
177
- "import": "import { DsAppShell } from '@ds-mo/ui/react';",
178
- "example": "<DsAppShell />"
179
- },
180
- "angular": {
181
- "import": "import { DsAppShell } from '@ds-mo/ui/angular/ds-app-shell';",
182
- "example": "<ds-app-shell></ds-app-shell>"
183
- },
184
- "peerDependencies": {
185
- "required": [
186
- "@ds-mo/tokens ^3.1.1",
187
- "@ds-mo/icons ^6.3.0"
188
- ],
189
- "frameworks": "Custom Elements; React 18/19 wrappers; Angular 19-22 standalone adapters."
190
- }
191
- }
192
- },
193
- "dependencies": [
194
- "@ds-mo/ui",
195
- "@ds-mo/tokens"
196
- ],
197
- "registryDependencies": [],
198
- "files": [
199
- {
200
- "path": "src/wc/components/AppShell/AppShell.css",
201
- "content": ":host {\n display: block;\n height: 100%;\n min-height: 0;\n box-sizing: border-box;\n overflow: hidden;\n overscroll-behavior: none;\n --ds-shell-panel-tools-width: var(--dimension-panel-width-xs);\n}\n\n.app-shell {\n display: flex;\n flex-direction: column;\n height: 100%;\n min-height: 0;\n box-sizing: border-box;\n overflow: hidden;\n overscroll-behavior: none;\n font-family: var(--typography-font-family, system-ui);\n}\n\n:host {\n --_shell-chrome-bg: var(--color-background-secondary);\n}\n\n.app-shell__row {\n display: flex;\n flex: 1 1 auto;\n min-height: 0;\n height: 100%;\n position: relative;\n}\n\n/*\n * One chrome layer behind the shell row. Wash uses background-attachment: fixed\n * so the pattern is locked to the viewport — panel/tools collapse only changes the\n * transparent window, not the pattern phase. JS sets wash background-size from\n * readShellViewportDimensions(), not the shell element box.\n */\n.app-shell__chrome {\n position: absolute;\n inset: 0;\n pointer-events: none;\n z-index: 0;\n background-color: var(--_shell-chrome-bg);\n}\n\n:host(.app-shell--gradient) .app-shell__chrome::before {\n content: '';\n position: absolute;\n inset: 0;\n pointer-events: none;\n background-position: 0 0;\n background-attachment: fixed;\n z-index: 1;\n opacity: var(--ds-shell-gradient-opacity, 1);\n background-image: var(--ds-shell-gradient-image, none);\n background-size: var(--ds-shell-gradient-size, auto);\n background-repeat: no-repeat;\n}\n\n.app-shell__panel {\n flex: 0 0 auto;\n min-height: 0;\n height: 100%;\n position: relative;\n /* Above main so resize handle line can paint over the workspace edge */\n z-index: 2;\n}\n\n.app-shell__panel ::slotted(ds-panel-nav) {\n display: block;\n height: 100%;\n}\n\n.app-shell__main {\n flex: 1 1 auto;\n min-width: 0;\n min-height: 0;\n display: grid;\n grid-template-columns: minmax(0, 1fr) auto;\n grid-template-rows: auto minmax(0, 1fr);\n grid-template-areas:\n 'bar tools'\n 'content tools';\n position: relative;\n z-index: 1;\n}\n\n.app-shell__bar {\n grid-area: bar;\n flex: 0 0 auto;\n min-width: 0;\n}\n\n.app-shell__bar ::slotted(ds-bar-nav) {\n display: block;\n}\n\n.app-shell__content {\n grid-area: content;\n flex: 1 1 auto;\n min-width: 0;\n min-height: 0;\n overflow: auto;\n overscroll-behavior: none;\n /* Limit reflow to the page column — not on __main (breaks tools flex shrink). */\n contain: layout;\n}\n\n/* Opaque page surface — masks the fixed chrome layer in the content column. */\n.app-shell__content {\n position: relative;\n z-index: 1;\n background-color: var(--color-background-primary);\n}\n\n.app-shell__tools {\n grid-area: tools;\n flex: 0 0 auto;\n min-width: 0;\n min-height: 0;\n height: 100%;\n display: flex;\n position: relative;\n z-index: 0;\n overflow: hidden;\n}\n\n.app-shell__tools ::slotted(ds-panel-tools) {\n display: block;\n height: 100%;\n min-height: 0;\n}\n\n:host(.app-shell--tools-fullscreen) .app-shell__panel,\n:host(.app-shell--tools-fullscreen) .app-shell__bar,\n:host(.app-shell--tools-fullscreen) .app-shell__content {\n visibility: hidden;\n}\n",
202
- "type": "registry:ui"
203
- },
204
- {
205
- "path": "src/wc/components/AppShell/AppShell.tsx",
206
- "content": "import { Component, Prop, Element, State, Watch, Listen, h, Host } from '@stencil/core';\nimport type { NavChromeStyle } from '../../shell/nav-chrome';\nimport {\n isEditableShortcutTarget,\n resolveShellShortcut,\n} from '../../shell/shell-shortcuts';\nimport type { PanelToolsToolId } from '../PanelTools/panel-tools-types';\nimport {\n DEFAULT_SHELL_GRADIENT_PRESET,\n normalizeShellGradientPreset,\n type ShellGradientPreset,\n} from '../../shell/shell-gradient-presets';\nimport {\n CHROME_TRANSITION_END,\n CHROME_TRANSITION_START,\n ChromeTransitionDepth,\n createRafCoalescer,\n readChromeTransitionSource,\n} from '../../shell/chrome-transition';\nimport {\n isPanelNavCollapsed,\n panelWidthPxFromTokens,\n readPanelNavWidthTokens,\n type PanelNavWidthTokens,\n} from '../../shell/shell-chrome-metrics';\nimport {\n SHELL_GRADIENT_IMAGE_VAR,\n SHELL_GRADIENT_OPACITY_VAR,\n SHELL_GRADIENT_POSITION_BAR_VAR,\n SHELL_GRADIENT_POSITION_PANEL_VAR,\n SHELL_GRADIENT_SIZE_VAR,\n buildShellRadialGradient,\n readShellViewportDimensions,\n shellGradientPositionBar,\n shellGradientPositionPanel,\n shellGradientPresetOpacity,\n shellGradientSize,\n} from '../../shell/shell-gradient';\n\n@Component({\n tag: 'ds-app-shell',\n styleUrl: 'AppShell.css',\n scoped: true,\n})\nexport class AppShell {\n /** Chrome style propagated to slotted `ds-panel-nav` and `ds-bar-nav`. */\n @Prop({ attribute: 'nav-style', reflect: true }) navStyle: NavChromeStyle = 'dashboard';\n\n /**\n * Shell chrome wash preset. `none` renders solid chrome; the remaining\n * presets use token-based washes that adapt to the active color theme.\n */\n @Prop({ attribute: 'gradient-preset', reflect: true }) gradientPreset: ShellGradientPreset =\n DEFAULT_SHELL_GRADIENT_PRESET;\n\n /** When `true` (default), registers global shell keyboard shortcuts. `[` toggles panel nav; `]` closes tools; K/A/S/M/N/? toggle tool drawers. Modifiers are ignored so browser chords like ⌘N stay native. */\n @Prop({ attribute: 'shortcuts-enabled' }) shortcutsEnabled: boolean = true;\n\n @Element() el!: HTMLElement;\n @State() private toolsFullscreen = false;\n\n private resizeObserver: ResizeObserver | null = null;\n private readonly panelNavTransition = new ChromeTransitionDepth();\n private readonly chromeSyncCoalescer = createRafCoalescer(() => this.syncChrome());\n private panelWidthTokens: PanelNavWidthTokens = { expandedPx: 0, collapsedPx: 0 };\n private cachedViewportWidth = 0;\n private cachedViewportHeight = 0;\n private onWindowResize = () => {\n if (this.panelNavTransition.isActive) return;\n this.scheduleChromeSync();\n };\n private onVisualViewportChange = () => {\n if (this.panelNavTransition.isActive) return;\n this.scheduleChromeSync();\n };\n\n componentDidLoad() {\n this.syncSlottedNavStyle();\n this.connectMetricsObserver();\n this.connectViewportListeners();\n this.el.addEventListener(CHROME_TRANSITION_START, this.onChromeTransitionStart);\n this.el.addEventListener(CHROME_TRANSITION_END, this.onChromeTransitionEnd);\n requestAnimationFrame(() => {\n this.cachePanelWidthTokens();\n this.scheduleChromeSync();\n });\n const tools = this.el.querySelector('ds-panel-tools');\n this.toolsFullscreen = tools?.getAttribute('presentation') === 'fullscreen';\n }\n\n @Listen('dsPresentationChange')\n handleToolsPresentation(event: CustomEvent<{ presentation?: string }>) {\n this.toolsFullscreen = event.detail?.presentation === 'fullscreen';\n }\n\n disconnectedCallback() {\n this.resizeObserver?.disconnect();\n this.resizeObserver = null;\n this.disconnectViewportListeners();\n this.chromeSyncCoalescer.cancel();\n this.el.removeEventListener(CHROME_TRANSITION_START, this.onChromeTransitionStart);\n this.el.removeEventListener(CHROME_TRANSITION_END, this.onChromeTransitionEnd);\n }\n\n @Watch('navStyle')\n @Watch('gradientPreset')\n onShellPropsChange() {\n this.syncSlottedNavStyle();\n this.scheduleChromeSync();\n }\n\n private onChromeTransitionStart = (event: Event) => {\n if (readChromeTransitionSource(event) !== 'panel-nav') return;\n\n this.panelNavTransition.enter();\n const viewport = readShellViewportDimensions();\n this.cachedViewportWidth = viewport.width;\n this.cachedViewportHeight = viewport.height;\n this.syncChrome();\n };\n\n private onChromeTransitionEnd = (event: Event) => {\n if (readChromeTransitionSource(event) !== 'panel-nav') return;\n\n this.panelNavTransition.exit();\n if (!this.panelNavTransition.isActive) {\n this.scheduleChromeSync();\n }\n };\n\n /** Coalesce ResizeObserver bursts to one layout read per frame. */\n private scheduleChromeSync() {\n this.chromeSyncCoalescer.schedule();\n }\n\n private syncSlottedNavStyle() {\n const panel = this.el.querySelector('ds-panel-nav') as (HTMLElement & { navStyle: NavChromeStyle }) | null;\n const bar = this.el.querySelector('ds-bar-nav') as (HTMLElement & { navStyle: NavChromeStyle }) | null;\n if (panel) {\n panel.setAttribute('nav-style', this.navStyle);\n panel.navStyle = this.navStyle;\n }\n if (bar) {\n bar.setAttribute('nav-style', this.navStyle);\n bar.navStyle = this.navStyle;\n }\n }\n\n private connectMetricsObserver() {\n this.resizeObserver = new ResizeObserver(() => {\n if (this.panelNavTransition.isActive) return;\n this.scheduleChromeSync();\n });\n this.resizeObserver.observe(this.el);\n const panelWrap = this.el.querySelector('.app-shell__panel');\n if (panelWrap) this.resizeObserver.observe(panelWrap);\n }\n\n private connectViewportListeners() {\n if (typeof window === 'undefined') return;\n\n window.addEventListener('resize', this.onWindowResize, { passive: true });\n\n const visual = window.visualViewport;\n if (visual) {\n visual.addEventListener('resize', this.onVisualViewportChange, { passive: true });\n visual.addEventListener('scroll', this.onVisualViewportChange, { passive: true });\n }\n }\n\n private disconnectViewportListeners() {\n if (typeof window === 'undefined') return;\n\n window.removeEventListener('resize', this.onWindowResize);\n\n const visual = window.visualViewport;\n if (visual) {\n visual.removeEventListener('resize', this.onVisualViewportChange);\n visual.removeEventListener('scroll', this.onVisualViewportChange);\n }\n }\n\n private cachePanelWidthTokens() {\n const navRoot = this.el.querySelector('ds-panel-nav .panel-nav') as HTMLElement | null;\n if (!navRoot) return;\n this.panelWidthTokens = readPanelNavWidthTokens(navRoot);\n }\n\n private applyGradientVars(target: HTMLElement, vars: Record<string, string | null>) {\n const style = target.style;\n for (const [name, value] of Object.entries(vars)) {\n if (value === null) style.removeProperty(name);\n else style.setProperty(name, value);\n }\n }\n\n private clearGradientPaintVars(targets: HTMLElement[]) {\n const keys = [\n SHELL_GRADIENT_IMAGE_VAR,\n SHELL_GRADIENT_SIZE_VAR,\n SHELL_GRADIENT_OPACITY_VAR,\n ];\n for (const target of targets) {\n for (const key of keys) target.style.removeProperty(key);\n }\n }\n\n /** Panel/bar wash offsets for scroll fades and badge rings. */\n private syncChromeLayoutVars(\n panel: HTMLElement | null,\n bar: HTMLElement | null,\n panelPosition: string,\n barPosition: string,\n ) {\n if (panel) {\n panel.style.setProperty(SHELL_GRADIENT_POSITION_PANEL_VAR, panelPosition);\n }\n if (bar) {\n bar.style.setProperty(SHELL_GRADIENT_POSITION_BAR_VAR, barPosition);\n }\n }\n\n private resolvePanelWidthPx(panelNav: HTMLElement | null): number {\n const navRoot = panelNav?.querySelector('.panel-nav') as HTMLElement | null;\n\n if (this.panelNavTransition.isActive && this.panelWidthTokens.expandedPx > 0) {\n const collapsed = isPanelNavCollapsed(panelNav, navRoot);\n return panelWidthPxFromTokens(this.panelWidthTokens, collapsed);\n }\n\n const panelWrap = this.el.querySelector('.app-shell__panel') as HTMLElement | null;\n const measured = panelWrap?.getBoundingClientRect().width ?? 0;\n if (measured > 0) return measured;\n\n if (this.panelWidthTokens.expandedPx > 0) {\n const collapsed = isPanelNavCollapsed(panelNav, navRoot);\n return panelWidthPxFromTokens(this.panelWidthTokens, collapsed);\n }\n\n return 0;\n }\n\n /** Fixed-attachment wash/grid size — always the viewport, never the shell element box. */\n private resolveViewportDimensions(): { width: number; height: number } {\n if (this.panelNavTransition.isActive && this.cachedViewportWidth > 0) {\n return {\n width: this.cachedViewportWidth,\n height: this.cachedViewportHeight,\n };\n }\n\n return readShellViewportDimensions();\n }\n\n private chromeLayerActive(): boolean {\n return normalizeShellGradientPreset(this.gradientPreset) !== 'none';\n }\n\n @Listen('keydown', { target: 'window', capture: true })\n handleWindowKeyDown(e: KeyboardEvent) {\n if (!this.shortcutsEnabled) return;\n if (isEditableShortcutTarget(e.target)) return;\n\n const action = resolveShellShortcut(e);\n if (!action) return;\n\n e.preventDefault();\n\n const panel = this.el.querySelector('ds-panel-nav') as HTMLDsPanelNavElement | null;\n const tools = this.el.querySelector('ds-panel-tools') as HTMLDsPanelToolsElement | null;\n\n if (action === 'toggle-panel-nav') {\n void panel?.toggleCollapsed();\n return;\n }\n\n if (action === 'close-panel-tools') {\n void tools?.closeDrawer();\n return;\n }\n\n if (action.startsWith('open-tool:') && tools) {\n const toolId = action.slice('open-tool:'.length) as PanelToolsToolId;\n void tools.activateTool(toolId);\n }\n }\n\n private syncChrome() {\n const panelNav = this.el.querySelector('ds-panel-nav') as HTMLElement | null;\n const bar = this.el.querySelector('ds-bar-nav') as HTMLElement | null;\n const targets = [this.el, panelNav, bar].filter((el): el is HTMLElement => el !== null);\n\n const clearLayoutVars = () => {\n if (panelNav) panelNav.style.removeProperty(SHELL_GRADIENT_POSITION_PANEL_VAR);\n if (bar) bar.style.removeProperty(SHELL_GRADIENT_POSITION_BAR_VAR);\n };\n\n const preset = normalizeShellGradientPreset(this.gradientPreset);\n if (preset === 'none') {\n this.clearGradientPaintVars(targets);\n clearLayoutVars();\n return;\n }\n\n const viewport = this.resolveViewportDimensions();\n const panelWidth = this.resolvePanelWidthPx(panelNav);\n\n const panelPosition = shellGradientPositionPanel();\n const barPosition = shellGradientPositionBar(panelWidth);\n\n this.syncChromeLayoutVars(panelNav, bar, panelPosition, barPosition);\n\n const image = buildShellRadialGradient(preset);\n\n const size = shellGradientSize({\n width: viewport.width,\n height: viewport.height,\n });\n const opacity = shellGradientPresetOpacity(preset);\n\n for (const target of targets) {\n if (target === this.el) {\n this.applyGradientVars(target, {\n [SHELL_GRADIENT_IMAGE_VAR]: image,\n [SHELL_GRADIENT_SIZE_VAR]: size,\n [SHELL_GRADIENT_POSITION_PANEL_VAR]: panelPosition,\n [SHELL_GRADIENT_POSITION_BAR_VAR]: barPosition,\n [SHELL_GRADIENT_OPACITY_VAR]: opacity,\n });\n continue;\n }\n\n const isBar = target.tagName.toLowerCase() === 'ds-bar-nav';\n this.applyGradientVars(target, {\n [SHELL_GRADIENT_IMAGE_VAR]: image,\n [SHELL_GRADIENT_SIZE_VAR]: size,\n [SHELL_GRADIENT_OPACITY_VAR]: opacity,\n [SHELL_GRADIENT_POSITION_PANEL_VAR]: isBar ? null : panelPosition,\n [SHELL_GRADIENT_POSITION_BAR_VAR]: isBar ? barPosition : null,\n });\n }\n }\n\n render() {\n const chromeActive = this.chromeLayerActive();\n const shellCls: Record<string, boolean> = {\n 'app-shell': true,\n 'app-shell--gradient': chromeActive,\n [`app-shell--${this.navStyle}`]: true,\n 'app-shell--tools-fullscreen': this.toolsFullscreen,\n };\n\n return (\n <Host class={shellCls}>\n <div class=\"app-shell__row\">\n <div class=\"app-shell__chrome\" aria-hidden=\"true\" />\n <div class=\"app-shell__panel\" aria-hidden={this.toolsFullscreen ? 'true' : undefined} inert={this.toolsFullscreen ? true : undefined}>\n <slot name=\"panel\" />\n </div>\n <div class=\"app-shell__main\">\n <div class=\"app-shell__bar\" aria-hidden={this.toolsFullscreen ? 'true' : undefined} inert={this.toolsFullscreen ? true : undefined}>\n <slot name=\"bar\" />\n </div>\n <div class=\"app-shell__tools\">\n <slot name=\"tools\" />\n </div>\n <div class=\"app-shell__content\" aria-hidden={this.toolsFullscreen ? 'true' : undefined} inert={this.toolsFullscreen ? true : undefined}>\n <slot />\n </div>\n </div>\n </div>\n </Host>\n );\n }\n}\n",
207
- "type": "registry:ui"
208
- }
209
- ]
210
- }
@@ -1,12 +0,0 @@
1
- 'use client';
2
- import { createComponent } from '@stencil/react-output-target/runtime';
3
- import React from 'react';
4
- import { DsAppShell as DsAppShellElement, defineCustomElement as defineDsAppShell } from "@ds-mo/ui/dist/components/ds-app-shell.js";
5
- export const DsAppShell = /*@__PURE__*/ createComponent({
6
- tagName: 'ds-app-shell',
7
- elementClass: DsAppShellElement,
8
- // @ts-ignore - ignore potential React type mismatches between the Stencil Output Target and your project.
9
- react: React,
10
- events: {},
11
- defineCustomElement: defineDsAppShell
12
- });