@desktalk/core 0.1.0-alpha.1

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 (281) hide show
  1. package/LICENSE +21 -0
  2. package/dist/cli/index.d.ts +3 -0
  3. package/dist/cli/index.d.ts.map +1 -0
  4. package/dist/cli/index.js +82 -0
  5. package/dist/cli/index.js.map +1 -0
  6. package/dist/frontend/assets/frontend-B3QNYf3p.js +413 -0
  7. package/dist/frontend/assets/frontend-B3QNYf3p.js.map +1 -0
  8. package/dist/frontend/assets/frontend-B4aeXn9d.js +416 -0
  9. package/dist/frontend/assets/frontend-B4aeXn9d.js.map +1 -0
  10. package/dist/frontend/assets/frontend-BwyRSlHp.js +6513 -0
  11. package/dist/frontend/assets/frontend-BwyRSlHp.js.map +1 -0
  12. package/dist/frontend/assets/frontend-Dix2OWTT.js +229 -0
  13. package/dist/frontend/assets/frontend-Dix2OWTT.js.map +1 -0
  14. package/dist/frontend/assets/frontend-Dx41dEM9.js +407 -0
  15. package/dist/frontend/assets/frontend-Dx41dEM9.js.map +1 -0
  16. package/dist/frontend/assets/frontend-WpQng8Mt.js +1991 -0
  17. package/dist/frontend/assets/frontend-WpQng8Mt.js.map +1 -0
  18. package/dist/frontend/assets/frontend-rTwBdJbn.js +2123 -0
  19. package/dist/frontend/assets/frontend-rTwBdJbn.js.map +1 -0
  20. package/dist/frontend/assets/highlighted-body-TPN3WLV5-DD4wpkf4.js +2 -0
  21. package/dist/frontend/assets/highlighted-body-TPN3WLV5-DD4wpkf4.js.map +1 -0
  22. package/dist/frontend/assets/index-C5-XUOS7.js +1863 -0
  23. package/dist/frontend/assets/index-C5-XUOS7.js.map +1 -0
  24. package/dist/frontend/assets/index-C_e3_6yE.css +1 -0
  25. package/dist/frontend/index.html +22 -0
  26. package/dist/frontend/pcm-capture-processor.js +65 -0
  27. package/dist/i18n/manifest.json +34 -0
  28. package/dist/i18n/zh-CN.json +7 -0
  29. package/dist/index.d.ts +6 -0
  30. package/dist/index.d.ts.map +1 -0
  31. package/dist/index.js +6 -0
  32. package/dist/index.js.map +1 -0
  33. package/dist/server/admin-routes.d.ts +14 -0
  34. package/dist/server/admin-routes.d.ts.map +1 -0
  35. package/dist/server/admin-routes.js +118 -0
  36. package/dist/server/admin-routes.js.map +1 -0
  37. package/dist/server/api-routes.d.ts +8 -0
  38. package/dist/server/api-routes.d.ts.map +1 -0
  39. package/dist/server/api-routes.js +203 -0
  40. package/dist/server/api-routes.js.map +1 -0
  41. package/dist/server/auth-routes.d.ts +19 -0
  42. package/dist/server/auth-routes.d.ts.map +1 -0
  43. package/dist/server/auth-routes.js +155 -0
  44. package/dist/server/auth-routes.js.map +1 -0
  45. package/dist/server/dtfs-routes.d.ts +3 -0
  46. package/dist/server/dtfs-routes.d.ts.map +1 -0
  47. package/dist/server/dtfs-routes.js +183 -0
  48. package/dist/server/dtfs-routes.js.map +1 -0
  49. package/dist/server/index.d.ts +15 -0
  50. package/dist/server/index.d.ts.map +1 -0
  51. package/dist/server/index.js +158 -0
  52. package/dist/server/index.js.map +1 -0
  53. package/dist/server/monaco-routes.d.ts +3 -0
  54. package/dist/server/monaco-routes.d.ts.map +1 -0
  55. package/dist/server/monaco-routes.js +45 -0
  56. package/dist/server/monaco-routes.js.map +1 -0
  57. package/dist/server/voice-routes.d.ts +7 -0
  58. package/dist/server/voice-routes.d.ts.map +1 -0
  59. package/dist/server/voice-routes.js +142 -0
  60. package/dist/server/voice-routes.js.map +1 -0
  61. package/dist/server/ws-routes.d.ts +29 -0
  62. package/dist/server/ws-routes.d.ts.map +1 -0
  63. package/dist/server/ws-routes.js +334 -0
  64. package/dist/server/ws-routes.js.map +1 -0
  65. package/dist/services/ai/action-tool.d.ts +9 -0
  66. package/dist/services/ai/action-tool.d.ts.map +1 -0
  67. package/dist/services/ai/action-tool.js +51 -0
  68. package/dist/services/ai/action-tool.js.map +1 -0
  69. package/dist/services/ai/app-tools.d.ts +15 -0
  70. package/dist/services/ai/app-tools.d.ts.map +1 -0
  71. package/dist/services/ai/app-tools.js +119 -0
  72. package/dist/services/ai/app-tools.js.map +1 -0
  73. package/dist/services/ai/chat-service.d.ts +27 -0
  74. package/dist/services/ai/chat-service.d.ts.map +1 -0
  75. package/dist/services/ai/chat-service.js +213 -0
  76. package/dist/services/ai/chat-service.js.map +1 -0
  77. package/dist/services/ai/create-liveapp-tool.d.ts +15 -0
  78. package/dist/services/ai/create-liveapp-tool.d.ts.map +1 -0
  79. package/dist/services/ai/create-liveapp-tool.js +142 -0
  80. package/dist/services/ai/create-liveapp-tool.js.map +1 -0
  81. package/dist/services/ai/desktop-tool.d.ts +27 -0
  82. package/dist/services/ai/desktop-tool.d.ts.map +1 -0
  83. package/dist/services/ai/desktop-tool.js +106 -0
  84. package/dist/services/ai/desktop-tool.js.map +1 -0
  85. package/dist/services/ai/edit-history.d.ts +16 -0
  86. package/dist/services/ai/edit-history.d.ts.map +1 -0
  87. package/dist/services/ai/edit-history.js +137 -0
  88. package/dist/services/ai/edit-history.js.map +1 -0
  89. package/dist/services/ai/edit-tool.d.ts +9 -0
  90. package/dist/services/ai/edit-tool.d.ts.map +1 -0
  91. package/dist/services/ai/edit-tool.js +113 -0
  92. package/dist/services/ai/edit-tool.js.map +1 -0
  93. package/dist/services/ai/generate-html-tool.d.ts +15 -0
  94. package/dist/services/ai/generate-html-tool.d.ts.map +1 -0
  95. package/dist/services/ai/generate-html-tool.js +140 -0
  96. package/dist/services/ai/generate-html-tool.js.map +1 -0
  97. package/dist/services/ai/generate-icon-tool.d.ts +10 -0
  98. package/dist/services/ai/generate-icon-tool.d.ts.map +1 -0
  99. package/dist/services/ai/generate-icon-tool.js +58 -0
  100. package/dist/services/ai/generate-icon-tool.js.map +1 -0
  101. package/dist/services/ai/html-bridge-script.d.ts +2 -0
  102. package/dist/services/ai/html-bridge-script.d.ts.map +1 -0
  103. package/dist/services/ai/html-bridge-script.js +2 -0
  104. package/dist/services/ai/html-bridge-script.js.map +1 -0
  105. package/dist/services/ai/html-guidelines-tool.d.ts +3 -0
  106. package/dist/services/ai/html-guidelines-tool.d.ts.map +1 -0
  107. package/dist/services/ai/html-guidelines-tool.js +157 -0
  108. package/dist/services/ai/html-guidelines-tool.js.map +1 -0
  109. package/dist/services/ai/html-stream-coordinator.d.ts +92 -0
  110. package/dist/services/ai/html-stream-coordinator.d.ts.map +1 -0
  111. package/dist/services/ai/html-stream-coordinator.js +314 -0
  112. package/dist/services/ai/html-stream-coordinator.js.map +1 -0
  113. package/dist/services/ai/html-theme-link.d.ts +9 -0
  114. package/dist/services/ai/html-theme-link.d.ts.map +1 -0
  115. package/dist/services/ai/html-theme-link.js +12 -0
  116. package/dist/services/ai/html-theme-link.js.map +1 -0
  117. package/dist/services/ai/html-ui-script.d.ts +9 -0
  118. package/dist/services/ai/html-ui-script.d.ts.map +1 -0
  119. package/dist/services/ai/html-ui-script.js +9 -0
  120. package/dist/services/ai/html-ui-script.js.map +1 -0
  121. package/dist/services/ai/image-generation-service.d.ts +26 -0
  122. package/dist/services/ai/image-generation-service.d.ts.map +1 -0
  123. package/dist/services/ai/image-generation-service.js +205 -0
  124. package/dist/services/ai/image-generation-service.js.map +1 -0
  125. package/dist/services/ai/manual-pages/desktop-actions.md +36 -0
  126. package/dist/services/ai/manual-pages/desktop-windows.md +24 -0
  127. package/dist/services/ai/manual-pages/dt-badge.md +36 -0
  128. package/dist/services/ai/manual-pages/dt-button.md +38 -0
  129. package/dist/services/ai/manual-pages/dt-card.md +22 -0
  130. package/dist/services/ai/manual-pages/dt-chart.md +261 -0
  131. package/dist/services/ai/manual-pages/dt-divider.md +25 -0
  132. package/dist/services/ai/manual-pages/dt-grid.md +29 -0
  133. package/dist/services/ai/manual-pages/dt-list-view.md +96 -0
  134. package/dist/services/ai/manual-pages/dt-markdown-editor.md +90 -0
  135. package/dist/services/ai/manual-pages/dt-markdown.md +86 -0
  136. package/dist/services/ai/manual-pages/dt-select.md +21 -0
  137. package/dist/services/ai/manual-pages/dt-stack.md +31 -0
  138. package/dist/services/ai/manual-pages/dt-stat.md +43 -0
  139. package/dist/services/ai/manual-pages/dt-table-view.md +120 -0
  140. package/dist/services/ai/manual-pages/dt-tooltip.md +18 -0
  141. package/dist/services/ai/manual-pages/editing-preview.md +25 -0
  142. package/dist/services/ai/manual-pages/html-actions.md +74 -0
  143. package/dist/services/ai/manual-pages/html-bridge.md +187 -0
  144. package/dist/services/ai/manual-pages/html-components.md +66 -0
  145. package/dist/services/ai/manual-pages/html-examples.md +185 -0
  146. package/dist/services/ai/manual-pages/html-layouts.md +128 -0
  147. package/dist/services/ai/manual-pages/html-storage.md +153 -0
  148. package/dist/services/ai/manual-pages/html-tokens.md +26 -0
  149. package/dist/services/ai/manual-pages/index.d.ts +10 -0
  150. package/dist/services/ai/manual-pages/index.d.ts.map +1 -0
  151. package/dist/services/ai/manual-pages/index.js +186 -0
  152. package/dist/services/ai/manual-pages/index.js.map +1 -0
  153. package/dist/services/ai/manual-tool.d.ts +3 -0
  154. package/dist/services/ai/manual-tool.d.ts.map +1 -0
  155. package/dist/services/ai/manual-tool.js +104 -0
  156. package/dist/services/ai/manual-tool.js.map +1 -0
  157. package/dist/services/ai/pi-session-service.d.ts +101 -0
  158. package/dist/services/ai/pi-session-service.d.ts.map +1 -0
  159. package/dist/services/ai/pi-session-service.js +697 -0
  160. package/dist/services/ai/pi-session-service.js.map +1 -0
  161. package/dist/services/ai/providers.d.ts +21 -0
  162. package/dist/services/ai/providers.d.ts.map +1 -0
  163. package/dist/services/ai/providers.js +93 -0
  164. package/dist/services/ai/providers.js.map +1 -0
  165. package/dist/services/ai/redo-edit-tool.d.ts +9 -0
  166. package/dist/services/ai/redo-edit-tool.d.ts.map +1 -0
  167. package/dist/services/ai/redo-edit-tool.js +44 -0
  168. package/dist/services/ai/redo-edit-tool.js.map +1 -0
  169. package/dist/services/ai/system-prompt.d.ts +7 -0
  170. package/dist/services/ai/system-prompt.d.ts.map +1 -0
  171. package/dist/services/ai/system-prompt.js +72 -0
  172. package/dist/services/ai/system-prompt.js.map +1 -0
  173. package/dist/services/ai/undo-edit-tool.d.ts +9 -0
  174. package/dist/services/ai/undo-edit-tool.d.ts.map +1 -0
  175. package/dist/services/ai/undo-edit-tool.js +44 -0
  176. package/dist/services/ai/undo-edit-tool.js.map +1 -0
  177. package/dist/services/ai/window-tools.d.ts +27 -0
  178. package/dist/services/ai/window-tools.d.ts.map +1 -0
  179. package/dist/services/ai/window-tools.js +155 -0
  180. package/dist/services/ai/window-tools.js.map +1 -0
  181. package/dist/services/backend-host.d.ts +10 -0
  182. package/dist/services/backend-host.d.ts.map +1 -0
  183. package/dist/services/backend-host.js +117 -0
  184. package/dist/services/backend-host.js.map +1 -0
  185. package/dist/services/backend-ipc.d.ts +60 -0
  186. package/dist/services/backend-ipc.d.ts.map +1 -0
  187. package/dist/services/backend-ipc.js +2 -0
  188. package/dist/services/backend-ipc.js.map +1 -0
  189. package/dist/services/backend-process-manager.d.ts +60 -0
  190. package/dist/services/backend-process-manager.d.ts.map +1 -0
  191. package/dist/services/backend-process-manager.js +203 -0
  192. package/dist/services/backend-process-manager.js.map +1 -0
  193. package/dist/services/filesystem.d.ts +8 -0
  194. package/dist/services/filesystem.d.ts.map +1 -0
  195. package/dist/services/filesystem.js +94 -0
  196. package/dist/services/filesystem.js.map +1 -0
  197. package/dist/services/i18n.d.ts +28 -0
  198. package/dist/services/i18n.d.ts.map +1 -0
  199. package/dist/services/i18n.js +76 -0
  200. package/dist/services/i18n.js.map +1 -0
  201. package/dist/services/liveapp-icon.d.ts +9 -0
  202. package/dist/services/liveapp-icon.d.ts.map +1 -0
  203. package/dist/services/liveapp-icon.js +28 -0
  204. package/dist/services/liveapp-icon.js.map +1 -0
  205. package/dist/services/liveapps.d.ts +12 -0
  206. package/dist/services/liveapps.d.ts.map +1 -0
  207. package/dist/services/liveapps.js +84 -0
  208. package/dist/services/liveapps.js.map +1 -0
  209. package/dist/services/logger.d.ts +34 -0
  210. package/dist/services/logger.d.ts.map +1 -0
  211. package/dist/services/logger.js +74 -0
  212. package/dist/services/logger.js.map +1 -0
  213. package/dist/services/messaging.d.ts +14 -0
  214. package/dist/services/messaging.d.ts.map +1 -0
  215. package/dist/services/messaging.js +41 -0
  216. package/dist/services/messaging.js.map +1 -0
  217. package/dist/services/miniapp-icon.d.ts +9 -0
  218. package/dist/services/miniapp-icon.d.ts.map +1 -0
  219. package/dist/services/miniapp-icon.js +25 -0
  220. package/dist/services/miniapp-icon.js.map +1 -0
  221. package/dist/services/miniapp-registry.d.ts +73 -0
  222. package/dist/services/miniapp-registry.d.ts.map +1 -0
  223. package/dist/services/miniapp-registry.js +144 -0
  224. package/dist/services/miniapp-registry.js.map +1 -0
  225. package/dist/services/onboarding-config.d.ts +37 -0
  226. package/dist/services/onboarding-config.d.ts.map +1 -0
  227. package/dist/services/onboarding-config.js +76 -0
  228. package/dist/services/onboarding-config.js.map +1 -0
  229. package/dist/services/preferences.d.ts +10 -0
  230. package/dist/services/preferences.d.ts.map +1 -0
  231. package/dist/services/preferences.js +48 -0
  232. package/dist/services/preferences.js.map +1 -0
  233. package/dist/services/proxy-dispatcher.d.ts +18 -0
  234. package/dist/services/proxy-dispatcher.d.ts.map +1 -0
  235. package/dist/services/proxy-dispatcher.js +33 -0
  236. package/dist/services/proxy-dispatcher.js.map +1 -0
  237. package/dist/services/storage.d.ts +7 -0
  238. package/dist/services/storage.d.ts.map +1 -0
  239. package/dist/services/storage.js +55 -0
  240. package/dist/services/storage.js.map +1 -0
  241. package/dist/services/theme-css.d.ts +21 -0
  242. package/dist/services/theme-css.d.ts.map +1 -0
  243. package/dist/services/theme-css.js +213 -0
  244. package/dist/services/theme-css.js.map +1 -0
  245. package/dist/services/user-db.d.ts +69 -0
  246. package/dist/services/user-db.d.ts.map +1 -0
  247. package/dist/services/user-db.js +175 -0
  248. package/dist/services/user-db.js.map +1 -0
  249. package/dist/services/voice/audio-format.d.ts +5 -0
  250. package/dist/services/voice/audio-format.d.ts.map +1 -0
  251. package/dist/services/voice/audio-format.js +27 -0
  252. package/dist/services/voice/audio-format.js.map +1 -0
  253. package/dist/services/voice/azure-openai-whisper-adapter.d.ts +23 -0
  254. package/dist/services/voice/azure-openai-whisper-adapter.d.ts.map +1 -0
  255. package/dist/services/voice/azure-openai-whisper-adapter.js +60 -0
  256. package/dist/services/voice/azure-openai-whisper-adapter.js.map +1 -0
  257. package/dist/services/voice/openai-whisper-adapter.d.ts +22 -0
  258. package/dist/services/voice/openai-whisper-adapter.d.ts.map +1 -0
  259. package/dist/services/voice/openai-whisper-adapter.js +61 -0
  260. package/dist/services/voice/openai-whisper-adapter.js.map +1 -0
  261. package/dist/services/voice/stt-adapter.d.ts +31 -0
  262. package/dist/services/voice/stt-adapter.d.ts.map +1 -0
  263. package/dist/services/voice/stt-adapter.js +8 -0
  264. package/dist/services/voice/stt-adapter.js.map +1 -0
  265. package/dist/services/voice/vad-segmenter.d.ts +68 -0
  266. package/dist/services/voice/vad-segmenter.d.ts.map +1 -0
  267. package/dist/services/voice/vad-segmenter.js +159 -0
  268. package/dist/services/voice/vad-segmenter.js.map +1 -0
  269. package/dist/services/voice/voice-session.d.ts +54 -0
  270. package/dist/services/voice/voice-session.d.ts.map +1 -0
  271. package/dist/services/voice/voice-session.js +137 -0
  272. package/dist/services/voice/voice-session.js.map +1 -0
  273. package/dist/services/window-manager.d.ts +94 -0
  274. package/dist/services/window-manager.d.ts.map +1 -0
  275. package/dist/services/window-manager.js +282 -0
  276. package/dist/services/window-manager.js.map +1 -0
  277. package/dist/services/workspace.d.ts +51 -0
  278. package/dist/services/workspace.d.ts.map +1 -0
  279. package/dist/services/workspace.js +144 -0
  280. package/dist/services/workspace.js.map +1 -0
  281. package/package.json +89 -0
@@ -0,0 +1,36 @@
1
+ # Desktop Actions
2
+
3
+ Use the `action` tool to call MiniApp actions by name.
4
+
5
+ ## Source of Truth
6
+
7
+ Every user message starts with a `[Desktop Context]` block.
8
+
9
+ That block tells you:
10
+
11
+ - `Home` — the absolute filesystem path to the user's home directory
12
+ - which window is focused
13
+ - which actions are registered on the focused window
14
+ - the parameter schema for each action
15
+
16
+ Read it before invoking `action`.
17
+
18
+ ## Rules
19
+
20
+ - Provide all required params as a JSON object.
21
+ - If `windowId` is omitted, the action runs on the focused window.
22
+ - If you need to target a different window, pass `windowId` explicitly or focus that window first.
23
+
24
+ ## Preview Editing Pattern
25
+
26
+ For Preview edits, use `Get State` first.
27
+
28
+ The expected sequence is:
29
+
30
+ 1. Call the focused Preview action `Get State`.
31
+ 2. Read `file.path` from the action result — this is **relative to Home**.
32
+ 3. Join `file.path` with the `Home` path from `[Desktop Context]` to form an absolute path.
33
+ 4. Use the built-in `read` tool to inspect the file at the absolute path.
34
+ 5. Use `edit` with an exact `oldText` match.
35
+
36
+ Do not guess Preview file paths.
@@ -0,0 +1,24 @@
1
+ # Desktop Windows
2
+
3
+ Use the `desktop` tool for window-level operations.
4
+
5
+ ## Actions
6
+
7
+ - `action="list"` -> get all open windows, the focused window, and available MiniApps
8
+ - `action="open"` with `miniAppId` -> open a MiniApp window
9
+ - `action="focus"` with `windowId` -> focus a window
10
+ - `action="maximize"` with `windowId` -> maximize a window
11
+ - `action="close"` with `windowId` -> close a window
12
+
13
+ ## Usage Patterns
14
+
15
+ - Use `list` when you need fresh window IDs mid-conversation.
16
+ - Use `open` when the user wants a MiniApp launched and you do not already have a suitable window.
17
+ - If you need to act on a specific existing window, either focus it first or pass `windowId` explicitly.
18
+ - Opening a MiniApp with the same shallow-equal args may focus the existing window instead of creating a duplicate.
19
+
20
+ ## Result Expectations
21
+
22
+ - `list` returns the current window set plus focused-window actions.
23
+ - `open` returns a `windowId` for the opened or focused window.
24
+ - Mutating actions fail if the target window does not exist.
@@ -0,0 +1,36 @@
1
+ # `<dt-badge>`
2
+
3
+ Inline status pill/badge.
4
+
5
+ ## Attributes
6
+
7
+ - `variant` — status color: `accent` (default), `success`, `danger`, `warning`, `info`, `neutral`
8
+ - `size` — size: `sm`, `md` (default), `lg`
9
+ - `text` — badge text (alternative to slot content)
10
+
11
+ **When to use:** Use for status indicators, labels, category tags.
12
+
13
+ ## Examples
14
+
15
+ ```html
16
+ <dt-badge>New</dt-badge>
17
+
18
+ <dt-badge variant="success">Active</dt-badge>
19
+
20
+ <dt-badge variant="danger" size="lg">Error</dt-badge>
21
+
22
+ <dt-badge variant="info" size="sm">Beta</dt-badge>
23
+ ```
24
+
25
+ ## Full-Page Example — Status Badges
26
+
27
+ ```html
28
+ <dt-stack direction="row" gap="8">
29
+ <dt-badge>Default</dt-badge>
30
+ <dt-badge variant="success">Success</dt-badge>
31
+ <dt-badge variant="warning">Warning</dt-badge>
32
+ <dt-badge variant="danger">Error</dt-badge>
33
+ <dt-badge variant="info">Info</dt-badge>
34
+ <dt-badge variant="neutral">Neutral</dt-badge>
35
+ </dt-stack>
36
+ ```
@@ -0,0 +1,38 @@
1
+ # `<dt-button>`
2
+
3
+ Themed button component.
4
+
5
+ ## Attributes
6
+
7
+ - `variant` — button style: `primary` (default), `secondary`, `ghost`, `danger`
8
+ - `size` — button size: `sm`, `md` (default), `lg`
9
+ - `disabled` — disables the button
10
+ - `fullwidth` — makes the button fill its container width
11
+ - `type` — HTML button type: `button` (default), `submit`, `reset`
12
+
13
+ **When to use:** Use for all clickable actions. Always prefer `<dt-button>` over `<button>` or `.btn` class.
14
+
15
+ ## Examples
16
+
17
+ ```html
18
+ <dt-button>Save</dt-button>
19
+
20
+ <dt-button variant="secondary">Cancel</dt-button>
21
+
22
+ <dt-button variant="danger" size="sm">Delete</dt-button>
23
+
24
+ <dt-button variant="ghost" disabled>Disabled</dt-button>
25
+
26
+ <dt-button fullwidth>Full Width Button</dt-button>
27
+ ```
28
+
29
+ ## Full-Page Example — Action Buttons
30
+
31
+ ```html
32
+ <dt-stack direction="row" gap="12" align="center">
33
+ <dt-button>Primary</dt-button>
34
+ <dt-button variant="secondary">Secondary</dt-button>
35
+ <dt-button variant="ghost">Ghost</dt-button>
36
+ <dt-button variant="danger">Danger</dt-button>
37
+ </dt-stack>
38
+ ```
@@ -0,0 +1,22 @@
1
+ # `<dt-card>`
2
+
3
+ Use `<dt-card>` for any visually grouped content: information panels, stat blocks, feature tiles, settings groups, and list items that need a visible container.
4
+
5
+ ## Attributes
6
+
7
+ - `variant="default"` — solid surface background (default)
8
+ - `variant="outlined"` — transparent background with border
9
+ - `variant="filled"` — accent-subtle background
10
+
11
+ ## Examples
12
+
13
+ ```html
14
+ <dt-card>
15
+ <h3>Title</h3>
16
+ <p>Card content goes here.</p>
17
+ </dt-card>
18
+
19
+ <dt-card variant="outlined">
20
+ <p>Outlined card with transparent background.</p>
21
+ </dt-card>
22
+ ```
@@ -0,0 +1,261 @@
1
+ # `<dt-chart>`
2
+
3
+ Interactive chart component powered by Chart.js. Data is provided exclusively via the `.data` JS property.
4
+
5
+ ## Attributes
6
+
7
+ - `type` — `bar` (default), `line`, `area`, `pie`, `doughnut`, `radar`, `scatter`, `bubble`
8
+ - `labels` — comma-separated category labels such as `labels="Jan,Feb,Mar"` (convenience; can also set labels inside `.data`)
9
+ - `legend` — `top`, `bottom`, `left`, `right`, `none` (default)
10
+ - `stacked` — stacks bar and line datasets
11
+ - `dt-chart-click` event — emitted with `{ label, datasetIndex, index, value }`
12
+
13
+ ## `.data` Property (required)
14
+
15
+ All chart data **must** be set through the `.data` JS property. There is no HTML-only way to fill data.
16
+
17
+ ```ts
18
+ interface DtChartData {
19
+ labels?: string[]; // category labels for the x-axis
20
+ datasets: DtChartDataset[];
21
+ }
22
+
23
+ interface DtChartDataset {
24
+ label?: string; // legend label for this series
25
+ data:
26
+ | number[] // values for bar, line, area, pie, doughnut, radar
27
+ | { x: number; y: number }[] // for scatter
28
+ | { x: number; y: number; r: number }[]; // for bubble
29
+ color?: string; // optional CSS color override; auto-assigned from theme palette if omitted
30
+ }
31
+ ```
32
+
33
+ ## `.options` Property (advanced, rarely needed)
34
+
35
+ Raw Chart.js options object merged under the auto-themed defaults. Only use this when you need fine-grained control over axes, tooltips, etc.
36
+
37
+ ## How to Use
38
+
39
+ 1. Create a `<dt-chart>` element in HTML with the desired `type`, `labels`, `legend`, and an **explicit height**.
40
+ 2. In a `<script>` block, select the element and assign its `.data` property.
41
+
42
+ **Important:** The `<dt-chart>` element **requires an explicit height** via inline `style` or a CSS class. Without it the chart will not be visible.
43
+
44
+ **When to use:** Use for charts, graphs, trends, comparisons, and composition breakdowns. Prefer `<dt-stat>` for single KPIs.
45
+
46
+ ## Examples
47
+
48
+ ### Bar chart with two datasets
49
+
50
+ ```html
51
+ <dt-chart
52
+ id="revenue"
53
+ type="bar"
54
+ legend="top"
55
+ labels="Jan,Feb,Mar,Apr"
56
+ style="height: 300px"
57
+ ></dt-chart>
58
+
59
+ <script>
60
+ document.getElementById('revenue').data = {
61
+ datasets: [
62
+ { label: 'Revenue', data: [12, 19, 3, 5] },
63
+ { label: 'Costs', data: [7, 11, 5, 8] },
64
+ ],
65
+ };
66
+ </script>
67
+ ```
68
+
69
+ ### Doughnut chart
70
+
71
+ ```html
72
+ <dt-chart
73
+ id="categories"
74
+ type="doughnut"
75
+ legend="right"
76
+ labels="Electronics,Clothing,Food"
77
+ style="height: 250px"
78
+ ></dt-chart>
79
+
80
+ <script>
81
+ document.getElementById('categories').data = {
82
+ datasets: [{ label: 'Sales', data: [35, 25, 22] }],
83
+ };
84
+ </script>
85
+ ```
86
+
87
+ ### Line chart (area fill)
88
+
89
+ ```html
90
+ <dt-chart
91
+ id="growth"
92
+ type="area"
93
+ legend="none"
94
+ labels="Jan,Feb,Mar,Apr,May,Jun"
95
+ style="height: 300px"
96
+ ></dt-chart>
97
+
98
+ <script>
99
+ document.getElementById('growth').data = {
100
+ datasets: [{ label: 'Users', data: [150, 230, 224, 318, 435, 547] }],
101
+ };
102
+ </script>
103
+ ```
104
+
105
+ ### Scatter chart
106
+
107
+ ```html
108
+ <dt-chart id="scatter" type="scatter" legend="top" style="height: 300px"></dt-chart>
109
+
110
+ <script>
111
+ document.getElementById('scatter').data = {
112
+ datasets: [
113
+ {
114
+ label: 'Samples',
115
+ data: [
116
+ { x: 1, y: 2 },
117
+ { x: 3, y: 4 },
118
+ { x: 5, y: 1 },
119
+ ],
120
+ },
121
+ ],
122
+ };
123
+ </script>
124
+ ```
125
+
126
+ ### Radar chart
127
+
128
+ ```html
129
+ <dt-chart
130
+ id="radar"
131
+ type="radar"
132
+ legend="bottom"
133
+ labels="Speed,Reliability,Comfort,Safety,Efficiency"
134
+ style="height: 250px"
135
+ ></dt-chart>
136
+
137
+ <script>
138
+ document.getElementById('radar').data = {
139
+ datasets: [
140
+ { label: 'Model A', data: [65, 59, 90, 81, 56] },
141
+ { label: 'Model B', data: [28, 48, 40, 19, 96] },
142
+ ],
143
+ };
144
+ </script>
145
+ ```
146
+
147
+ ### Stacked bar chart
148
+
149
+ ```html
150
+ <dt-chart
151
+ id="stacked"
152
+ type="bar"
153
+ legend="top"
154
+ stacked
155
+ labels="Jan,Feb,Mar,Apr,May,Jun"
156
+ style="height: 300px"
157
+ ></dt-chart>
158
+
159
+ <script>
160
+ document.getElementById('stacked').data = {
161
+ datasets: [
162
+ { label: 'Online', data: [12, 19, 3, 5, 2, 3] },
163
+ { label: 'Retail', data: [7, 11, 5, 8, 3, 7] },
164
+ ],
165
+ };
166
+ </script>
167
+ ```
168
+
169
+ ## Full-Page Example — Sales Dashboard Charts
170
+
171
+ ```html
172
+ <!doctype html>
173
+ <html>
174
+ <head>
175
+ <meta charset="utf-8" />
176
+ <meta name="viewport" content="width=device-width, initial-scale=1" />
177
+ <title>Sales Dashboard</title>
178
+ <style>
179
+ body {
180
+ background: var(--dt-bg);
181
+ }
182
+
183
+ .chart-box {
184
+ height: 300px;
185
+ }
186
+ </style>
187
+ </head>
188
+ <body>
189
+ <h1>Sales Dashboard</h1>
190
+ <dt-grid cols="2" gap="16">
191
+ <dt-card>
192
+ <h2>Revenue by Month</h2>
193
+ <dt-chart
194
+ id="revenue-chart"
195
+ type="bar"
196
+ legend="top"
197
+ stacked
198
+ labels="Jan,Feb,Mar,Apr,May,Jun"
199
+ class="chart-box"
200
+ ></dt-chart>
201
+ </dt-card>
202
+
203
+ <dt-card>
204
+ <h2>User Growth</h2>
205
+ <dt-chart
206
+ id="growth-chart"
207
+ type="area"
208
+ legend="none"
209
+ labels="Jan,Feb,Mar,Apr,May,Jun"
210
+ class="chart-box"
211
+ ></dt-chart>
212
+ </dt-card>
213
+ </dt-grid>
214
+
215
+ <dt-card style="margin-top: 16px">
216
+ <h2>Category Breakdown</h2>
217
+ <dt-grid cols="2" gap="16">
218
+ <dt-chart
219
+ id="category-chart"
220
+ type="doughnut"
221
+ legend="right"
222
+ labels="Electronics,Clothing,Food,Books"
223
+ style="height: 250px"
224
+ ></dt-chart>
225
+
226
+ <dt-chart
227
+ id="comparison-chart"
228
+ type="radar"
229
+ legend="bottom"
230
+ labels="Speed,Reliability,Comfort,Safety,Efficiency"
231
+ style="height: 250px"
232
+ ></dt-chart>
233
+ </dt-grid>
234
+ </dt-card>
235
+
236
+ <script>
237
+ document.getElementById('revenue-chart').data = {
238
+ datasets: [
239
+ { label: 'Online', data: [12, 19, 3, 5, 2, 3] },
240
+ { label: 'Retail', data: [7, 11, 5, 8, 3, 7] },
241
+ ],
242
+ };
243
+
244
+ document.getElementById('growth-chart').data = {
245
+ datasets: [{ label: 'Users', data: [150, 230, 224, 318, 435, 547] }],
246
+ };
247
+
248
+ document.getElementById('category-chart').data = {
249
+ datasets: [{ label: 'Sales', data: [35, 25, 22, 18] }],
250
+ };
251
+
252
+ document.getElementById('comparison-chart').data = {
253
+ datasets: [
254
+ { label: 'Model A', data: [65, 59, 90, 81, 56] },
255
+ { label: 'Model B', data: [28, 48, 40, 19, 96] },
256
+ ],
257
+ };
258
+ </script>
259
+ </body>
260
+ </html>
261
+ ```
@@ -0,0 +1,25 @@
1
+ # `<dt-divider>`
2
+
3
+ Horizontal or vertical separator line.
4
+
5
+ ## Attributes
6
+
7
+ - `direction` — orientation: `horizontal` (default) or `vertical`
8
+ - `style-variant` — border style: `default`, `subtle`, `strong`
9
+ - `spacing` — margin around divider: `sm`, `md`, `lg`
10
+
11
+ **When to use:** Use to separate sections or items in a list.
12
+
13
+ ## Examples
14
+
15
+ ```html
16
+ <!-- Horizontal divider (default) -->
17
+ <dt-divider></dt-divider>
18
+
19
+ <!-- Vertical divider in a row layout -->
20
+ <dt-stack direction="row">
21
+ <span>Left</span>
22
+ <dt-divider direction="vertical"></dt-divider>
23
+ <span>Right</span>
24
+ </dt-stack>
25
+ ```
@@ -0,0 +1,29 @@
1
+ # `<dt-grid>`
2
+
3
+ Auto-responsive grid layout. Columns collapse automatically in narrow views.
4
+
5
+ ## Attributes
6
+
7
+ - `cols` — fixed number of columns: `1`, `2`, `3`, `4`, `5`, `6` (auto-fit responsive when omitted)
8
+ - `gap` — spacing between items: `0`, `4`, `8`, `12`, `16`, `20`, `24`, `32` (default: `16`)
9
+ - `min-width` — minimum width for auto-fit columns: `150`, `180`, `200`, `220`, `260`, `300` (default: `220`)
10
+
11
+ **When to use:** Use for any multi-column layout. Prefer omitting `cols` for auto-responsive behavior unless you need a specific number of columns.
12
+
13
+ ## Examples
14
+
15
+ ```html
16
+ <!-- Auto-responsive: columns collapse based on available space -->
17
+ <dt-grid>
18
+ <dt-card>Item 1</dt-card>
19
+ <dt-card>Item 2</dt-card>
20
+ <dt-card>Item 3</dt-card>
21
+ </dt-grid>
22
+
23
+ <!-- Fixed 3 columns, collapses to 1 on mobile -->
24
+ <dt-grid cols="3" gap="24">
25
+ <dt-stat label="CPU" value="42%"></dt-stat>
26
+ <dt-stat label="RAM" value="8GB"></dt-stat>
27
+ <dt-stat label="Disk" value="256GB"></dt-stat>
28
+ </dt-grid>
29
+ ```
@@ -0,0 +1,96 @@
1
+ # `<dt-list-view>`
2
+
3
+ Virtualized list for long collections. Supports fixed-height rows when `item-height` is provided and variable-height measurement mode when omitted.
4
+
5
+ ## Attributes
6
+
7
+ - `item-height` — fixed row height in px; omit for variable-height measurement mode
8
+ - `dividers` — show dividers between rows
9
+ - `selectable` — `none`, `single`, or `multi`
10
+ - `empty-text` — empty-state text
11
+ - `.items` JS property — array of list item objects
12
+ - `dt-item-click` event — emitted when a row is clicked
13
+ - `dt-selection-change` event — emitted when selection changes
14
+
15
+ **When to use:** Use for task lists, logs, search results, files, and any long collection that might grow beyond a few dozen rows.
16
+
17
+ ## Examples
18
+
19
+ ```html
20
+ <dt-list-view id="task-list" item-height="72" dividers selectable="single">
21
+ <template>
22
+ <dt-stack gap="8">
23
+ <dt-stack direction="row" align="center" gap="8">
24
+ <strong data-field="title"></strong>
25
+ <dt-badge data-field="status" data-field-variant="statusVariant"></dt-badge>
26
+ </dt-stack>
27
+ <span class="text-muted" data-field="summary"></span>
28
+ </dt-stack>
29
+ </template>
30
+ </dt-list-view>
31
+
32
+ <script>
33
+ document.getElementById('task-list').items = [
34
+ {
35
+ title: 'Review report',
36
+ status: 'Queued',
37
+ statusVariant: 'warning',
38
+ summary: 'Waiting on CPU budget',
39
+ },
40
+ {
41
+ title: 'Publish build',
42
+ status: 'Done',
43
+ statusVariant: 'success',
44
+ summary: 'Released 4 minutes ago',
45
+ },
46
+ ];
47
+ </script>
48
+ ```
49
+
50
+ ## Full-Page Example — Virtualized Log List
51
+
52
+ ```html
53
+ <!doctype html>
54
+ <html>
55
+ <head>
56
+ <meta charset="utf-8" />
57
+ <meta name="viewport" content="width=device-width, initial-scale=1" />
58
+ <title>Deployment Logs</title>
59
+ <style>
60
+ body {
61
+ background: var(--dt-bg);
62
+ }
63
+
64
+ #log-list {
65
+ height: 360px;
66
+ }
67
+ </style>
68
+ </head>
69
+ <body>
70
+ <h1>Deployment Logs</h1>
71
+ <dt-card>
72
+ <dt-list-view id="log-list" item-height="68" dividers>
73
+ <template>
74
+ <dt-stack gap="8">
75
+ <dt-stack direction="row" align="center" gap="8">
76
+ <strong data-field="service"></strong>
77
+ <dt-badge data-field="level" data-field-variant="variant"></dt-badge>
78
+ </dt-stack>
79
+ <span class="text-muted" data-field="message"></span>
80
+ </dt-stack>
81
+ </template>
82
+ </dt-list-view>
83
+ </dt-card>
84
+
85
+ <script>
86
+ const list = document.getElementById('log-list');
87
+ list.items = Array.from({ length: 250 }, (_, index) => ({
88
+ service: `agent-${(index % 8) + 1}`,
89
+ level: index % 5 === 0 ? 'warn' : 'info',
90
+ variant: index % 5 === 0 ? 'warning' : 'info',
91
+ message: `Processed batch ${index + 1} successfully.`,
92
+ }));
93
+ </script>
94
+ </body>
95
+ </html>
96
+ ```
@@ -0,0 +1,90 @@
1
+ # `<dt-markdown-editor>`
2
+
3
+ WYSIWYG markdown editor powered by Milkdown. Users edit formatted content directly, while the component stores and returns markdown.
4
+
5
+ ## Attributes
6
+
7
+ - `placeholder` — empty editor hint text
8
+ - `readonly` — makes the editor read-only
9
+ - `.value` JS property — get or replace the current markdown document
10
+ - `dt-change` event — emitted with `{ value }` after content changes (debounced)
11
+ - `dt-focus` event — emitted when the editor gains focus
12
+ - `dt-blur` event — emitted when the editor loses focus
13
+
14
+ **When to use:** Use for notes, documentation, comments, change logs, prompts, and any workflow that needs rich text authoring without building your own editor UI.
15
+
16
+ ## Examples
17
+
18
+ ```html
19
+ <dt-markdown-editor
20
+ id="note-editor"
21
+ placeholder="Write something..."
22
+ style="height: 400px"
23
+ ></dt-markdown-editor>
24
+ <dt-button id="save-note">Save</dt-button>
25
+
26
+ <script>
27
+ const editor = document.getElementById('note-editor');
28
+ editor.value = '# Team Notes\n\n- Review onboarding docs\n- Schedule release check';
29
+
30
+ document.getElementById('save-note').addEventListener('click', () => {
31
+ window.DeskTalk.storage.set('notes.latest', editor.value);
32
+ });
33
+ </script>
34
+ ```
35
+
36
+ ## Full-Page Example — Markdown Note Editor
37
+
38
+ ```html
39
+ <!doctype html>
40
+ <html>
41
+ <head>
42
+ <meta charset="utf-8" />
43
+ <meta name="viewport" content="width=device-width, initial-scale=1" />
44
+ <title>Notes</title>
45
+ <style>
46
+ body {
47
+ background: var(--dt-bg);
48
+ }
49
+
50
+ #editor {
51
+ height: 420px;
52
+ }
53
+ </style>
54
+ </head>
55
+ <body>
56
+ <h1>Operations Notes</h1>
57
+ <dt-stack gap="12">
58
+ <dt-stack direction="row" align="center" gap="8">
59
+ <dt-button id="save">Save</dt-button>
60
+ <dt-badge id="status" variant="neutral">Saved</dt-badge>
61
+ </dt-stack>
62
+ <dt-card>
63
+ <dt-markdown-editor id="editor" placeholder="Capture findings..."></dt-markdown-editor>
64
+ </dt-card>
65
+ </dt-stack>
66
+
67
+ <script>
68
+ const editor = document.getElementById('editor');
69
+ const status = document.getElementById('status');
70
+ const save = document.getElementById('save');
71
+ const saved =
72
+ window.DeskTalk.storage.get('ops.note') ||
73
+ '# Incident Review\n\n## Timeline\n\n- 09:00 Started investigation';
74
+
75
+ editor.value = saved;
76
+
77
+ editor.addEventListener('dt-change', () => {
78
+ status.textContent = 'Unsaved';
79
+ status.setAttribute('variant', 'warning');
80
+ });
81
+
82
+ save.addEventListener('click', () => {
83
+ window.DeskTalk.storage.set('ops.note', editor.value);
84
+ status.textContent = 'Saved';
85
+ status.setAttribute('variant', 'success');
86
+ });
87
+ </script>
88
+ </body>
89
+ </html>
90
+ ```