@mastra/playground-ui 38.0.0-alpha.8 → 38.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 (35) hide show
  1. package/CHANGELOG.md +38 -0
  2. package/dist/{Entity-Bwbh0iLW.cjs → Entity-BYv3HxFw.cjs} +3 -2
  3. package/dist/{Entity-Bwbh0iLW.cjs.map → Entity-BYv3HxFw.cjs.map} +1 -1
  4. package/dist/{Entity-CyYGTYWL.js → Entity-Bm2Ej7Is.js} +3 -2
  5. package/dist/{Entity-CyYGTYWL.js.map → Entity-Bm2Ej7Is.js.map} +1 -1
  6. package/dist/components/Columns.cjs.js +1 -1
  7. package/dist/components/Columns.es.js +1 -1
  8. package/dist/components/Entity.cjs.js +1 -1
  9. package/dist/components/Entity.es.js +1 -1
  10. package/dist/components/EntityHeader.cjs.js +1 -1
  11. package/dist/components/EntityHeader.es.js +1 -1
  12. package/dist/components/RuleBuilder.cjs.js +1 -1
  13. package/dist/components/RuleBuilder.es.js +1 -1
  14. package/dist/{entity-header-C8I47AfB.js → entity-header-0O1DTUKq.js} +2 -1
  15. package/dist/{entity-header-C8I47AfB.js.map → entity-header-0O1DTUKq.js.map} +1 -1
  16. package/dist/{entity-header-FXlDOgXp.cjs → entity-header-DqFtpiMx.cjs} +2 -1
  17. package/dist/{entity-header-FXlDOgXp.cjs.map → entity-header-DqFtpiMx.cjs.map} +1 -1
  18. package/dist/index.cjs.js +137 -137
  19. package/dist/index.es.js +66 -66
  20. package/dist/{multi-column-B5nBrjmh.cjs → multi-column-BaLTJpM1.cjs} +2 -1
  21. package/dist/{multi-column-B5nBrjmh.cjs.map → multi-column-BaLTJpM1.cjs.map} +1 -1
  22. package/dist/{multi-column-CUxbXyQp.js → multi-column-VYOIJrLB.js} +2 -1
  23. package/dist/{multi-column-CUxbXyQp.js.map → multi-column-VYOIJrLB.js.map} +1 -1
  24. package/dist/resize/collapsible-panel.cjs.js +1 -1
  25. package/dist/resize/collapsible-panel.es.js +1 -1
  26. package/dist/resize/panel-drawer.cjs.js +2 -1
  27. package/dist/resize/panel-drawer.cjs.js.map +1 -1
  28. package/dist/resize/panel-drawer.es.js +2 -1
  29. package/dist/resize/panel-drawer.es.js.map +1 -1
  30. package/dist/{rule-builder-CN5HwvJ3.cjs → rule-builder-BGlwYc1Q.cjs} +2 -2
  31. package/dist/{rule-builder-CN5HwvJ3.cjs.map → rule-builder-BGlwYc1Q.cjs.map} +1 -1
  32. package/dist/{rule-builder-B7J3z1Gd.js → rule-builder-DYON077L.js} +2 -2
  33. package/dist/{rule-builder-B7J3z1Gd.js.map → rule-builder-DYON077L.js.map} +1 -1
  34. package/dist/src/domains/memory/hooks/use-observational-memory.d.ts +40 -0
  35. package/package.json +8 -8
package/dist/index.es.js CHANGED
@@ -6,7 +6,7 @@ export { B as Button, b as buttonVariants } from './Button-Bq0VuEbC.js';
6
6
  export { C as CodeEditor, V as VARIABLE_PATTERN, c as codeLanguages, a as createVariableAutocomplete, f as flattenSchemaToVariables, u as useCodemirrorTheme, v as variableHighlight } from './code-editor-BoBPNQhp.js';
7
7
  export { h as highlight } from './highlight-Dis62bkj.js';
8
8
  export { E as EmptyState } from './EmptyState-Cy8hG1-a.js';
9
- export { E as Entity, a as EntityContent, b as EntityDescription, c as EntityIcon, d as EntityName } from './Entity-CyYGTYWL.js';
9
+ export { E as Entity, a as EntityContent, b as EntityDescription, c as EntityIcon, d as EntityName } from './Entity-Bm2Ej7Is.js';
10
10
  export { P as PermissionDenied } from './PermissionDenied-DgS-ANHj.js';
11
11
  export { S as SessionExpired } from './SessionExpired-Di89Q6es.js';
12
12
  export { H as Header, a as HeaderAction, b as HeaderGroup, c as HeaderTitle } from './Header-DQvlg0Sf.js';
@@ -28,7 +28,7 @@ export { D as Dialog, a as DialogBody, b as DialogClose, c as DialogContent, d a
28
28
  export { D as Drawer, a as DrawerBackdrop, b as DrawerBody, c as DrawerClose, d as DrawerContent, e as DrawerDescription, f as DrawerFooter, g as DrawerHeader, h as DrawerIndent, i as DrawerIndentBackground, j as DrawerInteractive, k as DrawerPopup, l as DrawerPortal, m as DrawerProvider, n as DrawerSwipeArea, o as DrawerTitle, p as DrawerTrigger, q as DrawerViewport, r as createDrawerHandle, u as useDrawerSide } from './drawer-Xyd1zBeV.js';
29
29
  export { D as DropdownMenu } from './dropdown-menu-CGei48WH.js';
30
30
  export { E as Entry } from './entry-Dn_tH23N.js';
31
- export { E as EntityHeader } from './entity-header-C8I47AfB.js';
31
+ export { E as EntityHeader } from './entity-header-0O1DTUKq.js';
32
32
  export { F as FieldBlock } from './field-block-CpRBHzQO.js';
33
33
  export { F as FieldBlocksLayout } from './field-blocks-layout-CWb7D6dY.js';
34
34
  export { T as TextFieldBlock } from './text-field-block-wLF3JlhE.js';
@@ -78,7 +78,7 @@ export { T as Tab, a as TabList, b as Tabs } from './tabs-tab-XnMoa1fn.js';
78
78
  export { T as TabContent } from './tabs-content--uzXt5ch.js';
79
79
  export { T as TextAndIcon, g as getShortId } from './get-short-id-ZED99MfC.js';
80
80
  export { C as ContentBlock, a as ContentBlocks } from './content-block-BTpK7gPz.js';
81
- export { C as Column, a as Columns, M as MultiColumn } from './multi-column-CUxbXyQp.js';
81
+ export { C as Column, a as Columns, M as MultiColumn } from './multi-column-VYOIJrLB.js';
82
82
  export { C as CodeDiff } from './code-diff-lktH1err.js';
83
83
  export { I as ItemList, a as ItemListSkeleton, g as getItemListColumnTemplate, b as getToNextItemFn, c as getToPreviousItemFn } from './helpers-3p9MxQbh.js';
84
84
  export { N as Notice } from './Notice-CiS1Dv3i.js';
@@ -107,6 +107,67 @@ export { H as HorizontalBars } from './horizontal-bars-D_1wypjd.js';
107
107
  export { M as MetricsLineChart, a as MetricsLineChartTooltip } from './metrics-line-chart-BUUqDQPW.js';
108
108
  export { S as ScatterPlotChart, a as ScatterPlotChartTooltip, f as formatScatterPlotAxisTick, g as getScatterPlotClickedPoint, b as getScatterPlotPointColor } from './scatter-plot-chart-B3hfFMKS.js';
109
109
  export { S as StatusBadge } from './StatusBadge-RV2nOf-F.js';
110
+ export { AgentIcon } from './icons/AgentIcon.es.js';
111
+ export { AgentCoinIcon } from './icons/AgentCoinIcon.es.js';
112
+ export { AiIcon } from './icons/AiIcon.es.js';
113
+ export { ApiIcon } from './icons/ApiIcon.es.js';
114
+ export { BranchIcon } from './icons/BranchIcon.es.js';
115
+ export { CheckIcon } from './icons/CheckIcon.es.js';
116
+ export { ChevronIcon } from './icons/ChevronIcon.es.js';
117
+ export { CommitIcon } from './icons/CommitIcon.es.js';
118
+ export { CrossIcon } from './icons/CrossIcon.es.js';
119
+ export { DbIcon } from './icons/DbIcon.es.js';
120
+ export { DebugIcon } from './icons/DebugIcon.es.js';
121
+ export { DeploymentIcon } from './icons/DeploymentIcon.es.js';
122
+ export { DividerIcon } from './icons/DividerIcon.es.js';
123
+ export { DocsIcon } from './icons/DocsIcon.es.js';
124
+ export { EnvIcon } from './icons/EnvIcon.es.js';
125
+ export { FiltersIcon } from './icons/FiltersIcon.es.js';
126
+ export { GithubCoinIcon } from './icons/GithubCoinIcon.es.js';
127
+ export { GithubIcon } from './icons/GithubIcon.es.js';
128
+ export { GoogleIcon } from './icons/GoogleIcon.es.js';
129
+ export { RepoIcon } from './icons/RepoIcon.es.js';
130
+ export { HomeIcon } from './icons/HomeIcon.es.js';
131
+ export { Icon } from './icons/Icon.es.js';
132
+ export { InfoIcon } from './icons/InfoIcon.es.js';
133
+ export { JudgeIcon } from './icons/JudgeIcon.es.js';
134
+ export { LogsIcon } from './icons/LogsIcon.es.js';
135
+ export { MemoryIcon } from './icons/MemoryIcon.es.js';
136
+ export { OpenAIIcon } from './icons/OpenAIIcon.es.js';
137
+ export { PromptIcon } from './icons/PromptIcon.es.js';
138
+ export { SettingsIcon } from './icons/SettingsIcon.es.js';
139
+ export { SlashIcon } from './icons/SlashIcon.es.js';
140
+ export { ToolsIcon } from './icons/ToolsIcon.es.js';
141
+ export { SkillIcon } from './icons/SkillIcon.es.js';
142
+ export { TraceIcon } from './icons/TraceIcon.es.js';
143
+ export { TsIcon } from './icons/TsIcon.es.js';
144
+ export { VariablesIcon } from './icons/VariablesIcon.es.js';
145
+ export { WorkflowIcon } from './icons/WorkflowIcon.es.js';
146
+ export { WorkflowCoinIcon } from './icons/WorkflowCoinIcon.es.js';
147
+ export { LatencyIcon } from './icons/LatencyIcon.es.js';
148
+ export { McpServerIcon } from './icons/McpServerIcon.es.js';
149
+ export { FolderIcon } from './icons/FolderIcon.es.js';
150
+ export { McpCoinIcon } from './icons/McpCoinIcon.es.js';
151
+ export { ToolCoinIcon } from './icons/ToolCoinIcon.es.js';
152
+ export { AgentNetworkCoinIcon } from './icons/AgentNetworkCoinIcon.es.js';
153
+ export { ProcessorIcon } from './icons/ProcessorIcon.es.js';
154
+ export { AmazonIcon } from './icons/AmazonIcon.es.js';
155
+ export { AnthropicChatIcon } from './icons/AnthropicChatIcon.es.js';
156
+ export { AnthropicMessagesIcon } from './icons/AnthropicMessagesIcon.es.js';
157
+ export { AzureIcon } from './icons/AzureIcon.es.js';
158
+ export { CohereIcon } from './icons/CohereIcon.es.js';
159
+ export { GroqIcon } from './icons/GroqIcon.es.js';
160
+ export { MastraIcon } from './icons/MastraIcon.es.js';
161
+ export { MistralIcon } from './icons/MistralIcon.es.js';
162
+ export { NetlifyIcon } from './icons/NetlifyIcon.es.js';
163
+ export { OpenaiChatIcon } from './icons/OpenaiChatIcon.es.js';
164
+ export { XGroqIcon } from './icons/XGroqIcon.es.js';
165
+ export { WorkspacesIcon } from './icons/WorkspacesIcon.es.js';
166
+ export { RequestContextIcon } from './icons/RequestContextIcon.es.js';
167
+ export { ScorersIcon } from './icons/ScorersIcon.es.js';
168
+ export { DatasetsIcon } from './icons/DatasetsIcon.es.js';
169
+ export { ExperimentsIcon } from './icons/ExperimentsIcon.es.js';
170
+ export { MetricsIcon } from './icons/MetricsIcon.es.js';
110
171
  export { Animations } from './tokens.es.js';
111
172
  export { B as BorderColors, a as BorderRadius, C as Colors, F as FontSizes, G as Glows, L as LineHeights, S as Shadows, b as Sizes, c as Spacings } from './spacings-C87dXiT-.js';
112
173
  export { controlHeight, controlSizeClasses, controlTriggerOpenState } from './primitives/control-size.es.js';
@@ -130,6 +191,7 @@ export { T as Toaster, t as toast } from './toast-BKsfnapA.js';
130
191
  export { CollapsiblePanel } from './resize/collapsible-panel.es.js';
131
192
  export { PanelSeparator } from './resize/separator.es.js';
132
193
  export { PanelDrawer } from './resize/panel-drawer.es.js';
194
+ export { D as DUPLICATE_ENVIRONMENT_VARIABLE_MESSAGE, b as DuplicateEnvironmentVariableKeyError, E as ENV_FILE_MAX_SIZE, c as collectEnvironmentVariables, a as createEmptyEnvironmentVariableEntry, g as getDuplicateEnvironmentVariableKeys, p as parseEnvFileText, r as readEnvFile, d as rowsFromEnvironmentVariables, e as rowsToEnvFileText } from './env-file-BF23giwP.js';
133
195
  export { usePlaygroundStore } from './store/playground-store.es.js';
134
196
  export { DateRangeSelector } from './domains/metrics/components/date-range-selector.es.js';
135
197
  export { CHART_COLORS, formatCompact, formatCost } from './domains/metrics/components/metrics-utils.es.js';
@@ -218,75 +280,13 @@ export { MemoryStudioPanel } from './domains/memory/components/memory-studio-pan
218
280
  export { memoryThreadMessagesQueryKey, useMemoryThreadMessages } from './domains/memory/hooks/use-memory-thread-messages.es.js';
219
281
  export { observationalMemoryQueryKey, useObservationalMemory } from './domains/memory/hooks/use-observational-memory.es.js';
220
282
  export { memoryStatusQueryKey, useMemoryStatus } from './domains/memory/hooks/use-memory-status.es.js';
221
- export { AgentCoinIcon } from './icons/AgentCoinIcon.es.js';
222
- export { AgentIcon } from './icons/AgentIcon.es.js';
223
- export { AgentNetworkCoinIcon } from './icons/AgentNetworkCoinIcon.es.js';
224
- export { AiIcon } from './icons/AiIcon.es.js';
225
- export { AmazonIcon } from './icons/AmazonIcon.es.js';
226
- export { AnthropicChatIcon } from './icons/AnthropicChatIcon.es.js';
227
- export { AnthropicMessagesIcon } from './icons/AnthropicMessagesIcon.es.js';
228
- export { ApiIcon } from './icons/ApiIcon.es.js';
229
- export { AzureIcon } from './icons/AzureIcon.es.js';
230
283
  export { BROWSER_FETCHABLE_SCHEMES, EXTENSION_TO_MIME, NON_FETCHABLE_REMOTE_SCHEMES, REMOTE_URL_SCHEMES, fileToBase64, getFileContentType, isBrowserFetchableUrl, isNonFetchableRemoteUrl, isRemoteUrl } from './utils/file.es.js';
231
- export { BranchIcon } from './icons/BranchIcon.es.js';
232
- export { CheckIcon } from './icons/CheckIcon.es.js';
233
- export { ChevronIcon } from './icons/ChevronIcon.es.js';
234
- export { CohereIcon } from './icons/CohereIcon.es.js';
235
- export { CommitIcon } from './icons/CommitIcon.es.js';
236
- export { CrossIcon } from './icons/CrossIcon.es.js';
237
- export { D as DUPLICATE_ENVIRONMENT_VARIABLE_MESSAGE, b as DuplicateEnvironmentVariableKeyError, E as ENV_FILE_MAX_SIZE, c as collectEnvironmentVariables, a as createEmptyEnvironmentVariableEntry, g as getDuplicateEnvironmentVariableKeys, p as parseEnvFileText, r as readEnvFile, d as rowsFromEnvironmentVariables, e as rowsToEnvFileText } from './env-file-BF23giwP.js';
238
- export { DatasetsIcon } from './icons/DatasetsIcon.es.js';
239
- export { DbIcon } from './icons/DbIcon.es.js';
240
- export { DebugIcon } from './icons/DebugIcon.es.js';
241
- export { DeploymentIcon } from './icons/DeploymentIcon.es.js';
242
- export { DividerIcon } from './icons/DividerIcon.es.js';
243
- export { DocsIcon } from './icons/DocsIcon.es.js';
244
- export { EnvIcon } from './icons/EnvIcon.es.js';
245
- export { ExperimentsIcon } from './icons/ExperimentsIcon.es.js';
246
- export { FiltersIcon } from './icons/FiltersIcon.es.js';
247
- export { FolderIcon } from './icons/FolderIcon.es.js';
248
- export { GithubCoinIcon } from './icons/GithubCoinIcon.es.js';
249
- export { GithubIcon } from './icons/GithubIcon.es.js';
250
- export { GoogleIcon } from './icons/GoogleIcon.es.js';
251
- export { GroqIcon } from './icons/GroqIcon.es.js';
252
- export { HomeIcon } from './icons/HomeIcon.es.js';
253
- export { Icon } from './icons/Icon.es.js';
254
- export { InfoIcon } from './icons/InfoIcon.es.js';
255
- export { JudgeIcon } from './icons/JudgeIcon.es.js';
256
- export { LatencyIcon } from './icons/LatencyIcon.es.js';
257
- export { LogsIcon } from './icons/LogsIcon.es.js';
258
- export { MastraIcon } from './icons/MastraIcon.es.js';
259
- export { McpCoinIcon } from './icons/McpCoinIcon.es.js';
260
- export { McpServerIcon } from './icons/McpServerIcon.es.js';
261
- export { MemoryIcon } from './icons/MemoryIcon.es.js';
262
- export { MetricsIcon } from './icons/MetricsIcon.es.js';
263
- export { MistralIcon } from './icons/MistralIcon.es.js';
264
- export { NetlifyIcon } from './icons/NetlifyIcon.es.js';
265
- export { O as OPERATORS, a as OPERATOR_LABELS, R as RuleBuilder, b as RuleFieldSelect, c as RuleOperatorSelect, d as RuleRow, e as RuleValueInput, g as getChildFieldOptions, f as getFieldOptionAtPath, h as getFieldOptionsFromSchema, p as parseFieldPath } from './rule-builder-B7J3z1Gd.js';
266
- export { OpenAIIcon } from './icons/OpenAIIcon.es.js';
267
- export { OpenaiChatIcon } from './icons/OpenaiChatIcon.es.js';
268
- export { ProcessorIcon } from './icons/ProcessorIcon.es.js';
269
- export { PromptIcon } from './icons/PromptIcon.es.js';
270
- export { RepoIcon } from './icons/RepoIcon.es.js';
271
- export { RequestContextIcon } from './icons/RequestContextIcon.es.js';
272
- export { ScorersIcon } from './icons/ScorersIcon.es.js';
273
- export { SettingsIcon } from './icons/SettingsIcon.es.js';
284
+ export { O as OPERATORS, a as OPERATOR_LABELS, R as RuleBuilder, b as RuleFieldSelect, c as RuleOperatorSelect, d as RuleRow, e as RuleValueInput, g as getChildFieldOptions, f as getFieldOptionAtPath, h as getFieldOptionsFromSchema, p as parseFieldPath } from './rule-builder-DYON077L.js';
274
285
  export { SignalChartTab, SignalClusterSidebar, SignalClusterTabs, SignalDetailsPage, SignalTraceDetailsPanel, SignalTraceListTab } from './ee/signals/components/signal-details-page.es.js';
275
286
  export { SignalClusterCard, SignalSection, SignalsOverviewPage } from './ee/signals/components/signals-overview-page.es.js';
276
- export { SkillIcon } from './icons/SkillIcon.es.js';
277
- export { SlashIcon } from './icons/SlashIcon.es.js';
278
- export { ToolCoinIcon } from './icons/ToolCoinIcon.es.js';
279
- export { ToolsIcon } from './icons/ToolsIcon.es.js';
280
287
  export { TopicTraceDetailsPanel } from './ee/topics/components/topic-trace-details-panel.es.js';
281
288
  export { TopicTraceSummaryList } from './ee/topics/components/topic-trace-summary-list.es.js';
282
289
  export { TopicsLayout } from './ee/topics/components/topics-layout.es.js';
283
- export { TraceIcon } from './icons/TraceIcon.es.js';
284
- export { TsIcon } from './icons/TsIcon.es.js';
285
- export { VariablesIcon } from './icons/VariablesIcon.es.js';
286
- export { WorkflowCoinIcon } from './icons/WorkflowCoinIcon.es.js';
287
- export { WorkflowIcon } from './icons/WorkflowIcon.es.js';
288
- export { WorkspacesIcon } from './icons/WorkspacesIcon.es.js';
289
- export { XGroqIcon } from './icons/XGroqIcon.es.js';
290
290
  export { aggregateTopics, filterTraceSummaries, getTopicColor, getTopicTraceCount, getTraceCount, getTraceShare, getVisibleTraceSummaries, sortTraceSummaries } from './ee/topics/utils.es.js';
291
291
  export { countLeafRules, createDefaultRule, createDefaultRuleGroup, isRule, isRuleGroup } from './utils/rule-engine.es.js';
292
292
  export { d as downloadJson } from './downloadJson-DuPoMa_6.js';
@@ -4,6 +4,7 @@ require('./index.css');const jsxRuntime = require('react/jsx-runtime');
4
4
  ;/* empty css */
5
5
  require('@base-ui/react/combobox');
6
6
  require('./dropdown-menu-pHJH-29Y.cjs');
7
+ require('./popover-fpyU6qei.cjs');
7
8
  const lucideReact = require('lucide-react');
8
9
  const React = require('react');
9
10
  require('./components/DataDetailsPanel.cjs.js');
@@ -153,4 +154,4 @@ function ScrollArrow({ direction, onClick }) {
153
154
  exports.Column = Column;
154
155
  exports.Columns = Columns;
155
156
  exports.MultiColumn = MultiColumn;
156
- //# sourceMappingURL=multi-column-B5nBrjmh.cjs.map
157
+ //# sourceMappingURL=multi-column-BaLTJpM1.cjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"multi-column-B5nBrjmh.cjs","sources":["../src/ds/components/Columns/column-content.tsx","../src/ds/components/Columns/column-root.tsx","../src/ds/components/Columns/column-toolbar.tsx","../src/ds/components/Columns/column.tsx","../src/ds/components/Columns/columns.tsx","../src/ds/components/Columns/multi-column.tsx"],"sourcesContent":["import { cn } from '@/index';\n\nexport type ColumnProps = {\n children?: React.ReactNode;\n className?: string;\n};\n\nexport function ColumnContent({ children, className }: ColumnProps) {\n return <div className={cn(`grid overflow-y-auto gap-8 content-start`, className)}>{children}</div>;\n}\n","import { cn } from '@/index';\n\nexport type ColumnProps = {\n children: React.ReactNode;\n className?: string;\n withRightSeparator?: boolean;\n withLeftSeparator?: boolean;\n};\n\nexport function ColumnRoot({ children, className, withLeftSeparator, withRightSeparator }: ColumnProps) {\n return (\n <div className=\"flex overflow-y-auto w-full\">\n {withLeftSeparator && <Separator />}\n\n <div className={cn(`grid gap-8 content-start w-full overflow-y-auto`, className)}>{children}</div>\n\n {withRightSeparator && <Separator />}\n </div>\n );\n}\n\nfunction Separator() {\n return <div className={cn('bg-surface5 w-[3px] shrink-0 mx-[1.5vw]')}></div>;\n}\n","import { cn } from '@/index';\n\nexport type ColumnToolbarProps = {\n children?: React.ReactNode;\n className?: string;\n};\n\nexport function ColumnToolbar({ children, className }: ColumnToolbarProps) {\n return (\n <div className={cn(`flex items-center justify-between w-full flex-wrap gap-4 gap-x-6`, className)}>{children}</div>\n );\n}\n","import { ColumnContent } from './column-content';\nimport { ColumnRoot } from './column-root';\nimport { ColumnToolbar } from './column-toolbar';\n\nexport const Column = Object.assign(ColumnRoot, {\n Content: ColumnContent,\n Toolbar: ColumnToolbar,\n});\n","import { cn } from '@/index';\n\nexport type ColumnsProps = {\n children: React.ReactNode;\n className?: string;\n};\n\nexport function Columns({ children, className }: ColumnsProps) {\n return <div className={cn(`grid w-full h-full grid-cols-1 overflow-y-auto`, className)}>{children}</div>;\n}\n","'use client';\n\nimport { ChevronLeftIcon, ChevronRightIcon } from 'lucide-react';\nimport React, { useCallback, useEffect, useRef, useState } from 'react';\nimport { Button } from '../Button';\nimport { cn } from '@/lib/utils';\n\nexport type MultiColumnProps = {\n children?: React.ReactNode;\n numOfColumns?: number;\n minColumnWidth?: string;\n};\n\nexport function MultiColumn({ children, numOfColumns = 1, minColumnWidth }: MultiColumnProps): React.JSX.Element {\n const scrollRef = useRef<HTMLDivElement>(null);\n const [canScrollLeft, setCanScrollLeft] = useState(false);\n const [canScrollRight, setCanScrollRight] = useState(false);\n const updateScrollState = useCallback(() => {\n const el = scrollRef.current;\n if (!el) return;\n const { scrollLeft, scrollWidth, clientWidth } = el;\n setCanScrollLeft(scrollLeft > 1);\n setCanScrollRight(scrollLeft + clientWidth < scrollWidth - 1);\n }, []);\n\n useEffect(() => {\n const el = scrollRef.current;\n if (!el) return;\n\n updateScrollState();\n\n el.addEventListener('scroll', updateScrollState, { passive: true });\n\n const observer = new ResizeObserver(updateScrollState);\n observer.observe(el);\n\n return () => {\n el.removeEventListener('scroll', updateScrollState);\n observer.disconnect();\n };\n }, [updateScrollState]);\n\n const prevColumnsRef = useRef(numOfColumns);\n useEffect(() => {\n const el = scrollRef.current;\n if (!el) return;\n if (numOfColumns > prevColumnsRef.current) {\n // New column added — scroll to the right end so it's visible\n requestAnimationFrame(() => {\n el.scrollTo({ left: el.scrollWidth, behavior: 'smooth' });\n });\n }\n prevColumnsRef.current = numOfColumns;\n }, [numOfColumns]);\n\n useEffect(() => {\n const handleKeyDown = (e: KeyboardEvent) => {\n if (e.key === 'ArrowLeft' || e.key === 'ArrowRight') {\n e.preventDefault();\n scrollToColumn(e.key === 'ArrowLeft' ? 'left' : 'right');\n }\n };\n window.addEventListener('keydown', handleKeyDown);\n return () => window.removeEventListener('keydown', handleKeyDown);\n }, []);\n\n const scrollToColumn = (direction: 'left' | 'right') => {\n const el = scrollRef.current;\n if (!el) return;\n\n const columns = Array.from(el.children) as HTMLElement[];\n const containerLeft = el.scrollLeft;\n const containerRight = containerLeft + el.clientWidth;\n\n if (direction === 'right') {\n // Find the first column whose right edge is past the container's right edge\n const target = columns.find(col => col.offsetLeft + col.offsetWidth > containerRight + 1);\n if (target) {\n el.scrollTo({ left: target.offsetLeft + target.offsetWidth - el.clientWidth, behavior: 'smooth' });\n }\n } else {\n // Find the last column whose left edge is before the container's left edge\n const target = [...columns].reverse().find(col => col.offsetLeft < containerLeft - 1);\n if (target) {\n el.scrollTo({ left: target.offsetLeft, behavior: 'smooth' });\n }\n }\n };\n\n return (\n <div className={cn('MULTI_COLUMN relative w-full h-full overflow-hidden')}>\n {canScrollLeft && <ScrollArrow direction=\"left\" onClick={() => scrollToColumn('left')} />}\n {canScrollRight && <ScrollArrow direction=\"right\" onClick={() => scrollToColumn('right')} />}\n <div\n ref={scrollRef}\n className=\"grid overflow-x-auto w-full overflow-y-auto h-full\"\n style={{\n gridTemplateColumns: `repeat(${numOfColumns}, minmax(${minColumnWidth ?? '0'}, 1fr))`,\n }}\n >\n {children}\n </div>\n </div>\n );\n}\n\nfunction ScrollArrow({ direction, onClick }: { direction: 'left' | 'right'; onClick: () => void }) {\n const Icon = direction === 'left' ? ChevronLeftIcon : ChevronRightIcon;\n const isLeft = direction === 'left';\n\n return (\n <div\n className={cn(\n 'absolute top-0 bottom-0 z-20 w-20 flex items-center justify-center px-5 bg-surface2',\n isLeft ? 'left-0' : 'right-0',\n )}\n >\n <Button onClick={onClick} className=\"w-full h-full px-0\" aria-label={`Scroll ${direction}`}>\n <Icon />\n </Button>\n </div>\n );\n}\n"],"names":["cn","jsxs","jsx","useRef","useState","useCallback","useEffect","ChevronLeftIcon","ChevronRightIcon","Button"],"mappings":"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"}
1
+ {"version":3,"file":"multi-column-BaLTJpM1.cjs","sources":["../src/ds/components/Columns/column-content.tsx","../src/ds/components/Columns/column-root.tsx","../src/ds/components/Columns/column-toolbar.tsx","../src/ds/components/Columns/column.tsx","../src/ds/components/Columns/columns.tsx","../src/ds/components/Columns/multi-column.tsx"],"sourcesContent":["import { cn } from '@/index';\n\nexport type ColumnProps = {\n children?: React.ReactNode;\n className?: string;\n};\n\nexport function ColumnContent({ children, className }: ColumnProps) {\n return <div className={cn(`grid overflow-y-auto gap-8 content-start`, className)}>{children}</div>;\n}\n","import { cn } from '@/index';\n\nexport type ColumnProps = {\n children: React.ReactNode;\n className?: string;\n withRightSeparator?: boolean;\n withLeftSeparator?: boolean;\n};\n\nexport function ColumnRoot({ children, className, withLeftSeparator, withRightSeparator }: ColumnProps) {\n return (\n <div className=\"flex overflow-y-auto w-full\">\n {withLeftSeparator && <Separator />}\n\n <div className={cn(`grid gap-8 content-start w-full overflow-y-auto`, className)}>{children}</div>\n\n {withRightSeparator && <Separator />}\n </div>\n );\n}\n\nfunction Separator() {\n return <div className={cn('bg-surface5 w-[3px] shrink-0 mx-[1.5vw]')}></div>;\n}\n","import { cn } from '@/index';\n\nexport type ColumnToolbarProps = {\n children?: React.ReactNode;\n className?: string;\n};\n\nexport function ColumnToolbar({ children, className }: ColumnToolbarProps) {\n return (\n <div className={cn(`flex items-center justify-between w-full flex-wrap gap-4 gap-x-6`, className)}>{children}</div>\n );\n}\n","import { ColumnContent } from './column-content';\nimport { ColumnRoot } from './column-root';\nimport { ColumnToolbar } from './column-toolbar';\n\nexport const Column = Object.assign(ColumnRoot, {\n Content: ColumnContent,\n Toolbar: ColumnToolbar,\n});\n","import { cn } from '@/index';\n\nexport type ColumnsProps = {\n children: React.ReactNode;\n className?: string;\n};\n\nexport function Columns({ children, className }: ColumnsProps) {\n return <div className={cn(`grid w-full h-full grid-cols-1 overflow-y-auto`, className)}>{children}</div>;\n}\n","'use client';\n\nimport { ChevronLeftIcon, ChevronRightIcon } from 'lucide-react';\nimport React, { useCallback, useEffect, useRef, useState } from 'react';\nimport { Button } from '../Button';\nimport { cn } from '@/lib/utils';\n\nexport type MultiColumnProps = {\n children?: React.ReactNode;\n numOfColumns?: number;\n minColumnWidth?: string;\n};\n\nexport function MultiColumn({ children, numOfColumns = 1, minColumnWidth }: MultiColumnProps): React.JSX.Element {\n const scrollRef = useRef<HTMLDivElement>(null);\n const [canScrollLeft, setCanScrollLeft] = useState(false);\n const [canScrollRight, setCanScrollRight] = useState(false);\n const updateScrollState = useCallback(() => {\n const el = scrollRef.current;\n if (!el) return;\n const { scrollLeft, scrollWidth, clientWidth } = el;\n setCanScrollLeft(scrollLeft > 1);\n setCanScrollRight(scrollLeft + clientWidth < scrollWidth - 1);\n }, []);\n\n useEffect(() => {\n const el = scrollRef.current;\n if (!el) return;\n\n updateScrollState();\n\n el.addEventListener('scroll', updateScrollState, { passive: true });\n\n const observer = new ResizeObserver(updateScrollState);\n observer.observe(el);\n\n return () => {\n el.removeEventListener('scroll', updateScrollState);\n observer.disconnect();\n };\n }, [updateScrollState]);\n\n const prevColumnsRef = useRef(numOfColumns);\n useEffect(() => {\n const el = scrollRef.current;\n if (!el) return;\n if (numOfColumns > prevColumnsRef.current) {\n // New column added — scroll to the right end so it's visible\n requestAnimationFrame(() => {\n el.scrollTo({ left: el.scrollWidth, behavior: 'smooth' });\n });\n }\n prevColumnsRef.current = numOfColumns;\n }, [numOfColumns]);\n\n useEffect(() => {\n const handleKeyDown = (e: KeyboardEvent) => {\n if (e.key === 'ArrowLeft' || e.key === 'ArrowRight') {\n e.preventDefault();\n scrollToColumn(e.key === 'ArrowLeft' ? 'left' : 'right');\n }\n };\n window.addEventListener('keydown', handleKeyDown);\n return () => window.removeEventListener('keydown', handleKeyDown);\n }, []);\n\n const scrollToColumn = (direction: 'left' | 'right') => {\n const el = scrollRef.current;\n if (!el) return;\n\n const columns = Array.from(el.children) as HTMLElement[];\n const containerLeft = el.scrollLeft;\n const containerRight = containerLeft + el.clientWidth;\n\n if (direction === 'right') {\n // Find the first column whose right edge is past the container's right edge\n const target = columns.find(col => col.offsetLeft + col.offsetWidth > containerRight + 1);\n if (target) {\n el.scrollTo({ left: target.offsetLeft + target.offsetWidth - el.clientWidth, behavior: 'smooth' });\n }\n } else {\n // Find the last column whose left edge is before the container's left edge\n const target = [...columns].reverse().find(col => col.offsetLeft < containerLeft - 1);\n if (target) {\n el.scrollTo({ left: target.offsetLeft, behavior: 'smooth' });\n }\n }\n };\n\n return (\n <div className={cn('MULTI_COLUMN relative w-full h-full overflow-hidden')}>\n {canScrollLeft && <ScrollArrow direction=\"left\" onClick={() => scrollToColumn('left')} />}\n {canScrollRight && <ScrollArrow direction=\"right\" onClick={() => scrollToColumn('right')} />}\n <div\n ref={scrollRef}\n className=\"grid overflow-x-auto w-full overflow-y-auto h-full\"\n style={{\n gridTemplateColumns: `repeat(${numOfColumns}, minmax(${minColumnWidth ?? '0'}, 1fr))`,\n }}\n >\n {children}\n </div>\n </div>\n );\n}\n\nfunction ScrollArrow({ direction, onClick }: { direction: 'left' | 'right'; onClick: () => void }) {\n const Icon = direction === 'left' ? ChevronLeftIcon : ChevronRightIcon;\n const isLeft = direction === 'left';\n\n return (\n <div\n className={cn(\n 'absolute top-0 bottom-0 z-20 w-20 flex items-center justify-center px-5 bg-surface2',\n isLeft ? 'left-0' : 'right-0',\n )}\n >\n <Button onClick={onClick} className=\"w-full h-full px-0\" aria-label={`Scroll ${direction}`}>\n <Icon />\n </Button>\n </div>\n );\n}\n"],"names":["cn","jsxs","jsx","useRef","useState","useCallback","useEffect","ChevronLeftIcon","ChevronRightIcon","Button"],"mappings":"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"}
@@ -2,6 +2,7 @@ import { jsx, jsxs } from 'react/jsx-runtime';
2
2
  import './index.css';/* empty css */
3
3
  import '@base-ui/react/combobox';
4
4
  import './dropdown-menu-CGei48WH.js';
5
+ import './popover-CfOWA0et.js';
5
6
  import { ChevronLeftIcon, ChevronRightIcon } from 'lucide-react';
6
7
  import { useRef, useState, useCallback, useEffect } from 'react';
7
8
  import './components/DataDetailsPanel.es.js';
@@ -149,4 +150,4 @@ function ScrollArrow({ direction, onClick }) {
149
150
  }
150
151
 
151
152
  export { Column as C, MultiColumn as M, Columns as a };
152
- //# sourceMappingURL=multi-column-CUxbXyQp.js.map
153
+ //# sourceMappingURL=multi-column-VYOIJrLB.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"multi-column-CUxbXyQp.js","sources":["../src/ds/components/Columns/column-content.tsx","../src/ds/components/Columns/column-root.tsx","../src/ds/components/Columns/column-toolbar.tsx","../src/ds/components/Columns/column.tsx","../src/ds/components/Columns/columns.tsx","../src/ds/components/Columns/multi-column.tsx"],"sourcesContent":["import { cn } from '@/index';\n\nexport type ColumnProps = {\n children?: React.ReactNode;\n className?: string;\n};\n\nexport function ColumnContent({ children, className }: ColumnProps) {\n return <div className={cn(`grid overflow-y-auto gap-8 content-start`, className)}>{children}</div>;\n}\n","import { cn } from '@/index';\n\nexport type ColumnProps = {\n children: React.ReactNode;\n className?: string;\n withRightSeparator?: boolean;\n withLeftSeparator?: boolean;\n};\n\nexport function ColumnRoot({ children, className, withLeftSeparator, withRightSeparator }: ColumnProps) {\n return (\n <div className=\"flex overflow-y-auto w-full\">\n {withLeftSeparator && <Separator />}\n\n <div className={cn(`grid gap-8 content-start w-full overflow-y-auto`, className)}>{children}</div>\n\n {withRightSeparator && <Separator />}\n </div>\n );\n}\n\nfunction Separator() {\n return <div className={cn('bg-surface5 w-[3px] shrink-0 mx-[1.5vw]')}></div>;\n}\n","import { cn } from '@/index';\n\nexport type ColumnToolbarProps = {\n children?: React.ReactNode;\n className?: string;\n};\n\nexport function ColumnToolbar({ children, className }: ColumnToolbarProps) {\n return (\n <div className={cn(`flex items-center justify-between w-full flex-wrap gap-4 gap-x-6`, className)}>{children}</div>\n );\n}\n","import { ColumnContent } from './column-content';\nimport { ColumnRoot } from './column-root';\nimport { ColumnToolbar } from './column-toolbar';\n\nexport const Column = Object.assign(ColumnRoot, {\n Content: ColumnContent,\n Toolbar: ColumnToolbar,\n});\n","import { cn } from '@/index';\n\nexport type ColumnsProps = {\n children: React.ReactNode;\n className?: string;\n};\n\nexport function Columns({ children, className }: ColumnsProps) {\n return <div className={cn(`grid w-full h-full grid-cols-1 overflow-y-auto`, className)}>{children}</div>;\n}\n","'use client';\n\nimport { ChevronLeftIcon, ChevronRightIcon } from 'lucide-react';\nimport React, { useCallback, useEffect, useRef, useState } from 'react';\nimport { Button } from '../Button';\nimport { cn } from '@/lib/utils';\n\nexport type MultiColumnProps = {\n children?: React.ReactNode;\n numOfColumns?: number;\n minColumnWidth?: string;\n};\n\nexport function MultiColumn({ children, numOfColumns = 1, minColumnWidth }: MultiColumnProps): React.JSX.Element {\n const scrollRef = useRef<HTMLDivElement>(null);\n const [canScrollLeft, setCanScrollLeft] = useState(false);\n const [canScrollRight, setCanScrollRight] = useState(false);\n const updateScrollState = useCallback(() => {\n const el = scrollRef.current;\n if (!el) return;\n const { scrollLeft, scrollWidth, clientWidth } = el;\n setCanScrollLeft(scrollLeft > 1);\n setCanScrollRight(scrollLeft + clientWidth < scrollWidth - 1);\n }, []);\n\n useEffect(() => {\n const el = scrollRef.current;\n if (!el) return;\n\n updateScrollState();\n\n el.addEventListener('scroll', updateScrollState, { passive: true });\n\n const observer = new ResizeObserver(updateScrollState);\n observer.observe(el);\n\n return () => {\n el.removeEventListener('scroll', updateScrollState);\n observer.disconnect();\n };\n }, [updateScrollState]);\n\n const prevColumnsRef = useRef(numOfColumns);\n useEffect(() => {\n const el = scrollRef.current;\n if (!el) return;\n if (numOfColumns > prevColumnsRef.current) {\n // New column added — scroll to the right end so it's visible\n requestAnimationFrame(() => {\n el.scrollTo({ left: el.scrollWidth, behavior: 'smooth' });\n });\n }\n prevColumnsRef.current = numOfColumns;\n }, [numOfColumns]);\n\n useEffect(() => {\n const handleKeyDown = (e: KeyboardEvent) => {\n if (e.key === 'ArrowLeft' || e.key === 'ArrowRight') {\n e.preventDefault();\n scrollToColumn(e.key === 'ArrowLeft' ? 'left' : 'right');\n }\n };\n window.addEventListener('keydown', handleKeyDown);\n return () => window.removeEventListener('keydown', handleKeyDown);\n }, []);\n\n const scrollToColumn = (direction: 'left' | 'right') => {\n const el = scrollRef.current;\n if (!el) return;\n\n const columns = Array.from(el.children) as HTMLElement[];\n const containerLeft = el.scrollLeft;\n const containerRight = containerLeft + el.clientWidth;\n\n if (direction === 'right') {\n // Find the first column whose right edge is past the container's right edge\n const target = columns.find(col => col.offsetLeft + col.offsetWidth > containerRight + 1);\n if (target) {\n el.scrollTo({ left: target.offsetLeft + target.offsetWidth - el.clientWidth, behavior: 'smooth' });\n }\n } else {\n // Find the last column whose left edge is before the container's left edge\n const target = [...columns].reverse().find(col => col.offsetLeft < containerLeft - 1);\n if (target) {\n el.scrollTo({ left: target.offsetLeft, behavior: 'smooth' });\n }\n }\n };\n\n return (\n <div className={cn('MULTI_COLUMN relative w-full h-full overflow-hidden')}>\n {canScrollLeft && <ScrollArrow direction=\"left\" onClick={() => scrollToColumn('left')} />}\n {canScrollRight && <ScrollArrow direction=\"right\" onClick={() => scrollToColumn('right')} />}\n <div\n ref={scrollRef}\n className=\"grid overflow-x-auto w-full overflow-y-auto h-full\"\n style={{\n gridTemplateColumns: `repeat(${numOfColumns}, minmax(${minColumnWidth ?? '0'}, 1fr))`,\n }}\n >\n {children}\n </div>\n </div>\n );\n}\n\nfunction ScrollArrow({ direction, onClick }: { direction: 'left' | 'right'; onClick: () => void }) {\n const Icon = direction === 'left' ? ChevronLeftIcon : ChevronRightIcon;\n const isLeft = direction === 'left';\n\n return (\n <div\n className={cn(\n 'absolute top-0 bottom-0 z-20 w-20 flex items-center justify-center px-5 bg-surface2',\n isLeft ? 'left-0' : 'right-0',\n )}\n >\n <Button onClick={onClick} className=\"w-full h-full px-0\" aria-label={`Scroll ${direction}`}>\n <Icon />\n </Button>\n </div>\n );\n}\n"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"multi-column-VYOIJrLB.js","sources":["../src/ds/components/Columns/column-content.tsx","../src/ds/components/Columns/column-root.tsx","../src/ds/components/Columns/column-toolbar.tsx","../src/ds/components/Columns/column.tsx","../src/ds/components/Columns/columns.tsx","../src/ds/components/Columns/multi-column.tsx"],"sourcesContent":["import { cn } from '@/index';\n\nexport type ColumnProps = {\n children?: React.ReactNode;\n className?: string;\n};\n\nexport function ColumnContent({ children, className }: ColumnProps) {\n return <div className={cn(`grid overflow-y-auto gap-8 content-start`, className)}>{children}</div>;\n}\n","import { cn } from '@/index';\n\nexport type ColumnProps = {\n children: React.ReactNode;\n className?: string;\n withRightSeparator?: boolean;\n withLeftSeparator?: boolean;\n};\n\nexport function ColumnRoot({ children, className, withLeftSeparator, withRightSeparator }: ColumnProps) {\n return (\n <div className=\"flex overflow-y-auto w-full\">\n {withLeftSeparator && <Separator />}\n\n <div className={cn(`grid gap-8 content-start w-full overflow-y-auto`, className)}>{children}</div>\n\n {withRightSeparator && <Separator />}\n </div>\n );\n}\n\nfunction Separator() {\n return <div className={cn('bg-surface5 w-[3px] shrink-0 mx-[1.5vw]')}></div>;\n}\n","import { cn } from '@/index';\n\nexport type ColumnToolbarProps = {\n children?: React.ReactNode;\n className?: string;\n};\n\nexport function ColumnToolbar({ children, className }: ColumnToolbarProps) {\n return (\n <div className={cn(`flex items-center justify-between w-full flex-wrap gap-4 gap-x-6`, className)}>{children}</div>\n );\n}\n","import { ColumnContent } from './column-content';\nimport { ColumnRoot } from './column-root';\nimport { ColumnToolbar } from './column-toolbar';\n\nexport const Column = Object.assign(ColumnRoot, {\n Content: ColumnContent,\n Toolbar: ColumnToolbar,\n});\n","import { cn } from '@/index';\n\nexport type ColumnsProps = {\n children: React.ReactNode;\n className?: string;\n};\n\nexport function Columns({ children, className }: ColumnsProps) {\n return <div className={cn(`grid w-full h-full grid-cols-1 overflow-y-auto`, className)}>{children}</div>;\n}\n","'use client';\n\nimport { ChevronLeftIcon, ChevronRightIcon } from 'lucide-react';\nimport React, { useCallback, useEffect, useRef, useState } from 'react';\nimport { Button } from '../Button';\nimport { cn } from '@/lib/utils';\n\nexport type MultiColumnProps = {\n children?: React.ReactNode;\n numOfColumns?: number;\n minColumnWidth?: string;\n};\n\nexport function MultiColumn({ children, numOfColumns = 1, minColumnWidth }: MultiColumnProps): React.JSX.Element {\n const scrollRef = useRef<HTMLDivElement>(null);\n const [canScrollLeft, setCanScrollLeft] = useState(false);\n const [canScrollRight, setCanScrollRight] = useState(false);\n const updateScrollState = useCallback(() => {\n const el = scrollRef.current;\n if (!el) return;\n const { scrollLeft, scrollWidth, clientWidth } = el;\n setCanScrollLeft(scrollLeft > 1);\n setCanScrollRight(scrollLeft + clientWidth < scrollWidth - 1);\n }, []);\n\n useEffect(() => {\n const el = scrollRef.current;\n if (!el) return;\n\n updateScrollState();\n\n el.addEventListener('scroll', updateScrollState, { passive: true });\n\n const observer = new ResizeObserver(updateScrollState);\n observer.observe(el);\n\n return () => {\n el.removeEventListener('scroll', updateScrollState);\n observer.disconnect();\n };\n }, [updateScrollState]);\n\n const prevColumnsRef = useRef(numOfColumns);\n useEffect(() => {\n const el = scrollRef.current;\n if (!el) return;\n if (numOfColumns > prevColumnsRef.current) {\n // New column added — scroll to the right end so it's visible\n requestAnimationFrame(() => {\n el.scrollTo({ left: el.scrollWidth, behavior: 'smooth' });\n });\n }\n prevColumnsRef.current = numOfColumns;\n }, [numOfColumns]);\n\n useEffect(() => {\n const handleKeyDown = (e: KeyboardEvent) => {\n if (e.key === 'ArrowLeft' || e.key === 'ArrowRight') {\n e.preventDefault();\n scrollToColumn(e.key === 'ArrowLeft' ? 'left' : 'right');\n }\n };\n window.addEventListener('keydown', handleKeyDown);\n return () => window.removeEventListener('keydown', handleKeyDown);\n }, []);\n\n const scrollToColumn = (direction: 'left' | 'right') => {\n const el = scrollRef.current;\n if (!el) return;\n\n const columns = Array.from(el.children) as HTMLElement[];\n const containerLeft = el.scrollLeft;\n const containerRight = containerLeft + el.clientWidth;\n\n if (direction === 'right') {\n // Find the first column whose right edge is past the container's right edge\n const target = columns.find(col => col.offsetLeft + col.offsetWidth > containerRight + 1);\n if (target) {\n el.scrollTo({ left: target.offsetLeft + target.offsetWidth - el.clientWidth, behavior: 'smooth' });\n }\n } else {\n // Find the last column whose left edge is before the container's left edge\n const target = [...columns].reverse().find(col => col.offsetLeft < containerLeft - 1);\n if (target) {\n el.scrollTo({ left: target.offsetLeft, behavior: 'smooth' });\n }\n }\n };\n\n return (\n <div className={cn('MULTI_COLUMN relative w-full h-full overflow-hidden')}>\n {canScrollLeft && <ScrollArrow direction=\"left\" onClick={() => scrollToColumn('left')} />}\n {canScrollRight && <ScrollArrow direction=\"right\" onClick={() => scrollToColumn('right')} />}\n <div\n ref={scrollRef}\n className=\"grid overflow-x-auto w-full overflow-y-auto h-full\"\n style={{\n gridTemplateColumns: `repeat(${numOfColumns}, minmax(${minColumnWidth ?? '0'}, 1fr))`,\n }}\n >\n {children}\n </div>\n </div>\n );\n}\n\nfunction ScrollArrow({ direction, onClick }: { direction: 'left' | 'right'; onClick: () => void }) {\n const Icon = direction === 'left' ? ChevronLeftIcon : ChevronRightIcon;\n const isLeft = direction === 'left';\n\n return (\n <div\n className={cn(\n 'absolute top-0 bottom-0 z-20 w-20 flex items-center justify-center px-5 bg-surface2',\n isLeft ? 'left-0' : 'right-0',\n )}\n >\n <Button onClick={onClick} className=\"w-full h-full px-0\" aria-label={`Scroll ${direction}`}>\n <Icon />\n </Button>\n </div>\n );\n}\n"],"names":[],"mappings":"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"}
@@ -9,8 +9,8 @@ const reactResizablePanels = require('react-resizable-panels');
9
9
  const resize_panelEdgeIcon = require('./panel-edge-icon.cjs.js');
10
10
  const resize_panelIconButton = require('./panel-icon-button.cjs.js');
11
11
  const resize_useClampedElementCursor = require('./use-clamped-element-cursor.cjs.js');
12
- const utils_cn = require('../cn-vA5sWo9W.cjs');
13
12
  const icons_Icon = require('../icons/Icon.cjs.js');
13
+ const utils_cn = require('../cn-vA5sWo9W.cjs');
14
14
 
15
15
  const PILL_EDGE_MARGIN = 22;
16
16
  const usePanelSizeTransitions = (elementRef) => {
@@ -5,8 +5,8 @@ import { usePanelRef, Panel } from 'react-resizable-panels';
5
5
  import { PanelEdgeIcon } from './panel-edge-icon.es.js';
6
6
  import { panelIconButtonClass } from './panel-icon-button.es.js';
7
7
  import { useClampedElementCursor } from './use-clamped-element-cursor.es.js';
8
- import { c as cn } from '../cn-BakJzhuv.js';
9
8
  import { Icon } from '../icons/Icon.es.js';
9
+ import { c as cn } from '../cn-BakJzhuv.js';
10
10
 
11
11
  const PILL_EDGE_MARGIN = 22;
12
12
  const usePanelSizeTransitions = (elementRef) => {
@@ -6,8 +6,9 @@ const jsxRuntime = require('react/jsx-runtime');
6
6
  const resize_panelEdgeIcon = require('./panel-edge-icon.cjs.js');
7
7
  const resize_panelIconButton = require('./panel-icon-button.cjs.js');
8
8
  const drawer = require('../drawer-xYzVLI5E.cjs');
9
- const utils_cn = require('../cn-vA5sWo9W.cjs');
10
9
  const icons_Icon = require('../icons/Icon.cjs.js');
10
+ require('lucide-react');
11
+ const utils_cn = require('../cn-vA5sWo9W.cjs');
11
12
 
12
13
  const PanelDrawer = ({ direction, label, children }) => {
13
14
  return /* @__PURE__ */ jsxRuntime.jsxs(drawer.Drawer, { side: direction, children: [
@@ -1 +1 @@
1
- {"version":3,"file":"panel-drawer.cjs.js","sources":["../../src/lib/resize/panel-drawer.tsx"],"sourcesContent":["import type { ReactNode } from 'react';\nimport { PanelEdgeIcon } from './panel-edge-icon';\nimport { panelIconButtonClass } from './panel-icon-button';\nimport {\n Drawer,\n DrawerBackdrop,\n DrawerPopup,\n DrawerPortal,\n DrawerTitle,\n DrawerTrigger,\n DrawerViewport,\n} from '@/ds/components/Drawer';\nimport { Icon } from '@/ds/icons';\nimport { cn } from '@/lib/utils';\n\nexport interface PanelDrawerProps {\n direction: 'left' | 'right';\n /** Accessible name for the trigger button and the drawer. */\n label: string;\n children: ReactNode;\n}\n\nexport const PanelDrawer = ({ direction, label, children }: PanelDrawerProps) => {\n return (\n <Drawer side={direction}>\n <DrawerTrigger asChild>\n <button\n type=\"button\"\n aria-label={label}\n className={cn(panelIconButtonClass, 'absolute top-2 z-10', direction === 'left' ? 'left-2' : 'right-2')}\n >\n <Icon>\n <PanelEdgeIcon side={direction} />\n </Icon>\n </button>\n </DrawerTrigger>\n\n <DrawerPortal keepMounted>\n <DrawerBackdrop />\n <DrawerViewport>\n <DrawerPopup className=\"w-[calc(100vw-2.5rem)] max-w-[28rem]\">\n <DrawerTitle className=\"sr-only\">{label}</DrawerTitle>\n <div className=\"flex min-h-0 flex-1 flex-col\">{children}</div>\n </DrawerPopup>\n </DrawerViewport>\n </DrawerPortal>\n </Drawer>\n );\n};\n"],"names":["jsxs","Drawer","jsx","DrawerTrigger","cn","panelIconButtonClass","Icon","PanelEdgeIcon","DrawerPortal","DrawerBackdrop","DrawerViewport","DrawerPopup","DrawerTitle"],"mappings":";;;;;;;;;;;AAsBO,MAAM,cAAc,CAAC,EAAE,SAAA,EAAW,KAAA,EAAO,UAAS,KAAwB;AAC/E,EAAA,uBACEA,eAAA,CAACC,aAAA,EAAA,EAAO,IAAA,EAAM,SAAA,EACZ,QAAA,EAAA;AAAA,oBAAAC,cAAA,CAACC,oBAAA,EAAA,EAAc,SAAO,IAAA,EACpB,QAAA,kBAAAD,cAAA;AAAA,MAAC,QAAA;AAAA,MAAA;AAAA,QACC,IAAA,EAAK,QAAA;AAAA,QACL,YAAA,EAAY,KAAA;AAAA,QACZ,WAAWE,WAAA,CAAGC,2CAAA,EAAsB,uBAAuB,SAAA,KAAc,MAAA,GAAS,WAAW,SAAS,CAAA;AAAA,QAEtG,yCAACC,eAAA,EAAA,EACC,QAAA,kBAAAJ,cAAA,CAACK,kCAAA,EAAA,EAAc,IAAA,EAAM,WAAW,CAAA,EAClC;AAAA;AAAA,KACF,EACF,CAAA;AAAA,oBAEAP,eAAA,CAACQ,mBAAA,EAAA,EAAa,WAAA,EAAW,IAAA,EACvB,QAAA,EAAA;AAAA,sBAAAN,cAAA,CAACO,qBAAA,EAAA,EAAe,CAAA;AAAA,sBAChBP,cAAA,CAACQ,qBAAA,EAAA,EACC,QAAA,kBAAAV,eAAA,CAACW,kBAAA,EAAA,EAAY,WAAU,sCAAA,EACrB,QAAA,EAAA;AAAA,wBAAAT,cAAA,CAACU,kBAAA,EAAA,EAAY,SAAA,EAAU,SAAA,EAAW,QAAA,EAAA,KAAA,EAAM,CAAA;AAAA,wBACxCV,cAAA,CAAC,KAAA,EAAA,EAAI,SAAA,EAAU,8BAAA,EAAgC,QAAA,EAAS;AAAA,OAAA,EAC1D,CAAA,EACF;AAAA,KAAA,EACF;AAAA,GAAA,EACF,CAAA;AAEJ;;;;"}
1
+ {"version":3,"file":"panel-drawer.cjs.js","sources":["../../src/lib/resize/panel-drawer.tsx"],"sourcesContent":["import type { ReactNode } from 'react';\nimport { PanelEdgeIcon } from './panel-edge-icon';\nimport { panelIconButtonClass } from './panel-icon-button';\nimport {\n Drawer,\n DrawerBackdrop,\n DrawerPopup,\n DrawerPortal,\n DrawerTitle,\n DrawerTrigger,\n DrawerViewport,\n} from '@/ds/components/Drawer';\nimport { Icon } from '@/ds/icons';\nimport { cn } from '@/lib/utils';\n\nexport interface PanelDrawerProps {\n direction: 'left' | 'right';\n /** Accessible name for the trigger button and the drawer. */\n label: string;\n children: ReactNode;\n}\n\nexport const PanelDrawer = ({ direction, label, children }: PanelDrawerProps) => {\n return (\n <Drawer side={direction}>\n <DrawerTrigger asChild>\n <button\n type=\"button\"\n aria-label={label}\n className={cn(panelIconButtonClass, 'absolute top-2 z-10', direction === 'left' ? 'left-2' : 'right-2')}\n >\n <Icon>\n <PanelEdgeIcon side={direction} />\n </Icon>\n </button>\n </DrawerTrigger>\n\n <DrawerPortal keepMounted>\n <DrawerBackdrop />\n <DrawerViewport>\n <DrawerPopup className=\"w-[calc(100vw-2.5rem)] max-w-[28rem]\">\n <DrawerTitle className=\"sr-only\">{label}</DrawerTitle>\n <div className=\"flex min-h-0 flex-1 flex-col\">{children}</div>\n </DrawerPopup>\n </DrawerViewport>\n </DrawerPortal>\n </Drawer>\n );\n};\n"],"names":["jsxs","Drawer","jsx","DrawerTrigger","cn","panelIconButtonClass","Icon","PanelEdgeIcon","DrawerPortal","DrawerBackdrop","DrawerViewport","DrawerPopup","DrawerTitle"],"mappings":";;;;;;;;;;;;AAsBO,MAAM,cAAc,CAAC,EAAE,SAAA,EAAW,KAAA,EAAO,UAAS,KAAwB;AAC/E,EAAA,uBACEA,eAAA,CAACC,aAAA,EAAA,EAAO,IAAA,EAAM,SAAA,EACZ,QAAA,EAAA;AAAA,oBAAAC,cAAA,CAACC,oBAAA,EAAA,EAAc,SAAO,IAAA,EACpB,QAAA,kBAAAD,cAAA;AAAA,MAAC,QAAA;AAAA,MAAA;AAAA,QACC,IAAA,EAAK,QAAA;AAAA,QACL,YAAA,EAAY,KAAA;AAAA,QACZ,WAAWE,WAAA,CAAGC,2CAAA,EAAsB,uBAAuB,SAAA,KAAc,MAAA,GAAS,WAAW,SAAS,CAAA;AAAA,QAEtG,yCAACC,eAAA,EAAA,EACC,QAAA,kBAAAJ,cAAA,CAACK,kCAAA,EAAA,EAAc,IAAA,EAAM,WAAW,CAAA,EAClC;AAAA;AAAA,KACF,EACF,CAAA;AAAA,oBAEAP,eAAA,CAACQ,mBAAA,EAAA,EAAa,WAAA,EAAW,IAAA,EACvB,QAAA,EAAA;AAAA,sBAAAN,cAAA,CAACO,qBAAA,EAAA,EAAe,CAAA;AAAA,sBAChBP,cAAA,CAACQ,qBAAA,EAAA,EACC,QAAA,kBAAAV,eAAA,CAACW,kBAAA,EAAA,EAAY,WAAU,sCAAA,EACrB,QAAA,EAAA;AAAA,wBAAAT,cAAA,CAACU,kBAAA,EAAA,EAAY,SAAA,EAAU,SAAA,EAAW,QAAA,EAAA,KAAA,EAAM,CAAA;AAAA,wBACxCV,cAAA,CAAC,KAAA,EAAA,EAAI,SAAA,EAAU,8BAAA,EAAgC,QAAA,EAAS;AAAA,OAAA,EAC1D,CAAA,EACF;AAAA,KAAA,EACF;AAAA,GAAA,EACF,CAAA;AAEJ;;;;"}
@@ -2,8 +2,9 @@ import { jsxs, jsx } from 'react/jsx-runtime';
2
2
  import { PanelEdgeIcon } from './panel-edge-icon.es.js';
3
3
  import { panelIconButtonClass } from './panel-icon-button.es.js';
4
4
  import { D as Drawer, p as DrawerTrigger, l as DrawerPortal, a as DrawerBackdrop, q as DrawerViewport, k as DrawerPopup, o as DrawerTitle } from '../drawer-Xyd1zBeV.js';
5
- import { c as cn } from '../cn-BakJzhuv.js';
6
5
  import { Icon } from '../icons/Icon.es.js';
6
+ import 'lucide-react';
7
+ import { c as cn } from '../cn-BakJzhuv.js';
7
8
 
8
9
  const PanelDrawer = ({ direction, label, children }) => {
9
10
  return /* @__PURE__ */ jsxs(Drawer, { side: direction, children: [
@@ -1 +1 @@
1
- {"version":3,"file":"panel-drawer.es.js","sources":["../../src/lib/resize/panel-drawer.tsx"],"sourcesContent":["import type { ReactNode } from 'react';\nimport { PanelEdgeIcon } from './panel-edge-icon';\nimport { panelIconButtonClass } from './panel-icon-button';\nimport {\n Drawer,\n DrawerBackdrop,\n DrawerPopup,\n DrawerPortal,\n DrawerTitle,\n DrawerTrigger,\n DrawerViewport,\n} from '@/ds/components/Drawer';\nimport { Icon } from '@/ds/icons';\nimport { cn } from '@/lib/utils';\n\nexport interface PanelDrawerProps {\n direction: 'left' | 'right';\n /** Accessible name for the trigger button and the drawer. */\n label: string;\n children: ReactNode;\n}\n\nexport const PanelDrawer = ({ direction, label, children }: PanelDrawerProps) => {\n return (\n <Drawer side={direction}>\n <DrawerTrigger asChild>\n <button\n type=\"button\"\n aria-label={label}\n className={cn(panelIconButtonClass, 'absolute top-2 z-10', direction === 'left' ? 'left-2' : 'right-2')}\n >\n <Icon>\n <PanelEdgeIcon side={direction} />\n </Icon>\n </button>\n </DrawerTrigger>\n\n <DrawerPortal keepMounted>\n <DrawerBackdrop />\n <DrawerViewport>\n <DrawerPopup className=\"w-[calc(100vw-2.5rem)] max-w-[28rem]\">\n <DrawerTitle className=\"sr-only\">{label}</DrawerTitle>\n <div className=\"flex min-h-0 flex-1 flex-col\">{children}</div>\n </DrawerPopup>\n </DrawerViewport>\n </DrawerPortal>\n </Drawer>\n );\n};\n"],"names":[],"mappings":";;;;;;;AAsBO,MAAM,cAAc,CAAC,EAAE,SAAA,EAAW,KAAA,EAAO,UAAS,KAAwB;AAC/E,EAAA,uBACE,IAAA,CAAC,MAAA,EAAA,EAAO,IAAA,EAAM,SAAA,EACZ,QAAA,EAAA;AAAA,oBAAA,GAAA,CAAC,aAAA,EAAA,EAAc,SAAO,IAAA,EACpB,QAAA,kBAAA,GAAA;AAAA,MAAC,QAAA;AAAA,MAAA;AAAA,QACC,IAAA,EAAK,QAAA;AAAA,QACL,YAAA,EAAY,KAAA;AAAA,QACZ,WAAW,EAAA,CAAG,oBAAA,EAAsB,uBAAuB,SAAA,KAAc,MAAA,GAAS,WAAW,SAAS,CAAA;AAAA,QAEtG,8BAAC,IAAA,EAAA,EACC,QAAA,kBAAA,GAAA,CAAC,aAAA,EAAA,EAAc,IAAA,EAAM,WAAW,CAAA,EAClC;AAAA;AAAA,KACF,EACF,CAAA;AAAA,oBAEA,IAAA,CAAC,YAAA,EAAA,EAAa,WAAA,EAAW,IAAA,EACvB,QAAA,EAAA;AAAA,sBAAA,GAAA,CAAC,cAAA,EAAA,EAAe,CAAA;AAAA,sBAChB,GAAA,CAAC,cAAA,EAAA,EACC,QAAA,kBAAA,IAAA,CAAC,WAAA,EAAA,EAAY,WAAU,sCAAA,EACrB,QAAA,EAAA;AAAA,wBAAA,GAAA,CAAC,WAAA,EAAA,EAAY,SAAA,EAAU,SAAA,EAAW,QAAA,EAAA,KAAA,EAAM,CAAA;AAAA,wBACxC,GAAA,CAAC,KAAA,EAAA,EAAI,SAAA,EAAU,8BAAA,EAAgC,QAAA,EAAS;AAAA,OAAA,EAC1D,CAAA,EACF;AAAA,KAAA,EACF;AAAA,GAAA,EACF,CAAA;AAEJ;;;;"}
1
+ {"version":3,"file":"panel-drawer.es.js","sources":["../../src/lib/resize/panel-drawer.tsx"],"sourcesContent":["import type { ReactNode } from 'react';\nimport { PanelEdgeIcon } from './panel-edge-icon';\nimport { panelIconButtonClass } from './panel-icon-button';\nimport {\n Drawer,\n DrawerBackdrop,\n DrawerPopup,\n DrawerPortal,\n DrawerTitle,\n DrawerTrigger,\n DrawerViewport,\n} from '@/ds/components/Drawer';\nimport { Icon } from '@/ds/icons';\nimport { cn } from '@/lib/utils';\n\nexport interface PanelDrawerProps {\n direction: 'left' | 'right';\n /** Accessible name for the trigger button and the drawer. */\n label: string;\n children: ReactNode;\n}\n\nexport const PanelDrawer = ({ direction, label, children }: PanelDrawerProps) => {\n return (\n <Drawer side={direction}>\n <DrawerTrigger asChild>\n <button\n type=\"button\"\n aria-label={label}\n className={cn(panelIconButtonClass, 'absolute top-2 z-10', direction === 'left' ? 'left-2' : 'right-2')}\n >\n <Icon>\n <PanelEdgeIcon side={direction} />\n </Icon>\n </button>\n </DrawerTrigger>\n\n <DrawerPortal keepMounted>\n <DrawerBackdrop />\n <DrawerViewport>\n <DrawerPopup className=\"w-[calc(100vw-2.5rem)] max-w-[28rem]\">\n <DrawerTitle className=\"sr-only\">{label}</DrawerTitle>\n <div className=\"flex min-h-0 flex-1 flex-col\">{children}</div>\n </DrawerPopup>\n </DrawerViewport>\n </DrawerPortal>\n </Drawer>\n );\n};\n"],"names":[],"mappings":";;;;;;;;AAsBO,MAAM,cAAc,CAAC,EAAE,SAAA,EAAW,KAAA,EAAO,UAAS,KAAwB;AAC/E,EAAA,uBACE,IAAA,CAAC,MAAA,EAAA,EAAO,IAAA,EAAM,SAAA,EACZ,QAAA,EAAA;AAAA,oBAAA,GAAA,CAAC,aAAA,EAAA,EAAc,SAAO,IAAA,EACpB,QAAA,kBAAA,GAAA;AAAA,MAAC,QAAA;AAAA,MAAA;AAAA,QACC,IAAA,EAAK,QAAA;AAAA,QACL,YAAA,EAAY,KAAA;AAAA,QACZ,WAAW,EAAA,CAAG,oBAAA,EAAsB,uBAAuB,SAAA,KAAc,MAAA,GAAS,WAAW,SAAS,CAAA;AAAA,QAEtG,8BAAC,IAAA,EAAA,EACC,QAAA,kBAAA,GAAA,CAAC,aAAA,EAAA,EAAc,IAAA,EAAM,WAAW,CAAA,EAClC;AAAA;AAAA,KACF,EACF,CAAA;AAAA,oBAEA,IAAA,CAAC,YAAA,EAAA,EAAa,WAAA,EAAW,IAAA,EACvB,QAAA,EAAA;AAAA,sBAAA,GAAA,CAAC,cAAA,EAAA,EAAe,CAAA;AAAA,sBAChB,GAAA,CAAC,cAAA,EAAA,EACC,QAAA,kBAAA,IAAA,CAAC,WAAA,EAAA,EAAY,WAAU,sCAAA,EACrB,QAAA,EAAA;AAAA,wBAAA,GAAA,CAAC,WAAA,EAAA,EAAY,SAAA,EAAU,SAAA,EAAW,QAAA,EAAA,KAAA,EAAM,CAAA;AAAA,wBACxC,GAAA,CAAC,KAAA,EAAA,EAAI,SAAA,EAAU,8BAAA,EAAgC,QAAA,EAAS;AAAA,OAAA,EAC1D,CAAA,EACF;AAAA,KAAA,EACF;AAAA,GAAA,EACF,CAAA;AAEJ;;;;"}
@@ -5,8 +5,8 @@ const lucideReact = require('lucide-react');
5
5
  const React = require('react');
6
6
  const utils_ruleEngine = require('./utils/rule-engine.cjs.js');
7
7
  const select = require('./select-BxSmi19p.cjs');
8
- const utils_cn = require('./cn-vA5sWo9W.cjs');
9
8
  const icons_Icon = require('./icons/Icon.cjs.js');
9
+ const utils_cn = require('./cn-vA5sWo9W.cjs');
10
10
  const input = require('./input-VzN7w_Xq.cjs');
11
11
  const Button = require('./Button-66ghjQV8.cjs');
12
12
 
@@ -591,4 +591,4 @@ exports.getChildFieldOptions = getChildFieldOptions;
591
591
  exports.getFieldOptionAtPath = getFieldOptionAtPath;
592
592
  exports.getFieldOptionsFromSchema = getFieldOptionsFromSchema;
593
593
  exports.parseFieldPath = parseFieldPath;
594
- //# sourceMappingURL=rule-builder-CN5HwvJ3.cjs.map
594
+ //# sourceMappingURL=rule-builder-BGlwYc1Q.cjs.map