@agimon-ai/po-web-components 0.0.0-alpha.2 → 0.0.0-alpha.21

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 (511) hide show
  1. package/LICENSE +191 -1
  2. package/README.md +7 -7
  3. package/dist/index.cjs +1 -1
  4. package/dist/index.d.mts +3 -2
  5. package/dist/index.mjs +1 -1
  6. package/dist/node_modules/.pnpm/{@modelcontextprotocol_server@2.2.0/node_modules/@modelcontextprotocol/server/dist/createMcpHandler-CfX6zgs1.d.mts → @modelcontextprotocol_server@2.3.1/node_modules/@modelcontextprotocol/server/dist/createMcpHandler-D4NN8WsG.d.mts} +5 -6
  7. package/dist/node_modules/.pnpm/@modelcontextprotocol_server@2.3.1/node_modules/@modelcontextprotocol/server/dist/createMcpHandler-D4NN8WsG.d.mts.map +1 -0
  8. package/dist/node_modules/.pnpm/@modelcontextprotocol_server@2.3.1/node_modules/@modelcontextprotocol/server/dist/index.d.mts +2 -0
  9. package/dist/node_modules/.pnpm/zod@4.6.6/node_modules/zod/v4/classic/compat.d.mts +8 -0
  10. package/dist/node_modules/.pnpm/zod@4.6.6/node_modules/zod/v4/classic/compat.d.mts.map +1 -0
  11. package/dist/node_modules/.pnpm/zod@4.6.6/node_modules/zod/v4/classic/errors.d.mts +21 -0
  12. package/dist/node_modules/.pnpm/zod@4.6.6/node_modules/zod/v4/classic/errors.d.mts.map +1 -0
  13. package/dist/node_modules/.pnpm/zod@4.6.6/node_modules/zod/v4/classic/parse.d.mts +15 -0
  14. package/dist/node_modules/.pnpm/zod@4.6.6/node_modules/zod/v4/classic/parse.d.mts.map +1 -0
  15. package/dist/node_modules/.pnpm/zod@4.6.6/node_modules/zod/v4/classic/schemas.d.mts +169 -0
  16. package/dist/node_modules/.pnpm/zod@4.6.6/node_modules/zod/v4/classic/schemas.d.mts.map +1 -0
  17. package/dist/node_modules/.pnpm/zod@4.6.6/node_modules/zod/v4/core/api.d.mts +38 -0
  18. package/dist/node_modules/.pnpm/zod@4.6.6/node_modules/zod/v4/core/api.d.mts.map +1 -0
  19. package/dist/node_modules/.pnpm/zod@4.6.6/node_modules/zod/v4/core/checks.d.mts +63 -0
  20. package/dist/node_modules/.pnpm/zod@4.6.6/node_modules/zod/v4/core/checks.d.mts.map +1 -0
  21. package/dist/node_modules/.pnpm/zod@4.6.6/node_modules/zod/v4/core/core.d.mts +50 -0
  22. package/dist/node_modules/.pnpm/zod@4.6.6/node_modules/zod/v4/core/core.d.mts.map +1 -0
  23. package/dist/node_modules/.pnpm/{zod@4.6.5 → zod@4.6.6}/node_modules/zod/v4/core/errors.d.mts +3 -87
  24. package/dist/node_modules/.pnpm/zod@4.6.6/node_modules/zod/v4/core/errors.d.mts.map +1 -0
  25. package/dist/node_modules/.pnpm/{zod@4.6.5 → zod@4.6.6}/node_modules/zod/v4/core/json-schema.d.mts +1 -26
  26. package/dist/node_modules/.pnpm/zod@4.6.6/node_modules/zod/v4/core/json-schema.d.mts.map +1 -0
  27. package/dist/node_modules/.pnpm/{zod@4.6.5 → zod@4.6.6}/node_modules/zod/v4/core/registries.d.mts +3 -7
  28. package/dist/node_modules/.pnpm/zod@4.6.6/node_modules/zod/v4/core/registries.d.mts.map +1 -0
  29. package/dist/node_modules/.pnpm/{zod@4.6.5 → zod@4.6.6}/node_modules/zod/v4/core/schemas.d.mts +10 -405
  30. package/dist/node_modules/.pnpm/zod@4.6.6/node_modules/zod/v4/core/schemas.d.mts.map +1 -0
  31. package/dist/node_modules/.pnpm/{zod@4.6.5 → zod@4.6.6}/node_modules/zod/v4/core/standard-schema.d.mts +1 -1
  32. package/dist/node_modules/.pnpm/zod@4.6.6/node_modules/zod/v4/core/standard-schema.d.mts.map +1 -0
  33. package/dist/node_modules/.pnpm/{zod@4.6.5 → zod@4.6.6}/node_modules/zod/v4/core/to-json-schema.d.mts +4 -33
  34. package/dist/node_modules/.pnpm/zod@4.6.6/node_modules/zod/v4/core/to-json-schema.d.mts.map +1 -0
  35. package/dist/node_modules/.pnpm/zod@4.6.6/node_modules/zod/v4/core/util.d.mts +38 -0
  36. package/dist/node_modules/.pnpm/zod@4.6.6/node_modules/zod/v4/core/util.d.mts.map +1 -0
  37. package/dist/node_modules/.pnpm/{zod@4.6.5 → zod@4.6.6}/node_modules/zod/v4/core/versions.d.mts +1 -1
  38. package/dist/node_modules/.pnpm/zod@4.6.6/node_modules/zod/v4/core/versions.d.mts.map +1 -0
  39. package/dist/packages/core/po-core/dist/mcpWidget.d.mts +2 -2
  40. package/dist/packages/core/po-core/dist/src/web/types/mcpWidget.d.mts +3 -3
  41. package/dist/packages/core/po-core/dist/web.d.mts +2 -2
  42. package/dist/packages/core/po-web-components/src/components/Accordion.mjs +1 -1
  43. package/dist/packages/core/po-web-components/src/components/Accordion.mjs.map +1 -1
  44. package/dist/packages/core/po-web-components/src/components/AgentAvatar.d.mts +14 -0
  45. package/dist/packages/core/po-web-components/src/components/AgentAvatar.d.mts.map +1 -0
  46. package/dist/packages/core/po-web-components/src/components/AgentAvatar.mjs +2 -0
  47. package/dist/packages/core/po-web-components/src/components/AgentAvatar.mjs.map +1 -0
  48. package/dist/packages/core/po-web-components/src/components/AnsiText.mjs +1 -1
  49. package/dist/packages/core/po-web-components/src/components/AnsiText.mjs.map +1 -1
  50. package/dist/packages/core/po-web-components/src/components/Avatar.mjs +1 -1
  51. package/dist/packages/core/po-web-components/src/components/Avatar.mjs.map +1 -1
  52. package/dist/packages/core/po-web-components/src/components/Badge.mjs +1 -1
  53. package/dist/packages/core/po-web-components/src/components/Badge.mjs.map +1 -1
  54. package/dist/packages/core/po-web-components/src/components/Breadcrumb.mjs +1 -1
  55. package/dist/packages/core/po-web-components/src/components/Breadcrumb.mjs.map +1 -1
  56. package/dist/packages/core/po-web-components/src/components/Button.d.mts.map +1 -1
  57. package/dist/packages/core/po-web-components/src/components/Button.mjs +1 -1
  58. package/dist/packages/core/po-web-components/src/components/Button.mjs.map +1 -1
  59. package/dist/packages/core/po-web-components/src/components/Checkbox.mjs +1 -1
  60. package/dist/packages/core/po-web-components/src/components/Checkbox.mjs.map +1 -1
  61. package/dist/packages/core/po-web-components/src/components/CodeBlock.mjs +1 -1
  62. package/dist/packages/core/po-web-components/src/components/CodeBlock.mjs.map +1 -1
  63. package/dist/packages/core/po-web-components/src/components/CodeEditorView.mjs +1 -1
  64. package/dist/packages/core/po-web-components/src/components/CodeEditorView.mjs.map +1 -1
  65. package/dist/packages/core/po-web-components/src/components/Command.mjs +1 -1
  66. package/dist/packages/core/po-web-components/src/components/Command.mjs.map +1 -1
  67. package/dist/packages/core/po-web-components/src/components/CopyButton.mjs +1 -1
  68. package/dist/packages/core/po-web-components/src/components/CopyButton.mjs.map +1 -1
  69. package/dist/packages/core/po-web-components/src/components/Dialog.d.mts +1 -1
  70. package/dist/packages/core/po-web-components/src/components/Dialog.mjs +1 -1
  71. package/dist/packages/core/po-web-components/src/components/Dialog.mjs.map +1 -1
  72. package/dist/packages/core/po-web-components/src/components/DiffView.mjs +1 -1
  73. package/dist/packages/core/po-web-components/src/components/DiffView.mjs.map +1 -1
  74. package/dist/packages/core/po-web-components/src/components/Dot.mjs +1 -1
  75. package/dist/packages/core/po-web-components/src/components/Dot.mjs.map +1 -1
  76. package/dist/packages/core/po-web-components/src/components/Drawer.mjs +1 -1
  77. package/dist/packages/core/po-web-components/src/components/Drawer.mjs.map +1 -1
  78. package/dist/packages/core/po-web-components/src/components/DropdownMenu.mjs +1 -1
  79. package/dist/packages/core/po-web-components/src/components/DropdownMenu.mjs.map +1 -1
  80. package/dist/packages/core/po-web-components/src/components/EmptyState.mjs +1 -1
  81. package/dist/packages/core/po-web-components/src/components/EmptyState.mjs.map +1 -1
  82. package/dist/packages/core/po-web-components/src/components/HashlineLines.mjs +1 -1
  83. package/dist/packages/core/po-web-components/src/components/HashlineLines.mjs.map +1 -1
  84. package/dist/packages/core/po-web-components/src/components/Input.mjs +1 -1
  85. package/dist/packages/core/po-web-components/src/components/Input.mjs.map +1 -1
  86. package/dist/packages/core/po-web-components/src/components/Kbd.mjs +1 -1
  87. package/dist/packages/core/po-web-components/src/components/Kbd.mjs.map +1 -1
  88. package/dist/packages/core/po-web-components/src/components/Label.mjs +1 -1
  89. package/dist/packages/core/po-web-components/src/components/Label.mjs.map +1 -1
  90. package/dist/packages/core/po-web-components/src/components/Markdown.d.mts +1 -0
  91. package/dist/packages/core/po-web-components/src/components/Markdown.d.mts.map +1 -1
  92. package/dist/packages/core/po-web-components/src/components/Markdown.mjs +2 -2
  93. package/dist/packages/core/po-web-components/src/components/Markdown.mjs.map +1 -1
  94. package/dist/packages/core/po-web-components/src/components/McpApp.d.mts +5 -4
  95. package/dist/packages/core/po-web-components/src/components/McpApp.d.mts.map +1 -1
  96. package/dist/packages/core/po-web-components/src/components/McpApp.mjs.map +1 -1
  97. package/dist/packages/core/po-web-components/src/components/McpToolWidget.d.mts +3 -3
  98. package/dist/packages/core/po-web-components/src/components/McpToolWidget.d.mts.map +1 -1
  99. package/dist/packages/core/po-web-components/src/components/McpToolWidget.mjs +2 -2
  100. package/dist/packages/core/po-web-components/src/components/McpToolWidget.mjs.map +1 -1
  101. package/dist/packages/core/po-web-components/src/components/MediaPreview.mjs +1 -1
  102. package/dist/packages/core/po-web-components/src/components/MediaPreview.mjs.map +1 -1
  103. package/dist/packages/core/po-web-components/src/components/MermaidDiagram.mjs +1 -1
  104. package/dist/packages/core/po-web-components/src/components/MermaidDiagram.mjs.map +1 -1
  105. package/dist/packages/core/po-web-components/src/components/MessageItem.mjs +1 -1
  106. package/dist/packages/core/po-web-components/src/components/MessageItem.mjs.map +1 -1
  107. package/dist/packages/core/po-web-components/src/components/MessageLines.mjs +1 -1
  108. package/dist/packages/core/po-web-components/src/components/MessageLines.mjs.map +1 -1
  109. package/dist/packages/core/po-web-components/src/components/OptionList.mjs +1 -1
  110. package/dist/packages/core/po-web-components/src/components/OptionList.mjs.map +1 -1
  111. package/dist/packages/core/po-web-components/src/components/Panel.mjs +1 -1
  112. package/dist/packages/core/po-web-components/src/components/Panel.mjs.map +1 -1
  113. package/dist/packages/core/po-web-components/src/components/PdfPreview.mjs +1 -1
  114. package/dist/packages/core/po-web-components/src/components/PdfPreview.mjs.map +1 -1
  115. package/dist/packages/core/po-web-components/src/components/Picker.mjs +1 -1
  116. package/dist/packages/core/po-web-components/src/components/Picker.mjs.map +1 -1
  117. package/dist/packages/core/po-web-components/src/components/Popover.mjs +1 -1
  118. package/dist/packages/core/po-web-components/src/components/Popover.mjs.map +1 -1
  119. package/dist/packages/core/po-web-components/src/components/Progress.mjs +1 -1
  120. package/dist/packages/core/po-web-components/src/components/Progress.mjs.map +1 -1
  121. package/dist/packages/core/po-web-components/src/components/RadioGroup.mjs +1 -1
  122. package/dist/packages/core/po-web-components/src/components/RadioGroup.mjs.map +1 -1
  123. package/dist/packages/core/po-web-components/src/components/ReviewCommentDraft.mjs +1 -1
  124. package/dist/packages/core/po-web-components/src/components/ReviewCommentDraft.mjs.map +1 -1
  125. package/dist/packages/core/po-web-components/src/components/ScrollArea.mjs +1 -1
  126. package/dist/packages/core/po-web-components/src/components/ScrollArea.mjs.map +1 -1
  127. package/dist/packages/core/po-web-components/src/components/SectionLabel.mjs +1 -1
  128. package/dist/packages/core/po-web-components/src/components/SectionLabel.mjs.map +1 -1
  129. package/dist/packages/core/po-web-components/src/components/Select.mjs +1 -1
  130. package/dist/packages/core/po-web-components/src/components/Select.mjs.map +1 -1
  131. package/dist/packages/core/po-web-components/src/components/Separator.mjs +1 -1
  132. package/dist/packages/core/po-web-components/src/components/Separator.mjs.map +1 -1
  133. package/dist/packages/core/po-web-components/src/components/Settings.mjs +1 -1
  134. package/dist/packages/core/po-web-components/src/components/Settings.mjs.map +1 -1
  135. package/dist/packages/core/po-web-components/src/components/Sheet.mjs +1 -1
  136. package/dist/packages/core/po-web-components/src/components/Sheet.mjs.map +1 -1
  137. package/dist/packages/core/po-web-components/src/components/Skeleton.mjs +1 -1
  138. package/dist/packages/core/po-web-components/src/components/Skeleton.mjs.map +1 -1
  139. package/dist/packages/core/po-web-components/src/components/StatusBadge.mjs +1 -1
  140. package/dist/packages/core/po-web-components/src/components/StatusBadge.mjs.map +1 -1
  141. package/dist/packages/core/po-web-components/src/components/StreamCursor.mjs +1 -1
  142. package/dist/packages/core/po-web-components/src/components/StreamCursor.mjs.map +1 -1
  143. package/dist/packages/core/po-web-components/src/components/Switch.mjs +1 -1
  144. package/dist/packages/core/po-web-components/src/components/Switch.mjs.map +1 -1
  145. package/dist/packages/core/po-web-components/src/components/Tabs.mjs +1 -1
  146. package/dist/packages/core/po-web-components/src/components/Tabs.mjs.map +1 -1
  147. package/dist/packages/core/po-web-components/src/components/Toast.mjs +1 -1
  148. package/dist/packages/core/po-web-components/src/components/Toast.mjs.map +1 -1
  149. package/dist/packages/core/po-web-components/src/components/ToolPathLink.mjs +1 -1
  150. package/dist/packages/core/po-web-components/src/components/ToolPathLink.mjs.map +1 -1
  151. package/dist/packages/core/po-web-components/src/components/Tooltip.mjs +1 -1
  152. package/dist/packages/core/po-web-components/src/components/Tooltip.mjs.map +1 -1
  153. package/dist/packages/core/po-web-components/src/icons/icons.d.mts +2 -2
  154. package/dist/packages/core/po-web-components/src/icons/icons.mjs +1 -1
  155. package/dist/packages/core/po-web-components/src/lib/ansiSpans.mjs +1 -1
  156. package/dist/packages/core/po-web-components/src/lib/ansiSpans.mjs.map +1 -1
  157. package/dist/packages/core/po-web-components/src/lib/editorTheme.d.mts +19 -19
  158. package/dist/packages/core/po-web-components/src/lib/editorTheme.d.mts.map +1 -1
  159. package/dist/packages/core/po-web-components/src/lib/editorTheme.mjs +1 -1
  160. package/dist/packages/core/po-web-components/src/lib/editorTheme.mjs.map +1 -1
  161. package/dist/packages/core/po-web-components/src/lib/hashlineHighlight.mjs +1 -1
  162. package/dist/packages/core/po-web-components/src/lib/hashlineHighlight.mjs.map +1 -1
  163. package/dist/packages/core/po-web-components/src/lib/hashlineView.mjs +1 -1
  164. package/dist/packages/core/po-web-components/src/lib/hashlineView.mjs.map +1 -1
  165. package/dist/packages/core/po-web-components/src/lib/syntaxHighlight.d.mts +2 -2
  166. package/dist/packages/core/po-web-components/src/lib/syntaxHighlight.mjs +1 -1
  167. package/dist/packages/core/po-web-components/src/lib/syntaxHighlight.mjs.map +1 -1
  168. package/dist/packages/core/po-web-components/src/theme/builtinThemes.d.mts +1 -1
  169. package/dist/packages/core/po-web-components/src/theme/builtinThemes.d.mts.map +1 -1
  170. package/dist/packages/core/po-web-components/src/theme/builtinThemes.mjs +1 -1
  171. package/dist/packages/core/po-web-components/src/theme/builtinThemes.mjs.map +1 -1
  172. package/dist/packages/core/po-web-components/src/theme/derive.mjs +1 -1
  173. package/dist/packages/core/po-web-components/src/theme/derive.mjs.map +1 -1
  174. package/dist/packages/core/po-web-components/src/theme/nativeTheme.d.mts +2 -2
  175. package/dist/packages/core/po-web-components/src/theme/nativeTheme.mjs +1 -1
  176. package/dist/packages/core/po-web-components/src/theme/nativeTheme.mjs.map +1 -1
  177. package/dist/packages/core/po-web-components/src/types/theme.d.mts +1 -1
  178. package/dist/packages/core/po-web-components/src/types/theme.d.mts.map +1 -1
  179. package/dist/packages/core/po-web-components/src/types/theme.mjs +1 -1
  180. package/dist/packages/core/po-web-components/src/types/theme.mjs.map +1 -1
  181. package/dist/packages/core/po-web-components/themes/po-nord-dark.mjs +2 -0
  182. package/dist/packages/core/po-web-components/themes/po-nord-dark.mjs.map +1 -0
  183. package/dist/packages/core/po-web-components/themes/po-one-light.mjs +2 -0
  184. package/dist/packages/core/po-web-components/themes/po-one-light.mjs.map +1 -0
  185. package/dist/src/components/Accordion.cjs +1 -1
  186. package/dist/src/components/Accordion.cjs.map +1 -1
  187. package/dist/src/components/AgentAvatar.cjs +2 -0
  188. package/dist/src/components/AgentAvatar.cjs.map +1 -0
  189. package/dist/src/components/AnsiText.cjs +1 -1
  190. package/dist/src/components/AnsiText.cjs.map +1 -1
  191. package/dist/src/components/Avatar.cjs +1 -1
  192. package/dist/src/components/Avatar.cjs.map +1 -1
  193. package/dist/src/components/Badge.cjs +1 -1
  194. package/dist/src/components/Badge.cjs.map +1 -1
  195. package/dist/src/components/Breadcrumb.cjs +1 -1
  196. package/dist/src/components/Breadcrumb.cjs.map +1 -1
  197. package/dist/src/components/Button.cjs +1 -1
  198. package/dist/src/components/Button.cjs.map +1 -1
  199. package/dist/src/components/Checkbox.cjs +1 -1
  200. package/dist/src/components/Checkbox.cjs.map +1 -1
  201. package/dist/src/components/CodeBlock.cjs +1 -1
  202. package/dist/src/components/CodeBlock.cjs.map +1 -1
  203. package/dist/src/components/CodeEditorView.cjs +1 -1
  204. package/dist/src/components/CodeEditorView.cjs.map +1 -1
  205. package/dist/src/components/Command.cjs +1 -1
  206. package/dist/src/components/Command.cjs.map +1 -1
  207. package/dist/src/components/CopyButton.cjs +1 -1
  208. package/dist/src/components/CopyButton.cjs.map +1 -1
  209. package/dist/src/components/Dialog.cjs +1 -1
  210. package/dist/src/components/Dialog.cjs.map +1 -1
  211. package/dist/src/components/DiffView.cjs +1 -1
  212. package/dist/src/components/DiffView.cjs.map +1 -1
  213. package/dist/src/components/Dot.cjs +1 -1
  214. package/dist/src/components/Dot.cjs.map +1 -1
  215. package/dist/src/components/Drawer.cjs +1 -1
  216. package/dist/src/components/Drawer.cjs.map +1 -1
  217. package/dist/src/components/DropdownMenu.cjs +1 -1
  218. package/dist/src/components/DropdownMenu.cjs.map +1 -1
  219. package/dist/src/components/EmptyState.cjs +1 -1
  220. package/dist/src/components/EmptyState.cjs.map +1 -1
  221. package/dist/src/components/HashlineLines.cjs +1 -1
  222. package/dist/src/components/HashlineLines.cjs.map +1 -1
  223. package/dist/src/components/Input.cjs +1 -1
  224. package/dist/src/components/Input.cjs.map +1 -1
  225. package/dist/src/components/Kbd.cjs +1 -1
  226. package/dist/src/components/Kbd.cjs.map +1 -1
  227. package/dist/src/components/Label.cjs +1 -1
  228. package/dist/src/components/Label.cjs.map +1 -1
  229. package/dist/src/components/Markdown.cjs +2 -2
  230. package/dist/src/components/Markdown.cjs.map +1 -1
  231. package/dist/src/components/McpApp.cjs.map +1 -1
  232. package/dist/src/components/McpToolWidget.cjs +2 -2
  233. package/dist/src/components/McpToolWidget.cjs.map +1 -1
  234. package/dist/src/components/MediaPreview.cjs +1 -1
  235. package/dist/src/components/MediaPreview.cjs.map +1 -1
  236. package/dist/src/components/MermaidDiagram.cjs +1 -1
  237. package/dist/src/components/MermaidDiagram.cjs.map +1 -1
  238. package/dist/src/components/MessageItem.cjs +1 -1
  239. package/dist/src/components/MessageItem.cjs.map +1 -1
  240. package/dist/src/components/MessageLines.cjs +1 -1
  241. package/dist/src/components/MessageLines.cjs.map +1 -1
  242. package/dist/src/components/OptionList.cjs +1 -1
  243. package/dist/src/components/OptionList.cjs.map +1 -1
  244. package/dist/src/components/Panel.cjs +1 -1
  245. package/dist/src/components/Panel.cjs.map +1 -1
  246. package/dist/src/components/PdfPreview.cjs +1 -1
  247. package/dist/src/components/PdfPreview.cjs.map +1 -1
  248. package/dist/src/components/Picker.cjs +1 -1
  249. package/dist/src/components/Picker.cjs.map +1 -1
  250. package/dist/src/components/Popover.cjs +1 -1
  251. package/dist/src/components/Popover.cjs.map +1 -1
  252. package/dist/src/components/Progress.cjs +1 -1
  253. package/dist/src/components/Progress.cjs.map +1 -1
  254. package/dist/src/components/RadioGroup.cjs +1 -1
  255. package/dist/src/components/RadioGroup.cjs.map +1 -1
  256. package/dist/src/components/ReviewCommentDraft.cjs +1 -1
  257. package/dist/src/components/ReviewCommentDraft.cjs.map +1 -1
  258. package/dist/src/components/ScrollArea.cjs +1 -1
  259. package/dist/src/components/ScrollArea.cjs.map +1 -1
  260. package/dist/src/components/SectionLabel.cjs +1 -1
  261. package/dist/src/components/SectionLabel.cjs.map +1 -1
  262. package/dist/src/components/Select.cjs +1 -1
  263. package/dist/src/components/Select.cjs.map +1 -1
  264. package/dist/src/components/Separator.cjs +1 -1
  265. package/dist/src/components/Separator.cjs.map +1 -1
  266. package/dist/src/components/Settings.cjs +1 -1
  267. package/dist/src/components/Settings.cjs.map +1 -1
  268. package/dist/src/components/Sheet.cjs +1 -1
  269. package/dist/src/components/Sheet.cjs.map +1 -1
  270. package/dist/src/components/Skeleton.cjs +1 -1
  271. package/dist/src/components/Skeleton.cjs.map +1 -1
  272. package/dist/src/components/StatusBadge.cjs +1 -1
  273. package/dist/src/components/StatusBadge.cjs.map +1 -1
  274. package/dist/src/components/StreamCursor.cjs +1 -1
  275. package/dist/src/components/StreamCursor.cjs.map +1 -1
  276. package/dist/src/components/Switch.cjs +1 -1
  277. package/dist/src/components/Switch.cjs.map +1 -1
  278. package/dist/src/components/Tabs.cjs +1 -1
  279. package/dist/src/components/Tabs.cjs.map +1 -1
  280. package/dist/src/components/Toast.cjs +1 -1
  281. package/dist/src/components/Toast.cjs.map +1 -1
  282. package/dist/src/components/ToolPathLink.cjs +1 -1
  283. package/dist/src/components/ToolPathLink.cjs.map +1 -1
  284. package/dist/src/components/Tooltip.cjs +1 -1
  285. package/dist/src/components/Tooltip.cjs.map +1 -1
  286. package/dist/src/icons/icons.cjs +1 -1
  287. package/dist/src/lib/ansiSpans.cjs +1 -1
  288. package/dist/src/lib/ansiSpans.cjs.map +1 -1
  289. package/dist/src/lib/editorTheme.cjs +1 -1
  290. package/dist/src/lib/editorTheme.cjs.map +1 -1
  291. package/dist/src/lib/hashlineHighlight.cjs +1 -1
  292. package/dist/src/lib/hashlineHighlight.cjs.map +1 -1
  293. package/dist/src/lib/hashlineView.cjs +1 -1
  294. package/dist/src/lib/hashlineView.cjs.map +1 -1
  295. package/dist/src/lib/syntaxHighlight.cjs +1 -1
  296. package/dist/src/lib/syntaxHighlight.cjs.map +1 -1
  297. package/dist/src/theme/builtinThemes.cjs +1 -1
  298. package/dist/src/theme/builtinThemes.cjs.map +1 -1
  299. package/dist/src/theme/derive.cjs +1 -1
  300. package/dist/src/theme/derive.cjs.map +1 -1
  301. package/dist/src/theme/nativeTheme.cjs +1 -1
  302. package/dist/src/theme/nativeTheme.cjs.map +1 -1
  303. package/dist/src/types/theme.cjs +1 -1
  304. package/dist/src/types/theme.cjs.map +1 -1
  305. package/dist/themes/po-nord-dark.cjs +2 -0
  306. package/dist/themes/po-nord-dark.cjs.map +1 -0
  307. package/dist/themes/po-one-light.cjs +2 -0
  308. package/dist/themes/po-one-light.cjs.map +1 -0
  309. package/package.json +18 -18
  310. package/styles/mcp.css +11 -11
  311. package/styles/preview.css +1 -1
  312. package/styles/theme.css +118 -119
  313. package/themes/{doom-nord-dark.json → po-nord-dark.json} +1 -1
  314. package/themes/{doom-one-light.json → po-one-light.json} +1 -1
  315. package/dist/_virtual/_rolldown/runtime.mjs +0 -1
  316. package/dist/node_modules/.pnpm/@modelcontextprotocol_server@2.2.0/node_modules/@modelcontextprotocol/server/dist/createMcpHandler-CfX6zgs1.d.mts.map +0 -1
  317. package/dist/node_modules/.pnpm/@modelcontextprotocol_server@2.2.0/node_modules/@modelcontextprotocol/server/dist/index.d.mts +0 -2
  318. package/dist/node_modules/.pnpm/zod@4.6.5/node_modules/zod/v4/classic/coerce.d.mts +0 -20
  319. package/dist/node_modules/.pnpm/zod@4.6.5/node_modules/zod/v4/classic/coerce.d.mts.map +0 -1
  320. package/dist/node_modules/.pnpm/zod@4.6.5/node_modules/zod/v4/classic/compat.d.mts +0 -50
  321. package/dist/node_modules/.pnpm/zod@4.6.5/node_modules/zod/v4/classic/compat.d.mts.map +0 -1
  322. package/dist/node_modules/.pnpm/zod@4.6.5/node_modules/zod/v4/classic/deep-partial.d.mts +0 -10
  323. package/dist/node_modules/.pnpm/zod@4.6.5/node_modules/zod/v4/classic/deep-partial.d.mts.map +0 -1
  324. package/dist/node_modules/.pnpm/zod@4.6.5/node_modules/zod/v4/classic/errors.d.mts +0 -33
  325. package/dist/node_modules/.pnpm/zod@4.6.5/node_modules/zod/v4/classic/errors.d.mts.map +0 -1
  326. package/dist/node_modules/.pnpm/zod@4.6.5/node_modules/zod/v4/classic/external.d.mts +0 -28
  327. package/dist/node_modules/.pnpm/zod@4.6.5/node_modules/zod/v4/classic/external.d.mts.map +0 -1
  328. package/dist/node_modules/.pnpm/zod@4.6.5/node_modules/zod/v4/classic/from-json-schema.d.mts +0 -14
  329. package/dist/node_modules/.pnpm/zod@4.6.5/node_modules/zod/v4/classic/from-json-schema.d.mts.map +0 -1
  330. package/dist/node_modules/.pnpm/zod@4.6.5/node_modules/zod/v4/classic/in-out.d.mts +0 -13
  331. package/dist/node_modules/.pnpm/zod@4.6.5/node_modules/zod/v4/classic/in-out.d.mts.map +0 -1
  332. package/dist/node_modules/.pnpm/zod@4.6.5/node_modules/zod/v4/classic/iso.d.mts +0 -13
  333. package/dist/node_modules/.pnpm/zod@4.6.5/node_modules/zod/v4/classic/iso.d.mts.map +0 -1
  334. package/dist/node_modules/.pnpm/zod@4.6.5/node_modules/zod/v4/classic/parse.d.mts +0 -54
  335. package/dist/node_modules/.pnpm/zod@4.6.5/node_modules/zod/v4/classic/parse.d.mts.map +0 -1
  336. package/dist/node_modules/.pnpm/zod@4.6.5/node_modules/zod/v4/classic/schemas.d.mts +0 -775
  337. package/dist/node_modules/.pnpm/zod@4.6.5/node_modules/zod/v4/classic/schemas.d.mts.map +0 -1
  338. package/dist/node_modules/.pnpm/zod@4.6.5/node_modules/zod/v4/core/api.d.mts +0 -331
  339. package/dist/node_modules/.pnpm/zod@4.6.5/node_modules/zod/v4/core/api.d.mts.map +0 -1
  340. package/dist/node_modules/.pnpm/zod@4.6.5/node_modules/zod/v4/core/checks.d.mts +0 -296
  341. package/dist/node_modules/.pnpm/zod@4.6.5/node_modules/zod/v4/core/checks.d.mts.map +0 -1
  342. package/dist/node_modules/.pnpm/zod@4.6.5/node_modules/zod/v4/core/compile.d.mts +0 -67
  343. package/dist/node_modules/.pnpm/zod@4.6.5/node_modules/zod/v4/core/compile.d.mts.map +0 -1
  344. package/dist/node_modules/.pnpm/zod@4.6.5/node_modules/zod/v4/core/core.d.mts +0 -85
  345. package/dist/node_modules/.pnpm/zod@4.6.5/node_modules/zod/v4/core/core.d.mts.map +0 -1
  346. package/dist/node_modules/.pnpm/zod@4.6.5/node_modules/zod/v4/core/doc.d.mts +0 -18
  347. package/dist/node_modules/.pnpm/zod@4.6.5/node_modules/zod/v4/core/doc.d.mts.map +0 -1
  348. package/dist/node_modules/.pnpm/zod@4.6.5/node_modules/zod/v4/core/errors.d.mts.map +0 -1
  349. package/dist/node_modules/.pnpm/zod@4.6.5/node_modules/zod/v4/core/index.d.mts +0 -24
  350. package/dist/node_modules/.pnpm/zod@4.6.5/node_modules/zod/v4/core/index.d.mts.map +0 -1
  351. package/dist/node_modules/.pnpm/zod@4.6.5/node_modules/zod/v4/core/json-schema-generator.d.mts +0 -67
  352. package/dist/node_modules/.pnpm/zod@4.6.5/node_modules/zod/v4/core/json-schema-generator.d.mts.map +0 -1
  353. package/dist/node_modules/.pnpm/zod@4.6.5/node_modules/zod/v4/core/json-schema-processors.d.mts +0 -12
  354. package/dist/node_modules/.pnpm/zod@4.6.5/node_modules/zod/v4/core/json-schema-processors.d.mts.map +0 -1
  355. package/dist/node_modules/.pnpm/zod@4.6.5/node_modules/zod/v4/core/json-schema.d.mts.map +0 -1
  356. package/dist/node_modules/.pnpm/zod@4.6.5/node_modules/zod/v4/core/memoizer.d.mts +0 -18
  357. package/dist/node_modules/.pnpm/zod@4.6.5/node_modules/zod/v4/core/memoizer.d.mts.map +0 -1
  358. package/dist/node_modules/.pnpm/zod@4.6.5/node_modules/zod/v4/core/parse.d.mts +0 -54
  359. package/dist/node_modules/.pnpm/zod@4.6.5/node_modules/zod/v4/core/parse.d.mts.map +0 -1
  360. package/dist/node_modules/.pnpm/zod@4.6.5/node_modules/zod/v4/core/regexes.d.mts +0 -94
  361. package/dist/node_modules/.pnpm/zod@4.6.5/node_modules/zod/v4/core/regexes.d.mts.map +0 -1
  362. package/dist/node_modules/.pnpm/zod@4.6.5/node_modules/zod/v4/core/registries.d.mts.map +0 -1
  363. package/dist/node_modules/.pnpm/zod@4.6.5/node_modules/zod/v4/core/schemas.d.mts.map +0 -1
  364. package/dist/node_modules/.pnpm/zod@4.6.5/node_modules/zod/v4/core/standard-schema.d.mts.map +0 -1
  365. package/dist/node_modules/.pnpm/zod@4.6.5/node_modules/zod/v4/core/to-json-schema.d.mts.map +0 -1
  366. package/dist/node_modules/.pnpm/zod@4.6.5/node_modules/zod/v4/core/util.d.mts +0 -237
  367. package/dist/node_modules/.pnpm/zod@4.6.5/node_modules/zod/v4/core/util.d.mts.map +0 -1
  368. package/dist/node_modules/.pnpm/zod@4.6.5/node_modules/zod/v4/core/versions.d.mts.map +0 -1
  369. package/dist/node_modules/.pnpm/zod@4.6.5/node_modules/zod/v4/index.d.mts +0 -29
  370. package/dist/node_modules/.pnpm/zod@4.6.5/node_modules/zod/v4/index.d.mts.map +0 -1
  371. package/dist/node_modules/.pnpm/zod@4.6.5/node_modules/zod/v4/locales/ar.d.mts +0 -8
  372. package/dist/node_modules/.pnpm/zod@4.6.5/node_modules/zod/v4/locales/ar.d.mts.map +0 -1
  373. package/dist/node_modules/.pnpm/zod@4.6.5/node_modules/zod/v4/locales/az.d.mts +0 -8
  374. package/dist/node_modules/.pnpm/zod@4.6.5/node_modules/zod/v4/locales/az.d.mts.map +0 -1
  375. package/dist/node_modules/.pnpm/zod@4.6.5/node_modules/zod/v4/locales/be.d.mts +0 -8
  376. package/dist/node_modules/.pnpm/zod@4.6.5/node_modules/zod/v4/locales/be.d.mts.map +0 -1
  377. package/dist/node_modules/.pnpm/zod@4.6.5/node_modules/zod/v4/locales/bg.d.mts +0 -8
  378. package/dist/node_modules/.pnpm/zod@4.6.5/node_modules/zod/v4/locales/bg.d.mts.map +0 -1
  379. package/dist/node_modules/.pnpm/zod@4.6.5/node_modules/zod/v4/locales/bn.d.mts +0 -8
  380. package/dist/node_modules/.pnpm/zod@4.6.5/node_modules/zod/v4/locales/bn.d.mts.map +0 -1
  381. package/dist/node_modules/.pnpm/zod@4.6.5/node_modules/zod/v4/locales/ca.d.mts +0 -8
  382. package/dist/node_modules/.pnpm/zod@4.6.5/node_modules/zod/v4/locales/ca.d.mts.map +0 -1
  383. package/dist/node_modules/.pnpm/zod@4.6.5/node_modules/zod/v4/locales/ckb.d.mts +0 -8
  384. package/dist/node_modules/.pnpm/zod@4.6.5/node_modules/zod/v4/locales/ckb.d.mts.map +0 -1
  385. package/dist/node_modules/.pnpm/zod@4.6.5/node_modules/zod/v4/locales/cs.d.mts +0 -8
  386. package/dist/node_modules/.pnpm/zod@4.6.5/node_modules/zod/v4/locales/cs.d.mts.map +0 -1
  387. package/dist/node_modules/.pnpm/zod@4.6.5/node_modules/zod/v4/locales/da.d.mts +0 -8
  388. package/dist/node_modules/.pnpm/zod@4.6.5/node_modules/zod/v4/locales/da.d.mts.map +0 -1
  389. package/dist/node_modules/.pnpm/zod@4.6.5/node_modules/zod/v4/locales/de.d.mts +0 -8
  390. package/dist/node_modules/.pnpm/zod@4.6.5/node_modules/zod/v4/locales/de.d.mts.map +0 -1
  391. package/dist/node_modules/.pnpm/zod@4.6.5/node_modules/zod/v4/locales/el.d.mts +0 -8
  392. package/dist/node_modules/.pnpm/zod@4.6.5/node_modules/zod/v4/locales/el.d.mts.map +0 -1
  393. package/dist/node_modules/.pnpm/zod@4.6.5/node_modules/zod/v4/locales/en.d.mts +0 -8
  394. package/dist/node_modules/.pnpm/zod@4.6.5/node_modules/zod/v4/locales/en.d.mts.map +0 -1
  395. package/dist/node_modules/.pnpm/zod@4.6.5/node_modules/zod/v4/locales/eo.d.mts +0 -8
  396. package/dist/node_modules/.pnpm/zod@4.6.5/node_modules/zod/v4/locales/eo.d.mts.map +0 -1
  397. package/dist/node_modules/.pnpm/zod@4.6.5/node_modules/zod/v4/locales/es.d.mts +0 -8
  398. package/dist/node_modules/.pnpm/zod@4.6.5/node_modules/zod/v4/locales/es.d.mts.map +0 -1
  399. package/dist/node_modules/.pnpm/zod@4.6.5/node_modules/zod/v4/locales/fa.d.mts +0 -8
  400. package/dist/node_modules/.pnpm/zod@4.6.5/node_modules/zod/v4/locales/fa.d.mts.map +0 -1
  401. package/dist/node_modules/.pnpm/zod@4.6.5/node_modules/zod/v4/locales/fi.d.mts +0 -8
  402. package/dist/node_modules/.pnpm/zod@4.6.5/node_modules/zod/v4/locales/fi.d.mts.map +0 -1
  403. package/dist/node_modules/.pnpm/zod@4.6.5/node_modules/zod/v4/locales/fr-CA.d.mts +0 -8
  404. package/dist/node_modules/.pnpm/zod@4.6.5/node_modules/zod/v4/locales/fr-CA.d.mts.map +0 -1
  405. package/dist/node_modules/.pnpm/zod@4.6.5/node_modules/zod/v4/locales/fr.d.mts +0 -8
  406. package/dist/node_modules/.pnpm/zod@4.6.5/node_modules/zod/v4/locales/fr.d.mts.map +0 -1
  407. package/dist/node_modules/.pnpm/zod@4.6.5/node_modules/zod/v4/locales/gu.d.mts +0 -8
  408. package/dist/node_modules/.pnpm/zod@4.6.5/node_modules/zod/v4/locales/gu.d.mts.map +0 -1
  409. package/dist/node_modules/.pnpm/zod@4.6.5/node_modules/zod/v4/locales/he.d.mts +0 -8
  410. package/dist/node_modules/.pnpm/zod@4.6.5/node_modules/zod/v4/locales/he.d.mts.map +0 -1
  411. package/dist/node_modules/.pnpm/zod@4.6.5/node_modules/zod/v4/locales/hi.d.mts +0 -8
  412. package/dist/node_modules/.pnpm/zod@4.6.5/node_modules/zod/v4/locales/hi.d.mts.map +0 -1
  413. package/dist/node_modules/.pnpm/zod@4.6.5/node_modules/zod/v4/locales/hr.d.mts +0 -8
  414. package/dist/node_modules/.pnpm/zod@4.6.5/node_modules/zod/v4/locales/hr.d.mts.map +0 -1
  415. package/dist/node_modules/.pnpm/zod@4.6.5/node_modules/zod/v4/locales/hu.d.mts +0 -8
  416. package/dist/node_modules/.pnpm/zod@4.6.5/node_modules/zod/v4/locales/hu.d.mts.map +0 -1
  417. package/dist/node_modules/.pnpm/zod@4.6.5/node_modules/zod/v4/locales/hy.d.mts +0 -8
  418. package/dist/node_modules/.pnpm/zod@4.6.5/node_modules/zod/v4/locales/hy.d.mts.map +0 -1
  419. package/dist/node_modules/.pnpm/zod@4.6.5/node_modules/zod/v4/locales/id.d.mts +0 -8
  420. package/dist/node_modules/.pnpm/zod@4.6.5/node_modules/zod/v4/locales/id.d.mts.map +0 -1
  421. package/dist/node_modules/.pnpm/zod@4.6.5/node_modules/zod/v4/locales/index.d.mts +0 -69
  422. package/dist/node_modules/.pnpm/zod@4.6.5/node_modules/zod/v4/locales/index.d.mts.map +0 -1
  423. package/dist/node_modules/.pnpm/zod@4.6.5/node_modules/zod/v4/locales/is.d.mts +0 -8
  424. package/dist/node_modules/.pnpm/zod@4.6.5/node_modules/zod/v4/locales/is.d.mts.map +0 -1
  425. package/dist/node_modules/.pnpm/zod@4.6.5/node_modules/zod/v4/locales/it.d.mts +0 -8
  426. package/dist/node_modules/.pnpm/zod@4.6.5/node_modules/zod/v4/locales/it.d.mts.map +0 -1
  427. package/dist/node_modules/.pnpm/zod@4.6.5/node_modules/zod/v4/locales/ja.d.mts +0 -8
  428. package/dist/node_modules/.pnpm/zod@4.6.5/node_modules/zod/v4/locales/ja.d.mts.map +0 -1
  429. package/dist/node_modules/.pnpm/zod@4.6.5/node_modules/zod/v4/locales/ka.d.mts +0 -8
  430. package/dist/node_modules/.pnpm/zod@4.6.5/node_modules/zod/v4/locales/ka.d.mts.map +0 -1
  431. package/dist/node_modules/.pnpm/zod@4.6.5/node_modules/zod/v4/locales/kh.d.mts +0 -8
  432. package/dist/node_modules/.pnpm/zod@4.6.5/node_modules/zod/v4/locales/kh.d.mts.map +0 -1
  433. package/dist/node_modules/.pnpm/zod@4.6.5/node_modules/zod/v4/locales/km.d.mts +0 -8
  434. package/dist/node_modules/.pnpm/zod@4.6.5/node_modules/zod/v4/locales/km.d.mts.map +0 -1
  435. package/dist/node_modules/.pnpm/zod@4.6.5/node_modules/zod/v4/locales/kn.d.mts +0 -8
  436. package/dist/node_modules/.pnpm/zod@4.6.5/node_modules/zod/v4/locales/kn.d.mts.map +0 -1
  437. package/dist/node_modules/.pnpm/zod@4.6.5/node_modules/zod/v4/locales/ko.d.mts +0 -8
  438. package/dist/node_modules/.pnpm/zod@4.6.5/node_modules/zod/v4/locales/ko.d.mts.map +0 -1
  439. package/dist/node_modules/.pnpm/zod@4.6.5/node_modules/zod/v4/locales/lt.d.mts +0 -8
  440. package/dist/node_modules/.pnpm/zod@4.6.5/node_modules/zod/v4/locales/lt.d.mts.map +0 -1
  441. package/dist/node_modules/.pnpm/zod@4.6.5/node_modules/zod/v4/locales/mk.d.mts +0 -8
  442. package/dist/node_modules/.pnpm/zod@4.6.5/node_modules/zod/v4/locales/mk.d.mts.map +0 -1
  443. package/dist/node_modules/.pnpm/zod@4.6.5/node_modules/zod/v4/locales/ms.d.mts +0 -8
  444. package/dist/node_modules/.pnpm/zod@4.6.5/node_modules/zod/v4/locales/ms.d.mts.map +0 -1
  445. package/dist/node_modules/.pnpm/zod@4.6.5/node_modules/zod/v4/locales/ne.d.mts +0 -8
  446. package/dist/node_modules/.pnpm/zod@4.6.5/node_modules/zod/v4/locales/ne.d.mts.map +0 -1
  447. package/dist/node_modules/.pnpm/zod@4.6.5/node_modules/zod/v4/locales/nl.d.mts +0 -8
  448. package/dist/node_modules/.pnpm/zod@4.6.5/node_modules/zod/v4/locales/nl.d.mts.map +0 -1
  449. package/dist/node_modules/.pnpm/zod@4.6.5/node_modules/zod/v4/locales/nn.d.mts +0 -8
  450. package/dist/node_modules/.pnpm/zod@4.6.5/node_modules/zod/v4/locales/nn.d.mts.map +0 -1
  451. package/dist/node_modules/.pnpm/zod@4.6.5/node_modules/zod/v4/locales/no.d.mts +0 -8
  452. package/dist/node_modules/.pnpm/zod@4.6.5/node_modules/zod/v4/locales/no.d.mts.map +0 -1
  453. package/dist/node_modules/.pnpm/zod@4.6.5/node_modules/zod/v4/locales/ota.d.mts +0 -8
  454. package/dist/node_modules/.pnpm/zod@4.6.5/node_modules/zod/v4/locales/ota.d.mts.map +0 -1
  455. package/dist/node_modules/.pnpm/zod@4.6.5/node_modules/zod/v4/locales/pl.d.mts +0 -8
  456. package/dist/node_modules/.pnpm/zod@4.6.5/node_modules/zod/v4/locales/pl.d.mts.map +0 -1
  457. package/dist/node_modules/.pnpm/zod@4.6.5/node_modules/zod/v4/locales/ps.d.mts +0 -8
  458. package/dist/node_modules/.pnpm/zod@4.6.5/node_modules/zod/v4/locales/ps.d.mts.map +0 -1
  459. package/dist/node_modules/.pnpm/zod@4.6.5/node_modules/zod/v4/locales/pt-BR.d.mts +0 -8
  460. package/dist/node_modules/.pnpm/zod@4.6.5/node_modules/zod/v4/locales/pt-BR.d.mts.map +0 -1
  461. package/dist/node_modules/.pnpm/zod@4.6.5/node_modules/zod/v4/locales/pt.d.mts +0 -8
  462. package/dist/node_modules/.pnpm/zod@4.6.5/node_modules/zod/v4/locales/pt.d.mts.map +0 -1
  463. package/dist/node_modules/.pnpm/zod@4.6.5/node_modules/zod/v4/locales/ro.d.mts +0 -8
  464. package/dist/node_modules/.pnpm/zod@4.6.5/node_modules/zod/v4/locales/ro.d.mts.map +0 -1
  465. package/dist/node_modules/.pnpm/zod@4.6.5/node_modules/zod/v4/locales/ru.d.mts +0 -8
  466. package/dist/node_modules/.pnpm/zod@4.6.5/node_modules/zod/v4/locales/ru.d.mts.map +0 -1
  467. package/dist/node_modules/.pnpm/zod@4.6.5/node_modules/zod/v4/locales/sk.d.mts +0 -8
  468. package/dist/node_modules/.pnpm/zod@4.6.5/node_modules/zod/v4/locales/sk.d.mts.map +0 -1
  469. package/dist/node_modules/.pnpm/zod@4.6.5/node_modules/zod/v4/locales/sl.d.mts +0 -8
  470. package/dist/node_modules/.pnpm/zod@4.6.5/node_modules/zod/v4/locales/sl.d.mts.map +0 -1
  471. package/dist/node_modules/.pnpm/zod@4.6.5/node_modules/zod/v4/locales/sv.d.mts +0 -8
  472. package/dist/node_modules/.pnpm/zod@4.6.5/node_modules/zod/v4/locales/sv.d.mts.map +0 -1
  473. package/dist/node_modules/.pnpm/zod@4.6.5/node_modules/zod/v4/locales/ta.d.mts +0 -8
  474. package/dist/node_modules/.pnpm/zod@4.6.5/node_modules/zod/v4/locales/ta.d.mts.map +0 -1
  475. package/dist/node_modules/.pnpm/zod@4.6.5/node_modules/zod/v4/locales/tg.d.mts +0 -8
  476. package/dist/node_modules/.pnpm/zod@4.6.5/node_modules/zod/v4/locales/tg.d.mts.map +0 -1
  477. package/dist/node_modules/.pnpm/zod@4.6.5/node_modules/zod/v4/locales/th.d.mts +0 -8
  478. package/dist/node_modules/.pnpm/zod@4.6.5/node_modules/zod/v4/locales/th.d.mts.map +0 -1
  479. package/dist/node_modules/.pnpm/zod@4.6.5/node_modules/zod/v4/locales/tk.d.mts +0 -8
  480. package/dist/node_modules/.pnpm/zod@4.6.5/node_modules/zod/v4/locales/tk.d.mts.map +0 -1
  481. package/dist/node_modules/.pnpm/zod@4.6.5/node_modules/zod/v4/locales/tr.d.mts +0 -8
  482. package/dist/node_modules/.pnpm/zod@4.6.5/node_modules/zod/v4/locales/tr.d.mts.map +0 -1
  483. package/dist/node_modules/.pnpm/zod@4.6.5/node_modules/zod/v4/locales/ua.d.mts +0 -8
  484. package/dist/node_modules/.pnpm/zod@4.6.5/node_modules/zod/v4/locales/ua.d.mts.map +0 -1
  485. package/dist/node_modules/.pnpm/zod@4.6.5/node_modules/zod/v4/locales/uk.d.mts +0 -8
  486. package/dist/node_modules/.pnpm/zod@4.6.5/node_modules/zod/v4/locales/uk.d.mts.map +0 -1
  487. package/dist/node_modules/.pnpm/zod@4.6.5/node_modules/zod/v4/locales/ur.d.mts +0 -8
  488. package/dist/node_modules/.pnpm/zod@4.6.5/node_modules/zod/v4/locales/ur.d.mts.map +0 -1
  489. package/dist/node_modules/.pnpm/zod@4.6.5/node_modules/zod/v4/locales/uz.d.mts +0 -8
  490. package/dist/node_modules/.pnpm/zod@4.6.5/node_modules/zod/v4/locales/uz.d.mts.map +0 -1
  491. package/dist/node_modules/.pnpm/zod@4.6.5/node_modules/zod/v4/locales/vi.d.mts +0 -8
  492. package/dist/node_modules/.pnpm/zod@4.6.5/node_modules/zod/v4/locales/vi.d.mts.map +0 -1
  493. package/dist/node_modules/.pnpm/zod@4.6.5/node_modules/zod/v4/locales/yo.d.mts +0 -8
  494. package/dist/node_modules/.pnpm/zod@4.6.5/node_modules/zod/v4/locales/yo.d.mts.map +0 -1
  495. package/dist/node_modules/.pnpm/zod@4.6.5/node_modules/zod/v4/locales/zh-CN.d.mts +0 -8
  496. package/dist/node_modules/.pnpm/zod@4.6.5/node_modules/zod/v4/locales/zh-CN.d.mts.map +0 -1
  497. package/dist/node_modules/.pnpm/zod@4.6.5/node_modules/zod/v4/locales/zh-TW.d.mts +0 -8
  498. package/dist/node_modules/.pnpm/zod@4.6.5/node_modules/zod/v4/locales/zh-TW.d.mts.map +0 -1
  499. package/dist/packages/core/po-web-components/themes/doom-nord-dark.mjs +0 -2
  500. package/dist/packages/core/po-web-components/themes/doom-nord-dark.mjs.map +0 -1
  501. package/dist/packages/core/po-web-components/themes/doom-one-dark.mjs +0 -2
  502. package/dist/packages/core/po-web-components/themes/doom-one-dark.mjs.map +0 -1
  503. package/dist/packages/core/po-web-components/themes/doom-one-light.mjs +0 -2
  504. package/dist/packages/core/po-web-components/themes/doom-one-light.mjs.map +0 -1
  505. package/dist/themes/doom-nord-dark.cjs +0 -2
  506. package/dist/themes/doom-nord-dark.cjs.map +0 -1
  507. package/dist/themes/doom-one-dark.cjs +0 -2
  508. package/dist/themes/doom-one-dark.cjs.map +0 -1
  509. package/dist/themes/doom-one-light.cjs +0 -2
  510. package/dist/themes/doom-one-light.cjs.map +0 -1
  511. package/themes/doom-one-dark.json +0 -30
@@ -1 +1 @@
1
- {"version":3,"file":"Settings.mjs","names":["SettingsPage","props","cn","className","SettingsHeader","SettingsTitle","SettingsDescription","SectionIdContext","createContext","SettingsSection","id","useId","SettingsSectionHeader","SettingsSectionTitle","useContext","SettingsSectionDescription","SettingsCard","Panel","SettingsRow","Component","asChild","Slot","changed","SettingsField","SettingsRowText","SettingsRowTitle","label","description","SettingsRowDescription","SettingsNote","SettingsActions"],"sources":["../../../../../../src/components/Settings.tsx"],"sourcesContent":["import { Slot } from 'radix-ui';\nimport { createContext, useContext, useId, type ComponentProps, type ReactNode } from 'react';\n\nimport { cn } from '../lib/cn';\nimport { Panel, type PanelProps } from './Panel';\n\n/**\n * The parts every settings page is built from, so pages differ in what they\n * say and not in how they are laid out.\n *\n * A page is a header (title, description, optional trailing status) followed by\n * sections. A section is a short header and its content, usually a card of\n * rows. A row is a label and description on the left and its control on the\n * right, wrapping under on a narrow screen.\n *\n * Titles are written in sentence case. A label that arrives lowercase, such as\n * a plugin's, is raised by `first-letter:uppercase` rather than rewritten.\n */\n\nexport function SettingsPage({ className, ...props }: ComponentProps<'div'>) {\n return <div data-slot=\"settings-page\" className={cn('flex min-w-0 flex-col gap-10', className)} {...props} />;\n}\n\nexport function SettingsHeader({ className, ...props }: ComponentProps<'header'>) {\n return <header data-slot=\"settings-header\" className={cn('flex min-w-0 flex-col gap-2', className)} {...props} />;\n}\n\nexport function SettingsTitle({ className, children, ...props }: ComponentProps<'h2'>) {\n return (\n <h2\n data-slot=\"settings-title\"\n className={cn('text-2xl font-semibold text-doom-hi first-letter:uppercase', className)}\n {...props}\n >\n {children}\n </h2>\n );\n}\n\nexport function SettingsDescription({ className, ...props }: ComponentProps<'p'>) {\n return (\n <p\n data-slot=\"settings-description\"\n className={cn('max-w-[60ch] text-base leading-relaxed text-doom-dim first-letter:uppercase', className)}\n {...props}\n />\n );\n}\n\n/** Lets a section's title name the section for assistive tech without the page passing ids around. */\nconst SectionIdContext = createContext<string | undefined>(undefined);\n\nexport function SettingsSection({ className, ...props }: ComponentProps<'section'>) {\n const id = useId();\n return (\n <SectionIdContext.Provider value={id}>\n <section\n data-slot=\"settings-section\"\n aria-labelledby={id}\n className={cn('flex min-w-0 flex-col gap-4', className)}\n {...props}\n />\n </SectionIdContext.Provider>\n );\n}\n\n/** The title and description on the left, anything else (a count, a link) trailing on the right. */\nexport function SettingsSectionHeader({ className, ...props }: ComponentProps<'div'>) {\n return (\n <div\n data-slot=\"settings-section-header\"\n className={cn('grid min-w-0 grid-cols-[minmax(0,1fr)_auto] items-end gap-x-4 gap-y-1', className)}\n {...props}\n />\n );\n}\n\nexport function SettingsSectionTitle({ className, children, ...props }: ComponentProps<'h3'>) {\n const id = useContext(SectionIdContext);\n return (\n <h3\n data-slot=\"settings-section-title\"\n id={id}\n className={cn('text-lg font-semibold text-doom-hi first-letter:uppercase', className)}\n {...props}\n >\n {children}\n </h3>\n );\n}\n\nexport function SettingsSectionDescription({ className, ...props }: ComponentProps<'p'>) {\n return (\n <p\n data-slot=\"settings-section-description\"\n className={cn(\n 'col-span-full row-start-2 max-w-[60ch] text-sm leading-relaxed text-doom-dim first-letter:uppercase',\n className,\n )}\n {...props}\n />\n );\n}\n\n/** A rounded panel whose children are separated by hairlines; pass `asChild` with a `<ul>` for a list of rows. */\nexport function SettingsCard({ className, ...props }: PanelProps) {\n return (\n <Panel\n data-slot=\"settings-card\"\n className={cn('flex min-w-0 flex-col divide-y divide-doom-border-soft rounded-lg', className)}\n {...props}\n />\n );\n}\n\n/**\n * One setting: a `SettingsRowText` and its control. Pass `asChild` with an `<li>` inside a list card.\n *\n * `changed` marks a value the reader set on this page with a jade edge, the\n * one quiet signal that it differs from what it would otherwise be. The\n * default state carries no marker and no badge: silence means default.\n */\nexport function SettingsRow({\n className,\n asChild = false,\n changed = false,\n ...props\n}: ComponentProps<'div'> & { asChild?: boolean; changed?: boolean }) {\n const Component = asChild ? Slot.Root : 'div';\n return (\n <Component\n data-slot=\"settings-row\"\n data-changed={changed || undefined}\n className={cn(\n 'relative flex min-w-0 flex-wrap items-center gap-x-6 gap-y-3 px-5 py-4',\n changed && 'before:absolute before:inset-y-4 before:left-0 before:w-0.5 before:rounded-r before:bg-doom-green',\n className,\n )}\n {...props}\n />\n );\n}\n\n/**\n * A form field as a row: its label and hint on the left, the control on the\n * right, wrapping under on a narrow screen. The label is a real `<label>`\n * pointing at `id`, so the control needs that id.\n */\nexport function SettingsField({\n id,\n label,\n description,\n children,\n className,\n ...props\n}: Omit<ComponentProps<'div'>, 'id'> & { id: string; label: ReactNode; description?: ReactNode }) {\n return (\n <SettingsRow className={className} {...props}>\n <SettingsRowText>\n <SettingsRowTitle>\n <label htmlFor={id}>{label}</label>\n </SettingsRowTitle>\n {description === undefined ? null : <SettingsRowDescription>{description}</SettingsRowDescription>}\n </SettingsRowText>\n <div data-slot=\"settings-field-control\" className=\"w-full sm:w-72 [&>*]:w-full\">\n {children}\n </div>\n </SettingsRow>\n );\n}\n\nexport function SettingsRowText({ className, ...props }: ComponentProps<'div'>) {\n return (\n <div data-slot=\"settings-row-text\" className={cn('flex min-w-0 flex-1 flex-col gap-0.5', className)} {...props} />\n );\n}\n\nexport function SettingsRowTitle({ className, ...props }: ComponentProps<'span'>) {\n return (\n <span\n data-slot=\"settings-row-title\"\n className={cn('block text-base font-medium text-doom-hi first-letter:uppercase', className)}\n {...props}\n />\n );\n}\n\nexport function SettingsRowDescription({ className, ...props }: ComponentProps<'span'>) {\n return (\n <span\n data-slot=\"settings-row-description\"\n className={cn('block text-sm leading-relaxed text-doom-dim first-letter:uppercase', className)}\n {...props}\n />\n );\n}\n\n/** A quiet line under a section or page: where a value is saved, what a choice implies. */\nexport function SettingsNote({ className, ...props }: ComponentProps<'p'>) {\n return <p data-slot=\"settings-note\" className={cn('text-sm leading-relaxed text-doom-dim', className)} {...props} />;\n}\n\n/** The buttons that act on a section, primary first. */\nexport function SettingsActions({ className, ...props }: ComponentProps<'div'>) {\n return <div data-slot=\"settings-actions\" className={cn('flex flex-wrap items-center gap-2', className)} {...props} />;\n}\n"],"mappings":"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"}
1
+ {"version":3,"file":"Settings.mjs","names":["SettingsPage","props","cn","className","SettingsHeader","SettingsTitle","SettingsDescription","SectionIdContext","createContext","SettingsSection","id","useId","SettingsSectionHeader","SettingsSectionTitle","useContext","SettingsSectionDescription","SettingsCard","Panel","SettingsRow","Component","asChild","Slot","changed","SettingsField","SettingsRowText","SettingsRowTitle","label","description","SettingsRowDescription","SettingsNote","SettingsActions"],"sources":["../../../../../../src/components/Settings.tsx"],"sourcesContent":["import { Slot } from 'radix-ui';\nimport { createContext, useContext, useId, type ComponentProps, type ReactNode } from 'react';\n\nimport { cn } from '../lib/cn';\nimport { Panel, type PanelProps } from './Panel';\n\n/**\n * The parts every settings page is built from, so pages differ in what they\n * say and not in how they are laid out.\n *\n * A page is a header (title, description, optional trailing status) followed by\n * sections. A section is a short header and its content, usually a card of\n * rows. A row is a label and description on the left and its control on the\n * right, wrapping under on a narrow screen.\n *\n * Titles are written in sentence case. A label that arrives lowercase, such as\n * a plugin's, is raised by `first-letter:uppercase` rather than rewritten.\n */\n\nexport function SettingsPage({ className, ...props }: ComponentProps<'div'>) {\n return <div data-slot=\"settings-page\" className={cn('flex min-w-0 flex-col gap-10', className)} {...props} />;\n}\n\nexport function SettingsHeader({ className, ...props }: ComponentProps<'header'>) {\n return <header data-slot=\"settings-header\" className={cn('flex min-w-0 flex-col gap-2', className)} {...props} />;\n}\n\nexport function SettingsTitle({ className, children, ...props }: ComponentProps<'h2'>) {\n return (\n <h2\n data-slot=\"settings-title\"\n className={cn('text-2xl font-semibold text-po-hi first-letter:uppercase', className)}\n {...props}\n >\n {children}\n </h2>\n );\n}\n\nexport function SettingsDescription({ className, ...props }: ComponentProps<'p'>) {\n return (\n <p\n data-slot=\"settings-description\"\n className={cn('max-w-[60ch] text-base leading-relaxed text-po-dim first-letter:uppercase', className)}\n {...props}\n />\n );\n}\n\n/** Lets a section's title name the section for assistive tech without the page passing ids around. */\nconst SectionIdContext = createContext<string | undefined>(undefined);\n\nexport function SettingsSection({ className, ...props }: ComponentProps<'section'>) {\n const id = useId();\n return (\n <SectionIdContext.Provider value={id}>\n <section\n data-slot=\"settings-section\"\n aria-labelledby={id}\n className={cn('flex min-w-0 flex-col gap-4', className)}\n {...props}\n />\n </SectionIdContext.Provider>\n );\n}\n\n/** The title and description on the left, anything else (a count, a link) trailing on the right. */\nexport function SettingsSectionHeader({ className, ...props }: ComponentProps<'div'>) {\n return (\n <div\n data-slot=\"settings-section-header\"\n className={cn('grid min-w-0 grid-cols-[minmax(0,1fr)_auto] items-end gap-x-4 gap-y-1', className)}\n {...props}\n />\n );\n}\n\nexport function SettingsSectionTitle({ className, children, ...props }: ComponentProps<'h3'>) {\n const id = useContext(SectionIdContext);\n return (\n <h3\n data-slot=\"settings-section-title\"\n id={id}\n className={cn('text-lg font-semibold text-po-hi first-letter:uppercase', className)}\n {...props}\n >\n {children}\n </h3>\n );\n}\n\nexport function SettingsSectionDescription({ className, ...props }: ComponentProps<'p'>) {\n return (\n <p\n data-slot=\"settings-section-description\"\n className={cn(\n 'col-span-full row-start-2 max-w-[60ch] text-sm leading-relaxed text-po-dim first-letter:uppercase',\n className,\n )}\n {...props}\n />\n );\n}\n\n/** A rounded panel whose children are separated by hairlines; pass `asChild` with a `<ul>` for a list of rows. */\nexport function SettingsCard({ className, ...props }: PanelProps) {\n return (\n <Panel\n data-slot=\"settings-card\"\n className={cn('flex min-w-0 flex-col divide-y divide-po-border-soft rounded-lg', className)}\n {...props}\n />\n );\n}\n\n/**\n * One setting: a `SettingsRowText` and its control. Pass `asChild` with an `<li>` inside a list card.\n *\n * `changed` marks a value the reader set on this page with a jade edge, the\n * one quiet signal that it differs from what it would otherwise be. The\n * default state carries no marker and no badge: silence means default.\n */\nexport function SettingsRow({\n className,\n asChild = false,\n changed = false,\n ...props\n}: ComponentProps<'div'> & { asChild?: boolean; changed?: boolean }) {\n const Component = asChild ? Slot.Root : 'div';\n return (\n <Component\n data-slot=\"settings-row\"\n data-changed={changed || undefined}\n className={cn(\n 'relative flex min-w-0 flex-wrap items-center gap-x-6 gap-y-3 px-5 py-4',\n changed && 'before:absolute before:inset-y-4 before:left-0 before:w-0.5 before:rounded-r before:bg-po-green',\n className,\n )}\n {...props}\n />\n );\n}\n\n/**\n * A form field as a row: its label and hint on the left, the control on the\n * right, wrapping under on a narrow screen. The label is a real `<label>`\n * pointing at `id`, so the control needs that id.\n */\nexport function SettingsField({\n id,\n label,\n description,\n children,\n className,\n ...props\n}: Omit<ComponentProps<'div'>, 'id'> & { id: string; label: ReactNode; description?: ReactNode }) {\n return (\n <SettingsRow className={className} {...props}>\n <SettingsRowText>\n <SettingsRowTitle>\n <label htmlFor={id}>{label}</label>\n </SettingsRowTitle>\n {description === undefined ? null : <SettingsRowDescription>{description}</SettingsRowDescription>}\n </SettingsRowText>\n <div data-slot=\"settings-field-control\" className=\"w-full sm:w-72 [&>*]:w-full\">\n {children}\n </div>\n </SettingsRow>\n );\n}\n\nexport function SettingsRowText({ className, ...props }: ComponentProps<'div'>) {\n return (\n <div data-slot=\"settings-row-text\" className={cn('flex min-w-0 flex-1 flex-col gap-0.5', className)} {...props} />\n );\n}\n\nexport function SettingsRowTitle({ className, ...props }: ComponentProps<'span'>) {\n return (\n <span\n data-slot=\"settings-row-title\"\n className={cn('block text-base font-medium text-po-hi first-letter:uppercase', className)}\n {...props}\n />\n );\n}\n\nexport function SettingsRowDescription({ className, ...props }: ComponentProps<'span'>) {\n return (\n <span\n data-slot=\"settings-row-description\"\n className={cn('block text-sm leading-relaxed text-po-dim first-letter:uppercase', className)}\n {...props}\n />\n );\n}\n\n/** A quiet line under a section or page: where a value is saved, what a choice implies. */\nexport function SettingsNote({ className, ...props }: ComponentProps<'p'>) {\n return <p data-slot=\"settings-note\" className={cn('text-sm leading-relaxed text-po-dim', className)} {...props} />;\n}\n\n/** The buttons that act on a section, primary first. */\nexport function SettingsActions({ className, ...props }: ComponentProps<'div'>) {\n return <div data-slot=\"settings-actions\" className={cn('flex flex-wrap items-center gap-2', className)} {...props} />;\n}\n"],"mappings":"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"}
@@ -1,2 +1,2 @@
1
- import{CloseIcon as e}from"../icons/icons.mjs";import{cn as t}from"../lib/cn.mjs";import{Button as n}from"./Button.mjs";import{Dialog as r}from"radix-ui";import{jsx as i,jsxs as a}from"react/jsx-runtime";function o(e){return/* @__PURE__ */ i(r.Root,{"data-slot":`sheet`,...e})}function s(e){return/* @__PURE__ */ i(r.Trigger,{"data-slot":`sheet-trigger`,...e})}function c(e){return/* @__PURE__ */ i(r.Close,{"data-slot":`sheet-close`,...e})}function l({className:e,...n}){return/* @__PURE__ */ i(r.Overlay,{"data-slot":`sheet-overlay`,className:t(`fixed inset-0 z-40 bg-doom-deep/70 data-[state=open]:animate-doom-fade`,e),...n})}const u={right:`inset-y-0 right-0 border-l data-[state=open]:animate-doom-slide-right`,left:`inset-y-0 left-0 border-r data-[state=open]:animate-doom-slide-left`},d={sm:`w-[360px]`,md:`w-[440px]`,lg:`w-[560px]`};function f({className:e,children:n,side:o=`right`,width:s=`md`,...c}){return/* @__PURE__ */ a(r.Portal,{children:[/* @__PURE__ */ i(l,{}),/* @__PURE__ */ i(r.Content,{"data-slot":`sheet-content`,"data-side":o,className:t(`fixed z-50 flex max-w-[calc(100vw-24px)] flex-col overflow-hidden border-doom-border bg-doom-rail shadow-2xl outline-none`,u[o],d[s],e),...c,children:n})]})}function p({className:o,dismissible:s=!0,closeLabel:c=`close`,children:l,...u}){return/* @__PURE__ */ a(`div`,{"data-slot":`sheet-header`,className:t(`flex h-11 min-w-0 shrink-0 items-center gap-2.5 border-b border-doom-border px-4`,o),...u,children:[l,s?/* @__PURE__ */ i(r.Close,{asChild:!0,children:/* @__PURE__ */ i(n,{variant:`ghost`,size:`icon`,"aria-label":c,className:`ml-auto text-doom-faint hover:text-doom-hi`,children:/* @__PURE__ */ i(e,{className:`h-3 w-3`})})}):null]})}function m({className:e,...n}){return/* @__PURE__ */ i(r.Title,{"data-slot":`sheet-title`,className:t(`truncate text-lg font-semibold text-doom-hi`,e),...n})}function h({className:e,...n}){return/* @__PURE__ */ i(r.Description,{"data-slot":`sheet-description`,className:t(`text-sm leading-relaxed text-doom-dim`,e),...n})}function g({className:e,...n}){return/* @__PURE__ */ i(`div`,{"data-slot":`sheet-body`,className:t(`flex min-h-0 flex-1 flex-col gap-3 overflow-y-auto px-4 py-3`,e),...n})}function _({className:e,...n}){return/* @__PURE__ */ i(`div`,{"data-slot":`sheet-footer`,className:t(`flex min-h-[34px] shrink-0 flex-wrap items-center justify-between gap-2 border-t border-doom-border-soft bg-doom-deep px-4 py-1.5`,e),...n})}export{o as Sheet,g as SheetBody,c as SheetClose,f as SheetContent,h as SheetDescription,_ as SheetFooter,p as SheetHeader,l as SheetOverlay,m as SheetTitle,s as SheetTrigger};
1
+ import{CloseIcon as e}from"../icons/icons.mjs";import{cn as t}from"../lib/cn.mjs";import{Button as n}from"./Button.mjs";import{Dialog as r}from"radix-ui";import{jsx as i,jsxs as a}from"react/jsx-runtime";function o(e){return/* @__PURE__ */ i(r.Root,{"data-slot":`sheet`,...e})}function s(e){return/* @__PURE__ */ i(r.Trigger,{"data-slot":`sheet-trigger`,...e})}function c(e){return/* @__PURE__ */ i(r.Close,{"data-slot":`sheet-close`,...e})}function l({className:e,...n}){return/* @__PURE__ */ i(r.Overlay,{"data-slot":`sheet-overlay`,className:t(`fixed inset-0 z-40 bg-po-deep/70 data-[state=open]:animate-po-fade`,e),...n})}const u={right:`inset-y-0 right-0 border-l data-[state=open]:animate-po-slide-right`,left:`inset-y-0 left-0 border-r data-[state=open]:animate-po-slide-left`},d={sm:`w-[360px]`,md:`w-[440px]`,lg:`w-[560px]`};function f({className:e,children:n,side:o=`right`,width:s=`md`,...c}){return/* @__PURE__ */ a(r.Portal,{children:[/* @__PURE__ */ i(l,{}),/* @__PURE__ */ i(r.Content,{"data-slot":`sheet-content`,"data-side":o,className:t(`fixed z-50 flex max-w-[calc(100vw-24px)] flex-col overflow-hidden border-po-border bg-po-rail shadow-2xl outline-none`,u[o],d[s],e),...c,children:n})]})}function p({className:o,dismissible:s=!0,closeLabel:c=`close`,children:l,...u}){return/* @__PURE__ */ a(`div`,{"data-slot":`sheet-header`,className:t(`flex h-11 min-w-0 shrink-0 items-center gap-2.5 border-b border-po-border px-4`,o),...u,children:[l,s?/* @__PURE__ */ i(r.Close,{asChild:!0,children:/* @__PURE__ */ i(n,{variant:`ghost`,size:`icon`,"aria-label":c,className:`ml-auto text-po-faint hover:text-po-hi`,children:/* @__PURE__ */ i(e,{className:`h-3 w-3`})})}):null]})}function m({className:e,...n}){return/* @__PURE__ */ i(r.Title,{"data-slot":`sheet-title`,className:t(`truncate text-lg font-semibold text-po-hi`,e),...n})}function h({className:e,...n}){return/* @__PURE__ */ i(r.Description,{"data-slot":`sheet-description`,className:t(`text-sm leading-relaxed text-po-dim`,e),...n})}function g({className:e,...n}){return/* @__PURE__ */ i(`div`,{"data-slot":`sheet-body`,className:t(`flex min-h-0 flex-1 flex-col gap-3 overflow-y-auto px-4 py-3`,e),...n})}function _({className:e,...n}){return/* @__PURE__ */ i(`div`,{"data-slot":`sheet-footer`,className:t(`flex min-h-[34px] shrink-0 flex-wrap items-center justify-between gap-2 border-t border-po-border-soft bg-po-deep px-4 py-1.5`,e),...n})}export{o as Sheet,g as SheetBody,c as SheetClose,f as SheetContent,h as SheetDescription,_ as SheetFooter,p as SheetHeader,l as SheetOverlay,m as SheetTitle,s as SheetTrigger};
2
2
  //# sourceMappingURL=Sheet.mjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"Sheet.mjs","names":["SheetPrimitive","Sheet","Dialog","props","SheetTrigger","SheetClose","SheetOverlay","cn","className","SIDE_POSITION","CONTENT_WIDTH","SheetContent","side","width","SheetHeader","children","dismissible","Button","closeLabel","CloseIcon","SheetTitle","SheetDescription","SheetBody","SheetFooter"],"sources":["../../../../../../src/components/Sheet.tsx"],"sourcesContent":["import { Dialog as SheetPrimitive } from 'radix-ui';\nimport type { ComponentProps } from 'react';\n\nimport { CloseIcon } from '../icons/icons';\nimport { cn } from '../lib/cn';\nimport { Button } from './Button';\n\n/**\n * A side panel on Radix's Dialog: an overlay that slides in from an edge,\n * with the focus trap, Escape, outside click and scroll lock a dialog has.\n *\n * It is the Dialog for content that reads as a column rather than a form: a\n * detail view beside what the reader was looking at. An inline aside cannot\n * do this, because it takes width from the surface underneath it.\n */\nexport function Sheet(props: ComponentProps<typeof SheetPrimitive.Root>) {\n return <SheetPrimitive.Root data-slot=\"sheet\" {...props} />;\n}\n\nexport function SheetTrigger(props: ComponentProps<typeof SheetPrimitive.Trigger>) {\n return <SheetPrimitive.Trigger data-slot=\"sheet-trigger\" {...props} />;\n}\n\nexport function SheetClose(props: ComponentProps<typeof SheetPrimitive.Close>) {\n return <SheetPrimitive.Close data-slot=\"sheet-close\" {...props} />;\n}\n\nexport function SheetOverlay({ className, ...props }: ComponentProps<typeof SheetPrimitive.Overlay>) {\n return (\n <SheetPrimitive.Overlay\n data-slot=\"sheet-overlay\"\n className={cn('fixed inset-0 z-40 bg-doom-deep/70 data-[state=open]:animate-doom-fade', className)}\n {...props}\n />\n );\n}\n\nconst SIDE_POSITION = {\n right: 'inset-y-0 right-0 border-l data-[state=open]:animate-doom-slide-right',\n left: 'inset-y-0 left-0 border-r data-[state=open]:animate-doom-slide-left',\n} as const;\n\nexport interface SheetContentProps extends ComponentProps<typeof SheetPrimitive.Content> {\n /** Which edge it comes from. */\n side?: 'right' | 'left';\n /** Width preset; `className` may still override. */\n width?: 'sm' | 'md' | 'lg';\n}\n\nconst CONTENT_WIDTH = { sm: 'w-[360px]', md: 'w-[440px]', lg: 'w-[560px]' } as const;\n\nexport function SheetContent({ className, children, side = 'right', width = 'md', ...props }: SheetContentProps) {\n return (\n <SheetPrimitive.Portal>\n <SheetOverlay />\n <SheetPrimitive.Content\n data-slot=\"sheet-content\"\n data-side={side}\n className={cn(\n 'fixed z-50 flex max-w-[calc(100vw-24px)] flex-col overflow-hidden border-doom-border bg-doom-rail shadow-2xl outline-none',\n SIDE_POSITION[side],\n CONTENT_WIDTH[width],\n className,\n )}\n {...props}\n >\n {children}\n </SheetPrimitive.Content>\n </SheetPrimitive.Portal>\n );\n}\n\nexport interface SheetHeaderProps extends ComponentProps<'div'> {\n /** Show the close control at the right of the strip. On by default: a sheet is dismissed, not answered. */\n dismissible?: boolean;\n /** What the close control announces. */\n closeLabel?: string;\n}\n\nexport function SheetHeader({\n className,\n dismissible = true,\n closeLabel = 'close',\n children,\n ...props\n}: SheetHeaderProps) {\n return (\n <div\n data-slot=\"sheet-header\"\n className={cn('flex h-11 min-w-0 shrink-0 items-center gap-2.5 border-b border-doom-border px-4', className)}\n {...props}\n >\n {children}\n {dismissible ? (\n <SheetPrimitive.Close asChild>\n <Button\n variant=\"ghost\"\n size=\"icon\"\n aria-label={closeLabel}\n className=\"ml-auto text-doom-faint hover:text-doom-hi\"\n >\n <CloseIcon className=\"h-3 w-3\" />\n </Button>\n </SheetPrimitive.Close>\n ) : null}\n </div>\n );\n}\n\nexport function SheetTitle({ className, ...props }: ComponentProps<typeof SheetPrimitive.Title>) {\n return (\n <SheetPrimitive.Title\n data-slot=\"sheet-title\"\n className={cn('truncate text-lg font-semibold text-doom-hi', className)}\n {...props}\n />\n );\n}\n\nexport function SheetDescription({ className, ...props }: ComponentProps<typeof SheetPrimitive.Description>) {\n return (\n <SheetPrimitive.Description\n data-slot=\"sheet-description\"\n className={cn('text-sm leading-relaxed text-doom-dim', className)}\n {...props}\n />\n );\n}\n\nexport function SheetBody({ className, ...props }: ComponentProps<'div'>) {\n return (\n <div\n data-slot=\"sheet-body\"\n className={cn('flex min-h-0 flex-1 flex-col gap-3 overflow-y-auto px-4 py-3', className)}\n {...props}\n />\n );\n}\n\nexport function SheetFooter({ className, ...props }: ComponentProps<'div'>) {\n return (\n <div\n data-slot=\"sheet-footer\"\n className={cn(\n 'flex min-h-[34px] shrink-0 flex-wrap items-center justify-between gap-2 border-t border-doom-border-soft bg-doom-deep px-4 py-1.5',\n className,\n )}\n {...props}\n />\n );\n}\n"],"mappings":"4MAeA,SAAgBC,EAAM,EAAmD,CACvE,MAAO,kBAACD,EAAe,KAAhB,CAAqB,YAAU,QAAQ,GAAIG,CAAQ,CAAA,CAC5D,CAEA,SAAgBC,EAAa,EAAsD,CACjF,MAAO,kBAACJ,EAAe,QAAhB,CAAwB,YAAU,gBAAgB,GAAIG,CAAQ,CAAA,CACvE,CAEA,SAAgBE,EAAW,EAAoD,CAC7E,MAAO,kBAACL,EAAe,MAAhB,CAAsB,YAAU,cAAc,GAAIG,CAAQ,CAAA,CACnE,CAEA,SAAgBG,EAAa,CAAE,YAAW,GAAGH,GAAwD,CACnG,MACE,kBAACH,EAAe,QAAhB,CACE,YAAU,gBACV,UAAWO,EAAG,yEAA0EC,CAAS,EACjG,GAAIL,CACL,CAAA,CAEL,CAEA,MAAMM,EAAgB,CACpB,MAAO,wEACP,KAAM,qEACR,EASMC,EAAgB,CAAE,GAAI,YAAa,GAAI,YAAa,GAAI,WAAY,EAE1E,SAAgBC,EAAa,CAAE,YAAW,WAAU,OAAO,QAAS,QAAQ,KAAM,GAAGR,GAA4B,CAC/G,MACE,kBAACH,EAAe,OAAhB,CAAA,SAAA,CACE,kBAACM,EAAD,CAAe,CAAA,EACf,kBAACN,EAAe,QAAhB,CACE,YAAU,gBACV,YAAWY,EACX,UAAWL,EACT,4HACAE,EAAcG,GACdF,EAAcG,GACdL,CACF,EACA,GAAIL,EAEH,UACqB,CAAA,CACH,CAAA,CAAA,CAE3B,CASA,SAAgBW,EAAY,CAC1B,YACA,cAAc,GACd,aAAa,QACb,WACA,GAAGX,GACgB,CACnB,MACE,kBAAC,MAAD,CACE,YAAU,eACV,UAAWI,EAAG,mFAAoFC,CAAS,EAC3G,GAAIL,EAHN,SAAA,CAKGY,EACAC,EACC,kBAAChB,EAAe,MAAhB,CAAsB,QAAA,GACpB,SAAA,kBAACiB,EAAD,CACE,QAAQ,QACR,KAAK,OACL,aAAYC,EACZ,UAAU,6CAEV,SAAA,kBAACC,EAAD,CAAW,UAAU,SAAW,CAAA,CAC1B,CAAA,CACY,CAAA,EACpB,IACD,GAET,CAEA,SAAgBC,EAAW,CAAE,YAAW,GAAGjB,GAAsD,CAC/F,MACE,kBAACH,EAAe,MAAhB,CACE,YAAU,cACV,UAAWO,EAAG,8CAA+CC,CAAS,EACtE,GAAIL,CACL,CAAA,CAEL,CAEA,SAAgBkB,EAAiB,CAAE,YAAW,GAAGlB,GAA4D,CAC3G,MACE,kBAACH,EAAe,YAAhB,CACE,YAAU,oBACV,UAAWO,EAAG,wCAAyCC,CAAS,EAChE,GAAIL,CACL,CAAA,CAEL,CAEA,SAAgBmB,EAAU,CAAE,YAAW,GAAGnB,GAAgC,CACxE,MACE,kBAAC,MAAD,CACE,YAAU,aACV,UAAWI,EAAG,+DAAgEC,CAAS,EACvF,GAAIL,CACL,CAAA,CAEL,CAEA,SAAgBoB,EAAY,CAAE,YAAW,GAAGpB,GAAgC,CAC1E,MACE,kBAAC,MAAD,CACE,YAAU,eACV,UAAWI,EACT,oIACAC,CACF,EACA,GAAIL,CACL,CAAA,CAEL"}
1
+ {"version":3,"file":"Sheet.mjs","names":["SheetPrimitive","Sheet","Dialog","props","SheetTrigger","SheetClose","SheetOverlay","cn","className","SIDE_POSITION","CONTENT_WIDTH","SheetContent","side","width","SheetHeader","children","dismissible","Button","closeLabel","CloseIcon","SheetTitle","SheetDescription","SheetBody","SheetFooter"],"sources":["../../../../../../src/components/Sheet.tsx"],"sourcesContent":["import { Dialog as SheetPrimitive } from 'radix-ui';\nimport type { ComponentProps } from 'react';\n\nimport { CloseIcon } from '../icons/icons';\nimport { cn } from '../lib/cn';\nimport { Button } from './Button';\n\n/**\n * A side panel on Radix's Dialog: an overlay that slides in from an edge,\n * with the focus trap, Escape, outside click and scroll lock a dialog has.\n *\n * It is the Dialog for content that reads as a column rather than a form: a\n * detail view beside what the reader was looking at. An inline aside cannot\n * do this, because it takes width from the surface underneath it.\n */\nexport function Sheet(props: ComponentProps<typeof SheetPrimitive.Root>) {\n return <SheetPrimitive.Root data-slot=\"sheet\" {...props} />;\n}\n\nexport function SheetTrigger(props: ComponentProps<typeof SheetPrimitive.Trigger>) {\n return <SheetPrimitive.Trigger data-slot=\"sheet-trigger\" {...props} />;\n}\n\nexport function SheetClose(props: ComponentProps<typeof SheetPrimitive.Close>) {\n return <SheetPrimitive.Close data-slot=\"sheet-close\" {...props} />;\n}\n\nexport function SheetOverlay({ className, ...props }: ComponentProps<typeof SheetPrimitive.Overlay>) {\n return (\n <SheetPrimitive.Overlay\n data-slot=\"sheet-overlay\"\n className={cn('fixed inset-0 z-40 bg-po-deep/70 data-[state=open]:animate-po-fade', className)}\n {...props}\n />\n );\n}\n\nconst SIDE_POSITION = {\n right: 'inset-y-0 right-0 border-l data-[state=open]:animate-po-slide-right',\n left: 'inset-y-0 left-0 border-r data-[state=open]:animate-po-slide-left',\n} as const;\n\nexport interface SheetContentProps extends ComponentProps<typeof SheetPrimitive.Content> {\n /** Which edge it comes from. */\n side?: 'right' | 'left';\n /** Width preset; `className` may still override. */\n width?: 'sm' | 'md' | 'lg';\n}\n\nconst CONTENT_WIDTH = { sm: 'w-[360px]', md: 'w-[440px]', lg: 'w-[560px]' } as const;\n\nexport function SheetContent({ className, children, side = 'right', width = 'md', ...props }: SheetContentProps) {\n return (\n <SheetPrimitive.Portal>\n <SheetOverlay />\n <SheetPrimitive.Content\n data-slot=\"sheet-content\"\n data-side={side}\n className={cn(\n 'fixed z-50 flex max-w-[calc(100vw-24px)] flex-col overflow-hidden border-po-border bg-po-rail shadow-2xl outline-none',\n SIDE_POSITION[side],\n CONTENT_WIDTH[width],\n className,\n )}\n {...props}\n >\n {children}\n </SheetPrimitive.Content>\n </SheetPrimitive.Portal>\n );\n}\n\nexport interface SheetHeaderProps extends ComponentProps<'div'> {\n /** Show the close control at the right of the strip. On by default: a sheet is dismissed, not answered. */\n dismissible?: boolean;\n /** What the close control announces. */\n closeLabel?: string;\n}\n\nexport function SheetHeader({\n className,\n dismissible = true,\n closeLabel = 'close',\n children,\n ...props\n}: SheetHeaderProps) {\n return (\n <div\n data-slot=\"sheet-header\"\n className={cn('flex h-11 min-w-0 shrink-0 items-center gap-2.5 border-b border-po-border px-4', className)}\n {...props}\n >\n {children}\n {dismissible ? (\n <SheetPrimitive.Close asChild>\n <Button\n variant=\"ghost\"\n size=\"icon\"\n aria-label={closeLabel}\n className=\"ml-auto text-po-faint hover:text-po-hi\"\n >\n <CloseIcon className=\"h-3 w-3\" />\n </Button>\n </SheetPrimitive.Close>\n ) : null}\n </div>\n );\n}\n\nexport function SheetTitle({ className, ...props }: ComponentProps<typeof SheetPrimitive.Title>) {\n return (\n <SheetPrimitive.Title\n data-slot=\"sheet-title\"\n className={cn('truncate text-lg font-semibold text-po-hi', className)}\n {...props}\n />\n );\n}\n\nexport function SheetDescription({ className, ...props }: ComponentProps<typeof SheetPrimitive.Description>) {\n return (\n <SheetPrimitive.Description\n data-slot=\"sheet-description\"\n className={cn('text-sm leading-relaxed text-po-dim', className)}\n {...props}\n />\n );\n}\n\nexport function SheetBody({ className, ...props }: ComponentProps<'div'>) {\n return (\n <div\n data-slot=\"sheet-body\"\n className={cn('flex min-h-0 flex-1 flex-col gap-3 overflow-y-auto px-4 py-3', className)}\n {...props}\n />\n );\n}\n\nexport function SheetFooter({ className, ...props }: ComponentProps<'div'>) {\n return (\n <div\n data-slot=\"sheet-footer\"\n className={cn(\n 'flex min-h-[34px] shrink-0 flex-wrap items-center justify-between gap-2 border-t border-po-border-soft bg-po-deep px-4 py-1.5',\n className,\n )}\n {...props}\n />\n );\n}\n"],"mappings":"4MAeA,SAAgBC,EAAM,EAAmD,CACvE,MAAO,kBAACD,EAAe,KAAhB,CAAqB,YAAU,QAAQ,GAAIG,CAAQ,CAAA,CAC5D,CAEA,SAAgBC,EAAa,EAAsD,CACjF,MAAO,kBAACJ,EAAe,QAAhB,CAAwB,YAAU,gBAAgB,GAAIG,CAAQ,CAAA,CACvE,CAEA,SAAgBE,EAAW,EAAoD,CAC7E,MAAO,kBAACL,EAAe,MAAhB,CAAsB,YAAU,cAAc,GAAIG,CAAQ,CAAA,CACnE,CAEA,SAAgBG,EAAa,CAAE,YAAW,GAAGH,GAAwD,CACnG,MACE,kBAACH,EAAe,QAAhB,CACE,YAAU,gBACV,UAAWO,EAAG,qEAAsEC,CAAS,EAC7F,GAAIL,CACL,CAAA,CAEL,CAEA,MAAMM,EAAgB,CACpB,MAAO,sEACP,KAAM,mEACR,EASMC,EAAgB,CAAE,GAAI,YAAa,GAAI,YAAa,GAAI,WAAY,EAE1E,SAAgBC,EAAa,CAAE,YAAW,WAAU,OAAO,QAAS,QAAQ,KAAM,GAAGR,GAA4B,CAC/G,MACE,kBAACH,EAAe,OAAhB,CAAA,SAAA,CACE,kBAACM,EAAD,CAAe,CAAA,EACf,kBAACN,EAAe,QAAhB,CACE,YAAU,gBACV,YAAWY,EACX,UAAWL,EACT,wHACAE,EAAcG,GACdF,EAAcG,GACdL,CACF,EACA,GAAIL,EAEH,UACqB,CAAA,CACH,CAAA,CAAA,CAE3B,CASA,SAAgBW,EAAY,CAC1B,YACA,cAAc,GACd,aAAa,QACb,WACA,GAAGX,GACgB,CACnB,MACE,kBAAC,MAAD,CACE,YAAU,eACV,UAAWI,EAAG,iFAAkFC,CAAS,EACzG,GAAIL,EAHN,SAAA,CAKGY,EACAC,EACC,kBAAChB,EAAe,MAAhB,CAAsB,QAAA,GACpB,SAAA,kBAACiB,EAAD,CACE,QAAQ,QACR,KAAK,OACL,aAAYC,EACZ,UAAU,yCAEV,SAAA,kBAACC,EAAD,CAAW,UAAU,SAAW,CAAA,CAC1B,CAAA,CACY,CAAA,EACpB,IACD,GAET,CAEA,SAAgBC,EAAW,CAAE,YAAW,GAAGjB,GAAsD,CAC/F,MACE,kBAACH,EAAe,MAAhB,CACE,YAAU,cACV,UAAWO,EAAG,4CAA6CC,CAAS,EACpE,GAAIL,CACL,CAAA,CAEL,CAEA,SAAgBkB,EAAiB,CAAE,YAAW,GAAGlB,GAA4D,CAC3G,MACE,kBAACH,EAAe,YAAhB,CACE,YAAU,oBACV,UAAWO,EAAG,sCAAuCC,CAAS,EAC9D,GAAIL,CACL,CAAA,CAEL,CAEA,SAAgBmB,EAAU,CAAE,YAAW,GAAGnB,GAAgC,CACxE,MACE,kBAAC,MAAD,CACE,YAAU,aACV,UAAWI,EAAG,+DAAgEC,CAAS,EACvF,GAAIL,CACL,CAAA,CAEL,CAEA,SAAgBoB,EAAY,CAAE,YAAW,GAAGpB,GAAgC,CAC1E,MACE,kBAAC,MAAD,CACE,YAAU,eACV,UAAWI,EACT,gIACAC,CACF,EACA,GAAIL,CACL,CAAA,CAEL"}
@@ -1,2 +1,2 @@
1
- import{cn as e}from"../lib/cn.mjs";import{jsx as t}from"react/jsx-runtime";function n({className:n,...r}){return/* @__PURE__ */ t(`div`,{"data-slot":`skeleton`,"aria-hidden":!0,className:e(`animate-pulse rounded bg-doom-border-soft`,n),...r})}export{n as Skeleton};
1
+ import{cn as e}from"../lib/cn.mjs";import{jsx as t}from"react/jsx-runtime";function n({className:n,...r}){return/* @__PURE__ */ t(`div`,{"data-slot":`skeleton`,"aria-hidden":!0,className:e(`animate-pulse rounded bg-po-border-soft`,n),...r})}export{n as Skeleton};
2
2
  //# sourceMappingURL=Skeleton.mjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"Skeleton.mjs","names":["Skeleton","props","cn","className"],"sources":["../../../../../../src/components/Skeleton.tsx"],"sourcesContent":["import type { ComponentProps } from 'react';\n\nimport { cn } from '../lib/cn';\n\n/**\n * The shape of content that has not arrived. It has no Radix counterpart; it\n * is a pulsing block, and it is aria-hidden because the live region that\n * announces the wait belongs to the surface, not to each placeholder.\n */\nexport function Skeleton({ className, ...props }: ComponentProps<'div'>) {\n return (\n <div\n data-slot=\"skeleton\"\n aria-hidden\n className={cn('animate-pulse rounded bg-doom-border-soft', className)}\n {...props}\n />\n );\n}\n"],"mappings":"2EASA,SAAgBA,EAAS,CAAE,YAAW,GAAGC,GAAgC,CACvE,MACE,kBAAC,MAAD,CACE,YAAU,WACV,cAAA,GACA,UAAWC,EAAG,4CAA6CC,CAAS,EACpE,GAAIF,CACL,CAAA,CAEL"}
1
+ {"version":3,"file":"Skeleton.mjs","names":["Skeleton","props","cn","className"],"sources":["../../../../../../src/components/Skeleton.tsx"],"sourcesContent":["import type { ComponentProps } from 'react';\n\nimport { cn } from '../lib/cn';\n\n/**\n * The shape of content that has not arrived. It has no Radix counterpart; it\n * is a pulsing block, and it is aria-hidden because the live region that\n * announces the wait belongs to the surface, not to each placeholder.\n */\nexport function Skeleton({ className, ...props }: ComponentProps<'div'>) {\n return (\n <div\n data-slot=\"skeleton\"\n aria-hidden\n className={cn('animate-pulse rounded bg-po-border-soft', className)}\n {...props}\n />\n );\n}\n"],"mappings":"2EASA,SAAgBA,EAAS,CAAE,YAAW,GAAGC,GAAgC,CACvE,MACE,kBAAC,MAAD,CACE,YAAU,WACV,cAAA,GACA,UAAWC,EAAG,0CAA2CC,CAAS,EAClE,GAAIF,CACL,CAAA,CAEL"}
@@ -1,2 +1,2 @@
1
- import{cn as e}from"../lib/cn.mjs";import{Slot as t}from"radix-ui";import{jsx as n}from"react/jsx-runtime";import{cva as r}from"class-variance-authority";const i=r(`inline-flex shrink-0 items-center gap-1.5 whitespace-nowrap rounded-sm font-semibold`,{variants:{tone:{neutral:`bg-doom-panel text-doom-faint`,running:`bg-doom-tint-yellow text-doom-yellow`,ok:`bg-doom-tint-green text-doom-green`,error:`bg-doom-tint-red text-doom-red`,info:`bg-doom-tint-blue text-doom-blue`,accent:`bg-doom-tint-magenta text-doom-magenta`},size:{xs:`px-1.5 py-px text-sm`,sm:`px-[7px] py-[3px] text-sm`,md:`h-[21px] px-2 text-sm normal-case`,lg:`h-6 px-2.5 text-base normal-case`}},defaultVariants:{tone:`neutral`,size:`sm`}}),a={neutral:`border-doom-border`,running:`border-doom-edge-yellow`,ok:`border-doom-edge-green`,error:`border-doom-edge-red`,info:`border-doom-edge-blue`,accent:`border-doom-edge-magenta`};function o({className:r,tone:a,size:o,asChild:s=!1,...c}){let l=s?t.Root:`span`;return/* @__PURE__ */ n(l,{"data-slot":`status-badge`,className:e(i({tone:a,size:o}),r),...c})}export{a as STATUS_EDGE,o as StatusBadge,i as statusBadgeVariants};
1
+ import{cn as e}from"../lib/cn.mjs";import{Slot as t}from"radix-ui";import{jsx as n}from"react/jsx-runtime";import{cva as r}from"class-variance-authority";const i=r(`inline-flex shrink-0 items-center gap-1.5 whitespace-nowrap rounded-sm font-semibold`,{variants:{tone:{neutral:`bg-po-panel text-po-faint`,running:`bg-po-tint-yellow text-po-yellow`,ok:`bg-po-tint-green text-po-green`,error:`bg-po-tint-red text-po-red`,info:`bg-po-tint-blue text-po-blue`,accent:`bg-po-tint-magenta text-po-magenta`},size:{xs:`px-1.5 py-px text-sm`,sm:`px-[7px] py-[3px] text-sm`,md:`h-[21px] px-2 text-sm normal-case`,lg:`h-6 px-2.5 text-base normal-case`}},defaultVariants:{tone:`neutral`,size:`sm`}}),a={neutral:`border-po-border`,running:`border-po-edge-yellow`,ok:`border-po-edge-green`,error:`border-po-edge-red`,info:`border-po-edge-blue`,accent:`border-po-edge-magenta`};function o({className:r,tone:a,size:o,asChild:s=!1,...c}){let l=s?t.Root:`span`;return/* @__PURE__ */ n(l,{"data-slot":`status-badge`,className:e(i({tone:a,size:o}),r),...c})}export{a as STATUS_EDGE,o as StatusBadge,i as statusBadgeVariants};
2
2
  //# sourceMappingURL=StatusBadge.mjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"StatusBadge.mjs","names":["statusBadgeVariants","cva","STATUS_EDGE","StatusBadge","props","Component","asChild","Slot","cn","className"],"sources":["../../../../../../src/components/StatusBadge.tsx"],"sourcesContent":["import { cva, type VariantProps } from 'class-variance-authority';\nimport { Slot } from 'radix-ui';\nimport type { ComponentProps } from 'react';\n\nimport { cn } from '../lib/cn';\nimport type { StatusTone as Tone } from '../types/tone';\n\nexport const statusBadgeVariants = cva(\n 'inline-flex shrink-0 items-center gap-1.5 whitespace-nowrap rounded-sm font-semibold',\n {\n variants: {\n tone: {\n neutral: 'bg-doom-panel text-doom-faint',\n running: 'bg-doom-tint-yellow text-doom-yellow',\n ok: 'bg-doom-tint-green text-doom-green',\n error: 'bg-doom-tint-red text-doom-red',\n info: 'bg-doom-tint-blue text-doom-blue',\n accent: 'bg-doom-tint-magenta text-doom-magenta',\n } satisfies Record<Tone, string>,\n size: {\n xs: 'px-1.5 py-px text-sm',\n sm: 'px-[7px] py-[3px] text-sm',\n md: 'h-[21px] px-2 text-sm normal-case',\n lg: 'h-6 px-2.5 text-base normal-case',\n },\n },\n defaultVariants: { tone: 'neutral', size: 'sm' },\n },\n);\n\nexport type StatusTone = Tone;\n\n/**\n * The border a card wears for a status, the same tint family as the badge.\n * MessageItem builds its frame variants from this table, so a tone's edge is\n * named once and a card and its badge can never disagree about it.\n */\nexport const STATUS_EDGE: Readonly<Record<StatusTone, string>> = {\n neutral: 'border-doom-border',\n running: 'border-doom-edge-yellow',\n ok: 'border-doom-edge-green',\n error: 'border-doom-edge-red',\n info: 'border-doom-edge-blue',\n accent: 'border-doom-edge-magenta',\n};\n\nexport interface StatusBadgeProps extends ComponentProps<'span'>, VariantProps<typeof statusBadgeVariants> {\n /** Render the child element instead of a <span>, so a link can look like a pill. */\n asChild?: boolean;\n}\n\n/** The tinted outcome pill: RUNNING, OK, ERROR and their kin, as every run card draws it. */\nexport function StatusBadge({ className, tone, size, asChild = false, ...props }: StatusBadgeProps) {\n const Component = asChild ? Slot.Root : 'span';\n return (\n <Component data-slot=\"status-badge\" className={cn(statusBadgeVariants({ tone, size }), className)} {...props} />\n );\n}\n"],"mappings":"0JAOA,MAAaA,EAAsBC,EACjC,uFACA,CACE,SAAU,CACR,KAAM,CACJ,QAAS,gCACT,QAAS,uCACT,GAAI,qCACJ,MAAO,iCACP,KAAM,mCACN,OAAQ,wCACV,EACA,KAAM,CACJ,GAAI,uBACJ,GAAI,4BACJ,GAAI,oCACJ,GAAI,kCACN,CACF,EACA,gBAAiB,CAAE,KAAM,UAAW,KAAM,IAAK,CACjD,CACF,EASaC,EAAoD,CAC/D,QAAS,qBACT,QAAS,0BACT,GAAI,yBACJ,MAAO,uBACP,KAAM,wBACN,OAAQ,0BACV,EAQA,SAAgBC,EAAY,CAAE,YAAW,OAAM,OAAM,UAAU,GAAO,GAAGC,GAA2B,CAClG,IAAMC,EAAYC,EAAUC,EAAK,KAAO,OACxC,MACE,kBAACF,EAAD,CAAW,YAAU,eAAe,UAAWG,EAAGR,EAAoB,CAAE,OAAM,MAAK,CAAC,EAAGS,CAAS,EAAG,GAAIL,CAAQ,CAAA,CAEnH"}
1
+ {"version":3,"file":"StatusBadge.mjs","names":["statusBadgeVariants","cva","STATUS_EDGE","StatusBadge","props","Component","asChild","Slot","cn","className"],"sources":["../../../../../../src/components/StatusBadge.tsx"],"sourcesContent":["import { cva, type VariantProps } from 'class-variance-authority';\nimport { Slot } from 'radix-ui';\nimport type { ComponentProps } from 'react';\n\nimport { cn } from '../lib/cn';\nimport type { StatusTone as Tone } from '../types/tone';\n\nexport const statusBadgeVariants = cva(\n 'inline-flex shrink-0 items-center gap-1.5 whitespace-nowrap rounded-sm font-semibold',\n {\n variants: {\n tone: {\n neutral: 'bg-po-panel text-po-faint',\n running: 'bg-po-tint-yellow text-po-yellow',\n ok: 'bg-po-tint-green text-po-green',\n error: 'bg-po-tint-red text-po-red',\n info: 'bg-po-tint-blue text-po-blue',\n accent: 'bg-po-tint-magenta text-po-magenta',\n } satisfies Record<Tone, string>,\n size: {\n xs: 'px-1.5 py-px text-sm',\n sm: 'px-[7px] py-[3px] text-sm',\n md: 'h-[21px] px-2 text-sm normal-case',\n lg: 'h-6 px-2.5 text-base normal-case',\n },\n },\n defaultVariants: { tone: 'neutral', size: 'sm' },\n },\n);\n\nexport type StatusTone = Tone;\n\n/**\n * The border a card wears for a status, the same tint family as the badge.\n * MessageItem builds its frame variants from this table, so a tone's edge is\n * named once and a card and its badge can never disagree about it.\n */\nexport const STATUS_EDGE: Readonly<Record<StatusTone, string>> = {\n neutral: 'border-po-border',\n running: 'border-po-edge-yellow',\n ok: 'border-po-edge-green',\n error: 'border-po-edge-red',\n info: 'border-po-edge-blue',\n accent: 'border-po-edge-magenta',\n};\n\nexport interface StatusBadgeProps extends ComponentProps<'span'>, VariantProps<typeof statusBadgeVariants> {\n /** Render the child element instead of a <span>, so a link can look like a pill. */\n asChild?: boolean;\n}\n\n/** The tinted outcome pill: RUNNING, OK, ERROR and their kin, as every run card draws it. */\nexport function StatusBadge({ className, tone, size, asChild = false, ...props }: StatusBadgeProps) {\n const Component = asChild ? Slot.Root : 'span';\n return (\n <Component data-slot=\"status-badge\" className={cn(statusBadgeVariants({ tone, size }), className)} {...props} />\n );\n}\n"],"mappings":"0JAOA,MAAaA,EAAsBC,EACjC,uFACA,CACE,SAAU,CACR,KAAM,CACJ,QAAS,4BACT,QAAS,mCACT,GAAI,iCACJ,MAAO,6BACP,KAAM,+BACN,OAAQ,oCACV,EACA,KAAM,CACJ,GAAI,uBACJ,GAAI,4BACJ,GAAI,oCACJ,GAAI,kCACN,CACF,EACA,gBAAiB,CAAE,KAAM,UAAW,KAAM,IAAK,CACjD,CACF,EASaC,EAAoD,CAC/D,QAAS,mBACT,QAAS,wBACT,GAAI,uBACJ,MAAO,qBACP,KAAM,sBACN,OAAQ,wBACV,EAQA,SAAgBC,EAAY,CAAE,YAAW,OAAM,OAAM,UAAU,GAAO,GAAGC,GAA2B,CAClG,IAAMC,EAAYC,EAAUC,EAAK,KAAO,OACxC,MACE,kBAACF,EAAD,CAAW,YAAU,eAAe,UAAWG,EAAGR,EAAoB,CAAE,OAAM,MAAK,CAAC,EAAGS,CAAS,EAAG,GAAIL,CAAQ,CAAA,CAEnH"}
@@ -1,2 +1,2 @@
1
- import{cn as e}from"../lib/cn.mjs";import{jsx as t}from"react/jsx-runtime";function n({className:n,...r}){return/* @__PURE__ */ t(`span`,{"data-slot":`stream-cursor`,"aria-hidden":!0,className:e(`ml-0.5 inline-block h-3.5 w-2 translate-y-0.5 animate-doom-blink bg-doom-blue`,n),...r})}export{n as StreamCursor};
1
+ import{cn as e}from"../lib/cn.mjs";import{jsx as t}from"react/jsx-runtime";function n({className:n,...r}){return/* @__PURE__ */ t(`span`,{"data-slot":`stream-cursor`,"aria-hidden":!0,className:e(`ml-0.5 inline-block h-3.5 w-2 translate-y-0.5 animate-po-blink bg-po-blue`,n),...r})}export{n as StreamCursor};
2
2
  //# sourceMappingURL=StreamCursor.mjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"StreamCursor.mjs","names":["StreamCursor","props","cn","className"],"sources":["../../../../../../src/components/StreamCursor.tsx"],"sourcesContent":["import type { ComponentProps } from 'react';\n\nimport { cn } from '../lib/cn';\n\n/** The blinking block that marks text still arriving. */\nexport function StreamCursor({ className, ...props }: ComponentProps<'span'>) {\n return (\n <span\n data-slot=\"stream-cursor\"\n aria-hidden\n className={cn('ml-0.5 inline-block h-3.5 w-2 translate-y-0.5 animate-doom-blink bg-doom-blue', className)}\n {...props}\n />\n );\n}\n"],"mappings":"2EAKA,SAAgBA,EAAa,CAAE,YAAW,GAAGC,GAAiC,CAC5E,MACE,kBAAC,OAAD,CACE,YAAU,gBACV,cAAA,GACA,UAAWC,EAAG,gFAAiFC,CAAS,EACxG,GAAIF,CACL,CAAA,CAEL"}
1
+ {"version":3,"file":"StreamCursor.mjs","names":["StreamCursor","props","cn","className"],"sources":["../../../../../../src/components/StreamCursor.tsx"],"sourcesContent":["import type { ComponentProps } from 'react';\n\nimport { cn } from '../lib/cn';\n\n/** The blinking block that marks text still arriving. */\nexport function StreamCursor({ className, ...props }: ComponentProps<'span'>) {\n return (\n <span\n data-slot=\"stream-cursor\"\n aria-hidden\n className={cn('ml-0.5 inline-block h-3.5 w-2 translate-y-0.5 animate-po-blink bg-po-blue', className)}\n {...props}\n />\n );\n}\n"],"mappings":"2EAKA,SAAgBA,EAAa,CAAE,YAAW,GAAGC,GAAiC,CAC5E,MACE,kBAAC,OAAD,CACE,YAAU,gBACV,cAAA,GACA,UAAWC,EAAG,4EAA6EC,CAAS,EACpG,GAAIF,CACL,CAAA,CAEL"}
@@ -1,2 +1,2 @@
1
- import{cn as e}from"../lib/cn.mjs";import{Switch as t}from"radix-ui";import{jsx as n}from"react/jsx-runtime";function r({className:r,...i}){return/* @__PURE__ */ n(t.Root,{"data-slot":`switch`,className:e(`inline-flex h-4 w-7 shrink-0 cursor-pointer items-center rounded-full border border-doom-border bg-doom-deep p-px outline-none transition-colors focus-visible:ring-2 focus-visible:ring-doom-green/50 disabled:pointer-events-none disabled:opacity-40 data-[state=checked]:border-doom-green data-[state=checked]:bg-doom-tint-green`,r),...i,children:/* @__PURE__ */ n(t.Thumb,{"data-slot":`switch-thumb`,className:`block h-3 w-3 rounded-full bg-doom-faint transition-transform data-[state=checked]:translate-x-3 data-[state=checked]:bg-doom-green`})})}export{r as Switch};
1
+ import{cn as e}from"../lib/cn.mjs";import{Switch as t}from"radix-ui";import{jsx as n}from"react/jsx-runtime";function r({className:r,...i}){return/* @__PURE__ */ n(t.Root,{"data-slot":`switch`,className:e(`inline-flex h-4 w-7 shrink-0 cursor-pointer items-center rounded-full border border-po-border bg-po-deep p-px outline-none transition-colors focus-visible:ring-2 focus-visible:ring-po-green/50 disabled:pointer-events-none disabled:opacity-40 data-[state=checked]:border-po-green data-[state=checked]:bg-po-tint-green`,r),...i,children:/* @__PURE__ */ n(t.Thumb,{"data-slot":`switch-thumb`,className:`block h-3 w-3 rounded-full bg-po-faint transition-transform data-[state=checked]:translate-x-3 data-[state=checked]:bg-po-green`})})}export{r as Switch};
2
2
  //# sourceMappingURL=Switch.mjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"Switch.mjs","names":["Switch","SwitchPrimitive","Switch$1","props","Switch","cn","className"],"sources":["../../../../../../src/components/Switch.tsx"],"sourcesContent":["import { Switch as SwitchPrimitive } from 'radix-ui';\nimport type { ComponentProps } from 'react';\n\nimport { cn } from '../lib/cn';\n\n/** An on/off track; use it where the change takes effect immediately, a checkbox where it needs a save. */\nexport function Switch({ className, ...props }: ComponentProps<typeof SwitchPrimitive.Root>) {\n return (\n <SwitchPrimitive.Root\n data-slot=\"switch\"\n className={cn(\n 'inline-flex h-4 w-7 shrink-0 cursor-pointer items-center rounded-full border border-doom-border bg-doom-deep p-px outline-none transition-colors focus-visible:ring-2 focus-visible:ring-doom-green/50 disabled:pointer-events-none disabled:opacity-40 data-[state=checked]:border-doom-green data-[state=checked]:bg-doom-tint-green',\n className,\n )}\n {...props}\n >\n <SwitchPrimitive.Thumb\n data-slot=\"switch-thumb\"\n className=\"block h-3 w-3 rounded-full bg-doom-faint transition-transform data-[state=checked]:translate-x-3 data-[state=checked]:bg-doom-green\"\n />\n </SwitchPrimitive.Root>\n );\n}\n"],"mappings":"6GAMA,SAAgBA,EAAO,CAAE,YAAW,GAAGG,GAAsD,CAC3F,MACE,kBAACF,EAAgB,KAAjB,CACE,YAAU,SACV,UAAWI,EACT,yUACAC,CACF,EACA,GAAIH,EAEJ,SAAA,kBAACF,EAAgB,MAAjB,CACE,YAAU,eACV,UAAU,qIACX,CAAA,CACmB,CAAA,CAE1B"}
1
+ {"version":3,"file":"Switch.mjs","names":["Switch","SwitchPrimitive","Switch$1","props","Switch","cn","className"],"sources":["../../../../../../src/components/Switch.tsx"],"sourcesContent":["import { Switch as SwitchPrimitive } from 'radix-ui';\nimport type { ComponentProps } from 'react';\n\nimport { cn } from '../lib/cn';\n\n/** An on/off track; use it where the change takes effect immediately, a checkbox where it needs a save. */\nexport function Switch({ className, ...props }: ComponentProps<typeof SwitchPrimitive.Root>) {\n return (\n <SwitchPrimitive.Root\n data-slot=\"switch\"\n className={cn(\n 'inline-flex h-4 w-7 shrink-0 cursor-pointer items-center rounded-full border border-po-border bg-po-deep p-px outline-none transition-colors focus-visible:ring-2 focus-visible:ring-po-green/50 disabled:pointer-events-none disabled:opacity-40 data-[state=checked]:border-po-green data-[state=checked]:bg-po-tint-green',\n className,\n )}\n {...props}\n >\n <SwitchPrimitive.Thumb\n data-slot=\"switch-thumb\"\n className=\"block h-3 w-3 rounded-full bg-po-faint transition-transform data-[state=checked]:translate-x-3 data-[state=checked]:bg-po-green\"\n />\n </SwitchPrimitive.Root>\n );\n}\n"],"mappings":"6GAMA,SAAgBA,EAAO,CAAE,YAAW,GAAGG,GAAsD,CAC3F,MACE,kBAACF,EAAgB,KAAjB,CACE,YAAU,SACV,UAAWI,EACT,+TACAC,CACF,EACA,GAAIH,EAEJ,SAAA,kBAACF,EAAgB,MAAjB,CACE,YAAU,eACV,UAAU,iIACX,CAAA,CACmB,CAAA,CAE1B"}
@@ -1,2 +1,2 @@
1
- import{cn as e}from"../lib/cn.mjs";import{Slot as t,Tabs as n}from"radix-ui";import{jsx as r}from"react/jsx-runtime";import{cva as i}from"class-variance-authority";const a=i(`flex min-h-6 min-w-6 cursor-pointer items-center gap-1.5 rounded px-2 py-1 text-base font-medium transition-colors outline-none`,{variants:{active:{true:`bg-doom-tint-green font-semibold text-doom-green`,false:`text-doom-dim hover:bg-doom-panel hover:text-doom-hi`}},defaultVariants:{active:!1}}),o=i(`flex h-[15px] min-w-[15px] items-center justify-center rounded-full px-1 text-2xs font-semibold`,{variants:{active:{true:`bg-doom-green text-doom-rail`,false:`bg-doom-panel text-doom-dim`}},defaultVariants:{active:!1}});function s({className:n,active:i,asChild:o=!1,...s}){let c=o?t.Root:`a`;return/* @__PURE__ */ r(c,{"data-slot":`nav-tab`,"data-active":i??!1,className:e(a({active:i}),n),...s})}function c({className:t,active:n,...i}){return/* @__PURE__ */ r(`span`,{"data-slot":`nav-tab-badge`,className:e(o({active:n}),t),...i})}function l(e){return/* @__PURE__ */ r(n.Root,{"data-slot":`tabs`,...e})}function u({className:t,...i}){return/* @__PURE__ */ r(n.List,{"data-slot":`tabs-list`,className:e(`flex items-center gap-1`,t),...i})}function d({className:t,...i}){return/* @__PURE__ */ r(n.Trigger,{"data-slot":`tabs-trigger`,className:e(a({active:!1}),`data-[state=active]:bg-doom-tint-green data-[state=active]:font-semibold data-[state=active]:text-doom-green`,t),...i})}function f({className:t,...i}){return/* @__PURE__ */ r(n.Content,{"data-slot":`tabs-content`,className:e(`min-h-0 flex-1`,t),...i})}export{s as NavTab,c as NavTabBadge,l as Tabs,f as TabsContent,u as TabsList,d as TabsTrigger,o as tabBadgeVariants,a as tabVariants};
1
+ import{cn as e}from"../lib/cn.mjs";import{Slot as t,Tabs as n}from"radix-ui";import{jsx as r}from"react/jsx-runtime";import{cva as i}from"class-variance-authority";const a=i(`flex min-h-6 min-w-6 cursor-pointer items-center gap-1.5 rounded px-2 py-1 text-base font-medium transition-colors outline-none`,{variants:{active:{true:`bg-po-tint-green font-semibold text-po-green`,false:`text-po-dim hover:bg-po-panel hover:text-po-hi`}},defaultVariants:{active:!1}}),o=i(`flex h-[15px] min-w-[15px] items-center justify-center rounded-full px-1 text-2xs font-semibold`,{variants:{active:{true:`bg-po-green text-po-rail`,false:`bg-po-panel text-po-dim`}},defaultVariants:{active:!1}});function s({className:n,active:i,asChild:o=!1,...s}){let c=o?t.Root:`a`;return/* @__PURE__ */ r(c,{"data-slot":`nav-tab`,"data-active":i??!1,className:e(a({active:i}),n),...s})}function c({className:t,active:n,...i}){return/* @__PURE__ */ r(`span`,{"data-slot":`nav-tab-badge`,className:e(o({active:n}),t),...i})}function l(e){return/* @__PURE__ */ r(n.Root,{"data-slot":`tabs`,...e})}function u({className:t,...i}){return/* @__PURE__ */ r(n.List,{"data-slot":`tabs-list`,className:e(`flex items-center gap-1`,t),...i})}function d({className:t,...i}){return/* @__PURE__ */ r(n.Trigger,{"data-slot":`tabs-trigger`,className:e(a({active:!1}),`data-[state=active]:bg-po-tint-green data-[state=active]:font-semibold data-[state=active]:text-po-green`,t),...i})}function f({className:t,...i}){return/* @__PURE__ */ r(n.Content,{"data-slot":`tabs-content`,className:e(`min-h-0 flex-1`,t),...i})}export{s as NavTab,c as NavTabBadge,l as Tabs,f as TabsContent,u as TabsList,d as TabsTrigger,o as tabBadgeVariants,a as tabVariants};
2
2
  //# sourceMappingURL=Tabs.mjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"Tabs.mjs","names":["Tabs","TabsPrimitive","tabVariants","cva","tabBadgeVariants","NavTab","props","Component","asChild","Slot","active","cn","className","NavTabBadge","Tabs$1","Tabs","TabsList","TabsTrigger","TabsContent"],"sources":["../../../../../../src/components/Tabs.tsx"],"sourcesContent":["import { cva, type VariantProps } from 'class-variance-authority';\nimport { Tabs as TabsPrimitive } from 'radix-ui';\nimport { Slot } from 'radix-ui';\nimport type { ComponentProps } from 'react';\n\nimport { cn } from '../lib/cn';\n\n/**\n * The look a tab wears, whether Radix drives it or a router link does. It is\n * exported because the cockpit's own tabs navigate routes rather than swap\n * panels, and a link that looks like a tab must not be a second implementation.\n */\nexport const tabVariants = cva(\n 'flex min-h-6 min-w-6 cursor-pointer items-center gap-1.5 rounded px-2 py-1 text-base font-medium transition-colors outline-none',\n {\n variants: {\n active: {\n true: 'bg-doom-tint-green font-semibold text-doom-green',\n false: 'text-doom-dim hover:bg-doom-panel hover:text-doom-hi',\n },\n },\n defaultVariants: { active: false },\n },\n);\n\n/** The count a tab carries; it inverts on the active tab so it stays readable on the tint. */\nexport const tabBadgeVariants = cva(\n 'flex h-[15px] min-w-[15px] items-center justify-center rounded-full px-1 text-2xs font-semibold',\n {\n variants: {\n active: {\n true: 'bg-doom-green text-doom-rail',\n false: 'bg-doom-panel text-doom-dim',\n },\n },\n defaultVariants: { active: false },\n },\n);\n\nexport interface NavTabProps extends ComponentProps<'a'>, VariantProps<typeof tabVariants> {\n /** Render the child element instead of an <a>, so a router Link can be the tab. */\n asChild?: boolean;\n}\n\n/**\n * A tab that navigates. Radix Tabs owns panels and roving focus over content\n * it renders; a route-driven tab strip has neither, so it gets the styling and\n * leaves the semantics to the router.\n */\nexport function NavTab({ className, active, asChild = false, ...props }: NavTabProps) {\n const Component = asChild ? Slot.Root : 'a';\n return (\n <Component\n data-slot=\"nav-tab\"\n data-active={active ?? false}\n className={cn(tabVariants({ active }), className)}\n {...props}\n />\n );\n}\n\n/** The count beside a tab's label. */\nexport function NavTabBadge({\n className,\n active,\n ...props\n}: ComponentProps<'span'> & VariantProps<typeof tabBadgeVariants>) {\n return <span data-slot=\"nav-tab-badge\" className={cn(tabBadgeVariants({ active }), className)} {...props} />;\n}\n\n/** Radix Tabs, for a surface that swaps panels in place rather than navigating. */\nexport function Tabs(props: ComponentProps<typeof TabsPrimitive.Root>) {\n return <TabsPrimitive.Root data-slot=\"tabs\" {...props} />;\n}\n\nexport function TabsList({ className, ...props }: ComponentProps<typeof TabsPrimitive.List>) {\n return <TabsPrimitive.List data-slot=\"tabs-list\" className={cn('flex items-center gap-1', className)} {...props} />;\n}\n\nexport function TabsTrigger({ className, ...props }: ComponentProps<typeof TabsPrimitive.Trigger>) {\n return (\n <TabsPrimitive.Trigger\n data-slot=\"tabs-trigger\"\n className={cn(\n tabVariants({ active: false }),\n 'data-[state=active]:bg-doom-tint-green data-[state=active]:font-semibold data-[state=active]:text-doom-green',\n className,\n )}\n {...props}\n />\n );\n}\n\nexport function TabsContent({ className, ...props }: ComponentProps<typeof TabsPrimitive.Content>) {\n return <TabsPrimitive.Content data-slot=\"tabs-content\" className={cn('min-h-0 flex-1', className)} {...props} />;\n}\n"],"mappings":"oKAYA,MAAaE,EAAcC,EACzB,kIACA,CACE,SAAU,CACR,OAAQ,CACN,KAAM,mDACN,MAAO,sDACT,CACF,EACA,gBAAiB,CAAE,OAAQ,EAAM,CACnC,CACF,EAGaC,EAAmBD,EAC9B,kGACA,CACE,SAAU,CACR,OAAQ,CACN,KAAM,+BACN,MAAO,6BACT,CACF,EACA,gBAAiB,CAAE,OAAQ,EAAM,CACnC,CACF,EAYA,SAAgBE,EAAO,CAAE,YAAW,SAAQ,UAAU,GAAO,GAAGC,GAAsB,CACpF,IAAMC,EAAYC,EAAUC,EAAK,KAAO,IACxC,MACE,kBAACF,EAAD,CACE,YAAU,UACV,cAAaG,GAAU,GACvB,UAAWC,EAAGT,EAAY,CAAE,QAAO,CAAC,EAAGU,CAAS,EAChD,GAAIN,CACL,CAAA,CAEL,CAGA,SAAgBO,EAAY,CAC1B,YACA,SACA,GAAGP,GAC8D,CACjE,MAAO,kBAAC,OAAD,CAAM,YAAU,gBAAgB,UAAWK,EAAGP,EAAiB,CAAE,QAAO,CAAC,EAAGQ,CAAS,EAAG,GAAIN,CAAQ,CAAA,CAC7G,CAGA,SAAgBN,EAAK,EAAkD,CACrE,MAAO,kBAACC,EAAc,KAAf,CAAoB,YAAU,OAAO,GAAIK,CAAQ,CAAA,CAC1D,CAEA,SAAgBU,EAAS,CAAE,YAAW,GAAGV,GAAoD,CAC3F,MAAO,kBAACL,EAAc,KAAf,CAAoB,YAAU,YAAY,UAAWU,EAAG,0BAA2BC,CAAS,EAAG,GAAIN,CAAQ,CAAA,CACpH,CAEA,SAAgBW,EAAY,CAAE,YAAW,GAAGX,GAAuD,CACjG,MACE,kBAACL,EAAc,QAAf,CACE,YAAU,eACV,UAAWU,EACTT,EAAY,CAAE,OAAQ,EAAM,CAAC,EAC7B,+GACAU,CACF,EACA,GAAIN,CACL,CAAA,CAEL,CAEA,SAAgBY,EAAY,CAAE,YAAW,GAAGZ,GAAuD,CACjG,MAAO,kBAACL,EAAc,QAAf,CAAuB,YAAU,eAAe,UAAWU,EAAG,iBAAkBC,CAAS,EAAG,GAAIN,CAAQ,CAAA,CACjH"}
1
+ {"version":3,"file":"Tabs.mjs","names":["Tabs","TabsPrimitive","tabVariants","cva","tabBadgeVariants","NavTab","props","Component","asChild","Slot","active","cn","className","NavTabBadge","Tabs$1","Tabs","TabsList","TabsTrigger","TabsContent"],"sources":["../../../../../../src/components/Tabs.tsx"],"sourcesContent":["import { cva, type VariantProps } from 'class-variance-authority';\nimport { Tabs as TabsPrimitive } from 'radix-ui';\nimport { Slot } from 'radix-ui';\nimport type { ComponentProps } from 'react';\n\nimport { cn } from '../lib/cn';\n\n/**\n * The look a tab wears, whether Radix drives it or a router link does. It is\n * exported because the cockpit's own tabs navigate routes rather than swap\n * panels, and a link that looks like a tab must not be a second implementation.\n */\nexport const tabVariants = cva(\n 'flex min-h-6 min-w-6 cursor-pointer items-center gap-1.5 rounded px-2 py-1 text-base font-medium transition-colors outline-none',\n {\n variants: {\n active: {\n true: 'bg-po-tint-green font-semibold text-po-green',\n false: 'text-po-dim hover:bg-po-panel hover:text-po-hi',\n },\n },\n defaultVariants: { active: false },\n },\n);\n\n/** The count a tab carries; it inverts on the active tab so it stays readable on the tint. */\nexport const tabBadgeVariants = cva(\n 'flex h-[15px] min-w-[15px] items-center justify-center rounded-full px-1 text-2xs font-semibold',\n {\n variants: {\n active: {\n true: 'bg-po-green text-po-rail',\n false: 'bg-po-panel text-po-dim',\n },\n },\n defaultVariants: { active: false },\n },\n);\n\nexport interface NavTabProps extends ComponentProps<'a'>, VariantProps<typeof tabVariants> {\n /** Render the child element instead of an <a>, so a router Link can be the tab. */\n asChild?: boolean;\n}\n\n/**\n * A tab that navigates. Radix Tabs owns panels and roving focus over content\n * it renders; a route-driven tab strip has neither, so it gets the styling and\n * leaves the semantics to the router.\n */\nexport function NavTab({ className, active, asChild = false, ...props }: NavTabProps) {\n const Component = asChild ? Slot.Root : 'a';\n return (\n <Component\n data-slot=\"nav-tab\"\n data-active={active ?? false}\n className={cn(tabVariants({ active }), className)}\n {...props}\n />\n );\n}\n\n/** The count beside a tab's label. */\nexport function NavTabBadge({\n className,\n active,\n ...props\n}: ComponentProps<'span'> & VariantProps<typeof tabBadgeVariants>) {\n return <span data-slot=\"nav-tab-badge\" className={cn(tabBadgeVariants({ active }), className)} {...props} />;\n}\n\n/** Radix Tabs, for a surface that swaps panels in place rather than navigating. */\nexport function Tabs(props: ComponentProps<typeof TabsPrimitive.Root>) {\n return <TabsPrimitive.Root data-slot=\"tabs\" {...props} />;\n}\n\nexport function TabsList({ className, ...props }: ComponentProps<typeof TabsPrimitive.List>) {\n return <TabsPrimitive.List data-slot=\"tabs-list\" className={cn('flex items-center gap-1', className)} {...props} />;\n}\n\nexport function TabsTrigger({ className, ...props }: ComponentProps<typeof TabsPrimitive.Trigger>) {\n return (\n <TabsPrimitive.Trigger\n data-slot=\"tabs-trigger\"\n className={cn(\n tabVariants({ active: false }),\n 'data-[state=active]:bg-po-tint-green data-[state=active]:font-semibold data-[state=active]:text-po-green',\n className,\n )}\n {...props}\n />\n );\n}\n\nexport function TabsContent({ className, ...props }: ComponentProps<typeof TabsPrimitive.Content>) {\n return <TabsPrimitive.Content data-slot=\"tabs-content\" className={cn('min-h-0 flex-1', className)} {...props} />;\n}\n"],"mappings":"oKAYA,MAAaE,EAAcC,EACzB,kIACA,CACE,SAAU,CACR,OAAQ,CACN,KAAM,+CACN,MAAO,gDACT,CACF,EACA,gBAAiB,CAAE,OAAQ,EAAM,CACnC,CACF,EAGaC,EAAmBD,EAC9B,kGACA,CACE,SAAU,CACR,OAAQ,CACN,KAAM,2BACN,MAAO,yBACT,CACF,EACA,gBAAiB,CAAE,OAAQ,EAAM,CACnC,CACF,EAYA,SAAgBE,EAAO,CAAE,YAAW,SAAQ,UAAU,GAAO,GAAGC,GAAsB,CACpF,IAAMC,EAAYC,EAAUC,EAAK,KAAO,IACxC,MACE,kBAACF,EAAD,CACE,YAAU,UACV,cAAaG,GAAU,GACvB,UAAWC,EAAGT,EAAY,CAAE,QAAO,CAAC,EAAGU,CAAS,EAChD,GAAIN,CACL,CAAA,CAEL,CAGA,SAAgBO,EAAY,CAC1B,YACA,SACA,GAAGP,GAC8D,CACjE,MAAO,kBAAC,OAAD,CAAM,YAAU,gBAAgB,UAAWK,EAAGP,EAAiB,CAAE,QAAO,CAAC,EAAGQ,CAAS,EAAG,GAAIN,CAAQ,CAAA,CAC7G,CAGA,SAAgBN,EAAK,EAAkD,CACrE,MAAO,kBAACC,EAAc,KAAf,CAAoB,YAAU,OAAO,GAAIK,CAAQ,CAAA,CAC1D,CAEA,SAAgBU,EAAS,CAAE,YAAW,GAAGV,GAAoD,CAC3F,MAAO,kBAACL,EAAc,KAAf,CAAoB,YAAU,YAAY,UAAWU,EAAG,0BAA2BC,CAAS,EAAG,GAAIN,CAAQ,CAAA,CACpH,CAEA,SAAgBW,EAAY,CAAE,YAAW,GAAGX,GAAuD,CACjG,MACE,kBAACL,EAAc,QAAf,CACE,YAAU,eACV,UAAWU,EACTT,EAAY,CAAE,OAAQ,EAAM,CAAC,EAC7B,2GACAU,CACF,EACA,GAAIN,CACL,CAAA,CAEL,CAEA,SAAgBY,EAAY,CAAE,YAAW,GAAGZ,GAAuD,CACjG,MAAO,kBAACL,EAAc,QAAf,CAAuB,YAAU,eAAe,UAAWU,EAAG,iBAAkBC,CAAS,EAAG,GAAIN,CAAQ,CAAA,CACjH"}
@@ -1,2 +1,2 @@
1
- import{CloseIcon as e}from"../icons/icons.mjs";import{cn as t}from"../lib/cn.mjs";import{Toast as n}from"radix-ui";import{jsx as r}from"react/jsx-runtime";import{cva as i}from"class-variance-authority";function a(e){return/* @__PURE__ */ r(n.Provider,{...e})}function o({className:e,...i}){return/* @__PURE__ */ r(n.Viewport,{"data-slot":`toast-viewport`,className:t(`fixed right-4 bottom-4 z-50 flex w-[360px] max-w-full flex-col gap-2 outline-none`,e),...i})}const s=i(`flex items-start gap-3 rounded-md border bg-doom-panel px-3 py-2.5 shadow-2xl data-[state=open]:animate-doom-rise`,{variants:{tone:{neutral:`border-doom-border`,running:`border-doom-edge-yellow`,ok:`border-doom-edge-green`,error:`border-doom-edge-red`,info:`border-doom-edge-blue`,accent:`border-doom-edge-magenta`}},defaultVariants:{tone:`neutral`}});function c({className:e,tone:i,...a}){return/* @__PURE__ */ r(n.Root,{"data-slot":`toast`,className:t(s({tone:i}),e),...a})}function l({className:e,...i}){return/* @__PURE__ */ r(n.Title,{"data-slot":`toast-title`,className:t(`text-base font-semibold text-doom-hi`,e),...i})}function u({className:e,...i}){return/* @__PURE__ */ r(n.Description,{"data-slot":`toast-description`,className:t(`text-sm leading-relaxed text-doom-dim`,e),...i})}function d(e){return/* @__PURE__ */ r(n.Action,{"data-slot":`toast-action`,...e})}function f({className:i,...a}){return/* @__PURE__ */ r(n.Close,{"data-slot":`toast-close`,"aria-label":`dismiss`,className:t(`inline-flex h-6 w-6 shrink-0 cursor-pointer items-center justify-center rounded text-doom-faint transition-colors hover:text-doom-hi`,i),...a,children:/* @__PURE__ */ r(e,{className:`h-3 w-3`})})}export{c as Toast,d as ToastAction,f as ToastClose,u as ToastDescription,a as ToastProvider,l as ToastTitle,o as ToastViewport,s as toastVariants};
1
+ import{CloseIcon as e}from"../icons/icons.mjs";import{cn as t}from"../lib/cn.mjs";import{Toast as n}from"radix-ui";import{jsx as r}from"react/jsx-runtime";import{cva as i}from"class-variance-authority";function a(e){return/* @__PURE__ */ r(n.Provider,{...e})}function o({className:e,...i}){return/* @__PURE__ */ r(n.Viewport,{"data-slot":`toast-viewport`,className:t(`fixed right-4 bottom-4 z-50 flex w-[360px] max-w-full flex-col gap-2 outline-none`,e),...i})}const s=i(`flex items-start gap-3 rounded-md border bg-po-panel px-3 py-2.5 shadow-2xl data-[state=open]:animate-po-rise`,{variants:{tone:{neutral:`border-po-border`,running:`border-po-edge-yellow`,ok:`border-po-edge-green`,error:`border-po-edge-red`,info:`border-po-edge-blue`,accent:`border-po-edge-magenta`}},defaultVariants:{tone:`neutral`}});function c({className:e,tone:i,...a}){return/* @__PURE__ */ r(n.Root,{"data-slot":`toast`,className:t(s({tone:i}),e),...a})}function l({className:e,...i}){return/* @__PURE__ */ r(n.Title,{"data-slot":`toast-title`,className:t(`text-base font-semibold text-po-hi`,e),...i})}function u({className:e,...i}){return/* @__PURE__ */ r(n.Description,{"data-slot":`toast-description`,className:t(`text-sm leading-relaxed text-po-dim`,e),...i})}function d(e){return/* @__PURE__ */ r(n.Action,{"data-slot":`toast-action`,...e})}function f({className:i,...a}){return/* @__PURE__ */ r(n.Close,{"data-slot":`toast-close`,"aria-label":`dismiss`,className:t(`inline-flex h-6 w-6 shrink-0 cursor-pointer items-center justify-center rounded text-po-faint transition-colors hover:text-po-hi`,i),...a,children:/* @__PURE__ */ r(e,{className:`h-3 w-3`})})}export{c as Toast,d as ToastAction,f as ToastClose,u as ToastDescription,a as ToastProvider,l as ToastTitle,o as ToastViewport,s as toastVariants};
2
2
  //# sourceMappingURL=Toast.mjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"Toast.mjs","names":["ToastPrimitive","Toast","ToastProvider","Toast","props","ToastViewport","cn","className","toastVariants","cva","Toast$1","ToastTitle","ToastDescription","ToastAction","ToastClose","CloseIcon"],"sources":["../../../../../../src/components/Toast.tsx"],"sourcesContent":["import { cva, type VariantProps } from 'class-variance-authority';\nimport { Toast as ToastPrimitive } from 'radix-ui';\nimport type { ComponentProps } from 'react';\n\nimport { CloseIcon } from '../icons/icons';\nimport { cn } from '../lib/cn';\nimport type { StatusTone } from '../types/tone';\n\n/**\n * A transient notice. Radix owns the part that is easy to get wrong: it\n * announces through a live region, pauses its timer on hover and on window\n * blur, and restores focus when it leaves. Mount one ToastProvider and one\n * ToastViewport per page.\n */\nexport function ToastProvider(props: ComponentProps<typeof ToastPrimitive.Provider>) {\n return <ToastPrimitive.Provider {...props} />;\n}\n\nexport function ToastViewport({ className, ...props }: ComponentProps<typeof ToastPrimitive.Viewport>) {\n return (\n <ToastPrimitive.Viewport\n data-slot=\"toast-viewport\"\n className={cn('fixed right-4 bottom-4 z-50 flex w-[360px] max-w-full flex-col gap-2 outline-none', className)}\n {...props}\n />\n );\n}\n\nexport const toastVariants = cva(\n 'flex items-start gap-3 rounded-md border bg-doom-panel px-3 py-2.5 shadow-2xl data-[state=open]:animate-doom-rise',\n {\n variants: {\n tone: {\n neutral: 'border-doom-border',\n running: 'border-doom-edge-yellow',\n ok: 'border-doom-edge-green',\n error: 'border-doom-edge-red',\n info: 'border-doom-edge-blue',\n accent: 'border-doom-edge-magenta',\n } satisfies Record<StatusTone, string>,\n },\n defaultVariants: { tone: 'neutral' },\n },\n);\n\nexport interface ToastProps extends ComponentProps<typeof ToastPrimitive.Root>, VariantProps<typeof toastVariants> {}\n\nexport function Toast({ className, tone, ...props }: ToastProps) {\n return <ToastPrimitive.Root data-slot=\"toast\" className={cn(toastVariants({ tone }), className)} {...props} />;\n}\n\nexport function ToastTitle({ className, ...props }: ComponentProps<typeof ToastPrimitive.Title>) {\n return (\n <ToastPrimitive.Title\n data-slot=\"toast-title\"\n className={cn('text-base font-semibold text-doom-hi', className)}\n {...props}\n />\n );\n}\n\nexport function ToastDescription({ className, ...props }: ComponentProps<typeof ToastPrimitive.Description>) {\n return (\n <ToastPrimitive.Description\n data-slot=\"toast-description\"\n className={cn('text-sm leading-relaxed text-doom-dim', className)}\n {...props}\n />\n );\n}\n\nexport function ToastAction(props: ComponentProps<typeof ToastPrimitive.Action>) {\n return <ToastPrimitive.Action data-slot=\"toast-action\" {...props} />;\n}\n\nexport function ToastClose({ className, ...props }: ComponentProps<typeof ToastPrimitive.Close>) {\n return (\n <ToastPrimitive.Close\n data-slot=\"toast-close\"\n aria-label=\"dismiss\"\n className={cn(\n 'inline-flex h-6 w-6 shrink-0 cursor-pointer items-center justify-center rounded text-doom-faint transition-colors hover:text-doom-hi',\n className,\n )}\n {...props}\n >\n <CloseIcon className=\"h-3 w-3\" />\n </ToastPrimitive.Close>\n );\n}\n"],"mappings":"0MAcA,SAAgBE,EAAc,EAAuD,CACnF,MAAO,kBAACF,EAAe,SAAhB,CAAyB,GAAII,CAAQ,CAAA,CAC9C,CAEA,SAAgBC,EAAc,CAAE,YAAW,GAAGD,GAAyD,CACrG,MACE,kBAACJ,EAAe,SAAhB,CACE,YAAU,iBACV,UAAWM,EAAG,oFAAqFC,CAAS,EAC5G,GAAIH,CACL,CAAA,CAEL,CAEA,MAAaI,EAAgBC,EAC3B,oHACA,CACE,SAAU,CACR,KAAM,CACJ,QAAS,qBACT,QAAS,0BACT,GAAI,yBACJ,MAAO,uBACP,KAAM,wBACN,OAAQ,0BACV,CACF,EACA,gBAAiB,CAAE,KAAM,SAAU,CACrC,CACF,EAIA,SAAgBR,EAAM,CAAE,YAAW,OAAM,GAAGG,GAAqB,CAC/D,MAAO,kBAACJ,EAAe,KAAhB,CAAqB,YAAU,QAAQ,UAAWM,EAAGE,EAAc,CAAE,MAAK,CAAC,EAAGD,CAAS,EAAG,GAAIH,CAAQ,CAAA,CAC/G,CAEA,SAAgBO,EAAW,CAAE,YAAW,GAAGP,GAAsD,CAC/F,MACE,kBAACJ,EAAe,MAAhB,CACE,YAAU,cACV,UAAWM,EAAG,uCAAwCC,CAAS,EAC/D,GAAIH,CACL,CAAA,CAEL,CAEA,SAAgBQ,EAAiB,CAAE,YAAW,GAAGR,GAA4D,CAC3G,MACE,kBAACJ,EAAe,YAAhB,CACE,YAAU,oBACV,UAAWM,EAAG,wCAAyCC,CAAS,EAChE,GAAIH,CACL,CAAA,CAEL,CAEA,SAAgBS,EAAY,EAAqD,CAC/E,MAAO,kBAACb,EAAe,OAAhB,CAAuB,YAAU,eAAe,GAAII,CAAQ,CAAA,CACrE,CAEA,SAAgBU,EAAW,CAAE,YAAW,GAAGV,GAAsD,CAC/F,MACE,kBAACJ,EAAe,MAAhB,CACE,YAAU,cACV,aAAW,UACX,UAAWM,EACT,uIACAC,CACF,EACA,GAAIH,EAEJ,SAAA,kBAACW,EAAD,CAAW,UAAU,SAAW,CAAA,CACZ,CAAA,CAE1B"}
1
+ {"version":3,"file":"Toast.mjs","names":["ToastPrimitive","Toast","ToastProvider","Toast","props","ToastViewport","cn","className","toastVariants","cva","Toast$1","ToastTitle","ToastDescription","ToastAction","ToastClose","CloseIcon"],"sources":["../../../../../../src/components/Toast.tsx"],"sourcesContent":["import { cva, type VariantProps } from 'class-variance-authority';\nimport { Toast as ToastPrimitive } from 'radix-ui';\nimport type { ComponentProps } from 'react';\n\nimport { CloseIcon } from '../icons/icons';\nimport { cn } from '../lib/cn';\nimport type { StatusTone } from '../types/tone';\n\n/**\n * A transient notice. Radix owns the part that is easy to get wrong: it\n * announces through a live region, pauses its timer on hover and on window\n * blur, and restores focus when it leaves. Mount one ToastProvider and one\n * ToastViewport per page.\n */\nexport function ToastProvider(props: ComponentProps<typeof ToastPrimitive.Provider>) {\n return <ToastPrimitive.Provider {...props} />;\n}\n\nexport function ToastViewport({ className, ...props }: ComponentProps<typeof ToastPrimitive.Viewport>) {\n return (\n <ToastPrimitive.Viewport\n data-slot=\"toast-viewport\"\n className={cn('fixed right-4 bottom-4 z-50 flex w-[360px] max-w-full flex-col gap-2 outline-none', className)}\n {...props}\n />\n );\n}\n\nexport const toastVariants = cva(\n 'flex items-start gap-3 rounded-md border bg-po-panel px-3 py-2.5 shadow-2xl data-[state=open]:animate-po-rise',\n {\n variants: {\n tone: {\n neutral: 'border-po-border',\n running: 'border-po-edge-yellow',\n ok: 'border-po-edge-green',\n error: 'border-po-edge-red',\n info: 'border-po-edge-blue',\n accent: 'border-po-edge-magenta',\n } satisfies Record<StatusTone, string>,\n },\n defaultVariants: { tone: 'neutral' },\n },\n);\n\nexport interface ToastProps extends ComponentProps<typeof ToastPrimitive.Root>, VariantProps<typeof toastVariants> {}\n\nexport function Toast({ className, tone, ...props }: ToastProps) {\n return <ToastPrimitive.Root data-slot=\"toast\" className={cn(toastVariants({ tone }), className)} {...props} />;\n}\n\nexport function ToastTitle({ className, ...props }: ComponentProps<typeof ToastPrimitive.Title>) {\n return (\n <ToastPrimitive.Title\n data-slot=\"toast-title\"\n className={cn('text-base font-semibold text-po-hi', className)}\n {...props}\n />\n );\n}\n\nexport function ToastDescription({ className, ...props }: ComponentProps<typeof ToastPrimitive.Description>) {\n return (\n <ToastPrimitive.Description\n data-slot=\"toast-description\"\n className={cn('text-sm leading-relaxed text-po-dim', className)}\n {...props}\n />\n );\n}\n\nexport function ToastAction(props: ComponentProps<typeof ToastPrimitive.Action>) {\n return <ToastPrimitive.Action data-slot=\"toast-action\" {...props} />;\n}\n\nexport function ToastClose({ className, ...props }: ComponentProps<typeof ToastPrimitive.Close>) {\n return (\n <ToastPrimitive.Close\n data-slot=\"toast-close\"\n aria-label=\"dismiss\"\n className={cn(\n 'inline-flex h-6 w-6 shrink-0 cursor-pointer items-center justify-center rounded text-po-faint transition-colors hover:text-po-hi',\n className,\n )}\n {...props}\n >\n <CloseIcon className=\"h-3 w-3\" />\n </ToastPrimitive.Close>\n );\n}\n"],"mappings":"0MAcA,SAAgBE,EAAc,EAAuD,CACnF,MAAO,kBAACF,EAAe,SAAhB,CAAyB,GAAII,CAAQ,CAAA,CAC9C,CAEA,SAAgBC,EAAc,CAAE,YAAW,GAAGD,GAAyD,CACrG,MACE,kBAACJ,EAAe,SAAhB,CACE,YAAU,iBACV,UAAWM,EAAG,oFAAqFC,CAAS,EAC5G,GAAIH,CACL,CAAA,CAEL,CAEA,MAAaI,EAAgBC,EAC3B,gHACA,CACE,SAAU,CACR,KAAM,CACJ,QAAS,mBACT,QAAS,wBACT,GAAI,uBACJ,MAAO,qBACP,KAAM,sBACN,OAAQ,wBACV,CACF,EACA,gBAAiB,CAAE,KAAM,SAAU,CACrC,CACF,EAIA,SAAgBR,EAAM,CAAE,YAAW,OAAM,GAAGG,GAAqB,CAC/D,MAAO,kBAACJ,EAAe,KAAhB,CAAqB,YAAU,QAAQ,UAAWM,EAAGE,EAAc,CAAE,MAAK,CAAC,EAAGD,CAAS,EAAG,GAAIH,CAAQ,CAAA,CAC/G,CAEA,SAAgBO,EAAW,CAAE,YAAW,GAAGP,GAAsD,CAC/F,MACE,kBAACJ,EAAe,MAAhB,CACE,YAAU,cACV,UAAWM,EAAG,qCAAsCC,CAAS,EAC7D,GAAIH,CACL,CAAA,CAEL,CAEA,SAAgBQ,EAAiB,CAAE,YAAW,GAAGR,GAA4D,CAC3G,MACE,kBAACJ,EAAe,YAAhB,CACE,YAAU,oBACV,UAAWM,EAAG,sCAAuCC,CAAS,EAC9D,GAAIH,CACL,CAAA,CAEL,CAEA,SAAgBS,EAAY,EAAqD,CAC/E,MAAO,kBAACb,EAAe,OAAhB,CAAuB,YAAU,eAAe,GAAII,CAAQ,CAAA,CACrE,CAEA,SAAgBU,EAAW,CAAE,YAAW,GAAGV,GAAsD,CAC/F,MACE,kBAACJ,EAAe,MAAhB,CACE,YAAU,cACV,aAAW,UACX,UAAWM,EACT,mIACAC,CACF,EACA,GAAIH,EAEJ,SAAA,kBAACW,EAAD,CAAW,UAAU,SAAW,CAAA,CACZ,CAAA,CAE1B"}
@@ -1,2 +1,2 @@
1
- import{cn as e}from"../lib/cn.mjs";import{jsx as t}from"react/jsx-runtime";function n({path:n,onOpen:r,className:i,"data-testid":a=`tool-path`,...o}){return r===void 0?/* @__PURE__ */ t(`span`,{"data-slot":`tool-path`,"data-testid":a,className:e(`inline-block max-w-full min-w-0 truncate align-bottom text-doom-text`,i),...o,children:n}):/* @__PURE__ */ t(`button`,{type:`button`,"data-slot":`tool-path`,"data-testid":a,title:`open ${n}`,onClick:r,className:e(`min-h-6 max-w-full min-w-0 cursor-pointer truncate text-left text-doom-text hover:text-doom-blue hover:underline`,i),...o,children:n})}export{n as ToolPathLink};
1
+ import{cn as e}from"../lib/cn.mjs";import{jsx as t}from"react/jsx-runtime";function n({path:n,onOpen:r,className:i,"data-testid":a=`tool-path`,...o}){return r===void 0?/* @__PURE__ */ t(`span`,{"data-slot":`tool-path`,"data-testid":a,className:e(`inline-block max-w-full min-w-0 truncate align-bottom text-po-text`,i),...o,children:n}):/* @__PURE__ */ t(`button`,{type:`button`,"data-slot":`tool-path`,"data-testid":a,title:`open ${n}`,onClick:r,className:e(`min-h-6 max-w-full min-w-0 cursor-pointer truncate text-left text-po-text hover:text-po-blue hover:underline`,i),...o,children:n})}export{n as ToolPathLink};
2
2
  //# sourceMappingURL=ToolPathLink.mjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"ToolPathLink.mjs","names":["ToolPathLink","testId","props","onOpen","cn","className","path"],"sources":["../../../../../../src/components/ToolPathLink.tsx"],"sourcesContent":["import { cn } from '../lib/cn';\n\n/**\n * The file path in a tool call's header, as a link when something can open it.\n *\n * A read, a write and an edit all put a path in the same place, and a reader\n * who wants to see that file should not have to go looking for it in a file\n * list. Whether the path can be opened is not this component's business: the\n * host resolves it against whatever plugin owns files, and hands the answer\n * down as `onOpen`. Without one the path stays exactly what it was, plain\n * text, because a link that opens nothing is worse than no link.\n */\n\nexport interface ToolPathLinkProps {\n path: string;\n /** Opens the file; omitted when nothing installed can show it. */\n onOpen?: () => void;\n className?: string;\n /** Defaults to `tool-path`, which is how a test finds the link inside a call header. */\n 'data-testid'?: string;\n}\n\nexport function ToolPathLink({\n path,\n onOpen,\n className,\n 'data-testid': testId = 'tool-path',\n ...props\n}: ToolPathLinkProps) {\n if (onOpen === undefined) {\n return (\n <span\n data-slot=\"tool-path\"\n data-testid={testId}\n className={cn('inline-block max-w-full min-w-0 truncate align-bottom text-doom-text', className)}\n {...props}\n >\n {path}\n </span>\n );\n }\n return (\n <button\n type=\"button\"\n data-slot=\"tool-path\"\n data-testid={testId}\n title={`open ${path}`}\n onClick={onOpen}\n className={cn(\n 'min-h-6 max-w-full min-w-0 cursor-pointer truncate text-left text-doom-text hover:text-doom-blue hover:underline',\n className,\n )}\n {...props}\n >\n {path}\n </button>\n );\n}\n"],"mappings":"2EAsBA,SAAgBA,EAAa,CAC3B,OACA,SACA,YACA,cAAeC,EAAS,YACxB,GAAGC,GACiB,CAapB,OAZIC,IAAW,IAAA,GAEX,kBAAC,OAAD,CACE,YAAU,YACV,cAAaF,EACb,UAAWG,EAAG,uEAAwEC,CAAS,EAC/F,GAAIH,EAEH,SAAAI,CACG,CAAA,EAIR,kBAAC,SAAD,CACE,KAAK,SACL,YAAU,YACV,cAAaL,EACb,MAAO,QAAQK,IACf,QAASH,EACT,UAAWC,EACT,mHACAC,CACF,EACA,GAAIH,EAEH,SAAAI,CACK,CAAA,CAEZ"}
1
+ {"version":3,"file":"ToolPathLink.mjs","names":["ToolPathLink","testId","props","onOpen","cn","className","path"],"sources":["../../../../../../src/components/ToolPathLink.tsx"],"sourcesContent":["import { cn } from '../lib/cn';\n\n/**\n * The file path in a tool call's header, as a link when something can open it.\n *\n * A read, a write and an edit all put a path in the same place, and a reader\n * who wants to see that file should not have to go looking for it in a file\n * list. Whether the path can be opened is not this component's business: the\n * host resolves it against whatever plugin owns files, and hands the answer\n * down as `onOpen`. Without one the path stays exactly what it was, plain\n * text, because a link that opens nothing is worse than no link.\n */\n\nexport interface ToolPathLinkProps {\n path: string;\n /** Opens the file; omitted when nothing installed can show it. */\n onOpen?: () => void;\n className?: string;\n /** Defaults to `tool-path`, which is how a test finds the link inside a call header. */\n 'data-testid'?: string;\n}\n\nexport function ToolPathLink({\n path,\n onOpen,\n className,\n 'data-testid': testId = 'tool-path',\n ...props\n}: ToolPathLinkProps) {\n if (onOpen === undefined) {\n return (\n <span\n data-slot=\"tool-path\"\n data-testid={testId}\n className={cn('inline-block max-w-full min-w-0 truncate align-bottom text-po-text', className)}\n {...props}\n >\n {path}\n </span>\n );\n }\n return (\n <button\n type=\"button\"\n data-slot=\"tool-path\"\n data-testid={testId}\n title={`open ${path}`}\n onClick={onOpen}\n className={cn(\n 'min-h-6 max-w-full min-w-0 cursor-pointer truncate text-left text-po-text hover:text-po-blue hover:underline',\n className,\n )}\n {...props}\n >\n {path}\n </button>\n );\n}\n"],"mappings":"2EAsBA,SAAgBA,EAAa,CAC3B,OACA,SACA,YACA,cAAeC,EAAS,YACxB,GAAGC,GACiB,CAapB,OAZIC,IAAW,IAAA,GAEX,kBAAC,OAAD,CACE,YAAU,YACV,cAAaF,EACb,UAAWG,EAAG,qEAAsEC,CAAS,EAC7F,GAAIH,EAEH,SAAAI,CACG,CAAA,EAIR,kBAAC,SAAD,CACE,KAAK,SACL,YAAU,YACV,cAAaL,EACb,MAAO,QAAQK,IACf,QAASH,EACT,UAAWC,EACT,+GACAC,CACF,EACA,GAAIH,EAEH,SAAAI,CACK,CAAA,CAEZ"}
@@ -1,2 +1,2 @@
1
- import{cn as e}from"../lib/cn.mjs";import{Tooltip as t}from"radix-ui";import{jsx as n}from"react/jsx-runtime";function r({delayDuration:e=300,...r}){return/* @__PURE__ */ n(t.Provider,{"data-slot":`tooltip-provider`,delayDuration:e,...r})}function i(e){return/* @__PURE__ */ n(t.Root,{"data-slot":`tooltip`,...e})}function a(e){return/* @__PURE__ */ n(t.Trigger,{"data-slot":`tooltip-trigger`,...e})}function o({className:r,sideOffset:i=4,children:a,...o}){return/* @__PURE__ */ n(t.Portal,{children:/* @__PURE__ */ n(t.Content,{"data-slot":`tooltip-content`,sideOffset:i,className:e(`z-50 rounded border border-doom-border bg-doom-deep px-2 py-1 text-sm text-doom-text shadow-lg data-[state=delayed-open]:animate-doom-fade`,r),...o,children:a})})}export{i as Tooltip,o as TooltipContent,r as TooltipProvider,a as TooltipTrigger};
1
+ import{cn as e}from"../lib/cn.mjs";import{Tooltip as t}from"radix-ui";import{jsx as n}from"react/jsx-runtime";function r({delayDuration:e=300,...r}){return/* @__PURE__ */ n(t.Provider,{"data-slot":`tooltip-provider`,delayDuration:e,...r})}function i(e){return/* @__PURE__ */ n(t.Root,{"data-slot":`tooltip`,...e})}function a(e){return/* @__PURE__ */ n(t.Trigger,{"data-slot":`tooltip-trigger`,...e})}function o({className:r,sideOffset:i=4,children:a,...o}){return/* @__PURE__ */ n(t.Portal,{children:/* @__PURE__ */ n(t.Content,{"data-slot":`tooltip-content`,sideOffset:i,className:e(`z-50 rounded border border-po-border bg-po-deep px-2 py-1 text-sm text-po-text shadow-lg data-[state=delayed-open]:animate-po-fade`,r),...o,children:a})})}export{i as Tooltip,o as TooltipContent,r as TooltipProvider,a as TooltipTrigger};
2
2
  //# sourceMappingURL=Tooltip.mjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"Tooltip.mjs","names":["TooltipPrimitive","Tooltip","TooltipProvider","props","Tooltip","Tooltip$1","TooltipTrigger","TooltipContent","cn","className"],"sources":["../../../../../../src/components/Tooltip.tsx"],"sourcesContent":["import { Tooltip as TooltipPrimitive } from 'radix-ui';\nimport type { ComponentProps } from 'react';\n\nimport { cn } from '../lib/cn';\n\n/** Mount once near the root; every Tooltip below shares its delay. */\nexport function TooltipProvider({ delayDuration = 300, ...props }: ComponentProps<typeof TooltipPrimitive.Provider>) {\n return <TooltipPrimitive.Provider data-slot=\"tooltip-provider\" delayDuration={delayDuration} {...props} />;\n}\n\nexport function Tooltip(props: ComponentProps<typeof TooltipPrimitive.Root>) {\n return <TooltipPrimitive.Root data-slot=\"tooltip\" {...props} />;\n}\n\nexport function TooltipTrigger(props: ComponentProps<typeof TooltipPrimitive.Trigger>) {\n return <TooltipPrimitive.Trigger data-slot=\"tooltip-trigger\" {...props} />;\n}\n\nexport function TooltipContent({\n className,\n sideOffset = 4,\n children,\n ...props\n}: ComponentProps<typeof TooltipPrimitive.Content>) {\n return (\n <TooltipPrimitive.Portal>\n <TooltipPrimitive.Content\n data-slot=\"tooltip-content\"\n sideOffset={sideOffset}\n className={cn(\n 'z-50 rounded border border-doom-border bg-doom-deep px-2 py-1 text-sm text-doom-text shadow-lg data-[state=delayed-open]:animate-doom-fade',\n className,\n )}\n {...props}\n >\n {children}\n </TooltipPrimitive.Content>\n </TooltipPrimitive.Portal>\n );\n}\n"],"mappings":"8GAMA,SAAgBE,EAAgB,CAAE,gBAAgB,IAAK,GAAGC,GAA2D,CACnH,MAAO,kBAACH,EAAiB,SAAlB,CAA2B,YAAU,mBAAkC,gBAAe,GAAIG,CAAQ,CAAA,CAC3G,CAEA,SAAgBF,EAAQ,EAAqD,CAC3E,MAAO,kBAACD,EAAiB,KAAlB,CAAuB,YAAU,UAAU,GAAIG,CAAQ,CAAA,CAChE,CAEA,SAAgBG,EAAe,EAAwD,CACrF,MAAO,kBAACN,EAAiB,QAAlB,CAA0B,YAAU,kBAAkB,GAAIG,CAAQ,CAAA,CAC3E,CAEA,SAAgBI,EAAe,CAC7B,YACA,aAAa,EACb,WACA,GAAGJ,GAC+C,CAClD,MACE,kBAACH,EAAiB,OAAlB,CAAA,SACE,kBAACA,EAAiB,QAAlB,CACE,YAAU,kBACE,aACZ,UAAWQ,EACT,6IACAC,CACF,EACA,GAAIN,EAEH,UACuB,CAAA,CACH,CAAA,CAE7B"}
1
+ {"version":3,"file":"Tooltip.mjs","names":["TooltipPrimitive","Tooltip","TooltipProvider","props","Tooltip","Tooltip$1","TooltipTrigger","TooltipContent","cn","className"],"sources":["../../../../../../src/components/Tooltip.tsx"],"sourcesContent":["import { Tooltip as TooltipPrimitive } from 'radix-ui';\nimport type { ComponentProps } from 'react';\n\nimport { cn } from '../lib/cn';\n\n/** Mount once near the root; every Tooltip below shares its delay. */\nexport function TooltipProvider({ delayDuration = 300, ...props }: ComponentProps<typeof TooltipPrimitive.Provider>) {\n return <TooltipPrimitive.Provider data-slot=\"tooltip-provider\" delayDuration={delayDuration} {...props} />;\n}\n\nexport function Tooltip(props: ComponentProps<typeof TooltipPrimitive.Root>) {\n return <TooltipPrimitive.Root data-slot=\"tooltip\" {...props} />;\n}\n\nexport function TooltipTrigger(props: ComponentProps<typeof TooltipPrimitive.Trigger>) {\n return <TooltipPrimitive.Trigger data-slot=\"tooltip-trigger\" {...props} />;\n}\n\nexport function TooltipContent({\n className,\n sideOffset = 4,\n children,\n ...props\n}: ComponentProps<typeof TooltipPrimitive.Content>) {\n return (\n <TooltipPrimitive.Portal>\n <TooltipPrimitive.Content\n data-slot=\"tooltip-content\"\n sideOffset={sideOffset}\n className={cn(\n 'z-50 rounded border border-po-border bg-po-deep px-2 py-1 text-sm text-po-text shadow-lg data-[state=delayed-open]:animate-po-fade',\n className,\n )}\n {...props}\n >\n {children}\n </TooltipPrimitive.Content>\n </TooltipPrimitive.Portal>\n );\n}\n"],"mappings":"8GAMA,SAAgBE,EAAgB,CAAE,gBAAgB,IAAK,GAAGC,GAA2D,CACnH,MAAO,kBAACH,EAAiB,SAAlB,CAA2B,YAAU,mBAAkC,gBAAe,GAAIG,CAAQ,CAAA,CAC3G,CAEA,SAAgBF,EAAQ,EAAqD,CAC3E,MAAO,kBAACD,EAAiB,KAAlB,CAAuB,YAAU,UAAU,GAAIG,CAAQ,CAAA,CAChE,CAEA,SAAgBG,EAAe,EAAwD,CACrF,MAAO,kBAACN,EAAiB,QAAlB,CAA0B,YAAU,kBAAkB,GAAIG,CAAQ,CAAA,CAC3E,CAEA,SAAgBI,EAAe,CAC7B,YACA,aAAa,EACb,WACA,GAAGJ,GAC+C,CAClD,MACE,kBAACH,EAAiB,OAAlB,CAAA,SACE,kBAACA,EAAiB,QAAlB,CACE,YAAU,kBACE,aACZ,UAAWQ,EACT,qIACAC,CACF,EACA,GAAIN,EAEH,UACuB,CAAA,CACH,CAAA,CAE7B"}
@@ -1,2 +1,2 @@
1
- import { Activity as ActivityIcon, ArrowRight as ArrowRightIcon, AudioLines as AudioLinesIcon, BookmarkPlus as BookmarkPlusIcon, Check as CheckIcon, ChevronDown as ChevronDownIcon, ChevronRight as ChevronRightIcon, ChevronUp as ChevronUpIcon, CircleAlert as AlertIcon, CirclePlay as PlayCircleIcon, Copy as CopyIcon, CornerDownLeft as EnterIcon, ExternalLink as ExternalLinkIcon, FileText as FileIcon, Folder as FolderIcon, GitBranch as BranchIcon, GitFork as ForkIcon, Globe as GlobeIcon, House as HomeIcon, Lightbulb as LightbulbIcon, Loader2 as LoaderIcon, Lock as LockIcon, LockOpen as UnlockIcon, MessageCircle as MessageIcon, Mic as MicIcon, MoreVertical as KebabIcon, Palette as PaletteIcon, Paperclip as PaperclipIcon, Pencil as EditIcon, Plus as PlusIcon, Quote as QuoteIcon, RefreshCw as RefreshIcon, Rewind as RewindIcon, Search as SearchIcon, Send as SendIcon, Settings as GearIcon, ShieldCheck as ShieldIcon, Sparkles as SparklesIcon, Square as StopIcon, SquareCheckBig as TaskIcon, Trash2 as TrashIcon, UserRound as UserIcon, Users as UsersIcon, Volume2 as VolumeIcon, Workflow as WorkflowIcon, Wrench as WrenchIcon, X as CloseIcon } from "lucide-react";
2
- export { ActivityIcon, AlertIcon, ArrowRightIcon, AudioLinesIcon, BookmarkPlusIcon, BranchIcon, CheckIcon, ChevronDownIcon, ChevronRightIcon, ChevronUpIcon, CloseIcon, CopyIcon, EditIcon, EnterIcon, ExternalLinkIcon, FileIcon, FolderIcon, ForkIcon, GearIcon, GlobeIcon, HomeIcon, KebabIcon, LightbulbIcon, LoaderIcon, LockIcon, MessageIcon, MicIcon, PaletteIcon, PaperclipIcon, PlayCircleIcon, PlusIcon, QuoteIcon, RefreshIcon, RewindIcon, SearchIcon, SendIcon, ShieldIcon, SparklesIcon, StopIcon, TaskIcon, TrashIcon, UnlockIcon, UserIcon, UsersIcon, VolumeIcon, WorkflowIcon, WrenchIcon };
1
+ import { Activity as ActivityIcon, ArrowRight as ArrowRightIcon, AudioLines as AudioLinesIcon, BookmarkPlus as BookmarkPlusIcon, Check as CheckIcon, ChevronDown as ChevronDownIcon, ChevronRight as ChevronRightIcon, ChevronUp as ChevronUpIcon, CircleAlert as AlertIcon, CirclePlay as PlayCircleIcon, Copy as CopyIcon, CornerDownLeft as EnterIcon, ExternalLink as ExternalLinkIcon, FileText as FileIcon, Folder as FolderIcon, GitBranch as BranchIcon, GitFork as ForkIcon, Globe as GlobeIcon, House as HomeIcon, Image as ImageIcon, LayoutGrid as GridIcon, Lightbulb as LightbulbIcon, List as ListIcon, Loader2 as LoaderIcon, Lock as LockIcon, LockOpen as UnlockIcon, MessageCircle as MessageIcon, Mic as MicIcon, MoreVertical as KebabIcon, Palette as PaletteIcon, Paperclip as PaperclipIcon, Pencil as EditIcon, Plus as PlusIcon, Quote as QuoteIcon, RefreshCw as RefreshIcon, Rewind as RewindIcon, Search as SearchIcon, Send as SendIcon, Settings as GearIcon, ShieldCheck as ShieldIcon, SlidersHorizontal as SlidersIcon, Sparkles as SparklesIcon, Square as StopIcon, SquareCheckBig as TaskIcon, Trash2 as TrashIcon, UserRound as UserIcon, Users as UsersIcon, Volume2 as VolumeIcon, Workflow as WorkflowIcon, Wrench as WrenchIcon, X as CloseIcon } from "lucide-react";
2
+ export { ActivityIcon, AlertIcon, ArrowRightIcon, AudioLinesIcon, BookmarkPlusIcon, BranchIcon, CheckIcon, ChevronDownIcon, ChevronRightIcon, ChevronUpIcon, CloseIcon, CopyIcon, EditIcon, EnterIcon, ExternalLinkIcon, FileIcon, FolderIcon, ForkIcon, GearIcon, GlobeIcon, GridIcon, HomeIcon, ImageIcon, KebabIcon, LightbulbIcon, ListIcon, LoaderIcon, LockIcon, MessageIcon, MicIcon, PaletteIcon, PaperclipIcon, PlayCircleIcon, PlusIcon, QuoteIcon, RefreshIcon, RewindIcon, SearchIcon, SendIcon, ShieldIcon, SlidersIcon, SparklesIcon, StopIcon, TaskIcon, TrashIcon, UnlockIcon, UserIcon, UsersIcon, VolumeIcon, WorkflowIcon, WrenchIcon };
@@ -1 +1 @@
1
- import{Activity as e,ArrowRight as t,AudioLines as n,BookmarkPlus as r,Check as i,ChevronDown as a,ChevronRight as o,ChevronUp as s,CircleAlert as c,CirclePlay as l,Copy as u,CornerDownLeft as d,ExternalLink as f,FileText as p,Folder as m,GitBranch as h,GitFork as g,Globe as _,House as v,Lightbulb as y,Loader2 as b,Lock as x,LockOpen as S,MessageCircle as C,Mic as w,MoreVertical as T,Palette as E,Paperclip as D,Pencil as O,Plus as k,Quote as A,RefreshCw as j,Rewind as M,Search as N,Send as P,Settings as F,ShieldCheck as I,Sparkles as L,Square as R,SquareCheckBig as z,Trash2 as B,UserRound as V,Users as H,Volume2 as U,Workflow as W,Wrench as G,X as K}from"lucide-react";export{e as ActivityIcon,c as AlertIcon,t as ArrowRightIcon,n as AudioLinesIcon,r as BookmarkPlusIcon,h as BranchIcon,i as CheckIcon,a as ChevronDownIcon,o as ChevronRightIcon,s as ChevronUpIcon,K as CloseIcon,u as CopyIcon,O as EditIcon,d as EnterIcon,f as ExternalLinkIcon,p as FileIcon,m as FolderIcon,g as ForkIcon,F as GearIcon,_ as GlobeIcon,v as HomeIcon,T as KebabIcon,y as LightbulbIcon,b as LoaderIcon,x as LockIcon,C as MessageIcon,w as MicIcon,E as PaletteIcon,D as PaperclipIcon,l as PlayCircleIcon,k as PlusIcon,A as QuoteIcon,j as RefreshIcon,M as RewindIcon,N as SearchIcon,P as SendIcon,I as ShieldIcon,L as SparklesIcon,R as StopIcon,z as TaskIcon,B as TrashIcon,S as UnlockIcon,V as UserIcon,H as UsersIcon,U as VolumeIcon,W as WorkflowIcon,G as WrenchIcon};
1
+ export{Activity as ActivityIcon,CircleAlert as AlertIcon,ArrowRight as ArrowRightIcon,AudioLines as AudioLinesIcon,BookmarkPlus as BookmarkPlusIcon,GitBranch as BranchIcon,Check as CheckIcon,ChevronDown as ChevronDownIcon,ChevronRight as ChevronRightIcon,ChevronUp as ChevronUpIcon,X as CloseIcon,Copy as CopyIcon,Pencil as EditIcon,CornerDownLeft as EnterIcon,ExternalLink as ExternalLinkIcon,FileText as FileIcon,Folder as FolderIcon,GitFork as ForkIcon,Settings as GearIcon,Globe as GlobeIcon,LayoutGrid as GridIcon,House as HomeIcon,Image as ImageIcon,MoreVertical as KebabIcon,Lightbulb as LightbulbIcon,List as ListIcon,Loader2 as LoaderIcon,Lock as LockIcon,MessageCircle as MessageIcon,Mic as MicIcon,Palette as PaletteIcon,Paperclip as PaperclipIcon,CirclePlay as PlayCircleIcon,Plus as PlusIcon,Quote as QuoteIcon,RefreshCw as RefreshIcon,Rewind as RewindIcon,Search as SearchIcon,Send as SendIcon,ShieldCheck as ShieldIcon,SlidersHorizontal as SlidersIcon,Sparkles as SparklesIcon,Square as StopIcon,SquareCheckBig as TaskIcon,Trash2 as TrashIcon,LockOpen as UnlockIcon,UserRound as UserIcon,Users as UsersIcon,Volume2 as VolumeIcon,Workflow as WorkflowIcon,Wrench as WrenchIcon}from"lucide-react";
@@ -1,2 +1,2 @@
1
- const e=/\x1b\[([0-9;:]*)([A-Za-z])|\x1b\][^\x07\x1b]*(?:\x07|\x1b\\)|\x1b[()][A-Za-z0-9]|\x1b[A-Za-z]/g,t={30:`text-doom-faint`,31:`text-doom-red`,32:`text-doom-green`,33:`text-doom-yellow`,34:`text-doom-blue`,35:`text-doom-magenta`,36:`text-doom-cyan`,37:`text-doom-text`,90:`text-doom-dim`,91:`text-doom-red`,92:`text-doom-green`,93:`text-doom-orange`,94:`text-doom-blue`,95:`text-doom-violet`,96:`text-doom-cyan`,97:`text-doom-hi`};function n(){return{bold:!1,faint:!1,italic:!1,underline:!1,inverse:!1}}function r(e){if(e<0||e>=256||e<16)return;if(e>=232){let t=(e-232)*10+8;return i(t,t,t)}let t=e-16,n=e=>e===0?0:e*40+55;return i(n(Math.floor(t/36)%6),n(Math.floor(t/6)%6),n(t%6))}function i(e,t,n){let r=e=>Math.max(0,Math.min(255,Math.round(e)));return`rgb(${r(e)} ${r(t)} ${r(n)})`}function a(e,t){let n=e[t+1];if(n===2){let[n,r,a]=e.slice(t+2,t+2+3);return n===void 0||r===void 0||a===void 0?{consumed:e.length}:{color:i(n,r,a),consumed:5}}if(n===5){let n=e[t+2];return{...n===void 0?{}:{color:r(n)},consumed:3}}return{consumed:1}}function o(e,r){let i=r===``?[0]:r.split(/[;:]/).map(e=>Number(e)||0),o={...e};for(let e=0;e<i.length;e+=1){let r=i[e];if(r===0)o=n();else if(r===1)o.bold=!0;else if(r===2)o.faint=!0;else if(r===3)o.italic=!0;else if(r===4)o.underline=!0;else if(r===7)o.inverse=!0;else if(r===22)o.bold=!1,o.faint=!1;else if(r===23)o.italic=!1;else if(r===24)o.underline=!1;else if(r===27)o.inverse=!1;else if(r===39)delete o.className,delete o.color;else if(r===38){let{color:t,consumed:n}=a(i,e);delete o.className,t===void 0?delete o.color:o.color=t,e+=n-1}else if(r===48)e+=a(i,e).consumed-1;else if(r>=30&&r<=37||r>=90&&r<=97){let e=t[r];delete o.color,e===void 0?delete o.className:o.className=e}else(r>=40&&r<=49||r>=100&&r<=107)&&(o.inverse=!1)}return o}function s(e,t){return{text:e,...t.className===void 0?{}:{className:t.className},...t.color===void 0?{}:{color:t.color},...t.bold?{bold:!0}:{},...t.faint?{faint:!0}:{},...t.italic?{italic:!0}:{},...t.underline?{underline:!0}:{},...t.inverse?{inverse:!0}:{}}}function c(t){let r=[],i=n(),a=0;e.lastIndex=0;let c=e.exec(t);for(;c!==null;)c.index>a&&r.push(s(t.slice(a,c.index),i)),c[2]===`m`&&(i=o(i,c[1]??``)),a=c.index+c[0].length,c=e.exec(t);return a<t.length&&r.push(s(t.slice(a),i)),r}export{c as ansiSpans};
1
+ const e=/\x1b\[([0-9;:]*)([A-Za-z])|\x1b\][^\x07\x1b]*(?:\x07|\x1b\\)|\x1b[()][A-Za-z0-9]|\x1b[A-Za-z]/g,t={30:`text-po-faint`,31:`text-po-red`,32:`text-po-green`,33:`text-po-yellow`,34:`text-po-blue`,35:`text-po-magenta`,36:`text-po-cyan`,37:`text-po-text`,90:`text-po-dim`,91:`text-po-red`,92:`text-po-green`,93:`text-po-orange`,94:`text-po-blue`,95:`text-po-violet`,96:`text-po-cyan`,97:`text-po-hi`};function n(){return{bold:!1,faint:!1,italic:!1,underline:!1,inverse:!1}}function r(e){if(e<0||e>=256||e<16)return;if(e>=232){let t=(e-232)*10+8;return i(t,t,t)}let t=e-16,n=e=>e===0?0:e*40+55;return i(n(Math.floor(t/36)%6),n(Math.floor(t/6)%6),n(t%6))}function i(e,t,n){let r=e=>Math.max(0,Math.min(255,Math.round(e)));return`rgb(${r(e)} ${r(t)} ${r(n)})`}function a(e,t){let n=e[t+1];if(n===2){let[n,r,a]=e.slice(t+2,t+2+3);return n===void 0||r===void 0||a===void 0?{consumed:e.length}:{color:i(n,r,a),consumed:5}}if(n===5){let n=e[t+2];return{...n===void 0?{}:{color:r(n)},consumed:3}}return{consumed:1}}function o(e,r){let i=r===``?[0]:r.split(/[;:]/).map(e=>Number(e)||0),o={...e};for(let e=0;e<i.length;e+=1){let r=i[e];if(r===0)o=n();else if(r===1)o.bold=!0;else if(r===2)o.faint=!0;else if(r===3)o.italic=!0;else if(r===4)o.underline=!0;else if(r===7)o.inverse=!0;else if(r===22)o.bold=!1,o.faint=!1;else if(r===23)o.italic=!1;else if(r===24)o.underline=!1;else if(r===27)o.inverse=!1;else if(r===39)delete o.className,delete o.color;else if(r===38){let{color:t,consumed:n}=a(i,e);delete o.className,t===void 0?delete o.color:o.color=t,e+=n-1}else if(r===48)e+=a(i,e).consumed-1;else if(r>=30&&r<=37||r>=90&&r<=97){let e=t[r];delete o.color,e===void 0?delete o.className:o.className=e}else(r>=40&&r<=49||r>=100&&r<=107)&&(o.inverse=!1)}return o}function s(e,t){return{text:e,...t.className===void 0?{}:{className:t.className},...t.color===void 0?{}:{color:t.color},...t.bold?{bold:!0}:{},...t.faint?{faint:!0}:{},...t.italic?{italic:!0}:{},...t.underline?{underline:!0}:{},...t.inverse?{inverse:!0}:{}}}function c(t){let r=[],i=n(),a=0;e.lastIndex=0;let c=e.exec(t);for(;c!==null;)c.index>a&&r.push(s(t.slice(a,c.index),i)),c[2]===`m`&&(i=o(i,c[1]??``)),a=c.index+c[0].length,c=e.exec(t);return a<t.length&&r.push(s(t.slice(a),i)),r}export{c as ansiSpans};
2
2
  //# sourceMappingURL=ansiSpans.mjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"ansiSpans.mjs","names":["ANSI_PATTERN","FOREGROUND_CLASS","blank","paletteColor","index","level","rgb","offset","channel","value","clamp","red","green","blue","extendedColor","selector","codes","entry","applySgr","parameters","part","next","current","code","color","consumed","className","spanOf","attributes","ansiSpans","spans","cursor","match","line"],"sources":["../../../../../../src/lib/ansiSpans.ts"],"sourcesContent":["/**\n * The escapes a captured terminal screen carries, turned into spans.\n *\n * WHY THIS EXISTS:\n * Two kinds of output reach the cockpit with a terminal's colour still in it.\n * A workflow captures a tmux pane with `-e`, and a runner's log file keeps the\n * palette on purpose, stripping only cursor moves and redraws. The browser has\n * no terminal, and the cockpit carries no terminal emulator, so the sequences\n * are read here and rendered as ordinary spans. It lives in the component\n * library because both readers need it and neither may import the other.\n *\n * WHAT IT UNDERSTANDS:\n * SGR (`ESC [ … m`) only: the eight base colours and their bright forms, 256\n * colour and truecolour, and bold, faint, italic, underline and inverse. Every\n * other sequence is dropped rather than printed, because a cursor move or a\n * clear that arrives as visible junk is worse than one that arrives as\n * nothing: the screen is a snapshot, and the next one repaints it anyway.\n *\n * The named colours become theme tokens rather than the child's own palette,\n * so a run's output sits in the cockpit's colours instead of fighting them.\n * Only 256-colour and truecolour, which name a colour no token can stand in\n * for, are rendered as themselves.\n */\n\n/** One run of text with the attributes in force when it was printed. */\nexport interface AnsiSpan {\n text: string;\n /** Theme class for a named colour, absent when the colour is the default. */\n className?: string;\n /** An exact colour the child asked for, as `rgb(r g b)`; only 256/truecolour set this. */\n color?: string;\n bold?: boolean;\n faint?: boolean;\n italic?: boolean;\n underline?: boolean;\n /** Foreground and background swapped, which a TUI uses for selection and cursors. */\n inverse?: boolean;\n}\n\n// oxlint-disable-next-line no-control-regex -- reading terminal escapes is the point\nconst ANSI_PATTERN = /\\x1b\\[([0-9;:]*)([A-Za-z])|\\x1b\\][^\\x07\\x1b]*(?:\\x07|\\x1b\\\\)|\\x1b[()][A-Za-z0-9]|\\x1b[A-Za-z]/g;\nconst SGR_FINAL = 'm';\nconst RESET_CODE = 0;\nconst DEFAULT_FOREGROUND = 39;\nconst EXTENDED_FOREGROUND = 38;\nconst EXTENDED_BACKGROUND = 48;\nconst TRUECOLOR_SELECTOR = 2;\nconst PALETTE_SELECTOR = 5;\nconst BASE_FOREGROUND_START = 30;\nconst BASE_FOREGROUND_END = 37;\nconst BRIGHT_FOREGROUND_START = 90;\nconst BRIGHT_FOREGROUND_END = 97;\nconst BACKGROUND_START = 40;\nconst BACKGROUND_END = 49;\nconst BRIGHT_BACKGROUND_START = 100;\nconst BRIGHT_BACKGROUND_END = 107;\nconst RGB_CHANNELS = 3;\nconst PALETTE_SIZE = 256;\nconst PALETTE_CUBE_START = 16;\nconst PALETTE_GREY_START = 232;\nconst CUBE_SIDE = 6;\nconst CUBE_STEP = 40;\nconst CUBE_OFFSET = 55;\nconst GREY_STEP = 10;\nconst GREY_OFFSET = 8;\nconst MAX_CHANNEL = 255;\n\nconst BOLD = 1;\nconst FAINT = 2;\nconst ITALIC = 3;\nconst UNDERLINE = 4;\nconst INVERSE = 7;\nconst NOT_BOLD = 22;\nconst NOT_ITALIC = 23;\nconst NOT_UNDERLINE = 24;\nconst NOT_INVERSE = 27;\n\n/**\n * The eight terminal colours as theme tokens, listed as whole class strings so\n * the host's class scanner can see them.\n */\nconst FOREGROUND_CLASS: Readonly<Record<number, string>> = {\n 30: 'text-doom-faint',\n 31: 'text-doom-red',\n 32: 'text-doom-green',\n 33: 'text-doom-yellow',\n 34: 'text-doom-blue',\n 35: 'text-doom-magenta',\n 36: 'text-doom-cyan',\n 37: 'text-doom-text',\n 90: 'text-doom-dim',\n 91: 'text-doom-red',\n 92: 'text-doom-green',\n 93: 'text-doom-orange',\n 94: 'text-doom-blue',\n 95: 'text-doom-violet',\n 96: 'text-doom-cyan',\n 97: 'text-doom-hi',\n};\n\ninterface Attributes {\n className?: string;\n color?: string;\n bold: boolean;\n faint: boolean;\n italic: boolean;\n underline: boolean;\n inverse: boolean;\n}\n\nfunction blank(): Attributes {\n return { bold: false, faint: false, italic: false, underline: false, inverse: false };\n}\n\n/** One of the 256 palette entries as an exact colour, since no token stands for it. */\nfunction paletteColor(index: number): string | undefined {\n if (index < 0 || index >= PALETTE_SIZE) return undefined;\n if (index < PALETTE_CUBE_START) return undefined; // The first sixteen are the named ones.\n if (index >= PALETTE_GREY_START) {\n const level = (index - PALETTE_GREY_START) * GREY_STEP + GREY_OFFSET;\n return rgb(level, level, level);\n }\n const offset = index - PALETTE_CUBE_START;\n const channel = (value: number): number => (value === 0 ? 0 : value * CUBE_STEP + CUBE_OFFSET);\n return rgb(\n channel(Math.floor(offset / (CUBE_SIDE * CUBE_SIDE)) % CUBE_SIDE),\n channel(Math.floor(offset / CUBE_SIDE) % CUBE_SIDE),\n channel(offset % CUBE_SIDE),\n );\n}\n\nfunction rgb(red: number, green: number, blue: number): string {\n const clamp = (value: number): number => Math.max(0, Math.min(MAX_CHANNEL, Math.round(value)));\n return `rgb(${clamp(red)} ${clamp(green)} ${clamp(blue)})`;\n}\n\n/** Reads one extended-colour run (`38;5;n` or `38;2;r;g;b`), answering how many codes it ate. */\nfunction extendedColor(codes: readonly number[], index: number): { color?: string; consumed: number } {\n const selector = codes[index + 1];\n if (selector === TRUECOLOR_SELECTOR) {\n const [red, green, blue] = codes.slice(index + 2, index + 2 + RGB_CHANNELS);\n if (red === undefined || green === undefined || blue === undefined) return { consumed: codes.length };\n return { color: rgb(red, green, blue), consumed: 1 + 1 + RGB_CHANNELS };\n }\n if (selector === PALETTE_SELECTOR) {\n const entry = codes[index + 2];\n return { ...(entry === undefined ? {} : { color: paletteColor(entry) }), consumed: 3 };\n }\n return { consumed: 1 };\n}\n\nfunction applySgr(current: Attributes, parameters: string): Attributes {\n // An empty parameter list is a reset, which is what a bare `ESC[m` means.\n const codes = parameters === '' ? [RESET_CODE] : parameters.split(/[;:]/).map((part) => Number(part) || 0);\n let next = { ...current };\n for (let index = 0; index < codes.length; index += 1) {\n const code = codes[index] as number;\n if (code === RESET_CODE) {\n next = blank();\n } else if (code === BOLD) next.bold = true;\n else if (code === FAINT) next.faint = true;\n else if (code === ITALIC) next.italic = true;\n else if (code === UNDERLINE) next.underline = true;\n else if (code === INVERSE) next.inverse = true;\n else if (code === NOT_BOLD) {\n next.bold = false;\n next.faint = false;\n } else if (code === NOT_ITALIC) next.italic = false;\n else if (code === NOT_UNDERLINE) next.underline = false;\n else if (code === NOT_INVERSE) next.inverse = false;\n else if (code === DEFAULT_FOREGROUND) {\n delete next.className;\n delete next.color;\n } else if (code === EXTENDED_FOREGROUND) {\n const { color, consumed } = extendedColor(codes, index);\n delete next.className;\n if (color === undefined) delete next.color;\n else next.color = color;\n index += consumed - 1;\n } else if (code === EXTENDED_BACKGROUND) {\n // Backgrounds are dropped: a child painting its own background over the\n // cockpit's panel is what makes captured output unreadable in a theme.\n index += extendedColor(codes, index).consumed - 1;\n } else if (\n (code >= BASE_FOREGROUND_START && code <= BASE_FOREGROUND_END) ||\n (code >= BRIGHT_FOREGROUND_START && code <= BRIGHT_FOREGROUND_END)\n ) {\n const className = FOREGROUND_CLASS[code];\n delete next.color;\n if (className === undefined) delete next.className;\n else next.className = className;\n }\n // Background and everything else is read and dropped.\n else if (\n (code >= BACKGROUND_START && code <= BACKGROUND_END) ||\n (code >= BRIGHT_BACKGROUND_START && code <= BRIGHT_BACKGROUND_END)\n ) {\n next.inverse = false;\n }\n }\n return next;\n}\n\nfunction spanOf(text: string, attributes: Attributes): AnsiSpan {\n return {\n text,\n ...(attributes.className === undefined ? {} : { className: attributes.className }),\n ...(attributes.color === undefined ? {} : { color: attributes.color }),\n ...(attributes.bold ? { bold: true } : {}),\n ...(attributes.faint ? { faint: true } : {}),\n ...(attributes.italic ? { italic: true } : {}),\n ...(attributes.underline ? { underline: true } : {}),\n ...(attributes.inverse ? { inverse: true } : {}),\n };\n}\n\n/** One line of captured screen as spans, with every unreadable sequence dropped. */\nexport function ansiSpans(line: string): AnsiSpan[] {\n const spans: AnsiSpan[] = [];\n let attributes = blank();\n let cursor = 0;\n ANSI_PATTERN.lastIndex = 0;\n let match = ANSI_PATTERN.exec(line);\n while (match !== null) {\n if (match.index > cursor) spans.push(spanOf(line.slice(cursor, match.index), attributes));\n if (match[2] === SGR_FINAL) attributes = applySgr(attributes, match[1] ?? '');\n cursor = match.index + match[0].length;\n match = ANSI_PATTERN.exec(line);\n }\n if (cursor < line.length) spans.push(spanOf(line.slice(cursor), attributes));\n return spans;\n}\n"],"mappings":"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"}
1
+ {"version":3,"file":"ansiSpans.mjs","names":["ANSI_PATTERN","FOREGROUND_CLASS","blank","paletteColor","index","level","rgb","offset","channel","value","clamp","red","green","blue","extendedColor","selector","codes","entry","applySgr","parameters","part","next","current","code","color","consumed","className","spanOf","attributes","ansiSpans","spans","cursor","match","line"],"sources":["../../../../../../src/lib/ansiSpans.ts"],"sourcesContent":["/**\n * The escapes a captured terminal screen carries, turned into spans.\n *\n * WHY THIS EXISTS:\n * Two kinds of output reach the cockpit with a terminal's colour still in it.\n * A workflow captures a tmux pane with `-e`, and a runner's log file keeps the\n * palette on purpose, stripping only cursor moves and redraws. The browser has\n * no terminal, and the cockpit carries no terminal emulator, so the sequences\n * are read here and rendered as ordinary spans. It lives in the component\n * library because both readers need it and neither may import the other.\n *\n * WHAT IT UNDERSTANDS:\n * SGR (`ESC [ … m`) only: the eight base colours and their bright forms, 256\n * colour and truecolour, and bold, faint, italic, underline and inverse. Every\n * other sequence is dropped rather than printed, because a cursor move or a\n * clear that arrives as visible junk is worse than one that arrives as\n * nothing: the screen is a snapshot, and the next one repaints it anyway.\n *\n * The named colours become theme tokens rather than the child's own palette,\n * so a run's output sits in the cockpit's colours instead of fighting them.\n * Only 256-colour and truecolour, which name a colour no token can stand in\n * for, are rendered as themselves.\n */\n\n/** One run of text with the attributes in force when it was printed. */\nexport interface AnsiSpan {\n text: string;\n /** Theme class for a named colour, absent when the colour is the default. */\n className?: string;\n /** An exact colour the child asked for, as `rgb(r g b)`; only 256/truecolour set this. */\n color?: string;\n bold?: boolean;\n faint?: boolean;\n italic?: boolean;\n underline?: boolean;\n /** Foreground and background swapped, which a TUI uses for selection and cursors. */\n inverse?: boolean;\n}\n\n// oxlint-disable-next-line no-control-regex -- reading terminal escapes is the point\nconst ANSI_PATTERN = /\\x1b\\[([0-9;:]*)([A-Za-z])|\\x1b\\][^\\x07\\x1b]*(?:\\x07|\\x1b\\\\)|\\x1b[()][A-Za-z0-9]|\\x1b[A-Za-z]/g;\nconst SGR_FINAL = 'm';\nconst RESET_CODE = 0;\nconst DEFAULT_FOREGROUND = 39;\nconst EXTENDED_FOREGROUND = 38;\nconst EXTENDED_BACKGROUND = 48;\nconst TRUECOLOR_SELECTOR = 2;\nconst PALETTE_SELECTOR = 5;\nconst BASE_FOREGROUND_START = 30;\nconst BASE_FOREGROUND_END = 37;\nconst BRIGHT_FOREGROUND_START = 90;\nconst BRIGHT_FOREGROUND_END = 97;\nconst BACKGROUND_START = 40;\nconst BACKGROUND_END = 49;\nconst BRIGHT_BACKGROUND_START = 100;\nconst BRIGHT_BACKGROUND_END = 107;\nconst RGB_CHANNELS = 3;\nconst PALETTE_SIZE = 256;\nconst PALETTE_CUBE_START = 16;\nconst PALETTE_GREY_START = 232;\nconst CUBE_SIDE = 6;\nconst CUBE_STEP = 40;\nconst CUBE_OFFSET = 55;\nconst GREY_STEP = 10;\nconst GREY_OFFSET = 8;\nconst MAX_CHANNEL = 255;\n\nconst BOLD = 1;\nconst FAINT = 2;\nconst ITALIC = 3;\nconst UNDERLINE = 4;\nconst INVERSE = 7;\nconst NOT_BOLD = 22;\nconst NOT_ITALIC = 23;\nconst NOT_UNDERLINE = 24;\nconst NOT_INVERSE = 27;\n\n/**\n * The eight terminal colours as theme tokens, listed as whole class strings so\n * the host's class scanner can see them.\n */\nconst FOREGROUND_CLASS: Readonly<Record<number, string>> = {\n 30: 'text-po-faint',\n 31: 'text-po-red',\n 32: 'text-po-green',\n 33: 'text-po-yellow',\n 34: 'text-po-blue',\n 35: 'text-po-magenta',\n 36: 'text-po-cyan',\n 37: 'text-po-text',\n 90: 'text-po-dim',\n 91: 'text-po-red',\n 92: 'text-po-green',\n 93: 'text-po-orange',\n 94: 'text-po-blue',\n 95: 'text-po-violet',\n 96: 'text-po-cyan',\n 97: 'text-po-hi',\n};\n\ninterface Attributes {\n className?: string;\n color?: string;\n bold: boolean;\n faint: boolean;\n italic: boolean;\n underline: boolean;\n inverse: boolean;\n}\n\nfunction blank(): Attributes {\n return { bold: false, faint: false, italic: false, underline: false, inverse: false };\n}\n\n/** One of the 256 palette entries as an exact colour, since no token stands for it. */\nfunction paletteColor(index: number): string | undefined {\n if (index < 0 || index >= PALETTE_SIZE) return undefined;\n if (index < PALETTE_CUBE_START) return undefined; // The first sixteen are the named ones.\n if (index >= PALETTE_GREY_START) {\n const level = (index - PALETTE_GREY_START) * GREY_STEP + GREY_OFFSET;\n return rgb(level, level, level);\n }\n const offset = index - PALETTE_CUBE_START;\n const channel = (value: number): number => (value === 0 ? 0 : value * CUBE_STEP + CUBE_OFFSET);\n return rgb(\n channel(Math.floor(offset / (CUBE_SIDE * CUBE_SIDE)) % CUBE_SIDE),\n channel(Math.floor(offset / CUBE_SIDE) % CUBE_SIDE),\n channel(offset % CUBE_SIDE),\n );\n}\n\nfunction rgb(red: number, green: number, blue: number): string {\n const clamp = (value: number): number => Math.max(0, Math.min(MAX_CHANNEL, Math.round(value)));\n return `rgb(${clamp(red)} ${clamp(green)} ${clamp(blue)})`;\n}\n\n/** Reads one extended-colour run (`38;5;n` or `38;2;r;g;b`), answering how many codes it ate. */\nfunction extendedColor(codes: readonly number[], index: number): { color?: string; consumed: number } {\n const selector = codes[index + 1];\n if (selector === TRUECOLOR_SELECTOR) {\n const [red, green, blue] = codes.slice(index + 2, index + 2 + RGB_CHANNELS);\n if (red === undefined || green === undefined || blue === undefined) return { consumed: codes.length };\n return { color: rgb(red, green, blue), consumed: 1 + 1 + RGB_CHANNELS };\n }\n if (selector === PALETTE_SELECTOR) {\n const entry = codes[index + 2];\n return { ...(entry === undefined ? {} : { color: paletteColor(entry) }), consumed: 3 };\n }\n return { consumed: 1 };\n}\n\nfunction applySgr(current: Attributes, parameters: string): Attributes {\n // An empty parameter list is a reset, which is what a bare `ESC[m` means.\n const codes = parameters === '' ? [RESET_CODE] : parameters.split(/[;:]/).map((part) => Number(part) || 0);\n let next = { ...current };\n for (let index = 0; index < codes.length; index += 1) {\n const code = codes[index] as number;\n if (code === RESET_CODE) {\n next = blank();\n } else if (code === BOLD) next.bold = true;\n else if (code === FAINT) next.faint = true;\n else if (code === ITALIC) next.italic = true;\n else if (code === UNDERLINE) next.underline = true;\n else if (code === INVERSE) next.inverse = true;\n else if (code === NOT_BOLD) {\n next.bold = false;\n next.faint = false;\n } else if (code === NOT_ITALIC) next.italic = false;\n else if (code === NOT_UNDERLINE) next.underline = false;\n else if (code === NOT_INVERSE) next.inverse = false;\n else if (code === DEFAULT_FOREGROUND) {\n delete next.className;\n delete next.color;\n } else if (code === EXTENDED_FOREGROUND) {\n const { color, consumed } = extendedColor(codes, index);\n delete next.className;\n if (color === undefined) delete next.color;\n else next.color = color;\n index += consumed - 1;\n } else if (code === EXTENDED_BACKGROUND) {\n // Backgrounds are dropped: a child painting its own background over the\n // cockpit's panel is what makes captured output unreadable in a theme.\n index += extendedColor(codes, index).consumed - 1;\n } else if (\n (code >= BASE_FOREGROUND_START && code <= BASE_FOREGROUND_END) ||\n (code >= BRIGHT_FOREGROUND_START && code <= BRIGHT_FOREGROUND_END)\n ) {\n const className = FOREGROUND_CLASS[code];\n delete next.color;\n if (className === undefined) delete next.className;\n else next.className = className;\n }\n // Background and everything else is read and dropped.\n else if (\n (code >= BACKGROUND_START && code <= BACKGROUND_END) ||\n (code >= BRIGHT_BACKGROUND_START && code <= BRIGHT_BACKGROUND_END)\n ) {\n next.inverse = false;\n }\n }\n return next;\n}\n\nfunction spanOf(text: string, attributes: Attributes): AnsiSpan {\n return {\n text,\n ...(attributes.className === undefined ? {} : { className: attributes.className }),\n ...(attributes.color === undefined ? {} : { color: attributes.color }),\n ...(attributes.bold ? { bold: true } : {}),\n ...(attributes.faint ? { faint: true } : {}),\n ...(attributes.italic ? { italic: true } : {}),\n ...(attributes.underline ? { underline: true } : {}),\n ...(attributes.inverse ? { inverse: true } : {}),\n };\n}\n\n/** One line of captured screen as spans, with every unreadable sequence dropped. */\nexport function ansiSpans(line: string): AnsiSpan[] {\n const spans: AnsiSpan[] = [];\n let attributes = blank();\n let cursor = 0;\n ANSI_PATTERN.lastIndex = 0;\n let match = ANSI_PATTERN.exec(line);\n while (match !== null) {\n if (match.index > cursor) spans.push(spanOf(line.slice(cursor, match.index), attributes));\n if (match[2] === SGR_FINAL) attributes = applySgr(attributes, match[1] ?? '');\n cursor = match.index + match[0].length;\n match = ANSI_PATTERN.exec(line);\n }\n if (cursor < line.length) spans.push(spanOf(line.slice(cursor), attributes));\n return spans;\n}\n"],"mappings":"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"}
@@ -4,59 +4,59 @@
4
4
  * pairing with Lezer's tags stays next to the editor that imports them and
5
5
  * this table can be read as a palette.
6
6
  */
7
- export declare const DOOM_SYNTAX_STYLES: {
7
+ export declare const PO_SYNTAX_STYLES: {
8
8
  readonly comment: {
9
- readonly color: 'var(--doom-faint)';
9
+ readonly color: 'var(--po-faint)';
10
10
  readonly fontStyle: 'italic';
11
11
  };
12
12
  readonly keyword: {
13
- readonly color: 'var(--doom-magenta)';
13
+ readonly color: 'var(--po-magenta)';
14
14
  };
15
15
  readonly constant: {
16
- readonly color: 'var(--doom-violet)';
16
+ readonly color: 'var(--po-violet)';
17
17
  };
18
18
  readonly literal: {
19
- readonly color: 'var(--doom-orange)';
19
+ readonly color: 'var(--po-orange)';
20
20
  };
21
21
  readonly string: {
22
- readonly color: 'var(--doom-green)';
22
+ readonly color: 'var(--po-green)';
23
23
  };
24
24
  readonly regexp: {
25
- readonly color: 'var(--doom-teal)';
25
+ readonly color: 'var(--po-teal)';
26
26
  };
27
27
  readonly operator: {
28
- readonly color: 'var(--doom-blue)';
28
+ readonly color: 'var(--po-blue)';
29
29
  };
30
30
  readonly punctuation: {
31
- readonly color: 'var(--doom-dim)';
31
+ readonly color: 'var(--po-dim)';
32
32
  };
33
33
  readonly variable: {
34
- readonly color: 'var(--doom-text)';
34
+ readonly color: 'var(--po-text)';
35
35
  };
36
36
  readonly property: {
37
- readonly color: 'var(--doom-cyan)';
37
+ readonly color: 'var(--po-cyan)';
38
38
  };
39
39
  readonly callable: {
40
- readonly color: 'var(--doom-blue)';
40
+ readonly color: 'var(--po-blue)';
41
41
  };
42
42
  readonly type: {
43
- readonly color: 'var(--doom-yellow)';
43
+ readonly color: 'var(--po-yellow)';
44
44
  };
45
45
  readonly tag: {
46
- readonly color: 'var(--doom-red)';
46
+ readonly color: 'var(--po-red)';
47
47
  };
48
48
  readonly attribute: {
49
- readonly color: 'var(--doom-yellow)';
49
+ readonly color: 'var(--po-yellow)';
50
50
  };
51
51
  readonly meta: {
52
- readonly color: 'var(--doom-faint)';
52
+ readonly color: 'var(--po-faint)';
53
53
  };
54
54
  readonly heading: {
55
- readonly color: 'var(--doom-hi)';
55
+ readonly color: 'var(--po-hi)';
56
56
  readonly fontWeight: 'bold';
57
57
  };
58
58
  readonly link: {
59
- readonly color: 'var(--doom-cyan)';
59
+ readonly color: 'var(--po-cyan)';
60
60
  readonly textDecoration: 'underline';
61
61
  };
62
62
  readonly emphasis: {
@@ -69,7 +69,7 @@ export declare const DOOM_SYNTAX_STYLES: {
69
69
  readonly textDecoration: 'line-through';
70
70
  };
71
71
  readonly invalid: {
72
- readonly color: 'var(--doom-red)';
72
+ readonly color: 'var(--po-red)';
73
73
  };
74
74
  };
75
75
  //#endregion
@@ -1 +1 @@
1
- {"version":3,"file":"editorTheme.d.mts","names":[],"sources":["../../../../../../src/lib/editorTheme.ts"],"mappings":";;;;;;qBA8Ga;WACX;aAAW;aAA4B;;WACvC;aAAW;;WACX;aAAY;;WACZ;aAAW;;WACX;aAAU;;WACV;aAAU;;WACV;aAAY;;WACZ;aAAe;;WACf;aAAY;;WACZ;aAAY;;WACZ;aAAY;;WACZ;aAAQ;;WACR;aAAO;;WACP;aAAa;;WACb;aAAQ;;WACR;aAAW;aAAyB;;WACpC;aAAQ;aAA2B;;WACnC;aAAY;;WACZ;aAAU;;WACV;aAAiB;;WACjB;aAAW"}
1
+ {"version":3,"file":"editorTheme.d.mts","names":[],"sources":["../../../../../../src/lib/editorTheme.ts"],"mappings":";;;;;;qBA8Ga;WACX;aAAW;aAA0B;;WACrC;aAAW;;WACX;aAAY;;WACZ;aAAW;;WACX;aAAU;;WACV;aAAU;;WACV;aAAY;;WACZ;aAAe;;WACf;aAAY;;WACZ;aAAY;;WACZ;aAAY;;WACZ;aAAQ;;WACR;aAAO;;WACP;aAAa;;WACb;aAAQ;;WACR;aAAW;aAAuB;;WAClC;aAAQ;aAAyB;;WACjC;aAAY;;WACZ;aAAU;;WACV;aAAiB;;WACjB;aAAW"}
@@ -1,2 +1,2 @@
1
- const e={"&":{color:`var(--doom-text)`,backgroundColor:`var(--doom-deep)`,fontSize:`12px`,height:`100%`},".cm-scroller":{fontFamily:`var(--doom-font-mono)`,lineHeight:`1.5`},".cm-content":{caretColor:`var(--doom-blue)`,padding:`8px 0`},".cm-cursor, .cm-dropCursor":{borderLeftColor:`var(--doom-blue)`,borderLeftWidth:`2px`},"&.cm-focused .cm-selectionBackground, .cm-selectionBackground, .cm-content ::selection":{backgroundColor:`var(--doom-selected)`},".cm-gutters":{backgroundColor:`var(--doom-deep)`,color:`var(--doom-faint)`,borderRight:`1px solid var(--doom-border-soft)`},".cm-activeLine":{backgroundColor:`var(--doom-panel)`},".cm-activeLineGutter":{backgroundColor:`var(--doom-panel)`,color:`var(--doom-dim)`},".cm-foldPlaceholder":{backgroundColor:`var(--doom-panel)`,border:`1px solid var(--doom-border)`,color:`var(--doom-dim)`},".cm-searchMatch":{backgroundColor:`var(--doom-tint-yellow)`,outline:`1px solid var(--doom-edge-yellow)`},".cm-searchMatch.cm-searchMatch-selected":{backgroundColor:`var(--doom-tint-orange)`},".cm-selectionMatch":{backgroundColor:`var(--doom-tint-blue)`},".cm-closed-tone":{backgroundColor:`var(--doom-tint-green)`,textDecoration:`line-through`,textDecorationColor:`var(--doom-edge-green)`},".cm-matchingBracket, &.cm-focused .cm-matchingBracket":{backgroundColor:`var(--doom-tint-green)`,outline:`1px solid var(--doom-edge-green)`},".cm-nonmatchingBracket, &.cm-focused .cm-nonmatchingBracket":{backgroundColor:`var(--doom-tint-red)`},".cm-panels":{backgroundColor:`var(--doom-panel)`,color:`var(--doom-text)`,fontFamily:`var(--font-sans)`,fontSize:`12px`},".cm-panels.cm-panels-bottom":{borderTop:`1px solid var(--doom-border)`},".cm-panels.cm-panels-top":{borderBottom:`1px solid var(--doom-border)`},".cm-panel input, .cm-panel button, .cm-panel select":{backgroundColor:`var(--doom-deep)`,color:`var(--doom-text)`,border:`1px solid var(--doom-border)`,borderRadius:`2px`,fontSize:`12px`},".cm-panel input":{fontFamily:`var(--doom-font-mono)`},".cm-tooltip":{backgroundColor:`var(--doom-panel)`,border:`1px solid var(--doom-border)`,color:`var(--doom-text)`}},t={comment:{color:`var(--doom-faint)`,fontStyle:`italic`},keyword:{color:`var(--doom-magenta)`},constant:{color:`var(--doom-violet)`},literal:{color:`var(--doom-orange)`},string:{color:`var(--doom-green)`},regexp:{color:`var(--doom-teal)`},operator:{color:`var(--doom-blue)`},punctuation:{color:`var(--doom-dim)`},variable:{color:`var(--doom-text)`},property:{color:`var(--doom-cyan)`},callable:{color:`var(--doom-blue)`},type:{color:`var(--doom-yellow)`},tag:{color:`var(--doom-red)`},attribute:{color:`var(--doom-yellow)`},meta:{color:`var(--doom-faint)`},heading:{color:`var(--doom-hi)`,fontWeight:`bold`},link:{color:`var(--doom-cyan)`,textDecoration:`underline`},emphasis:{fontStyle:`italic`},strong:{fontWeight:`bold`},strikethrough:{textDecoration:`line-through`},invalid:{color:`var(--doom-red)`}};export{e as DOOM_EDITOR_STYLES,t as DOOM_SYNTAX_STYLES};
1
+ const e={"&":{color:`var(--po-text)`,backgroundColor:`var(--po-deep)`,fontSize:`12px`,height:`100%`},".cm-scroller":{fontFamily:`var(--po-font-mono)`,lineHeight:`1.5`},".cm-content":{caretColor:`var(--po-blue)`,padding:`8px 0`},".cm-cursor, .cm-dropCursor":{borderLeftColor:`var(--po-blue)`,borderLeftWidth:`2px`},"&.cm-focused .cm-selectionBackground, .cm-selectionBackground, .cm-content ::selection":{backgroundColor:`var(--po-selected)`},".cm-gutters":{backgroundColor:`var(--po-deep)`,color:`var(--po-faint)`,borderRight:`1px solid var(--po-border-soft)`},".cm-activeLine":{backgroundColor:`var(--po-panel)`},".cm-activeLineGutter":{backgroundColor:`var(--po-panel)`,color:`var(--po-dim)`},".cm-foldPlaceholder":{backgroundColor:`var(--po-panel)`,border:`1px solid var(--po-border)`,color:`var(--po-dim)`},".cm-searchMatch":{backgroundColor:`var(--po-tint-yellow)`,outline:`1px solid var(--po-edge-yellow)`},".cm-searchMatch.cm-searchMatch-selected":{backgroundColor:`var(--po-tint-orange)`},".cm-selectionMatch":{backgroundColor:`var(--po-tint-blue)`},".cm-closed-tone":{backgroundColor:`var(--po-tint-green)`,textDecoration:`line-through`,textDecorationColor:`var(--po-edge-green)`},".cm-matchingBracket, &.cm-focused .cm-matchingBracket":{backgroundColor:`var(--po-tint-green)`,outline:`1px solid var(--po-edge-green)`},".cm-nonmatchingBracket, &.cm-focused .cm-nonmatchingBracket":{backgroundColor:`var(--po-tint-red)`},".cm-panels":{backgroundColor:`var(--po-panel)`,color:`var(--po-text)`,fontFamily:`var(--font-sans)`,fontSize:`12px`},".cm-panels.cm-panels-bottom":{borderTop:`1px solid var(--po-border)`},".cm-panels.cm-panels-top":{borderBottom:`1px solid var(--po-border)`},".cm-panel input, .cm-panel button, .cm-panel select":{backgroundColor:`var(--po-deep)`,color:`var(--po-text)`,border:`1px solid var(--po-border)`,borderRadius:`2px`,fontSize:`12px`},".cm-panel input":{fontFamily:`var(--po-font-mono)`},".cm-tooltip":{backgroundColor:`var(--po-panel)`,border:`1px solid var(--po-border)`,color:`var(--po-text)`}},t={comment:{color:`var(--po-faint)`,fontStyle:`italic`},keyword:{color:`var(--po-magenta)`},constant:{color:`var(--po-violet)`},literal:{color:`var(--po-orange)`},string:{color:`var(--po-green)`},regexp:{color:`var(--po-teal)`},operator:{color:`var(--po-blue)`},punctuation:{color:`var(--po-dim)`},variable:{color:`var(--po-text)`},property:{color:`var(--po-cyan)`},callable:{color:`var(--po-blue)`},type:{color:`var(--po-yellow)`},tag:{color:`var(--po-red)`},attribute:{color:`var(--po-yellow)`},meta:{color:`var(--po-faint)`},heading:{color:`var(--po-hi)`,fontWeight:`bold`},link:{color:`var(--po-cyan)`,textDecoration:`underline`},emphasis:{fontStyle:`italic`},strong:{fontWeight:`bold`},strikethrough:{textDecoration:`line-through`},invalid:{color:`var(--po-red)`}};export{e as PO_EDITOR_STYLES,t as PO_SYNTAX_STYLES};
2
2
  //# sourceMappingURL=editorTheme.mjs.map