@mastra/playground-ui 65.0.0-alpha.5 → 65.0.0-alpha.7

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 (419) hide show
  1. package/components.css +49 -6
  2. package/dist/{code-DJReJPSX.cjs → code-CUOlhM4J.cjs} +9 -12
  3. package/dist/code-CUOlhM4J.cjs.map +1 -0
  4. package/dist/{code-DLuATvYu.js → code-CsHrVTpJ.js} +11 -13
  5. package/dist/code-CsHrVTpJ.js.map +1 -0
  6. package/dist/{code-block-D6A1DMv-.js → code-block-BB-5HSl3.js} +2 -2
  7. package/dist/{code-block-D6A1DMv-.js.map → code-block-BB-5HSl3.js.map} +1 -1
  8. package/dist/{code-block-C79fiykv.cjs → code-block-CAV4Flrx.cjs} +2 -2
  9. package/dist/{code-block-C79fiykv.cjs.map → code-block-CAV4Flrx.cjs.map} +1 -1
  10. package/dist/{code-editor-Bd-Cldem.cjs → code-editor-CbyCb7CW.cjs} +5 -123
  11. package/dist/code-editor-CbyCb7CW.cjs.map +1 -0
  12. package/dist/{code-editor-8Fpinga4.js → code-editor-DOv4jc-0.js} +6 -124
  13. package/dist/code-editor-DOv4jc-0.js.map +1 -0
  14. package/dist/components/BillingIllustration.cjs.js +223 -0
  15. package/dist/components/BillingIllustration.cjs.js.map +1 -0
  16. package/dist/components/BillingIllustration.d.ts +2 -0
  17. package/dist/components/BillingIllustration.es.js +218 -0
  18. package/dist/components/BillingIllustration.es.js.map +1 -0
  19. package/dist/components/Code.cjs.js +1 -2
  20. package/dist/components/Code.cjs.js.map +1 -1
  21. package/dist/components/Code.es.js +1 -1
  22. package/dist/components/CodeBlock.cjs.js +1 -1
  23. package/dist/components/CodeBlock.es.js +1 -1
  24. package/dist/components/CodeEditor.cjs.js +3 -2
  25. package/dist/components/CodeEditor.cjs.js.map +1 -1
  26. package/dist/components/CodeEditor.es.js +2 -2
  27. package/dist/components/DataCodeSection.cjs.js +1 -1
  28. package/dist/components/DataCodeSection.es.js +1 -1
  29. package/dist/components/DataDetailsPanel.cjs.js +1 -1
  30. package/dist/components/DataDetailsPanel.es.js +1 -1
  31. package/dist/components/DataList.cjs.js +17 -15
  32. package/dist/components/DataList.cjs.js.map +1 -1
  33. package/dist/components/DataList.es.js +5 -4
  34. package/dist/components/DataList.es.js.map +1 -1
  35. package/dist/components/DataPanel.cjs.js +1 -1
  36. package/dist/components/DataPanel.es.js +1 -1
  37. package/dist/components/EnvironmentVariablesEditor.cjs.js +1 -1
  38. package/dist/components/EnvironmentVariablesEditor.es.js +1 -1
  39. package/dist/components/LogsDataList.cjs.js +2 -5
  40. package/dist/components/LogsDataList.cjs.js.map +1 -1
  41. package/dist/components/LogsDataList.es.js +2 -5
  42. package/dist/components/LogsDataList.es.js.map +1 -1
  43. package/dist/components/MarkdownRenderer.cjs.js +1 -1
  44. package/dist/components/MarkdownRenderer.es.js +1 -1
  45. package/dist/components/SideDialog.cjs.js +1 -1
  46. package/dist/components/SideDialog.es.js +1 -1
  47. package/dist/components/Workflow.cjs.js +4 -4
  48. package/dist/components/Workflow.es.js +4 -4
  49. package/dist/components/ai/activity.cjs.js +1 -1
  50. package/dist/components/ai/activity.es.js +1 -1
  51. package/dist/components/ai/plan.cjs.js +1 -1
  52. package/dist/components/ai/plan.es.js +1 -1
  53. package/dist/components/ai/tool-approval.cjs.js +1 -1
  54. package/dist/components/ai/tool-approval.es.js +1 -1
  55. package/dist/components/ai/tool-call.cjs.js +1 -1
  56. package/dist/components/ai/tool-call.es.js +1 -1
  57. package/dist/{data-code-section-Cjs-piiY.js → data-code-section-BWzfg-1n.js} +2 -2
  58. package/dist/{data-code-section-Cjs-piiY.js.map → data-code-section-BWzfg-1n.js.map} +1 -1
  59. package/dist/{data-code-section-BJa6NDgN.cjs → data-code-section-BjyHoHEB.cjs} +2 -2
  60. package/dist/{data-code-section-BJa6NDgN.cjs.map → data-code-section-BjyHoHEB.cjs.map} +1 -1
  61. package/dist/data-list-CGD9hzcp.cjs +142 -0
  62. package/dist/data-list-CGD9hzcp.cjs.map +1 -0
  63. package/dist/data-list-aFlt9Du-.js +138 -0
  64. package/dist/data-list-aFlt9Du-.js.map +1 -0
  65. package/dist/{data-list-skeleton-CXUB-u3p.js → data-list-skeleton-bNfITSHs.js} +2 -2
  66. package/dist/{data-list-skeleton-CXUB-u3p.js.map → data-list-skeleton-bNfITSHs.js.map} +1 -1
  67. package/dist/{data-list-skeleton-DY0F40WQ.cjs → data-list-skeleton-sdcaabdX.cjs} +6 -6
  68. package/dist/{data-list-skeleton-DY0F40WQ.cjs.map → data-list-skeleton-sdcaabdX.cjs.map} +1 -1
  69. package/dist/data-list-spacer-BFAQT_lQ.js +209 -0
  70. package/dist/data-list-spacer-BFAQT_lQ.js.map +1 -0
  71. package/dist/data-list-spacer-Dpoj55mv.cjs +218 -0
  72. package/dist/data-list-spacer-Dpoj55mv.cjs.map +1 -0
  73. package/dist/{data-list-DlXU1PLQ.cjs → data-list-top-DJh08vFA.cjs} +13 -339
  74. package/dist/data-list-top-DJh08vFA.cjs.map +1 -0
  75. package/dist/{data-list-Tor18oy5.js → data-list-top-T-mtdIUp.js} +5 -332
  76. package/dist/data-list-top-T-mtdIUp.js.map +1 -0
  77. package/dist/{data-panel-DGNV14pm.cjs → data-panel-CGRPVnEe.cjs} +2 -2
  78. package/dist/{data-panel-DGNV14pm.cjs.map → data-panel-CGRPVnEe.cjs.map} +1 -1
  79. package/dist/{data-panel-DjtnX70w.js → data-panel-CUqcB4Vn.js} +2 -2
  80. package/dist/{data-panel-DjtnX70w.js.map → data-panel-CUqcB4Vn.js.map} +1 -1
  81. package/dist/domains/chat/components/network-choice-metadata-dialog.cjs.js +2 -1
  82. package/dist/domains/chat/components/network-choice-metadata-dialog.cjs.js.map +1 -1
  83. package/dist/domains/chat/components/network-choice-metadata-dialog.es.js +2 -1
  84. package/dist/domains/chat/components/network-choice-metadata-dialog.es.js.map +1 -1
  85. package/dist/domains/chat/messages/dataset-save-action.cjs.js +2 -1
  86. package/dist/domains/chat/messages/dataset-save-action.cjs.js.map +1 -1
  87. package/dist/domains/chat/messages/dataset-save-action.es.js +2 -1
  88. package/dist/domains/chat/messages/dataset-save-action.es.js.map +1 -1
  89. package/dist/domains/chat/messages/message-row.cjs.js +2 -1
  90. package/dist/domains/chat/messages/message-row.cjs.js.map +1 -1
  91. package/dist/domains/chat/messages/message-row.es.js +2 -1
  92. package/dist/domains/chat/messages/message-row.es.js.map +1 -1
  93. package/dist/domains/chat/messages/renderers/message-text.cjs.js +1 -1
  94. package/dist/domains/chat/messages/renderers/message-text.es.js +1 -1
  95. package/dist/domains/chat/messages/renderers/reasoning-part-renderer.cjs.js +1 -1
  96. package/dist/domains/chat/messages/renderers/reasoning-part-renderer.es.js +1 -1
  97. package/dist/domains/chat/messages/skill-message.cjs.js +1 -1
  98. package/dist/domains/chat/messages/skill-message.es.js +1 -1
  99. package/dist/domains/chat/messages/tripwire-notice.cjs.js +1 -1
  100. package/dist/domains/chat/messages/tripwire-notice.es.js +1 -1
  101. package/dist/domains/chat/tools/badges/agent-badge-wrapper.cjs.js +1 -1
  102. package/dist/domains/chat/tools/badges/agent-badge-wrapper.es.js +1 -1
  103. package/dist/domains/chat/tools/badges/agent-badge.cjs.js +3 -2
  104. package/dist/domains/chat/tools/badges/agent-badge.cjs.js.map +1 -1
  105. package/dist/domains/chat/tools/badges/agent-badge.es.js +3 -2
  106. package/dist/domains/chat/tools/badges/agent-badge.es.js.map +1 -1
  107. package/dist/domains/chat/tools/badges/background-task-metadata-dialog.cjs.js +2 -1
  108. package/dist/domains/chat/tools/badges/background-task-metadata-dialog.cjs.js.map +1 -1
  109. package/dist/domains/chat/tools/badges/background-task-metadata-dialog.es.js +2 -1
  110. package/dist/domains/chat/tools/badges/background-task-metadata-dialog.es.js.map +1 -1
  111. package/dist/domains/chat/tools/badges/code-mode-badge.cjs.js +4 -3
  112. package/dist/domains/chat/tools/badges/code-mode-badge.cjs.js.map +1 -1
  113. package/dist/domains/chat/tools/badges/code-mode-badge.es.js +4 -3
  114. package/dist/domains/chat/tools/badges/code-mode-badge.es.js.map +1 -1
  115. package/dist/domains/chat/tools/badges/file-tree-badge.cjs.js +1 -1
  116. package/dist/domains/chat/tools/badges/file-tree-badge.es.js +1 -1
  117. package/dist/domains/chat/tools/badges/observation-marker-details.cjs.js +2 -2
  118. package/dist/domains/chat/tools/badges/observation-marker-details.es.js +2 -2
  119. package/dist/domains/chat/tools/badges/observation-renderer.cjs.js +1 -1
  120. package/dist/domains/chat/tools/badges/observation-renderer.es.js +1 -1
  121. package/dist/domains/chat/tools/badges/tool-approval-badge.cjs.js +1 -1
  122. package/dist/domains/chat/tools/badges/tool-approval-badge.es.js +1 -1
  123. package/dist/domains/chat/tools/badges/tool-badge.cjs.js +3 -2
  124. package/dist/domains/chat/tools/badges/tool-badge.cjs.js.map +1 -1
  125. package/dist/domains/chat/tools/badges/tool-badge.es.js +3 -2
  126. package/dist/domains/chat/tools/badges/tool-badge.es.js.map +1 -1
  127. package/dist/domains/chat/tools/badges/workflow-badge.cjs.js +3 -4
  128. package/dist/domains/chat/tools/badges/workflow-badge.cjs.js.map +1 -1
  129. package/dist/domains/chat/tools/badges/workflow-badge.es.js +3 -4
  130. package/dist/domains/chat/tools/badges/workflow-badge.es.js.map +1 -1
  131. package/dist/domains/chat/tools/submit-plan-tool.cjs.js +1 -1
  132. package/dist/domains/chat/tools/submit-plan-tool.es.js +1 -1
  133. package/dist/domains/chat/tools/tool-card.cjs.js +1 -1
  134. package/dist/domains/chat/tools/tool-card.es.js +1 -1
  135. package/dist/domains/datasets/components/save-as-dataset-item-dialog.cjs.js +3 -2
  136. package/dist/domains/datasets/components/save-as-dataset-item-dialog.cjs.js.map +1 -1
  137. package/dist/domains/datasets/components/save-as-dataset-item-dialog.es.js +3 -2
  138. package/dist/domains/datasets/components/save-as-dataset-item-dialog.es.js.map +1 -1
  139. package/dist/domains/logs/components/log-data-panel.cjs.js +1 -1
  140. package/dist/domains/logs/components/log-data-panel.es.js +1 -1
  141. package/dist/domains/logs/components/logs-list-view.cjs.js +2 -3
  142. package/dist/domains/logs/components/logs-list-view.cjs.js.map +1 -1
  143. package/dist/domains/logs/components/logs-list-view.es.js +2 -3
  144. package/dist/domains/logs/components/logs-list-view.es.js.map +1 -1
  145. package/dist/domains/logs/log-filters.cjs.js +4 -2
  146. package/dist/domains/logs/log-filters.cjs.js.map +1 -1
  147. package/dist/domains/logs/log-filters.es.js +4 -2
  148. package/dist/domains/logs/log-filters.es.js.map +1 -1
  149. package/dist/domains/metrics/drilldown.cjs.js +1 -1
  150. package/dist/domains/metrics/drilldown.es.js +1 -1
  151. package/dist/domains/metrics/metrics-filters.cjs.js +3 -2
  152. package/dist/domains/metrics/metrics-filters.cjs.js.map +1 -1
  153. package/dist/domains/metrics/metrics-filters.es.js +3 -2
  154. package/dist/domains/metrics/metrics-filters.es.js.map +1 -1
  155. package/dist/domains/observability/components/add-trace-mocks-to-item-dialog.cjs.js +3 -2
  156. package/dist/domains/observability/components/add-trace-mocks-to-item-dialog.cjs.js.map +1 -1
  157. package/dist/domains/observability/components/add-trace-mocks-to-item-dialog.es.js +3 -2
  158. package/dist/domains/observability/components/add-trace-mocks-to-item-dialog.es.js.map +1 -1
  159. package/dist/domains/scores/components/score-data-panel.cjs.js +1 -1
  160. package/dist/domains/scores/components/score-data-panel.es.js +1 -1
  161. package/dist/domains/scores/components/trace-scores-tab.cjs.js +1 -2
  162. package/dist/domains/scores/components/trace-scores-tab.cjs.js.map +1 -1
  163. package/dist/domains/scores/components/trace-scores-tab.es.js +1 -2
  164. package/dist/domains/scores/components/trace-scores-tab.es.js.map +1 -1
  165. package/dist/domains/traces/components/span-data-panel-view.cjs.js +3 -3
  166. package/dist/domains/traces/components/span-data-panel-view.cjs.js.map +1 -1
  167. package/dist/domains/traces/components/span-data-panel-view.es.js +3 -3
  168. package/dist/domains/traces/components/span-data-panel-view.es.js.map +1 -1
  169. package/dist/domains/traces/components/span-details-view.cjs.js +2 -2
  170. package/dist/domains/traces/components/span-details-view.cjs.js.map +1 -1
  171. package/dist/domains/traces/components/span-details-view.es.js +2 -2
  172. package/dist/domains/traces/components/span-details-view.es.js.map +1 -1
  173. package/dist/domains/traces/components/span-payload/span-error-renderer.cjs.js +1 -1
  174. package/dist/domains/traces/components/span-payload/span-error-renderer.es.js +1 -1
  175. package/dist/domains/traces/components/span-payload/span-input-renderers.cjs.js +2 -3
  176. package/dist/domains/traces/components/span-payload/span-input-renderers.cjs.js.map +1 -1
  177. package/dist/domains/traces/components/span-payload/span-input-renderers.es.js +2 -3
  178. package/dist/domains/traces/components/span-payload/span-input-renderers.es.js.map +1 -1
  179. package/dist/domains/traces/components/span-payload/span-output-renderers.cjs.js +3 -4
  180. package/dist/domains/traces/components/span-payload/span-output-renderers.cjs.js.map +1 -1
  181. package/dist/domains/traces/components/span-payload/span-output-renderers.es.js +3 -4
  182. package/dist/domains/traces/components/span-payload/span-output-renderers.es.js.map +1 -1
  183. package/dist/domains/traces/components/span-payload/span-payload-json.cjs.js +4 -4
  184. package/dist/domains/traces/components/span-payload/span-payload-json.cjs.js.map +1 -1
  185. package/dist/domains/traces/components/span-payload/span-payload-json.es.js +4 -4
  186. package/dist/domains/traces/components/span-payload/span-payload-json.es.js.map +1 -1
  187. package/dist/domains/traces/components/span-payload/span-payload-messages.cjs.js +2 -2
  188. package/dist/domains/traces/components/span-payload/span-payload-messages.es.js +2 -2
  189. package/dist/domains/traces/components/span-payload/span-payload-primitives.cjs.js +2 -2
  190. package/dist/domains/traces/components/span-payload/span-payload-primitives.es.js +2 -2
  191. package/dist/domains/traces/components/span-payload/span-payload-processor.cjs.js +1 -1
  192. package/dist/domains/traces/components/span-payload/span-payload-processor.es.js +1 -1
  193. package/dist/domains/traces/components/span-payload/span-payload-section.cjs.js +7 -11
  194. package/dist/domains/traces/components/span-payload/span-payload-section.cjs.js.map +1 -1
  195. package/dist/domains/traces/components/span-payload/span-payload-section.es.js +8 -12
  196. package/dist/domains/traces/components/span-payload/span-payload-section.es.js.map +1 -1
  197. package/dist/domains/traces/components/span-payload/span-payload-tool.cjs.js +1 -1
  198. package/dist/domains/traces/components/span-payload/span-payload-tool.es.js +1 -1
  199. package/dist/domains/traces/components/span-payload/span-processor-attributes.cjs.js +3 -4
  200. package/dist/domains/traces/components/span-payload/span-processor-attributes.cjs.js.map +1 -1
  201. package/dist/domains/traces/components/span-payload/span-processor-attributes.es.js +4 -5
  202. package/dist/domains/traces/components/span-payload/span-processor-attributes.es.js.map +1 -1
  203. package/dist/domains/traces/components/span-summary-description.cjs.js +1 -1
  204. package/dist/domains/traces/components/span-summary-description.es.js +1 -1
  205. package/dist/domains/traces/components/thread-trace/thread-trace-details.cjs.js +1 -1
  206. package/dist/domains/traces/components/thread-trace/thread-trace-details.es.js +1 -1
  207. package/dist/domains/traces/components/thread-view-by-trace.cjs.js +1 -1
  208. package/dist/domains/traces/components/thread-view-by-trace.es.js +1 -1
  209. package/dist/domains/traces/components/trace-data-panel-view.cjs.js +4 -4
  210. package/dist/domains/traces/components/trace-data-panel-view.cjs.js.map +1 -1
  211. package/dist/domains/traces/components/trace-data-panel-view.es.js +4 -4
  212. package/dist/domains/traces/components/trace-data-panel-view.es.js.map +1 -1
  213. package/dist/domains/traces/components/trace-data-panel.cjs.js +1 -3
  214. package/dist/domains/traces/components/trace-data-panel.cjs.js.map +1 -1
  215. package/dist/domains/traces/components/trace-data-panel.es.js +1 -3
  216. package/dist/domains/traces/components/trace-data-panel.es.js.map +1 -1
  217. package/dist/domains/traces/components/trace-error-cell.cjs.js +1 -3
  218. package/dist/domains/traces/components/trace-error-cell.cjs.js.map +1 -1
  219. package/dist/domains/traces/components/trace-error-cell.es.js +1 -3
  220. package/dist/domains/traces/components/trace-error-cell.es.js.map +1 -1
  221. package/dist/domains/traces/components/trace-id-button.cjs.js +1 -1
  222. package/dist/domains/traces/components/trace-id-button.es.js +1 -1
  223. package/dist/domains/traces/components/trace-summary-description.cjs.js +1 -1
  224. package/dist/domains/traces/components/trace-summary-description.es.js +1 -1
  225. package/dist/domains/traces/components/trace-thread-panel.cjs.js +1 -1
  226. package/dist/domains/traces/components/trace-thread-panel.es.js +1 -1
  227. package/dist/domains/traces/components/trace-time-range-chip.cjs.js +1 -1
  228. package/dist/domains/traces/components/trace-time-range-chip.es.js +1 -1
  229. package/dist/domains/traces/components/traces-list-view.cjs.js +5 -4
  230. package/dist/domains/traces/components/traces-list-view.cjs.js.map +1 -1
  231. package/dist/domains/traces/components/traces-list-view.es.js +4 -3
  232. package/dist/domains/traces/components/traces-list-view.es.js.map +1 -1
  233. package/dist/domains/traces/components/traces-page-skeleton.cjs.js +1 -4
  234. package/dist/domains/traces/components/traces-page-skeleton.cjs.js.map +1 -1
  235. package/dist/domains/traces/components/traces-page-skeleton.es.js +1 -4
  236. package/dist/domains/traces/components/traces-page-skeleton.es.js.map +1 -1
  237. package/dist/domains/traces/hooks/use-trace-filter-persistence.cjs.js +1 -1
  238. package/dist/domains/traces/hooks/use-trace-filter-persistence.es.js +1 -1
  239. package/dist/domains/traces/hooks/use-trace-url-state.cjs.js +1 -1
  240. package/dist/domains/traces/hooks/use-trace-url-state.es.js +1 -1
  241. package/dist/domains/traces/trace-filters.cjs.js +1 -1
  242. package/dist/domains/traces/trace-filters.es.js +1 -1
  243. package/dist/domains/traces/trace-query-filters.cjs.js +1 -1
  244. package/dist/domains/traces/trace-query-filters.es.js +1 -1
  245. package/dist/domains/traces.cjs.js +1 -1
  246. package/dist/domains/traces.es.js +1 -1
  247. package/dist/domains/workflows/components/workflow-step-detail.cjs.js +3 -3
  248. package/dist/domains/workflows/components/workflow-step-detail.es.js +3 -3
  249. package/dist/domains/workflows/components/workflows-list/workflows-list.cjs.js +2 -2
  250. package/dist/domains/workflows/components/workflows-list/workflows-list.es.js +2 -2
  251. package/dist/domains/workflows/workflow/data/workflow-data-button.cjs.js +1 -1
  252. package/dist/domains/workflows/workflow/data/workflow-data-button.es.js +1 -1
  253. package/dist/domains/workflows/workflow/data/workflow-data-inspector.cjs.js +2 -1
  254. package/dist/domains/workflows/workflow/data/workflow-data-inspector.cjs.js.map +1 -1
  255. package/dist/domains/workflows/workflow/data/workflow-data-inspector.es.js +2 -1
  256. package/dist/domains/workflows/workflow/data/workflow-data-inspector.es.js.map +1 -1
  257. package/dist/domains/workflows/workflow/input/workflow-json-input.cjs.js +2 -1
  258. package/dist/domains/workflows/workflow/input/workflow-json-input.cjs.js.map +1 -1
  259. package/dist/domains/workflows/workflow/input/workflow-json-input.es.js +2 -1
  260. package/dist/domains/workflows/workflow/input/workflow-json-input.es.js.map +1 -1
  261. package/dist/domains/workflows/workflow/use-workflow-graph-runtime.cjs.js +2 -2
  262. package/dist/domains/workflows/workflow/use-workflow-graph-runtime.es.js +2 -2
  263. package/dist/domains/workflows/workflow/workflow-body-graph.cjs.js +1 -1
  264. package/dist/domains/workflows/workflow/workflow-body-graph.es.js +1 -1
  265. package/dist/domains/workflows/workflow/workflow-data-edge.cjs.js +1 -1
  266. package/dist/domains/workflows/workflow/workflow-data-edge.es.js +1 -1
  267. package/dist/domains/workflows/workflow/workflow-graph-boundary.cjs.js +1 -1
  268. package/dist/domains/workflows/workflow/workflow-graph-boundary.es.js +1 -1
  269. package/dist/domains/workflows/workflow/workflow-graph-inner.cjs.js +2 -2
  270. package/dist/domains/workflows/workflow/workflow-graph-inner.es.js +2 -2
  271. package/dist/domains/workflows/workflow/workflow-graph-node.cjs.js +2 -2
  272. package/dist/domains/workflows/workflow/workflow-graph-node.es.js +2 -2
  273. package/dist/domains/workflows/workflow/workflow-input-data.cjs.js +1 -0
  274. package/dist/domains/workflows/workflow/workflow-input-data.cjs.js.map +1 -1
  275. package/dist/domains/workflows/workflow/workflow-input-data.es.js +1 -0
  276. package/dist/domains/workflows/workflow/workflow-input-data.es.js.map +1 -1
  277. package/dist/domains/workflows/workflow/workflow-map-config-dialog.cjs.js +1 -1
  278. package/dist/domains/workflows/workflow/workflow-map-config-dialog.es.js +1 -1
  279. package/dist/domains/workflows/workflow/workflow-nested-graph.cjs.js +2 -2
  280. package/dist/domains/workflows/workflow/workflow-nested-graph.es.js +2 -2
  281. package/dist/domains/workflows/workflow/workflow-run-data.cjs.js +2 -1
  282. package/dist/domains/workflows/workflow/workflow-run-data.cjs.js.map +1 -1
  283. package/dist/domains/workflows/workflow/workflow-run-data.es.js +2 -1
  284. package/dist/domains/workflows/workflow/workflow-run-data.es.js.map +1 -1
  285. package/dist/domains/workflows/workflow/workflow-status.cjs.js +2 -1
  286. package/dist/domains/workflows/workflow/workflow-status.cjs.js.map +1 -1
  287. package/dist/domains/workflows/workflow/workflow-status.es.js +2 -1
  288. package/dist/domains/workflows/workflow/workflow-status.es.js.map +1 -1
  289. package/dist/domains/workflows/workflow/workflow-step-action-bar.cjs.js +1 -1
  290. package/dist/domains/workflows/workflow/workflow-step-action-bar.es.js +1 -1
  291. package/dist/domains/workflows/workflow/workflow-suspended-steps.cjs.js +2 -1
  292. package/dist/domains/workflows/workflow/workflow-suspended-steps.cjs.js.map +1 -1
  293. package/dist/domains/workflows/workflow/workflow-suspended-steps.es.js +2 -1
  294. package/dist/domains/workflows/workflow/workflow-suspended-steps.es.js.map +1 -1
  295. package/dist/domains/workflows/workflow/workflow-time-travel-form.cjs.js +2 -1
  296. package/dist/domains/workflows/workflow/workflow-time-travel-form.cjs.js.map +1 -1
  297. package/dist/domains/workflows/workflow/workflow-time-travel-form.es.js +2 -1
  298. package/dist/domains/workflows/workflow/workflow-time-travel-form.es.js.map +1 -1
  299. package/dist/domains/workspace/components/workspace-active-file.cjs.js +2 -2
  300. package/dist/domains/workspace/components/workspace-active-file.es.js +2 -2
  301. package/dist/domains/workspace/components/workspace-add-skill-dialog.cjs.js +1 -1
  302. package/dist/domains/workspace/components/workspace-add-skill-dialog.es.js +1 -1
  303. package/dist/domains/workspace/components/workspace-markdown-preview.cjs.js +2 -2
  304. package/dist/domains/workspace/components/workspace-markdown-preview.es.js +2 -2
  305. package/dist/ee/signals/components/entity-index-list.cjs.js +1 -3
  306. package/dist/ee/signals/components/entity-index-list.cjs.js.map +1 -1
  307. package/dist/ee/signals/components/entity-index-list.es.js +1 -3
  308. package/dist/ee/signals/components/entity-index-list.es.js.map +1 -1
  309. package/dist/ee/signals/components/trace-intelligence-entity-index.cjs.js +1 -3
  310. package/dist/ee/signals/components/trace-intelligence-entity-index.cjs.js.map +1 -1
  311. package/dist/ee/signals/components/trace-intelligence-entity-index.es.js +1 -3
  312. package/dist/ee/signals/components/trace-intelligence-entity-index.es.js.map +1 -1
  313. package/dist/ee/topics/components/topic-trace-summary-list.cjs.js +1 -1
  314. package/dist/ee/topics/components/topic-trace-summary-list.es.js +1 -1
  315. package/dist/highlight-CXDme3FZ.js +124 -0
  316. package/dist/highlight-CXDme3FZ.js.map +1 -0
  317. package/dist/highlight-DfnRU-Am.cjs +128 -0
  318. package/dist/highlight-DfnRU-Am.cjs.map +1 -0
  319. package/dist/layout/tabbed-container.cjs.js +1 -1
  320. package/dist/layout/tabbed-container.es.js +1 -1
  321. package/dist/{logs-data-list-DEZuSjqt.cjs → logs-data-list-DCj8Pj77.cjs} +22 -21
  322. package/dist/{logs-data-list-DEZuSjqt.cjs.map → logs-data-list-DCj8Pj77.cjs.map} +1 -1
  323. package/dist/{logs-data-list-CGerYgSd.js → logs-data-list-Db5dBRmc.js} +3 -2
  324. package/dist/{logs-data-list-CGerYgSd.js.map → logs-data-list-Db5dBRmc.js.map} +1 -1
  325. package/dist/{markdown-renderer-BcpwvSl9.cjs → markdown-renderer-CQ_pSSO7.cjs} +2 -2
  326. package/dist/{markdown-renderer-BcpwvSl9.cjs.map → markdown-renderer-CQ_pSSO7.cjs.map} +1 -1
  327. package/dist/{markdown-renderer-CHLpv5n5.js → markdown-renderer-DEoJ5aBR.js} +2 -2
  328. package/dist/{markdown-renderer-CHLpv5n5.js.map → markdown-renderer-DEoJ5aBR.js.map} +1 -1
  329. package/dist/{plan-TtrepVnQ.js → plan-B6td0b8h.js} +2 -2
  330. package/dist/{plan-TtrepVnQ.js.map → plan-B6td0b8h.js.map} +1 -1
  331. package/dist/{plan-Cm3yHvs3.cjs → plan-TYss51JK.cjs} +2 -2
  332. package/dist/{plan-Cm3yHvs3.cjs.map → plan-TYss51JK.cjs.map} +1 -1
  333. package/dist/{reasoning-activity-C-sJt2A9.js → reasoning-activity-Dz2hk9pU.js} +2 -2
  334. package/dist/{reasoning-activity-C-sJt2A9.js.map → reasoning-activity-Dz2hk9pU.js.map} +1 -1
  335. package/dist/{reasoning-activity-DpYFjxuL.cjs → reasoning-activity-I5-HcGou.cjs} +2 -2
  336. package/dist/{reasoning-activity-DpYFjxuL.cjs.map → reasoning-activity-I5-HcGou.cjs.map} +1 -1
  337. package/dist/{side-dialog-SJCWBnbw.cjs → side-dialog-C-XvsAm_.cjs} +4 -67
  338. package/dist/side-dialog-C-XvsAm_.cjs.map +1 -0
  339. package/dist/{side-dialog-DSvj8H6x.js → side-dialog-cUpWIkKq.js} +3 -66
  340. package/dist/side-dialog-cUpWIkKq.js.map +1 -0
  341. package/dist/{span-payload-primitives-D_N9LeLk.js → span-payload-primitives-CaT3DT8h.js} +2 -2
  342. package/dist/{span-payload-primitives-D_N9LeLk.js.map → span-payload-primitives-CaT3DT8h.js.map} +1 -1
  343. package/dist/{span-payload-primitives-C0KYtmtV.cjs → span-payload-primitives-n5uf4hOk.cjs} +2 -2
  344. package/dist/{span-payload-primitives-C0KYtmtV.cjs.map → span-payload-primitives-n5uf4hOk.cjs.map} +1 -1
  345. package/dist/src/domains/logs/log-filters.d.ts +4 -0
  346. package/dist/src/domains/memory/components/flame-graph-data.d.ts +1 -1
  347. package/dist/src/domains/metrics/metrics-filters.d.ts +3 -0
  348. package/dist/src/domains/traces/components/span-payload/span-payload-json.d.ts +3 -1
  349. package/dist/src/domains/traces/components/span-payload/span-payload-section.d.ts +8 -2
  350. package/dist/src/domains/traces/trace-filters.d.ts +3 -0
  351. package/dist/src/ds/components/BillingIllustration/art/billing-art.d.ts +9 -0
  352. package/dist/src/ds/components/BillingIllustration/art/project-size-art.d.ts +5 -0
  353. package/dist/src/ds/components/BillingIllustration/billing-illustration.d.ts +9 -0
  354. package/dist/src/ds/components/BillingIllustration/index.d.ts +2 -0
  355. package/dist/src/ds/components/Code/code.d.ts +4 -4
  356. package/dist/src/ds/components/Code/use-highlight.d.ts +2 -6
  357. package/dist/src/ds/components/CodeEditor/highlight.d.ts +23 -2
  358. package/dist/src/ds/components/CodeEditor/index.d.ts +1 -1
  359. package/dist/style.css +154 -11
  360. package/dist/toast.css +79 -0
  361. package/dist/{tool-approval-P8rUFAYp.js → tool-approval-meJYp8az.js} +2 -2
  362. package/dist/{tool-approval-P8rUFAYp.js.map → tool-approval-meJYp8az.js.map} +1 -1
  363. package/dist/{tool-approval-zhWdp8i6.cjs → tool-approval-tRkskd9l.cjs} +2 -2
  364. package/dist/{tool-approval-zhWdp8i6.cjs.map → tool-approval-tRkskd9l.cjs.map} +1 -1
  365. package/dist/{tool-call-arguments-goEdIs4f.js → tool-call-arguments-CyKLhuQC.js} +5 -5
  366. package/dist/tool-call-arguments-CyKLhuQC.js.map +1 -0
  367. package/dist/{tool-call-arguments-DzpFckIm.cjs → tool-call-arguments-D4D9tT7-.cjs} +5 -5
  368. package/dist/tool-call-arguments-D4D9tT7-.cjs.map +1 -0
  369. package/dist/{tool-card-aclA3iVz.js → tool-card-B7s_wQuV.js} +3 -2
  370. package/dist/{tool-card-aclA3iVz.js.map → tool-card-B7s_wQuV.js.map} +1 -1
  371. package/dist/{tool-card-yii3vGHu.cjs → tool-card-D9jh-XXM.cjs} +3 -2
  372. package/dist/{tool-card-yii3vGHu.cjs.map → tool-card-D9jh-XXM.cjs.map} +1 -1
  373. package/dist/{trace-filters-C91h9X86.js → trace-filters-D1Cs5f24.js} +3 -2
  374. package/dist/trace-filters-D1Cs5f24.js.map +1 -0
  375. package/dist/{trace-filters-Dz4oj8yV.cjs → trace-filters-tC2TkI42.cjs} +3 -2
  376. package/dist/trace-filters-tC2TkI42.cjs.map +1 -0
  377. package/dist/{traces-data-list-Co9k5J4f.cjs → traces-data-list-CF_LFvnf.cjs} +21 -18
  378. package/dist/traces-data-list-CF_LFvnf.cjs.map +1 -0
  379. package/dist/{traces-data-list-TCKjOldO.js → traces-data-list-SpVFLEy8.js} +6 -3
  380. package/dist/traces-data-list-SpVFLEy8.js.map +1 -0
  381. package/dist/{use-workflow-graph-runtime-DcQD5eA6.cjs → use-workflow-graph-runtime-B0k2hrMc.cjs} +2 -2
  382. package/dist/{use-workflow-graph-runtime-DcQD5eA6.cjs.map → use-workflow-graph-runtime-B0k2hrMc.cjs.map} +1 -1
  383. package/dist/{use-workflow-graph-runtime-xq_aSXPh.js → use-workflow-graph-runtime-DiiAs2oN.js} +2 -2
  384. package/dist/{use-workflow-graph-runtime-xq_aSXPh.js.map → use-workflow-graph-runtime-DiiAs2oN.js.map} +1 -1
  385. package/dist/{workflow-code-dialog-content-CFEaeYUX.js → workflow-code-dialog-content-lRHRkDdW.js} +3 -2
  386. package/dist/{workflow-code-dialog-content-CFEaeYUX.js.map → workflow-code-dialog-content-lRHRkDdW.js.map} +1 -1
  387. package/dist/{workflow-code-dialog-content-B_BQCuFW.cjs → workflow-code-dialog-content-yV6Lecry.cjs} +3 -2
  388. package/dist/{workflow-code-dialog-content-B_BQCuFW.cjs.map → workflow-code-dialog-content-yV6Lecry.cjs.map} +1 -1
  389. package/dist/{workflow-condition-card-CbQ4fCxY.js → workflow-condition-card-99g8uCE3.js} +2 -2
  390. package/dist/{workflow-condition-card-CbQ4fCxY.js.map → workflow-condition-card-99g8uCE3.js.map} +1 -1
  391. package/dist/{workflow-condition-card-CMzoK307.cjs → workflow-condition-card-BFaA8u-a.cjs} +2 -2
  392. package/dist/{workflow-condition-card-CMzoK307.cjs.map → workflow-condition-card-BFaA8u-a.cjs.map} +1 -1
  393. package/dist/{workflow-data-edge-view-gwwJEvXz.js → workflow-data-edge-view-BcLEbr1i.js} +2 -2
  394. package/dist/{workflow-data-edge-view-gwwJEvXz.js.map → workflow-data-edge-view-BcLEbr1i.js.map} +1 -1
  395. package/dist/{workflow-data-edge-view-0utEB4Yb.cjs → workflow-data-edge-view-DadIXKjI.cjs} +2 -2
  396. package/dist/{workflow-data-edge-view-0utEB4Yb.cjs.map → workflow-data-edge-view-DadIXKjI.cjs.map} +1 -1
  397. package/dist/{workflow-edge-data-button-YWjfx-W0.js → workflow-edge-data-button-AwaLTE7H.js} +2 -2
  398. package/dist/{workflow-edge-data-button-YWjfx-W0.js.map → workflow-edge-data-button-AwaLTE7H.js.map} +1 -1
  399. package/dist/{workflow-edge-data-button-tDvziS5v.cjs → workflow-edge-data-button-B4_tt1pL.cjs} +2 -2
  400. package/dist/{workflow-edge-data-button-tDvziS5v.cjs.map → workflow-edge-data-button-B4_tt1pL.cjs.map} +1 -1
  401. package/package.json +9 -10
  402. package/dist/code-DJReJPSX.cjs.map +0 -1
  403. package/dist/code-DLuATvYu.js.map +0 -1
  404. package/dist/code-editor-8Fpinga4.js.map +0 -1
  405. package/dist/code-editor-Bd-Cldem.cjs.map +0 -1
  406. package/dist/data-list-DlXU1PLQ.cjs.map +0 -1
  407. package/dist/data-list-Tor18oy5.js.map +0 -1
  408. package/dist/highlight-BmpoELR4.js +0 -87
  409. package/dist/highlight-BmpoELR4.js.map +0 -1
  410. package/dist/highlight-DK1dn-Fh.cjs +0 -90
  411. package/dist/highlight-DK1dn-Fh.cjs.map +0 -1
  412. package/dist/side-dialog-DSvj8H6x.js.map +0 -1
  413. package/dist/side-dialog-SJCWBnbw.cjs.map +0 -1
  414. package/dist/tool-call-arguments-DzpFckIm.cjs.map +0 -1
  415. package/dist/tool-call-arguments-goEdIs4f.js.map +0 -1
  416. package/dist/trace-filters-C91h9X86.js.map +0 -1
  417. package/dist/trace-filters-Dz4oj8yV.cjs.map +0 -1
  418. package/dist/traces-data-list-Co9k5J4f.cjs.map +0 -1
  419. package/dist/traces-data-list-TCKjOldO.js.map +0 -1
@@ -1,18 +1,16 @@
1
1
  import { jsxs, jsx } from 'react/jsx-runtime';
2
2
  import { jsonLanguage } from '@codemirror/lang-json';
3
3
  import { markdown, markdownLanguage } from '@codemirror/lang-markdown';
4
- import { LanguageDescription, LanguageSupport, StreamLanguage, HighlightStyle, syntaxHighlighting } from '@codemirror/language';
4
+ import { LanguageDescription, LanguageSupport, StreamLanguage, syntaxHighlighting } from '@codemirror/language';
5
5
  import { EditorState, Prec } from '@codemirror/state';
6
6
  import { ViewPlugin, MatchDecorator, Decoration, EditorView } from '@codemirror/view';
7
- import { tags } from '@lezer/highlight';
8
- import { draculaInit } from '@uiw/codemirror-theme-dracula';
9
7
  import CodeMirror from '@uiw/react-codemirror';
10
8
  import { c as cva } from './index-CHS9F_Eo.js';
11
9
  import { useMemo, forwardRef } from 'react';
10
+ import { s as syntaxHighlighter } from './highlight-CXDme3FZ.js';
12
11
  import { autocompletion } from '@codemirror/autocomplete';
13
12
  import { C as CopyButton } from './copy-button-B_i9lwFJ.js';
14
13
  import { u as useFieldControlAria } from './field-control-aria-DB6y41tQ.js';
15
- import { u as useTheme } from './theme-provider-BbMYMtxP.js';
16
14
  import { fieldErrorRimWithin, inputSurfaceAndFocusWithinStyle } from './primitives/form-element.es.js';
17
15
  import { c as cn } from './cn-CQUhN5Jx.js';
18
16
 
@@ -180,94 +178,7 @@ const variableHighlightPlugin = ViewPlugin.fromClass(
180
178
  );
181
179
  const variableHighlight = variableHighlightPlugin;
182
180
 
183
- function buildDarkTheme(font) {
184
- const baseTheme = draculaInit({
185
- settings: {
186
- fontFamily: `var(--font-${font})`,
187
- fontSize: "var(--text-body-sm)",
188
- lineHighlight: "transparent",
189
- gutterBackground: "transparent",
190
- gutterForeground: "var(--placeholder)",
191
- background: "transparent",
192
- foreground: "var(--foreground)",
193
- caret: "var(--foreground)"
194
- },
195
- styles: [
196
- { tag: [tags.className, tags.propertyName], color: "var(--foreground)" },
197
- { tag: tags.heading, color: "var(--info-indicator)", fontWeight: "bold" },
198
- {
199
- tag: [tags.heading1, tags.heading2, tags.heading3, tags.heading4, tags.heading5, tags.heading6],
200
- color: "var(--info-indicator)",
201
- fontWeight: "bold"
202
- },
203
- { tag: tags.emphasis, fontStyle: "italic", color: "var(--foreground)" },
204
- { tag: tags.strong, fontWeight: "bold", color: "var(--foreground)" },
205
- { tag: tags.link, color: "var(--info-indicator)", textDecoration: "underline" },
206
- { tag: tags.url, color: "var(--info-indicator)" },
207
- { tag: tags.monospace, color: "var(--foreground)" },
208
- { tag: tags.strikethrough, textDecoration: "line-through" },
209
- { tag: tags.quote, fontStyle: "italic", color: "var(--placeholder)" }
210
- ]
211
- });
212
- const customLineNumberTheme = EditorView.theme({
213
- ".cm-editor": {
214
- backgroundColor: "transparent"
215
- },
216
- ".cm-content": {
217
- color: "var(--foreground)",
218
- caretColor: "var(--foreground)"
219
- },
220
- ".cm-lineNumbers .cm-gutterElement": {
221
- color: "var(--placeholder)"
222
- },
223
- ".cm-activeLineGutter": {
224
- color: "var(--muted-foreground)"
225
- },
226
- ".cm-cursor": {
227
- borderLeftColor: "var(--foreground)"
228
- },
229
- ".cm-selectionBackground, .cm-content ::selection": {
230
- backgroundColor: "var(--info-subtle)"
231
- },
232
- ".cm-tooltip-autocomplete": {
233
- backgroundColor: "var(--background)",
234
- border: "1px solid var(--border)",
235
- borderRadius: "6px",
236
- boxShadow: "var(--elevation-overlay)"
237
- },
238
- ".cm-tooltip-autocomplete > ul": {
239
- fontFamily: "var(--font-mono)"
240
- },
241
- ".cm-completionLabel": {
242
- color: "var(--foreground)"
243
- },
244
- ".cm-completionDetail": {
245
- color: "var(--muted-foreground)",
246
- fontSize: "var(--text-caption)",
247
- marginLeft: "auto",
248
- paddingLeft: "12px"
249
- },
250
- ".cm-completionInfo": {
251
- backgroundColor: "var(--background)",
252
- border: "1px solid var(--border)",
253
- color: "var(--muted-foreground)",
254
- padding: "8px 12px"
255
- },
256
- ".cm-completionIcon": {
257
- display: "none"
258
- },
259
- "ul.cm-completionList li[aria-selected]": {
260
- backgroundColor: "var(--fill-hover)",
261
- color: "var(--foreground)"
262
- },
263
- ".cm-line .cm-variable-highlight": {
264
- color: "var(--warning-foreground) !important",
265
- fontWeight: "500"
266
- }
267
- });
268
- return [baseTheme, customLineNumberTheme];
269
- }
270
- function buildLightTheme(font) {
181
+ function buildCodemirrorTheme(font) {
271
182
  const editorTheme = EditorView.theme({
272
183
  "&": {
273
184
  backgroundColor: "transparent",
@@ -338,39 +249,10 @@ function buildLightTheme(font) {
338
249
  fontWeight: "500"
339
250
  }
340
251
  });
341
- const highlightStyle = HighlightStyle.define([
342
- { tag: [tags.comment, tags.bracket], color: "var(--placeholder)" },
343
- { tag: [tags.string, tags.meta, tags.regexp], color: "var(--syntax-string)" },
344
- { tag: [tags.atom, tags.bool, tags.special(tags.variableName)], color: "var(--syntax-literal)" },
345
- { tag: [tags.keyword, tags.operator, tags.tagName], color: "var(--syntax-keyword)" },
346
- { tag: [tags.function(tags.propertyName), tags.propertyName], color: "var(--syntax-name)" },
347
- {
348
- tag: [tags.definition(tags.variableName), tags.function(tags.variableName), tags.className, tags.attributeName],
349
- color: "var(--syntax-link)"
350
- },
351
- { tag: [tags.variableName, tags.number], color: "var(--syntax-name)" },
352
- { tag: [tags.name, tags.quote], color: "var(--syntax-string)" },
353
- { tag: tags.heading, color: "var(--syntax-link)", fontWeight: "bold" },
354
- {
355
- tag: [tags.heading1, tags.heading2, tags.heading3, tags.heading4, tags.heading5, tags.heading6],
356
- color: "var(--syntax-link)",
357
- fontWeight: "bold"
358
- },
359
- { tag: [tags.emphasis], fontStyle: "italic", color: "var(--foreground)" },
360
- { tag: [tags.strong], fontWeight: "bold", color: "var(--foreground)" },
361
- { tag: tags.link, color: "var(--syntax-link)", textDecoration: "underline" },
362
- { tag: tags.url, color: "var(--syntax-link)" },
363
- { tag: tags.monospace, color: "var(--foreground)" },
364
- { tag: tags.strikethrough, textDecoration: "line-through" },
365
- { tag: [tags.deleted], color: "var(--syntax-keyword)" },
366
- { tag: tags.invalid, color: "var(--destructive-foreground)" },
367
- { tag: [tags.standard(tags.tagName)], color: "var(--syntax-string)" }
368
- ]);
369
- return [editorTheme, syntaxHighlighting(highlightStyle)];
252
+ return [editorTheme, syntaxHighlighting(syntaxHighlighter)];
370
253
  }
371
254
  const useCodemirrorTheme = (font = "mono") => {
372
- const isDark = useTheme().resolvedTheme === "dark";
373
- return useMemo(() => isDark ? buildDarkTheme(font) : buildLightTheme(font), [isDark, font]);
255
+ return useMemo(() => buildCodemirrorTheme(font), [font]);
374
256
  };
375
257
  const codeEditorVariants = cva(
376
258
  cn(
@@ -507,4 +389,4 @@ const CodeEditor = forwardRef(
507
389
  );
508
390
 
509
391
  export { CodeEditor as C, VARIABLE_PATTERN as V, createVariableAutocomplete as a, codeLanguages as c, flattenSchemaToVariables as f, useCodemirrorTheme as u, variableHighlight as v };
510
- //# sourceMappingURL=code-editor-8Fpinga4.js.map
392
+ //# sourceMappingURL=code-editor-DOv4jc-0.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"code-editor-DOv4jc-0.js","sources":["../src/ds/components/CodeEditor/code-languages.ts","../src/ds/components/CodeEditor/schema-to-variables.ts","../src/ds/components/CodeEditor/variable-autocomplete-extension.ts","../src/ds/components/CodeEditor/variable-highlight-extension.ts","../src/ds/components/CodeEditor/code-editor.tsx"],"sourcesContent":["import { LanguageDescription, LanguageSupport, StreamLanguage } from '@codemirror/language';\n\nfunction legacy(parser: Parameters<typeof StreamLanguage.define>[0]) {\n return new LanguageSupport(StreamLanguage.define(parser));\n}\n\n/**\n * A minimal subset of CodeMirror language descriptions used for fenced code\n * blocks inside markdown. Mirrors the relevant entries from\n * `@codemirror/language-data` but only the languages we actually support, so\n * bundlers don't have to emit a chunk for every known language.\n */\nexport const codeLanguages = [\n LanguageDescription.of({\n name: 'JavaScript',\n alias: ['ecmascript', 'js', 'node'],\n extensions: ['js', 'mjs', 'cjs'],\n load() {\n return import('@codemirror/lang-javascript').then(m => m.javascript());\n },\n }),\n LanguageDescription.of({\n name: 'JSON',\n alias: ['json5'],\n extensions: ['json', 'map'],\n load() {\n return import('@codemirror/lang-json').then(m => m.json());\n },\n }),\n LanguageDescription.of({\n name: 'JSX',\n extensions: ['jsx'],\n load() {\n return import('@codemirror/lang-javascript').then(m => m.javascript({ jsx: true }));\n },\n }),\n LanguageDescription.of({\n name: 'Markdown',\n extensions: ['md', 'markdown', 'mkd'],\n load() {\n return import('@codemirror/lang-markdown').then(m => m.markdown());\n },\n }),\n LanguageDescription.of({\n name: 'TSX',\n extensions: ['tsx'],\n load() {\n return import('@codemirror/lang-javascript').then(m => m.javascript({ jsx: true, typescript: true }));\n },\n }),\n LanguageDescription.of({\n name: 'TypeScript',\n alias: ['ts'],\n extensions: ['ts', 'mts', 'cts'],\n load() {\n return import('@codemirror/lang-javascript').then(m => m.javascript({ typescript: true }));\n },\n }),\n LanguageDescription.of({\n name: 'Shell',\n alias: ['bash', 'sh', 'zsh'],\n extensions: ['sh', 'ksh', 'bash'],\n filename: /^PKGBUILD$/,\n load() {\n return import('@codemirror/legacy-modes/mode/shell').then(m => legacy(m.shell));\n },\n }),\n];\n","import type { JsonSchema, JsonSchemaProperty } from '@/lib/json-schema';\n\n/**\n * Represents a variable completion option derived from a schema\n */\nexport interface VariableCompletion {\n /** The dot-notation path (e.g., \"user.name\") */\n path: string;\n /** Display label for the autocomplete */\n label: string;\n /** Description from the schema, if available */\n description?: string;\n /** The type of the property */\n type?: string;\n}\n\n/**\n * Flattens a JSON Schema into a list of variable completions for autocomplete.\n * Recursively extracts property paths using dot-notation.\n *\n * @param schema - The JSON Schema to flatten\n * @param maxDepth - Maximum recursion depth (default: 5)\n * @returns Array of variable completions\n *\n * @example\n * ```ts\n * const schema = {\n * type: 'object',\n * properties: {\n * user: {\n * type: 'object',\n * properties: {\n * name: { type: 'string' },\n * email: { type: 'string' }\n * }\n * }\n * }\n * };\n *\n * flattenSchemaToVariables(schema);\n * // Returns:\n * // [\n * // { path: 'user', label: 'user', type: 'object' },\n * // { path: 'user.name', label: 'user.name', type: 'string' },\n * // { path: 'user.email', label: 'user.email', type: 'string' }\n * // ]\n * ```\n */\nexport function flattenSchemaToVariables(schema: JsonSchema | undefined, maxDepth = 5): VariableCompletion[] {\n if (!schema?.properties) {\n return [];\n }\n\n const results: VariableCompletion[] = [];\n\n function processProperty(property: JsonSchemaProperty, path: string, depth: number): void {\n if (depth > maxDepth) {\n return;\n }\n\n const type = Array.isArray(property.type) ? property.type.join(' | ') : property.type;\n\n results.push({\n path,\n label: path,\n description: property.description ?? property.title,\n type,\n });\n\n // Recurse into nested object properties\n if (property.properties) {\n for (const [key, nestedProperty] of Object.entries(property.properties)) {\n processProperty(nestedProperty, `${path}.${key}`, depth + 1);\n }\n }\n\n // Handle array items if they have properties (array of objects)\n if (property.items?.properties) {\n // Add a placeholder for array item access (e.g., items[0].name)\n for (const [key, itemProperty] of Object.entries(property.items.properties)) {\n processProperty(itemProperty, `${path}[].${key}`, depth + 1);\n }\n }\n }\n\n for (const [key, property] of Object.entries(schema.properties)) {\n processProperty(property, key, 1);\n }\n\n return results;\n}\n","import { autocompletion } from '@codemirror/autocomplete';\nimport type { Completion, CompletionContext, CompletionResult } from '@codemirror/autocomplete';\nimport type { Extension } from '@codemirror/state';\nimport { flattenSchemaToVariables } from './schema-to-variables';\nimport type { VariableCompletion } from './schema-to-variables';\nimport type { JsonSchema } from '@/lib/json-schema';\n\n/**\n * Creates a CodeMirror autocomplete extension for {{variable}} placeholders.\n * Triggers when the user types `{{` and shows suggestions derived from the schema.\n *\n * @param schema - JSON Schema to derive variable suggestions from\n * @returns CodeMirror Extension that provides variable autocomplete\n *\n * @example\n * ```tsx\n * const schema = {\n * type: 'object',\n * properties: {\n * user: { type: 'object', properties: { name: { type: 'string' } } }\n * }\n * };\n *\n * <CodeMirror extensions={[createVariableAutocomplete(schema)]} />\n * // Typing \"{{\" will show: user, user.name\n * ```\n */\nexport function createVariableAutocomplete(schema: JsonSchema | undefined): Extension {\n const variables = flattenSchemaToVariables(schema);\n\n return autocompletion({\n override: [createVariableCompletionSource(variables)],\n defaultKeymap: true,\n closeOnBlur: true,\n icons: false,\n });\n}\n\n/**\n * Creates a completion source function for CodeMirror's autocompletion.\n */\nexport function createVariableCompletionSource(\n variables: VariableCompletion[],\n): (context: CompletionContext) => CompletionResult | null {\n return (context: CompletionContext): CompletionResult | null => {\n // Look for {{ pattern before cursor\n const beforeCursor = context.state.sliceDoc(Math.max(0, context.pos - 50), context.pos);\n const match = beforeCursor.match(/\\{\\{([a-zA-Z0-9_.\\[\\]]*)?$/);\n\n if (!match) {\n return null;\n }\n\n // The text after {{ that we're matching against\n const prefix = match[1] ?? '';\n const startPos = context.pos - prefix.length;\n\n // Filter variables based on what the user has typed\n const filteredVariables = prefix\n ? variables.filter(v => v.path.toLowerCase().startsWith(prefix.toLowerCase()))\n : variables;\n\n if (filteredVariables.length === 0) {\n return null;\n }\n\n const completions: Completion[] = filteredVariables.map(variable => ({\n label: variable.path,\n displayLabel: variable.path,\n detail: variable.type,\n info: variable.description,\n apply: (view, completion, from, to) => {\n // Inside an existing placeholder, replace the rest of the identifier and reuse its closing }}\n const rest = view.state.sliceDoc(to);\n const identifierEnd = to + (rest.match(/^[a-zA-Z0-9_.\\[\\]]*/)?.[0].length ?? 0);\n const hasClosingBraces = view.state.sliceDoc(identifierEnd, identifierEnd + 2) === '}}';\n const end = hasClosingBraces ? identifierEnd : to;\n\n const insertText = hasClosingBraces ? completion.label : `${completion.label}}}`;\n\n view.dispatch({\n changes: { from, to: end, insert: insertText },\n selection: { anchor: from + insertText.length },\n });\n },\n }));\n\n return {\n from: startPos,\n options: completions,\n validFor: /^[a-zA-Z0-9_.\\[\\]]*$/,\n };\n };\n}\n","import type { DecorationSet, EditorView, ViewUpdate } from '@codemirror/view';\nimport { Decoration, MatchDecorator, ViewPlugin } from '@codemirror/view';\n\n/**\n * Regex pattern to match variable placeholders like {{variableName}} or {{user.name}}\n * Matches: {{ followed by a valid identifier path (with optional dot notation), then }}\n */\nexport const VARIABLE_PATTERN = /\\{\\{([a-zA-Z_][a-zA-Z0-9_]*(?:\\.[a-zA-Z_][a-zA-Z0-9_]*)*)\\}\\}/g;\n\nconst variableDecoration = Decoration.mark({\n class: 'cm-variable-highlight',\n});\n\nconst variableMatcher = new MatchDecorator({\n regexp: VARIABLE_PATTERN,\n decoration: () => variableDecoration,\n});\n\nconst variableHighlightPlugin = ViewPlugin.fromClass(\n class {\n decorations: DecorationSet;\n\n constructor(view: EditorView) {\n this.decorations = variableMatcher.createDeco(view);\n }\n\n update(update: ViewUpdate) {\n this.decorations = variableMatcher.updateDeco(update, this.decorations);\n }\n },\n {\n decorations: v => v.decorations,\n },\n);\n\n/**\n * CodeMirror extension that highlights {{variableName}} patterns\n * with orange color and semibold weight\n */\nexport const variableHighlight = variableHighlightPlugin;\n","import { jsonLanguage } from '@codemirror/lang-json';\nimport { markdown, markdownLanguage } from '@codemirror/lang-markdown';\nimport { syntaxHighlighting } from '@codemirror/language';\nimport { EditorState, Prec } from '@codemirror/state';\nimport type { Extension } from '@codemirror/state';\nimport { EditorView } from '@codemirror/view';\nimport CodeMirror from '@uiw/react-codemirror';\nimport type { ReactCodeMirrorRef } from '@uiw/react-codemirror';\nimport { cva } from 'class-variance-authority';\nimport type { VariantProps } from 'class-variance-authority';\nimport { forwardRef, useMemo } from 'react';\nimport type { HTMLAttributes } from 'react';\nimport { codeLanguages } from './code-languages';\nimport { syntaxHighlighter } from './highlight';\nimport { createVariableAutocomplete } from './variable-autocomplete-extension';\nimport { variableHighlight } from './variable-highlight-extension';\nimport { CopyButton } from '@/ds/components/CopyButton';\nimport { useFieldControlAria } from '@/ds/components/Field/field-control-aria';\nimport { fieldErrorRimWithin, inputSurfaceAndFocusWithinStyle } from '@/ds/primitives/form-element';\nimport type { JsonSchema } from '@/lib/json-schema';\nimport { cn } from '@/lib/utils';\n\nexport type CodeEditorLanguage = 'json' | 'markdown';\ntype CodeEditorFont = 'body' | 'mono';\n\n/**\n * The single CodeMirror theme for every editor. Chrome and syntax colors come\n * from CSS variables that flip under `.dark`, and syntax roles use the same\n * `syntaxHighlighter` as the read-only `<Code>` viewer, so editors and viewers\n * look identical in both modes.\n */\nfunction buildCodemirrorTheme(font: CodeEditorFont): Extension {\n const editorTheme = EditorView.theme({\n '&': {\n backgroundColor: 'transparent',\n color: 'var(--foreground)',\n fontSize: 'var(--text-body-sm)',\n },\n '&.cm-editor .cm-scroller': {\n fontFamily: `var(--font-${font})`,\n },\n '.cm-gutters': {\n backgroundColor: 'transparent',\n color: 'var(--placeholder)',\n borderRight: 'none',\n },\n '.cm-content': {\n color: 'var(--foreground)',\n caretColor: 'var(--foreground)',\n },\n '.cm-activeLine': {\n backgroundColor: 'transparent',\n },\n '.cm-lineNumbers .cm-gutterElement': {\n color: 'var(--placeholder)',\n },\n '.cm-activeLineGutter': {\n backgroundColor: 'transparent',\n color: 'var(--muted-foreground)',\n },\n '.cm-cursor, .cm-dropCursor': {\n borderLeftColor: 'var(--foreground)',\n },\n '&.cm-focused .cm-selectionBackground, & .cm-line::selection, & .cm-selectionLayer .cm-selectionBackground, .cm-content ::selection':\n {\n background: 'var(--info-edge) !important',\n },\n '.cm-tooltip-autocomplete': {\n backgroundColor: 'var(--background)',\n border: '1px solid var(--border)',\n borderRadius: '6px',\n boxShadow: 'var(--elevation-overlay)',\n },\n '.cm-tooltip-autocomplete > ul': {\n fontFamily: 'var(--font-mono)',\n },\n '.cm-completionLabel': {\n color: 'var(--foreground)',\n },\n '.cm-completionDetail': {\n color: 'var(--muted-foreground)',\n fontSize: 'var(--text-caption)',\n marginLeft: 'auto',\n paddingLeft: '12px',\n },\n '.cm-completionInfo': {\n backgroundColor: 'var(--background)',\n border: '1px solid var(--border)',\n color: 'var(--muted-foreground)',\n padding: '8px 12px',\n },\n '.cm-completionIcon': {\n display: 'none',\n },\n 'ul.cm-completionList li[aria-selected]': {\n backgroundColor: 'var(--fill-hover)',\n color: 'var(--foreground)',\n },\n '.cm-line .cm-variable-highlight': {\n color: 'var(--warning-foreground) !important',\n fontWeight: '500',\n },\n });\n\n return [editorTheme, syntaxHighlighting(syntaxHighlighter)];\n}\n\n// eslint-disable-next-line react-refresh/only-export-components -- shared hook intentionally co-located with the editor it themes\nexport const useCodemirrorTheme = (font: CodeEditorFont = 'mono'): Extension => {\n return useMemo(() => buildCodemirrorTheme(font), [font]);\n};\n\nconst codeEditorVariants = cva(\n cn(\n 'relative overflow-hidden font-mono outline-hidden focus-within:outline-hidden focus:outline-hidden',\n 'transition-colors duration-normal ease-out-custom',\n ),\n {\n variants: {\n variant: {\n default: cn(inputSurfaceAndFocusWithinStyle, 'rounded-md p-1', fieldErrorRimWithin),\n embedded: 'rounded-none border-none bg-transparent p-0',\n },\n },\n defaultVariants: {\n variant: 'default',\n },\n },\n);\n\nconst editorFocusAttributes = Prec.highest(\n EditorView.editorAttributes.of({\n style: 'outline: none',\n }),\n);\n\nconst editorFocusTheme = Prec.highest(\n EditorView.theme({\n '&': {\n outline: 'none',\n },\n '&.cm-focused': {\n outline: 'none',\n },\n '.cm-scroller': {\n outline: 'none',\n },\n '.cm-content': {\n outline: 'none',\n },\n '.cm-content:focus': {\n outline: 'none',\n },\n }),\n);\n\nconst editorFocusExtensions: Extension[] = [editorFocusAttributes, editorFocusTheme];\n\ntype CodeEditorContentAttributes = {\n 'aria-label': string;\n id?: string;\n 'aria-labelledby'?: string;\n 'aria-describedby'?: string;\n 'aria-invalid'?: string;\n};\n\nexport type CodeEditorProps = {\n /** Prose editors can opt into the body face; code stays monospace by default. */\n font?: CodeEditorFont;\n data?: Record<string, unknown> | Array<Record<string, unknown>>;\n value?: string;\n onChange?: (value: string) => void;\n showCopyButton?: boolean;\n className?: string;\n highlightVariables?: boolean;\n language?: CodeEditorLanguage;\n placeholder?: string;\n /** JSON Schema to enable variable autocomplete for {{variable}} placeholders (markdown only) */\n schema?: JsonSchema;\n autoFocus?: boolean;\n /** Show line numbers in the gutter (default: true) */\n lineNumbers?: boolean;\n /** Wrap long lines within the editor viewport (default: true) */\n lineWrapping?: boolean;\n /** When false, makes the editor read-only */\n editable?: boolean;\n} & VariantProps<typeof codeEditorVariants> &\n Omit<HTMLAttributes<HTMLDivElement>, 'onChange'>;\n\nexport const CodeEditor = forwardRef<ReactCodeMirrorRef, CodeEditorProps>(\n (\n {\n data,\n value,\n onChange,\n showCopyButton = true,\n className,\n language = 'json',\n font = 'mono',\n highlightVariables = false,\n placeholder,\n schema,\n autoFocus,\n lineNumbers = true,\n lineWrapping = true,\n editable,\n variant,\n id,\n 'aria-label': ariaLabelProp,\n 'aria-labelledby': ariaLabelledByProp,\n 'aria-describedby': ariaDescribedByProp,\n 'aria-invalid': ariaInvalidProp,\n ...props\n },\n ref,\n ) => {\n const fieldAria = useFieldControlAria({ 'aria-label': ariaLabelProp });\n const ariaLabel = ariaLabelProp ?? 'Code editor';\n const controlId = id ?? fieldAria.id;\n const ariaLabelledBy = ariaLabelledByProp ?? fieldAria['aria-labelledby'];\n const ariaDescribedBy = ariaDescribedByProp ?? fieldAria['aria-describedby'];\n const ariaInvalid = ariaInvalidProp ?? fieldAria['aria-invalid'];\n const theme = useCodemirrorTheme(font);\n const formattedCode = data ? JSON.stringify(data, null, 2) : (value ?? '');\n\n const extensions = useMemo(() => {\n const contentAttributes: CodeEditorContentAttributes = { 'aria-label': ariaLabel };\n if (controlId) contentAttributes.id = controlId;\n if (ariaLabelledBy) contentAttributes['aria-labelledby'] = ariaLabelledBy;\n if (ariaDescribedBy) contentAttributes['aria-describedby'] = ariaDescribedBy;\n if (ariaInvalid !== undefined) contentAttributes['aria-invalid'] = String(ariaInvalid);\n\n const exts: Extension[] = [...editorFocusExtensions, EditorView.contentAttributes.of(contentAttributes)];\n\n if (lineWrapping) {\n exts.push(EditorView.lineWrapping);\n }\n\n if (language === 'json') {\n exts.push(jsonLanguage);\n } else if (language === 'markdown') {\n exts.push(markdown({ base: markdownLanguage, codeLanguages }));\n }\n\n if (highlightVariables && language === 'markdown') {\n exts.push(variableHighlight);\n }\n\n if (schema && language === 'markdown') {\n exts.push(createVariableAutocomplete(schema));\n }\n\n if (editable === false) {\n exts.push(EditorState.readOnly.of(true));\n }\n\n return exts;\n }, [\n language,\n highlightVariables,\n schema,\n editable,\n lineWrapping,\n controlId,\n ariaLabel,\n ariaLabelledBy,\n ariaDescribedBy,\n ariaInvalid,\n ]);\n\n return (\n <div className={cn(codeEditorVariants({ variant }), className)} {...props}>\n {showCopyButton && <CopyButton content={formattedCode} className=\"absolute top-2 right-2 z-20\" />}\n <CodeMirror\n ref={ref}\n value={formattedCode}\n theme={theme}\n extensions={extensions}\n onChange={onChange}\n editable={editable}\n aria-label={ariaLabel}\n placeholder={placeholder}\n height=\"100%\"\n style={{ height: '100%' }}\n autoFocus={autoFocus}\n basicSetup={{ lineNumbers }}\n />\n </div>\n );\n },\n);\n"],"names":[],"mappings":"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"}
@@ -0,0 +1,223 @@
1
+ 'use strict';
2
+
3
+ Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });
4
+
5
+ const jsxRuntime = require('react/jsx-runtime');
6
+ const React = require('react');
7
+ const utils_cn = require('../cn-DlOJCxrS.cjs');
8
+
9
+ const oneUnit = {
10
+ paths: [
11
+ [
12
+ "solid",
13
+ "m33.12 65.12.41-1.04 1.17-.87 20.05-10.02 1.75-.59 2.07-.21 2.06.21 1.76.59L85.3 64.64l1.17.88.41 1.03v3.51l-.41 1.03-1.17.88-20.05 10.02-1.75.58-2.07.21-2.06-.21-1.76-.58L34.7 70.53l-1.17-.87-.41-1.04Z"
14
+ ],
15
+ ["edge", "m85.12 66.55-.27.7-.79.59-20.05 10.02-1.18.4-1.4.14-1.39-.14-1.19-.4-22.91-11.45-.79-.6-.27-.69"]
16
+ ],
17
+ lifts: [
18
+ [
19
+ [
20
+ "solid",
21
+ "m40.2 46.41.31-.77.88-.66 14.31-7.16 1.32-.44 1.55-.15 1.55.15 1.31.44 17.18 8.59.88.66.31.77v18.71l-.31.77-.88.66-14.31 7.16-1.32.44-1.55.15-1.55-.15-1.31-.44-17.18-8.59-.88-.66-.31-.77Z"
22
+ ],
23
+ ["edge", "m78.05 47.84-.18.44-.5.37-14.32 7.16-.74.25-.88.09-.88-.09-.74-.25-17.18-8.59-.5-.37-.18-.44"],
24
+ [
25
+ "light",
26
+ "m55.99 64.5-.01-.25-.05-.25-.07-.26-.11-.25-.12-.25-.15-.23-.17-.2-.18-.19-.19-.15-.19-.11-.19-.08-.19-.04h-.18l-.17.04-.15.08-.12.12-.11.16-.07.18-.05.21-.01.23.01.24.05.26.07.26.11.25.12.24.15.23.17.21.18.18.19.15.19.12.19.08.19.04.18-.01.17-.04.15-.08.12-.12.11-.15.07-.18.05-.21z"
27
+ ]
28
+ ]
29
+ ]
30
+ };
31
+ const serverlessArt = { viewBox: [32, 32, 56, 56], ...oneUnit, dashed: true };
32
+ const smallArt = { viewBox: [32, 32, 56, 56], ...oneUnit };
33
+ const mediumArt = {
34
+ viewBox: [20, 20, 80, 80],
35
+ paths: [
36
+ [
37
+ "solid",
38
+ "m21.19 59.15.41-1.04 1.17-.87 20.05-10.03 1.75-.58 2.07-.21 2.06.21 1.75.58L97.23 70.6l1.17.88.41 1.03v3.51l-.41 1.03-1.17.88-20.05 10.02-1.75.59-2.07.2-2.06-.2-1.75-.59-46.78-23.39-1.17-.87-.41-1.04Z"
39
+ ],
40
+ ["edge", "m97.06 72.51-.28.7-.79.59-20.05 10.02-1.18.4-1.4.14-1.39-.14-1.18-.4-46.78-23.39-.79-.59-.28-.69"]
41
+ ],
42
+ lifts: [
43
+ [
44
+ [
45
+ "solid",
46
+ "m28.27 40.44.31-.77.87-.66 14.32-7.16 1.32-.44 1.55-.15 1.55.15 1.31.44 17.18 8.59.88.66.31.77v18.71l-.31.77-.88.66-14.32 7.16-1.31.44-1.55.15-1.55-.15-1.31-.44-17.19-8.59-.87-.66-.31-.77Z"
47
+ ],
48
+ ["edge", "m66.11 41.87-.17.44-.5.37-14.32 7.16-.74.25-.88.09-.88-.09-.74-.25-17.19-8.59-.49-.37-.18-.44"],
49
+ [
50
+ "idle",
51
+ "m44.06 58.53-.02-.25-.04-.25-.08-.26-.1-.25-.13-.25-.14-.23-.17-.21-.18-.18-.19-.15-.19-.11-.2-.08-.19-.04h-.18l-.16.04-.15.08-.13.12-.1.15-.07.19-.05.21-.01.23.01.24.05.26.07.25.1.26.13.24.15.23.16.21.18.18.19.15.2.12.19.08.19.03h.18l.17-.04.14-.08.13-.12.1-.15.08-.18.04-.21z"
52
+ ]
53
+ ],
54
+ [
55
+ [
56
+ "solid",
57
+ "m52.13 52.37.31-.77.88-.66 14.32-7.16 1.31-.44 1.55-.15 1.55.15 1.31.44 17.19 8.59.87.66.31.77v18.71l-.31.78-.87.65-14.32 7.16-1.32.44-1.55.16-1.55-.16-1.31-.44-17.18-8.59-.88-.66-.31-.77Z"
58
+ ],
59
+ ["edge", "m89.98 53.8-.18.44-.49.38-14.32 7.16-.75.24-.88.09-.87-.09-.75-.24-17.18-8.6-.5-.37-.17-.44"],
60
+ [
61
+ "light",
62
+ "m67.92 70.46-.01-.25-.05-.25-.07-.26-.1-.25-.13-.25-.15-.23-.16-.2-.18-.18-.19-.15-.2-.12-.19-.08-.19-.04h-.18l-.17.05-.15.08-.12.11-.1.16-.08.18-.04.21-.02.23.02.24.04.26.08.26.1.25.12.25.15.22.17.21.18.18.19.15.19.12.2.08.19.04h.18l.16-.05.15-.08.13-.12.1-.15.07-.18.05-.21z"
63
+ ]
64
+ ]
65
+ ]
66
+ };
67
+ const largeArt = {
68
+ viewBox: [9, 9, 102, 102],
69
+ paths: [
70
+ [
71
+ "solid",
72
+ "m10.21 64.64.41-1.04 1.17-.87L53.8 41.72l1.75-.58 2.06-.21 2.07.21 1.75.58 46.78 23.39 1.17.88.41 1.03v3.51l-.41 1.03-1.17.88-42.01 21-1.75.58-2.06.21-2.07-.21-1.75-.58-46.78-23.39-1.17-.87-.41-1.04Z"
73
+ ],
74
+ ["edge", "m108.03 67.02-.27.7-.79.59-42.01 21-1.18.4-1.39.14-1.4-.14-1.18-.4-46.78-23.39-.79-.59-.27-.69"]
75
+ ],
76
+ lifts: [
77
+ [
78
+ [
79
+ "solid",
80
+ "m39.24 34.95.31-.77.88-.66 14.32-7.16 1.31-.44 1.55-.15 1.55.15 1.32.44 17.18 8.59.88.66.31.77v18.71l-.31.77-.88.66-14.32 7.16-1.31.44-1.55.15-1.55-.15-1.32-.44-17.18-8.59-.88-.66-.31-.77Z"
81
+ ],
82
+ ["edge", "m77.09 36.38-.17.44-.5.37-14.32 7.16-.74.25-.88.09-.88-.09-.75-.25-17.18-8.59-.5-.37-.17-.44"],
83
+ [
84
+ "idle",
85
+ "m55.04 53.04-.02-.25-.04-.25-.08-.26-.1-.25-.13-.25-.15-.23-.16-.2-.18-.19-.19-.15-.19-.11-.2-.08-.19-.04h-.18l-.16.04-.15.08-.13.12-.1.16-.08.18-.04.21-.02.23.02.24.04.26.08.26.1.25.13.24.15.23.16.21.18.18.19.15.2.12.19.08.19.04.18-.01.16-.04.15-.08.13-.12.1-.15.08-.18.04-.21z"
86
+ ]
87
+ ],
88
+ [
89
+ [
90
+ "solid",
91
+ "m17.29 45.93.31-.78.88-.65 14.31-7.16 1.32-.44 1.55-.16 1.55.16 1.31.44 17.18 8.59.88.66.31.77v18.71l-.31.77-.88.66-14.31 7.16-1.32.44-1.55.15-1.55-.15-1.31-.44-17.18-8.59-.88-.66-.31-.77Z"
92
+ ],
93
+ ["edge", "m55.14 47.36-.18.44-.5.37-14.32 7.16-.74.25-.88.09-.88-.09-.74-.25-17.18-8.59-.5-.37-.18-.44"],
94
+ [
95
+ "idle",
96
+ "m33.08 64.02-.01-.25-.05-.25-.07-.26-.11-.26-.12-.24-.15-.23-.17-.21-.18-.18-.19-.15-.19-.11-.19-.08-.19-.04h-.18l-.17.04-.15.08-.12.12-.11.15-.07.19-.05.21-.01.23.01.24.05.26.07.25.11.26.12.24.15.23.17.21.18.18.19.15.19.12.19.07.19.04h.18l.17-.04.15-.08.12-.12.11-.15.07-.18.05-.21z"
97
+ ]
98
+ ],
99
+ [
100
+ [
101
+ "solid",
102
+ "m63.11 46.88.31-.77.88-.66 14.31-7.16 1.32-.44 1.55-.15 1.55.15 1.31.44 17.18 8.59.88.66.31.78v18.7l-.31.78-.88.65-14.31 7.16-1.32.44-1.55.16-1.55-.16-1.31-.44-17.18-8.59-.88-.66-.31-.77Z"
103
+ ],
104
+ ["edge", "m100.96 48.32-.18.43-.5.38-14.32 7.16-.74.25-.88.08-.88-.08-.74-.25-17.18-8.59-.5-.38-.18-.44"],
105
+ [
106
+ "idle",
107
+ "m78.9 64.97-.01-.24-.05-.26-.07-.26-.11-.25-.12-.25-.15-.22-.17-.21-.18-.18-.19-.15-.19-.12-.19-.08-.19-.04h-.18l-.17.05-.15.08-.12.12-.11.15-.07.18-.05.21-.01.23.01.25.05.25.07.26.11.25.12.25.15.23.17.2.18.18.19.15.19.12.19.08.19.04h.18l.17-.04.15-.09.12-.11.11-.16.07-.18.05-.21z"
108
+ ]
109
+ ],
110
+ [
111
+ [
112
+ "solid",
113
+ "m41.15 57.86.31-.77.88-.66 14.32-7.16 1.31-.44 1.55-.15 1.55.15 1.32.44 17.18 8.59.88.66.31.77V78l-.31.77-.88.66-14.32 7.16-1.31.44-1.55.15-1.55-.15-1.32-.44L42.34 78l-.88-.66-.31-.77Z"
114
+ ],
115
+ ["edge", "m79 59.29-.17.44-.5.37-14.32 7.16-.75.25-.87.09-.88-.09-.75-.25-17.18-8.59-.5-.37-.17-.44"],
116
+ [
117
+ "light",
118
+ "m56.95 75.95-.02-.25-.05-.25-.07-.26-.1-.25-.13-.25-.15-.23-.16-.2-.18-.19-.19-.15-.2-.11-.19-.08-.19-.04h-.18l-.17.04-.14.09-.13.11-.1.16-.08.18-.04.21-.02.23.02.24.04.26.08.26.1.25.13.24.14.23.17.21.18.18.19.15.19.12.2.08.19.04.18-.01.16-.04.15-.08.13-.12.1-.15.07-.18.05-.21z"
119
+ ]
120
+ ]
121
+ ]
122
+ };
123
+
124
+ const billingIllustrationHoverGroup = "group/billing-illustration";
125
+ const artByName = {
126
+ serverless: serverlessArt,
127
+ small: smallArt,
128
+ medium: mediumArt,
129
+ large: largeArt
130
+ };
131
+ const inkByTone = {
132
+ ink: "fill-foreground",
133
+ muted: "fill-muted-foreground",
134
+ faded: "fill-fill-strong"
135
+ };
136
+ const maskPaintByStroke = {
137
+ solid: { fill: "black", stroke: "white", strokeOpacity: 0.7 },
138
+ edge: { stroke: "white", strokeOpacity: 0.35 },
139
+ line: { stroke: "white" },
140
+ light: { fill: "white", stroke: "white" },
141
+ idle: { fill: "white", stroke: "white" }
142
+ };
143
+ const hoverTransition = "motion-safe:duration-slow motion-safe:ease-out-custom";
144
+ const staggerMs = 50;
145
+ const classByStroke = {
146
+ idle: utils_cn.cn(
147
+ "[fill-opacity:0] [stroke-opacity:0.35]",
148
+ "group-hover/billing-illustration:[fill-opacity:1] group-hover/billing-illustration:[stroke-opacity:1]",
149
+ "group-focus-within/billing-illustration:[fill-opacity:1] group-focus-within/billing-illustration:[stroke-opacity:1]",
150
+ "motion-safe:transition-[fill-opacity,stroke-opacity]",
151
+ hoverTransition
152
+ )
153
+ };
154
+ const dashedClass = utils_cn.cn(
155
+ "[stroke-dasharray:1.5_1.25]",
156
+ "group-focus-within/billing-illustration:[stroke-dasharray:1.5_0] group-hover/billing-illustration:[stroke-dasharray:1.5_0]",
157
+ "motion-safe:transition-[stroke-dasharray]",
158
+ hoverTransition
159
+ );
160
+ const liftClass = utils_cn.cn(
161
+ "motion-safe:transition-[translate]",
162
+ "motion-safe:group-focus-within/billing-illustration:[translate:0_-3px] motion-safe:group-hover/billing-illustration:[translate:0_-3px]",
163
+ hoverTransition
164
+ );
165
+ const enterClass = utils_cn.cn(
166
+ "opacity-0 group-focus-within/billing-illustration:opacity-100 group-hover/billing-illustration:opacity-100",
167
+ "motion-safe:[translate:0_-8px] motion-safe:group-focus-within/billing-illustration:[translate:0_0] motion-safe:group-hover/billing-illustration:[translate:0_0]",
168
+ "motion-safe:transition-[opacity,translate]",
169
+ hoverTransition
170
+ );
171
+ const countIdle = (paths) => paths.filter(([stroke]) => stroke === "idle").length;
172
+ function ArtPaths({ paths, dashed, firstIdle }) {
173
+ let idle = firstIdle;
174
+ return paths.map(([stroke, d], index) => /* @__PURE__ */ jsxRuntime.jsx(
175
+ "path",
176
+ {
177
+ d,
178
+ ...maskPaintByStroke[stroke],
179
+ className: utils_cn.cn(classByStroke[stroke], dashed && stroke !== "light" && dashedClass),
180
+ style: stroke === "idle" ? { transitionDelay: `${idle++ * staggerMs}ms` } : void 0,
181
+ vectorEffect: "non-scaling-stroke"
182
+ },
183
+ index
184
+ ));
185
+ }
186
+ function BillingIllustration({ name, tone = "ink", className, ...props }) {
187
+ const maskId = `billing-illustration-${React.useId().replace(/[^\w-]/g, "")}`;
188
+ const { viewBox, paths, lifts = [], enters = [], dashed } = artByName[name];
189
+ const parts = [
190
+ ...lifts.map((part, index) => ({ part, className: liftClass, delay: index * staggerMs })),
191
+ ...enters.map((part) => ({ part, className: enterClass, delay: 0 }))
192
+ ];
193
+ const [x, y, width, height] = viewBox;
194
+ return /* @__PURE__ */ jsxRuntime.jsxs(
195
+ "svg",
196
+ {
197
+ viewBox: viewBox.join(" "),
198
+ fill: "none",
199
+ "aria-hidden": "true",
200
+ "data-illustration": name,
201
+ className: utils_cn.cn(billingIllustrationHoverGroup, "block size-30 shrink-0", className),
202
+ ...props,
203
+ children: [
204
+ /* @__PURE__ */ jsxRuntime.jsx("mask", { id: maskId, children: /* @__PURE__ */ jsxRuntime.jsxs("g", { strokeWidth: 1, strokeLinecap: "round", strokeLinejoin: "round", children: [
205
+ /* @__PURE__ */ jsxRuntime.jsx(ArtPaths, { paths, dashed, firstIdle: 0 }),
206
+ parts.map(({ part, className: className2, delay }, index) => /* @__PURE__ */ jsxRuntime.jsx("g", { className: className2, style: { transitionDelay: `${delay}ms` }, children: /* @__PURE__ */ jsxRuntime.jsx(
207
+ ArtPaths,
208
+ {
209
+ paths: part,
210
+ dashed,
211
+ firstIdle: countIdle(paths) + parts.slice(0, index).reduce((sum, earlier) => sum + countIdle(earlier.part), 0)
212
+ }
213
+ ) }, index))
214
+ ] }) }),
215
+ /* @__PURE__ */ jsxRuntime.jsx("rect", { x, y, width, height, mask: `url(#${maskId})`, className: inkByTone[tone] })
216
+ ]
217
+ }
218
+ );
219
+ }
220
+
221
+ exports.BillingIllustration = BillingIllustration;
222
+ exports.billingIllustrationHoverGroup = billingIllustrationHoverGroup;
223
+ //# sourceMappingURL=BillingIllustration.cjs.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"BillingIllustration.cjs.js","sources":["../../src/ds/components/BillingIllustration/art/project-size-art.ts","../../src/ds/components/BillingIllustration/billing-illustration.tsx"],"sourcesContent":["import type { BillingArt } from './billing-art';\n\nconst oneUnit = {\n paths: [\n [\n 'solid',\n 'm33.12 65.12.41-1.04 1.17-.87 20.05-10.02 1.75-.59 2.07-.21 2.06.21 1.76.59L85.3 64.64l1.17.88.41 1.03v3.51l-.41 1.03-1.17.88-20.05 10.02-1.75.58-2.07.21-2.06-.21-1.76-.58L34.7 70.53l-1.17-.87-.41-1.04Z',\n ],\n ['edge', 'm85.12 66.55-.27.7-.79.59-20.05 10.02-1.18.4-1.4.14-1.39-.14-1.19-.4-22.91-11.45-.79-.6-.27-.69'],\n ],\n lifts: [\n [\n [\n 'solid',\n 'm40.2 46.41.31-.77.88-.66 14.31-7.16 1.32-.44 1.55-.15 1.55.15 1.31.44 17.18 8.59.88.66.31.77v18.71l-.31.77-.88.66-14.31 7.16-1.32.44-1.55.15-1.55-.15-1.31-.44-17.18-8.59-.88-.66-.31-.77Z',\n ],\n ['edge', 'm78.05 47.84-.18.44-.5.37-14.32 7.16-.74.25-.88.09-.88-.09-.74-.25-17.18-8.59-.5-.37-.18-.44'],\n [\n 'light',\n 'm55.99 64.5-.01-.25-.05-.25-.07-.26-.11-.25-.12-.25-.15-.23-.17-.2-.18-.19-.19-.15-.19-.11-.19-.08-.19-.04h-.18l-.17.04-.15.08-.12.12-.11.16-.07.18-.05.21-.01.23.01.24.05.26.07.26.11.25.12.24.15.23.17.21.18.18.19.15.19.12.19.08.19.04.18-.01.17-.04.15-.08.12-.12.11-.15.07-.18.05-.21z',\n ],\n ],\n ],\n} satisfies Pick<BillingArt, 'paths' | 'lifts'>;\n\nexport const serverlessArt: BillingArt = { viewBox: [32, 32, 56, 56], ...oneUnit, dashed: true };\n\nexport const smallArt: BillingArt = { viewBox: [32, 32, 56, 56], ...oneUnit };\n\nexport const mediumArt: BillingArt = {\n viewBox: [20, 20, 80, 80],\n paths: [\n [\n 'solid',\n 'm21.19 59.15.41-1.04 1.17-.87 20.05-10.03 1.75-.58 2.07-.21 2.06.21 1.75.58L97.23 70.6l1.17.88.41 1.03v3.51l-.41 1.03-1.17.88-20.05 10.02-1.75.59-2.07.2-2.06-.2-1.75-.59-46.78-23.39-1.17-.87-.41-1.04Z',\n ],\n ['edge', 'm97.06 72.51-.28.7-.79.59-20.05 10.02-1.18.4-1.4.14-1.39-.14-1.18-.4-46.78-23.39-.79-.59-.28-.69'],\n ],\n lifts: [\n [\n [\n 'solid',\n 'm28.27 40.44.31-.77.87-.66 14.32-7.16 1.32-.44 1.55-.15 1.55.15 1.31.44 17.18 8.59.88.66.31.77v18.71l-.31.77-.88.66-14.32 7.16-1.31.44-1.55.15-1.55-.15-1.31-.44-17.19-8.59-.87-.66-.31-.77Z',\n ],\n ['edge', 'm66.11 41.87-.17.44-.5.37-14.32 7.16-.74.25-.88.09-.88-.09-.74-.25-17.19-8.59-.49-.37-.18-.44'],\n [\n 'idle',\n 'm44.06 58.53-.02-.25-.04-.25-.08-.26-.1-.25-.13-.25-.14-.23-.17-.21-.18-.18-.19-.15-.19-.11-.2-.08-.19-.04h-.18l-.16.04-.15.08-.13.12-.1.15-.07.19-.05.21-.01.23.01.24.05.26.07.25.1.26.13.24.15.23.16.21.18.18.19.15.2.12.19.08.19.03h.18l.17-.04.14-.08.13-.12.1-.15.08-.18.04-.21z',\n ],\n ],\n [\n [\n 'solid',\n 'm52.13 52.37.31-.77.88-.66 14.32-7.16 1.31-.44 1.55-.15 1.55.15 1.31.44 17.19 8.59.87.66.31.77v18.71l-.31.78-.87.65-14.32 7.16-1.32.44-1.55.16-1.55-.16-1.31-.44-17.18-8.59-.88-.66-.31-.77Z',\n ],\n ['edge', 'm89.98 53.8-.18.44-.49.38-14.32 7.16-.75.24-.88.09-.87-.09-.75-.24-17.18-8.6-.5-.37-.17-.44'],\n [\n 'light',\n 'm67.92 70.46-.01-.25-.05-.25-.07-.26-.1-.25-.13-.25-.15-.23-.16-.2-.18-.18-.19-.15-.2-.12-.19-.08-.19-.04h-.18l-.17.05-.15.08-.12.11-.1.16-.08.18-.04.21-.02.23.02.24.04.26.08.26.1.25.12.25.15.22.17.21.18.18.19.15.19.12.2.08.19.04h.18l.16-.05.15-.08.13-.12.1-.15.07-.18.05-.21z',\n ],\n ],\n ],\n};\n\nexport const largeArt: BillingArt = {\n viewBox: [9, 9, 102, 102],\n paths: [\n [\n 'solid',\n 'm10.21 64.64.41-1.04 1.17-.87L53.8 41.72l1.75-.58 2.06-.21 2.07.21 1.75.58 46.78 23.39 1.17.88.41 1.03v3.51l-.41 1.03-1.17.88-42.01 21-1.75.58-2.06.21-2.07-.21-1.75-.58-46.78-23.39-1.17-.87-.41-1.04Z',\n ],\n ['edge', 'm108.03 67.02-.27.7-.79.59-42.01 21-1.18.4-1.39.14-1.4-.14-1.18-.4-46.78-23.39-.79-.59-.27-.69'],\n ],\n lifts: [\n [\n [\n 'solid',\n 'm39.24 34.95.31-.77.88-.66 14.32-7.16 1.31-.44 1.55-.15 1.55.15 1.32.44 17.18 8.59.88.66.31.77v18.71l-.31.77-.88.66-14.32 7.16-1.31.44-1.55.15-1.55-.15-1.32-.44-17.18-8.59-.88-.66-.31-.77Z',\n ],\n ['edge', 'm77.09 36.38-.17.44-.5.37-14.32 7.16-.74.25-.88.09-.88-.09-.75-.25-17.18-8.59-.5-.37-.17-.44'],\n [\n 'idle',\n 'm55.04 53.04-.02-.25-.04-.25-.08-.26-.1-.25-.13-.25-.15-.23-.16-.2-.18-.19-.19-.15-.19-.11-.2-.08-.19-.04h-.18l-.16.04-.15.08-.13.12-.1.16-.08.18-.04.21-.02.23.02.24.04.26.08.26.1.25.13.24.15.23.16.21.18.18.19.15.2.12.19.08.19.04.18-.01.16-.04.15-.08.13-.12.1-.15.08-.18.04-.21z',\n ],\n ],\n [\n [\n 'solid',\n 'm17.29 45.93.31-.78.88-.65 14.31-7.16 1.32-.44 1.55-.16 1.55.16 1.31.44 17.18 8.59.88.66.31.77v18.71l-.31.77-.88.66-14.31 7.16-1.32.44-1.55.15-1.55-.15-1.31-.44-17.18-8.59-.88-.66-.31-.77Z',\n ],\n ['edge', 'm55.14 47.36-.18.44-.5.37-14.32 7.16-.74.25-.88.09-.88-.09-.74-.25-17.18-8.59-.5-.37-.18-.44'],\n [\n 'idle',\n 'm33.08 64.02-.01-.25-.05-.25-.07-.26-.11-.26-.12-.24-.15-.23-.17-.21-.18-.18-.19-.15-.19-.11-.19-.08-.19-.04h-.18l-.17.04-.15.08-.12.12-.11.15-.07.19-.05.21-.01.23.01.24.05.26.07.25.11.26.12.24.15.23.17.21.18.18.19.15.19.12.19.07.19.04h.18l.17-.04.15-.08.12-.12.11-.15.07-.18.05-.21z',\n ],\n ],\n [\n [\n 'solid',\n 'm63.11 46.88.31-.77.88-.66 14.31-7.16 1.32-.44 1.55-.15 1.55.15 1.31.44 17.18 8.59.88.66.31.78v18.7l-.31.78-.88.65-14.31 7.16-1.32.44-1.55.16-1.55-.16-1.31-.44-17.18-8.59-.88-.66-.31-.77Z',\n ],\n ['edge', 'm100.96 48.32-.18.43-.5.38-14.32 7.16-.74.25-.88.08-.88-.08-.74-.25-17.18-8.59-.5-.38-.18-.44'],\n [\n 'idle',\n 'm78.9 64.97-.01-.24-.05-.26-.07-.26-.11-.25-.12-.25-.15-.22-.17-.21-.18-.18-.19-.15-.19-.12-.19-.08-.19-.04h-.18l-.17.05-.15.08-.12.12-.11.15-.07.18-.05.21-.01.23.01.25.05.25.07.26.11.25.12.25.15.23.17.2.18.18.19.15.19.12.19.08.19.04h.18l.17-.04.15-.09.12-.11.11-.16.07-.18.05-.21z',\n ],\n ],\n [\n [\n 'solid',\n 'm41.15 57.86.31-.77.88-.66 14.32-7.16 1.31-.44 1.55-.15 1.55.15 1.32.44 17.18 8.59.88.66.31.77V78l-.31.77-.88.66-14.32 7.16-1.31.44-1.55.15-1.55-.15-1.32-.44L42.34 78l-.88-.66-.31-.77Z',\n ],\n ['edge', 'm79 59.29-.17.44-.5.37-14.32 7.16-.75.25-.87.09-.88-.09-.75-.25-17.18-8.59-.5-.37-.17-.44'],\n [\n 'light',\n 'm56.95 75.95-.02-.25-.05-.25-.07-.26-.1-.25-.13-.25-.15-.23-.16-.2-.18-.19-.19-.15-.2-.11-.19-.08-.19-.04h-.18l-.17.04-.14.09-.13.11-.1.16-.08.18-.04.21-.02.23.02.24.04.26.08.26.1.25.13.24.14.23.17.21.18.18.19.15.19.12.2.08.19.04.18-.01.16-.04.15-.08.13-.12.1-.15.07-.18.05-.21z',\n ],\n ],\n ],\n};\n","import { useId } from 'react';\nimport type { ComponentProps, SVGProps } from 'react';\nimport type { BillingArt, BillingArtPaths, BillingArtStroke } from './art/billing-art';\nimport { largeArt, mediumArt, serverlessArt, smallArt } from './art/project-size-art';\nimport { cn } from '@/lib/utils';\n\nexport type BillingIllustrationName = 'serverless' | 'small' | 'medium' | 'large';\n\nexport type BillingIllustrationTone = 'ink' | 'muted' | 'faded';\n\nexport type BillingIllustrationProps = Omit<ComponentProps<'svg'>, 'children' | 'viewBox'> & {\n name: BillingIllustrationName;\n tone?: BillingIllustrationTone;\n};\n\nexport const billingIllustrationHoverGroup = 'group/billing-illustration';\n\nconst artByName = {\n serverless: serverlessArt,\n small: smallArt,\n medium: mediumArt,\n large: largeArt,\n} satisfies Record<BillingIllustrationName, BillingArt>;\n\nconst inkByTone = {\n ink: 'fill-foreground',\n muted: 'fill-muted-foreground',\n faded: 'fill-fill-strong',\n} satisfies Record<BillingIllustrationTone, string>;\n\nconst maskPaintByStroke = {\n solid: { fill: 'black', stroke: 'white', strokeOpacity: 0.7 },\n edge: { stroke: 'white', strokeOpacity: 0.35 },\n line: { stroke: 'white' },\n light: { fill: 'white', stroke: 'white' },\n idle: { fill: 'white', stroke: 'white' },\n} satisfies Record<BillingArtStroke, SVGProps<SVGPathElement>>;\n\nconst hoverTransition = 'motion-safe:duration-slow motion-safe:ease-out-custom';\n\nconst staggerMs = 50;\n\nconst classByStroke: Partial<Record<BillingArtStroke, string>> = {\n idle: cn(\n '[fill-opacity:0] [stroke-opacity:0.35]',\n 'group-hover/billing-illustration:[fill-opacity:1] group-hover/billing-illustration:[stroke-opacity:1]',\n 'group-focus-within/billing-illustration:[fill-opacity:1] group-focus-within/billing-illustration:[stroke-opacity:1]',\n 'motion-safe:transition-[fill-opacity,stroke-opacity]',\n hoverTransition,\n ),\n};\n\nconst dashedClass = cn(\n '[stroke-dasharray:1.5_1.25]',\n 'group-focus-within/billing-illustration:[stroke-dasharray:1.5_0] group-hover/billing-illustration:[stroke-dasharray:1.5_0]',\n 'motion-safe:transition-[stroke-dasharray]',\n hoverTransition,\n);\n\nconst liftClass = cn(\n 'motion-safe:transition-[translate]',\n 'motion-safe:group-focus-within/billing-illustration:[translate:0_-3px] motion-safe:group-hover/billing-illustration:[translate:0_-3px]',\n hoverTransition,\n);\n\nconst enterClass = cn(\n 'opacity-0 group-focus-within/billing-illustration:opacity-100 group-hover/billing-illustration:opacity-100',\n 'motion-safe:[translate:0_-8px] motion-safe:group-focus-within/billing-illustration:[translate:0_0] motion-safe:group-hover/billing-illustration:[translate:0_0]',\n 'motion-safe:transition-[opacity,translate]',\n hoverTransition,\n);\n\nconst countIdle = (paths: BillingArtPaths) => paths.filter(([stroke]) => stroke === 'idle').length;\n\nfunction ArtPaths({ paths, dashed, firstIdle }: { paths: BillingArtPaths; dashed?: boolean; firstIdle: number }) {\n let idle = firstIdle;\n return paths.map(([stroke, d], index) => (\n <path\n key={index}\n d={d}\n {...maskPaintByStroke[stroke]}\n className={cn(classByStroke[stroke], dashed && stroke !== 'light' && dashedClass)}\n style={stroke === 'idle' ? { transitionDelay: `${idle++ * staggerMs}ms` } : undefined}\n vectorEffect=\"non-scaling-stroke\"\n />\n ));\n}\n\nexport function BillingIllustration({ name, tone = 'ink', className, ...props }: BillingIllustrationProps) {\n const maskId = `billing-illustration-${useId().replace(/[^\\w-]/g, '')}`;\n const { viewBox, paths, lifts = [], enters = [], dashed } = artByName[name];\n const parts = [\n ...lifts.map((part, index) => ({ part, className: liftClass, delay: index * staggerMs })),\n ...enters.map(part => ({ part, className: enterClass, delay: 0 })),\n ];\n const [x, y, width, height] = viewBox;\n\n return (\n <svg\n viewBox={viewBox.join(' ')}\n fill=\"none\"\n aria-hidden=\"true\"\n data-illustration={name}\n className={cn(billingIllustrationHoverGroup, 'block size-30 shrink-0', className)}\n {...props}\n >\n <mask id={maskId}>\n <g strokeWidth={1} strokeLinecap=\"round\" strokeLinejoin=\"round\">\n <ArtPaths paths={paths} dashed={dashed} firstIdle={0} />\n {parts.map(({ part, className, delay }, index) => (\n <g key={index} className={className} style={{ transitionDelay: `${delay}ms` }}>\n <ArtPaths\n paths={part}\n dashed={dashed}\n firstIdle={\n countIdle(paths) + parts.slice(0, index).reduce((sum, earlier) => sum + countIdle(earlier.part), 0)\n }\n />\n </g>\n ))}\n </g>\n </mask>\n <rect x={x} y={y} width={width} height={height} mask={`url(#${maskId})`} className={inkByTone[tone]} />\n </svg>\n );\n}\n"],"names":["cn","jsx","useId","jsxs","className"],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ export * from '../src/ds/components/BillingIllustration/index'
2
+ export {}