@mastra/playground-ui 53.0.0-alpha.8 → 53.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (224) hide show
  1. package/dist/{code-DRGJVroV.js → code-D4Vw_fYq.js} +22 -16
  2. package/dist/code-D4Vw_fYq.js.map +1 -0
  3. package/dist/{code-BJMC6T9D.cjs → code-DhrdtZce.cjs} +22 -15
  4. package/dist/code-DhrdtZce.cjs.map +1 -0
  5. package/dist/{code-block-CBJhDEeB.js → code-block-DeksY23p.js} +2 -2
  6. package/dist/{code-block-CBJhDEeB.js.map → code-block-DeksY23p.js.map} +1 -1
  7. package/dist/{code-block-fmv8bHoT.cjs → code-block-DgHrBuR8.cjs} +2 -2
  8. package/dist/{code-block-fmv8bHoT.cjs.map → code-block-DgHrBuR8.cjs.map} +1 -1
  9. package/dist/{code-diff-C-EHXZyK.cjs → code-diff-CHZ3P1ky.cjs} +51 -43
  10. package/dist/code-diff-CHZ3P1ky.cjs.map +1 -0
  11. package/dist/{code-diff-BB4sqHpq.js → code-diff-CIRbnIfl.js} +52 -44
  12. package/dist/code-diff-CIRbnIfl.js.map +1 -0
  13. package/dist/{combobox-BQrlN0eB.cjs → combobox-JNWmgC13.cjs} +8 -3
  14. package/dist/combobox-JNWmgC13.cjs.map +1 -0
  15. package/dist/{combobox-DeeAlYti.js → combobox-nxjXzRWu.js} +8 -3
  16. package/dist/combobox-nxjXzRWu.js.map +1 -0
  17. package/dist/{command-DWFd0d4c.js → command-Be-KrIAX.js} +2 -2
  18. package/dist/{command-DWFd0d4c.js.map → command-Be-KrIAX.js.map} +1 -1
  19. package/dist/{command-CUev1UxH.cjs → command-DsTBCmQq.cjs} +2 -2
  20. package/dist/{command-CUev1UxH.cjs.map → command-DsTBCmQq.cjs.map} +1 -1
  21. package/dist/components/ChatShell.cjs.js +20 -1
  22. package/dist/components/ChatShell.cjs.js.map +1 -1
  23. package/dist/components/ChatShell.es.js +20 -1
  24. package/dist/components/ChatShell.es.js.map +1 -1
  25. package/dist/components/Code.cjs.js +3 -1
  26. package/dist/components/Code.cjs.js.map +1 -1
  27. package/dist/components/Code.es.js +1 -1
  28. package/dist/components/CodeBlock.cjs.js +1 -1
  29. package/dist/components/CodeBlock.es.js +1 -1
  30. package/dist/components/CodeDiff.cjs.js +1 -1
  31. package/dist/components/CodeDiff.es.js +1 -1
  32. package/dist/components/CodeEditor.cjs.js +2 -1
  33. package/dist/components/CodeEditor.cjs.js.map +1 -1
  34. package/dist/components/CodeEditor.es.js +1 -1
  35. package/dist/components/Combobox.cjs.js +1 -1
  36. package/dist/components/Combobox.es.js +1 -1
  37. package/dist/components/Command.cjs.js +1 -1
  38. package/dist/components/Command.es.js +1 -1
  39. package/dist/components/CommandPalette.cjs.js +1 -1
  40. package/dist/components/CommandPalette.es.js +1 -1
  41. package/dist/components/Comment.cjs.js +2 -2
  42. package/dist/components/Comment.cjs.js.map +1 -1
  43. package/dist/components/Comment.es.js +2 -2
  44. package/dist/components/Comment.es.js.map +1 -1
  45. package/dist/components/DataCodeSection.cjs.js +1 -1
  46. package/dist/components/DataCodeSection.es.js +1 -1
  47. package/dist/components/DataPanel.cjs.js +1 -1
  48. package/dist/components/DataPanel.es.js +1 -1
  49. package/dist/components/Dialog.cjs.js +181 -2
  50. package/dist/components/Dialog.cjs.js.map +1 -1
  51. package/dist/components/Dialog.es.js +183 -1
  52. package/dist/components/Dialog.es.js.map +1 -1
  53. package/dist/components/HorizontalBars.cjs.js +1 -1
  54. package/dist/components/HorizontalBars.es.js +1 -1
  55. package/dist/components/IntegrationDialog.cjs.js +105 -0
  56. package/dist/components/IntegrationDialog.cjs.js.map +1 -0
  57. package/dist/components/IntegrationDialog.d.ts +2 -0
  58. package/dist/components/IntegrationDialog.es.js +101 -0
  59. package/dist/components/IntegrationDialog.es.js.map +1 -0
  60. package/dist/components/LogsDataList.cjs.js +0 -1
  61. package/dist/components/LogsDataList.cjs.js.map +1 -1
  62. package/dist/components/LogsDataList.es.js +0 -1
  63. package/dist/components/LogsDataList.es.js.map +1 -1
  64. package/dist/components/MainHeader.cjs.js +1 -1
  65. package/dist/components/MainHeader.cjs.js.map +1 -1
  66. package/dist/components/MainHeader.es.js +1 -1
  67. package/dist/components/MainHeader.es.js.map +1 -1
  68. package/dist/components/MarkdownRenderer.cjs.js +1 -1
  69. package/dist/components/MarkdownRenderer.es.js +1 -1
  70. package/dist/components/PropertyFilter.cjs.js +1 -1
  71. package/dist/components/PropertyFilter.es.js +1 -1
  72. package/dist/components/ThreadRail.cjs.js +19 -0
  73. package/dist/components/ThreadRail.cjs.js.map +1 -1
  74. package/dist/components/ThreadRail.es.js +19 -1
  75. package/dist/components/ThreadRail.es.js.map +1 -1
  76. package/dist/components/ai/plan.cjs.js +1 -1
  77. package/dist/components/ai/plan.es.js +1 -1
  78. package/dist/components/ai/tool-call.cjs.js +165 -0
  79. package/dist/components/ai/tool-call.cjs.js.map +1 -1
  80. package/dist/components/ai/tool-call.es.js +159 -3
  81. package/dist/components/ai/tool-call.es.js.map +1 -1
  82. package/dist/{data-code-section-Dn9smaz4.cjs → data-code-section-B_lg_J_0.cjs} +34 -5
  83. package/dist/data-code-section-B_lg_J_0.cjs.map +1 -0
  84. package/dist/{data-code-section-DN2yPgEz.js → data-code-section-Cm_W_XhO.js} +36 -7
  85. package/dist/data-code-section-Cm_W_XhO.js.map +1 -0
  86. package/dist/{data-panel-DEatwExN.cjs → data-panel-Cv9j_IGQ.cjs} +2 -2
  87. package/dist/{data-panel-DEatwExN.cjs.map → data-panel-Cv9j_IGQ.cjs.map} +1 -1
  88. package/dist/{data-panel-2Da0Utgy.js → data-panel-DXxeSnL1.js} +2 -2
  89. package/dist/{data-panel-2Da0Utgy.js.map → data-panel-DXxeSnL1.js.map} +1 -1
  90. package/dist/dialog-CZMPDVUj.js +259 -0
  91. package/dist/dialog-CZMPDVUj.js.map +1 -0
  92. package/dist/dialog-D-7Hkb3j.cjs +293 -0
  93. package/dist/dialog-D-7Hkb3j.cjs.map +1 -0
  94. package/dist/domains/memory/components/observation-detail-view.cjs.js +1 -1
  95. package/dist/domains/memory/components/observation-detail-view.es.js +1 -1
  96. package/dist/domains/metrics/components/token-usage-by-agent-card-view.cjs.js +1 -1
  97. package/dist/domains/metrics/components/token-usage-by-agent-card-view.es.js +1 -1
  98. package/dist/domains/metrics/components/traces-volume-card-view.cjs.js +1 -1
  99. package/dist/domains/metrics/components/traces-volume-card-view.es.js +1 -1
  100. package/dist/domains/traces/components/span-data-panel-view.cjs.js +61 -105
  101. package/dist/domains/traces/components/span-data-panel-view.cjs.js.map +1 -1
  102. package/dist/domains/traces/components/span-data-panel-view.es.js +62 -106
  103. package/dist/domains/traces/components/span-data-panel-view.es.js.map +1 -1
  104. package/dist/domains/traces/components/span-summary-description.cjs.js +62 -0
  105. package/dist/domains/traces/components/span-summary-description.cjs.js.map +1 -0
  106. package/dist/domains/traces/components/span-summary-description.d.ts +2 -0
  107. package/dist/domains/traces/components/span-summary-description.es.js +58 -0
  108. package/dist/domains/traces/components/span-summary-description.es.js.map +1 -0
  109. package/dist/domains/traces/components/timeline-expand-col.cjs.js +1 -1
  110. package/dist/domains/traces/components/timeline-expand-col.cjs.js.map +1 -1
  111. package/dist/domains/traces/components/timeline-expand-col.es.js +1 -1
  112. package/dist/domains/traces/components/timeline-expand-col.es.js.map +1 -1
  113. package/dist/domains/traces/components/timeline-name-col.cjs.js +1 -1
  114. package/dist/domains/traces/components/timeline-name-col.cjs.js.map +1 -1
  115. package/dist/domains/traces/components/timeline-name-col.es.js +1 -1
  116. package/dist/domains/traces/components/timeline-name-col.es.js.map +1 -1
  117. package/dist/domains/traces/components/timeline-timing-col.cjs.js +1 -1
  118. package/dist/domains/traces/components/timeline-timing-col.cjs.js.map +1 -1
  119. package/dist/domains/traces/components/timeline-timing-col.es.js +1 -1
  120. package/dist/domains/traces/components/timeline-timing-col.es.js.map +1 -1
  121. package/dist/domains/traces/components/trace-columns-menu.cjs.js +1 -1
  122. package/dist/domains/traces/components/trace-columns-menu.es.js +1 -1
  123. package/dist/domains/traces/components/trace-data-panel-view.cjs.js +2 -2
  124. package/dist/domains/traces/components/trace-data-panel-view.cjs.js.map +1 -1
  125. package/dist/domains/traces/components/trace-data-panel-view.es.js +2 -2
  126. package/dist/domains/traces/components/trace-data-panel-view.es.js.map +1 -1
  127. package/dist/domains/traces/components/traces-toolbar.cjs.js +1 -5
  128. package/dist/domains/traces/components/traces-toolbar.cjs.js.map +1 -1
  129. package/dist/domains/traces/components/traces-toolbar.es.js +1 -5
  130. package/dist/domains/traces/components/traces-toolbar.es.js.map +1 -1
  131. package/dist/domains/traces/hooks/use-branch.cjs.js +2 -6
  132. package/dist/domains/traces/hooks/use-branch.cjs.js.map +1 -1
  133. package/dist/domains/traces/hooks/use-branch.es.js +2 -6
  134. package/dist/domains/traces/hooks/use-branch.es.js.map +1 -1
  135. package/dist/domains/traces/hooks/use-download-trace-json.cjs.js +4 -1
  136. package/dist/domains/traces/hooks/use-download-trace-json.cjs.js.map +1 -1
  137. package/dist/domains/traces/hooks/use-download-trace-json.es.js +4 -1
  138. package/dist/domains/traces/hooks/use-download-trace-json.es.js.map +1 -1
  139. package/dist/domains/traces/hooks/use-trace-filter-persistence.cjs.js +11 -18
  140. package/dist/domains/traces/hooks/use-trace-filter-persistence.cjs.js.map +1 -1
  141. package/dist/domains/traces/hooks/use-trace-filter-persistence.es.js +13 -20
  142. package/dist/domains/traces/hooks/use-trace-filter-persistence.es.js.map +1 -1
  143. package/dist/domains/traces/hooks/use-trace-spans.cjs.js +10 -7
  144. package/dist/domains/traces/hooks/use-trace-spans.cjs.js.map +1 -1
  145. package/dist/domains/traces/hooks/use-trace-spans.es.js +10 -7
  146. package/dist/domains/traces/hooks/use-trace-spans.es.js.map +1 -1
  147. package/dist/domains/traces/trace-filters.cjs.js +5 -5
  148. package/dist/domains/traces/trace-filters.cjs.js.map +1 -1
  149. package/dist/domains/traces/trace-filters.es.js +5 -5
  150. package/dist/domains/traces/trace-filters.es.js.map +1 -1
  151. package/dist/domains/traces/utils/span-utils.cjs.js +6 -0
  152. package/dist/domains/traces/utils/span-utils.cjs.js.map +1 -1
  153. package/dist/domains/traces/utils/span-utils.es.js +6 -1
  154. package/dist/domains/traces/utils/span-utils.es.js.map +1 -1
  155. package/dist/ee/signals/components/entity-index-list.cjs.js +0 -1
  156. package/dist/ee/signals/components/entity-index-list.cjs.js.map +1 -1
  157. package/dist/ee/signals/components/entity-index-list.es.js +0 -1
  158. package/dist/ee/signals/components/entity-index-list.es.js.map +1 -1
  159. package/dist/ee/signals/settings/signal-definition-form-dialog.cjs.js +1 -1
  160. package/dist/ee/signals/settings/signal-definition-form-dialog.es.js +1 -1
  161. package/dist/{highlight-CSJjjoqh.js → highlight-BmpoELR4.js} +6 -2
  162. package/dist/{highlight-CSJjjoqh.js.map → highlight-BmpoELR4.js.map} +1 -1
  163. package/dist/{highlight-CEt2vhD8.cjs → highlight-DK1dn-Fh.cjs} +6 -1
  164. package/dist/{highlight-CEt2vhD8.cjs.map → highlight-DK1dn-Fh.cjs.map} +1 -1
  165. package/dist/{horizontal-bars-DZ5J4TKv.js → horizontal-bars-CyP-B-BX.js} +37 -4
  166. package/dist/horizontal-bars-CyP-B-BX.js.map +1 -0
  167. package/dist/{horizontal-bars-CE1O-Y6G.cjs → horizontal-bars-Dgq3PYsg.cjs} +37 -4
  168. package/dist/horizontal-bars-Dgq3PYsg.cjs.map +1 -0
  169. package/dist/{markdown-renderer-DiJBbnYG.js → markdown-renderer-CaFpZTFS.js} +2 -2
  170. package/dist/{markdown-renderer-DiJBbnYG.js.map → markdown-renderer-CaFpZTFS.js.map} +1 -1
  171. package/dist/{markdown-renderer-DGIzNAQY.cjs → markdown-renderer-GVtZLunG.cjs} +2 -2
  172. package/dist/{markdown-renderer-DGIzNAQY.cjs.map → markdown-renderer-GVtZLunG.cjs.map} +1 -1
  173. package/dist/src/domains/traces/components/span-summary-description.d.ts +10 -0
  174. package/dist/src/domains/traces/components/traces-toolbar.d.ts +1 -5
  175. package/dist/src/domains/traces/hooks/index.d.ts +1 -1
  176. package/dist/src/domains/traces/hooks/use-trace-filter-persistence.d.ts +5 -18
  177. package/dist/src/domains/traces/hooks/use-trace-spans.d.ts +3 -1
  178. package/dist/src/domains/traces/trace-filters.d.ts +4 -3
  179. package/dist/src/domains/traces/utils/span-utils.d.ts +2 -0
  180. package/dist/src/ds/components/ChatShell/chat-shell.d.ts +19 -2
  181. package/dist/src/ds/components/ChatShell/index.d.ts +3 -2
  182. package/dist/src/ds/components/Code/index.d.ts +1 -0
  183. package/dist/src/ds/components/Code/use-highlight.d.ts +10 -0
  184. package/dist/src/ds/components/CodeDiff/code-diff.stories.d.ts +2 -0
  185. package/dist/src/ds/components/CodeEditor/highlight.d.ts +1 -0
  186. package/dist/src/ds/components/CodeEditor/index.d.ts +1 -1
  187. package/dist/src/ds/components/Combobox/combobox.d.ts +3 -1
  188. package/dist/src/ds/components/DataCodeSection/data-code-section.d.ts +9 -1
  189. package/dist/src/ds/components/DataCodeSection/index.d.ts +1 -1
  190. package/dist/src/ds/components/Dialog/dialog-action.d.ts +9 -0
  191. package/dist/src/ds/components/Dialog/dialog-context.d.ts +16 -0
  192. package/dist/src/ds/components/Dialog/dialog-new-variant.stories.d.ts +64 -0
  193. package/dist/src/ds/components/Dialog/dialog.d.ts +15 -6
  194. package/dist/src/ds/components/Dialog/index.d.ts +2 -0
  195. package/dist/src/ds/components/HorizontalBars/horizontal-bars.stories.d.ts +2 -0
  196. package/dist/src/ds/components/IntegrationDialog/__fixtures__/integrations-catalog.d.ts +2 -0
  197. package/dist/src/ds/components/IntegrationDialog/index.d.ts +2 -0
  198. package/dist/src/ds/components/IntegrationDialog/integration-dialog.d.ts +28 -0
  199. package/dist/src/ds/components/IntegrationDialog/integration-dialog.stories.d.ts +24 -0
  200. package/dist/src/ds/components/ThreadRail/index.d.ts +1 -0
  201. package/dist/src/ds/components/ThreadRail/turn-groups.d.ts +19 -0
  202. package/dist/src/ds/components/ai/tool-call/ansi.d.ts +2 -0
  203. package/dist/src/ds/components/ai/tool-call/group-consecutive.d.ts +17 -0
  204. package/dist/src/ds/components/ai/tool-call/index.d.ts +4 -0
  205. package/dist/src/ds/components/ai/tool-call/tool-call-edit.d.ts +4 -0
  206. package/dist/src/ds/components/ai/tool-call/tool-call-group.d.ts +14 -0
  207. package/dist/src/ds/components/ai/tool-call/tool-call.d.ts +4 -0
  208. package/dist/src/ds/components/ai/tool-call/tool-presentation.d.ts +10 -0
  209. package/dist/style.css +149 -3
  210. package/package.json +8 -8
  211. package/dist/code-BJMC6T9D.cjs.map +0 -1
  212. package/dist/code-DRGJVroV.js.map +0 -1
  213. package/dist/code-diff-BB4sqHpq.js.map +0 -1
  214. package/dist/code-diff-C-EHXZyK.cjs.map +0 -1
  215. package/dist/combobox-BQrlN0eB.cjs.map +0 -1
  216. package/dist/combobox-DeeAlYti.js.map +0 -1
  217. package/dist/data-code-section-DN2yPgEz.js.map +0 -1
  218. package/dist/data-code-section-Dn9smaz4.cjs.map +0 -1
  219. package/dist/dialog-CESxLg8S.js +0 -76
  220. package/dist/dialog-CESxLg8S.js.map +0 -1
  221. package/dist/dialog-K0q0KOOW.cjs +0 -107
  222. package/dist/dialog-K0q0KOOW.cjs.map +0 -1
  223. package/dist/horizontal-bars-CE1O-Y6G.cjs.map +0 -1
  224. package/dist/horizontal-bars-DZ5J4TKv.js.map +0 -1
@@ -1 +0,0 @@
1
- {"version":3,"file":"data-code-section-Dn9smaz4.cjs","sources":["../src/ds/components/DataPanel/data-panel-section-heading.tsx","../src/ds/components/DataCodeSection/data-code-section.tsx"],"sourcesContent":["import type { ReactNode } from 'react';\nimport { cn } from '@/lib/utils';\n\nexport interface DataPanelSectionHeadingProps {\n /** Optional leading icon. Rendered before `children` and sized via `[&>svg]:size-3.5`. */\n icon?: ReactNode;\n className?: string;\n children: ReactNode;\n}\n\n/**\n * Section heading inside a DataPanel.Content (e.g. above a code block or a key-values list).\n * Used by `DataCodeSection` and any consumer that needs a matching small-caps label.\n */\nexport function DataPanelSectionHeading({ icon, className, children }: DataPanelSectionHeadingProps) {\n return (\n <div\n className={cn(\n 'flex items-center gap-1.5 text-ui-sm tracking-widest text-neutral2 uppercase [&>svg]:size-3.5',\n className,\n )}\n >\n {icon}\n {children}\n </div>\n );\n}\n","import { json } from '@codemirror/lang-json';\nimport { HighlightStyle, syntaxHighlighting } from '@codemirror/language';\nimport { SearchCursor } from '@codemirror/search';\nimport type { Extension } from '@codemirror/state';\nimport { StateEffect, StateField, RangeSetBuilder } from '@codemirror/state';\nimport type { DecorationSet } from '@codemirror/view';\nimport { Decoration, EditorView } from '@codemirror/view';\nimport { tags as t } from '@lezer/highlight';\nimport { draculaInit } from '@uiw/codemirror-theme-dracula';\nimport type { ReactCodeMirrorRef } from '@uiw/react-codemirror';\nimport ReactCodeMirror from '@uiw/react-codemirror';\nimport { AlignJustifyIcon, AlignLeftIcon, ExpandIcon, XIcon } from 'lucide-react';\nimport { useCallback, useMemo, useRef, useState } from 'react';\nimport { Button } from '@/ds/components/Button';\nimport { ButtonsGroup } from '@/ds/components/ButtonsGroup';\nimport { CopyButton } from '@/ds/components/CopyButton';\nimport { DataPanelSectionHeading } from '@/ds/components/DataPanel/data-panel-section-heading';\nimport {\n Dialog,\n DialogClose,\n DialogContent,\n DialogHeader,\n DialogTitle,\n DialogDescription,\n} from '@/ds/components/Dialog';\nimport { SearchFieldBlock } from '@/ds/components/FormFieldBlocks/fields/search-field-block';\nimport { useTheme } from '@/ds/components/ThemeProvider';\nimport { cn } from '@/lib/utils';\n\n// -- Search highlight extension -----------------------------------------------\n\nconst setSearchQuery = StateEffect.define<string>();\n\nconst searchHighlightMark = Decoration.mark({ class: 'cm-search-match' });\n\nconst searchHighlightField = StateField.define<DecorationSet>({\n create() {\n return Decoration.none;\n },\n update(decorations, tr) {\n for (const effect of tr.effects) {\n if (effect.is(setSearchQuery)) {\n const query = effect.value;\n if (!query) return Decoration.none;\n const builder = new RangeSetBuilder<Decoration>();\n const cursor = new SearchCursor(tr.state.doc, query, 0, tr.state.doc.length, (a: string) => a.toLowerCase());\n while (!cursor.next().done) {\n builder.add(cursor.value.from, cursor.value.to, searchHighlightMark);\n }\n return builder.finish();\n }\n }\n return decorations;\n },\n provide: f => EditorView.decorations.from(f),\n});\n\nconst searchHighlightTheme = EditorView.baseTheme({\n '.cm-search-match': {\n backgroundColor: 'color-mix(in srgb, var(--accent1) 60%, transparent)',\n borderRadius: 'var(--radius-sm)',\n },\n});\n\nfunction searchHighlightExtension(): Extension {\n return [searchHighlightField, searchHighlightTheme];\n}\n\n// -- Themes -------------------------------------------------------------------\n\nfunction buildDarkTheme(): Extension {\n return draculaInit({\n settings: {\n fontFamily: 'var(--font-mono)',\n fontSize: '0.75rem',\n lineHighlight: 'transparent',\n gutterBackground: 'transparent',\n gutterForeground: '#939393',\n background: 'transparent',\n },\n styles: [{ tag: [t.className, t.propertyName] }],\n });\n}\n\nfunction buildLightTheme(): Extension {\n const editorTheme = EditorView.theme({\n '&': {\n backgroundColor: 'transparent',\n color: 'var(--neutral6)',\n fontSize: '0.75rem',\n },\n '&.cm-editor .cm-scroller': {\n fontFamily: 'var(--font-mono)',\n },\n '.cm-gutters': {\n backgroundColor: 'transparent',\n color: 'var(--neutral2)',\n borderRight: 'none',\n },\n '.cm-content': {\n color: 'var(--neutral6)',\n caretColor: 'var(--neutral6)',\n },\n '.cm-activeLine': {\n backgroundColor: 'transparent',\n },\n '.cm-activeLineGutter': {\n backgroundColor: 'transparent',\n },\n '.cm-cursor, .cm-dropCursor': {\n borderLeftColor: 'var(--neutral6)',\n },\n });\n\n const highlightStyle = HighlightStyle.define([\n { tag: [t.comment, t.bracket], color: 'var(--neutral2)' },\n { tag: [t.string, t.meta, t.regexp], color: 'var(--accent1)' },\n { tag: [t.atom, t.bool, t.special(t.variableName)], color: 'var(--accent6)' },\n { tag: [t.keyword, t.operator, t.tagName], color: 'var(--accent2)' },\n { tag: [t.function(t.propertyName), t.propertyName], color: 'var(--accent5)' },\n {\n tag: [t.definition(t.variableName), t.function(t.variableName), t.className, t.attributeName],\n color: 'var(--accent3)',\n },\n { tag: [t.variableName, t.number], color: 'var(--accent5)' },\n { tag: [t.name, t.quote], color: 'var(--accent1)' },\n ]);\n\n return [editorTheme, syntaxHighlighting(highlightStyle)];\n}\n\nconst useCodemirrorTheme = (): Extension => {\n const isDark = useTheme().resolvedTheme === 'dark';\n return useMemo(() => (isDark ? buildDarkTheme() : buildLightTheme()), [isDark]);\n};\n\n// -- Component ----------------------------------------------------------------\n\nexport interface DataCodeSectionProps {\n title: React.ReactNode;\n dialogTitle?: React.ReactNode;\n icon?: React.ReactNode;\n codeStr?: string;\n simplified?: boolean;\n className?: string;\n}\n\nexport function DataCodeSection({\n codeStr = '',\n title,\n dialogTitle,\n icon,\n simplified = false,\n className,\n}: DataCodeSectionProps) {\n const theme = useCodemirrorTheme();\n const [showAsMultilineText, setShowAsMultilineText] = useState(false);\n const [searchMinimized, setSearchMinimized] = useState(true);\n const [searchQuery, setSearchQueryState] = useState('');\n const [expandedOpen, setExpandedOpen] = useState(false);\n const [expandedSearchQuery, setExpandedSearchQuery] = useState('');\n const [expandedMultiline, setExpandedMultiline] = useState(false);\n const editorRef = useRef<ReactCodeMirrorRef>(null);\n const expandedEditorRef = useRef<ReactCodeMirrorRef>(null);\n\n const hasMultilineText = useMemo(() => {\n try {\n const parsed = JSON.parse(codeStr);\n return containsInnerNewline(parsed || '');\n } catch {\n return false;\n }\n }, [codeStr]);\n\n const dispatchSearch = useCallback((query: string) => {\n const view = editorRef.current?.view;\n if (view) {\n view.dispatch({ effects: setSearchQuery.of(query) });\n if (query) {\n const cursor = new SearchCursor(view.state.doc, query, 0, view.state.doc.length, (a: string) =>\n a.toLowerCase(),\n );\n if (!cursor.next().done) {\n view.dispatch({\n selection: { anchor: cursor.value.from },\n scrollIntoView: true,\n });\n }\n }\n }\n }, []);\n\n const handleSearchChange = useCallback(\n (e: React.ChangeEvent<HTMLInputElement>) => {\n const val = e.target.value;\n setSearchQueryState(val);\n dispatchSearch(val);\n },\n [dispatchSearch],\n );\n\n const handleSearchReset = useCallback(() => {\n setSearchQueryState('');\n dispatchSearch('');\n }, [dispatchSearch]);\n\n const dispatchExpandedSearch = useCallback((query: string) => {\n const view = expandedEditorRef.current?.view;\n if (view) {\n view.dispatch({ effects: setSearchQuery.of(query) });\n if (query) {\n const cursor = new SearchCursor(view.state.doc, query, 0, view.state.doc.length, (a: string) =>\n a.toLowerCase(),\n );\n if (!cursor.next().done) {\n view.dispatch({\n selection: { anchor: cursor.value.from },\n scrollIntoView: true,\n });\n }\n }\n }\n }, []);\n\n const handleExpandedSearchChange = useCallback(\n (e: React.ChangeEvent<HTMLInputElement>) => {\n const val = e.target.value;\n setExpandedSearchQuery(val);\n dispatchExpandedSearch(val);\n },\n [dispatchExpandedSearch],\n );\n\n const handleExpandedSearchReset = useCallback(() => {\n setExpandedSearchQuery('');\n dispatchExpandedSearch('');\n }, [dispatchExpandedSearch]);\n\n const finalCodeStr = showAsMultilineText ? codeStr?.replace(/\\\\n/g, '\\n') : codeStr;\n const expandedFinalCodeStr = expandedMultiline ? codeStr?.replace(/\\\\n/g, '\\n') : codeStr;\n const usePlainTextView = simplified || showAsMultilineText;\n\n if (!codeStr || codeStr === 'null') return null;\n\n return (\n <div className={cn('flex flex-col gap-2', className)}>\n <div className=\"flex items-center justify-between\">\n <DataPanelSectionHeading icon={icon}>{title}</DataPanelSectionHeading>\n <div className=\"flex items-center gap-2\">\n {!usePlainTextView && (\n <SearchFieldBlock\n name=\"code-section-search\"\n label=\"Search code\"\n labelIsHidden\n placeholder=\"Search...\"\n value={searchQuery}\n onChange={handleSearchChange}\n onReset={handleSearchReset}\n size=\"sm\"\n isMinimized={searchMinimized}\n onMinimizedChange={setSearchMinimized}\n />\n )}\n <ButtonsGroup>\n <CopyButton content={codeStr || 'No content'} size=\"sm\" />\n {hasMultilineText && (\n <Button\n size=\"sm\"\n aria-label={showAsMultilineText ? 'Show escaped newlines' : 'Show multiline text'}\n tooltip={showAsMultilineText ? 'Show escaped newlines' : 'Show multiline text'}\n onClick={() => setShowAsMultilineText(v => !v)}\n >\n {showAsMultilineText ? <AlignLeftIcon /> : <AlignJustifyIcon />}\n </Button>\n )}\n <Button size=\"sm\" aria-label=\"Expand\" tooltip=\"Expand\" onClick={() => setExpandedOpen(true)}>\n <ExpandIcon />\n </Button>\n </ButtonsGroup>\n </div>\n </div>\n\n <div className=\"border-border1 bg-surface3 text-ui-sm text-neutral4 max-h-[30vh] overflow-hidden overflow-y-auto rounded-lg border p-3 break-all dark:border-white/10 dark:bg-black/20\">\n {usePlainTextView ? (\n <div className=\"text-neutral4 font-mono break-all\">\n <pre className=\"text-wrap\">{finalCodeStr}</pre>\n </div>\n ) : (\n <ReactCodeMirror\n ref={editorRef}\n extensions={[json(), EditorView.lineWrapping, searchHighlightExtension()]}\n theme={theme}\n value={codeStr}\n editable={false}\n />\n )}\n </div>\n\n <Dialog open={expandedOpen} onOpenChange={setExpandedOpen}>\n <DialogContent className=\"grid h-[calc(100vh-6rem)]! max-w-[90vw]! grid-rows-[auto_1fr] [&>.absolute]:hidden\">\n <DialogHeader className=\"flex-row items-center justify-between\">\n <DialogTitle className=\"text-ui-sm flex min-w-0 items-center gap-1.5 truncate [&>svg]:size-3.5\">\n {dialogTitle ?? (\n <>\n {icon}\n {title}\n </>\n )}\n </DialogTitle>\n <DialogDescription>Expanded code view</DialogDescription>\n <div className=\"flex shrink-0 items-center gap-2\">\n {!expandedMultiline && (\n <SearchFieldBlock\n name=\"expanded-code-search\"\n label=\"Search code\"\n labelIsHidden\n placeholder=\"Search...\"\n value={expandedSearchQuery}\n onChange={handleExpandedSearchChange}\n onReset={handleExpandedSearchReset}\n size=\"sm\"\n />\n )}\n <ButtonsGroup>\n <CopyButton content={codeStr || 'No content'} size=\"sm\" />\n {hasMultilineText && (\n <Button\n size=\"sm\"\n aria-label={expandedMultiline ? 'Show escaped newlines' : 'Show multiline text'}\n tooltip={expandedMultiline ? 'Show escaped newlines' : 'Show multiline text'}\n onClick={() => setExpandedMultiline(v => !v)}\n >\n {expandedMultiline ? <AlignLeftIcon /> : <AlignJustifyIcon />}\n </Button>\n )}\n <DialogClose asChild>\n <Button size=\"sm\" aria-label=\"Close\" tooltip=\"Close\">\n <XIcon />\n </Button>\n </DialogClose>\n </ButtonsGroup>\n </div>\n </DialogHeader>\n <div className=\"overflow-auto px-6 pb-6\">\n {expandedMultiline ? (\n <div className=\"border-border1 bg-surface3 text-ui-sm text-neutral4 overflow-hidden overflow-y-auto rounded-lg border p-3 break-all dark:border-white/10 dark:bg-black/20\">\n <div className=\"text-neutral4 font-mono break-all\">\n <pre className=\"text-wrap\">{expandedFinalCodeStr}</pre>\n </div>\n </div>\n ) : (\n <ReactCodeMirror\n ref={expandedEditorRef}\n extensions={[json(), EditorView.lineWrapping, searchHighlightExtension()]}\n theme={theme}\n value={codeStr}\n editable={false}\n />\n )}\n </div>\n </DialogContent>\n </Dialog>\n </div>\n );\n}\n\nfunction containsInnerNewline(obj: unknown): boolean {\n if (typeof obj === 'string') {\n const idx = obj.indexOf('\\n');\n return idx !== -1 && idx !== obj.length - 1;\n } else if (Array.isArray(obj)) {\n return obj.some(item => containsInnerNewline(item));\n } else if (obj && typeof obj === 'object') {\n return Object.values(obj).some(value => containsInnerNewline(value));\n }\n return false;\n}\n"],"names":["jsxs","cn","StateEffect","Decoration","StateField","RangeSetBuilder","SearchCursor","EditorView","draculaInit","t","HighlightStyle","syntaxHighlighting","useTheme","useMemo","useState","useRef","useCallback","jsx","SearchFieldBlock","ButtonsGroup","CopyButton","Button","AlignLeftIcon","AlignJustifyIcon","ExpandIcon","json","Dialog","DialogContent","DialogHeader","DialogTitle","Fragment","DialogDescription","DialogClose","XIcon"],"mappings":"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"}
@@ -1,76 +0,0 @@
1
- import { jsx, jsxs } from 'react/jsx-runtime';
2
- import { Dialog as Dialog$1 } from '@base-ui/react/dialog';
3
- import { X } from 'lucide-react';
4
- import * as React from 'react';
5
- import { B as Button } from './Button-BsfLQEC6.js';
6
- import { a as asChildRenderProps } from './as-child-N1qMDCr8.js';
7
- import { c as cn } from './cn-B4oPhFx9.js';
8
- import './dialog.css';/* empty css */
9
-
10
- const Dialog = Dialog$1.Root;
11
- const DialogTrigger = React.forwardRef(
12
- ({ asChild, children, ...props }, ref) => {
13
- return /* @__PURE__ */ jsx(Dialog$1.Trigger, { ref, ...asChildRenderProps(asChild, children), ...props, children: asChild ? void 0 : children });
14
- }
15
- );
16
- DialogTrigger.displayName = "DialogTrigger";
17
- const DialogPortal = Dialog$1.Portal;
18
- const DialogClose = React.forwardRef(({ asChild, children, ...props }, ref) => {
19
- return /* @__PURE__ */ jsx(Dialog$1.Close, { ref, ...asChildRenderProps(asChild, children), ...props, children: asChild ? void 0 : children });
20
- });
21
- DialogClose.displayName = "DialogClose";
22
- const DialogOverlay = React.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx(
23
- Dialog$1.Backdrop,
24
- {
25
- ref,
26
- className: cn("dialog-overlay-anim fixed inset-0 z-50 bg-overlay backdrop-blur-xs", className),
27
- ...props
28
- }
29
- ));
30
- DialogOverlay.displayName = "DialogOverlay";
31
- const DialogContent = React.forwardRef(
32
- ({ className, children, showOverlay = true, overlayClassName, ...props }, ref) => /* @__PURE__ */ jsxs(DialogPortal, { children: [
33
- showOverlay && /* @__PURE__ */ jsx(DialogOverlay, { className: overlayClassName }),
34
- /* @__PURE__ */ jsxs(
35
- Dialog$1.Popup,
36
- {
37
- ref,
38
- "data-slot": "dialog-content",
39
- className: cn(
40
- "dialog-content-anim",
41
- "fixed top-[50%] left-[50%] z-50 grid translate-[-50%]",
42
- "w-full max-w-[calc(100%-2rem)] sm:max-w-lg",
43
- "rounded-xl border border-border1/40 bg-surface2/96 shadow-dialog backdrop-blur-md",
44
- "focus-visible:outline-hidden",
45
- className
46
- ),
47
- ...props,
48
- children: [
49
- children,
50
- /* @__PURE__ */ jsx(
51
- Dialog$1.Close,
52
- {
53
- render: /* @__PURE__ */ jsx(Button, { variant: "ghost", size: "sm", className: "absolute top-3 right-3", "aria-label": "Close", children: /* @__PURE__ */ jsx(X, {}) })
54
- }
55
- )
56
- ]
57
- }
58
- )
59
- ] })
60
- );
61
- DialogContent.displayName = "DialogContent";
62
- const DialogHeader = ({ className, ...props }) => /* @__PURE__ */ jsx("div", { className: cn("flex flex-col gap-0.5 px-4 py-3 text-left", className), ...props });
63
- DialogHeader.displayName = "DialogHeader";
64
- const DialogFooter = ({ className, ...props }) => /* @__PURE__ */ jsx("div", { className: cn("flex flex-col-reverse gap-1.5 px-4 py-2.5 sm:flex-row sm:justify-end", className), ...props });
65
- DialogFooter.displayName = "DialogFooter";
66
- const DialogBody = ({ className, ...props }) => /* @__PURE__ */ jsx("div", { className: cn("max-h-[50vh] overflow-y-auto px-4 py-3.5", className), ...props });
67
- DialogBody.displayName = "DialogBody";
68
- const DialogTitle = React.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx(Dialog$1.Title, { ref, className: cn("text-ui-md font-medium", className), ...props }));
69
- DialogTitle.displayName = "DialogTitle";
70
- const DialogDescription = React.forwardRef(
71
- ({ className, ...props }, ref) => /* @__PURE__ */ jsx(Dialog$1.Description, { ref, className: cn("sr-only", className), ...props })
72
- );
73
- DialogDescription.displayName = "DialogDescription";
74
-
75
- export { Dialog as D, DialogBody as a, DialogClose as b, DialogContent as c, DialogDescription as d, DialogFooter as e, DialogHeader as f, DialogOverlay as g, DialogPortal as h, DialogTitle as i, DialogTrigger as j };
76
- //# sourceMappingURL=dialog-CESxLg8S.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"dialog-CESxLg8S.js","sources":["../src/ds/components/Dialog/dialog.tsx"],"sourcesContent":["import { Dialog as DialogPrimitive } from '@base-ui/react/dialog';\nimport { X } from 'lucide-react';\nimport * as React from 'react';\n\nimport { Button } from '@/ds/components/Button';\nimport { asChildRenderProps } from '@/lib/as-child';\nimport { cn } from '@/lib/utils';\n\nimport './dialog.css';\n\nconst Dialog = DialogPrimitive.Root;\n\ntype DialogTriggerProps = DialogPrimitive.Trigger.Props & {\n /** @deprecated Use Base UI's native `render` prop instead for stronger composition typing. */\n asChild?: boolean;\n};\n\nconst DialogTrigger = React.forwardRef<HTMLButtonElement, DialogTriggerProps>(\n ({ asChild, children, ...props }, ref) => {\n return (\n <DialogPrimitive.Trigger ref={ref} {...asChildRenderProps(asChild, children)} {...props}>\n {asChild ? undefined : children}\n </DialogPrimitive.Trigger>\n );\n },\n);\nDialogTrigger.displayName = 'DialogTrigger';\n\nconst DialogPortal = DialogPrimitive.Portal;\n\ntype DialogCloseProps = DialogPrimitive.Close.Props & {\n /** @deprecated Use Base UI's native `render` prop instead for stronger composition typing. */\n asChild?: boolean;\n};\n\nconst DialogClose = React.forwardRef<HTMLButtonElement, DialogCloseProps>(({ asChild, children, ...props }, ref) => {\n return (\n <DialogPrimitive.Close ref={ref} {...asChildRenderProps(asChild, children)} {...props}>\n {asChild ? undefined : children}\n </DialogPrimitive.Close>\n );\n});\nDialogClose.displayName = 'DialogClose';\n\ntype DialogOverlayProps = Omit<DialogPrimitive.Backdrop.Props, 'className'> & {\n className?: string;\n};\n\nconst DialogOverlay = React.forwardRef<HTMLDivElement, DialogOverlayProps>(({ className, ...props }, ref) => (\n <DialogPrimitive.Backdrop\n ref={ref}\n className={cn('dialog-overlay-anim fixed inset-0 z-50 bg-overlay backdrop-blur-xs', className)}\n {...props}\n />\n));\nDialogOverlay.displayName = 'DialogOverlay';\n\ntype DialogContentProps = Omit<DialogPrimitive.Popup.Props, 'className'> & {\n className?: string;\n showOverlay?: boolean;\n overlayClassName?: string;\n};\n\nconst DialogContent = React.forwardRef<HTMLDivElement, DialogContentProps>(\n ({ className, children, showOverlay = true, overlayClassName, ...props }, ref) => (\n <DialogPortal>\n {showOverlay && <DialogOverlay className={overlayClassName} />}\n <DialogPrimitive.Popup\n ref={ref}\n data-slot=\"dialog-content\"\n className={cn(\n 'dialog-content-anim',\n 'fixed top-[50%] left-[50%] z-50 grid translate-[-50%]',\n 'w-full max-w-[calc(100%-2rem)] sm:max-w-lg',\n 'rounded-xl border border-border1/40 bg-surface2/96 shadow-dialog backdrop-blur-md',\n 'focus-visible:outline-hidden',\n className,\n )}\n {...props}\n >\n {children}\n <DialogPrimitive.Close\n render={\n <Button variant=\"ghost\" size=\"sm\" className=\"absolute top-3 right-3\" aria-label=\"Close\">\n <X />\n </Button>\n }\n />\n </DialogPrimitive.Popup>\n </DialogPortal>\n ),\n);\nDialogContent.displayName = 'DialogContent';\n\nconst DialogHeader = ({ className, ...props }: React.HTMLAttributes<HTMLDivElement>) => (\n <div className={cn('flex flex-col gap-0.5 px-4 py-3 text-left', className)} {...props} />\n);\nDialogHeader.displayName = 'DialogHeader';\n\nconst DialogFooter = ({ className, ...props }: React.HTMLAttributes<HTMLDivElement>) => (\n <div className={cn('flex flex-col-reverse gap-1.5 px-4 py-2.5 sm:flex-row sm:justify-end', className)} {...props} />\n);\nDialogFooter.displayName = 'DialogFooter';\n\nconst DialogBody = ({ className, ...props }: React.HTMLAttributes<HTMLDivElement>) => (\n <div className={cn('max-h-[50vh] overflow-y-auto px-4 py-3.5', className)} {...props} />\n);\nDialogBody.displayName = 'DialogBody';\n\ntype DialogTitleProps = Omit<DialogPrimitive.Title.Props, 'className'> & {\n className?: string;\n};\n\nconst DialogTitle = React.forwardRef<HTMLHeadingElement, DialogTitleProps>(({ className, ...props }, ref) => (\n <DialogPrimitive.Title ref={ref} className={cn('text-ui-md font-medium', className)} {...props} />\n));\nDialogTitle.displayName = 'DialogTitle';\n\ntype DialogDescriptionProps = Omit<DialogPrimitive.Description.Props, 'className'> & {\n className?: string;\n};\n\nconst DialogDescription = React.forwardRef<HTMLParagraphElement, DialogDescriptionProps>(\n ({ className, ...props }, ref) => (\n <DialogPrimitive.Description ref={ref} className={cn('sr-only', className)} {...props} />\n ),\n);\nDialogDescription.displayName = 'DialogDescription';\n\nexport {\n Dialog,\n DialogPortal,\n DialogOverlay,\n DialogTrigger,\n DialogClose,\n DialogContent,\n DialogHeader,\n DialogFooter,\n DialogBody,\n DialogTitle,\n DialogDescription,\n};\n"],"names":["DialogPrimitive"],"mappings":"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"}
@@ -1,107 +0,0 @@
1
- 'use strict';
2
-
3
- require('./dialog.css');const jsxRuntime = require('react/jsx-runtime');
4
- const dialog = require('@base-ui/react/dialog');
5
- const lucideReact = require('lucide-react');
6
- const React = require('react');
7
- const Button = require('./Button-D10WB4vc.cjs');
8
- const asChild = require('./as-child-Dgr1RHLO.cjs');
9
- const utils_cn = require('./cn-DCPcv4xv.cjs');
10
- ;/* empty css */
11
-
12
- function _interopNamespaceDefault(e) {
13
- const n = Object.create(null, { [Symbol.toStringTag]: { value: 'Module' } });
14
- if (e) {
15
- for (const k in e) {
16
- if (k !== 'default') {
17
- const d = Object.getOwnPropertyDescriptor(e, k);
18
- Object.defineProperty(n, k, d.get ? d : {
19
- enumerable: true,
20
- get: () => e[k]
21
- });
22
- }
23
- }
24
- }
25
- n.default = e;
26
- return Object.freeze(n);
27
- }
28
-
29
- const React__namespace = /*#__PURE__*/_interopNamespaceDefault(React);
30
-
31
- const Dialog = dialog.Dialog.Root;
32
- const DialogTrigger = React__namespace.forwardRef(
33
- ({ asChild: asChild$1, children, ...props }, ref) => {
34
- return /* @__PURE__ */ jsxRuntime.jsx(dialog.Dialog.Trigger, { ref, ...asChild.asChildRenderProps(asChild$1, children), ...props, children: asChild$1 ? void 0 : children });
35
- }
36
- );
37
- DialogTrigger.displayName = "DialogTrigger";
38
- const DialogPortal = dialog.Dialog.Portal;
39
- const DialogClose = React__namespace.forwardRef(({ asChild: asChild$1, children, ...props }, ref) => {
40
- return /* @__PURE__ */ jsxRuntime.jsx(dialog.Dialog.Close, { ref, ...asChild.asChildRenderProps(asChild$1, children), ...props, children: asChild$1 ? void 0 : children });
41
- });
42
- DialogClose.displayName = "DialogClose";
43
- const DialogOverlay = React__namespace.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsxRuntime.jsx(
44
- dialog.Dialog.Backdrop,
45
- {
46
- ref,
47
- className: utils_cn.cn("dialog-overlay-anim fixed inset-0 z-50 bg-overlay backdrop-blur-xs", className),
48
- ...props
49
- }
50
- ));
51
- DialogOverlay.displayName = "DialogOverlay";
52
- const DialogContent = React__namespace.forwardRef(
53
- ({ className, children, showOverlay = true, overlayClassName, ...props }, ref) => /* @__PURE__ */ jsxRuntime.jsxs(DialogPortal, { children: [
54
- showOverlay && /* @__PURE__ */ jsxRuntime.jsx(DialogOverlay, { className: overlayClassName }),
55
- /* @__PURE__ */ jsxRuntime.jsxs(
56
- dialog.Dialog.Popup,
57
- {
58
- ref,
59
- "data-slot": "dialog-content",
60
- className: utils_cn.cn(
61
- "dialog-content-anim",
62
- "fixed top-[50%] left-[50%] z-50 grid translate-[-50%]",
63
- "w-full max-w-[calc(100%-2rem)] sm:max-w-lg",
64
- "rounded-xl border border-border1/40 bg-surface2/96 shadow-dialog backdrop-blur-md",
65
- "focus-visible:outline-hidden",
66
- className
67
- ),
68
- ...props,
69
- children: [
70
- children,
71
- /* @__PURE__ */ jsxRuntime.jsx(
72
- dialog.Dialog.Close,
73
- {
74
- render: /* @__PURE__ */ jsxRuntime.jsx(Button.Button, { variant: "ghost", size: "sm", className: "absolute top-3 right-3", "aria-label": "Close", children: /* @__PURE__ */ jsxRuntime.jsx(lucideReact.X, {}) })
75
- }
76
- )
77
- ]
78
- }
79
- )
80
- ] })
81
- );
82
- DialogContent.displayName = "DialogContent";
83
- const DialogHeader = ({ className, ...props }) => /* @__PURE__ */ jsxRuntime.jsx("div", { className: utils_cn.cn("flex flex-col gap-0.5 px-4 py-3 text-left", className), ...props });
84
- DialogHeader.displayName = "DialogHeader";
85
- const DialogFooter = ({ className, ...props }) => /* @__PURE__ */ jsxRuntime.jsx("div", { className: utils_cn.cn("flex flex-col-reverse gap-1.5 px-4 py-2.5 sm:flex-row sm:justify-end", className), ...props });
86
- DialogFooter.displayName = "DialogFooter";
87
- const DialogBody = ({ className, ...props }) => /* @__PURE__ */ jsxRuntime.jsx("div", { className: utils_cn.cn("max-h-[50vh] overflow-y-auto px-4 py-3.5", className), ...props });
88
- DialogBody.displayName = "DialogBody";
89
- const DialogTitle = React__namespace.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsxRuntime.jsx(dialog.Dialog.Title, { ref, className: utils_cn.cn("text-ui-md font-medium", className), ...props }));
90
- DialogTitle.displayName = "DialogTitle";
91
- const DialogDescription = React__namespace.forwardRef(
92
- ({ className, ...props }, ref) => /* @__PURE__ */ jsxRuntime.jsx(dialog.Dialog.Description, { ref, className: utils_cn.cn("sr-only", className), ...props })
93
- );
94
- DialogDescription.displayName = "DialogDescription";
95
-
96
- exports.Dialog = Dialog;
97
- exports.DialogBody = DialogBody;
98
- exports.DialogClose = DialogClose;
99
- exports.DialogContent = DialogContent;
100
- exports.DialogDescription = DialogDescription;
101
- exports.DialogFooter = DialogFooter;
102
- exports.DialogHeader = DialogHeader;
103
- exports.DialogOverlay = DialogOverlay;
104
- exports.DialogPortal = DialogPortal;
105
- exports.DialogTitle = DialogTitle;
106
- exports.DialogTrigger = DialogTrigger;
107
- //# sourceMappingURL=dialog-K0q0KOOW.cjs.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"dialog-K0q0KOOW.cjs","sources":["../src/ds/components/Dialog/dialog.tsx"],"sourcesContent":["import { Dialog as DialogPrimitive } from '@base-ui/react/dialog';\nimport { X } from 'lucide-react';\nimport * as React from 'react';\n\nimport { Button } from '@/ds/components/Button';\nimport { asChildRenderProps } from '@/lib/as-child';\nimport { cn } from '@/lib/utils';\n\nimport './dialog.css';\n\nconst Dialog = DialogPrimitive.Root;\n\ntype DialogTriggerProps = DialogPrimitive.Trigger.Props & {\n /** @deprecated Use Base UI's native `render` prop instead for stronger composition typing. */\n asChild?: boolean;\n};\n\nconst DialogTrigger = React.forwardRef<HTMLButtonElement, DialogTriggerProps>(\n ({ asChild, children, ...props }, ref) => {\n return (\n <DialogPrimitive.Trigger ref={ref} {...asChildRenderProps(asChild, children)} {...props}>\n {asChild ? undefined : children}\n </DialogPrimitive.Trigger>\n );\n },\n);\nDialogTrigger.displayName = 'DialogTrigger';\n\nconst DialogPortal = DialogPrimitive.Portal;\n\ntype DialogCloseProps = DialogPrimitive.Close.Props & {\n /** @deprecated Use Base UI's native `render` prop instead for stronger composition typing. */\n asChild?: boolean;\n};\n\nconst DialogClose = React.forwardRef<HTMLButtonElement, DialogCloseProps>(({ asChild, children, ...props }, ref) => {\n return (\n <DialogPrimitive.Close ref={ref} {...asChildRenderProps(asChild, children)} {...props}>\n {asChild ? undefined : children}\n </DialogPrimitive.Close>\n );\n});\nDialogClose.displayName = 'DialogClose';\n\ntype DialogOverlayProps = Omit<DialogPrimitive.Backdrop.Props, 'className'> & {\n className?: string;\n};\n\nconst DialogOverlay = React.forwardRef<HTMLDivElement, DialogOverlayProps>(({ className, ...props }, ref) => (\n <DialogPrimitive.Backdrop\n ref={ref}\n className={cn('dialog-overlay-anim fixed inset-0 z-50 bg-overlay backdrop-blur-xs', className)}\n {...props}\n />\n));\nDialogOverlay.displayName = 'DialogOverlay';\n\ntype DialogContentProps = Omit<DialogPrimitive.Popup.Props, 'className'> & {\n className?: string;\n showOverlay?: boolean;\n overlayClassName?: string;\n};\n\nconst DialogContent = React.forwardRef<HTMLDivElement, DialogContentProps>(\n ({ className, children, showOverlay = true, overlayClassName, ...props }, ref) => (\n <DialogPortal>\n {showOverlay && <DialogOverlay className={overlayClassName} />}\n <DialogPrimitive.Popup\n ref={ref}\n data-slot=\"dialog-content\"\n className={cn(\n 'dialog-content-anim',\n 'fixed top-[50%] left-[50%] z-50 grid translate-[-50%]',\n 'w-full max-w-[calc(100%-2rem)] sm:max-w-lg',\n 'rounded-xl border border-border1/40 bg-surface2/96 shadow-dialog backdrop-blur-md',\n 'focus-visible:outline-hidden',\n className,\n )}\n {...props}\n >\n {children}\n <DialogPrimitive.Close\n render={\n <Button variant=\"ghost\" size=\"sm\" className=\"absolute top-3 right-3\" aria-label=\"Close\">\n <X />\n </Button>\n }\n />\n </DialogPrimitive.Popup>\n </DialogPortal>\n ),\n);\nDialogContent.displayName = 'DialogContent';\n\nconst DialogHeader = ({ className, ...props }: React.HTMLAttributes<HTMLDivElement>) => (\n <div className={cn('flex flex-col gap-0.5 px-4 py-3 text-left', className)} {...props} />\n);\nDialogHeader.displayName = 'DialogHeader';\n\nconst DialogFooter = ({ className, ...props }: React.HTMLAttributes<HTMLDivElement>) => (\n <div className={cn('flex flex-col-reverse gap-1.5 px-4 py-2.5 sm:flex-row sm:justify-end', className)} {...props} />\n);\nDialogFooter.displayName = 'DialogFooter';\n\nconst DialogBody = ({ className, ...props }: React.HTMLAttributes<HTMLDivElement>) => (\n <div className={cn('max-h-[50vh] overflow-y-auto px-4 py-3.5', className)} {...props} />\n);\nDialogBody.displayName = 'DialogBody';\n\ntype DialogTitleProps = Omit<DialogPrimitive.Title.Props, 'className'> & {\n className?: string;\n};\n\nconst DialogTitle = React.forwardRef<HTMLHeadingElement, DialogTitleProps>(({ className, ...props }, ref) => (\n <DialogPrimitive.Title ref={ref} className={cn('text-ui-md font-medium', className)} {...props} />\n));\nDialogTitle.displayName = 'DialogTitle';\n\ntype DialogDescriptionProps = Omit<DialogPrimitive.Description.Props, 'className'> & {\n className?: string;\n};\n\nconst DialogDescription = React.forwardRef<HTMLParagraphElement, DialogDescriptionProps>(\n ({ className, ...props }, ref) => (\n <DialogPrimitive.Description ref={ref} className={cn('sr-only', className)} {...props} />\n ),\n);\nDialogDescription.displayName = 'DialogDescription';\n\nexport {\n Dialog,\n DialogPortal,\n DialogOverlay,\n DialogTrigger,\n DialogClose,\n DialogContent,\n DialogHeader,\n DialogFooter,\n DialogBody,\n DialogTitle,\n DialogDescription,\n};\n"],"names":["DialogPrimitive","React","asChild","jsx","asChildRenderProps","cn","jsxs","Button","X"],"mappings":"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"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"horizontal-bars-CE1O-Y6G.cjs","sources":["../src/ds/components/HorizontalBars/horizontal-bars.tsx"],"sourcesContent":["import type { ReactNode } from 'react';\nimport { ScrollArea } from '@/ds/components/ScrollArea/scroll-area';\nimport { Tooltip, TooltipTrigger, TooltipContent } from '@/ds/components/Tooltip';\nimport type { LinkComponent } from '@/ds/types/link-component';\nimport { cn } from '@/lib/utils';\n\ntype Segment = { label: string; color: string };\n\ntype HorizontalBarRow = {\n name: string;\n values: number[];\n /** If present, the whole row is rendered as a link to this URL. */\n href?: string;\n /** If present, an individual segment becomes its own link. Indices align with `segments`. */\n hrefs?: Array<string | undefined>;\n};\n\nexport function HorizontalBars({\n data,\n segments,\n maxVal,\n fmt,\n className,\n LinkComponent = 'a',\n}: {\n data: Array<HorizontalBarRow>;\n segments: Segment[];\n maxVal: number;\n fmt: (v: number) => string;\n className?: string;\n /** Override how links produced by `href` / `hrefs` are rendered. Receives `href`,\n * `className`, `aria-label`, and `children`. Defaults to a plain `<a>` element;\n * consumers using a router should pass an adapter that maps `href` to their\n * navigation primitive (e.g. react-router `<Link to={href} />`). */\n LinkComponent?: LinkComponent;\n}) {\n const sorted = [...data].sort((a, b) => {\n const totalB = b.values.reduce((s, v) => s + v, 0);\n const totalA = a.values.reduce((s, v) => s + v, 0);\n return totalB - totalA;\n });\n\n const isStacked = segments.length > 1;\n\n return (\n <ScrollArea className={cn('size-full', className)}>\n <div className=\"mt-2 mb-4 flex items-center gap-3\">\n <div className=\"flex flex-1 items-center gap-4\">\n {segments.map(seg => (\n <div key={seg.label} className=\"flex items-center gap-2\">\n <div className=\"size-2 rounded-full\" style={{ backgroundColor: seg.color }} />\n <span className=\"text-ui-sm text-neutral3\">{seg.label}</span>\n </div>\n ))}\n </div>\n <span className=\"text-ui-sm text-neutral2 shrink-0 pr-2\">Total</span>\n </div>\n <div className=\"grid gap-3.5\">\n {sorted.map(d => {\n const total = d.values.reduce((s, v) => s + v, 0);\n const rowBody = (\n <>\n <div className=\"relative h-full min-w-0 flex-1\">\n <Tooltip>\n <TooltipTrigger asChild>\n <div\n className={cn('absolute inset-y-0 left-0', d.href ? 'cursor-pointer' : 'cursor-default')}\n style={{ width: `${maxVal > 0 ? (total / maxVal) * 100 : 0}%` }}\n >\n {segments.map((seg, si) => {\n const val = d.values[si] ?? 0;\n const pct = total > 0 ? (val / total) * 100 : 0;\n const left = d.values.slice(0, si).reduce((s, v) => s + (total > 0 ? (v / total) * 100 : 0), 0);\n const isLastWithValue = d.values.slice(si + 1).every(v => !v);\n // Only honor segment-level links when the row itself is not an anchor.\n // Otherwise we'd render <a> nested inside <a>, which is invalid HTML.\n const segHref = d.href ? undefined : d.hrefs?.[si];\n\n const segmentNode = (\n <div\n className={cn(\n 'absolute inset-y-0 opacity-40 dark:opacity-100',\n isStacked && si === 0 && 'rounded-l',\n isStacked && isLastWithValue && 'rounded-r',\n !isStacked && 'rounded',\n segHref && 'cursor-pointer transition-opacity hover:opacity-70',\n )}\n style={{\n left: isStacked ? `${left}%` : 0,\n width: isStacked ? `${pct}%` : `${pct}%`,\n backgroundColor: seg.color,\n }}\n />\n );\n\n if (segHref) {\n return (\n <LinkComponent\n key={seg.label}\n href={segHref}\n aria-label={`${d.name} — ${seg.label}`}\n className=\"contents\"\n >\n {segmentNode}\n </LinkComponent>\n );\n }\n return <Wrapper key={seg.label}>{segmentNode}</Wrapper>;\n })}\n </div>\n </TooltipTrigger>\n <TooltipContent side=\"top\" className=\"font-mono\">\n <div className=\"grid gap-1\">\n {segments.map((seg, si) => (\n <div key={seg.label} className=\"flex items-center gap-2\">\n <span>{seg.label}</span>\n <span className=\"ml-auto pl-3\">{fmt(d.values[si] ?? 0)}</span>\n </div>\n ))}\n </div>\n </TooltipContent>\n </Tooltip>\n <span className=\"text-ui-sm text-neutral4 pointer-events-none absolute inset-y-0 left-2.5 z-10 flex items-center truncate\">\n {d.name}\n </span>\n </div>\n <span className=\"text-ui-md text-neutral4 shrink-0 pr-3 tabular-nums\">{fmt(total)}</span>\n </>\n );\n\n if (d.href) {\n return (\n <LinkComponent\n key={d.name}\n href={d.href}\n className=\"hover:bg-surface3 focus-visible:bg-surface3 flex h-6 cursor-pointer items-center gap-14 rounded transition-colors outline-none\"\n >\n {rowBody}\n </LinkComponent>\n );\n }\n return (\n <div key={d.name} className=\"flex h-6 items-center gap-14\">\n {rowBody}\n </div>\n );\n })}\n </div>\n </ScrollArea>\n );\n}\n\nfunction Wrapper({ children }: { children: ReactNode }) {\n return <>{children}</>;\n}\n"],"names":["ScrollArea","cn","jsxs","jsx","Fragment","Tooltip","TooltipTrigger","TooltipContent"],"mappings":"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"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"horizontal-bars-DZ5J4TKv.js","sources":["../src/ds/components/HorizontalBars/horizontal-bars.tsx"],"sourcesContent":["import type { ReactNode } from 'react';\nimport { ScrollArea } from '@/ds/components/ScrollArea/scroll-area';\nimport { Tooltip, TooltipTrigger, TooltipContent } from '@/ds/components/Tooltip';\nimport type { LinkComponent } from '@/ds/types/link-component';\nimport { cn } from '@/lib/utils';\n\ntype Segment = { label: string; color: string };\n\ntype HorizontalBarRow = {\n name: string;\n values: number[];\n /** If present, the whole row is rendered as a link to this URL. */\n href?: string;\n /** If present, an individual segment becomes its own link. Indices align with `segments`. */\n hrefs?: Array<string | undefined>;\n};\n\nexport function HorizontalBars({\n data,\n segments,\n maxVal,\n fmt,\n className,\n LinkComponent = 'a',\n}: {\n data: Array<HorizontalBarRow>;\n segments: Segment[];\n maxVal: number;\n fmt: (v: number) => string;\n className?: string;\n /** Override how links produced by `href` / `hrefs` are rendered. Receives `href`,\n * `className`, `aria-label`, and `children`. Defaults to a plain `<a>` element;\n * consumers using a router should pass an adapter that maps `href` to their\n * navigation primitive (e.g. react-router `<Link to={href} />`). */\n LinkComponent?: LinkComponent;\n}) {\n const sorted = [...data].sort((a, b) => {\n const totalB = b.values.reduce((s, v) => s + v, 0);\n const totalA = a.values.reduce((s, v) => s + v, 0);\n return totalB - totalA;\n });\n\n const isStacked = segments.length > 1;\n\n return (\n <ScrollArea className={cn('size-full', className)}>\n <div className=\"mt-2 mb-4 flex items-center gap-3\">\n <div className=\"flex flex-1 items-center gap-4\">\n {segments.map(seg => (\n <div key={seg.label} className=\"flex items-center gap-2\">\n <div className=\"size-2 rounded-full\" style={{ backgroundColor: seg.color }} />\n <span className=\"text-ui-sm text-neutral3\">{seg.label}</span>\n </div>\n ))}\n </div>\n <span className=\"text-ui-sm text-neutral2 shrink-0 pr-2\">Total</span>\n </div>\n <div className=\"grid gap-3.5\">\n {sorted.map(d => {\n const total = d.values.reduce((s, v) => s + v, 0);\n const rowBody = (\n <>\n <div className=\"relative h-full min-w-0 flex-1\">\n <Tooltip>\n <TooltipTrigger asChild>\n <div\n className={cn('absolute inset-y-0 left-0', d.href ? 'cursor-pointer' : 'cursor-default')}\n style={{ width: `${maxVal > 0 ? (total / maxVal) * 100 : 0}%` }}\n >\n {segments.map((seg, si) => {\n const val = d.values[si] ?? 0;\n const pct = total > 0 ? (val / total) * 100 : 0;\n const left = d.values.slice(0, si).reduce((s, v) => s + (total > 0 ? (v / total) * 100 : 0), 0);\n const isLastWithValue = d.values.slice(si + 1).every(v => !v);\n // Only honor segment-level links when the row itself is not an anchor.\n // Otherwise we'd render <a> nested inside <a>, which is invalid HTML.\n const segHref = d.href ? undefined : d.hrefs?.[si];\n\n const segmentNode = (\n <div\n className={cn(\n 'absolute inset-y-0 opacity-40 dark:opacity-100',\n isStacked && si === 0 && 'rounded-l',\n isStacked && isLastWithValue && 'rounded-r',\n !isStacked && 'rounded',\n segHref && 'cursor-pointer transition-opacity hover:opacity-70',\n )}\n style={{\n left: isStacked ? `${left}%` : 0,\n width: isStacked ? `${pct}%` : `${pct}%`,\n backgroundColor: seg.color,\n }}\n />\n );\n\n if (segHref) {\n return (\n <LinkComponent\n key={seg.label}\n href={segHref}\n aria-label={`${d.name} — ${seg.label}`}\n className=\"contents\"\n >\n {segmentNode}\n </LinkComponent>\n );\n }\n return <Wrapper key={seg.label}>{segmentNode}</Wrapper>;\n })}\n </div>\n </TooltipTrigger>\n <TooltipContent side=\"top\" className=\"font-mono\">\n <div className=\"grid gap-1\">\n {segments.map((seg, si) => (\n <div key={seg.label} className=\"flex items-center gap-2\">\n <span>{seg.label}</span>\n <span className=\"ml-auto pl-3\">{fmt(d.values[si] ?? 0)}</span>\n </div>\n ))}\n </div>\n </TooltipContent>\n </Tooltip>\n <span className=\"text-ui-sm text-neutral4 pointer-events-none absolute inset-y-0 left-2.5 z-10 flex items-center truncate\">\n {d.name}\n </span>\n </div>\n <span className=\"text-ui-md text-neutral4 shrink-0 pr-3 tabular-nums\">{fmt(total)}</span>\n </>\n );\n\n if (d.href) {\n return (\n <LinkComponent\n key={d.name}\n href={d.href}\n className=\"hover:bg-surface3 focus-visible:bg-surface3 flex h-6 cursor-pointer items-center gap-14 rounded transition-colors outline-none\"\n >\n {rowBody}\n </LinkComponent>\n );\n }\n return (\n <div key={d.name} className=\"flex h-6 items-center gap-14\">\n {rowBody}\n </div>\n );\n })}\n </div>\n </ScrollArea>\n );\n}\n\nfunction Wrapper({ children }: { children: ReactNode }) {\n return <>{children}</>;\n}\n"],"names":[],"mappings":"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"}