@ds-mo/ui 15.5.1 → 15.7.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 (395) hide show
  1. package/dist/.package-ready.json +1 -1
  2. package/dist/agent-patterns.json +1 -1
  3. package/dist/agent.json +372 -25
  4. package/dist/angular/ds-data-preferences.d.ts +1 -1
  5. package/dist/angular/ds-data-preferences.js +3 -3
  6. package/dist/angular/ds-menu.d.ts +7 -1
  7. package/dist/angular/ds-menu.js +5 -2
  8. package/dist/angular/ds-navigation-tab-group.d.ts +15 -0
  9. package/dist/angular/ds-navigation-tab-group.js +42 -0
  10. package/dist/angular/ds-select-toggle.d.ts +15 -0
  11. package/dist/angular/ds-select-toggle.js +42 -0
  12. package/dist/angular/ds-table.d.ts +1 -1
  13. package/dist/angular/ds-table.js +3 -3
  14. package/dist/angular/index.d.ts +1 -1
  15. package/dist/angular/index.js +2 -0
  16. package/dist/angular/proxies.d.ts +2 -0
  17. package/dist/angular/proxies.js +2 -0
  18. package/dist/components/THIRD-PARTY-NOTICES +1 -1
  19. package/dist/components/bundled-dependencies.json +1 -1
  20. package/dist/components/ds-agent-activity.js +1 -1
  21. package/dist/components/ds-agent-questionnaire.js +1 -1
  22. package/dist/components/ds-agent-response.js +1 -1
  23. package/dist/components/ds-agent-source-list.js +1 -1
  24. package/dist/components/ds-agent-tool-call.js +1 -1
  25. package/dist/components/ds-attachment-list.js +1 -1
  26. package/dist/components/ds-badge.js +1 -1
  27. package/dist/components/ds-banner.js +1 -1
  28. package/dist/components/ds-bar-action.js +1 -1
  29. package/dist/components/ds-bar-nav.js +1 -1
  30. package/dist/components/ds-bar-page-title.js +1 -1
  31. package/dist/components/ds-bar-title.js +1 -1
  32. package/dist/components/ds-bar-workflow.js +1 -1
  33. package/dist/components/ds-breadcrumb.js +1 -1
  34. package/dist/components/ds-button-filled.js +1 -1
  35. package/dist/components/ds-button-inverted.js +1 -1
  36. package/dist/components/ds-button-unfilled.js +1 -1
  37. package/dist/components/ds-calendar.js +1 -1
  38. package/dist/components/ds-card-action-center.js +1 -1
  39. package/dist/components/ds-card-chart.js +1 -1
  40. package/dist/components/ds-card-navigation.js +1 -1
  41. package/dist/components/ds-card-overview.js +1 -1
  42. package/dist/components/ds-card-setting.js +1 -1
  43. package/dist/components/ds-card-settings-scope.js +1 -1
  44. package/dist/components/ds-chart-legend.js +1 -1
  45. package/dist/components/ds-chart.js +1 -1
  46. package/dist/components/ds-checkbox-group.js +1 -1
  47. package/dist/components/ds-checkbox.js +1 -1
  48. package/dist/components/ds-chip.js +1 -1
  49. package/dist/components/ds-code-block.js +1 -1
  50. package/dist/components/ds-conversation-list-item.js +1 -1
  51. package/dist/components/ds-conversation-list-section.js +1 -1
  52. package/dist/components/ds-conversation-list.js +1 -1
  53. package/dist/components/ds-data-customize.js +1 -1
  54. package/dist/components/ds-data-filter.js +1 -1
  55. package/dist/components/ds-data-group.js +1 -1
  56. package/dist/components/ds-data-preferences.js +1 -1
  57. package/dist/components/ds-data-preferences.js.map +1 -1
  58. package/dist/components/ds-data-saved-views.js +1 -1
  59. package/dist/components/ds-data-search.js +1 -1
  60. package/dist/components/ds-data-search.js.map +1 -1
  61. package/dist/components/ds-data-sort.js +1 -1
  62. package/dist/components/ds-data-toolbar.js +1 -1
  63. package/dist/components/ds-empty-state.js +1 -1
  64. package/dist/components/ds-field.js +1 -1
  65. package/dist/components/ds-filter-menu.js +1 -1
  66. package/dist/components/ds-inline-banner-settings.js +1 -1
  67. package/dist/components/ds-input-date.js +1 -1
  68. package/dist/components/ds-input-time.js +1 -1
  69. package/dist/components/ds-input.js +1 -1
  70. package/dist/components/ds-map-cluster-marker.js +1 -1
  71. package/dist/components/ds-map-entity-marker.js +1 -1
  72. package/dist/components/ds-markdown.js +1 -1
  73. package/dist/components/ds-menu.js +1 -1
  74. package/dist/components/ds-message-actions.js +1 -1
  75. package/dist/components/ds-message-composer.js +1 -1
  76. package/dist/components/ds-message-scroller.js +1 -1
  77. package/dist/components/ds-message.js +1 -1
  78. package/dist/components/ds-mobile-bar-nav.js +1 -1
  79. package/dist/components/ds-mobile-header.js +1 -1
  80. package/dist/components/ds-mobile-section-switcher.js +1 -1
  81. package/dist/components/ds-mobile-sheet-nav.js +1 -1
  82. package/dist/components/ds-modal.js +1 -1
  83. package/dist/components/ds-navigation-tab-group.d.ts +11 -0
  84. package/dist/components/ds-navigation-tab-group.js +2 -0
  85. package/dist/components/ds-navigation-tab-group.js.map +1 -0
  86. package/dist/components/ds-pagination.js +1 -1
  87. package/dist/components/ds-panel-nav.js +1 -1
  88. package/dist/components/ds-panel-sub-nav.js +1 -1
  89. package/dist/components/ds-panel-tool-header.js +1 -1
  90. package/dist/components/ds-panel-tool-search.js +1 -1
  91. package/dist/components/ds-panel-tools.js +1 -1
  92. package/dist/components/ds-paper-texture.js +1 -1
  93. package/dist/components/ds-radio-tile.js +1 -1
  94. package/dist/components/ds-radio.js +1 -1
  95. package/dist/components/ds-score.js +1 -1
  96. package/dist/components/ds-select-toggle.d.ts +11 -0
  97. package/dist/components/ds-select-toggle.js +2 -0
  98. package/dist/components/ds-select-toggle.js.map +1 -0
  99. package/dist/components/ds-select.js +1 -1
  100. package/dist/components/ds-setting-row-checkbox.js +1 -1
  101. package/dist/components/ds-setting-row-radio.js +1 -1
  102. package/dist/components/ds-setting-row-radio.js.map +1 -1
  103. package/dist/components/ds-setting-row-toggle.js +1 -1
  104. package/dist/components/ds-shell-app.js +1 -1
  105. package/dist/components/ds-shell-page.js +1 -1
  106. package/dist/components/ds-shell-tools.js +1 -1
  107. package/dist/components/ds-skeleton.js +1 -1
  108. package/dist/components/ds-slider.js +1 -1
  109. package/dist/components/ds-slider.js.map +1 -1
  110. package/dist/components/ds-swatch-picker.js +1 -1
  111. package/dist/components/ds-switch.js +1 -1
  112. package/dist/components/ds-tab-group.js +1 -1
  113. package/dist/components/ds-table.js +1 -1
  114. package/dist/components/ds-table.js.map +1 -1
  115. package/dist/components/ds-tag.js +1 -1
  116. package/dist/components/ds-text.js +1 -1
  117. package/dist/components/ds-textarea.js +1 -1
  118. package/dist/components/ds-time-picker.js +1 -1
  119. package/dist/components/ds-toast.js +1 -1
  120. package/dist/components/ds-toast.js.map +1 -1
  121. package/dist/components/ds-tooltip-chart.js +1 -1
  122. package/dist/components/ds-tooltip.js +1 -1
  123. package/dist/components/ds-typing-indicator.js +1 -1
  124. package/dist/components/{p--pJyciTI.js → p--_bPiNCd.js} +2 -2
  125. package/dist/components/{p-UJMEz8_O.js → p-3SCy1PHa.js} +2 -2
  126. package/dist/components/{p-7MwoWtTJ.js → p-4sBUSsqs.js} +2 -2
  127. package/dist/components/p-4sBUSsqs.js.map +1 -0
  128. package/dist/components/{p-kwS-vkau.js → p-5aZVNYQz.js} +2 -2
  129. package/dist/components/{p-DKGW3gRa.js → p-AGqUGzNZ.js} +2 -2
  130. package/dist/components/p-BJf49edB.js +2 -0
  131. package/dist/components/p-BJf49edB.js.map +1 -0
  132. package/dist/components/{p-BNarCFJZ.js → p-BKyE025p.js} +2 -2
  133. package/dist/components/{p-S1Ct3FJV.js → p-BNN9KkXe.js} +2 -2
  134. package/dist/components/p-BPDo1eQV.js +2 -0
  135. package/dist/components/p-BPDo1eQV.js.map +1 -0
  136. package/dist/components/{p-CwdRaJER.js → p-BWJb2rih.js} +2 -2
  137. package/dist/components/{p-D8OWhnID.js → p-BbvAWFJA.js} +2 -2
  138. package/dist/components/p-Bdp2V6-c.js +2 -0
  139. package/dist/components/{p-Da3aFRk2.js.map → p-Bdp2V6-c.js.map} +1 -1
  140. package/dist/components/p-BjBFJ2dd.js +2 -0
  141. package/dist/components/{p-C5BBIDVm.js.map → p-BjBFJ2dd.js.map} +1 -1
  142. package/dist/components/{p-BmIllmq2.js → p-BwNW5nqj.js} +2 -2
  143. package/dist/components/{p-CzdE3M3g.js → p-C0L-VnSr.js} +2 -2
  144. package/dist/components/p-C2e7BkNn.js +2 -0
  145. package/dist/components/p-C2e7BkNn.js.map +1 -0
  146. package/dist/components/{p-BnuNaXR2.js → p-C4t7HnfZ.js} +2 -2
  147. package/dist/components/{p-C1ZfBbJ_.js → p-C7_awFtr.js} +2 -2
  148. package/dist/components/p-CCsxoztj.js +2 -0
  149. package/dist/components/{p-BuGlC5r8.js.map → p-CCsxoztj.js.map} +1 -1
  150. package/dist/components/{p-C378wwRj.js → p-CHyxUWqL.js} +2 -2
  151. package/dist/components/{p-d76Ry5nh.js → p-CKSJwSWd.js} +2 -2
  152. package/dist/components/p-CLqqb0Jp.js +2 -0
  153. package/dist/components/{p-CcwxySms.js.map → p-CLqqb0Jp.js.map} +1 -1
  154. package/dist/components/{p-C9H-3JOA.js → p-CRhoeCC8.js} +2 -2
  155. package/dist/components/p-CWc6Blcp.js +2 -0
  156. package/dist/components/{p-B95UP66y.js.map → p-CWc6Blcp.js.map} +1 -1
  157. package/dist/components/p-CXB_T13u.js +2 -0
  158. package/dist/components/{p-CNeDJTGX.js.map → p-CXB_T13u.js.map} +1 -1
  159. package/dist/components/{p-DZLtFn-r.js → p-CgC4SM5b.js} +2 -2
  160. package/dist/components/p-CqAC2IQO.js +2 -0
  161. package/dist/components/{p-5-gQbIIz.js.map → p-CqAC2IQO.js.map} +1 -1
  162. package/dist/components/{p--VQc5GDy.js → p-Cs8Gq-PZ.js} +2 -2
  163. package/dist/components/p-Ct2KQHF4.js +2 -0
  164. package/dist/components/{p-Df9S0aWi.js.map → p-Ct2KQHF4.js.map} +1 -1
  165. package/dist/components/{p-DYsRXun3.js → p-CvIHBa8S.js} +2 -2
  166. package/dist/components/{p-YC7UM4jH.js → p-D1tmszmN.js} +2 -2
  167. package/dist/components/{p-BlbfbYg6.js → p-D62yUMhr.js} +2 -2
  168. package/dist/components/{p-CgQB8Ct5.js → p-D9l0QBgN.js} +2 -2
  169. package/dist/components/{p-Dr5rkAhe.js → p-DGrSro-o.js} +2 -2
  170. package/dist/components/{p-BVxK8ce0.js → p-DKvHBXwn.js} +2 -2
  171. package/dist/components/p-D_xZ5SFL.js +2 -0
  172. package/dist/components/{p-bQE1NZVe.js.map → p-D_xZ5SFL.js.map} +1 -1
  173. package/dist/components/p-DdNJPBCS.js +2 -0
  174. package/dist/components/{p-a-cIN_BX.js.map → p-DdNJPBCS.js.map} +1 -1
  175. package/dist/components/p-DiPqdcD4.js +2 -0
  176. package/dist/components/{p-DPwptvZl.js.map → p-DiPqdcD4.js.map} +1 -1
  177. package/dist/components/p-Dkh_40bl.js +2 -0
  178. package/dist/components/p-Dkh_40bl.js.map +1 -0
  179. package/dist/components/p-DlCLfwP4.js +2 -0
  180. package/dist/components/p-DmgDVoDb.js +2 -0
  181. package/dist/components/{p-CXlklL-0.js.map → p-DmgDVoDb.js.map} +1 -1
  182. package/dist/components/{p-DXL5D30P.js → p-Du8LT8JS.js} +2 -2
  183. package/dist/components/p-DuCfCvPs.js +2 -0
  184. package/dist/components/p-DuCfCvPs.js.map +1 -0
  185. package/dist/components/{p-BuDxlhnQ.js → p-Dyjs8_Cl.js} +2 -2
  186. package/dist/components/{p-BYrBU_U9.js → p-HMDczkQf.js} +2 -2
  187. package/dist/components/p-LJXiEPw1.js +2 -0
  188. package/dist/components/{p-D9_iDlkT.js.map → p-LJXiEPw1.js.map} +1 -1
  189. package/dist/components/{p-CbCN9ew9.js → p-QGtBlTMt.js} +2 -2
  190. package/dist/components/{p-C35Tki38.js → p-UBQ5O7B-.js} +2 -2
  191. package/dist/components/{p-DVsGfz7J.js → p-dSNHIJz6.js} +2 -2
  192. package/dist/components/{p-B9y6azEw.js → p-eKnJNQtL.js} +2 -2
  193. package/dist/components/{p-sDm8BEMy.js → p-g2OUK8Z0.js} +2 -2
  194. package/dist/components/{p-DSmDyI2o.js → p-n_OBbh94.js} +2 -2
  195. package/dist/components/{p-BfVMaZZE.js → p-oBpjD9OA.js} +2 -2
  196. package/dist/components/p-pJ6gbwSa.js +2 -0
  197. package/dist/components/p-pJ6gbwSa.js.map +1 -0
  198. package/dist/components/{p-DfMTDFcE.js → p-v9Nhw5yM.js} +2 -2
  199. package/dist/docs/components.json +1067 -213
  200. package/dist/lint/index.js +1 -1
  201. package/dist/mcp-data/registry/agent-activity.json +1 -1
  202. package/dist/mcp-data/registry/agent-questionnaire.json +1 -1
  203. package/dist/mcp-data/registry/agent-response.json +1 -1
  204. package/dist/mcp-data/registry/agent-source-list.json +1 -1
  205. package/dist/mcp-data/registry/agent-tool-call.json +1 -1
  206. package/dist/mcp-data/registry/attachment-list.json +1 -1
  207. package/dist/mcp-data/registry/avatar.json +1 -1
  208. package/dist/mcp-data/registry/badge.json +1 -1
  209. package/dist/mcp-data/registry/banner.json +1 -1
  210. package/dist/mcp-data/registry/bar-action.json +1 -1
  211. package/dist/mcp-data/registry/bar-nav.json +1 -1
  212. package/dist/mcp-data/registry/bar-page-title.json +1 -1
  213. package/dist/mcp-data/registry/bar-title.json +1 -1
  214. package/dist/mcp-data/registry/bar-workflow.json +1 -1
  215. package/dist/mcp-data/registry/breadcrumb.json +1 -1
  216. package/dist/mcp-data/registry/button-filled.json +1 -1
  217. package/dist/mcp-data/registry/button-inverted.json +1 -1
  218. package/dist/mcp-data/registry/button-unfilled.json +1 -1
  219. package/dist/mcp-data/registry/calendar.json +1 -1
  220. package/dist/mcp-data/registry/card-action-center.json +1 -1
  221. package/dist/mcp-data/registry/card-chart.json +1 -1
  222. package/dist/mcp-data/registry/card-navigation.json +1 -1
  223. package/dist/mcp-data/registry/card-overview.json +1 -1
  224. package/dist/mcp-data/registry/card-setting.json +1 -1
  225. package/dist/mcp-data/registry/card-settings-scope.json +1 -1
  226. package/dist/mcp-data/registry/chart-legend.json +1 -1
  227. package/dist/mcp-data/registry/chart.json +1 -1
  228. package/dist/mcp-data/registry/checkbox-group.json +1 -1
  229. package/dist/mcp-data/registry/checkbox.json +1 -1
  230. package/dist/mcp-data/registry/chip.json +1 -1
  231. package/dist/mcp-data/registry/code-block.json +1 -1
  232. package/dist/mcp-data/registry/conversation-list-item.json +1 -1
  233. package/dist/mcp-data/registry/conversation-list-section.json +1 -1
  234. package/dist/mcp-data/registry/conversation-list.json +1 -1
  235. package/dist/mcp-data/registry/data-customize.json +1 -1
  236. package/dist/mcp-data/registry/data-filter.json +1 -1
  237. package/dist/mcp-data/registry/data-group.json +1 -1
  238. package/dist/mcp-data/registry/data-preferences.json +22 -6
  239. package/dist/mcp-data/registry/data-saved-views.json +1 -1
  240. package/dist/mcp-data/registry/data-search.json +1 -1
  241. package/dist/mcp-data/registry/data-sort.json +1 -1
  242. package/dist/mcp-data/registry/data-toolbar.json +1 -1
  243. package/dist/mcp-data/registry/divider.json +1 -1
  244. package/dist/mcp-data/registry/empty-state.json +1 -1
  245. package/dist/mcp-data/registry/field.json +1 -1
  246. package/dist/mcp-data/registry/filter-menu.json +1 -1
  247. package/dist/mcp-data/registry/icon.json +1 -1
  248. package/dist/mcp-data/registry/inline-banner-settings.json +1 -1
  249. package/dist/mcp-data/registry/input-date.json +1 -1
  250. package/dist/mcp-data/registry/input-time.json +1 -1
  251. package/dist/mcp-data/registry/input.json +1 -1
  252. package/dist/mcp-data/registry/loader.json +1 -1
  253. package/dist/mcp-data/registry/map-cluster-marker.json +1 -1
  254. package/dist/mcp-data/registry/map-entity-marker.json +1 -1
  255. package/dist/mcp-data/registry/markdown.json +1 -1
  256. package/dist/mcp-data/registry/menu.json +31 -12
  257. package/dist/mcp-data/registry/message-actions.json +1 -1
  258. package/dist/mcp-data/registry/message-bubble.json +1 -1
  259. package/dist/mcp-data/registry/message-composer.json +1 -1
  260. package/dist/mcp-data/registry/message-scroller.json +1 -1
  261. package/dist/mcp-data/registry/message.json +1 -1
  262. package/dist/mcp-data/registry/mobile-bar-nav.json +1 -1
  263. package/dist/mcp-data/registry/mobile-header.json +1 -1
  264. package/dist/mcp-data/registry/mobile-section-switcher.json +1 -1
  265. package/dist/mcp-data/registry/mobile-sheet-nav.json +1 -1
  266. package/dist/mcp-data/registry/modal.json +1 -1
  267. package/dist/mcp-data/registry/navigation-tab-group.json +279 -0
  268. package/dist/mcp-data/registry/pagination.json +1 -1
  269. package/dist/mcp-data/registry/panel-nav.json +1 -1
  270. package/dist/mcp-data/registry/panel-sub-nav.json +1 -1
  271. package/dist/mcp-data/registry/panel-tool-header.json +1 -1
  272. package/dist/mcp-data/registry/panel-tool-search.json +1 -1
  273. package/dist/mcp-data/registry/panel-tools.json +1 -1
  274. package/dist/mcp-data/registry/paper-texture.json +1 -1
  275. package/dist/mcp-data/registry/radio-tile.json +1 -1
  276. package/dist/mcp-data/registry/radio.json +1 -1
  277. package/dist/mcp-data/registry/registry.json +378 -25
  278. package/dist/mcp-data/registry/score.json +1 -1
  279. package/dist/mcp-data/registry/scroll-overlay.json +1 -1
  280. package/dist/mcp-data/registry/select-toggle.json +351 -0
  281. package/dist/mcp-data/registry/select.json +1 -1
  282. package/dist/mcp-data/registry/setting-row-checkbox.json +1 -1
  283. package/dist/mcp-data/registry/setting-row-radio.json +1 -1
  284. package/dist/mcp-data/registry/setting-row-toggle.json +1 -1
  285. package/dist/mcp-data/registry/shell-app.json +1 -1
  286. package/dist/mcp-data/registry/shell-page.json +1 -1
  287. package/dist/mcp-data/registry/shell-tools.json +1 -1
  288. package/dist/mcp-data/registry/skeleton.json +1 -1
  289. package/dist/mcp-data/registry/slider.json +7 -6
  290. package/dist/mcp-data/registry/swatch-picker.json +1 -1
  291. package/dist/mcp-data/registry/switch.json +3 -3
  292. package/dist/mcp-data/registry/tab-group.json +15 -9
  293. package/dist/mcp-data/registry/table.json +80 -21
  294. package/dist/mcp-data/registry/tag.json +1 -1
  295. package/dist/mcp-data/registry/text.json +1 -1
  296. package/dist/mcp-data/registry/textarea.json +1 -1
  297. package/dist/mcp-data/registry/time-picker.json +1 -1
  298. package/dist/mcp-data/registry/toast.json +1 -1
  299. package/dist/mcp-data/registry/tooltip-chart.json +1 -1
  300. package/dist/mcp-data/registry/tooltip.json +1 -1
  301. package/dist/mcp-data/registry/typing-indicator.json +1 -1
  302. package/dist/react/components.d.ts +2 -0
  303. package/dist/react/components.js +2 -0
  304. package/dist/react/ds-menu.d.ts +2 -1
  305. package/dist/react/ds-menu.js +1 -0
  306. package/dist/react/ds-navigation-tab-group.d.ts +12 -0
  307. package/dist/react/ds-navigation-tab-group.js +12 -0
  308. package/dist/react/ds-select-toggle.d.ts +12 -0
  309. package/dist/react/ds-select-toggle.js +12 -0
  310. package/dist/styles/table.css +41 -0
  311. package/dist/types/components/DataPreferences/DataPreferences.d.ts +3 -0
  312. package/dist/types/components/Menu/Menu.d.ts +5 -1
  313. package/dist/types/components/Menu/menu-types.d.ts +36 -0
  314. package/dist/types/components/NavigationTabGroup/NavigationTabGroup.d.ts +16 -0
  315. package/dist/types/components/SelectToggle/SelectToggle.d.ts +46 -0
  316. package/dist/types/components/Slider/Slider.d.ts +1 -1
  317. package/dist/types/components/TabGroup/TabGroup.d.ts +2 -2
  318. package/dist/types/components/Table/Table.d.ts +14 -2
  319. package/dist/types/components/Table/index.d.ts +1 -1
  320. package/dist/types/components/Table/table-column-customizer.d.ts +23 -4
  321. package/dist/types/components/Table/table-layout-controller.d.ts +2 -1
  322. package/dist/types/components/Table/table-types.d.ts +3 -1
  323. package/dist/types/components.d.ts +279 -21
  324. package/dist/vue/components.d.ts +2 -0
  325. package/dist/vue/components.js +2 -0
  326. package/dist/vue/ds-data-preferences.js +1 -0
  327. package/dist/vue/ds-menu.js +2 -0
  328. package/dist/vue/ds-navigation-tab-group.d.ts +3 -0
  329. package/dist/vue/ds-navigation-tab-group.js +16 -0
  330. package/dist/vue/ds-select-toggle.d.ts +3 -0
  331. package/dist/vue/ds-select-toggle.js +19 -0
  332. package/dist/vue/ds-table.js +3 -0
  333. package/package.json +3 -3
  334. package/dist/components/p-5-gQbIIz.js +0 -2
  335. package/dist/components/p-7MwoWtTJ.js.map +0 -1
  336. package/dist/components/p-B95UP66y.js +0 -2
  337. package/dist/components/p-BLeHHoVb.js +0 -2
  338. package/dist/components/p-BLeHHoVb.js.map +0 -1
  339. package/dist/components/p-Bf-BphXP.js +0 -2
  340. package/dist/components/p-Bf-BphXP.js.map +0 -1
  341. package/dist/components/p-BuGlC5r8.js +0 -2
  342. package/dist/components/p-C5BBIDVm.js +0 -2
  343. package/dist/components/p-CE6MaXBg.js +0 -2
  344. package/dist/components/p-CE6MaXBg.js.map +0 -1
  345. package/dist/components/p-CNeDJTGX.js +0 -2
  346. package/dist/components/p-CXlklL-0.js +0 -2
  347. package/dist/components/p-CcwxySms.js +0 -2
  348. package/dist/components/p-D9_iDlkT.js +0 -2
  349. package/dist/components/p-DPwptvZl.js +0 -2
  350. package/dist/components/p-Da3aFRk2.js +0 -2
  351. package/dist/components/p-Df9S0aWi.js +0 -2
  352. package/dist/components/p-DvGrsLgt.js +0 -2
  353. package/dist/components/p-DvGrsLgt.js.map +0 -1
  354. package/dist/components/p-a-cIN_BX.js +0 -2
  355. package/dist/components/p-aD5cw_m2.js +0 -2
  356. package/dist/components/p-aD5cw_m2.js.map +0 -1
  357. package/dist/components/p-bQE1NZVe.js +0 -2
  358. package/dist/components/p-kDZ0sEII.js +0 -2
  359. package/dist/components/p-t2Ebn8si.js +0 -2
  360. package/dist/components/p-t2Ebn8si.js.map +0 -1
  361. /package/dist/components/{p--pJyciTI.js.map → p--_bPiNCd.js.map} +0 -0
  362. /package/dist/components/{p-UJMEz8_O.js.map → p-3SCy1PHa.js.map} +0 -0
  363. /package/dist/components/{p-kwS-vkau.js.map → p-5aZVNYQz.js.map} +0 -0
  364. /package/dist/components/{p-DKGW3gRa.js.map → p-AGqUGzNZ.js.map} +0 -0
  365. /package/dist/components/{p-BNarCFJZ.js.map → p-BKyE025p.js.map} +0 -0
  366. /package/dist/components/{p-S1Ct3FJV.js.map → p-BNN9KkXe.js.map} +0 -0
  367. /package/dist/components/{p-CwdRaJER.js.map → p-BWJb2rih.js.map} +0 -0
  368. /package/dist/components/{p-D8OWhnID.js.map → p-BbvAWFJA.js.map} +0 -0
  369. /package/dist/components/{p-BmIllmq2.js.map → p-BwNW5nqj.js.map} +0 -0
  370. /package/dist/components/{p-CzdE3M3g.js.map → p-C0L-VnSr.js.map} +0 -0
  371. /package/dist/components/{p-BnuNaXR2.js.map → p-C4t7HnfZ.js.map} +0 -0
  372. /package/dist/components/{p-C1ZfBbJ_.js.map → p-C7_awFtr.js.map} +0 -0
  373. /package/dist/components/{p-C378wwRj.js.map → p-CHyxUWqL.js.map} +0 -0
  374. /package/dist/components/{p-d76Ry5nh.js.map → p-CKSJwSWd.js.map} +0 -0
  375. /package/dist/components/{p-C9H-3JOA.js.map → p-CRhoeCC8.js.map} +0 -0
  376. /package/dist/components/{p-DZLtFn-r.js.map → p-CgC4SM5b.js.map} +0 -0
  377. /package/dist/components/{p--VQc5GDy.js.map → p-Cs8Gq-PZ.js.map} +0 -0
  378. /package/dist/components/{p-DYsRXun3.js.map → p-CvIHBa8S.js.map} +0 -0
  379. /package/dist/components/{p-YC7UM4jH.js.map → p-D1tmszmN.js.map} +0 -0
  380. /package/dist/components/{p-BlbfbYg6.js.map → p-D62yUMhr.js.map} +0 -0
  381. /package/dist/components/{p-CgQB8Ct5.js.map → p-D9l0QBgN.js.map} +0 -0
  382. /package/dist/components/{p-Dr5rkAhe.js.map → p-DGrSro-o.js.map} +0 -0
  383. /package/dist/components/{p-BVxK8ce0.js.map → p-DKvHBXwn.js.map} +0 -0
  384. /package/dist/components/{p-kDZ0sEII.js.map → p-DlCLfwP4.js.map} +0 -0
  385. /package/dist/components/{p-DXL5D30P.js.map → p-Du8LT8JS.js.map} +0 -0
  386. /package/dist/components/{p-BuDxlhnQ.js.map → p-Dyjs8_Cl.js.map} +0 -0
  387. /package/dist/components/{p-BYrBU_U9.js.map → p-HMDczkQf.js.map} +0 -0
  388. /package/dist/components/{p-CbCN9ew9.js.map → p-QGtBlTMt.js.map} +0 -0
  389. /package/dist/components/{p-C35Tki38.js.map → p-UBQ5O7B-.js.map} +0 -0
  390. /package/dist/components/{p-DVsGfz7J.js.map → p-dSNHIJz6.js.map} +0 -0
  391. /package/dist/components/{p-B9y6azEw.js.map → p-eKnJNQtL.js.map} +0 -0
  392. /package/dist/components/{p-sDm8BEMy.js.map → p-g2OUK8Z0.js.map} +0 -0
  393. /package/dist/components/{p-DSmDyI2o.js.map → p-n_OBbh94.js.map} +0 -0
  394. /package/dist/components/{p-BfVMaZZE.js.map → p-oBpjD9OA.js.map} +0 -0
  395. /package/dist/components/{p-DfMTDFcE.js.map → p-v9Nhw5yM.js.map} +0 -0
@@ -1 +1 @@
1
- {"version":3,"names":["ChoiceListSection","size","heading","ariaLabel","className","children","h","class","trim","role","as","variant","CONTROL_SUPPORTING_TEXT_VARIANT","color","emphasis","ChoiceSearch","hasFocusBoundary","hasInteractionFill","value","placeholder","controls","activeDescendant","disabled","inputRef","clearLabel","onValueChange","onClear","onKeyDown","ref","element","type","width","icon","isInactive","hasBorder","ariaControls","ariaActiveDescendant","onDsChange","event","stopPropagation","detail","onDsClear","ChoiceFooter","summary","compactSummary","useCompactSummary","contentRef","summaryMeasureRef","clearRef","key","CONTROL_TEXT_VARIANT","onClick","ChoiceActionFooter","label","onAction","ChoiceOptionRow","id","option","selected","active","focusRingVisible","usesSubtext","leading","supporting","action","actionOpen","popupRole","tabIndex","onFocus","onHover","onSelect","grid","undefined","String","onMouseDown","preventDefault","onMouseMove","subtext","inputCss","CONTROL_ADORNMENT","isControlAdornment","matches","Boolean","querySelector","ICON_SIZE","lg","md","sm","xs","CLEAR_BUTTON_SIZE","idCounter","Input","__stencil_proxyCustomElement","HTMLElement","constructor","registerHost","this","generatedId","errorId","readOnly","required","requiredMessage","DEFAULT_REQUIRED_MESSAGE","showPasswordLabel","hidePasswordLabel","lengthBehavior","showCharacterCount","suggestions","tokenized","tokens","removeTokenLabel","showStepper","incrementLabel","decrementLabel","textAlign","inputMode","enterKeyHint","autoFocus","error","constraintMessage","submitted","suggestionsOpen","activeSuggestion","suggestionPosition","x","y","suggestionsReady","initialTokens","suggestionPlacement","AnchoredPositionController","getAnchor","controlEl","getPopup","el","getOwnerDocument","ownerDocument","measure","anchor","popup","gap","resolveCssLengthPx","TOKEN_DEFAULTS","space050","anchorRect","getBoundingClientRect","popupWidth","offsetWidth","popupHeight","offsetHeight","side","align","sideOffsetPx","alignOffsetPx","viewportPadPx","viewportWidth","window","innerWidth","viewportHeight","innerHeight","collisionRect","resolveAnchoredOverlayBoundaryRect","apply","onReady","topLayer","observeResize","liveUpdate","suggestionInteraction","AnchoredOverlayInteractionController","onOutsideActivation","closeSuggestions","initialValue","formDisabled","hasPrefix","hasPrefixControl","hasSuffix","hasSuffixControl","focused","touched","passwordRevealed","restorePasswordFocus","handleInput","e","target","dsChange","emit","openSuggestions","handleFocus","handleBlur","handleClear","isTokenized","dsTokensChange","dsClear","inputEl","focus","handleTogglePassword","handleTextKeyDown","isComposing","filteredSuggestions","length","Math","max","min","requestAnimationFrame","scrollIntoView","block","selectSuggestion","addTokens","removeToken","handlePaste","pasted","clipboardData","getData","test","start","selectionStart","end","selectionEnd","slice","handleNumericStep","direction","input","numericStepDisabled","previous","stepUp","stepDown","preventScroll","managedByField","closest","visibleConstraintMessage","maxLength","hasCounter","lengthLimit","supportsTextFeatures","query","toLocaleLowerCase","Set","filter","includes","componentWillLoad","Array","isArray","syncAdornmentSlots","syncFormValue","disconnectedCallback","componentDidRender","schedule","onTypeChange","prefixNodes","querySelectorAll","suffixNodes","some","inactive","setRepeatedFormControlValue","internals","name","setFormControlValue","validity","flags","message","textConstraintValidity","textConstraints","invalidToken","map","find","result","valueMissing","customError","setValidity","minLength","pattern","patternMessage","step","formDisabledCallback","formResetCallback","formStateRestoreCallback","state","restoreStringArrayFormState","restoreStringFormState","setFocus","onSuggestionsChanged","connect","observe","unobserve","disconnect","hidePopover","text","values","split","trimmed","index","_","tokenIndex","dsSuggestionSelect","Number","isFinite","renderNumericStepper","incrementDisabled","decrementDisabled","isInset","onDsClick","orientation","render","inputId","filled","dirty","JSON","stringify","showClear","showPasswordToggle","nativeType","errorMessage","invalid","showError","showCounter","textVariant","iconSize","numeric","showNumericStepper","resolvedAutoComplete","autoComplete","suppressBrowserChrome","describedBy","ariaDescribedby","join","Host","controlWidthClass","onInvalid","onSlotchange","token","insetDepth","removeLabel","onDsRemove","autoCapitalize","autoCorrect","spellcheck","replace","ariaLabelledby","onInput","onPaste","onBlur","rounded","popover","style","position","left","top","visibility","textId"],"sources":["src/wc/utils/choice-list-parts.tsx","src/wc/components/Input/Input.css?tag=ds-input&encapsulation=scoped","src/wc/components/Input/Input.tsx"],"sourcesContent":["import { FunctionalComponent, h, VNode } from '@stencil/core';\nimport type { ChoiceOption } from './choice-list';\nimport {\n CONTROL_SUPPORTING_TEXT_VARIANT,\n CONTROL_TEXT_VARIANT,\n type ControlSize,\n} from './control-text';\n\ninterface ChoiceListSectionProps {\n size?: ControlSize;\n heading?: string;\n ariaLabel: string;\n className?: string;\n}\n\n/** Shared listbox anatomy used when an owning surface composes choice lists directly. */\nexport const ChoiceListSection: FunctionalComponent<ChoiceListSectionProps> = (\n { size = 'md', heading, ariaLabel, className },\n children\n) => (\n <div\n class={`ds-choice-list ds-chrome-column ds-chrome-space--sm ${className ?? ''}`.trim()}\n role=\"listbox\"\n aria-label={ariaLabel}\n >\n {heading ? (\n <ds-text\n class={`ds-choice-section__header ds-control-section-heading ds-control--${size}`}\n as=\"div\"\n variant={CONTROL_SUPPORTING_TEXT_VARIANT[size]}\n color=\"primary\"\n emphasis\n aria-hidden=\"true\"\n >\n {heading}\n </ds-text>\n ) : null}\n {children}\n </div>\n);\n\ninterface ChoiceSearchProps {\n size?: ControlSize;\n hasFocusBoundary?: boolean;\n hasInteractionFill?: boolean;\n value: string;\n placeholder: string;\n ariaLabel?: string;\n controls?: string;\n activeDescendant?: string;\n disabled?: boolean;\n inputRef: (element: HTMLDsInputElement | null) => void;\n clearLabel: string;\n onValueChange: (value: string) => void;\n onClear?: () => void;\n onKeyDown: (event: KeyboardEvent) => void;\n}\n\nexport const ChoiceSearch: FunctionalComponent<ChoiceSearchProps> = ({\n size = 'md',\n hasFocusBoundary = true,\n hasInteractionFill = true,\n value,\n placeholder,\n ariaLabel,\n controls,\n activeDescendant,\n disabled = false,\n inputRef,\n clearLabel,\n onValueChange,\n onClear,\n onKeyDown,\n}) => {\n return (\n <div\n class={{\n 'select-search': true,\n 'select-search--without-focus-boundary': !hasFocusBoundary,\n }}\n >\n <ds-input\n class=\"select-search__control\"\n ref={element => inputRef((element as HTMLDsInputElement) ?? null)}\n type=\"search\"\n size={size}\n width=\"fill\"\n value={value}\n placeholder={placeholder}\n icon=\"MagnifyingGlass\"\n clearLabel={clearLabel}\n isInactive={disabled}\n hasBorder={false}\n hasInteractionFill={hasInteractionFill}\n ariaLabel={ariaLabel ?? placeholder}\n ariaControls={controls}\n ariaActiveDescendant={activeDescendant}\n onKeyDown={onKeyDown}\n onDsChange={(event: CustomEvent<string>) => {\n event.stopPropagation();\n onValueChange(event.detail);\n }}\n onDsClear={(event: CustomEvent<void>) => {\n event.stopPropagation();\n onClear?.();\n }}\n />\n </div>\n );\n};\n\ninterface ChoiceFooterProps {\n size?: ControlSize;\n clearLabel: string;\n summary?: string;\n compactSummary?: string;\n useCompactSummary?: boolean;\n contentRef?: (element: HTMLDivElement | null) => void;\n summaryMeasureRef?: (element: HTMLElement | null) => void;\n clearRef?: (element: HTMLButtonElement | null) => void;\n onClear: (event: MouseEvent) => void;\n}\n\nexport const ChoiceFooter: FunctionalComponent<ChoiceFooterProps> = ({\n size = 'md',\n clearLabel,\n summary,\n compactSummary,\n useCompactSummary = false,\n contentRef,\n summaryMeasureRef,\n clearRef,\n onClear,\n}) => (\n <div class=\"ds-choice-footer\">\n <div\n ref={element => contentRef?.((element as HTMLDivElement) ?? null)}\n class={`ds-choice-footer__content ds-control--${size}`}\n >\n {summary && [\n <ds-text\n key=\"summary\"\n class=\"ds-choice-footer__summary\"\n as=\"span\"\n variant={CONTROL_TEXT_VARIANT[size]}\n color=\"secondary\"\n >\n {useCompactSummary ? (compactSummary ?? summary) : summary}\n </ds-text>,\n <ds-text\n key=\"summary-measure\"\n ref={element => summaryMeasureRef?.((element as HTMLElement) ?? null)}\n class=\"ds-choice-footer__summary-measure\"\n as=\"span\"\n variant={CONTROL_TEXT_VARIANT[size]}\n color=\"secondary\"\n aria-hidden=\"true\"\n >\n {summary}\n </ds-text>,\n ]}\n <button\n ref={element => clearRef?.((element as HTMLButtonElement) ?? null)}\n type=\"button\"\n class=\"ds-choice-footer__clear ds-text-action ds-focus-ring\"\n onClick={onClear}\n >\n <ds-text as=\"span\" variant={CONTROL_TEXT_VARIANT[size]} color=\"inherit\">\n {clearLabel}\n </ds-text>\n </button>\n </div>\n </div>\n);\n\ninterface ChoiceActionFooterProps {\n size?: ControlSize;\n label: string;\n onAction: (event: MouseEvent) => void;\n}\n\nexport const ChoiceActionFooter: FunctionalComponent<ChoiceActionFooterProps> = ({\n size = 'md',\n label,\n onAction,\n}) => (\n <div class=\"ds-choice-footer\">\n <div class={`ds-choice-footer__content ds-control--${size}`}>\n <button\n type=\"button\"\n class=\"ds-choice-footer__action ds-text-action ds-focus-ring\"\n onClick={onAction}\n >\n <ds-text as=\"span\" variant={CONTROL_TEXT_VARIANT[size]} color=\"inherit\">\n {label}\n </ds-text>\n </button>\n </div>\n </div>\n);\n\ninterface ChoiceOptionRowProps {\n size?: ControlSize;\n id: string;\n option: ChoiceOption;\n selected: boolean;\n active: boolean;\n focusRingVisible: boolean;\n usesSubtext: boolean;\n leading?: VNode;\n supporting?: VNode;\n action?: VNode;\n actionOpen?: boolean;\n popupRole?: 'listbox' | 'grid';\n tabIndex?: number;\n onFocus?: () => void;\n onKeyDown?: (event: KeyboardEvent) => void;\n onHover: () => void;\n onSelect: () => void;\n}\n\nexport const ChoiceOptionRow: FunctionalComponent<ChoiceOptionRowProps> = ({\n size = 'md',\n id,\n option,\n selected,\n active,\n focusRingVisible,\n usesSubtext,\n leading,\n supporting,\n action,\n actionOpen = false,\n popupRole = 'listbox',\n tabIndex,\n onFocus,\n onKeyDown,\n onHover,\n onSelect,\n}) => {\n const grid = popupRole === 'grid';\n return (\n <div\n id={grid ? id : undefined}\n role={grid ? 'row' : undefined}\n aria-selected={grid ? String(selected) : undefined}\n aria-disabled={grid && option.isInactive ? 'true' : undefined}\n class={{\n 'select-option-row': true,\n 'select-option-row--has-action': !!action,\n 'select-option-row--action-open': actionOpen,\n 'select-option-row--keyboard-active': !!action && active && focusRingVisible,\n }}\n >\n <div\n id={grid ? undefined : id}\n class={{\n 'select-option': true,\n 'ds-choice-item': true,\n 'ds-control-frame': true,\n [`ds-control--${size}`]: true,\n 'ds-focus-ring-inset': true,\n 'ds-focus-ring--visible': active && focusRingVisible,\n 'ds-interaction-fill': !option.isInactive,\n 'ds-interaction-fill--selected': selected && !option.isInactive,\n 'ds-control-inactive': !!option.isInactive,\n 'select-option--active': active,\n }}\n role={grid ? 'gridcell' : 'option'}\n tabIndex={tabIndex}\n aria-selected={grid ? undefined : String(selected)}\n aria-disabled={!grid && option.isInactive ? 'true' : undefined}\n onMouseDown={event => event.preventDefault()}\n onFocus={onFocus}\n onKeyDown={onKeyDown}\n onMouseMove={() => {\n if (!option.isInactive) onHover();\n }}\n onClick={onSelect}\n >\n {leading}\n <div class=\"ds-choice-item__content ds-interaction-fill__content\">\n <ds-text\n class=\"ds-choice-item__label ds-control-label-box\"\n as=\"span\"\n variant={CONTROL_TEXT_VARIANT[size]}\n color={selected ? 'primary' : 'secondary'}\n >\n {option.label}\n </ds-text>\n {supporting ??\n (usesSubtext ? (\n <ds-text\n class=\"ds-choice-item__subtext ds-control-label-box\"\n as=\"span\"\n variant={CONTROL_SUPPORTING_TEXT_VARIANT[size]}\n color=\"secondary\"\n >\n {option.subtext?.trim() || '—'}\n </ds-text>\n ) : null)}\n </div>\n </div>\n {action && (\n <div\n class=\"select-option-row__action ds-control-elevation ds-control-elevation--md ds-control-elevation--press-scale\"\n role={grid ? 'gridcell' : undefined}\n >\n {action}\n </div>\n )}\n </div>\n );\n};\n","@import '../../utils/radius.css';\n@import '../../utils/choice-list.css';\n@import '../../utils/control-parts.css';\n@import '../../utils/text-field-support.css';\n@import '../../utils/control-width.css';\n@import '../../utils/field-stack.css';\n@import '../../utils/typography.css';\n\n:host(.input-host) {\n display: inline-flex;\n --ds-input-fg: var(--color-foreground-primary);\n --ds-input-placeholder: var(--color-foreground-secondary);\n --ds-input-placeholder-active: var(--color-foreground-quaternary);\n --ds-input-adornment-fg: var(--color-foreground-secondary);\n --ds-input-border: var(--color-border-secondary);\n}\n\n:host(.ds-control-width--fill),\n:host(.ds-control-width--fill) .input-control {\n width: 100%;\n}\n\n.input-control {\n overflow: hidden;\n background: transparent;\n border: none;\n border-radius: var(--ds-control-radius, var(--dimension-radius-025));\n color: var(--ds-input-fg);\n}\n\n.input-control--bordered {\n --ds-interaction-border-width: var(--dimension-stroke-width-012);\n --ds-interaction-border-color: var(--ds-input-border);\n}\n\n.input-control--error {\n --ds-interaction-border-width: var(--dimension-stroke-width-018);\n --ds-interaction-border-color: var(--color-border-bold-negative);\n}\n\n.input-control--bordered:focus-within:not(.input-control--error) {\n --ds-interaction-border-width: var(--dimension-stroke-width-018);\n --ds-interaction-border-color: var(--color-border-bold-brand);\n}\n\n:host(.ds-control-inactive) .input-control::after {\n background: transparent;\n}\n\n.native-input {\n position: relative;\n z-index: 2;\n flex: 1 1 auto;\n min-width: 0;\n height: 100%;\n background: transparent;\n border: none;\n border-radius: inherit;\n outline: none;\n color: var(--ds-input-fg);\n font-family: inherit;\n text-overflow: ellipsis;\n -webkit-appearance: none;\n appearance: none;\n}\n\n.native-input--align-start {\n text-align: start;\n}\n\n.native-input--align-end {\n text-align: end;\n}\n\n/* Native arrows stay hidden whether optional inset actions are shown or not. */\n.native-input[type='number'] {\n -moz-appearance: textfield;\n}\n\n.native-input[type='number']::-webkit-inner-spin-button,\n.native-input[type='number']::-webkit-outer-spin-button {\n margin: 0;\n -webkit-appearance: none;\n}\n\n.input-control--stepper.input-control--align-start {\n padding-inline-end: var(--dimension-space-025);\n}\n\n.input-control--stepper.input-control--align-end {\n padding-inline-start: var(--dimension-space-025);\n}\n\n.input-control__number-stepper {\n position: relative;\n z-index: 2;\n display: inline-flex;\n align-items: center;\n flex-shrink: 0;\n gap: var(--dimension-space-025);\n}\n\n:host(.ds-control-inactive) .input-control__number-step {\n --effect-opacity-medium: 1;\n}\n\n.native-input:disabled {\n cursor: not-allowed;\n}\n\n.native-input:read-only:not(:disabled) {\n cursor: default;\n}\n\n.native-input::placeholder {\n color: var(--ds-input-placeholder);\n}\n\n.native-input:focus::placeholder {\n color: var(--ds-input-placeholder-active);\n}\n\n.native-input[type='search']::-webkit-search-cancel-button,\n.native-input[type='search']::-webkit-search-decoration {\n display: none;\n}\n\n.input-control__prefix,\n.input-control__prefix-text,\n.input-control__suffix {\n position: relative;\n z-index: 2;\n color: var(--ds-input-adornment-fg);\n}\n\n.input-control__prefix-text,\n.input-control__suffix {\n display: inline-flex;\n align-items: center;\n flex-shrink: 0;\n white-space: nowrap;\n}\n\n.input-control__prefix-text--control,\n.input-control__suffix--control {\n align-self: stretch;\n min-width: 0;\n white-space: normal;\n gap: var(--dimension-space-025);\n}\n\n.input-control__prefix-text--empty,\n.input-control__suffix--empty {\n display: none;\n}\n\n/* Nested inset controls keep 2px on the outer edge, matching trailing actions. */\n.input-control--prefix-control {\n padding-inline-start: var(--dimension-space-025);\n}\n\n.input-control--suffix-control {\n padding-inline-end: var(--dimension-space-025);\n}\n\n.input-control__adornment-divider {\n position: relative;\n z-index: 2;\n pointer-events: none;\n}\n\n/*\n * Select side stays on the 2px inset remainder. Value side matches a\n * non-prefixed field's inline padding from its border.\n */\n.input-control__prefix-text--control .input-control__adornment-divider {\n margin-inline-end: calc(var(--ds-control-padding-inline) - var(--ds-control-gap));\n}\n\n.input-control__suffix--control .input-control__adornment-divider {\n margin-inline-start: calc(var(--ds-control-padding-inline) - var(--ds-control-gap));\n}\n\n/* The input frame owns the nested clear action's cross-axis alignment. */\n.input-control > .input-control__clear {\n position: relative;\n z-index: 2;\n flex-shrink: 0;\n align-self: center;\n}\n\n.input-control.ds-control--lg:has(.input-control__clear),\n.input-control.ds-control--md:has(.input-control__clear),\n.input-control.ds-control--sm:has(.input-control__clear) {\n padding-right: var(--dimension-space-050);\n}\n\n.input-control.ds-control--xs:has(.input-control__clear) {\n padding-right: 0;\n}\n\n/* Same-size inset trailing action as date/time: 2px remaining on the end edges. */\n.input-control > .input-control__trailing-action {\n position: relative;\n z-index: 2;\n flex-shrink: 0;\n align-self: center;\n}\n\n:host(.ds-control-inactive) .input-control > .input-control__trailing-action {\n --effect-opacity-medium: 1;\n}\n\n.input-control:has(.input-control__trailing-action) {\n padding-inline-end: var(--dimension-space-025);\n}\n\n.error-text {\n width: 100%;\n}\n\n@media (forced-colors: active) {\n .input-control--bordered:focus-within:not(.input-control--error)::after {\n outline-color: var(--ds-forced-color-selected);\n }\n\n .input-control--error::after {\n outline-style: dashed;\n }\n}\n\n.input-control--tokenized .native-input {\n box-sizing: border-box;\n padding-block: 0;\n}\n\n.input-control--has-tokens {\n --ds-input-token-inset: var(--dimension-space-050);\n\n height: auto;\n min-height: var(--ds-control-height);\n flex-wrap: wrap;\n padding: var(--ds-input-token-inset);\n row-gap: var(--dimension-space-050);\n}\n\n/* Chip stops at md; xs retains the shared single-inset fallback. */\n.input-control--has-tokens.ds-control--lg {\n --ds-input-token-inset: var(--dimension-space-100);\n}\n.input-control--has-tokens.ds-control--xs {\n --ds-input-token-inset: var(--dimension-space-025);\n}\n\n.input-control--has-tokens .native-input {\n flex: 1 1 var(--dimension-size-800);\n width: 0;\n min-width: min(var(--dimension-size-800), 100%);\n height: calc(var(--ds-control-height) - var(--ds-input-token-inset) * 2);\n}\n.input-token {\n position: relative;\n z-index: 2;\n max-width: 100%;\n}\n.input-suggestions__list {\n overflow: auto;\n max-height: calc(var(--dimension-size-base) * 20);\n padding: var(--dimension-space-050);\n}\n","import {\n AttachInternals,\n Component,\n Prop,\n State,\n Event,\n EventEmitter,\n Element,\n Method,\n Watch,\n h,\n Host,\n} from '@stencil/core';\nimport {\n controlWidthClass,\n CONTROL_TEXT_VARIANT,\n DEFAULT_REQUIRED_MESSAGE,\n restoreStringFormState,\n restoreStringArrayFormState,\n setRepeatedFormControlValue,\n resolveCssLengthPx,\n TOKEN_DEFAULTS,\n setFormControlValue,\n type ControlWidth,\n} from '../../utils';\n\nimport { AnchoredPositionController } from '../../utils/anchored-position-controller';\nimport { AnchoredOverlayInteractionController } from '../../utils/anchored-overlay-interaction-controller';\nimport { resolveAnchoredOverlayBoundaryRect } from '../../utils/anchored-overlay-boundary';\nimport { ChoiceOptionRow } from '../../utils/choice-list-parts';\nimport { lengthLimit, textConstraintValidity } from '../../utils/text-constraints';\n\nexport type InputType = 'text' | 'email' | 'tel' | 'url' | 'search' | 'password' | 'number';\nexport type InputSize = 'lg' | 'md' | 'sm' | 'xs';\nexport type InputWidth = ControlWidth;\nexport type InputTextAlign = 'start' | 'end';\n\nconst CONTROL_ADORNMENT = 'ds-select, ds-button-unfilled, ds-button-filled';\n\nfunction isControlAdornment(element: Element): boolean {\n return element.matches(CONTROL_ADORNMENT) || Boolean(element.querySelector(CONTROL_ADORNMENT));\n}\n\nconst ICON_SIZE: Record<InputSize, 'lg' | 'md' | 'sm' | 'xs'> = {\n lg: 'lg',\n md: 'md',\n sm: 'sm',\n xs: 'xs',\n};\n\nconst CLEAR_BUTTON_SIZE: Record<InputSize, 'md' | 'sm' | 'xs'> = {\n lg: 'md',\n md: 'sm',\n sm: 'xs',\n xs: 'xs',\n};\n\nlet idCounter = 0;\n\n@Component({\n tag: 'ds-input',\n styleUrl: 'Input.css',\n scoped: true,\n formAssociated: true,\n})\nexport class Input {\n @Element() el!: HTMLElement;\n @AttachInternals() internals!: ElementInternals;\n\n private generatedId = `ds-input-${++idCounter}`;\n private errorId = `${this.generatedId}-error`;\n\n @Prop({ mutable: true }) value: string = '';\n @Prop({ reflect: true }) name: string | undefined;\n @Prop({ reflect: true }) form: string | undefined;\n @Prop({ reflect: true }) disabled: boolean = false;\n /** Keeps the value focusable and submittable while preventing edits. */\n @Prop({ reflect: true }) readOnly: boolean = false;\n @Prop({ reflect: true }) required: boolean = false;\n @Prop() requiredMessage: string = DEFAULT_REQUIRED_MESSAGE;\n @Prop() clearLabel: string = 'Clear';\n @Prop() showPasswordLabel: string = 'Show password';\n @Prop() hidePasswordLabel: string = 'Hide password';\n /** Minimum non-empty text length, in native UTF-16 code units. */\n @Prop() minLength: number | undefined;\n /** Maximum text length. A visible counter accompanies this constraint by default. */\n @Prop() maxLength: number | undefined;\n /** Error preserves extra text; restrict uses the browser's hard input limit. */\n @Prop() lengthBehavior: 'error' | 'restrict' = 'error';\n @Prop() showCharacterCount: boolean = true;\n /** Native whole-value regular expression for text-like input types. */\n @Prop() pattern: string | undefined;\n @Prop() patternMessage: string | undefined;\n /** Optional local suggestions; free text always remains valid. Used with text/search fields. */\n @Prop() suggestions: string[] = [];\n /** Free-text tokens entered with Enter/comma and removable chips. Used with text/search fields. */\n @Prop({ reflect: true }) tokenized: boolean = false;\n /** Committed values; value remains the editable draft when tokenized. */\n @Prop({ mutable: true }) tokens: string[] = [];\n @Prop() removeTokenLabel: string = 'Remove {label}';\n @Prop() placeholder: string | undefined;\n @Prop() type: InputType = 'text';\n /** Minimum accepted value when type is number. */\n @Prop() min: number | undefined;\n /** Maximum accepted value when type is number. */\n @Prop() max: number | undefined;\n /** Numeric increment used by native stepping and constraint validation. */\n @Prop() step: number | undefined;\n /** Show inset increment/decrement actions for number fields. Native numeric editing remains available when hidden. */\n @Prop() showStepper: boolean = true;\n @Prop() incrementLabel: string = 'Increase value';\n @Prop() decrementLabel: string = 'Decrease value';\n /** Align the editable value; number steppers sit on the opposite inline edge. */\n @Prop() textAlign: InputTextAlign = 'start';\n /** Native browser autofill hint. */\n @Prop({ attribute: 'autocomplete' }) autoComplete: string | undefined;\n /** Preferred virtual keyboard without changing the value semantics. */\n @Prop({ attribute: 'inputmode' }) inputMode: string = '';\n /** Preferred virtual-keyboard action label. */\n @Prop({ attribute: 'enterkeyhint' }) enterKeyHint: string = '';\n /** Control density. */\n @Prop() size: InputSize = 'md';\n /** Width fit — fill the parent (default) or hug the available content. */\n @Prop() width: InputWidth = 'fill';\n /** Show the standard inset border, including focused and invalid strokes. */\n @Prop() hasBorder: boolean = true;\n /** Show the standard hover and pressed fill when the field is not embedded in interactive chrome. */\n @Prop() hasInteractionFill: boolean = true;\n /** Optional leading icon name. */\n @Prop() icon: string | undefined;\n @Prop() isInactive: boolean = false;\n @Prop() autoFocus: boolean = false;\n @Prop() error: boolean = false;\n @Prop() errorMessage: string | undefined;\n /** Associates the internal input with an external <label>. */\n @Prop() inputId: string | undefined;\n @Prop({ attribute: 'aria-label' }) ariaLabel: string | null = null;\n @Prop({ attribute: 'aria-labelledby' }) ariaLabelledby: string | undefined;\n @Prop({ attribute: 'aria-describedby' }) ariaDescribedby: string | undefined;\n /** Identifies the results or popup controlled by the editable field. */\n @Prop({ attribute: 'aria-controls' }) ariaControls: string | undefined;\n /** Identifies the active descendant while focus remains in the editable field. */\n @Prop({ attribute: 'aria-activedescendant' }) ariaActiveDescendant: string | undefined;\n\n @Event() dsChange!: EventEmitter<string>;\n @Event() dsTokensChange!: EventEmitter<string[]>;\n @Event() dsSuggestionSelect!: EventEmitter<string>;\n @Event() dsClear!: EventEmitter<void>;\n\n @State() private constraintMessage = '';\n @State() private submitted = false;\n private get managedByField(): boolean {\n return Boolean(this.el.closest('ds-field'));\n }\n private get visibleConstraintMessage(): string {\n return this.touched ||\n this.submitted ||\n (this.maxLength !== undefined && this.value.length > this.maxLength)\n ? this.constraintMessage\n : '';\n }\n private get hasCounter(): boolean {\n return (\n this.showCharacterCount && lengthLimit(this.maxLength) !== undefined && this.type !== 'number'\n );\n }\n\n @State() private suggestionsOpen = false;\n @State() private activeSuggestion = -1;\n @State() private suggestionPosition = { x: 0, y: 0 };\n @State() private suggestionsReady = false;\n private controlEl?: HTMLElement;\n private initialTokens: string[] = [];\n private get supportsTextFeatures(): boolean {\n return this.type === 'text' || this.type === 'search';\n }\n private get isTokenized(): boolean {\n return this.tokenized && this.supportsTextFeatures;\n }\n private get filteredSuggestions(): string[] {\n if (!this.supportsTextFeatures) return [];\n const query = this.value.trim().toLocaleLowerCase();\n return [...new Set(this.suggestions)].filter(\n value =>\n value.toLocaleLowerCase().includes(query) &&\n (!this.isTokenized || !this.tokens.includes(value))\n );\n }\n private readonly suggestionPlacement = new AnchoredPositionController({\n getAnchor: () => this.controlEl ?? null,\n getPopup: () => this.el.querySelector<HTMLElement>('.input-suggestions'),\n getOwnerDocument: () => this.el.ownerDocument,\n measure: (anchor, popup) => {\n if (!this.suggestionsOpen) return null;\n const gap = resolveCssLengthPx(TOKEN_DEFAULTS.space050, TOKEN_DEFAULTS.space050);\n return {\n anchorRect: anchor.getBoundingClientRect(),\n popupWidth: popup.offsetWidth,\n popupHeight: popup.offsetHeight,\n side: 'bottom',\n align: 'start',\n sideOffsetPx: gap,\n alignOffsetPx: 0,\n viewportPadPx: gap,\n viewportWidth: window.innerWidth,\n viewportHeight: window.innerHeight,\n collisionRect: resolveAnchoredOverlayBoundaryRect(anchor),\n };\n },\n apply: ({ x, y }) => {\n this.suggestionPosition = { x, y };\n },\n onReady: () => {\n this.suggestionsReady = true;\n },\n topLayer: true,\n observeResize: true,\n liveUpdate: 'frame',\n });\n private readonly suggestionInteraction = new AnchoredOverlayInteractionController({\n getAnchor: () => this.controlEl ?? null,\n getPopup: () => this.el.querySelector<HTMLElement>('.input-suggestions'),\n getOwnerDocument: () => this.el.ownerDocument,\n onOutsideActivation: () => this.closeSuggestions(),\n });\n\n private initialValue = '';\n private inputEl?: HTMLInputElement;\n @State() private formDisabled = false;\n @State() private hasPrefix = false;\n @State() private hasPrefixControl = false;\n @State() private hasSuffix = false;\n @State() private hasSuffixControl = false;\n @State() private focused = false;\n @State() private touched = false;\n @State() private passwordRevealed = false;\n private restorePasswordFocus = false;\n\n componentWillLoad() {\n this.value = String(this.value ?? '');\n this.tokens = Array.isArray(this.tokens) ? this.tokens : [];\n this.initialValue = this.value;\n this.initialTokens = [...this.tokens];\n this.syncAdornmentSlots();\n this.syncFormValue();\n }\n\n disconnectedCallback() {\n this.closeSuggestions();\n }\n\n componentDidRender() {\n this.syncAdornmentSlots();\n if (this.suggestionsOpen) this.suggestionPlacement.schedule();\n if (!this.restorePasswordFocus) return;\n this.restorePasswordFocus = false;\n this.inputEl?.focus({ preventScroll: true });\n }\n\n @Watch('type')\n onTypeChange() {\n if (this.type !== 'password') this.passwordRevealed = false;\n }\n\n private syncAdornmentSlots() {\n const prefixNodes = [...this.el.querySelectorAll('[slot=\"prefix\"]')];\n const suffixNodes = [...this.el.querySelectorAll('[slot=\"suffix\"]')];\n const hasPrefix = prefixNodes.length > 0;\n const hasPrefixControl = prefixNodes.some(isControlAdornment);\n const hasSuffix = suffixNodes.length > 0;\n const hasSuffixControl = suffixNodes.some(isControlAdornment);\n if (hasPrefix !== this.hasPrefix) this.hasPrefix = hasPrefix;\n if (hasPrefixControl !== this.hasPrefixControl) this.hasPrefixControl = hasPrefixControl;\n if (hasSuffix !== this.hasSuffix) this.hasSuffix = hasSuffix;\n if (hasSuffixControl !== this.hasSuffixControl) this.hasSuffixControl = hasSuffixControl;\n }\n\n @Watch('tokens')\n @Watch('tokenized')\n @Watch('name')\n @Watch('value')\n @Watch('disabled')\n @Watch('isInactive')\n @Watch('required')\n @Watch('readOnly')\n @Watch('minLength')\n @Watch('maxLength')\n @Watch('requiredMessage')\n @Watch('pattern')\n @Watch('patternMessage')\n @Watch('type')\n @Watch('min')\n @Watch('max')\n @Watch('step')\n syncFormValue() {\n if (typeof this.value !== 'string') {\n this.value = String(this.value ?? '');\n }\n if (!Array.isArray(this.tokens)) this.tokens = [];\n const inactive = this.isInactive || this.disabled || this.formDisabled;\n if (this.isTokenized)\n setRepeatedFormControlValue(this.internals, this.name, this.tokens, { inactive });\n else setFormControlValue(this.internals, this.value, { inactive });\n let validity =\n inactive || this.readOnly\n ? { flags: {}, message: '' }\n : textConstraintValidity({\n ...this.textConstraints(),\n required: this.required && !this.isTokenized,\n });\n if (this.isTokenized && !inactive && !this.readOnly) {\n const invalidToken = this.tokens\n .map(value => textConstraintValidity({ ...this.textConstraints(), value, required: false }))\n .find(result => result.message);\n if (invalidToken) validity = invalidToken;\n else if (this.required && this.tokens.length === 0)\n validity = { flags: { valueMissing: true }, message: this.requiredMessage };\n else if (this.value.trim() && !validity.message)\n validity = { flags: { customError: true }, message: 'Press Enter to add this value.' };\n }\n if (inactive || this.readOnly) this.closeSuggestions();\n this.constraintMessage = validity.message;\n this.internals.setValidity(validity.flags, validity.message);\n }\n\n private textConstraints() {\n return {\n value: this.value,\n type: this.type,\n required: this.required,\n requiredMessage: this.requiredMessage,\n minLength: this.minLength,\n maxLength: this.maxLength,\n pattern: this.pattern,\n patternMessage: this.patternMessage,\n min: this.min,\n max: this.max,\n step: this.step,\n };\n }\n\n formDisabledCallback(disabled: boolean) {\n this.formDisabled = disabled;\n this.syncFormValue();\n }\n\n formResetCallback() {\n this.value = this.initialValue;\n this.tokens = [...this.initialTokens];\n this.closeSuggestions();\n this.touched = false;\n this.submitted = false;\n this.passwordRevealed = false;\n }\n\n formStateRestoreCallback(state: string | File | FormData | null) {\n if (this.isTokenized) this.tokens = restoreStringArrayFormState(state);\n else this.value = restoreStringFormState(state);\n }\n\n @Method()\n async setFocus() {\n this.inputEl?.focus();\n }\n\n private handleInput = (e: Event) => {\n this.value = (e.target as HTMLInputElement).value;\n this.dsChange.emit(this.value);\n this.activeSuggestion = -1;\n this.openSuggestions();\n };\n\n private handleFocus = () => {\n this.focused = true;\n };\n\n private handleBlur = () => {\n this.focused = false;\n this.touched = true;\n this.closeSuggestions();\n };\n\n private handleClear = () => {\n this.value = '';\n if (this.isTokenized) {\n this.tokens = [];\n this.dsTokensChange.emit([]);\n }\n this.closeSuggestions();\n this.dsChange.emit('');\n this.dsClear.emit();\n this.inputEl?.focus();\n };\n\n private handleTogglePassword = () => {\n this.passwordRevealed = !this.passwordRevealed;\n this.restorePasswordFocus = true;\n };\n\n @Watch('suggestions')\n onSuggestionsChanged() {\n this.activeSuggestion = -1;\n if (this.focused && this.value) this.openSuggestions();\n }\n\n private openSuggestions() {\n if (\n this.disabled ||\n this.formDisabled ||\n this.isInactive ||\n this.readOnly ||\n !this.filteredSuggestions.length\n ) {\n this.closeSuggestions();\n return;\n }\n if (this.suggestionsOpen) return;\n this.suggestionsReady = false;\n this.suggestionsOpen = true;\n this.suggestionInteraction.connect();\n this.suggestionPlacement.observe();\n this.suggestionPlacement.schedule();\n }\n private closeSuggestions() {\n this.suggestionPlacement.unobserve();\n this.suggestionInteraction.disconnect();\n const popup = this.el.querySelector<HTMLElement>('.input-suggestions');\n if (popup?.matches(':popover-open')) popup.hidePopover();\n this.suggestionsOpen = false;\n this.activeSuggestion = -1;\n }\n private addTokens(text: string) {\n if (this.readOnly || this.disabled || this.isInactive || this.formDisabled) return;\n const values = text\n .split(/[,\\n\\r]+/)\n .map(value => {\n const trimmed = value.trim();\n const max = lengthLimit(this.maxLength);\n return this.lengthBehavior === 'restrict' && max !== undefined\n ? trimmed.slice(0, max)\n : trimmed;\n })\n .filter(Boolean);\n if (!values.length) return;\n this.tokens = [...new Set([...this.tokens, ...values])];\n this.value = '';\n this.dsTokensChange.emit([...this.tokens]);\n this.dsChange.emit('');\n this.closeSuggestions();\n }\n private removeToken(index: number) {\n if (this.readOnly || this.disabled || this.isInactive || this.formDisabled) return;\n this.tokens = this.tokens.filter((_, tokenIndex) => index !== tokenIndex);\n this.dsTokensChange.emit([...this.tokens]);\n this.inputEl?.focus();\n }\n private selectSuggestion(value: string) {\n if (this.isTokenized) this.addTokens(value);\n else {\n const max = lengthLimit(this.maxLength);\n this.value =\n this.lengthBehavior === 'restrict' && max !== undefined ? value.slice(0, max) : value;\n this.dsChange.emit(this.value);\n }\n this.dsSuggestionSelect.emit(value);\n this.closeSuggestions();\n this.inputEl?.focus();\n }\n private handleTextKeyDown = (event: KeyboardEvent) => {\n if (event.isComposing || this.readOnly || this.disabled || this.isInactive || this.formDisabled)\n return;\n if ((event.key === 'ArrowDown' || event.key === 'ArrowUp') && this.filteredSuggestions.length) {\n event.preventDefault();\n this.openSuggestions();\n const length = this.filteredSuggestions.length;\n this.activeSuggestion =\n this.activeSuggestion < 0\n ? event.key === 'ArrowDown'\n ? 0\n : length - 1\n : Math.max(\n 0,\n Math.min(length - 1, this.activeSuggestion + (event.key === 'ArrowDown' ? 1 : -1))\n );\n requestAnimationFrame(() =>\n this.el\n .querySelector(`#${this.generatedId}-suggestion-${this.activeSuggestion}`)\n ?.scrollIntoView({ block: 'nearest' })\n );\n } else if (event.key === 'Escape' && this.suggestionsOpen) {\n event.preventDefault();\n event.stopPropagation();\n this.closeSuggestions();\n } else if (event.key === 'Enter' && this.suggestionsOpen && this.activeSuggestion >= 0) {\n event.preventDefault();\n this.selectSuggestion(this.filteredSuggestions[this.activeSuggestion]);\n } else if (\n this.isTokenized &&\n (event.key === 'Enter' || event.key === ',') &&\n this.value.trim()\n ) {\n event.preventDefault();\n this.addTokens(this.value);\n } else if (this.isTokenized && event.key === 'Backspace' && !this.value && this.tokens.length) {\n event.preventDefault();\n this.removeToken(this.tokens.length - 1);\n } else if (event.key === 'Tab') this.closeSuggestions();\n };\n private handlePaste = (event: ClipboardEvent) => {\n if (!this.isTokenized || this.readOnly || this.disabled || this.isInactive || this.formDisabled)\n return;\n const pasted = event.clipboardData?.getData('text') ?? '';\n if (!/[,\\r\\n]/.test(pasted)) return;\n event.preventDefault();\n const start = this.inputEl?.selectionStart ?? this.value.length;\n const end = this.inputEl?.selectionEnd ?? start;\n this.addTokens(this.value.slice(0, start) + pasted + this.value.slice(end));\n };\n\n private numericStepDisabled(direction: 1 | -1): boolean {\n if (this.value.trim() === '') return false;\n const value = Number(this.value);\n if (!Number.isFinite(value)) return false;\n if (direction > 0 && this.max !== undefined) return value >= this.max;\n if (direction < 0 && this.min !== undefined) return value <= this.min;\n return false;\n }\n\n private handleNumericStep = (direction: 1 | -1) => {\n const input = this.inputEl;\n if (!input || input.disabled || input.readOnly || this.numericStepDisabled(direction)) return;\n\n const previous = input.value;\n if (direction > 0) input.stepUp();\n else input.stepDown();\n input.focus({ preventScroll: true });\n if (input.value === previous) return;\n\n this.value = input.value;\n this.dsChange.emit(this.value);\n };\n\n private renderNumericStepper(inactive: boolean) {\n const incrementDisabled = inactive || this.readOnly || this.numericStepDisabled(1);\n const decrementDisabled = inactive || this.readOnly || this.numericStepDisabled(-1);\n\n return (\n <span class=\"input-control__number-stepper\">\n <ds-button-unfilled\n class=\"input-control__number-step input-control__number-step--increment\"\n variant=\"icon\"\n size={this.size}\n icon=\"Plus\"\n hasBorder={false}\n isInset\n isInactive={incrementDisabled}\n ariaLabel={this.incrementLabel}\n onDsClick={() => this.handleNumericStep(1)}\n />\n <ds-divider orientation=\"vertical\" length=\"var(--ds-control-icon)\" />\n <ds-button-unfilled\n class=\"input-control__number-step input-control__number-step--decrement\"\n variant=\"icon\"\n size={this.size}\n icon=\"Minus\"\n hasBorder={false}\n isInset\n isInactive={decrementDisabled}\n ariaLabel={this.decrementLabel}\n onDsClick={() => this.handleNumericStep(-1)}\n />\n </span>\n );\n }\n\n render() {\n const inputId = this.inputId ?? this.generatedId;\n const inactive = this.isInactive || this.disabled || this.formDisabled;\n const filled = this.value.length > 0 || (this.isTokenized && this.tokens.length > 0);\n const dirty =\n this.value !== this.initialValue ||\n (this.isTokenized && JSON.stringify(this.tokens) !== JSON.stringify(this.initialTokens));\n const showClear = this.type === 'search' && filled && !inactive && !this.readOnly;\n const showPasswordToggle = this.type === 'password';\n const nativeType = showPasswordToggle && this.passwordRevealed ? 'text' : this.type;\n const message =\n this.error && this.errorMessage ? this.errorMessage : this.visibleConstraintMessage;\n const invalid = this.error || Boolean(this.visibleConstraintMessage);\n const showError = Boolean(message) && !this.managedByField;\n const showCounter = this.hasCounter && !this.managedByField;\n const textVariant = CONTROL_TEXT_VARIANT[this.size];\n const iconSize = ICON_SIZE[this.size];\n const numeric = this.type === 'number';\n const showNumericStepper = numeric && this.showStepper;\n const resolvedAutoComplete = this.autoComplete ?? (this.type === 'search' ? 'off' : undefined);\n const suppressBrowserChrome = this.type === 'search' || this.type === 'password';\n\n const describedBy =\n [\n this.ariaDescribedby,\n showError ? this.errorId : undefined,\n showCounter ? `${this.generatedId}-count` : undefined,\n ]\n .filter(Boolean)\n .join(' ') || undefined;\n\n return (\n <Host\n class={{\n 'input-host': true,\n 'ds-field-stack': true,\n 'ds-field-stack--supporting-inset': !this.hasBorder,\n 'ds-control-inactive': inactive,\n [`ds-control--${this.size}`]: true,\n ...controlWidthClass(this.width),\n }}\n data-disabled={inactive ? '' : undefined}\n data-readonly={this.readOnly ? '' : undefined}\n data-required={this.required ? '' : undefined}\n data-invalid={invalid ? '' : undefined}\n data-constraint-message={this.visibleConstraintMessage || undefined}\n data-character-count={this.hasCounter ? String(this.value.length) : undefined}\n data-character-limit={this.hasCounter ? String(lengthLimit(this.maxLength)) : undefined}\n onInvalid={() => {\n this.submitted = true;\n }}\n data-filled={filled ? '' : undefined}\n data-focused={this.focused ? '' : undefined}\n data-dirty={dirty ? '' : undefined}\n data-touched={this.touched ? '' : undefined}\n >\n <div\n ref={element => {\n this.controlEl = element;\n }}\n class={{\n 'input-control--tokenized': this.isTokenized,\n 'input-control--has-tokens': this.isTokenized && this.tokens.length > 0,\n 'input-control': true,\n 'input-control--number': numeric,\n 'input-control--stepper': showNumericStepper,\n 'input-control--align-start': this.textAlign === 'start',\n 'input-control--align-end': this.textAlign === 'end',\n 'ds-control-frame': true,\n 'input-control--bordered': this.hasBorder,\n 'input-control--error': this.hasBorder && invalid,\n 'input-control--prefix-control': this.hasPrefixControl,\n 'input-control--suffix-control': this.hasSuffixControl,\n 'ds-interaction-fill': this.hasInteractionFill,\n [`ds-control--${this.size}`]: true,\n }}\n >\n {showNumericStepper && this.textAlign === 'end' && this.renderNumericStepper(inactive)}\n {this.icon && (\n <span\n class=\"input-control__prefix ds-control-icon-box ds-interaction-fill__content\"\n aria-hidden=\"true\"\n >\n <ds-icon name={this.icon} size={iconSize} color=\"inherit\" />\n </span>\n )}\n <span\n class={{\n 'input-control__prefix-text': true,\n 'ds-control-label-box': !this.hasPrefixControl,\n 'ds-interaction-fill__content': true,\n 'input-control__prefix-text--control': this.hasPrefixControl,\n 'input-control__prefix-text--empty': !this.hasPrefix,\n }}\n >\n <slot name=\"prefix\" onSlotchange={() => this.syncAdornmentSlots()} />\n {this.hasPrefixControl && (\n <ds-divider\n class=\"input-control__adornment-divider\"\n orientation=\"vertical\"\n length=\"var(--ds-control-icon)\"\n />\n )}\n </span>\n {this.isTokenized &&\n this.tokens.map((token, index) => (\n <ds-chip\n key={`${index}-${token}`}\n class=\"input-token\"\n label={token}\n size={this.size === 'lg' ? 'md' : this.size}\n isInset\n insetDepth=\"double\"\n isInactive={inactive || this.readOnly}\n removeLabel={this.removeTokenLabel}\n state={\n textConstraintValidity({\n ...this.textConstraints(),\n value: token,\n required: false,\n }).message\n ? 'error'\n : 'default'\n }\n onDsRemove={event => {\n event.stopPropagation();\n this.removeToken(index);\n }}\n />\n ))}\n <input\n ref={element => {\n this.inputEl = element;\n }}\n type={nativeType}\n id={inputId}\n value={this.value}\n placeholder={this.placeholder}\n min={numeric ? this.min : undefined}\n max={numeric ? this.max : undefined}\n step={numeric ? this.step : undefined}\n disabled={inactive}\n readOnly={this.readOnly}\n required={this.required && !this.isTokenized}\n minLength={lengthLimit(this.minLength)}\n maxLength={this.lengthBehavior === 'restrict' ? lengthLimit(this.maxLength) : undefined}\n pattern={this.pattern}\n autoFocus={this.autoFocus}\n autoComplete={resolvedAutoComplete}\n autoCapitalize={suppressBrowserChrome ? 'none' : undefined}\n autoCorrect={suppressBrowserChrome ? 'off' : undefined}\n spellcheck={suppressBrowserChrome ? false : undefined}\n inputMode={this.inputMode || undefined}\n enterKeyHint={this.enterKeyHint || undefined}\n class={`native-input native-input--align-${this.textAlign} ds-control-label-box ds-text--${textVariant.replace('text-', '')} ds-text--regular ds-interaction-fill__content`}\n aria-label={this.ariaLabel}\n aria-labelledby={this.ariaLabelledby}\n aria-describedby={describedBy}\n role={this.suggestions.length && this.supportsTextFeatures ? 'combobox' : undefined}\n aria-autocomplete={\n this.suggestions.length && this.supportsTextFeatures ? 'list' : undefined\n }\n aria-expanded={\n this.suggestions.length && this.supportsTextFeatures\n ? String(this.suggestionsOpen)\n : undefined\n }\n aria-controls={\n this.suggestionsOpen ? `${this.generatedId}-suggestions` : this.ariaControls\n }\n aria-activedescendant={\n this.suggestionsOpen && this.activeSuggestion >= 0\n ? `${this.generatedId}-suggestion-${this.activeSuggestion}`\n : this.ariaActiveDescendant\n }\n aria-invalid={invalid ? 'true' : undefined}\n onInput={this.handleInput}\n onKeyDown={this.handleTextKeyDown}\n onPaste={this.handlePaste}\n onFocus={this.handleFocus}\n onBlur={this.handleBlur}\n />\n <span\n class={{\n 'input-control__suffix': true,\n 'ds-control-label-box': !this.hasSuffixControl,\n 'input-control__suffix--control': this.hasSuffixControl,\n 'input-control__suffix--empty': !this.hasSuffix,\n }}\n >\n {this.hasSuffixControl && (\n <ds-divider\n class=\"input-control__adornment-divider\"\n orientation=\"vertical\"\n length=\"var(--ds-control-icon)\"\n />\n )}\n <slot name=\"suffix\" onSlotchange={() => this.syncAdornmentSlots()} />\n </span>\n {showClear && (\n <ds-button-unfilled\n class=\"input-control__clear\"\n variant=\"icon\"\n size={CLEAR_BUTTON_SIZE[this.size]}\n icon=\"CrossCircle\"\n hasBorder={false}\n rounded\n ariaLabel={this.clearLabel}\n onDsClick={this.handleClear}\n />\n )}\n {showPasswordToggle && (\n <ds-button-unfilled\n class=\"input-control__trailing-action\"\n variant=\"icon\"\n size={this.size}\n icon={this.passwordRevealed ? 'EyeStrikethrough' : 'Eye'}\n hasBorder={false}\n isInset\n isInactive={inactive}\n ariaLabel={this.passwordRevealed ? this.hidePasswordLabel : this.showPasswordLabel}\n onDsClick={this.handleTogglePassword}\n />\n )}\n {showNumericStepper && this.textAlign === 'start' && this.renderNumericStepper(inactive)}\n </div>\n {this.suggestionsOpen && (\n <div\n popover=\"manual\"\n class=\"input-suggestions ds-choice-popup\"\n style={{\n position: 'fixed',\n left: `${this.suggestionPosition.x}px`,\n top: `${this.suggestionPosition.y}px`,\n width: `${this.controlEl?.getBoundingClientRect().width ?? 0}px`,\n visibility: this.suggestionsReady ? 'visible' : 'hidden',\n }}\n onMouseDown={event => event.preventDefault()}\n >\n <div\n class=\"input-suggestions__list ds-choice-list\"\n id={`${this.generatedId}-suggestions`}\n role=\"listbox\"\n aria-label=\"Suggestions\"\n >\n {this.filteredSuggestions.map((value, index) => (\n <ChoiceOptionRow\n size={this.size}\n id={`${this.generatedId}-suggestion-${index}`}\n option={{ label: value, value }}\n selected={false}\n active={index === this.activeSuggestion}\n focusRingVisible={false}\n usesSubtext={false}\n tabIndex={-1}\n onHover={() => {\n this.activeSuggestion = index;\n }}\n onSelect={() => this.selectSuggestion(value)}\n />\n ))}\n </div>\n </div>\n )}\n {(showError || showCounter) && (\n <div class=\"text-field-support\">\n {showError && (\n <ds-text\n class=\"error-text\"\n as=\"div\"\n variant=\"text-body-small\"\n color=\"negative\"\n textId={this.errorId}\n role=\"alert\"\n >\n {message}\n </ds-text>\n )}\n {showCounter && (\n <ds-text\n as=\"span\"\n class=\"text-field-count\"\n variant=\"text-body-small\"\n color={invalid ? 'negative' : 'secondary'}\n textId={`${this.generatedId}-count`}\n >\n {this.value.length}/{lengthLimit(this.maxLength)}\n </ds-text>\n )}\n </div>\n )}\n </Host>\n );\n }\n}\n"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"names":["ChoiceListSection","size","heading","ariaLabel","className","children","h","class","trim","role","as","variant","CONTROL_SUPPORTING_TEXT_VARIANT","color","emphasis","ChoiceSearch","hasFocusBoundary","hasInteractionFill","value","placeholder","controls","activeDescendant","disabled","inputRef","clearLabel","onValueChange","onClear","onKeyDown","ref","element","type","width","icon","isInactive","hasBorder","ariaControls","ariaActiveDescendant","onDsChange","event","stopPropagation","detail","onDsClear","ChoiceFooter","summary","compactSummary","useCompactSummary","contentRef","summaryMeasureRef","clearRef","key","CONTROL_TEXT_VARIANT","onClick","ChoiceActionFooter","label","onAction","ChoiceOptionRow","id","option","selected","active","focusRingVisible","usesSubtext","leading","supporting","action","actionOpen","popupRole","tabIndex","onFocus","onHover","onSelect","grid","undefined","String","onMouseDown","preventDefault","onMouseMove","subtext","inputCss","CONTROL_ADORNMENT","isControlAdornment","matches","Boolean","querySelector","ICON_SIZE","lg","md","sm","xs","CLEAR_BUTTON_SIZE","idCounter","Input","__stencil_proxyCustomElement","HTMLElement","constructor","registerHost","this","generatedId","errorId","readOnly","required","requiredMessage","DEFAULT_REQUIRED_MESSAGE","showPasswordLabel","hidePasswordLabel","lengthBehavior","showCharacterCount","suggestions","tokenized","tokens","removeTokenLabel","showStepper","incrementLabel","decrementLabel","textAlign","inputMode","enterKeyHint","autoFocus","error","constraintMessage","submitted","suggestionsOpen","activeSuggestion","suggestionPosition","x","y","suggestionsReady","initialTokens","suggestionPlacement","AnchoredPositionController","getAnchor","controlEl","getPopup","el","getOwnerDocument","ownerDocument","measure","anchor","popup","gap","resolveCssLengthPx","TOKEN_DEFAULTS","space050","anchorRect","getBoundingClientRect","popupWidth","offsetWidth","popupHeight","offsetHeight","side","align","sideOffsetPx","alignOffsetPx","viewportPadPx","viewportWidth","window","innerWidth","viewportHeight","innerHeight","collisionRect","resolveAnchoredOverlayBoundaryRect","apply","onReady","topLayer","observeResize","liveUpdate","suggestionInteraction","AnchoredOverlayInteractionController","onOutsideActivation","closeSuggestions","initialValue","formDisabled","hasPrefix","hasPrefixControl","hasSuffix","hasSuffixControl","focused","touched","passwordRevealed","restorePasswordFocus","handleInput","e","target","dsChange","emit","openSuggestions","handleFocus","handleBlur","handleClear","isTokenized","dsTokensChange","dsClear","inputEl","focus","handleTogglePassword","handleTextKeyDown","isComposing","filteredSuggestions","length","Math","max","min","requestAnimationFrame","scrollIntoView","block","selectSuggestion","addTokens","removeToken","handlePaste","pasted","clipboardData","getData","test","start","selectionStart","end","selectionEnd","slice","handleNumericStep","direction","input","numericStepDisabled","previous","stepUp","stepDown","preventScroll","managedByField","closest","visibleConstraintMessage","maxLength","hasCounter","lengthLimit","supportsTextFeatures","query","toLocaleLowerCase","Set","filter","includes","componentWillLoad","Array","isArray","syncAdornmentSlots","syncFormValue","disconnectedCallback","componentDidRender","schedule","onTypeChange","prefixNodes","querySelectorAll","suffixNodes","some","inactive","setRepeatedFormControlValue","internals","name","setFormControlValue","validity","flags","message","textConstraintValidity","textConstraints","invalidToken","map","find","result","valueMissing","customError","setValidity","minLength","pattern","patternMessage","step","formDisabledCallback","formResetCallback","formStateRestoreCallback","state","restoreStringArrayFormState","restoreStringFormState","setFocus","onSuggestionsChanged","connect","observe","unobserve","disconnect","hidePopover","text","values","split","trimmed","index","_","tokenIndex","dsSuggestionSelect","Number","isFinite","renderNumericStepper","incrementDisabled","decrementDisabled","isInset","onDsClick","orientation","render","inputId","filled","dirty","JSON","stringify","showClear","showPasswordToggle","nativeType","errorMessage","invalid","showError","showCounter","textVariant","iconSize","numeric","showNumericStepper","resolvedAutoComplete","autoComplete","suppressBrowserChrome","describedBy","ariaDescribedby","join","Host","controlWidthClass","onInvalid","onSlotchange","token","insetDepth","removeLabel","onDsRemove","autoCapitalize","autoCorrect","spellcheck","replace","ariaLabelledby","onInput","onPaste","onBlur","rounded","popover","style","position","left","top","visibility","textId"],"sources":["src/wc/utils/choice-list-parts.tsx","src/wc/components/Input/Input.css?tag=ds-input&encapsulation=scoped","src/wc/components/Input/Input.tsx"],"sourcesContent":["import { FunctionalComponent, h, VNode } from '@stencil/core';\nimport type { ChoiceOption } from './choice-list';\nimport {\n CONTROL_SUPPORTING_TEXT_VARIANT,\n CONTROL_TEXT_VARIANT,\n type ControlSize,\n} from './control-text';\n\ninterface ChoiceListSectionProps {\n size?: ControlSize;\n heading?: string;\n ariaLabel: string;\n className?: string;\n}\n\n/** Shared listbox anatomy used when an owning surface composes choice lists directly. */\nexport const ChoiceListSection: FunctionalComponent<ChoiceListSectionProps> = (\n { size = 'md', heading, ariaLabel, className },\n children\n) => (\n <div\n class={`ds-choice-list ds-chrome-column ds-chrome-space--sm ${className ?? ''}`.trim()}\n role=\"listbox\"\n aria-label={ariaLabel}\n >\n {heading ? (\n <ds-text\n class={`ds-choice-section__header ds-control-section-heading ds-control--${size}`}\n as=\"div\"\n variant={CONTROL_SUPPORTING_TEXT_VARIANT[size]}\n color=\"primary\"\n emphasis\n aria-hidden=\"true\"\n >\n {heading}\n </ds-text>\n ) : null}\n {children}\n </div>\n);\n\ninterface ChoiceSearchProps {\n size?: ControlSize;\n hasFocusBoundary?: boolean;\n hasInteractionFill?: boolean;\n value: string;\n placeholder: string;\n ariaLabel?: string;\n controls?: string;\n activeDescendant?: string;\n disabled?: boolean;\n inputRef: (element: HTMLDsInputElement | null) => void;\n clearLabel: string;\n onValueChange: (value: string) => void;\n onClear?: () => void;\n onKeyDown: (event: KeyboardEvent) => void;\n}\n\nexport const ChoiceSearch: FunctionalComponent<ChoiceSearchProps> = ({\n size = 'md',\n hasFocusBoundary = true,\n hasInteractionFill = true,\n value,\n placeholder,\n ariaLabel,\n controls,\n activeDescendant,\n disabled = false,\n inputRef,\n clearLabel,\n onValueChange,\n onClear,\n onKeyDown,\n}) => {\n return (\n <div\n class={{\n 'select-search': true,\n 'select-search--without-focus-boundary': !hasFocusBoundary,\n }}\n >\n <ds-input\n class=\"select-search__control\"\n ref={element => inputRef((element as HTMLDsInputElement) ?? null)}\n type=\"search\"\n size={size}\n width=\"fill\"\n value={value}\n placeholder={placeholder}\n icon=\"MagnifyingGlass\"\n clearLabel={clearLabel}\n isInactive={disabled}\n hasBorder={false}\n hasInteractionFill={hasInteractionFill}\n ariaLabel={ariaLabel ?? placeholder}\n ariaControls={controls}\n ariaActiveDescendant={activeDescendant}\n onKeyDown={onKeyDown}\n onDsChange={(event: CustomEvent<string>) => {\n event.stopPropagation();\n onValueChange(event.detail);\n }}\n onDsClear={(event: CustomEvent<void>) => {\n event.stopPropagation();\n onClear?.();\n }}\n />\n </div>\n );\n};\n\ninterface ChoiceFooterProps {\n size?: ControlSize;\n clearLabel: string;\n summary?: string;\n compactSummary?: string;\n useCompactSummary?: boolean;\n contentRef?: (element: HTMLDivElement | null) => void;\n summaryMeasureRef?: (element: HTMLElement | null) => void;\n clearRef?: (element: HTMLButtonElement | null) => void;\n onClear: (event: MouseEvent) => void;\n}\n\nexport const ChoiceFooter: FunctionalComponent<ChoiceFooterProps> = ({\n size = 'md',\n clearLabel,\n summary,\n compactSummary,\n useCompactSummary = false,\n contentRef,\n summaryMeasureRef,\n clearRef,\n onClear,\n}) => (\n <div class=\"ds-choice-footer\">\n <div\n ref={element => contentRef?.((element as HTMLDivElement) ?? null)}\n class={`ds-choice-footer__content ds-control--${size}`}\n >\n {summary && [\n <ds-text\n key=\"summary\"\n class=\"ds-choice-footer__summary\"\n as=\"span\"\n variant={CONTROL_TEXT_VARIANT[size]}\n color=\"secondary\"\n >\n {useCompactSummary ? (compactSummary ?? summary) : summary}\n </ds-text>,\n <ds-text\n key=\"summary-measure\"\n ref={element => summaryMeasureRef?.((element as HTMLElement) ?? null)}\n class=\"ds-choice-footer__summary-measure\"\n as=\"span\"\n variant={CONTROL_TEXT_VARIANT[size]}\n color=\"secondary\"\n aria-hidden=\"true\"\n >\n {summary}\n </ds-text>,\n ]}\n <button\n ref={element => clearRef?.((element as HTMLButtonElement) ?? null)}\n type=\"button\"\n class=\"ds-choice-footer__clear ds-text-action ds-focus-ring\"\n onClick={onClear}\n >\n <ds-text as=\"span\" variant={CONTROL_TEXT_VARIANT[size]} color=\"inherit\">\n {clearLabel}\n </ds-text>\n </button>\n </div>\n </div>\n);\n\ninterface ChoiceActionFooterProps {\n size?: ControlSize;\n label: string;\n onAction: (event: MouseEvent) => void;\n}\n\nexport const ChoiceActionFooter: FunctionalComponent<ChoiceActionFooterProps> = ({\n size = 'md',\n label,\n onAction,\n}) => (\n <div class=\"ds-choice-footer\">\n <div class={`ds-choice-footer__content ds-control--${size}`}>\n <button\n type=\"button\"\n class=\"ds-choice-footer__action ds-text-action ds-focus-ring\"\n onClick={onAction}\n >\n <ds-text as=\"span\" variant={CONTROL_TEXT_VARIANT[size]} color=\"inherit\">\n {label}\n </ds-text>\n </button>\n </div>\n </div>\n);\n\ninterface ChoiceOptionRowProps {\n size?: ControlSize;\n id: string;\n option: ChoiceOption;\n selected: boolean;\n active: boolean;\n focusRingVisible: boolean;\n usesSubtext: boolean;\n leading?: VNode;\n supporting?: VNode;\n action?: VNode;\n actionOpen?: boolean;\n popupRole?: 'listbox' | 'grid';\n tabIndex?: number;\n onFocus?: () => void;\n onKeyDown?: (event: KeyboardEvent) => void;\n onHover: () => void;\n onSelect: () => void;\n}\n\nexport const ChoiceOptionRow: FunctionalComponent<ChoiceOptionRowProps> = ({\n size = 'md',\n id,\n option,\n selected,\n active,\n focusRingVisible,\n usesSubtext,\n leading,\n supporting,\n action,\n actionOpen = false,\n popupRole = 'listbox',\n tabIndex,\n onFocus,\n onKeyDown,\n onHover,\n onSelect,\n}) => {\n const grid = popupRole === 'grid';\n return (\n <div\n id={grid ? id : undefined}\n role={grid ? 'row' : undefined}\n aria-selected={grid ? String(selected) : undefined}\n aria-disabled={grid && option.isInactive ? 'true' : undefined}\n class={{\n 'select-option-row': true,\n 'select-option-row--has-action': !!action,\n 'select-option-row--action-open': actionOpen,\n 'select-option-row--keyboard-active': !!action && active && focusRingVisible,\n }}\n >\n <div\n id={grid ? undefined : id}\n class={{\n 'select-option': true,\n 'ds-choice-item': true,\n 'ds-control-frame': true,\n [`ds-control--${size}`]: true,\n 'ds-focus-ring-inset': true,\n 'ds-focus-ring--visible': active && focusRingVisible,\n 'ds-interaction-fill': !option.isInactive,\n 'ds-interaction-fill--selected': selected && !option.isInactive,\n 'ds-control-inactive': !!option.isInactive,\n 'select-option--active': active,\n }}\n role={grid ? 'gridcell' : 'option'}\n tabIndex={tabIndex}\n aria-selected={grid ? undefined : String(selected)}\n aria-disabled={!grid && option.isInactive ? 'true' : undefined}\n onMouseDown={event => event.preventDefault()}\n onFocus={onFocus}\n onKeyDown={onKeyDown}\n onMouseMove={() => {\n if (!option.isInactive) onHover();\n }}\n onClick={onSelect}\n >\n {leading}\n <div class=\"ds-choice-item__content ds-interaction-fill__content\">\n <ds-text\n class=\"ds-choice-item__label ds-control-label-box\"\n as=\"span\"\n variant={CONTROL_TEXT_VARIANT[size]}\n color={selected ? 'primary' : 'secondary'}\n >\n {option.label}\n </ds-text>\n {supporting ??\n (usesSubtext ? (\n <ds-text\n class=\"ds-choice-item__subtext ds-control-label-box\"\n as=\"span\"\n variant={CONTROL_SUPPORTING_TEXT_VARIANT[size]}\n color=\"secondary\"\n >\n {option.subtext?.trim() || '—'}\n </ds-text>\n ) : null)}\n </div>\n </div>\n {action && (\n <div\n class=\"select-option-row__action ds-control-elevation ds-control-elevation--md ds-control-elevation--press-scale\"\n role={grid ? 'gridcell' : undefined}\n >\n {action}\n </div>\n )}\n </div>\n );\n};\n","@import '../../utils/radius.css';\n@import '../../utils/choice-list.css';\n@import '../../utils/control-parts.css';\n@import '../../utils/text-field-support.css';\n@import '../../utils/control-width.css';\n@import '../../utils/field-stack.css';\n@import '../../utils/typography.css';\n\n:host(.input-host) {\n display: inline-flex;\n --ds-input-fg: var(--color-foreground-primary);\n --ds-input-placeholder: var(--color-foreground-secondary);\n --ds-input-placeholder-active: var(--color-foreground-quaternary);\n --ds-input-adornment-fg: var(--color-foreground-secondary);\n --ds-input-border: var(--color-border-secondary);\n}\n\n:host(.ds-control-width--fill),\n:host(.ds-control-width--fill) .input-control {\n width: 100%;\n}\n\n.input-control {\n overflow: hidden;\n background: transparent;\n border: none;\n border-radius: var(--ds-control-radius, var(--dimension-radius-025));\n color: var(--ds-input-fg);\n}\n\n.input-control--bordered {\n --ds-interaction-border-width: var(--dimension-stroke-width-012);\n --ds-interaction-border-color: var(--ds-input-border);\n}\n\n.input-control--error {\n --ds-interaction-border-width: var(--dimension-stroke-width-018);\n --ds-interaction-border-color: var(--color-border-bold-negative);\n}\n\n.input-control--bordered:focus-within:not(.input-control--error) {\n --ds-interaction-border-width: var(--dimension-stroke-width-018);\n --ds-interaction-border-color: var(--color-border-bold-brand);\n}\n\n:host(.ds-control-inactive) .input-control::after {\n background: transparent;\n}\n\n.native-input {\n position: relative;\n z-index: 2;\n flex: 1 1 auto;\n min-width: 0;\n height: 100%;\n background: transparent;\n border: none;\n border-radius: inherit;\n outline: none;\n color: var(--ds-input-fg);\n font-family: inherit;\n text-overflow: ellipsis;\n -webkit-appearance: none;\n appearance: none;\n}\n\n.native-input--align-start {\n text-align: start;\n}\n\n.native-input--align-end {\n text-align: end;\n}\n\n/* Native arrows stay hidden whether optional inset actions are shown or not. */\n.native-input[type='number'] {\n -moz-appearance: textfield;\n}\n\n.native-input[type='number']::-webkit-inner-spin-button,\n.native-input[type='number']::-webkit-outer-spin-button {\n margin: 0;\n -webkit-appearance: none;\n}\n\n.input-control--stepper.input-control--align-start {\n padding-inline-end: var(--dimension-space-025);\n}\n\n.input-control--stepper.input-control--align-end {\n padding-inline-start: var(--dimension-space-025);\n}\n\n.input-control__number-stepper {\n position: relative;\n z-index: 2;\n display: inline-flex;\n align-items: center;\n flex-shrink: 0;\n gap: var(--dimension-space-025);\n}\n\n:host(.ds-control-inactive) .input-control__number-step {\n --effect-opacity-medium: 1;\n}\n\n.native-input:disabled {\n cursor: not-allowed;\n}\n\n.native-input:read-only:not(:disabled) {\n cursor: default;\n}\n\n.native-input::placeholder {\n color: var(--ds-input-placeholder);\n}\n\n.native-input:focus::placeholder {\n color: var(--ds-input-placeholder-active);\n}\n\n.native-input[type='search']::-webkit-search-cancel-button,\n.native-input[type='search']::-webkit-search-decoration {\n display: none;\n}\n\n.input-control__prefix,\n.input-control__prefix-text,\n.input-control__suffix {\n position: relative;\n z-index: 2;\n color: var(--ds-input-adornment-fg);\n}\n\n.input-control__prefix-text,\n.input-control__suffix {\n display: inline-flex;\n align-items: center;\n flex-shrink: 0;\n white-space: nowrap;\n}\n\n.input-control__prefix-text--control,\n.input-control__suffix--control {\n align-self: stretch;\n min-width: 0;\n white-space: normal;\n gap: var(--dimension-space-025);\n}\n\n.input-control__prefix-text--empty,\n.input-control__suffix--empty {\n display: none;\n}\n\n/* Nested inset controls keep 2px on the outer edge, matching trailing actions. */\n.input-control--prefix-control {\n padding-inline-start: var(--dimension-space-025);\n}\n\n.input-control--suffix-control {\n padding-inline-end: var(--dimension-space-025);\n}\n\n.input-control__adornment-divider {\n position: relative;\n z-index: 2;\n pointer-events: none;\n}\n\n/*\n * Select side stays on the 2px inset remainder. Value side matches a\n * non-prefixed field's inline padding from its border.\n */\n.input-control__prefix-text--control .input-control__adornment-divider {\n margin-inline-end: calc(var(--ds-control-padding-inline) - var(--ds-control-gap));\n}\n\n.input-control__suffix--control .input-control__adornment-divider {\n margin-inline-start: calc(var(--ds-control-padding-inline) - var(--ds-control-gap));\n}\n\n/* The input frame owns the nested clear action's cross-axis alignment. */\n.input-control > .input-control__clear {\n position: relative;\n z-index: 2;\n flex-shrink: 0;\n align-self: center;\n}\n\n.input-control.ds-control--lg:has(.input-control__clear),\n.input-control.ds-control--md:has(.input-control__clear),\n.input-control.ds-control--sm:has(.input-control__clear) {\n padding-right: var(--dimension-space-050);\n}\n\n.input-control.ds-control--xs:has(.input-control__clear) {\n padding-right: 0;\n}\n\n/* Same-size inset trailing action as date/time: 2px remaining on the end edges. */\n.input-control > .input-control__trailing-action {\n position: relative;\n z-index: 2;\n flex-shrink: 0;\n align-self: center;\n}\n\n:host(.ds-control-inactive) .input-control > .input-control__trailing-action {\n --effect-opacity-medium: 1;\n}\n\n.input-control:has(.input-control__trailing-action) {\n padding-inline-end: var(--dimension-space-025);\n}\n\n.error-text {\n width: 100%;\n}\n\n@media (forced-colors: active) {\n .input-control--bordered:focus-within:not(.input-control--error)::after {\n outline-color: var(--ds-forced-color-selected);\n }\n\n .input-control--error::after {\n outline-style: dashed;\n }\n}\n\n.input-control--tokenized .native-input {\n box-sizing: border-box;\n padding-block: 0;\n}\n\n.input-control--has-tokens {\n --ds-input-token-inset: var(--dimension-space-050);\n\n height: auto;\n min-height: var(--ds-control-height);\n flex-wrap: wrap;\n padding: var(--ds-input-token-inset);\n row-gap: var(--dimension-space-050);\n}\n\n/* Chip stops at md; xs retains the shared single-inset fallback. */\n.input-control--has-tokens.ds-control--lg {\n --ds-input-token-inset: var(--dimension-space-100);\n}\n.input-control--has-tokens.ds-control--xs {\n --ds-input-token-inset: var(--dimension-space-025);\n}\n\n.input-control--has-tokens .native-input {\n flex: 1 1 var(--dimension-size-800);\n width: 0;\n min-width: min(var(--dimension-size-800), 100%);\n height: calc(var(--ds-control-height) - var(--ds-input-token-inset) * 2);\n}\n.input-token {\n position: relative;\n z-index: 2;\n max-width: 100%;\n}\n.input-suggestions__list {\n overflow: auto;\n max-height: calc(var(--dimension-size-base) * 20);\n padding: var(--dimension-space-050);\n}\n","import {\n AttachInternals,\n Component,\n Prop,\n State,\n Event,\n EventEmitter,\n Element,\n Method,\n Watch,\n h,\n Host,\n} from '@stencil/core';\nimport {\n controlWidthClass,\n CONTROL_TEXT_VARIANT,\n DEFAULT_REQUIRED_MESSAGE,\n restoreStringFormState,\n restoreStringArrayFormState,\n setRepeatedFormControlValue,\n resolveCssLengthPx,\n TOKEN_DEFAULTS,\n setFormControlValue,\n type ControlWidth,\n} from '../../utils';\n\nimport { AnchoredPositionController } from '../../utils/anchored-position-controller';\nimport { AnchoredOverlayInteractionController } from '../../utils/anchored-overlay-interaction-controller';\nimport { resolveAnchoredOverlayBoundaryRect } from '../../utils/anchored-overlay-boundary';\nimport { ChoiceOptionRow } from '../../utils/choice-list-parts';\nimport { lengthLimit, textConstraintValidity } from '../../utils/text-constraints';\n\nexport type InputType = 'text' | 'email' | 'tel' | 'url' | 'search' | 'password' | 'number';\nexport type InputSize = 'lg' | 'md' | 'sm' | 'xs';\nexport type InputWidth = ControlWidth;\nexport type InputTextAlign = 'start' | 'end';\n\nconst CONTROL_ADORNMENT = 'ds-select, ds-button-unfilled, ds-button-filled';\n\nfunction isControlAdornment(element: Element): boolean {\n return element.matches(CONTROL_ADORNMENT) || Boolean(element.querySelector(CONTROL_ADORNMENT));\n}\n\nconst ICON_SIZE: Record<InputSize, 'lg' | 'md' | 'sm' | 'xs'> = {\n lg: 'lg',\n md: 'md',\n sm: 'sm',\n xs: 'xs',\n};\n\nconst CLEAR_BUTTON_SIZE: Record<InputSize, 'md' | 'sm' | 'xs'> = {\n lg: 'md',\n md: 'sm',\n sm: 'xs',\n xs: 'xs',\n};\n\nlet idCounter = 0;\n\n@Component({\n tag: 'ds-input',\n styleUrl: 'Input.css',\n scoped: true,\n formAssociated: true,\n})\nexport class Input {\n @Element() el!: HTMLElement;\n @AttachInternals() internals!: ElementInternals;\n\n private generatedId = `ds-input-${++idCounter}`;\n private errorId = `${this.generatedId}-error`;\n\n @Prop({ mutable: true }) value: string = '';\n @Prop({ reflect: true }) name: string | undefined;\n @Prop({ reflect: true }) form: string | undefined;\n @Prop({ reflect: true }) disabled: boolean = false;\n /** Keeps the value focusable and submittable while preventing edits. */\n @Prop({ reflect: true }) readOnly: boolean = false;\n @Prop({ reflect: true }) required: boolean = false;\n @Prop() requiredMessage: string = DEFAULT_REQUIRED_MESSAGE;\n @Prop() clearLabel: string = 'Clear';\n @Prop() showPasswordLabel: string = 'Show password';\n @Prop() hidePasswordLabel: string = 'Hide password';\n /** Minimum non-empty text length, in native UTF-16 code units. */\n @Prop() minLength: number | undefined;\n /** Maximum text length. A visible counter accompanies this constraint by default. */\n @Prop() maxLength: number | undefined;\n /** Error preserves extra text; restrict uses the browser's hard input limit. */\n @Prop() lengthBehavior: 'error' | 'restrict' = 'error';\n @Prop() showCharacterCount: boolean = true;\n /** Native whole-value regular expression for text-like input types. */\n @Prop() pattern: string | undefined;\n @Prop() patternMessage: string | undefined;\n /** Optional local suggestions; free text always remains valid. Used with text/search fields. */\n @Prop() suggestions: string[] = [];\n /** Free-text tokens entered with Enter/comma and removable chips. Used with text/search fields. */\n @Prop({ reflect: true }) tokenized: boolean = false;\n /** Committed values; value remains the editable draft when tokenized. */\n @Prop({ mutable: true }) tokens: string[] = [];\n @Prop() removeTokenLabel: string = 'Remove {label}';\n @Prop() placeholder: string | undefined;\n @Prop() type: InputType = 'text';\n /** Minimum accepted value when type is number. */\n @Prop() min: number | undefined;\n /** Maximum accepted value when type is number. */\n @Prop() max: number | undefined;\n /** Numeric increment used by native stepping and constraint validation. */\n @Prop() step: number | undefined;\n /** Show inset increment/decrement actions for number fields. Native numeric editing remains available when hidden. */\n @Prop() showStepper: boolean = true;\n @Prop() incrementLabel: string = 'Increase value';\n @Prop() decrementLabel: string = 'Decrease value';\n /** Align the editable value; number steppers sit on the opposite inline edge. */\n @Prop() textAlign: InputTextAlign = 'start';\n /** Native browser autofill hint. */\n @Prop({ attribute: 'autocomplete' }) autoComplete: string | undefined;\n /** Preferred virtual keyboard without changing the value semantics. */\n @Prop({ attribute: 'inputmode' }) inputMode: string = '';\n /** Preferred virtual-keyboard action label. */\n @Prop({ attribute: 'enterkeyhint' }) enterKeyHint: string = '';\n /** Control density. */\n @Prop() size: InputSize = 'md';\n /** Width fit — fill the parent (default) or hug the available content. */\n @Prop() width: InputWidth = 'fill';\n /** Show the standard inset border, including focused and invalid strokes. */\n @Prop() hasBorder: boolean = true;\n /** Show the standard hover and pressed fill when the field is not embedded in interactive chrome. */\n @Prop() hasInteractionFill: boolean = true;\n /** Optional leading icon name. */\n @Prop() icon: string | undefined;\n @Prop() isInactive: boolean = false;\n @Prop() autoFocus: boolean = false;\n @Prop() error: boolean = false;\n @Prop() errorMessage: string | undefined;\n /** Associates the internal input with an external <label>. */\n @Prop() inputId: string | undefined;\n @Prop({ attribute: 'aria-label' }) ariaLabel: string | null = null;\n @Prop({ attribute: 'aria-labelledby' }) ariaLabelledby: string | undefined;\n @Prop({ attribute: 'aria-describedby' }) ariaDescribedby: string | undefined;\n /** Identifies the results or popup controlled by the editable field. */\n @Prop({ attribute: 'aria-controls' }) ariaControls: string | undefined;\n /** Identifies the active descendant while focus remains in the editable field. */\n @Prop({ attribute: 'aria-activedescendant' }) ariaActiveDescendant: string | undefined;\n\n @Event() dsChange!: EventEmitter<string>;\n @Event() dsTokensChange!: EventEmitter<string[]>;\n @Event() dsSuggestionSelect!: EventEmitter<string>;\n @Event() dsClear!: EventEmitter<void>;\n\n @State() private constraintMessage = '';\n @State() private submitted = false;\n private get managedByField(): boolean {\n return Boolean(this.el.closest('ds-field'));\n }\n private get visibleConstraintMessage(): string {\n return this.touched ||\n this.submitted ||\n (this.maxLength !== undefined && this.value.length > this.maxLength)\n ? this.constraintMessage\n : '';\n }\n private get hasCounter(): boolean {\n return (\n this.showCharacterCount && lengthLimit(this.maxLength) !== undefined && this.type !== 'number'\n );\n }\n\n @State() private suggestionsOpen = false;\n @State() private activeSuggestion = -1;\n @State() private suggestionPosition = { x: 0, y: 0 };\n @State() private suggestionsReady = false;\n private controlEl?: HTMLElement;\n private initialTokens: string[] = [];\n private get supportsTextFeatures(): boolean {\n return this.type === 'text' || this.type === 'search';\n }\n private get isTokenized(): boolean {\n return this.tokenized && this.supportsTextFeatures;\n }\n private get filteredSuggestions(): string[] {\n if (!this.supportsTextFeatures) return [];\n const query = this.value.trim().toLocaleLowerCase();\n return [...new Set(this.suggestions)].filter(\n value =>\n value.toLocaleLowerCase().includes(query) &&\n (!this.isTokenized || !this.tokens.includes(value))\n );\n }\n private readonly suggestionPlacement = new AnchoredPositionController({\n getAnchor: () => this.controlEl ?? null,\n getPopup: () => this.el.querySelector<HTMLElement>('.input-suggestions'),\n getOwnerDocument: () => this.el.ownerDocument,\n measure: (anchor, popup) => {\n if (!this.suggestionsOpen) return null;\n const gap = resolveCssLengthPx(TOKEN_DEFAULTS.space050, TOKEN_DEFAULTS.space050);\n return {\n anchorRect: anchor.getBoundingClientRect(),\n popupWidth: popup.offsetWidth,\n popupHeight: popup.offsetHeight,\n side: 'bottom',\n align: 'start',\n sideOffsetPx: gap,\n alignOffsetPx: 0,\n viewportPadPx: gap,\n viewportWidth: window.innerWidth,\n viewportHeight: window.innerHeight,\n collisionRect: resolveAnchoredOverlayBoundaryRect(anchor),\n };\n },\n apply: ({ x, y }) => {\n this.suggestionPosition = { x, y };\n },\n onReady: () => {\n this.suggestionsReady = true;\n },\n topLayer: true,\n observeResize: true,\n liveUpdate: 'frame',\n });\n private readonly suggestionInteraction = new AnchoredOverlayInteractionController({\n getAnchor: () => this.controlEl ?? null,\n getPopup: () => this.el.querySelector<HTMLElement>('.input-suggestions'),\n getOwnerDocument: () => this.el.ownerDocument,\n onOutsideActivation: () => this.closeSuggestions(),\n });\n\n private initialValue = '';\n private inputEl?: HTMLInputElement;\n @State() private formDisabled = false;\n @State() private hasPrefix = false;\n @State() private hasPrefixControl = false;\n @State() private hasSuffix = false;\n @State() private hasSuffixControl = false;\n @State() private focused = false;\n @State() private touched = false;\n @State() private passwordRevealed = false;\n private restorePasswordFocus = false;\n\n componentWillLoad() {\n this.value = String(this.value ?? '');\n this.tokens = Array.isArray(this.tokens) ? this.tokens : [];\n this.initialValue = this.value;\n this.initialTokens = [...this.tokens];\n this.syncAdornmentSlots();\n this.syncFormValue();\n }\n\n disconnectedCallback() {\n this.closeSuggestions();\n }\n\n componentDidRender() {\n this.syncAdornmentSlots();\n if (this.suggestionsOpen) this.suggestionPlacement.schedule();\n if (!this.restorePasswordFocus) return;\n this.restorePasswordFocus = false;\n this.inputEl?.focus({ preventScroll: true });\n }\n\n @Watch('type')\n onTypeChange() {\n if (this.type !== 'password') this.passwordRevealed = false;\n }\n\n private syncAdornmentSlots() {\n const prefixNodes = [...this.el.querySelectorAll('[slot=\"prefix\"]')];\n const suffixNodes = [...this.el.querySelectorAll('[slot=\"suffix\"]')];\n const hasPrefix = prefixNodes.length > 0;\n const hasPrefixControl = prefixNodes.some(isControlAdornment);\n const hasSuffix = suffixNodes.length > 0;\n const hasSuffixControl = suffixNodes.some(isControlAdornment);\n if (hasPrefix !== this.hasPrefix) this.hasPrefix = hasPrefix;\n if (hasPrefixControl !== this.hasPrefixControl) this.hasPrefixControl = hasPrefixControl;\n if (hasSuffix !== this.hasSuffix) this.hasSuffix = hasSuffix;\n if (hasSuffixControl !== this.hasSuffixControl) this.hasSuffixControl = hasSuffixControl;\n }\n\n @Watch('tokens')\n @Watch('tokenized')\n @Watch('name')\n @Watch('value')\n @Watch('disabled')\n @Watch('isInactive')\n @Watch('required')\n @Watch('readOnly')\n @Watch('minLength')\n @Watch('maxLength')\n @Watch('requiredMessage')\n @Watch('pattern')\n @Watch('patternMessage')\n @Watch('type')\n @Watch('min')\n @Watch('max')\n @Watch('step')\n syncFormValue() {\n if (typeof this.value !== 'string') {\n this.value = String(this.value ?? '');\n }\n if (!Array.isArray(this.tokens)) this.tokens = [];\n const inactive = this.isInactive || this.disabled || this.formDisabled;\n if (this.isTokenized)\n setRepeatedFormControlValue(this.internals, this.name, this.tokens, { inactive });\n else setFormControlValue(this.internals, this.value, { inactive });\n let validity =\n inactive || this.readOnly\n ? { flags: {}, message: '' }\n : textConstraintValidity({\n ...this.textConstraints(),\n required: this.required && !this.isTokenized,\n });\n if (this.isTokenized && !inactive && !this.readOnly) {\n const invalidToken = this.tokens\n .map(value => textConstraintValidity({ ...this.textConstraints(), value, required: false }))\n .find(result => result.message);\n if (invalidToken) validity = invalidToken;\n else if (this.required && this.tokens.length === 0)\n validity = { flags: { valueMissing: true }, message: this.requiredMessage };\n else if (this.value.trim() && !validity.message)\n validity = { flags: { customError: true }, message: 'Press Enter to add this value.' };\n }\n if (inactive || this.readOnly) this.closeSuggestions();\n this.constraintMessage = validity.message;\n this.internals.setValidity(validity.flags, validity.message);\n }\n\n private textConstraints() {\n return {\n value: this.value,\n type: this.type,\n required: this.required,\n requiredMessage: this.requiredMessage,\n minLength: this.minLength,\n maxLength: this.maxLength,\n pattern: this.pattern,\n patternMessage: this.patternMessage,\n min: this.min,\n max: this.max,\n step: this.step,\n };\n }\n\n formDisabledCallback(disabled: boolean) {\n this.formDisabled = disabled;\n this.syncFormValue();\n }\n\n formResetCallback() {\n this.value = this.initialValue;\n this.tokens = [...this.initialTokens];\n this.closeSuggestions();\n this.touched = false;\n this.submitted = false;\n this.passwordRevealed = false;\n }\n\n formStateRestoreCallback(state: string | File | FormData | null) {\n if (this.isTokenized) this.tokens = restoreStringArrayFormState(state);\n else this.value = restoreStringFormState(state);\n }\n\n @Method()\n async setFocus() {\n this.inputEl?.focus();\n }\n\n private handleInput = (e: Event) => {\n this.value = (e.target as HTMLInputElement).value;\n this.dsChange.emit(this.value);\n this.activeSuggestion = -1;\n this.openSuggestions();\n };\n\n private handleFocus = () => {\n this.focused = true;\n };\n\n private handleBlur = () => {\n this.focused = false;\n this.touched = true;\n this.closeSuggestions();\n };\n\n private handleClear = () => {\n this.value = '';\n if (this.isTokenized) {\n this.tokens = [];\n this.dsTokensChange.emit([]);\n }\n this.closeSuggestions();\n this.dsChange.emit('');\n this.dsClear.emit();\n this.inputEl?.focus();\n };\n\n private handleTogglePassword = () => {\n this.passwordRevealed = !this.passwordRevealed;\n this.restorePasswordFocus = true;\n };\n\n @Watch('suggestions')\n onSuggestionsChanged() {\n this.activeSuggestion = -1;\n if (this.focused && this.value) this.openSuggestions();\n }\n\n private openSuggestions() {\n if (\n this.disabled ||\n this.formDisabled ||\n this.isInactive ||\n this.readOnly ||\n !this.filteredSuggestions.length\n ) {\n this.closeSuggestions();\n return;\n }\n if (this.suggestionsOpen) return;\n this.suggestionsReady = false;\n this.suggestionsOpen = true;\n this.suggestionInteraction.connect();\n this.suggestionPlacement.observe();\n this.suggestionPlacement.schedule();\n }\n private closeSuggestions() {\n this.suggestionPlacement.unobserve();\n this.suggestionInteraction.disconnect();\n const popup = this.el.querySelector<HTMLElement>('.input-suggestions');\n if (popup?.matches(':popover-open')) popup.hidePopover();\n this.suggestionsOpen = false;\n this.activeSuggestion = -1;\n }\n private addTokens(text: string) {\n if (this.readOnly || this.disabled || this.isInactive || this.formDisabled) return;\n const values = text\n .split(/[,\\n\\r]+/)\n .map(value => {\n const trimmed = value.trim();\n const max = lengthLimit(this.maxLength);\n return this.lengthBehavior === 'restrict' && max !== undefined\n ? trimmed.slice(0, max)\n : trimmed;\n })\n .filter(Boolean);\n if (!values.length) return;\n this.tokens = [...new Set([...this.tokens, ...values])];\n this.value = '';\n this.dsTokensChange.emit([...this.tokens]);\n this.dsChange.emit('');\n this.closeSuggestions();\n }\n private removeToken(index: number) {\n if (this.readOnly || this.disabled || this.isInactive || this.formDisabled) return;\n this.tokens = this.tokens.filter((_, tokenIndex) => index !== tokenIndex);\n this.dsTokensChange.emit([...this.tokens]);\n this.inputEl?.focus();\n }\n private selectSuggestion(value: string) {\n if (this.isTokenized) this.addTokens(value);\n else {\n const max = lengthLimit(this.maxLength);\n this.value =\n this.lengthBehavior === 'restrict' && max !== undefined ? value.slice(0, max) : value;\n this.dsChange.emit(this.value);\n }\n this.dsSuggestionSelect.emit(value);\n this.closeSuggestions();\n this.inputEl?.focus();\n }\n private handleTextKeyDown = (event: KeyboardEvent) => {\n if (event.isComposing || this.readOnly || this.disabled || this.isInactive || this.formDisabled)\n return;\n if ((event.key === 'ArrowDown' || event.key === 'ArrowUp') && this.filteredSuggestions.length) {\n event.preventDefault();\n this.openSuggestions();\n const length = this.filteredSuggestions.length;\n this.activeSuggestion =\n this.activeSuggestion < 0\n ? event.key === 'ArrowDown'\n ? 0\n : length - 1\n : Math.max(\n 0,\n Math.min(length - 1, this.activeSuggestion + (event.key === 'ArrowDown' ? 1 : -1))\n );\n requestAnimationFrame(() =>\n this.el\n .querySelector(`#${this.generatedId}-suggestion-${this.activeSuggestion}`)\n ?.scrollIntoView({ block: 'nearest' })\n );\n } else if (event.key === 'Escape' && this.suggestionsOpen) {\n event.preventDefault();\n event.stopPropagation();\n this.closeSuggestions();\n } else if (event.key === 'Enter' && this.suggestionsOpen && this.activeSuggestion >= 0) {\n event.preventDefault();\n this.selectSuggestion(this.filteredSuggestions[this.activeSuggestion]);\n } else if (\n this.isTokenized &&\n (event.key === 'Enter' || event.key === ',') &&\n this.value.trim()\n ) {\n event.preventDefault();\n this.addTokens(this.value);\n } else if (this.isTokenized && event.key === 'Backspace' && !this.value && this.tokens.length) {\n event.preventDefault();\n this.removeToken(this.tokens.length - 1);\n } else if (event.key === 'Tab') this.closeSuggestions();\n };\n private handlePaste = (event: ClipboardEvent) => {\n if (!this.isTokenized || this.readOnly || this.disabled || this.isInactive || this.formDisabled)\n return;\n const pasted = event.clipboardData?.getData('text') ?? '';\n if (!/[,\\r\\n]/.test(pasted)) return;\n event.preventDefault();\n const start = this.inputEl?.selectionStart ?? this.value.length;\n const end = this.inputEl?.selectionEnd ?? start;\n this.addTokens(this.value.slice(0, start) + pasted + this.value.slice(end));\n };\n\n private numericStepDisabled(direction: 1 | -1): boolean {\n if (this.value.trim() === '') return false;\n const value = Number(this.value);\n if (!Number.isFinite(value)) return false;\n if (direction > 0 && this.max !== undefined) return value >= this.max;\n if (direction < 0 && this.min !== undefined) return value <= this.min;\n return false;\n }\n\n private handleNumericStep = (direction: 1 | -1) => {\n const input = this.inputEl;\n if (!input || input.disabled || input.readOnly || this.numericStepDisabled(direction)) return;\n\n const previous = input.value;\n if (direction > 0) input.stepUp();\n else input.stepDown();\n input.focus({ preventScroll: true });\n if (input.value === previous) return;\n\n this.value = input.value;\n this.dsChange.emit(this.value);\n };\n\n private renderNumericStepper(inactive: boolean) {\n const incrementDisabled = inactive || this.readOnly || this.numericStepDisabled(1);\n const decrementDisabled = inactive || this.readOnly || this.numericStepDisabled(-1);\n\n return (\n <span class=\"input-control__number-stepper\">\n <ds-button-unfilled\n class=\"input-control__number-step input-control__number-step--increment\"\n variant=\"icon\"\n size={this.size}\n icon=\"Plus\"\n hasBorder={false}\n isInset\n isInactive={incrementDisabled}\n ariaLabel={this.incrementLabel}\n onDsClick={() => this.handleNumericStep(1)}\n />\n <ds-divider orientation=\"vertical\" length=\"var(--ds-control-icon)\" />\n <ds-button-unfilled\n class=\"input-control__number-step input-control__number-step--decrement\"\n variant=\"icon\"\n size={this.size}\n icon=\"Minus\"\n hasBorder={false}\n isInset\n isInactive={decrementDisabled}\n ariaLabel={this.decrementLabel}\n onDsClick={() => this.handleNumericStep(-1)}\n />\n </span>\n );\n }\n\n render() {\n const inputId = this.inputId ?? this.generatedId;\n const inactive = this.isInactive || this.disabled || this.formDisabled;\n const filled = this.value.length > 0 || (this.isTokenized && this.tokens.length > 0);\n const dirty =\n this.value !== this.initialValue ||\n (this.isTokenized && JSON.stringify(this.tokens) !== JSON.stringify(this.initialTokens));\n const showClear = this.type === 'search' && filled && !inactive && !this.readOnly;\n const showPasswordToggle = this.type === 'password';\n const nativeType = showPasswordToggle && this.passwordRevealed ? 'text' : this.type;\n const message =\n this.error && this.errorMessage ? this.errorMessage : this.visibleConstraintMessage;\n const invalid = this.error || Boolean(this.visibleConstraintMessage);\n const showError = Boolean(message) && !this.managedByField;\n const showCounter = this.hasCounter && !this.managedByField;\n const textVariant = CONTROL_TEXT_VARIANT[this.size];\n const iconSize = ICON_SIZE[this.size];\n const numeric = this.type === 'number';\n const showNumericStepper = numeric && this.showStepper;\n const resolvedAutoComplete = this.autoComplete ?? (this.type === 'search' ? 'off' : undefined);\n const suppressBrowserChrome = this.type === 'search' || this.type === 'password';\n\n const describedBy =\n [\n this.ariaDescribedby,\n showError ? this.errorId : undefined,\n showCounter ? `${this.generatedId}-count` : undefined,\n ]\n .filter(Boolean)\n .join(' ') || undefined;\n\n return (\n <Host\n class={{\n 'input-host': true,\n 'ds-field-stack': true,\n 'ds-field-stack--supporting-inset': !this.hasBorder,\n 'ds-control-inactive': inactive,\n [`ds-control--${this.size}`]: true,\n ...controlWidthClass(this.width),\n }}\n data-disabled={inactive ? '' : undefined}\n data-readonly={this.readOnly ? '' : undefined}\n data-required={this.required ? '' : undefined}\n data-invalid={invalid ? '' : undefined}\n data-constraint-message={this.visibleConstraintMessage || undefined}\n data-character-count={this.hasCounter ? String(this.value.length) : undefined}\n data-character-limit={this.hasCounter ? String(lengthLimit(this.maxLength)) : undefined}\n onInvalid={() => {\n this.submitted = true;\n }}\n data-filled={filled ? '' : undefined}\n data-focused={this.focused ? '' : undefined}\n data-dirty={dirty ? '' : undefined}\n data-touched={this.touched ? '' : undefined}\n >\n <div\n ref={element => {\n this.controlEl = element;\n }}\n class={{\n 'input-control--tokenized': this.isTokenized,\n 'input-control--has-tokens': this.isTokenized && this.tokens.length > 0,\n 'input-control': true,\n 'input-control--number': numeric,\n 'input-control--stepper': showNumericStepper,\n 'input-control--align-start': this.textAlign === 'start',\n 'input-control--align-end': this.textAlign === 'end',\n 'ds-control-frame': true,\n 'input-control--bordered': this.hasBorder,\n 'input-control--error': this.hasBorder && invalid,\n 'input-control--prefix-control': this.hasPrefixControl,\n 'input-control--suffix-control': this.hasSuffixControl,\n 'ds-interaction-fill': this.hasInteractionFill,\n [`ds-control--${this.size}`]: true,\n }}\n >\n {showNumericStepper && this.textAlign === 'end' && this.renderNumericStepper(inactive)}\n {this.icon && (\n <span\n class=\"input-control__prefix ds-control-icon-box ds-interaction-fill__content\"\n aria-hidden=\"true\"\n >\n <ds-icon name={this.icon} size={iconSize} color=\"inherit\" />\n </span>\n )}\n <span\n class={{\n 'input-control__prefix-text': true,\n 'ds-control-label-box': !this.hasPrefixControl,\n 'ds-interaction-fill__content': true,\n 'input-control__prefix-text--control': this.hasPrefixControl,\n 'input-control__prefix-text--empty': !this.hasPrefix,\n }}\n >\n <slot name=\"prefix\" onSlotchange={() => this.syncAdornmentSlots()} />\n {this.hasPrefixControl && (\n <ds-divider\n class=\"input-control__adornment-divider\"\n orientation=\"vertical\"\n length=\"var(--ds-control-icon)\"\n />\n )}\n </span>\n {this.isTokenized &&\n this.tokens.map((token, index) => (\n <ds-chip\n key={`${index}-${token}`}\n class=\"input-token\"\n label={token}\n size={this.size === 'lg' ? 'md' : this.size}\n isInset\n insetDepth=\"double\"\n isInactive={inactive || this.readOnly}\n removeLabel={this.removeTokenLabel}\n state={\n textConstraintValidity({\n ...this.textConstraints(),\n value: token,\n required: false,\n }).message\n ? 'error'\n : 'default'\n }\n onDsRemove={event => {\n event.stopPropagation();\n this.removeToken(index);\n }}\n />\n ))}\n <input\n ref={element => {\n this.inputEl = element;\n }}\n type={nativeType}\n id={inputId}\n value={this.value}\n placeholder={this.placeholder}\n min={numeric ? this.min : undefined}\n max={numeric ? this.max : undefined}\n step={numeric ? this.step : undefined}\n disabled={inactive}\n readOnly={this.readOnly}\n required={this.required && !this.isTokenized}\n minLength={lengthLimit(this.minLength)}\n maxLength={this.lengthBehavior === 'restrict' ? lengthLimit(this.maxLength) : undefined}\n pattern={this.pattern}\n autoFocus={this.autoFocus}\n autoComplete={resolvedAutoComplete}\n autoCapitalize={suppressBrowserChrome ? 'none' : undefined}\n autoCorrect={suppressBrowserChrome ? 'off' : undefined}\n spellcheck={suppressBrowserChrome ? false : undefined}\n inputMode={this.inputMode || undefined}\n enterKeyHint={this.enterKeyHint || undefined}\n class={`native-input native-input--align-${this.textAlign} ds-control-label-box ds-text--${textVariant.replace('text-', '')} ds-text--regular ds-interaction-fill__content`}\n aria-label={this.ariaLabel}\n aria-labelledby={this.ariaLabelledby}\n aria-describedby={describedBy}\n role={this.suggestions.length && this.supportsTextFeatures ? 'combobox' : undefined}\n aria-autocomplete={\n this.suggestions.length && this.supportsTextFeatures ? 'list' : undefined\n }\n aria-expanded={\n this.suggestions.length && this.supportsTextFeatures\n ? String(this.suggestionsOpen)\n : undefined\n }\n aria-controls={\n this.suggestionsOpen ? `${this.generatedId}-suggestions` : this.ariaControls\n }\n aria-activedescendant={\n this.suggestionsOpen && this.activeSuggestion >= 0\n ? `${this.generatedId}-suggestion-${this.activeSuggestion}`\n : this.ariaActiveDescendant\n }\n aria-invalid={invalid ? 'true' : undefined}\n onInput={this.handleInput}\n onKeyDown={this.handleTextKeyDown}\n onPaste={this.handlePaste}\n onFocus={this.handleFocus}\n onBlur={this.handleBlur}\n />\n <span\n class={{\n 'input-control__suffix': true,\n 'ds-control-label-box': !this.hasSuffixControl,\n 'input-control__suffix--control': this.hasSuffixControl,\n 'input-control__suffix--empty': !this.hasSuffix,\n }}\n >\n {this.hasSuffixControl && (\n <ds-divider\n class=\"input-control__adornment-divider\"\n orientation=\"vertical\"\n length=\"var(--ds-control-icon)\"\n />\n )}\n <slot name=\"suffix\" onSlotchange={() => this.syncAdornmentSlots()} />\n </span>\n {showClear && (\n <ds-button-unfilled\n class=\"input-control__clear\"\n variant=\"icon\"\n size={CLEAR_BUTTON_SIZE[this.size]}\n icon=\"CrossCircle\"\n hasBorder={false}\n rounded\n ariaLabel={this.clearLabel}\n onDsClick={this.handleClear}\n />\n )}\n {showPasswordToggle && (\n <ds-button-unfilled\n class=\"input-control__trailing-action\"\n variant=\"icon\"\n size={this.size}\n icon={this.passwordRevealed ? 'EyeStrikethrough' : 'Eye'}\n hasBorder={false}\n isInset\n isInactive={inactive}\n ariaLabel={this.passwordRevealed ? this.hidePasswordLabel : this.showPasswordLabel}\n onDsClick={this.handleTogglePassword}\n />\n )}\n {showNumericStepper && this.textAlign === 'start' && this.renderNumericStepper(inactive)}\n </div>\n {this.suggestionsOpen && (\n <div\n popover=\"manual\"\n class=\"input-suggestions ds-choice-popup\"\n style={{\n position: 'fixed',\n left: `${this.suggestionPosition.x}px`,\n top: `${this.suggestionPosition.y}px`,\n width: `${this.controlEl?.getBoundingClientRect().width ?? 0}px`,\n visibility: this.suggestionsReady ? 'visible' : 'hidden',\n }}\n onMouseDown={event => event.preventDefault()}\n >\n <div\n class=\"input-suggestions__list ds-choice-list\"\n id={`${this.generatedId}-suggestions`}\n role=\"listbox\"\n aria-label=\"Suggestions\"\n >\n {this.filteredSuggestions.map((value, index) => (\n <ChoiceOptionRow\n size={this.size}\n id={`${this.generatedId}-suggestion-${index}`}\n option={{ label: value, value }}\n selected={false}\n active={index === this.activeSuggestion}\n focusRingVisible={false}\n usesSubtext={false}\n tabIndex={-1}\n onHover={() => {\n this.activeSuggestion = index;\n }}\n onSelect={() => this.selectSuggestion(value)}\n />\n ))}\n </div>\n </div>\n )}\n {(showError || showCounter) && (\n <div class=\"text-field-support\">\n {showError && (\n <ds-text\n class=\"error-text\"\n as=\"div\"\n variant=\"text-body-small\"\n color=\"negative\"\n textId={this.errorId}\n role=\"alert\"\n >\n {message}\n </ds-text>\n )}\n {showCounter && (\n <ds-text\n as=\"span\"\n class=\"text-field-count\"\n variant=\"text-body-small\"\n color={invalid ? 'negative' : 'secondary'}\n textId={`${this.generatedId}-count`}\n >\n {this.value.length}/{lengthLimit(this.maxLength)}\n </ds-text>\n )}\n </div>\n )}\n </Host>\n );\n }\n}\n"],"mappings":"yrBAgBaA,EAAiE,EAC1EC,OAAO,KAAMC,UAASC,YAAWC,aACnCC,IAEAC,EAAA,OACEC,MAAO,uDAAuDH,GAAa,KAAKI,OAChFC,KAAK,UAAS,aACFN,GAEXD,EACCI,EAAA,WACEC,MAAO,oEAAoEN,IAC3ES,GAAG,MACHC,QAASC,EAAgCX,GACzCY,MAAM,UACNC,SAAQ,mBACI,QAEXZ,GAED,KACHG,GAqBE,MAAMU,EAAuD,EAClEd,OAAO,KACPe,mBAAmB,KACnBC,qBAAqB,KACrBC,QACAC,cACAhB,YACAiB,WACAC,mBACAC,WAAW,MACXC,WACAC,aACAC,gBACAC,UACAC,eAGErB,EAAA,OACEC,MAAO,CACL,gBAAiB,KACjB,yCAA0CS,IAG5CV,EAAA,YACEC,MAAM,yBACNqB,IAAKC,GAAWN,EAAUM,GAAkC,MAC5DC,KAAK,SACL7B,KAAMA,EACN8B,MAAM,OACNb,MAAOA,EACPC,YAAaA,EACba,KAAK,kBACLR,WAAYA,EACZS,WAAYX,EACZY,UAAW,MACXjB,mBAAoBA,EACpBd,UAAWA,GAAagB,EACxBgB,aAAcf,EACdgB,qBAAsBf,EACtBM,UAAWA,EACXU,WAAaC,IACXA,EAAMC,kBACNd,EAAca,EAAME,OAAO,EAE7BC,UAAYH,IACVA,EAAMC,kBACNb,KAAW,KAmBd,MAAMgB,EAAuD,EAClEzC,OAAO,KACPuB,aACAmB,UACAC,iBACAC,oBAAoB,MACpBC,aACAC,oBACAC,WACAtB,aAEApB,EAAA,OAAKC,MAAM,oBACTD,EAAA,OACEsB,IAAKC,GAAWiB,IAAcjB,GAA8B,MAC5DtB,MAAO,yCAAyCN,KAE/C0C,GAAW,CACVrC,EAAA,WACE2C,IAAI,UACJ1C,MAAM,4BACNG,GAAG,OACHC,QAASuC,EAAqBjD,GAC9BY,MAAM,aAELgC,EAAqBD,GAAkBD,EAAWA,GAErDrC,EAAA,WACE2C,IAAI,kBACJrB,IAAKC,GAAWkB,IAAqBlB,GAA2B,MAChEtB,MAAM,oCACNG,GAAG,OACHC,QAASuC,EAAqBjD,GAC9BY,MAAM,YAAW,cACL,QAEX8B,IAGLrC,EAAA,UACEsB,IAAKC,GAAWmB,IAAYnB,GAAiC,MAC7DC,KAAK,SACLvB,MAAM,uDACN4C,QAASzB,GAETpB,EAAA,WAASI,GAAG,OAAOC,QAASuC,EAAqBjD,GAAOY,MAAM,WAC3DW,MAaJ,MAAM4B,EAAmE,EAC9EnD,OAAO,KACPoD,QACAC,cAEAhD,EAAA,OAAKC,MAAM,oBACTD,EAAA,OAAKC,MAAO,yCAAyCN,KACnDK,EAAA,UACEwB,KAAK,SACLvB,MAAM,wDACN4C,QAASG,GAEThD,EAAA,WAASI,GAAG,OAAOC,QAASuC,EAAqBjD,GAAOY,MAAM,WAC3DwC,M,MA2BEE,EAA6D,EACxEtD,OAAO,KACPuD,KACAC,SACAC,WACAC,SACAC,mBACAC,cACAC,UACAC,aACAC,SACAC,aAAa,MACbC,YAAY,UACZC,WACAC,UACAzC,YACA0C,UACAC,eAEA,MAAMC,EAAOL,IAAc,OAC3B,OACE5D,EAAA,OACEkD,GAAIe,EAAOf,EAAKgB,UAChB/D,KAAM8D,EAAO,MAAQC,UAAS,gBACfD,EAAOE,OAAOf,GAAYc,UAAS,gBACnCD,GAAQd,EAAOxB,WAAa,OAASuC,UACpDjE,MAAO,CACL,oBAAqB,KACrB,kCAAmCyD,EACnC,iCAAkCC,EAClC,uCAAwCD,GAAUL,GAAUC,IAG9DtD,EAAA,OACEkD,GAAIe,EAAOC,UAAYhB,EACvBjD,MAAO,CACL,gBAAiB,KACjB,iBAAkB,KAClB,mBAAoB,KACpB,CAAC,eAAeN,KAAS,KACzB,sBAAuB,KACvB,yBAA0B0D,GAAUC,EACpC,uBAAwBH,EAAOxB,WAC/B,gCAAiCyB,IAAaD,EAAOxB,WACrD,wBAAyBwB,EAAOxB,WAChC,wBAAyB0B,GAE3BlD,KAAM8D,EAAO,WAAa,SAC1BJ,SAAUA,EAAQ,gBACHI,EAAOC,UAAYC,OAAOf,GAAS,iBAClCa,GAAQd,EAAOxB,WAAa,OAASuC,UACrDE,YAAapC,GAASA,EAAMqC,iBAC5BP,QAASA,EACTzC,UAAWA,EACXiD,YAAa,KACX,IAAKnB,EAAOxB,WAAYoC,GAAS,EAEnClB,QAASmB,GAERR,EACDxD,EAAA,OAAKC,MAAM,wDACTD,EAAA,WACEC,MAAM,6CACNG,GAAG,OACHC,QAASuC,EAAqBjD,GAC9BY,MAAO6C,EAAW,UAAY,aAE7BD,EAAOJ,OAETU,IACEF,EACCvD,EAAA,WACEC,MAAM,+CACNG,GAAG,OACHC,QAASC,EAAgCX,GACzCY,MAAM,aAEL4C,EAAOoB,SAASrE,QAAU,KAE3B,QAGTwD,GACC1D,EAAA,OACEC,MAAM,4GACNE,KAAM8D,EAAO,WAAaC,WAEzBR,GAGD,ECvTV,MAAMc,EAAW,IAAM,iqnCCqCvB,MAAMC,EAAoB,kDAE1B,SAASC,EAAmBnD,GAC1B,OAAOA,EAAQoD,QAAQF,IAAsBG,QAAQrD,EAAQsD,cAAcJ,GAC7E,CAEA,MAAMK,EAA0D,CAC9DC,GAAI,KACJC,GAAI,KACJC,GAAI,KACJC,GAAI,MAGN,MAAMC,EAA2D,CAC/DJ,GAAI,KACJC,GAAI,KACJC,GAAI,KACJC,GAAI,MAGN,IAAIE,EAAY,E,MAQHC,EAAKC,EAAA,MAAAD,UAAAE,EANlB,WAAAC,CAAAC,G,4PAUUC,KAAAC,YAAc,cAAcP,IAC5BM,KAAAE,QAAU,GAAGF,KAAKC,oBAEDD,KAAA9E,MAAgB,GAGhB8E,KAAA1E,SAAoB,MAEpB0E,KAAAG,SAAoB,MACpBH,KAAAI,SAAoB,MACrCJ,KAAAK,gBAA0BC,EAC1BN,KAAAxE,WAAqB,QACrBwE,KAAAO,kBAA4B,gBAC5BP,KAAAQ,kBAA4B,gBAM5BR,KAAAS,eAAuC,QACvCT,KAAAU,mBAA8B,KAK9BV,KAAAW,YAAwB,GAEPX,KAAAY,UAAqB,MAErBZ,KAAAa,OAAmB,GACpCb,KAAAc,iBAA2B,iBAE3Bd,KAAAlE,KAAkB,OAQlBkE,KAAAe,YAAuB,KACvBf,KAAAgB,eAAyB,iBACzBhB,KAAAiB,eAAyB,iBAEzBjB,KAAAkB,UAA4B,QAIFlB,KAAAmB,UAAoB,GAEjBnB,KAAAoB,aAAuB,GAEpDpB,KAAA/F,KAAkB,KAElB+F,KAAAjE,MAAoB,OAEpBiE,KAAA9D,UAAqB,KAErB8D,KAAA/E,mBAA8B,KAG9B+E,KAAA/D,WAAsB,MACtB+D,KAAAqB,UAAqB,MACrBrB,KAAAsB,MAAiB,MAIUtB,KAAA7F,UAA2B,KAa7C6F,KAAAuB,kBAAoB,GACpBvB,KAAAwB,UAAY,MAiBZxB,KAAAyB,gBAAkB,MAClBzB,KAAA0B,kBAAmB,EACnB1B,KAAA2B,mBAAqB,CAAEC,EAAG,EAAGC,EAAG,GAChC7B,KAAA8B,iBAAmB,MAE5B9B,KAAA+B,cAA0B,GAgBjB/B,KAAAgC,oBAAsB,IAAIC,EAA2B,CACpEC,UAAW,IAAMlC,KAAKmC,WAAa,KACnCC,SAAU,IAAMpC,KAAKqC,GAAGlD,cAA2B,sBACnDmD,iBAAkB,IAAMtC,KAAKqC,GAAGE,cAChCC,QAAS,CAACC,EAAQC,KAChB,IAAK1C,KAAKyB,gBAAiB,OAAO,KAClC,MAAMkB,EAAMC,EAAmBC,EAAeC,SAAUD,EAAeC,UACvE,MAAO,CACLC,WAAYN,EAAOO,wBACnBC,WAAYP,EAAMQ,YAClBC,YAAaT,EAAMU,aACnBC,KAAM,SACNC,MAAO,QACPC,aAAcZ,EACda,cAAe,EACfC,cAAed,EACfe,cAAeC,OAAOC,WACtBC,eAAgBF,OAAOG,YACvBC,cAAeC,EAAmCvB,GACnD,EAEHwB,MAAO,EAAGrC,IAAGC,QACX7B,KAAK2B,mBAAqB,CAAEC,IAAGC,IAAG,EAEpCqC,QAAS,KACPlE,KAAK8B,iBAAmB,IAAI,EAE9BqC,SAAU,KACVC,cAAe,KACfC,WAAY,UAEGrE,KAAAsE,sBAAwB,IAAIC,EAAqC,CAChFrC,UAAW,IAAMlC,KAAKmC,WAAa,KACnCC,SAAU,IAAMpC,KAAKqC,GAAGlD,cAA2B,sBACnDmD,iBAAkB,IAAMtC,KAAKqC,GAAGE,cAChCiC,oBAAqB,IAAMxE,KAAKyE,qBAG1BzE,KAAA0E,aAAe,GAEN1E,KAAA2E,aAAe,MACf3E,KAAA4E,UAAY,MACZ5E,KAAA6E,iBAAmB,MACnB7E,KAAA8E,UAAY,MACZ9E,KAAA+E,iBAAmB,MACnB/E,KAAAgF,QAAU,MACVhF,KAAAiF,QAAU,MACVjF,KAAAkF,iBAAmB,MAC5BlF,KAAAmF,qBAAuB,MAiIvBnF,KAAAoF,YAAeC,IACrBrF,KAAK9E,MAASmK,EAAEC,OAA4BpK,MAC5C8E,KAAKuF,SAASC,KAAKxF,KAAK9E,OACxB8E,KAAK0B,kBAAmB,EACxB1B,KAAKyF,iBAAiB,EAGhBzF,KAAA0F,YAAc,KACpB1F,KAAKgF,QAAU,IAAI,EAGbhF,KAAA2F,WAAa,KACnB3F,KAAKgF,QAAU,MACfhF,KAAKiF,QAAU,KACfjF,KAAKyE,kBAAkB,EAGjBzE,KAAA4F,YAAc,KACpB5F,KAAK9E,MAAQ,GACb,GAAI8E,KAAK6F,YAAa,CACpB7F,KAAKa,OAAS,GACdb,KAAK8F,eAAeN,KAAK,G,CAE3BxF,KAAKyE,mBACLzE,KAAKuF,SAASC,KAAK,IACnBxF,KAAK+F,QAAQP,OACbxF,KAAKgG,SAASC,OAAO,EAGfjG,KAAAkG,qBAAuB,KAC7BlG,KAAKkF,kBAAoBlF,KAAKkF,iBAC9BlF,KAAKmF,qBAAuB,IAAI,EAwE1BnF,KAAAmG,kBAAqB7J,IAC3B,GAAIA,EAAM8J,aAAepG,KAAKG,UAAYH,KAAK1E,UAAY0E,KAAK/D,YAAc+D,KAAK2E,aACjF,OACF,IAAKrI,EAAMW,MAAQ,aAAeX,EAAMW,MAAQ,YAAc+C,KAAKqG,oBAAoBC,OAAQ,CAC7FhK,EAAMqC,iBACNqB,KAAKyF,kBACL,MAAMa,EAAStG,KAAKqG,oBAAoBC,OACxCtG,KAAK0B,iBACH1B,KAAK0B,iBAAmB,EACpBpF,EAAMW,MAAQ,YACZ,EACAqJ,EAAS,EACXC,KAAKC,IACH,EACAD,KAAKE,IAAIH,EAAS,EAAGtG,KAAK0B,kBAAoBpF,EAAMW,MAAQ,YAAc,GAAI,KAEtFyJ,uBAAsB,IACpB1G,KAAKqC,GACFlD,cAAc,IAAIa,KAAKC,0BAA0BD,KAAK0B,qBACrDiF,eAAe,CAAEC,MAAO,a,MAEzB,GAAItK,EAAMW,MAAQ,UAAY+C,KAAKyB,gBAAiB,CACzDnF,EAAMqC,iBACNrC,EAAMC,kBACNyD,KAAKyE,kB,MACA,GAAInI,EAAMW,MAAQ,SAAW+C,KAAKyB,iBAAmBzB,KAAK0B,kBAAoB,EAAG,CACtFpF,EAAMqC,iBACNqB,KAAK6G,iBAAiB7G,KAAKqG,oBAAoBrG,KAAK0B,kB,MAC/C,GACL1B,KAAK6F,cACJvJ,EAAMW,MAAQ,SAAWX,EAAMW,MAAQ,MACxC+C,KAAK9E,MAAMV,OACX,CACA8B,EAAMqC,iBACNqB,KAAK8G,UAAU9G,KAAK9E,M,MACf,GAAI8E,KAAK6F,aAAevJ,EAAMW,MAAQ,cAAgB+C,KAAK9E,OAAS8E,KAAKa,OAAOyF,OAAQ,CAC7FhK,EAAMqC,iBACNqB,KAAK+G,YAAY/G,KAAKa,OAAOyF,OAAS,E,MACjC,GAAIhK,EAAMW,MAAQ,MAAO+C,KAAKyE,kBAAkB,EAEjDzE,KAAAgH,YAAe1K,IACrB,IAAK0D,KAAK6F,aAAe7F,KAAKG,UAAYH,KAAK1E,UAAY0E,KAAK/D,YAAc+D,KAAK2E,aACjF,OACF,MAAMsC,EAAS3K,EAAM4K,eAAeC,QAAQ,SAAW,GACvD,IAAK,UAAUC,KAAKH,GAAS,OAC7B3K,EAAMqC,iBACN,MAAM0I,EAAQrH,KAAKgG,SAASsB,gBAAkBtH,KAAK9E,MAAMoL,OACzD,MAAMiB,EAAMvH,KAAKgG,SAASwB,cAAgBH,EAC1CrH,KAAK8G,UAAU9G,KAAK9E,MAAMuM,MAAM,EAAGJ,GAASJ,EAASjH,KAAK9E,MAAMuM,MAAMF,GAAK,EAYrEvH,KAAA0H,kBAAqBC,IAC3B,MAAMC,EAAQ5H,KAAKgG,QACnB,IAAK4B,GAASA,EAAMtM,UAAYsM,EAAMzH,UAAYH,KAAK6H,oBAAoBF,GAAY,OAEvF,MAAMG,EAAWF,EAAM1M,MACvB,GAAIyM,EAAY,EAAGC,EAAMG,cACpBH,EAAMI,WACXJ,EAAM3B,MAAM,CAAEgC,cAAe,OAC7B,GAAIL,EAAM1M,QAAU4M,EAAU,OAE9B9H,KAAK9E,MAAQ0M,EAAM1M,MACnB8E,KAAKuF,SAASC,KAAKxF,KAAK9E,MAAM,CA0UjC,CA9sBC,kBAAYgN,GACV,OAAOhJ,QAAQc,KAAKqC,GAAG8F,QAAQ,Y,CAEjC,4BAAYC,GACV,OAAOpI,KAAKiF,SACVjF,KAAKwB,WACJxB,KAAKqI,YAAc7J,WAAawB,KAAK9E,MAAMoL,OAAStG,KAAKqI,UACxDrI,KAAKuB,kBACL,E,CAEN,cAAY+G,GACV,OACEtI,KAAKU,oBAAsB6H,EAAYvI,KAAKqI,aAAe7J,WAAawB,KAAKlE,OAAS,Q,CAU1F,wBAAY0M,GACV,OAAOxI,KAAKlE,OAAS,QAAUkE,KAAKlE,OAAS,Q,CAE/C,eAAY+J,GACV,OAAO7F,KAAKY,WAAaZ,KAAKwI,oB,CAEhC,uBAAYnC,GACV,IAAKrG,KAAKwI,qBAAsB,MAAO,GACvC,MAAMC,EAAQzI,KAAK9E,MAAMV,OAAOkO,oBAChC,MAAO,IAAI,IAAIC,IAAI3I,KAAKW,cAAciI,QACpC1N,GACEA,EAAMwN,oBAAoBG,SAASJ,MACjCzI,KAAK6F,cAAgB7F,KAAKa,OAAOgI,SAAS3N,K,CAqDlD,iBAAA4N,GACE9I,KAAK9E,MAAQuD,OAAOuB,KAAK9E,OAAS,IAClC8E,KAAKa,OAASkI,MAAMC,QAAQhJ,KAAKa,QAAUb,KAAKa,OAAS,GACzDb,KAAK0E,aAAe1E,KAAK9E,MACzB8E,KAAK+B,cAAgB,IAAI/B,KAAKa,QAC9Bb,KAAKiJ,qBACLjJ,KAAKkJ,e,CAGP,oBAAAC,GACEnJ,KAAKyE,kB,CAGP,kBAAA2E,GACEpJ,KAAKiJ,qBACL,GAAIjJ,KAAKyB,gBAAiBzB,KAAKgC,oBAAoBqH,WACnD,IAAKrJ,KAAKmF,qBAAsB,OAChCnF,KAAKmF,qBAAuB,MAC5BnF,KAAKgG,SAASC,MAAM,CAAEgC,cAAe,M,CAIvC,YAAAqB,GACE,GAAItJ,KAAKlE,OAAS,WAAYkE,KAAKkF,iBAAmB,K,CAGhD,kBAAA+D,GACN,MAAMM,EAAc,IAAIvJ,KAAKqC,GAAGmH,iBAAiB,oBACjD,MAAMC,EAAc,IAAIzJ,KAAKqC,GAAGmH,iBAAiB,oBACjD,MAAM5E,EAAY2E,EAAYjD,OAAS,EACvC,MAAMzB,EAAmB0E,EAAYG,KAAK1K,GAC1C,MAAM8F,EAAY2E,EAAYnD,OAAS,EACvC,MAAMvB,EAAmB0E,EAAYC,KAAK1K,GAC1C,GAAI4F,IAAc5E,KAAK4E,UAAW5E,KAAK4E,UAAYA,EACnD,GAAIC,IAAqB7E,KAAK6E,iBAAkB7E,KAAK6E,iBAAmBA,EACxE,GAAIC,IAAc9E,KAAK8E,UAAW9E,KAAK8E,UAAYA,EACnD,GAAIC,IAAqB/E,KAAK+E,iBAAkB/E,KAAK+E,iBAAmBA,C,CAoB1E,aAAAmE,GACE,UAAWlJ,KAAK9E,QAAU,SAAU,CAClC8E,KAAK9E,MAAQuD,OAAOuB,KAAK9E,OAAS,G,CAEpC,IAAK6N,MAAMC,QAAQhJ,KAAKa,QAASb,KAAKa,OAAS,GAC/C,MAAM8I,EAAW3J,KAAK/D,YAAc+D,KAAK1E,UAAY0E,KAAK2E,aAC1D,GAAI3E,KAAK6F,YACP+D,EAA4B5J,KAAK6J,UAAW7J,KAAK8J,KAAM9J,KAAKa,OAAQ,CAAE8I,kBACnEI,EAAoB/J,KAAK6J,UAAW7J,KAAK9E,MAAO,CAAEyO,aACvD,IAAIK,EACFL,GAAY3J,KAAKG,SACb,CAAE8J,MAAO,GAAIC,QAAS,IACtBC,EAAuB,IAClBnK,KAAKoK,kBACRhK,SAAUJ,KAAKI,WAAaJ,KAAK6F,cAEzC,GAAI7F,KAAK6F,cAAgB8D,IAAa3J,KAAKG,SAAU,CACnD,MAAMkK,EAAerK,KAAKa,OACvByJ,KAAIpP,GAASiP,EAAuB,IAAKnK,KAAKoK,kBAAmBlP,QAAOkF,SAAU,UAClFmK,MAAKC,GAAUA,EAAON,UACzB,GAAIG,EAAcL,EAAWK,OACxB,GAAIrK,KAAKI,UAAYJ,KAAKa,OAAOyF,SAAW,EAC/C0D,EAAW,CAAEC,MAAO,CAAEQ,aAAc,MAAQP,QAASlK,KAAKK,sBACvD,GAAIL,KAAK9E,MAAMV,SAAWwP,EAASE,QACtCF,EAAW,CAAEC,MAAO,CAAES,YAAa,MAAQR,QAAS,iC,CAExD,GAAIP,GAAY3J,KAAKG,SAAUH,KAAKyE,mBACpCzE,KAAKuB,kBAAoByI,EAASE,QAClClK,KAAK6J,UAAUc,YAAYX,EAASC,MAAOD,EAASE,Q,CAG9C,eAAAE,GACN,MAAO,CACLlP,MAAO8E,KAAK9E,MACZY,KAAMkE,KAAKlE,KACXsE,SAAUJ,KAAKI,SACfC,gBAAiBL,KAAKK,gBACtBuK,UAAW5K,KAAK4K,UAChBvC,UAAWrI,KAAKqI,UAChBwC,QAAS7K,KAAK6K,QACdC,eAAgB9K,KAAK8K,eACrBrE,IAAKzG,KAAKyG,IACVD,IAAKxG,KAAKwG,IACVuE,KAAM/K,KAAK+K,K,CAIf,oBAAAC,CAAqB1P,GACnB0E,KAAK2E,aAAerJ,EACpB0E,KAAKkJ,e,CAGP,iBAAA+B,GACEjL,KAAK9E,MAAQ8E,KAAK0E,aAClB1E,KAAKa,OAAS,IAAIb,KAAK+B,eACvB/B,KAAKyE,mBACLzE,KAAKiF,QAAU,MACfjF,KAAKwB,UAAY,MACjBxB,KAAKkF,iBAAmB,K,CAG1B,wBAAAgG,CAAyBC,GACvB,GAAInL,KAAK6F,YAAa7F,KAAKa,OAASuK,EAA4BD,QAC3DnL,KAAK9E,MAAQmQ,EAAuBF,E,CAI3C,cAAMG,GACJtL,KAAKgG,SAASC,O,CAsChB,oBAAAsF,GACEvL,KAAK0B,kBAAmB,EACxB,GAAI1B,KAAKgF,SAAWhF,KAAK9E,MAAO8E,KAAKyF,iB,CAG/B,eAAAA,GACN,GACEzF,KAAK1E,UACL0E,KAAK2E,cACL3E,KAAK/D,YACL+D,KAAKG,WACJH,KAAKqG,oBAAoBC,OAC1B,CACAtG,KAAKyE,mBACL,M,CAEF,GAAIzE,KAAKyB,gBAAiB,OAC1BzB,KAAK8B,iBAAmB,MACxB9B,KAAKyB,gBAAkB,KACvBzB,KAAKsE,sBAAsBkH,UAC3BxL,KAAKgC,oBAAoByJ,UACzBzL,KAAKgC,oBAAoBqH,U,CAEnB,gBAAA5E,GACNzE,KAAKgC,oBAAoB0J,YACzB1L,KAAKsE,sBAAsBqH,aAC3B,MAAMjJ,EAAQ1C,KAAKqC,GAAGlD,cAA2B,sBACjD,GAAIuD,GAAOzD,QAAQ,iBAAkByD,EAAMkJ,cAC3C5L,KAAKyB,gBAAkB,MACvBzB,KAAK0B,kBAAmB,C,CAElB,SAAAoF,CAAU+E,GAChB,GAAI7L,KAAKG,UAAYH,KAAK1E,UAAY0E,KAAK/D,YAAc+D,KAAK2E,aAAc,OAC5E,MAAMmH,EAASD,EACZE,MAAM,YACNzB,KAAIpP,IACH,MAAM8Q,EAAU9Q,EAAMV,OACtB,MAAMgM,EAAM+B,EAAYvI,KAAKqI,WAC7B,OAAOrI,KAAKS,iBAAmB,YAAc+F,IAAQhI,UACjDwN,EAAQvE,MAAM,EAAGjB,GACjBwF,CAAO,IAEZpD,OAAO1J,SACV,IAAK4M,EAAOxF,OAAQ,OACpBtG,KAAKa,OAAS,IAAI,IAAI8H,IAAI,IAAI3I,KAAKa,UAAWiL,KAC9C9L,KAAK9E,MAAQ,GACb8E,KAAK8F,eAAeN,KAAK,IAAIxF,KAAKa,SAClCb,KAAKuF,SAASC,KAAK,IACnBxF,KAAKyE,kB,CAEC,WAAAsC,CAAYkF,GAClB,GAAIjM,KAAKG,UAAYH,KAAK1E,UAAY0E,KAAK/D,YAAc+D,KAAK2E,aAAc,OAC5E3E,KAAKa,OAASb,KAAKa,OAAO+H,QAAO,CAACsD,EAAGC,IAAeF,IAAUE,IAC9DnM,KAAK8F,eAAeN,KAAK,IAAIxF,KAAKa,SAClCb,KAAKgG,SAASC,O,CAER,gBAAAY,CAAiB3L,GACvB,GAAI8E,KAAK6F,YAAa7F,KAAK8G,UAAU5L,OAChC,CACH,MAAMsL,EAAM+B,EAAYvI,KAAKqI,WAC7BrI,KAAK9E,MACH8E,KAAKS,iBAAmB,YAAc+F,IAAQhI,UAAYtD,EAAMuM,MAAM,EAAGjB,GAAOtL,EAClF8E,KAAKuF,SAASC,KAAKxF,KAAK9E,M,CAE1B8E,KAAKoM,mBAAmB5G,KAAKtK,GAC7B8E,KAAKyE,mBACLzE,KAAKgG,SAASC,O,CAqDR,mBAAA4B,CAAoBF,GAC1B,GAAI3H,KAAK9E,MAAMV,SAAW,GAAI,OAAO,MACrC,MAAMU,EAAQmR,OAAOrM,KAAK9E,OAC1B,IAAKmR,OAAOC,SAASpR,GAAQ,OAAO,MACpC,GAAIyM,EAAY,GAAK3H,KAAKwG,MAAQhI,UAAW,OAAOtD,GAAS8E,KAAKwG,IAClE,GAAImB,EAAY,GAAK3H,KAAKyG,MAAQjI,UAAW,OAAOtD,GAAS8E,KAAKyG,IAClE,OAAO,K,CAiBD,oBAAA8F,CAAqB5C,GAC3B,MAAM6C,EAAoB7C,GAAY3J,KAAKG,UAAYH,KAAK6H,oBAAoB,GAChF,MAAM4E,EAAoB9C,GAAY3J,KAAKG,UAAYH,KAAK6H,qBAAoB,GAEhF,OACEvN,EAAA,QAAMC,MAAM,iCACVD,EAAA,sBACEC,MAAM,mEACNI,QAAQ,OACRV,KAAM+F,KAAK/F,KACX+B,KAAK,OACLE,UAAW,MACXwQ,QAAO,KACPzQ,WAAYuQ,EACZrS,UAAW6F,KAAKgB,eAChB2L,UAAW,IAAM3M,KAAK0H,kBAAkB,KAE1CpN,EAAA,cAAYsS,YAAY,WAAWtG,OAAO,2BAC1ChM,EAAA,sBACEC,MAAM,mEACNI,QAAQ,OACRV,KAAM+F,KAAK/F,KACX+B,KAAK,QACLE,UAAW,MACXwQ,QAAO,KACPzQ,WAAYwQ,EACZtS,UAAW6F,KAAKiB,eAChB0L,UAAW,IAAM3M,KAAK0H,mBAAkB,K,CAMhD,MAAAmF,GACE,MAAMC,EAAU9M,KAAK8M,SAAW9M,KAAKC,YACrC,MAAM0J,EAAW3J,KAAK/D,YAAc+D,KAAK1E,UAAY0E,KAAK2E,aAC1D,MAAMoI,EAAS/M,KAAK9E,MAAMoL,OAAS,GAAMtG,KAAK6F,aAAe7F,KAAKa,OAAOyF,OAAS,EAClF,MAAM0G,EACJhN,KAAK9E,QAAU8E,KAAK0E,cACnB1E,KAAK6F,aAAeoH,KAAKC,UAAUlN,KAAKa,UAAYoM,KAAKC,UAAUlN,KAAK+B,eAC3E,MAAMoL,EAAYnN,KAAKlE,OAAS,UAAYiR,IAAWpD,IAAa3J,KAAKG,SACzE,MAAMiN,EAAqBpN,KAAKlE,OAAS,WACzC,MAAMuR,EAAaD,GAAsBpN,KAAKkF,iBAAmB,OAASlF,KAAKlE,KAC/E,MAAMoO,EACJlK,KAAKsB,OAAStB,KAAKsN,aAAetN,KAAKsN,aAAetN,KAAKoI,yBAC7D,MAAMmF,EAAUvN,KAAKsB,OAASpC,QAAQc,KAAKoI,0BAC3C,MAAMoF,EAAYtO,QAAQgL,KAAalK,KAAKkI,eAC5C,MAAMuF,EAAczN,KAAKsI,aAAetI,KAAKkI,eAC7C,MAAMwF,EAAcxQ,EAAqB8C,KAAK/F,MAC9C,MAAM0T,EAAWvO,EAAUY,KAAK/F,MAChC,MAAM2T,EAAU5N,KAAKlE,OAAS,SAC9B,MAAM+R,EAAqBD,GAAW5N,KAAKe,YAC3C,MAAM+M,EAAuB9N,KAAK+N,eAAiB/N,KAAKlE,OAAS,SAAW,MAAQ0C,WACpF,MAAMwP,EAAwBhO,KAAKlE,OAAS,UAAYkE,KAAKlE,OAAS,WAEtE,MAAMmS,EACJ,CACEjO,KAAKkO,gBACLV,EAAYxN,KAAKE,QAAU1B,UAC3BiP,EAAc,GAAGzN,KAAKC,oBAAsBzB,WAE3CoK,OAAO1J,SACPiP,KAAK,MAAQ3P,UAElB,OACElE,EAAC8T,EAAI,CAAAnR,IAAA,2CACH1C,MAAO,CACL,aAAc,KACd,iBAAkB,KAClB,oCAAqCyF,KAAK9D,UAC1C,sBAAuByN,EACvB,CAAC,eAAe3J,KAAK/F,QAAS,QAC3BoU,EAAkBrO,KAAKjE,QAC3B,gBACc4N,EAAW,GAAKnL,UAAS,gBACzBwB,KAAKG,SAAW,GAAK3B,UAAS,gBAC9BwB,KAAKI,SAAW,GAAK5B,UAAS,eAC/B+O,EAAU,GAAK/O,UAAS,0BACbwB,KAAKoI,0BAA4B5J,UAAS,uBAC7CwB,KAAKsI,WAAa7J,OAAOuB,KAAK9E,MAAMoL,QAAU9H,UAAS,uBACvDwB,KAAKsI,WAAa7J,OAAO8J,EAAYvI,KAAKqI,YAAc7J,UAC9E8P,UAAW,KACTtO,KAAKwB,UAAY,IAAI,EACtB,cACYuL,EAAS,GAAKvO,UAAS,eACtBwB,KAAKgF,QAAU,GAAKxG,UAAS,aAC/BwO,EAAQ,GAAKxO,UAAS,eACpBwB,KAAKiF,QAAU,GAAKzG,WAElClE,EAAA,OAAA2C,IAAA,2CACErB,IAAKC,IACHmE,KAAKmC,UAAYtG,CAAO,EAE1BtB,MAAO,CACL,2BAA4ByF,KAAK6F,YACjC,4BAA6B7F,KAAK6F,aAAe7F,KAAKa,OAAOyF,OAAS,EACtE,gBAAiB,KACjB,wBAAyBsH,EACzB,yBAA0BC,EAC1B,6BAA8B7N,KAAKkB,YAAc,QACjD,2BAA4BlB,KAAKkB,YAAc,MAC/C,mBAAoB,KACpB,0BAA2BlB,KAAK9D,UAChC,uBAAwB8D,KAAK9D,WAAaqR,EAC1C,gCAAiCvN,KAAK6E,iBACtC,gCAAiC7E,KAAK+E,iBACtC,sBAAuB/E,KAAK/E,mBAC5B,CAAC,eAAe+E,KAAK/F,QAAS,OAG/B4T,GAAsB7N,KAAKkB,YAAc,OAASlB,KAAKuM,qBAAqB5C,GAC5E3J,KAAKhE,MACJ1B,EAAA,QAAA2C,IAAA,2CACE1C,MAAM,yEAAwE,cAClE,QAEZD,EAAA,WAAA2C,IAAA,2CAAS6M,KAAM9J,KAAKhE,KAAM/B,KAAM0T,EAAU9S,MAAM,aAGpDP,EAAA,QAAA2C,IAAA,2CACE1C,MAAO,CACL,6BAA8B,KAC9B,wBAAyByF,KAAK6E,iBAC9B,+BAAgC,KAChC,sCAAuC7E,KAAK6E,iBAC5C,qCAAsC7E,KAAK4E,YAG7CtK,EAAA,QAAA2C,IAAA,2CAAM6M,KAAK,SAASyE,aAAc,IAAMvO,KAAKiJ,uBAC5CjJ,KAAK6E,kBACJvK,EAAA,cAAA2C,IAAA,2CACE1C,MAAM,mCACNqS,YAAY,WACZtG,OAAO,4BAIZtG,KAAK6F,aACJ7F,KAAKa,OAAOyJ,KAAI,CAACkE,EAAOvC,IACtB3R,EAAA,WACE2C,IAAK,GAAGgP,KAASuC,IACjBjU,MAAM,cACN8C,MAAOmR,EACPvU,KAAM+F,KAAK/F,OAAS,KAAO,KAAO+F,KAAK/F,KACvCyS,QAAO,KACP+B,WAAW,SACXxS,WAAY0N,GAAY3J,KAAKG,SAC7BuO,YAAa1O,KAAKc,iBAClBqK,MACEhB,EAAuB,IAClBnK,KAAKoK,kBACRlP,MAAOsT,EACPpO,SAAU,QACT8J,QACC,QACA,UAENyE,WAAYrS,IACVA,EAAMC,kBACNyD,KAAK+G,YAAYkF,EAAM,MAI/B3R,EAAA,SAAA2C,IAAA,2CACErB,IAAKC,IACHmE,KAAKgG,QAAUnK,CAAO,EAExBC,KAAMuR,EACN7P,GAAIsP,EACJ5R,MAAO8E,KAAK9E,MACZC,YAAa6E,KAAK7E,YAClBsL,IAAKmH,EAAU5N,KAAKyG,IAAMjI,UAC1BgI,IAAKoH,EAAU5N,KAAKwG,IAAMhI,UAC1BuM,KAAM6C,EAAU5N,KAAK+K,KAAOvM,UAC5BlD,SAAUqO,EACVxJ,SAAUH,KAAKG,SACfC,SAAUJ,KAAKI,WAAaJ,KAAK6F,YACjC+E,UAAWrC,EAAYvI,KAAK4K,WAC5BvC,UAAWrI,KAAKS,iBAAmB,WAAa8H,EAAYvI,KAAKqI,WAAa7J,UAC9EqM,QAAS7K,KAAK6K,QACdxJ,UAAWrB,KAAKqB,UAChB0M,aAAcD,EACdc,eAAgBZ,EAAwB,OAASxP,UACjDqQ,YAAab,EAAwB,MAAQxP,UAC7CsQ,WAAYd,EAAwB,MAAQxP,UAC5C2C,UAAWnB,KAAKmB,WAAa3C,UAC7B4C,aAAcpB,KAAKoB,cAAgB5C,UACnCjE,MAAO,oCAAoCyF,KAAKkB,2CAA2CwM,EAAYqB,QAAQ,QAAS,oDAAmD,aAC/J/O,KAAK7F,UAAS,kBACT6F,KAAKgP,eAAc,mBAClBf,EAClBxT,KAAMuF,KAAKW,YAAY2F,QAAUtG,KAAKwI,qBAAuB,WAAahK,UAAS,oBAEjFwB,KAAKW,YAAY2F,QAAUtG,KAAKwI,qBAAuB,OAAShK,UAAS,gBAGzEwB,KAAKW,YAAY2F,QAAUtG,KAAKwI,qBAC5B/J,OAAOuB,KAAKyB,iBACZjD,UAAS,gBAGbwB,KAAKyB,gBAAkB,GAAGzB,KAAKC,0BAA4BD,KAAK7D,aAAY,wBAG5E6D,KAAKyB,iBAAmBzB,KAAK0B,kBAAoB,EAC7C,GAAG1B,KAAKC,0BAA0BD,KAAK0B,mBACvC1B,KAAK5D,qBAAoB,eAEjBmR,EAAU,OAAS/O,UACjCyQ,QAASjP,KAAKoF,YACdzJ,UAAWqE,KAAKmG,kBAChB+I,QAASlP,KAAKgH,YACd5I,QAAS4B,KAAK0F,YACdyJ,OAAQnP,KAAK2F,aAEfrL,EAAA,QAAA2C,IAAA,2CACE1C,MAAO,CACL,wBAAyB,KACzB,wBAAyByF,KAAK+E,iBAC9B,iCAAkC/E,KAAK+E,iBACvC,gCAAiC/E,KAAK8E,YAGvC9E,KAAK+E,kBACJzK,EAAA,cAAA2C,IAAA,2CACE1C,MAAM,mCACNqS,YAAY,WACZtG,OAAO,2BAGXhM,EAAA,QAAA2C,IAAA,2CAAM6M,KAAK,SAASyE,aAAc,IAAMvO,KAAKiJ,wBAE9CkE,GACC7S,EAAA,sBAAA2C,IAAA,2CACE1C,MAAM,uBACNI,QAAQ,OACRV,KAAMwF,EAAkBO,KAAK/F,MAC7B+B,KAAK,cACLE,UAAW,MACXkT,QAAO,KACPjV,UAAW6F,KAAKxE,WAChBmR,UAAW3M,KAAK4F,cAGnBwH,GACC9S,EAAA,sBAAA2C,IAAA,2CACE1C,MAAM,iCACNI,QAAQ,OACRV,KAAM+F,KAAK/F,KACX+B,KAAMgE,KAAKkF,iBAAmB,mBAAqB,MACnDhJ,UAAW,MACXwQ,QAAO,KACPzQ,WAAY0N,EACZxP,UAAW6F,KAAKkF,iBAAmBlF,KAAKQ,kBAAoBR,KAAKO,kBACjEoM,UAAW3M,KAAKkG,uBAGnB2H,GAAsB7N,KAAKkB,YAAc,SAAWlB,KAAKuM,qBAAqB5C,IAEhF3J,KAAKyB,iBACJnH,EAAA,OAAA2C,IAAA,2CACEoS,QAAQ,SACR9U,MAAM,oCACN+U,MAAO,CACLC,SAAU,QACVC,KAAM,GAAGxP,KAAK2B,mBAAmBC,MACjC6N,IAAK,GAAGzP,KAAK2B,mBAAmBE,MAChC9F,MAAO,GAAGiE,KAAKmC,WAAWa,wBAAwBjH,OAAS,MAC3D2T,WAAY1P,KAAK8B,iBAAmB,UAAY,UAElDpD,YAAapC,GAASA,EAAMqC,kBAE5BrE,EAAA,OAAA2C,IAAA,2CACE1C,MAAM,yCACNiD,GAAI,GAAGwC,KAAKC,0BACZxF,KAAK,UAAS,aACH,eAEVuF,KAAKqG,oBAAoBiE,KAAI,CAACpP,EAAO+Q,IACpC3R,EAACiD,EAAe,CACdtD,KAAM+F,KAAK/F,KACXuD,GAAI,GAAGwC,KAAKC,0BAA0BgM,IACtCxO,OAAQ,CAAEJ,MAAOnC,EAAOA,SACxBwC,SAAU,MACVC,OAAQsO,IAAUjM,KAAK0B,iBACvB9D,iBAAkB,MAClBC,YAAa,MACbM,UAAU,EACVE,QAAS,KACP2B,KAAK0B,iBAAmBuK,CAAK,EAE/B3N,SAAU,IAAM0B,KAAK6G,iBAAiB3L,UAM9CsS,GAAaC,IACbnT,EAAA,OAAA2C,IAAA,2CAAK1C,MAAM,sBACRiT,GACClT,EAAA,WAAA2C,IAAA,2CACE1C,MAAM,aACNG,GAAG,MACHC,QAAQ,kBACRE,MAAM,WACN8U,OAAQ3P,KAAKE,QACbzF,KAAK,SAEJyP,GAGJuD,GACCnT,EAAA,WAAA2C,IAAA,2CACEvC,GAAG,OACHH,MAAM,mBACNI,QAAQ,kBACRE,MAAO0S,EAAU,WAAa,YAC9BoC,OAAQ,GAAG3P,KAAKC,qBAEfD,KAAK9E,MAAMoL,OAAM,IAAGiC,EAAYvI,KAAKqI,a","ignoreList":[]}
@@ -1,2 +1,2 @@
1
- import{p as e,H as o,h as s,a,t}from"./index.js";import{C as i}from"./p-BnhGV__o.js";import{d as c}from"./p-CwdRaJER.js";import{d}from"./p-BLeHHoVb.js";import{d as n}from"./p-pPtjNRqC.js";import{d as r}from"./p-0XTyQNRG.js";import{d as l}from"./p-D8OWhnID.js";import{d as b}from"./p-DvGrsLgt.js";const f=()=>`.sc-ds-code-block-h{display:block;width:100%;min-width:0;box-sizing:border-box;-webkit-user-select:none;user-select:none}.code-block.sc-ds-code-block{width:100%;min-width:0;margin:0;overflow:hidden;border-radius:var(--dimension-radius-050);background:var(--color-background-strong-neutral);color:var(--color-foreground-faint-neutral);box-sizing:border-box}.code-block__header.sc-ds-code-block{display:flex;align-items:center;justify-content:space-between;gap:var(--dimension-space-100);min-height:var(--dimension-size-400);padding:var(--dimension-space-050) var(--dimension-space-100);background:var(--color-background-strong-neutral);box-sizing:border-box}pre.sc-ds-code-block{margin:0;padding:var(--dimension-space-150);overflow:auto;font-family:var( --typography-font-family-code, 'Fira Code', ui-monospace, 'SFMono-Regular', 'Cascadia Code', 'Roboto Mono', Menlo, Monaco, Consolas, 'Liberation Mono', monospace );font-size:var(--typography-fontsize-sm);font-variant-ligatures:var(--ds-code-font-variant-ligatures, normal);font-weight:var(--typography-weight-regular);line-height:var(--typography-lineheight-sm);letter-spacing:var(--typography-letterspacing-none);tab-size:2;-webkit-user-select:text;user-select:text}code.sc-ds-code-block{font:inherit;white-space:pre}`;const p=e(class e extends o{constructor(e){super();if(e!==false){this.__registerHost()}this.code="";this.language="";this.filename="";this.copied=false;this.copyFeedback=new i((e=>{this.copied=e}));this.copy=async()=>{await this.copyFeedback.copy(this.code)}}connectedCallback(){this.copyFeedback.connect()}handleCodeChange(){this.copyFeedback.reset()}disconnectedCallback(){this.copyFeedback.disconnect()}render(){const e=this.filename||this.language||"Code";return s(a,{key:"6a8ee52a31076178a7c91151bddf3e8e7ec96a00"},s("figure",{key:"4a505f426dd5aef6e03fb2a212f4189a62aaad49",class:"code-block"},s("figcaption",{key:"d054d4c2c18c871b68a4f986175569b9b3fc4585",class:"code-block__header"},s("ds-text",{key:"b9670a2756d941325dd9d0879e87c7f1c29a5bb9",as:"span",variant:"text-caption",emphasis:true,color:"on-strong"},e),s("ds-tooltip",{key:"0fdc7fa490235c402cc1af32686bf48bd0e02592",label:this.copied?"Copied":"Copy code",side:"bottom",size:"sm"},s("ds-button-unfilled",{key:"81bcdf895e416386fb24cf74fb8b45e7e724cf05",variant:"icon",icon:this.copied?"Check":"Copy",size:"xs","aria-label":this.copied?"Copied":"Copy code",hasBorder:false,onDsClick:this.copy}))),s("pre",{key:"3b641059e00b2f38a502b2f1e42a9e062543cc98"},s("code",{key:"ee226e1a605f7251c6127c02a957d1ab0faf2f52"},this.code))))}static get watchers(){return{code:[{handleCodeChange:0}]}}static get style(){return f()}},[2,"ds-code-block",{code:[1],language:[1],filename:[1],copied:[32]},undefined,{code:[{handleCodeChange:0}]}]);function m(){if(typeof customElements==="undefined"){return}const e=["ds-code-block","ds-badge","ds-button-unfilled","ds-icon","ds-loader","ds-text","ds-tooltip"];e.forEach((e=>{switch(e){case"ds-code-block":if(!customElements.get(t(e))){customElements.define(t(e),p)}break;case"ds-badge":if(!customElements.get(t(e))){c()}break;case"ds-button-unfilled":if(!customElements.get(t(e))){d()}break;case"ds-icon":if(!customElements.get(t(e))){n()}break;case"ds-loader":if(!customElements.get(t(e))){r()}break;case"ds-text":if(!customElements.get(t(e))){l()}break;case"ds-tooltip":if(!customElements.get(t(e))){b()}break}}))}m();export{p as C,m as d};
2
- //# sourceMappingURL=p-DZLtFn-r.js.map
1
+ import{p as e,H as o,h as s,a,t}from"./index.js";import{C as c}from"./p-BnhGV__o.js";import{d as i}from"./p-BWJb2rih.js";import{d as n}from"./p-pJ6gbwSa.js";import{d}from"./p-pPtjNRqC.js";import{d as r}from"./p-0XTyQNRG.js";import{d as l}from"./p-BbvAWFJA.js";import{d as b}from"./p-BJf49edB.js";const f=()=>`.sc-ds-code-block-h{display:block;width:100%;min-width:0;box-sizing:border-box;-webkit-user-select:none;user-select:none}.code-block.sc-ds-code-block{width:100%;min-width:0;margin:0;overflow:hidden;border-radius:var(--dimension-radius-050);background:var(--color-background-strong-neutral);color:var(--color-foreground-faint-neutral);box-sizing:border-box}.code-block__header.sc-ds-code-block{display:flex;align-items:center;justify-content:space-between;gap:var(--dimension-space-100);min-height:var(--dimension-size-400);padding:var(--dimension-space-050) var(--dimension-space-100);background:var(--color-background-strong-neutral);box-sizing:border-box}pre.sc-ds-code-block{margin:0;padding:var(--dimension-space-150);overflow:auto;font-family:var( --typography-font-family-code, 'Fira Code', ui-monospace, 'SFMono-Regular', 'Cascadia Code', 'Roboto Mono', Menlo, Monaco, Consolas, 'Liberation Mono', monospace );font-size:var(--typography-fontsize-sm);font-variant-ligatures:var(--ds-code-font-variant-ligatures, normal);font-weight:var(--typography-weight-regular);line-height:var(--typography-lineheight-sm);letter-spacing:var(--typography-letterspacing-none);tab-size:2;-webkit-user-select:text;user-select:text}code.sc-ds-code-block{font:inherit;white-space:pre}`;const p=e(class e extends o{constructor(e){super();if(e!==false){this.__registerHost()}this.code="";this.language="";this.filename="";this.copied=false;this.copyFeedback=new c((e=>{this.copied=e}));this.copy=async()=>{await this.copyFeedback.copy(this.code)}}connectedCallback(){this.copyFeedback.connect()}handleCodeChange(){this.copyFeedback.reset()}disconnectedCallback(){this.copyFeedback.disconnect()}render(){const e=this.filename||this.language||"Code";return s(a,{key:"0ea3aa21d58e65343c0e7a39db0d5e906e28989d"},s("figure",{key:"c5ade5774d862b6957c1be8b050257c04f0cbeb5",class:"code-block"},s("figcaption",{key:"1ef604492d5cc9c2cfabc160a4895c5ffc4509e1",class:"code-block__header"},s("ds-text",{key:"5fc03743c12c918ec6e5b7761a78770397cde6c8",as:"span",variant:"text-caption",emphasis:true,color:"on-strong"},e),s("ds-tooltip",{key:"4f82c8b5f1f546d1b233599dfaec9a1cb5b85b9a",label:this.copied?"Copied":"Copy code",side:"bottom",size:"sm"},s("ds-button-unfilled",{key:"5a3c3f838f44695a0df34f0aa6ed2826103b9c31",variant:"icon",icon:this.copied?"Check":"Copy",size:"xs","aria-label":this.copied?"Copied":"Copy code",hasBorder:false,onDsClick:this.copy}))),s("pre",{key:"5c365ea962c64d94343e53bbe7102fb346b057c7"},s("code",{key:"095bace07b42264496af0c5ca134b48e9fc43b23"},this.code))))}static get watchers(){return{code:[{handleCodeChange:0}]}}static get style(){return f()}},[2,"ds-code-block",{code:[1],language:[1],filename:[1],copied:[32]},undefined,{code:[{handleCodeChange:0}]}]);function m(){if(typeof customElements==="undefined"){return}const e=["ds-code-block","ds-badge","ds-button-unfilled","ds-icon","ds-loader","ds-text","ds-tooltip"];e.forEach((e=>{switch(e){case"ds-code-block":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))){n()}break;case"ds-icon":if(!customElements.get(t(e))){d()}break;case"ds-loader":if(!customElements.get(t(e))){r()}break;case"ds-text":if(!customElements.get(t(e))){l()}break;case"ds-tooltip":if(!customElements.get(t(e))){b()}break}}))}m();export{p as C,m as d};
2
+ //# sourceMappingURL=p-CgC4SM5b.js.map
@@ -0,0 +1,2 @@
1
+ import{p as t,H as e,h as s,a,t as c}from"./index.js";import{d as i}from"./p-pPtjNRqC.js";import{d}from"./p-BbvAWFJA.js";const n=()=>`.sc-ds-empty-state-h{display:block;width:100%;height:100%}.sc-ds-empty-state-h,.empty-state.sc-ds-empty-state,.empty-state__text.sc-ds-empty-state{box-sizing:border-box}.empty-state.sc-ds-empty-state{display:flex;flex-direction:column;align-items:center;justify-content:center;height:100%;width:100%;text-align:center}.empty-state__icon.sc-ds-empty-state{margin-block-end:var(--dimension-space-100);flex:0 0 auto}.empty-state__text.sc-ds-empty-state{display:flex;flex-direction:column;align-items:center;gap:var(--dimension-space-050);width:100%}.empty-state__actions.sc-ds-empty-state{margin-block-start:var(--dimension-space-200);display:flex;flex-wrap:wrap;align-items:center;justify-content:center;gap:var(--dimension-space-100)}.empty-state__actions.sc-ds-empty-state:not(:has([slot='actions'])){display:none}.empty-state__title.sc-ds-empty-state,.empty-state__body.sc-ds-empty-state{text-wrap:balance}`;const o=t(class t extends e{constructor(t){super();if(t!==false){this.__registerHost()}this.body=""}render(){const t=Boolean(this.heading?.trim());const e=t&&Boolean(this.icon);return s(a,{key:"14ff151f87a2145225363761a1fa3bfad4d95f4a"},s("div",{key:"d4d181bd8ba041af5ed12bfd379434449b025faf",class:"empty-state"},e&&s("ds-icon",{key:"e633eea2f3f47a779bfe2f6265ae5aebf0096b92",class:"empty-state__icon",name:this.icon,size:"xl",color:"primary"}),s("div",{key:"ea2797ec55a85a5b0820db55b96c12c34cae76ee",class:"empty-state__text"},t&&s("ds-text",{key:"8199ee1feb149251940dbf557072df61ca629636",class:"empty-state__title",as:"div",variant:"text-title-small",color:"primary",align:"center"},this.heading),this.body&&s("ds-text",{key:"fc00edefdf3a58b3ef8da7e7788ed2c31519e22a",class:"empty-state__body",as:"p",variant:"text-body-medium",color:"secondary",align:"center"},this.body)),s("div",{key:"3d60bc4c4aa364e9bc567bc58f9a7d69af8443dc",class:"empty-state__actions"},s("slot",{key:"94c29dde2ba2a2fdf7afb6821a1ec9bbd6bd758d",name:"actions"}))))}static get style(){return n()}},[262,"ds-empty-state",{icon:[1],heading:[1],body:[1]}]);function m(){if(typeof customElements==="undefined"){return}const t=["ds-empty-state","ds-icon","ds-text"];t.forEach((t=>{switch(t){case"ds-empty-state":if(!customElements.get(c(t))){customElements.define(c(t),o)}break;case"ds-icon":if(!customElements.get(c(t))){i()}break;case"ds-text":if(!customElements.get(c(t))){d()}break}}))}m();export{o as E,m as d};
2
+ //# sourceMappingURL=p-CqAC2IQO.js.map
@@ -1 +1 @@
1
- {"version":3,"names":["emptyStateCss","EmptyState","__stencil_proxyCustomElement","HTMLElement","constructor","registerHost","this","body","render","showHeading","Boolean","heading","trim","showIcon","icon","h","Host","key","class","name","size","color","as","variant","align"],"sources":["src/wc/components/EmptyState/EmptyState.css?tag=ds-empty-state&encapsulation=scoped","src/wc/components/EmptyState/EmptyState.tsx"],"sourcesContent":[":host {\n display: block;\n width: 100%;\n height: 100%;\n}\n\n:host,\n.empty-state,\n.empty-state__text {\n box-sizing: border-box;\n}\n\n.empty-state {\n display: flex;\n flex-direction: column;\n align-items: center;\n justify-content: center;\n height: 100%;\n width: 100%;\n text-align: center;\n}\n\n.empty-state__icon {\n margin-block-end: var(--dimension-space-100);\n flex: 0 0 auto;\n}\n\n.empty-state__text {\n display: flex;\n flex-direction: column;\n align-items: center;\n gap: var(--dimension-space-050);\n width: 100%;\n}\n\n.empty-state__actions {\n margin-block-start: var(--dimension-space-200);\n display: flex;\n flex-wrap: wrap;\n align-items: center;\n justify-content: center;\n gap: var(--dimension-space-100);\n}\n\n.empty-state__actions:not(:has([slot='actions'])) {\n display: none;\n}\n\n.empty-state__title,\n.empty-state__body {\n text-wrap: balance;\n}\n","import { Component, Prop, h, Host } from '@stencil/core';\n\n/**\n * @slot actions - Optional recovery buttons or links. The consumer owns their labels and behavior.\n */\n@Component({\n tag: 'ds-empty-state',\n styleUrl: 'EmptyState.css',\n scoped: true,\n})\nexport class EmptyState {\n /** Optional decorative prefix glyph for the complete icon + title + body variant. */\n @Prop() icon: string | undefined;\n /** Optional visual title. Use with body; required when icon is provided. */\n @Prop() heading: string | undefined;\n /** Explanatory empty-state copy. Every supported variant includes body text. */\n @Prop() body: string = '';\n\n render() {\n const showHeading = Boolean(this.heading?.trim());\n const showIcon = showHeading && Boolean(this.icon);\n\n return (\n <Host>\n <div class=\"empty-state\">\n {showIcon && (\n <ds-icon class=\"empty-state__icon\" name={this.icon} size=\"xl\" color=\"primary\" />\n )}\n <div class=\"empty-state__text\">\n {showHeading && (\n <ds-text\n class=\"empty-state__title\"\n as=\"div\"\n variant=\"text-title-small\"\n color=\"primary\"\n align=\"center\"\n >\n {this.heading}\n </ds-text>\n )}\n {this.body && (\n <ds-text\n class=\"empty-state__body\"\n as=\"p\"\n variant=\"text-body-medium\"\n color=\"secondary\"\n align=\"center\"\n >\n {this.body}\n </ds-text>\n )}\n </div>\n <div class=\"empty-state__actions\">\n <slot name=\"actions\" />\n </div>\n </div>\n </Host>\n );\n }\n}\n"],"mappings":"8HAAA,MAAMA,EAAgB,IAAM,84B,MCUfC,EAAUC,EAAA,MAAAD,UAAAE,EALvB,WAAAC,CAAAC,G,4CAWUC,KAAAC,KAAe,EA2CxB,CAzCC,MAAAC,GACE,MAAMC,EAAcC,QAAQJ,KAAKK,SAASC,QAC1C,MAAMC,EAAWJ,GAAeC,QAAQJ,KAAKQ,MAE7C,OACEC,EAACC,EAAI,CAAAC,IAAA,4CACHF,EAAA,OAAAE,IAAA,2CAAKC,MAAM,eACRL,GACCE,EAAA,WAAAE,IAAA,2CAASC,MAAM,oBAAoBC,KAAMb,KAAKQ,KAAMM,KAAK,KAAKC,MAAM,YAEtEN,EAAA,OAAAE,IAAA,2CAAKC,MAAM,qBACRT,GACCM,EAAA,WAAAE,IAAA,2CACEC,MAAM,qBACNI,GAAG,MACHC,QAAQ,mBACRF,MAAM,UACNG,MAAM,UAELlB,KAAKK,SAGTL,KAAKC,MACJQ,EAAA,WAAAE,IAAA,2CACEC,MAAM,oBACNI,GAAG,IACHC,QAAQ,mBACRF,MAAM,YACNG,MAAM,UAELlB,KAAKC,OAIZQ,EAAA,OAAAE,IAAA,2CAAKC,MAAM,wBACTH,EAAA,QAAAE,IAAA,2CAAME,KAAK,c","ignoreList":[]}
1
+ {"version":3,"names":["emptyStateCss","EmptyState","__stencil_proxyCustomElement","HTMLElement","constructor","registerHost","this","body","render","showHeading","Boolean","heading","trim","showIcon","icon","h","Host","key","class","name","size","color","as","variant","align"],"sources":["src/wc/components/EmptyState/EmptyState.css?tag=ds-empty-state&encapsulation=scoped","src/wc/components/EmptyState/EmptyState.tsx"],"sourcesContent":[":host {\n display: block;\n width: 100%;\n height: 100%;\n}\n\n:host,\n.empty-state,\n.empty-state__text {\n box-sizing: border-box;\n}\n\n.empty-state {\n display: flex;\n flex-direction: column;\n align-items: center;\n justify-content: center;\n height: 100%;\n width: 100%;\n text-align: center;\n}\n\n.empty-state__icon {\n margin-block-end: var(--dimension-space-100);\n flex: 0 0 auto;\n}\n\n.empty-state__text {\n display: flex;\n flex-direction: column;\n align-items: center;\n gap: var(--dimension-space-050);\n width: 100%;\n}\n\n.empty-state__actions {\n margin-block-start: var(--dimension-space-200);\n display: flex;\n flex-wrap: wrap;\n align-items: center;\n justify-content: center;\n gap: var(--dimension-space-100);\n}\n\n.empty-state__actions:not(:has([slot='actions'])) {\n display: none;\n}\n\n.empty-state__title,\n.empty-state__body {\n text-wrap: balance;\n}\n","import { Component, Prop, h, Host } from '@stencil/core';\n\n/**\n * @slot actions - Optional recovery buttons or links. The consumer owns their labels and behavior.\n */\n@Component({\n tag: 'ds-empty-state',\n styleUrl: 'EmptyState.css',\n scoped: true,\n})\nexport class EmptyState {\n /** Optional decorative prefix glyph for the complete icon + title + body variant. */\n @Prop() icon: string | undefined;\n /** Optional visual title. Use with body; required when icon is provided. */\n @Prop() heading: string | undefined;\n /** Explanatory empty-state copy. Every supported variant includes body text. */\n @Prop() body: string = '';\n\n render() {\n const showHeading = Boolean(this.heading?.trim());\n const showIcon = showHeading && Boolean(this.icon);\n\n return (\n <Host>\n <div class=\"empty-state\">\n {showIcon && (\n <ds-icon class=\"empty-state__icon\" name={this.icon} size=\"xl\" color=\"primary\" />\n )}\n <div class=\"empty-state__text\">\n {showHeading && (\n <ds-text\n class=\"empty-state__title\"\n as=\"div\"\n variant=\"text-title-small\"\n color=\"primary\"\n align=\"center\"\n >\n {this.heading}\n </ds-text>\n )}\n {this.body && (\n <ds-text\n class=\"empty-state__body\"\n as=\"p\"\n variant=\"text-body-medium\"\n color=\"secondary\"\n align=\"center\"\n >\n {this.body}\n </ds-text>\n )}\n </div>\n <div class=\"empty-state__actions\">\n <slot name=\"actions\" />\n </div>\n </div>\n </Host>\n );\n }\n}\n"],"mappings":"yHAAA,MAAMA,EAAgB,IAAM,84B,MCUfC,EAAUC,EAAA,MAAAD,UAAAE,EALvB,WAAAC,CAAAC,G,4CAWUC,KAAAC,KAAe,EA2CxB,CAzCC,MAAAC,GACE,MAAMC,EAAcC,QAAQJ,KAAKK,SAASC,QAC1C,MAAMC,EAAWJ,GAAeC,QAAQJ,KAAKQ,MAE7C,OACEC,EAACC,EAAI,CAAAC,IAAA,4CACHF,EAAA,OAAAE,IAAA,2CAAKC,MAAM,eACRL,GACCE,EAAA,WAAAE,IAAA,2CAASC,MAAM,oBAAoBC,KAAMb,KAAKQ,KAAMM,KAAK,KAAKC,MAAM,YAEtEN,EAAA,OAAAE,IAAA,2CAAKC,MAAM,qBACRT,GACCM,EAAA,WAAAE,IAAA,2CACEC,MAAM,qBACNI,GAAG,MACHC,QAAQ,mBACRF,MAAM,UACNG,MAAM,UAELlB,KAAKK,SAGTL,KAAKC,MACJQ,EAAA,WAAAE,IAAA,2CACEC,MAAM,oBACNI,GAAG,IACHC,QAAQ,mBACRF,MAAM,YACNG,MAAM,UAELlB,KAAKC,OAIZQ,EAAA,OAAAE,IAAA,2CAAKC,MAAM,wBACTH,EAAA,QAAAE,IAAA,2CAAME,KAAK,c","ignoreList":[]}