@design.estate/dees-catalog 3.91.0 → 3.92.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 (228) hide show
  1. package/dist_bundle/bundle.js +10381 -4788
  2. package/dist_ts_web/00_commitinfo_data.js +1 -1
  3. package/dist_ts_web/elements/00group-appui/dees-appui/dees-appui.js +5 -4
  4. package/dist_ts_web/elements/00group-appui/dees-appui-profiledropdown/dees-appui-profiledropdown.js +6 -7
  5. package/dist_ts_web/elements/00group-appui/dees-appui-tabs/dees-appui-tabs.js +4 -6
  6. package/dist_ts_web/elements/00group-button/dees-button/dees-button.d.ts +6 -0
  7. package/dist_ts_web/elements/00group-button/dees-button/dees-button.demo.js +14 -1
  8. package/dist_ts_web/elements/00group-button/dees-button/dees-button.js +49 -24
  9. package/dist_ts_web/elements/00group-chart/dees-chart-log/dees-chart-log.js +1 -1
  10. package/dist_ts_web/elements/00group-dataview/dees-dataview-codebox/codebox.diff.d.ts +69 -0
  11. package/dist_ts_web/elements/00group-dataview/dees-dataview-codebox/codebox.diff.js +342 -0
  12. package/dist_ts_web/elements/00group-dataview/dees-dataview-codebox/dees-dataview-codebox.d.ts +48 -3
  13. package/dist_ts_web/elements/00group-dataview/dees-dataview-codebox/dees-dataview-codebox.demo.js +128 -39
  14. package/dist_ts_web/elements/00group-dataview/dees-dataview-codebox/dees-dataview-codebox.js +663 -190
  15. package/dist_ts_web/elements/00group-dataview/dees-dataview-codebox/index.d.ts +1 -0
  16. package/dist_ts_web/elements/00group-dataview/dees-dataview-codebox/index.js +2 -1
  17. package/dist_ts_web/elements/00group-dataview/dees-dataview-statusobject/dees-dataview-statusobject.d.ts +3 -0
  18. package/dist_ts_web/elements/00group-dataview/dees-dataview-statusobject/dees-dataview-statusobject.js +48 -30
  19. package/dist_ts_web/elements/00group-dataview/dees-grouped-list/dees-grouped-list.js +1 -1
  20. package/dist_ts_web/elements/00group-dataview/dees-statsgrid/dees-statsgrid.js +1 -2
  21. package/dist_ts_web/elements/00group-dataview/dees-storage-browser/dees-storage-keys.js +1 -1
  22. package/dist_ts_web/elements/00group-dataview/dees-table/styles.js +1 -1
  23. package/dist_ts_web/elements/00group-feedback/dees-progressbar/dees-progressbar.js +9 -9
  24. package/dist_ts_web/elements/00group-harness/dees-harness-chat/dees-harness-chat.d.ts +55 -0
  25. package/dist_ts_web/elements/00group-harness/dees-harness-chat/dees-harness-chat.demo.d.ts +1 -0
  26. package/dist_ts_web/elements/00group-harness/dees-harness-chat/dees-harness-chat.demo.js +183 -0
  27. package/dist_ts_web/elements/00group-harness/dees-harness-chat/dees-harness-chat.js +412 -0
  28. package/dist_ts_web/elements/00group-harness/dees-harness-chat/index.d.ts +1 -0
  29. package/dist_ts_web/elements/00group-harness/dees-harness-chat/index.js +2 -0
  30. package/dist_ts_web/elements/00group-harness/dees-harness-composer/dees-harness-composer.d.ts +65 -0
  31. package/dist_ts_web/elements/00group-harness/dees-harness-composer/dees-harness-composer.demo.d.ts +1 -0
  32. package/dist_ts_web/elements/00group-harness/dees-harness-composer/dees-harness-composer.demo.js +55 -0
  33. package/dist_ts_web/elements/00group-harness/dees-harness-composer/dees-harness-composer.js +589 -0
  34. package/dist_ts_web/elements/00group-harness/dees-harness-composer/index.d.ts +1 -0
  35. package/dist_ts_web/elements/00group-harness/dees-harness-composer/index.js +2 -0
  36. package/dist_ts_web/elements/00group-harness/dees-harness-content-blocks/dees-harness-content-blocks.d.ts +21 -0
  37. package/dist_ts_web/elements/00group-harness/dees-harness-content-blocks/dees-harness-content-blocks.demo.d.ts +1 -0
  38. package/dist_ts_web/elements/00group-harness/dees-harness-content-blocks/dees-harness-content-blocks.demo.js +41 -0
  39. package/dist_ts_web/elements/00group-harness/dees-harness-content-blocks/dees-harness-content-blocks.js +215 -0
  40. package/dist_ts_web/elements/00group-harness/dees-harness-content-blocks/index.d.ts +1 -0
  41. package/dist_ts_web/elements/00group-harness/dees-harness-content-blocks/index.js +2 -0
  42. package/dist_ts_web/elements/00group-harness/dees-harness-message/dees-harness-message.d.ts +58 -0
  43. package/dist_ts_web/elements/00group-harness/dees-harness-message/dees-harness-message.demo.d.ts +1 -0
  44. package/dist_ts_web/elements/00group-harness/dees-harness-message/dees-harness-message.demo.js +126 -0
  45. package/dist_ts_web/elements/00group-harness/dees-harness-message/dees-harness-message.js +551 -0
  46. package/dist_ts_web/elements/00group-harness/dees-harness-message/index.d.ts +1 -0
  47. package/dist_ts_web/elements/00group-harness/dees-harness-message/index.js +2 -0
  48. package/dist_ts_web/elements/00group-harness/dees-harness-message-list/dees-harness-message-list.d.ts +50 -0
  49. package/dist_ts_web/elements/00group-harness/dees-harness-message-list/dees-harness-message-list.demo.d.ts +1 -0
  50. package/dist_ts_web/elements/00group-harness/dees-harness-message-list/dees-harness-message-list.demo.js +101 -0
  51. package/dist_ts_web/elements/00group-harness/dees-harness-message-list/dees-harness-message-list.js +424 -0
  52. package/dist_ts_web/elements/00group-harness/dees-harness-message-list/index.d.ts +1 -0
  53. package/dist_ts_web/elements/00group-harness/dees-harness-message-list/index.js +2 -0
  54. package/dist_ts_web/elements/00group-harness/dees-harness-permission-card/dees-harness-permission-card.d.ts +27 -0
  55. package/dist_ts_web/elements/00group-harness/dees-harness-permission-card/dees-harness-permission-card.demo.d.ts +1 -0
  56. package/dist_ts_web/elements/00group-harness/dees-harness-permission-card/dees-harness-permission-card.demo.js +46 -0
  57. package/dist_ts_web/elements/00group-harness/dees-harness-permission-card/dees-harness-permission-card.js +282 -0
  58. package/dist_ts_web/elements/00group-harness/dees-harness-permission-card/index.d.ts +1 -0
  59. package/dist_ts_web/elements/00group-harness/dees-harness-permission-card/index.js +2 -0
  60. package/dist_ts_web/elements/00group-harness/dees-harness-reasoning/dees-harness-reasoning.d.ts +24 -0
  61. package/dist_ts_web/elements/00group-harness/dees-harness-reasoning/dees-harness-reasoning.demo.d.ts +1 -0
  62. package/dist_ts_web/elements/00group-harness/dees-harness-reasoning/dees-harness-reasoning.demo.js +32 -0
  63. package/dist_ts_web/elements/00group-harness/dees-harness-reasoning/dees-harness-reasoning.js +241 -0
  64. package/dist_ts_web/elements/00group-harness/dees-harness-reasoning/index.d.ts +1 -0
  65. package/dist_ts_web/elements/00group-harness/dees-harness-reasoning/index.js +2 -0
  66. package/dist_ts_web/elements/00group-harness/dees-harness-session-list/dees-harness-session-list.d.ts +28 -0
  67. package/dist_ts_web/elements/00group-harness/dees-harness-session-list/dees-harness-session-list.demo.d.ts +1 -0
  68. package/dist_ts_web/elements/00group-harness/dees-harness-session-list/dees-harness-session-list.demo.js +56 -0
  69. package/dist_ts_web/elements/00group-harness/dees-harness-session-list/dees-harness-session-list.js +279 -0
  70. package/dist_ts_web/elements/00group-harness/dees-harness-session-list/index.d.ts +1 -0
  71. package/dist_ts_web/elements/00group-harness/dees-harness-session-list/index.js +2 -0
  72. package/dist_ts_web/elements/00group-harness/dees-harness-status/dees-harness-status.d.ts +30 -0
  73. package/dist_ts_web/elements/00group-harness/dees-harness-status/dees-harness-status.demo.d.ts +1 -0
  74. package/dist_ts_web/elements/00group-harness/dees-harness-status/dees-harness-status.demo.js +35 -0
  75. package/dist_ts_web/elements/00group-harness/dees-harness-status/dees-harness-status.js +235 -0
  76. package/dist_ts_web/elements/00group-harness/dees-harness-status/index.d.ts +1 -0
  77. package/dist_ts_web/elements/00group-harness/dees-harness-status/index.js +2 -0
  78. package/dist_ts_web/elements/00group-harness/dees-harness-todos/dees-harness-todos.d.ts +27 -0
  79. package/dist_ts_web/elements/00group-harness/dees-harness-todos/dees-harness-todos.demo.d.ts +1 -0
  80. package/dist_ts_web/elements/00group-harness/dees-harness-todos/dees-harness-todos.demo.js +41 -0
  81. package/dist_ts_web/elements/00group-harness/dees-harness-todos/dees-harness-todos.js +258 -0
  82. package/dist_ts_web/elements/00group-harness/dees-harness-todos/index.d.ts +1 -0
  83. package/dist_ts_web/elements/00group-harness/dees-harness-todos/index.js +2 -0
  84. package/dist_ts_web/elements/00group-harness/dees-harness-tool-card/dees-harness-tool-card.d.ts +35 -0
  85. package/dist_ts_web/elements/00group-harness/dees-harness-tool-card/dees-harness-tool-card.demo.d.ts +1 -0
  86. package/dist_ts_web/elements/00group-harness/dees-harness-tool-card/dees-harness-tool-card.demo.js +162 -0
  87. package/dist_ts_web/elements/00group-harness/dees-harness-tool-card/dees-harness-tool-card.js +368 -0
  88. package/dist_ts_web/elements/00group-harness/dees-harness-tool-card/index.d.ts +2 -0
  89. package/dist_ts_web/elements/00group-harness/dees-harness-tool-card/index.js +3 -0
  90. package/dist_ts_web/elements/00group-harness/dees-harness-tool-card/renderers.d.ts +5 -0
  91. package/dist_ts_web/elements/00group-harness/dees-harness-tool-card/renderers.js +183 -0
  92. package/dist_ts_web/elements/00group-harness/dees-harness-usage/dees-harness-usage.d.ts +19 -0
  93. package/dist_ts_web/elements/00group-harness/dees-harness-usage/dees-harness-usage.demo.d.ts +1 -0
  94. package/dist_ts_web/elements/00group-harness/dees-harness-usage/dees-harness-usage.demo.js +25 -0
  95. package/dist_ts_web/elements/00group-harness/dees-harness-usage/dees-harness-usage.js +148 -0
  96. package/dist_ts_web/elements/00group-harness/dees-harness-usage/index.d.ts +1 -0
  97. package/dist_ts_web/elements/00group-harness/dees-harness-usage/index.js +2 -0
  98. package/dist_ts_web/elements/00group-harness/harness.demodata.d.ts +22 -0
  99. package/dist_ts_web/elements/00group-harness/harness.demodata.js +94 -0
  100. package/dist_ts_web/elements/00group-harness/harness.helpers.d.ts +37 -0
  101. package/dist_ts_web/elements/00group-harness/harness.helpers.js +221 -0
  102. package/dist_ts_web/elements/00group-harness/harness.markdown.d.ts +25 -0
  103. package/dist_ts_web/elements/00group-harness/harness.markdown.js +147 -0
  104. package/dist_ts_web/elements/00group-harness/harness.styles.d.ts +9 -0
  105. package/dist_ts_web/elements/00group-harness/harness.styles.js +94 -0
  106. package/dist_ts_web/elements/00group-harness/index.d.ts +18 -0
  107. package/dist_ts_web/elements/00group-harness/index.js +22 -0
  108. package/dist_ts_web/elements/00group-harness/interfaces.d.ts +210 -0
  109. package/dist_ts_web/elements/00group-harness/interfaces.js +11 -0
  110. package/dist_ts_web/elements/00group-harness/toolregistry.d.ts +76 -0
  111. package/dist_ts_web/elements/00group-harness/toolregistry.js +210 -0
  112. package/dist_ts_web/elements/00group-input/dees-input-code/dees-input-code.js +30 -18
  113. package/dist_ts_web/elements/00group-input/dees-input-datepicker/datepicker-popup.js +73 -46
  114. package/dist_ts_web/elements/00group-input/dees-input-datepicker/styles.js +15 -16
  115. package/dist_ts_web/elements/00group-input/dees-input-list/dees-input-list.js +2 -4
  116. package/dist_ts_web/elements/00group-input/dees-input-tags/dees-input-tags.js +36 -15
  117. package/dist_ts_web/elements/00group-input/dees-input-toggle/dees-input-toggle.js +5 -4
  118. package/dist_ts_web/elements/00group-input/dees-input-wysiwyg/blocks/text/code.block.js +10 -89
  119. package/dist_ts_web/elements/00group-input/dees-input-wysiwyg/dees-input-wysiwyg.js +12 -8
  120. package/dist_ts_web/elements/00group-layout/dees-chips/dees-chips.js +1 -1
  121. package/dist_ts_web/elements/00group-layout/dees-pagination/dees-pagination.js +27 -12
  122. package/dist_ts_web/elements/00group-layout/dees-settings/dees-settings.js +1 -1
  123. package/dist_ts_web/elements/00group-layout/dees-stepper/dees-stepper.js +14 -18
  124. package/dist_ts_web/elements/00group-overlay/dees-contextmenu/dees-contextmenu.js +6 -7
  125. package/dist_ts_web/elements/00group-overlay/dees-modal/dees-modal.js +6 -21
  126. package/dist_ts_web/elements/00group-overlay/dees-windowlayer/dees-windowlayer.d.ts +2 -1
  127. package/dist_ts_web/elements/00group-overlay/dees-windowlayer/dees-windowlayer.js +10 -4
  128. package/dist_ts_web/elements/00group-simple/dees-shopping-productcard/dees-shopping-productcard.js +1 -1
  129. package/dist_ts_web/elements/00group-simple/dees-simple-appdash/dees-simple-appdash.js +9 -8
  130. package/dist_ts_web/elements/00group-workspace/dees-workspace/dees-workspace.js +1 -1
  131. package/dist_ts_web/elements/00group-workspace/dees-workspace-filetree/dees-workspace-filetree.js +3 -4
  132. package/dist_ts_web/elements/00group-workspace/dees-workspace-markdownoutlet/dees-workspace-markdownoutlet.js +8 -78
  133. package/dist_ts_web/elements/00syntax.d.ts +28 -0
  134. package/dist_ts_web/elements/00syntax.js +98 -0
  135. package/dist_ts_web/elements/00theme.js +26 -14
  136. package/dist_ts_web/elements/index.d.ts +1 -0
  137. package/dist_ts_web/elements/index.js +2 -1
  138. package/dist_watch/bundle.js +233948 -0
  139. package/dist_watch/bundle.js.map +7 -0
  140. package/dist_watch/index.html +28 -0
  141. package/package.json +1 -1
  142. package/readme.hints.md +7 -1
  143. package/readme.md +110 -0
  144. package/readme.playbook.md +10 -0
  145. package/ts_web/00_commitinfo_data.ts +1 -1
  146. package/ts_web/elements/00group-appui/dees-appui/dees-appui.ts +4 -3
  147. package/ts_web/elements/00group-appui/dees-appui-profiledropdown/dees-appui-profiledropdown.ts +5 -6
  148. package/ts_web/elements/00group-appui/dees-appui-tabs/dees-appui-tabs.ts +3 -5
  149. package/ts_web/elements/00group-button/dees-button/dees-button.demo.ts +13 -0
  150. package/ts_web/elements/00group-button/dees-button/dees-button.ts +42 -22
  151. package/ts_web/elements/00group-chart/dees-chart-log/dees-chart-log.ts +1 -1
  152. package/ts_web/elements/00group-dataview/dees-dataview-codebox/codebox.diff.ts +401 -0
  153. package/ts_web/elements/00group-dataview/dees-dataview-codebox/dees-dataview-codebox.demo.ts +132 -38
  154. package/ts_web/elements/00group-dataview/dees-dataview-codebox/dees-dataview-codebox.ts +649 -187
  155. package/ts_web/elements/00group-dataview/dees-dataview-codebox/index.ts +1 -0
  156. package/ts_web/elements/00group-dataview/dees-dataview-statusobject/dees-dataview-statusobject.ts +45 -30
  157. package/ts_web/elements/00group-dataview/dees-grouped-list/dees-grouped-list.ts +1 -1
  158. package/ts_web/elements/00group-dataview/dees-statsgrid/dees-statsgrid.ts +0 -1
  159. package/ts_web/elements/00group-dataview/dees-storage-browser/dees-storage-keys.ts +1 -1
  160. package/ts_web/elements/00group-dataview/dees-table/styles.ts +1 -1
  161. package/ts_web/elements/00group-feedback/dees-progressbar/dees-progressbar.ts +9 -9
  162. package/ts_web/elements/00group-harness/dees-harness-chat/dees-harness-chat.demo.ts +193 -0
  163. package/ts_web/elements/00group-harness/dees-harness-chat/dees-harness-chat.ts +301 -0
  164. package/ts_web/elements/00group-harness/dees-harness-chat/index.ts +1 -0
  165. package/ts_web/elements/00group-harness/dees-harness-composer/dees-harness-composer.demo.ts +56 -0
  166. package/ts_web/elements/00group-harness/dees-harness-composer/dees-harness-composer.ts +514 -0
  167. package/ts_web/elements/00group-harness/dees-harness-composer/index.ts +1 -0
  168. package/ts_web/elements/00group-harness/dees-harness-content-blocks/dees-harness-content-blocks.demo.ts +44 -0
  169. package/ts_web/elements/00group-harness/dees-harness-content-blocks/dees-harness-content-blocks.ts +172 -0
  170. package/ts_web/elements/00group-harness/dees-harness-content-blocks/index.ts +1 -0
  171. package/ts_web/elements/00group-harness/dees-harness-message/dees-harness-message.demo.ts +129 -0
  172. package/ts_web/elements/00group-harness/dees-harness-message/dees-harness-message.ts +498 -0
  173. package/ts_web/elements/00group-harness/dees-harness-message/index.ts +1 -0
  174. package/ts_web/elements/00group-harness/dees-harness-message-list/dees-harness-message-list.demo.ts +105 -0
  175. package/ts_web/elements/00group-harness/dees-harness-message-list/dees-harness-message-list.ts +342 -0
  176. package/ts_web/elements/00group-harness/dees-harness-message-list/index.ts +1 -0
  177. package/ts_web/elements/00group-harness/dees-harness-permission-card/dees-harness-permission-card.demo.ts +47 -0
  178. package/ts_web/elements/00group-harness/dees-harness-permission-card/dees-harness-permission-card.ts +225 -0
  179. package/ts_web/elements/00group-harness/dees-harness-permission-card/index.ts +1 -0
  180. package/ts_web/elements/00group-harness/dees-harness-reasoning/dees-harness-reasoning.demo.ts +32 -0
  181. package/ts_web/elements/00group-harness/dees-harness-reasoning/dees-harness-reasoning.ts +195 -0
  182. package/ts_web/elements/00group-harness/dees-harness-reasoning/index.ts +1 -0
  183. package/ts_web/elements/00group-harness/dees-harness-session-list/dees-harness-session-list.demo.ts +59 -0
  184. package/ts_web/elements/00group-harness/dees-harness-session-list/dees-harness-session-list.ts +222 -0
  185. package/ts_web/elements/00group-harness/dees-harness-session-list/index.ts +1 -0
  186. package/ts_web/elements/00group-harness/dees-harness-status/dees-harness-status.demo.ts +35 -0
  187. package/ts_web/elements/00group-harness/dees-harness-status/dees-harness-status.ts +187 -0
  188. package/ts_web/elements/00group-harness/dees-harness-status/index.ts +1 -0
  189. package/ts_web/elements/00group-harness/dees-harness-todos/dees-harness-todos.demo.ts +43 -0
  190. package/ts_web/elements/00group-harness/dees-harness-todos/dees-harness-todos.ts +206 -0
  191. package/ts_web/elements/00group-harness/dees-harness-todos/index.ts +1 -0
  192. package/ts_web/elements/00group-harness/dees-harness-tool-card/dees-harness-tool-card.demo.ts +166 -0
  193. package/ts_web/elements/00group-harness/dees-harness-tool-card/dees-harness-tool-card.ts +315 -0
  194. package/ts_web/elements/00group-harness/dees-harness-tool-card/index.ts +2 -0
  195. package/ts_web/elements/00group-harness/dees-harness-tool-card/renderers.ts +205 -0
  196. package/ts_web/elements/00group-harness/dees-harness-usage/dees-harness-usage.demo.ts +25 -0
  197. package/ts_web/elements/00group-harness/dees-harness-usage/dees-harness-usage.ts +96 -0
  198. package/ts_web/elements/00group-harness/dees-harness-usage/index.ts +1 -0
  199. package/ts_web/elements/00group-harness/harness.demodata.ts +113 -0
  200. package/ts_web/elements/00group-harness/harness.helpers.ts +227 -0
  201. package/ts_web/elements/00group-harness/harness.markdown.ts +151 -0
  202. package/ts_web/elements/00group-harness/harness.styles.ts +96 -0
  203. package/ts_web/elements/00group-harness/index.ts +22 -0
  204. package/ts_web/elements/00group-harness/interfaces.ts +203 -0
  205. package/ts_web/elements/00group-harness/toolregistry.ts +264 -0
  206. package/ts_web/elements/00group-input/dees-input-code/dees-input-code.ts +29 -17
  207. package/ts_web/elements/00group-input/dees-input-datepicker/datepicker-popup.ts +72 -45
  208. package/ts_web/elements/00group-input/dees-input-datepicker/styles.ts +14 -15
  209. package/ts_web/elements/00group-input/dees-input-list/dees-input-list.ts +1 -3
  210. package/ts_web/elements/00group-input/dees-input-tags/dees-input-tags.ts +35 -14
  211. package/ts_web/elements/00group-input/dees-input-toggle/dees-input-toggle.ts +4 -3
  212. package/ts_web/elements/00group-input/dees-input-wysiwyg/blocks/text/code.block.ts +9 -88
  213. package/ts_web/elements/00group-input/dees-input-wysiwyg/dees-input-wysiwyg.ts +11 -7
  214. package/ts_web/elements/00group-layout/dees-chips/dees-chips.ts +1 -1
  215. package/ts_web/elements/00group-layout/dees-pagination/dees-pagination.ts +26 -11
  216. package/ts_web/elements/00group-layout/dees-settings/dees-settings.ts +1 -1
  217. package/ts_web/elements/00group-layout/dees-stepper/dees-stepper.ts +13 -17
  218. package/ts_web/elements/00group-overlay/dees-contextmenu/dees-contextmenu.ts +5 -6
  219. package/ts_web/elements/00group-overlay/dees-modal/dees-modal.ts +5 -20
  220. package/ts_web/elements/00group-overlay/dees-windowlayer/dees-windowlayer.ts +10 -3
  221. package/ts_web/elements/00group-simple/dees-shopping-productcard/dees-shopping-productcard.ts +1 -1
  222. package/ts_web/elements/00group-simple/dees-simple-appdash/dees-simple-appdash.ts +8 -7
  223. package/ts_web/elements/00group-workspace/dees-workspace/dees-workspace.ts +1 -1
  224. package/ts_web/elements/00group-workspace/dees-workspace-filetree/dees-workspace-filetree.ts +2 -3
  225. package/ts_web/elements/00group-workspace/dees-workspace-markdownoutlet/dees-workspace-markdownoutlet.ts +7 -77
  226. package/ts_web/elements/00syntax.ts +124 -0
  227. package/ts_web/elements/00theme.ts +25 -13
  228. package/ts_web/elements/index.ts +1 -0
@@ -0,0 +1,195 @@
1
+ import { demoFunc } from './dees-harness-reasoning.demo.js';
2
+ import {
3
+ DeesElement,
4
+ html,
5
+ css,
6
+ customElement,
7
+ type TemplateResult,
8
+ property,
9
+ state,
10
+ cssManager,
11
+ } from '@design.estate/dees-element';
12
+ import { themeDefaultStyles } from '../../00theme.js';
13
+ import type { IHarnessReasoningPart } from '../interfaces.js';
14
+ import { harnessFormatDuration } from '../harness.helpers.js';
15
+ import '../../00group-utility/dees-icon/dees-icon.js';
16
+
17
+ declare global {
18
+ interface HTMLElementTagNameMap {
19
+ 'dees-harness-reasoning': DeesHarnessReasoning;
20
+ }
21
+ }
22
+
23
+ /**
24
+ * Reasoning ("thinking") disclosure for one reasoning part. Auto-opens while
25
+ * the part is streaming (no endedAt) unless the user has interacted; the
26
+ * user's expand/collapse choice wins afterwards and survives re-renders
27
+ * because it lives on this element, not in the parent's template.
28
+ */
29
+ @customElement('dees-harness-reasoning')
30
+ export class DeesHarnessReasoning extends DeesElement {
31
+ public static demo = demoFunc;
32
+ public static demoGroups = ['Agent Chat'];
33
+
34
+ @property({ attribute: false })
35
+ accessor reasoningPart: IHarnessReasoningPart = { id: '', text: '' };
36
+
37
+ @state()
38
+ accessor expanded: boolean | undefined = undefined;
39
+
40
+ public static styles = [
41
+ themeDefaultStyles,
42
+ cssManager.defaultStyles,
43
+ css`
44
+ :host {
45
+ display: block;
46
+ font-family: var(--dees-font-family);
47
+ }
48
+
49
+ .reasoning {
50
+ border: 1px solid var(--dees-color-border-subtle);
51
+ border-radius: var(--dees-radius-md);
52
+ corner-shape: var(--dees-corner-shape);
53
+ background: var(--dees-color-bg-tertiary);
54
+ overflow: hidden;
55
+ animation: harness-reasoning-enter var(--dees-transition-default) var(--dees-ease-out);
56
+ }
57
+
58
+ @keyframes harness-reasoning-enter {
59
+ from {
60
+ opacity: 0;
61
+ transform: translateY(-3px);
62
+ }
63
+ to {
64
+ opacity: 1;
65
+ transform: translateY(0);
66
+ }
67
+ }
68
+
69
+ /* Expand/collapse animates through the 0fr→1fr grid trick so the body
70
+ stays in the DOM and both directions transition smoothly. */
71
+ .bodyWrap {
72
+ display: grid;
73
+ grid-template-rows: 0fr;
74
+ transition: grid-template-rows var(--dees-transition-default) var(--dees-ease-standard);
75
+ }
76
+
77
+ .bodyWrap.open {
78
+ grid-template-rows: 1fr;
79
+ }
80
+
81
+ .bodyWrap > .bodyClip {
82
+ overflow: hidden;
83
+ min-height: 0;
84
+ }
85
+
86
+ @media (prefers-reduced-motion: reduce) {
87
+ .reasoning {
88
+ animation: none;
89
+ }
90
+ .bodyWrap,
91
+ .chevron {
92
+ transition: none;
93
+ }
94
+ }
95
+
96
+ .summary {
97
+ width: 100%;
98
+ display: flex;
99
+ align-items: center;
100
+ gap: var(--dees-spacing-sm);
101
+ padding: var(--dees-spacing-xs) var(--dees-spacing-md);
102
+ border: 0;
103
+ background: transparent;
104
+ color: var(--dees-color-text-secondary);
105
+ cursor: pointer;
106
+ font-family: inherit;
107
+ font-size: var(--dees-font-caption1-size, 11px);
108
+ font-weight: 600;
109
+ text-align: left;
110
+ }
111
+
112
+ .summary:hover {
113
+ color: var(--dees-color-text-primary);
114
+ }
115
+
116
+ .chevron {
117
+ display: grid;
118
+ place-items: center;
119
+ transition: transform var(--dees-transition-fast) var(--dees-ease-standard);
120
+ }
121
+
122
+ .chevron.open {
123
+ transform: rotate(90deg);
124
+ }
125
+
126
+ .duration {
127
+ margin-left: auto;
128
+ color: var(--dees-color-text-muted);
129
+ font-weight: 400;
130
+ }
131
+
132
+ .thinkingDots::after {
133
+ content: '';
134
+ display: inline-block;
135
+ width: 1.2em;
136
+ text-align: left;
137
+ animation: harness-reasoning-dots 1.2s steps(4, end) infinite;
138
+ }
139
+
140
+ @keyframes harness-reasoning-dots {
141
+ 0% { content: ''; }
142
+ 25% { content: '.'; }
143
+ 50% { content: '..'; }
144
+ 75%, 100% { content: '...'; }
145
+ }
146
+
147
+ .body {
148
+ margin: 0;
149
+ padding: 0 var(--dees-spacing-md) var(--dees-spacing-sm);
150
+ color: var(--dees-color-text-secondary);
151
+ white-space: pre-wrap;
152
+ overflow-wrap: anywhere;
153
+ font-size: var(--dees-font-caption1-size, 11px);
154
+ line-height: 1.5;
155
+ }
156
+ `,
157
+ ];
158
+
159
+ public get isStreaming(): boolean {
160
+ return Boolean(this.reasoningPart.startedAt) && !this.reasoningPart.endedAt;
161
+ }
162
+
163
+ public get isOpen(): boolean {
164
+ return this.expanded ?? this.isStreaming;
165
+ }
166
+
167
+ public render(): TemplateResult {
168
+ const duration = harnessFormatDuration(this.reasoningPart.startedAt, this.reasoningPart.endedAt);
169
+ return html`
170
+ <div class="reasoning">
171
+ <button
172
+ class="summary"
173
+ type="button"
174
+ aria-expanded=${this.isOpen ? 'true' : 'false'}
175
+ @click=${() => {
176
+ this.expanded = !this.isOpen;
177
+ }}
178
+ >
179
+ <span class="chevron ${this.isOpen ? 'open' : ''}">
180
+ <dees-icon icon="lucide:ChevronRight" iconSize="12"></dees-icon>
181
+ </span>
182
+ <span class=${this.isStreaming ? 'thinkingDots' : ''}>
183
+ ${this.isStreaming ? 'Thinking' : 'Thought'}
184
+ </span>
185
+ ${duration ? html`<span class="duration">${duration}</span>` : ''}
186
+ </button>
187
+ <div class="bodyWrap ${this.isOpen ? 'open' : ''}" aria-hidden=${this.isOpen ? 'false' : 'true'}>
188
+ <div class="bodyClip">
189
+ <pre class="body">${this.reasoningPart.text || (this.isStreaming ? 'Waiting for reasoning…' : 'No reasoning emitted.')}</pre>
190
+ </div>
191
+ </div>
192
+ </div>
193
+ `;
194
+ }
195
+ }
@@ -0,0 +1 @@
1
+ export * from './dees-harness-reasoning.js';
@@ -0,0 +1,59 @@
1
+ import { html } from '@design.estate/dees-element';
2
+ import type { IHarnessSessionMeta } from '../interfaces.js';
3
+
4
+ const demoSessions: IHarnessSessionMeta[] = Array.from({ length: 24 }, (_, index) => ({
5
+ id: `session-${index}`,
6
+ title: [
7
+ 'Fix sitemap cache key',
8
+ 'Investigate 429s from model endpoint',
9
+ 'Refactor workbench layout',
10
+ 'Add diff support to codebox',
11
+ 'Release 3.91.0',
12
+ 'Migrate agent chat to harness group',
13
+ ][index % 6],
14
+ createdAt: Date.now() - (index + 2) * 3_600_000,
15
+ updatedAt: Date.now() - (index + 1) * 3_500_000,
16
+ messageCount: 4 + (index % 9),
17
+ preview: 'Latest: the regression test asserts the cache key stays stable across…',
18
+ }));
19
+
20
+ const openModal = async () => {
21
+ const { DeesModal } = await import('../../00group-overlay/dees-modal/dees-modal.js');
22
+ const content = document.createElement('dees-harness-session-list');
23
+ content.sessions = demoSessions;
24
+ content.style.height = '420px';
25
+ content.addEventListener('harness-session-open', (event) => {
26
+ console.log('open session', (event as CustomEvent).detail.session);
27
+ });
28
+ DeesModal.createAndShow({
29
+ heading: 'Conversations',
30
+ content: html`${content}`,
31
+ menuOptions: [],
32
+ });
33
+ };
34
+
35
+ export const demoFunc = () => html`
36
+ <style>
37
+ .sessionDemo {
38
+ display: grid;
39
+ grid-template-rows: auto minmax(0, 1fr);
40
+ gap: 12px;
41
+ height: 480px;
42
+ max-width: 420px;
43
+ margin: 40px auto;
44
+ padding: 16px;
45
+ border-radius: var(--dees-radius-xl);
46
+ border: 1px solid var(--dees-color-border-subtle);
47
+ background: var(--dees-color-bg-secondary);
48
+ }
49
+ .sessionDemo dees-harness-session-list { min-height: 0; }
50
+ </style>
51
+ <div class="sessionDemo">
52
+ <dees-button @clicked=${openModal}>Open in a DeesModal</dees-button>
53
+ <dees-harness-session-list
54
+ .sessions=${demoSessions}
55
+ selectedSessionId="session-2"
56
+ @harness-session-select=${(event: CustomEvent) => console.log('select', event.detail.session)}
57
+ ></dees-harness-session-list>
58
+ </div>
59
+ `;
@@ -0,0 +1,222 @@
1
+ import { demoFunc } from './dees-harness-session-list.demo.js';
2
+ import {
3
+ DeesElement,
4
+ html,
5
+ css,
6
+ customElement,
7
+ type TemplateResult,
8
+ property,
9
+ state,
10
+ cssManager,
11
+ } from '@design.estate/dees-element';
12
+ import { themeDefaultStyles } from '../../00theme.js';
13
+ import type { IHarnessSessionMeta } from '../interfaces.js';
14
+ import { harnessFormatRelativeTime } from '../harness.helpers.js';
15
+ import '../../00group-utility/dees-icon/dees-icon.js';
16
+
17
+ declare global {
18
+ interface HTMLElementTagNameMap {
19
+ 'dees-harness-session-list': DeesHarnessSessionList;
20
+ }
21
+ }
22
+
23
+ /**
24
+ * Searchable conversation list, embeddable in a sidebar or a DeesModal.
25
+ * Emits `harness-session-select` on click and `harness-session-open` on
26
+ * double-click or Enter.
27
+ */
28
+ @customElement('dees-harness-session-list')
29
+ export class DeesHarnessSessionList extends DeesElement {
30
+ public static demo = demoFunc;
31
+ public static demoGroups = ['Agent Chat'];
32
+
33
+ @property({ attribute: false })
34
+ accessor sessions: IHarnessSessionMeta[] = [];
35
+
36
+ @property()
37
+ accessor selectedSessionId: string = '';
38
+
39
+ @property({ type: Boolean })
40
+ accessor loading: boolean = false;
41
+
42
+ @property()
43
+ accessor emptyText: string = 'No conversations yet.';
44
+
45
+ @state()
46
+ accessor search: string = '';
47
+
48
+ public static styles = [
49
+ themeDefaultStyles,
50
+ cssManager.defaultStyles,
51
+ css`
52
+ :host {
53
+ display: flex;
54
+ flex-direction: column;
55
+ min-height: 0;
56
+ font-family: var(--dees-font-family);
57
+ }
58
+
59
+ .searchRow {
60
+ flex: 0 0 auto;
61
+ padding: var(--dees-spacing-sm);
62
+ }
63
+
64
+ .searchRow input {
65
+ width: 100%;
66
+ height: var(--dees-control-height-sm);
67
+ padding: 0 var(--dees-spacing-md);
68
+ border: 1px solid var(--dees-color-border-default);
69
+ border-radius: var(--dees-radius-md);
70
+ corner-shape: var(--dees-corner-shape);
71
+ background: var(--dees-color-bg-primary);
72
+ color: var(--dees-color-text-primary);
73
+ font-family: inherit;
74
+ font-size: var(--dees-font-control-size, 13px);
75
+ outline: none;
76
+ box-sizing: border-box;
77
+ }
78
+
79
+ .searchRow input:focus {
80
+ border-color: var(--dees-color-accent-primary);
81
+ box-shadow: 0 0 0 3px var(--dees-color-focus-ring);
82
+ }
83
+
84
+ .list {
85
+ flex: 1;
86
+ min-height: 0;
87
+ overflow-y: auto;
88
+ scrollbar-width: thin;
89
+ scrollbar-color: var(--dees-color-scrollbar-thumb) transparent;
90
+ padding: 0 var(--dees-spacing-xs) var(--dees-spacing-xs);
91
+ display: grid;
92
+ gap: 2px;
93
+ align-content: start;
94
+ }
95
+
96
+ .item {
97
+ width: 100%;
98
+ display: block;
99
+ padding: var(--dees-spacing-xs) var(--dees-spacing-sm);
100
+ border: 0;
101
+ border-radius: var(--dees-radius-md);
102
+ corner-shape: var(--dees-corner-shape);
103
+ background: transparent;
104
+ color: var(--dees-color-text-primary);
105
+ cursor: pointer;
106
+ font-family: inherit;
107
+ text-align: left;
108
+ transition: background var(--dees-transition-fast) var(--dees-ease-standard);
109
+ }
110
+
111
+ .item:hover {
112
+ background: var(--dees-color-hover);
113
+ }
114
+
115
+ .item.selected {
116
+ background: var(--dees-color-active);
117
+ box-shadow: inset 2px 0 0 var(--dees-color-accent-primary);
118
+ }
119
+
120
+ .itemTitle {
121
+ display: flex;
122
+ align-items: baseline;
123
+ gap: var(--dees-spacing-sm);
124
+ font-size: var(--dees-font-control-size-sm, 12px);
125
+ font-weight: 500;
126
+ }
127
+
128
+ .itemTitle .titleText {
129
+ min-width: 0;
130
+ overflow: hidden;
131
+ text-overflow: ellipsis;
132
+ white-space: nowrap;
133
+ }
134
+
135
+ .itemTime {
136
+ margin-left: auto;
137
+ flex: 0 0 auto;
138
+ color: var(--dees-color-text-muted);
139
+ font-size: var(--dees-font-caption2-size, 10px);
140
+ }
141
+
142
+ .itemPreview {
143
+ margin-top: 1px;
144
+ color: var(--dees-color-text-secondary);
145
+ font-size: var(--dees-font-caption1-size, 11px);
146
+ overflow: hidden;
147
+ text-overflow: ellipsis;
148
+ white-space: nowrap;
149
+ }
150
+
151
+ .emptyNote {
152
+ padding: var(--dees-spacing-lg);
153
+ color: var(--dees-color-text-secondary);
154
+ font-size: var(--dees-font-control-size-sm, 12px);
155
+ text-align: center;
156
+ }
157
+ `,
158
+ ];
159
+
160
+ private get filteredSessions(): IHarnessSessionMeta[] {
161
+ const query = this.search.trim().toLowerCase();
162
+ const sorted = [...this.sessions].sort(
163
+ (left, right) => (right.updatedAt ?? right.createdAt ?? 0) - (left.updatedAt ?? left.createdAt ?? 0),
164
+ );
165
+ if (!query) return sorted;
166
+ return sorted.filter((session) =>
167
+ [session.title, session.preview, session.id].filter(Boolean).join(' ').toLowerCase().includes(query),
168
+ );
169
+ }
170
+
171
+ public focusSearch(): void {
172
+ this.shadowRoot?.querySelector<HTMLInputElement>('.searchRow input')?.focus();
173
+ }
174
+
175
+ public render(): TemplateResult {
176
+ const sessions = this.filteredSessions;
177
+ return html`
178
+ <div class="searchRow">
179
+ <input
180
+ placeholder="Search conversations"
181
+ .value=${this.search}
182
+ @input=${(event: Event) => {
183
+ this.search = (event.currentTarget as HTMLInputElement).value;
184
+ }}
185
+ />
186
+ </div>
187
+ <div class="list">
188
+ ${this.loading
189
+ ? html`<div class="emptyNote">Loading conversations…</div>`
190
+ : sessions.length
191
+ ? sessions.map((session) => this.renderItem(session))
192
+ : html`<div class="emptyNote">${this.sessions.length ? 'No conversations match this search.' : this.emptyText}</div>`}
193
+ </div>
194
+ `;
195
+ }
196
+
197
+ private renderItem(session: IHarnessSessionMeta): TemplateResult {
198
+ return html`
199
+ <button
200
+ class="item ${session.id === this.selectedSessionId ? 'selected' : ''}"
201
+ type="button"
202
+ @click=${() => this.emit('harness-session-select', session)}
203
+ @dblclick=${() => this.emit('harness-session-open', session)}
204
+ @keydown=${(event: KeyboardEvent) => {
205
+ if (event.key === 'Enter') this.emit('harness-session-open', session);
206
+ }}
207
+ >
208
+ <span class="itemTitle">
209
+ <span class="titleText">${session.title || session.id}</span>
210
+ <span class="itemTime">${harnessFormatRelativeTime(session.updatedAt ?? session.createdAt)}</span>
211
+ </span>
212
+ ${session.preview
213
+ ? html`<span class="itemPreview">${session.preview}${session.messageCount ? ` · ${session.messageCount} messages` : ''}</span>`
214
+ : ''}
215
+ </button>
216
+ `;
217
+ }
218
+
219
+ private emit(name: string, session: IHarnessSessionMeta): void {
220
+ this.dispatchEvent(new CustomEvent(name, { detail: { session }, bubbles: true, composed: true }));
221
+ }
222
+ }
@@ -0,0 +1 @@
1
+ export * from './dees-harness-session-list.js';
@@ -0,0 +1,35 @@
1
+ import { html } from '@design.estate/dees-element';
2
+
3
+ export const demoFunc = () => html`
4
+ <style>
5
+ .statusDemo {
6
+ display: grid;
7
+ gap: 16px;
8
+ max-width: 520px;
9
+ margin: 40px auto;
10
+ padding: 24px;
11
+ border-radius: var(--dees-radius-xl);
12
+ background: var(--dees-color-bg-secondary);
13
+ }
14
+ .statusDemo .label {
15
+ color: var(--dees-color-text-muted);
16
+ font-size: 11px;
17
+ text-transform: uppercase;
18
+ letter-spacing: 0.05em;
19
+ }
20
+ </style>
21
+ <div class="statusDemo">
22
+ <div class="label">busy (default message)</div>
23
+ <dees-harness-status .status=${{ type: 'busy' as const }}></dees-harness-status>
24
+ <div class="label">busy with detail</div>
25
+ <dees-harness-status
26
+ .status=${{ type: 'busy' as const, message: 'Running tests — 3 of 12 files' }}
27
+ ></dees-harness-status>
28
+ <div class="label">error</div>
29
+ <dees-harness-status
30
+ .status=${{ type: 'error' as const, message: 'The model endpoint returned 429.' }}
31
+ ></dees-harness-status>
32
+ <div class="label">idle with showIdle</div>
33
+ <dees-harness-status .status=${{ type: 'idle' as const }} showIdle></dees-harness-status>
34
+ </div>
35
+ `;
@@ -0,0 +1,187 @@
1
+ import { demoFunc } from './dees-harness-status.demo.js';
2
+ import {
3
+ DeesElement,
4
+ html,
5
+ css,
6
+ customElement,
7
+ type TemplateResult,
8
+ property,
9
+ state,
10
+ cssManager,
11
+ } from '@design.estate/dees-element';
12
+ import { themeDefaultStyles } from '../../00theme.js';
13
+ import type { IHarnessStatus } from '../interfaces.js';
14
+
15
+ declare global {
16
+ interface HTMLElementTagNameMap {
17
+ 'dees-harness-status': DeesHarnessStatus;
18
+ }
19
+ }
20
+
21
+ /** matches --dees-transition-default (0.2s) — the CSS leave transition and the
22
+ * DOM removal below must stay paired */
23
+ const leaveDurationMs = 200;
24
+
25
+ /**
26
+ * Live status line for an agent run: idle (renders nothing unless
27
+ * showIdle), busy with animated dots, or error. Enter and leave are
28
+ * animated — on a transition to idle the previous status keeps rendering
29
+ * with a leave transition before the element empties, so consumers can
30
+ * bind `.status` directly without orchestrating exit animations.
31
+ * aria-live so screen readers announce transitions.
32
+ */
33
+ @customElement('dees-harness-status')
34
+ export class DeesHarnessStatus extends DeesElement {
35
+ public static demo = demoFunc;
36
+ public static demoGroups = ['Agent Chat'];
37
+
38
+ @property({ attribute: false })
39
+ accessor status: IHarnessStatus = { type: 'idle' };
40
+
41
+ @property({ type: Boolean })
42
+ accessor showIdle: boolean = false;
43
+
44
+ @state()
45
+ accessor leaving: boolean = false;
46
+
47
+ private lastVisibleStatus: IHarnessStatus | null = null;
48
+ private leaveTimeout: ReturnType<typeof setTimeout> | null = null;
49
+
50
+ public static styles = [
51
+ themeDefaultStyles,
52
+ cssManager.defaultStyles,
53
+ css`
54
+ :host {
55
+ display: block;
56
+ font-family: var(--dees-font-family);
57
+ }
58
+
59
+ .status {
60
+ display: flex;
61
+ align-items: center;
62
+ margin: var(--dees-spacing-xs) 0;
63
+ gap: var(--dees-spacing-sm);
64
+ color: var(--dees-color-text-secondary);
65
+ font-size: var(--dees-font-control-size-sm, 12px);
66
+ line-height: 1.4;
67
+ white-space: pre-wrap;
68
+ animation: harness-status-enter var(--dees-transition-default) var(--dees-ease-out);
69
+ transition:
70
+ opacity var(--dees-transition-default) var(--dees-ease-in),
71
+ transform var(--dees-transition-default) var(--dees-ease-in);
72
+ }
73
+
74
+ .status.leaving {
75
+ opacity: 0;
76
+ transform: translateY(2px);
77
+ }
78
+
79
+ @keyframes harness-status-enter {
80
+ from {
81
+ opacity: 0;
82
+ transform: translateY(-2px);
83
+ }
84
+ to {
85
+ opacity: 1;
86
+ transform: translateY(0);
87
+ }
88
+ }
89
+
90
+ .status.error {
91
+ color: var(--dees-color-text-error);
92
+ }
93
+
94
+ .dots {
95
+ display: inline-flex;
96
+ gap: 3px;
97
+ }
98
+
99
+ .dots span {
100
+ width: 4px;
101
+ height: 4px;
102
+ border-radius: var(--dees-radius-full);
103
+ background: var(--dees-color-accent-primary);
104
+ animation: harness-status-pulse 1.2s ease-in-out infinite;
105
+ }
106
+
107
+ .dots span:nth-child(2) {
108
+ animation-delay: 0.15s;
109
+ }
110
+
111
+ .dots span:nth-child(3) {
112
+ animation-delay: 0.3s;
113
+ }
114
+
115
+ @keyframes harness-status-pulse {
116
+ 0%, 80%, 100% {
117
+ opacity: 0.25;
118
+ transform: scale(0.8);
119
+ }
120
+ 40% {
121
+ opacity: 1;
122
+ transform: scale(1);
123
+ }
124
+ }
125
+
126
+ @media (prefers-reduced-motion: reduce) {
127
+ .status {
128
+ animation: none;
129
+ transition: none;
130
+ }
131
+ }
132
+ `,
133
+ ];
134
+
135
+ public willUpdate(changedProperties: Map<string, any>): void {
136
+ super.willUpdate(changedProperties);
137
+ if (!changedProperties.has('status')) return;
138
+ if (this.status.type !== 'idle') {
139
+ this.lastVisibleStatus = this.status;
140
+ this.leaving = false;
141
+ this.clearLeaveTimeout();
142
+ } else if (this.lastVisibleStatus && !this.showIdle) {
143
+ // keep the previous status rendered while it fades out
144
+ this.leaving = true;
145
+ this.clearLeaveTimeout();
146
+ this.leaveTimeout = setTimeout(() => {
147
+ this.leaveTimeout = null;
148
+ this.lastVisibleStatus = null;
149
+ this.leaving = false;
150
+ }, leaveDurationMs);
151
+ }
152
+ }
153
+
154
+ public render(): TemplateResult {
155
+ if (this.status.type === 'idle' && !this.showIdle && !this.leaving) {
156
+ return html``;
157
+ }
158
+ const shown = this.leaving ? this.lastVisibleStatus! : this.status;
159
+ return html`
160
+ <div class="status ${shown.type} ${this.leaving ? 'leaving' : ''}" aria-live="polite" role="status">
161
+ ${shown.type === 'busy'
162
+ ? html`<span class="dots"><span></span><span></span><span></span></span>`
163
+ : ''}
164
+ <span>${this.statusText(shown)}</span>
165
+ </div>
166
+ `;
167
+ }
168
+
169
+ private statusText(status: IHarnessStatus): string {
170
+ if (status.message) return status.message;
171
+ if (status.type === 'busy') return 'Working…';
172
+ if (status.type === 'error') return 'Something went wrong.';
173
+ return 'Idle';
174
+ }
175
+
176
+ private clearLeaveTimeout(): void {
177
+ if (this.leaveTimeout) {
178
+ clearTimeout(this.leaveTimeout);
179
+ this.leaveTimeout = null;
180
+ }
181
+ }
182
+
183
+ public async disconnectedCallback(): Promise<void> {
184
+ this.clearLeaveTimeout();
185
+ await super.disconnectedCallback();
186
+ }
187
+ }
@@ -0,0 +1 @@
1
+ export * from './dees-harness-status.js';