@mastra/playground-ui 36.1.0-alpha.2 → 37.0.0-alpha.3
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.
- package/CHANGELOG.md +15 -0
- package/dist/Avatar-DWt9SxCq.cjs +44 -0
- package/dist/Avatar-DWt9SxCq.cjs.map +1 -0
- package/dist/Avatar-t2EzDraN.js +42 -0
- package/dist/Avatar-t2EzDraN.js.map +1 -0
- package/dist/Badge-COWZ8pf7.cjs +57 -0
- package/dist/Badge-COWZ8pf7.cjs.map +1 -0
- package/dist/Badge-uc10IvHk.js +55 -0
- package/dist/Badge-uc10IvHk.js.map +1 -0
- package/dist/Breadcrumb--hRsY96j.js +35 -0
- package/dist/Breadcrumb--hRsY96j.js.map +1 -0
- package/dist/Breadcrumb-D7lcwKK6.cjs +39 -0
- package/dist/Breadcrumb-D7lcwKK6.cjs.map +1 -0
- package/dist/Button-BVNuv0IS.cjs +108 -0
- package/dist/Button-BVNuv0IS.cjs.map +1 -0
- package/dist/Button-lkWOSV62.js +105 -0
- package/dist/Button-lkWOSV62.js.map +1 -0
- package/dist/Card-BbyjZ25m.js +64 -0
- package/dist/Card-BbyjZ25m.js.map +1 -0
- package/dist/Card-CHgwIKeK.cjs +90 -0
- package/dist/Card-CHgwIKeK.cjs.map +1 -0
- package/dist/EmptyState-Ba3F-bq5.cjs +33 -0
- package/dist/EmptyState-Ba3F-bq5.cjs.map +1 -0
- package/dist/EmptyState-Cy8hG1-a.js +31 -0
- package/dist/EmptyState-Cy8hG1-a.js.map +1 -0
- package/dist/Entity-CSd7oH01.js +42 -0
- package/dist/Entity-CSd7oH01.js.map +1 -0
- package/dist/Entity-jOILJB7_.cjs +48 -0
- package/dist/Entity-jOILJB7_.cjs.map +1 -0
- package/dist/ErrorBoundary-Bdm6QBVz.js +154 -0
- package/dist/ErrorBoundary-Bdm6QBVz.js.map +1 -0
- package/dist/ErrorBoundary-Bh0P3RR7.cjs +175 -0
- package/dist/ErrorBoundary-Bh0P3RR7.cjs.map +1 -0
- package/dist/Header-CYIVgE-P.cjs +36 -0
- package/dist/Header-CYIVgE-P.cjs.map +1 -0
- package/dist/Header-DQvlg0Sf.js +31 -0
- package/dist/Header-DQvlg0Sf.js.map +1 -0
- package/dist/Icon-BAgNsQRj.js +14 -0
- package/dist/Icon-BAgNsQRj.js.map +1 -0
- package/dist/Icon-xYD5TR12.cjs +16 -0
- package/dist/Icon-xYD5TR12.cjs.map +1 -0
- package/dist/Notice-BzzC2DcE.js +89 -0
- package/dist/Notice-BzzC2DcE.js.map +1 -0
- package/dist/Notice-wX_dMPTN.cjs +91 -0
- package/dist/Notice-wX_dMPTN.cjs.map +1 -0
- package/dist/PermissionDenied-BFTDtDH5.js +22 -0
- package/dist/PermissionDenied-BFTDtDH5.js.map +1 -0
- package/dist/PermissionDenied-C3I9RlvX.cjs +24 -0
- package/dist/PermissionDenied-C3I9RlvX.cjs.map +1 -0
- package/dist/SessionExpired-BYX9o6QV.cjs +47 -0
- package/dist/SessionExpired-BYX9o6QV.cjs.map +1 -0
- package/dist/SessionExpired-Mwi94d_-.js +45 -0
- package/dist/SessionExpired-Mwi94d_-.js.map +1 -0
- package/dist/StatusBadge-B0_05d2I.cjs +74 -0
- package/dist/StatusBadge-B0_05d2I.cjs.map +1 -0
- package/dist/StatusBadge-RV2nOf-F.js +72 -0
- package/dist/StatusBadge-RV2nOf-F.js.map +1 -0
- package/dist/Txt-BT8_EkuZ.cjs +28 -0
- package/dist/Txt-BT8_EkuZ.cjs.map +1 -0
- package/dist/Txt-p33XTnu8.js +26 -0
- package/dist/Txt-p33XTnu8.js.map +1 -0
- package/dist/alert-dialog-BebviYXz.cjs +120 -0
- package/dist/alert-dialog-BebviYXz.cjs.map +1 -0
- package/dist/alert-dialog-DAoPqgQ_.js +99 -0
- package/dist/alert-dialog-DAoPqgQ_.js.map +1 -0
- package/dist/brand-loader-0aIhKY-b.cjs +54 -0
- package/dist/brand-loader-0aIhKY-b.cjs.map +1 -0
- package/dist/brand-loader-D_iuoBVZ.js +52 -0
- package/dist/brand-loader-D_iuoBVZ.js.map +1 -0
- package/dist/buttons-group-Cq0bhJ9W.cjs +185 -0
- package/dist/buttons-group-Cq0bhJ9W.cjs.map +1 -0
- package/dist/buttons-group-DoY6vWNX.js +161 -0
- package/dist/buttons-group-DoY6vWNX.js.map +1 -0
- package/dist/checkbox-CYy10J_9.js +88 -0
- package/dist/checkbox-CYy10J_9.js.map +1 -0
- package/dist/checkbox-D1vhO7CT.cjs +109 -0
- package/dist/checkbox-D1vhO7CT.cjs.map +1 -0
- package/dist/chip-C-TQBr40.js +66 -0
- package/dist/chip-C-TQBr40.js.map +1 -0
- package/dist/chip-DYly-1k3.cjs +68 -0
- package/dist/chip-DYly-1k3.cjs.map +1 -0
- package/dist/chips-group-BYi8MN_c.js +21 -0
- package/dist/chips-group-BYi8MN_c.js.map +1 -0
- package/dist/chips-group-yhKjmkd9.cjs +23 -0
- package/dist/chips-group-yhKjmkd9.cjs.map +1 -0
- package/dist/cn-BakJzhuv.js +3290 -0
- package/dist/cn-BakJzhuv.js.map +1 -0
- package/dist/cn-vA5sWo9W.cjs +3293 -0
- package/dist/cn-vA5sWo9W.cjs.map +1 -0
- package/dist/code-block-CCB6fgF8.js +84 -0
- package/dist/code-block-CCB6fgF8.js.map +1 -0
- package/dist/code-block-DEoFei7v.cjs +86 -0
- package/dist/code-block-DEoFei7v.cjs.map +1 -0
- package/dist/code-editor-Cu1UZsfM.cjs +449 -0
- package/dist/code-editor-Cu1UZsfM.cjs.map +1 -0
- package/dist/code-editor-Do6JeqGb.js +441 -0
- package/dist/code-editor-Do6JeqGb.js.map +1 -0
- package/dist/collapsible-BkPKxVw5.cjs +61 -0
- package/dist/collapsible-BkPKxVw5.cjs.map +1 -0
- package/dist/collapsible-C0LKBzLy.js +57 -0
- package/dist/collapsible-C0LKBzLy.js.map +1 -0
- package/dist/combobox-Db9cmoVE.js +223 -0
- package/dist/combobox-Db9cmoVE.js.map +1 -0
- package/dist/combobox-_D0TWENi.cjs +245 -0
- package/dist/combobox-_D0TWENi.cjs.map +1 -0
- package/dist/command-BnG5P-qM.cjs +194 -0
- package/dist/command-BnG5P-qM.cjs.map +1 -0
- package/dist/command-DNmjUcRb.js +165 -0
- package/dist/command-DNmjUcRb.js.map +1 -0
- package/dist/components/AlertDialog.cjs.js +1 -1
- package/dist/components/AlertDialog.es.js +1 -1
- package/dist/components/Avatar.cjs.js +1 -1
- package/dist/components/Avatar.es.js +1 -1
- package/dist/components/Badge.cjs.js +1 -1
- package/dist/components/Badge.es.js +1 -1
- package/dist/components/BrandLoader.cjs.js +1 -1
- package/dist/components/BrandLoader.es.js +1 -1
- package/dist/components/Breadcrumb.cjs.js +1 -1
- package/dist/components/Breadcrumb.es.js +1 -1
- package/dist/components/Button.cjs.js +1 -1
- package/dist/components/Button.es.js +1 -1
- package/dist/components/ButtonsGroup.cjs.js +1 -1
- package/dist/components/ButtonsGroup.es.js +1 -1
- package/dist/components/Card.cjs.js +1 -1
- package/dist/components/Card.es.js +1 -1
- package/dist/components/Checkbox.cjs.js +1 -1
- package/dist/components/Checkbox.es.js +1 -1
- package/dist/components/Chip.cjs.js +2 -2
- package/dist/components/Chip.es.js +2 -2
- package/dist/components/CodeBlock.cjs.js +1 -1
- package/dist/components/CodeBlock.es.js +1 -1
- package/dist/components/CodeEditor.cjs.js +1 -1
- package/dist/components/CodeEditor.es.js +1 -1
- package/dist/components/Collapsible.cjs.js +1 -1
- package/dist/components/Collapsible.es.js +1 -1
- package/dist/components/Columns.cjs.js +1 -1
- package/dist/components/Columns.es.js +1 -1
- package/dist/components/Combobox.cjs.js +1 -1
- package/dist/components/Combobox.es.js +1 -1
- package/dist/components/Command.cjs.js +1 -1
- package/dist/components/Command.es.js +1 -1
- package/dist/components/ContextMenu.cjs.js +12 -12
- package/dist/components/ContextMenu.cjs.js.map +1 -1
- package/dist/components/ContextMenu.es.js +1 -1
- package/dist/components/CopyButton.cjs.js +1 -1
- package/dist/components/CopyButton.es.js +1 -1
- package/dist/components/DashboardCard.cjs.js +1 -1
- package/dist/components/DashboardCard.es.js +1 -1
- package/dist/components/DataCodeSection.cjs.js +1 -1
- package/dist/components/DataCodeSection.es.js +1 -1
- package/dist/components/DataDetailsPanel.cjs.js +14 -14
- package/dist/components/DataDetailsPanel.cjs.js.map +1 -1
- package/dist/components/DataDetailsPanel.es.js +5 -5
- package/dist/components/DataFilter.cjs.js +1 -1
- package/dist/components/DataFilter.es.js +1 -1
- package/dist/components/DataKeysAndValues.cjs.js +1 -1
- package/dist/components/DataKeysAndValues.es.js +1 -1
- package/dist/components/DataList.cjs.js +3 -3
- package/dist/components/DataList.es.js +3 -3
- package/dist/components/DataPanel.cjs.js +1 -1
- package/dist/components/DataPanel.es.js +1 -1
- package/dist/components/DateTimePicker.cjs.js +2 -2
- package/dist/components/DateTimePicker.es.js +2 -2
- package/dist/components/DateTimeRangePicker.cjs.js +1 -1
- package/dist/components/DateTimeRangePicker.es.js +1 -1
- package/dist/components/Dialog.cjs.js +1 -1
- package/dist/components/Dialog.es.js +1 -1
- package/dist/components/Drawer.cjs.js +1 -1
- package/dist/components/Drawer.es.js +1 -1
- package/dist/components/DropdownMenu.cjs.js +1 -1
- package/dist/components/DropdownMenu.es.js +1 -1
- package/dist/components/EmptyState.cjs.js +1 -1
- package/dist/components/EmptyState.es.js +1 -1
- package/dist/components/Entity.cjs.js +1 -1
- package/dist/components/Entity.es.js +1 -1
- package/dist/components/EntityHeader.cjs.js +1 -1
- package/dist/components/EntityHeader.es.js +1 -1
- package/dist/components/Entry.cjs.js +1 -1
- package/dist/components/Entry.es.js +1 -1
- package/dist/components/EnvironmentVariablesEditor.cjs.js +1 -1
- package/dist/components/EnvironmentVariablesEditor.es.js +1 -1
- package/dist/components/ErrorBoundary.cjs.js +1 -1
- package/dist/components/ErrorBoundary.es.js +1 -1
- package/dist/components/FormFieldBlocks.cjs.js +5 -5
- package/dist/components/FormFieldBlocks.es.js +5 -5
- package/dist/components/Header.cjs.js +1 -1
- package/dist/components/Header.es.js +1 -1
- package/dist/components/HorizontalBars.cjs.js +1 -1
- package/dist/components/HorizontalBars.es.js +1 -1
- package/dist/components/HoverCard.cjs.js +1 -1
- package/dist/components/HoverCard.es.js +1 -1
- package/dist/components/Input.cjs.js +1 -1
- package/dist/components/Input.es.js +1 -1
- package/dist/components/InputGroup.cjs.js +1 -1
- package/dist/components/InputGroup.es.js +1 -1
- package/dist/components/ItemList.cjs.js +1 -1
- package/dist/components/ItemList.es.js +1 -1
- package/dist/components/JSONSchemaForm.cjs.js +12 -12
- package/dist/components/JSONSchemaForm.cjs.js.map +1 -1
- package/dist/components/JSONSchemaForm.es.js +6 -6
- package/dist/components/Kbd.cjs.js +1 -1
- package/dist/components/Kbd.es.js +1 -1
- package/dist/components/KeyValueList.cjs.js +1 -1
- package/dist/components/KeyValueList.es.js +1 -1
- package/dist/components/Label.cjs.js +1 -1
- package/dist/components/Label.es.js +1 -1
- package/dist/components/ListSearch.cjs.js +1 -1
- package/dist/components/ListSearch.es.js +1 -1
- package/dist/components/Logo.cjs.js +1 -1
- package/dist/components/Logo.es.js +1 -1
- package/dist/components/LogsDataList.cjs.js +2 -2
- package/dist/components/LogsDataList.es.js +2 -2
- package/dist/components/MainContent.cjs.js +1 -1
- package/dist/components/MainContent.es.js +1 -1
- package/dist/components/MainHeader.cjs.js +1 -1
- package/dist/components/MainHeader.es.js +1 -1
- package/dist/components/MainSidebar.cjs.js +1 -1
- package/dist/components/MainSidebar.es.js +1 -1
- package/dist/components/MarkdownRenderer.cjs.js +1 -1
- package/dist/components/MarkdownRenderer.es.js +1 -1
- package/dist/components/MetricsCard.cjs.js +1 -1
- package/dist/components/MetricsCard.es.js +1 -1
- package/dist/components/MetricsFlexGrid.cjs.js +1 -1
- package/dist/components/MetricsFlexGrid.es.js +1 -1
- package/dist/components/MetricsKpiCard.cjs.js +1 -1
- package/dist/components/MetricsKpiCard.es.js +1 -1
- package/dist/components/Notice.cjs.js +1 -1
- package/dist/components/Notice.es.js +1 -1
- package/dist/components/PageHeader.cjs.js +1 -1
- package/dist/components/PageHeader.es.js +1 -1
- package/dist/components/PageLayout.cjs.js +1 -1
- package/dist/components/PageLayout.es.js +1 -1
- package/dist/components/PendingIndicator.cjs.js +1 -1
- package/dist/components/PendingIndicator.es.js +1 -1
- package/dist/components/PermissionDenied.cjs.js +1 -1
- package/dist/components/PermissionDenied.es.js +1 -1
- package/dist/components/Popover.cjs.js +1 -1
- package/dist/components/Popover.es.js +1 -1
- package/dist/components/PrevNextNav.cjs.js +2 -2
- package/dist/components/PrevNextNav.es.js +2 -2
- package/dist/components/PropertyFilter.cjs.js +1 -1
- package/dist/components/PropertyFilter.es.js +1 -1
- package/dist/components/RadioGroup.cjs.js +1 -1
- package/dist/components/RadioGroup.es.js +1 -1
- package/dist/components/ScatterPlotChart.cjs.js +1 -1
- package/dist/components/ScatterPlotChart.es.js +1 -1
- package/dist/components/ScrollArea.cjs.js +1 -1
- package/dist/components/ScrollArea.es.js +1 -1
- package/dist/components/Searchbar.cjs.js +1 -1
- package/dist/components/Searchbar.es.js +1 -1
- package/dist/components/Section.cjs.js +1 -1
- package/dist/components/Section.es.js +1 -1
- package/dist/components/SectionCard.cjs.js +1 -1
- package/dist/components/SectionCard.es.js +1 -1
- package/dist/components/Sections.cjs.js +1 -1
- package/dist/components/Sections.es.js +1 -1
- package/dist/components/Select.cjs.js +1 -1
- package/dist/components/Select.es.js +1 -1
- package/dist/components/SessionExpired.cjs.js +1 -1
- package/dist/components/SessionExpired.es.js +1 -1
- package/dist/components/SettingsRow.cjs.js +3 -3
- package/dist/components/SettingsRow.cjs.js.map +1 -1
- package/dist/components/SettingsRow.es.js +2 -2
- package/dist/components/Shimmer.cjs.js +1 -1
- package/dist/components/Shimmer.es.js +1 -1
- package/dist/components/SideDialog.cjs.js +15 -15
- package/dist/components/SideDialog.cjs.js.map +1 -1
- package/dist/components/SideDialog.es.js +6 -6
- package/dist/components/Skeleton.cjs.js +1 -1
- package/dist/components/Skeleton.es.js +1 -1
- package/dist/components/Slider.cjs.js +1 -1
- package/dist/components/Slider.es.js +1 -1
- package/dist/components/Spinner.cjs.js +1 -1
- package/dist/components/Spinner.es.js +1 -1
- package/dist/components/StatusBadge.cjs.js +1 -1
- package/dist/components/StatusBadge.es.js +1 -1
- package/dist/components/Steps.cjs.js +1 -1
- package/dist/components/Steps.es.js +1 -1
- package/dist/components/Switch.cjs.js +1 -1
- package/dist/components/Switch.es.js +1 -1
- package/dist/components/Table.cjs.js +1 -1
- package/dist/components/Table.es.js +1 -1
- package/dist/components/Tabs.cjs.js +2 -2
- package/dist/components/Tabs.es.js +2 -2
- package/dist/components/Text.cjs.js +1 -1
- package/dist/components/Text.es.js +1 -1
- package/dist/components/Textarea.cjs.js +1 -1
- package/dist/components/Textarea.es.js +1 -1
- package/dist/components/ThemeToggle.cjs.js +1 -1
- package/dist/components/ThemeToggle.es.js +1 -1
- package/dist/components/ThreadList.cjs.js +1 -1
- package/dist/components/ThreadList.es.js +1 -1
- package/dist/components/Tooltip.cjs.js +1 -1
- package/dist/components/Tooltip.es.js +1 -1
- package/dist/components/Tree.cjs.js +1 -1
- package/dist/components/Tree.es.js +1 -1
- package/dist/components/Truncate.cjs.js +1 -1
- package/dist/components/Truncate.es.js +1 -1
- package/dist/components/Txt.cjs.js +1 -1
- package/dist/components/Txt.es.js +1 -1
- package/dist/copy-button-BUOdkU40.js +44 -0
- package/dist/copy-button-BUOdkU40.js.map +1 -0
- package/dist/copy-button-BqD3pp1G.cjs +46 -0
- package/dist/copy-button-BqD3pp1G.cjs.map +1 -0
- package/dist/dashboard-card-C5Jr9KgG.cjs +11 -0
- package/dist/dashboard-card-C5Jr9KgG.cjs.map +1 -0
- package/dist/dashboard-card-DoOrPHcL.js +9 -0
- package/dist/dashboard-card-DoOrPHcL.js.map +1 -0
- package/dist/data-code-section-5_l37a1B.cjs +335 -0
- package/dist/data-code-section-5_l37a1B.cjs.map +1 -0
- package/dist/data-code-section-CB2LT738.js +332 -0
- package/dist/data-code-section-CB2LT738.js.map +1 -0
- package/dist/data-keys-and-values-BjJjw-sC.js +122 -0
- package/dist/data-keys-and-values-BjJjw-sC.js.map +1 -0
- package/dist/data-keys-and-values-CwDiJOoE.cjs +124 -0
- package/dist/data-keys-and-values-CwDiJOoE.cjs.map +1 -0
- package/dist/data-list-CuNTfygB.js +131 -0
- package/dist/data-list-CuNTfygB.js.map +1 -0
- package/dist/data-list-fdicRqId.cjs +135 -0
- package/dist/data-list-fdicRqId.cjs.map +1 -0
- package/dist/data-list-skeleton-CcEwvf6q.cjs +59 -0
- package/dist/data-list-skeleton-CcEwvf6q.cjs.map +1 -0
- package/dist/data-list-skeleton-DNIPkS_y.js +55 -0
- package/dist/data-list-skeleton-DNIPkS_y.js.map +1 -0
- package/dist/data-list-top-cell-GbxlrnjB.cjs +540 -0
- package/dist/data-list-top-cell-GbxlrnjB.cjs.map +1 -0
- package/dist/data-list-top-cell-qvCVWXs-.js +513 -0
- package/dist/data-list-top-cell-qvCVWXs-.js.map +1 -0
- package/dist/data-panel-BspICGLi.cjs +89 -0
- package/dist/data-panel-BspICGLi.cjs.map +1 -0
- package/dist/data-panel-ybSXn-Em.js +87 -0
- package/dist/data-panel-ybSXn-Em.js.map +1 -0
- package/dist/date-time-picker-BKf46hfL.cjs +268 -0
- package/dist/date-time-picker-BKf46hfL.cjs.map +1 -0
- package/dist/date-time-picker-Bc2qtOjj.js +245 -0
- package/dist/date-time-picker-Bc2qtOjj.js.map +1 -0
- package/dist/date-time-range-picker-D0fnJG3j.js +168 -0
- package/dist/date-time-range-picker-D0fnJG3j.js.map +1 -0
- package/dist/date-time-range-picker-DS8pApgs.cjs +170 -0
- package/dist/date-time-range-picker-DS8pApgs.cjs.map +1 -0
- package/dist/dialog-CbstgOet.js +76 -0
- package/dist/dialog-CbstgOet.js.map +1 -0
- package/dist/dialog-DtZ7ym37.cjs +107 -0
- package/dist/dialog-DtZ7ym37.cjs.map +1 -0
- package/dist/drawer-CS2EU0Q_.cjs +366 -0
- package/dist/drawer-CS2EU0Q_.cjs.map +1 -0
- package/dist/drawer-CczLUJ6T.js +326 -0
- package/dist/drawer-CczLUJ6T.js.map +1 -0
- package/dist/dropdown-menu-BvpUs54j.cjs +263 -0
- package/dist/dropdown-menu-BvpUs54j.cjs.map +1 -0
- package/dist/dropdown-menu-rYjDHlMP.js +242 -0
- package/dist/dropdown-menu-rYjDHlMP.js.map +1 -0
- package/dist/entity-header-Crw9v7TH.cjs +19 -0
- package/dist/entity-header-Crw9v7TH.cjs.map +1 -0
- package/dist/entity-header-DZzzm248.js +17 -0
- package/dist/entity-header-DZzzm248.js.map +1 -0
- package/dist/entry-By211Wlw.cjs +14 -0
- package/dist/entry-By211Wlw.cjs.map +1 -0
- package/dist/entry-Dn_tH23N.js +12 -0
- package/dist/entry-Dn_tH23N.js.map +1 -0
- package/dist/environment-variables-editor-BQma-nhE.cjs +519 -0
- package/dist/environment-variables-editor-BQma-nhE.cjs.map +1 -0
- package/dist/environment-variables-editor-BcEqoErE.js +517 -0
- package/dist/environment-variables-editor-BcEqoErE.js.map +1 -0
- package/dist/field-block-BR_ZD9QO.cjs +87 -0
- package/dist/field-block-BR_ZD9QO.cjs.map +1 -0
- package/dist/field-block-CpRBHzQO.js +85 -0
- package/dist/field-block-CpRBHzQO.js.map +1 -0
- package/dist/field-blocks-layout-CWb7D6dY.js +31 -0
- package/dist/field-blocks-layout-CWb7D6dY.js.map +1 -0
- package/dist/field-blocks-layout-CeEYWmTo.cjs +33 -0
- package/dist/field-blocks-layout-CeEYWmTo.cjs.map +1 -0
- package/dist/get-short-id-BD2mSqtQ.cjs +28 -0
- package/dist/get-short-id-BD2mSqtQ.cjs.map +1 -0
- package/dist/get-short-id-ZED99MfC.js +25 -0
- package/dist/get-short-id-ZED99MfC.js.map +1 -0
- package/dist/helpers-CsdqE6P2.js +346 -0
- package/dist/helpers-CsdqE6P2.js.map +1 -0
- package/dist/helpers-DZjuFmIz.cjs +352 -0
- package/dist/helpers-DZjuFmIz.cjs.map +1 -0
- package/dist/hooks/use-copy-to-clipboard.cjs.js +1 -1
- package/dist/hooks/use-copy-to-clipboard.es.js +1 -1
- package/dist/horizontal-bars-CjZn3RnH.cjs +108 -0
- package/dist/horizontal-bars-CjZn3RnH.cjs.map +1 -0
- package/dist/horizontal-bars-D_1wypjd.js +106 -0
- package/dist/horizontal-bars-D_1wypjd.js.map +1 -0
- package/dist/hover-card-DtF9cdE-.cjs +90 -0
- package/dist/hover-card-DtF9cdE-.cjs.map +1 -0
- package/dist/hover-card-dAmvL_J6.js +67 -0
- package/dist/hover-card-dAmvL_J6.js.map +1 -0
- package/dist/index-C-Lt4Bx_.cjs +47 -0
- package/dist/index-C-Lt4Bx_.cjs.map +1 -0
- package/dist/index-CSm06eOE.js +45 -0
- package/dist/index-CSm06eOE.js.map +1 -0
- package/dist/index.cjs.js +150 -150
- package/dist/index.cjs.js.map +1 -1
- package/dist/index.es.js +111 -111
- package/dist/input-CmF5qOKQ.js +65 -0
- package/dist/input-CmF5qOKQ.js.map +1 -0
- package/dist/input-DL5-kqK-.cjs +86 -0
- package/dist/input-DL5-kqK-.cjs.map +1 -0
- package/dist/input-group-BJUC93w1.cjs +245 -0
- package/dist/input-group-BJUC93w1.cjs.map +1 -0
- package/dist/input-group-zRbpW2OB.js +219 -0
- package/dist/input-group-zRbpW2OB.js.map +1 -0
- package/dist/kbd-BAS3Kd2E.cjs +29 -0
- package/dist/kbd-BAS3Kd2E.cjs.map +1 -0
- package/dist/kbd-gp0Sr4mW.js +27 -0
- package/dist/kbd-gp0Sr4mW.js.map +1 -0
- package/dist/key-value-list-BNZQtUuM.js +84 -0
- package/dist/key-value-list-BNZQtUuM.js.map +1 -0
- package/dist/key-value-list-CCHSo-zE.cjs +86 -0
- package/dist/key-value-list-CCHSo-zE.cjs.map +1 -0
- package/dist/label-B-UbxfJf.cjs +34 -0
- package/dist/label-B-UbxfJf.cjs.map +1 -0
- package/dist/label-WtU3xT6v.js +13 -0
- package/dist/label-WtU3xT6v.js.map +1 -0
- package/dist/list-search-BZ7vrE2M.js +57 -0
- package/dist/list-search-BZ7vrE2M.js.map +1 -0
- package/dist/list-search-mMHuCnvL.cjs +59 -0
- package/dist/list-search-mMHuCnvL.cjs.map +1 -0
- package/dist/logo-BvJK6viC.cjs +70 -0
- package/dist/logo-BvJK6viC.cjs.map +1 -0
- package/dist/logo-DkV7QMVL.js +67 -0
- package/dist/logo-DkV7QMVL.js.map +1 -0
- package/dist/logs-data-list-Bm45BZfQ.cjs +91 -0
- package/dist/logs-data-list-Bm45BZfQ.cjs.map +1 -0
- package/dist/logs-data-list-Bs7F_646.js +88 -0
- package/dist/logs-data-list-Bs7F_646.js.map +1 -0
- package/dist/main-content-Bw7rHdxg.js +75 -0
- package/dist/main-content-Bw7rHdxg.js.map +1 -0
- package/dist/main-content-CxDtwg__.cjs +79 -0
- package/dist/main-content-CxDtwg__.cjs.map +1 -0
- package/dist/main-header-BLQiypqK.cjs +98 -0
- package/dist/main-header-BLQiypqK.cjs.map +1 -0
- package/dist/main-header-rmqNJnuH.js +96 -0
- package/dist/main-header-rmqNJnuH.js.map +1 -0
- package/dist/main-sidebar-BzyLk9al.cjs +798 -0
- package/dist/main-sidebar-BzyLk9al.cjs.map +1 -0
- package/dist/main-sidebar-DOwuzCVj.js +788 -0
- package/dist/main-sidebar-DOwuzCVj.js.map +1 -0
- package/dist/markdown-renderer-7SQ50R7L.cjs +88 -0
- package/dist/markdown-renderer-7SQ50R7L.cjs.map +1 -0
- package/dist/markdown-renderer-furyWBRc.js +86 -0
- package/dist/markdown-renderer-furyWBRc.js.map +1 -0
- package/dist/metrics-card-BTBHMGM_.js +93 -0
- package/dist/metrics-card-BTBHMGM_.js.map +1 -0
- package/dist/metrics-card-CriQ3I_h.cjs +95 -0
- package/dist/metrics-card-CriQ3I_h.cjs.map +1 -0
- package/dist/metrics-flex-grid-C6sgsQo1.cjs +11 -0
- package/dist/metrics-flex-grid-C6sgsQo1.cjs.map +1 -0
- package/dist/metrics-flex-grid-DFFLFYqq.js +9 -0
- package/dist/metrics-flex-grid-DFFLFYqq.js.map +1 -0
- package/dist/metrics-kpi-card-1lwPKo4-.js +77 -0
- package/dist/metrics-kpi-card-1lwPKo4-.js.map +1 -0
- package/dist/metrics-kpi-card-C4rSquAu.cjs +79 -0
- package/dist/metrics-kpi-card-C4rSquAu.cjs.map +1 -0
- package/dist/multi-column-B-Gd6DJJ.js +133 -0
- package/dist/multi-column-B-Gd6DJJ.js.map +1 -0
- package/dist/multi-column-yjFC88Z6.cjs +137 -0
- package/dist/multi-column-yjFC88Z6.cjs.map +1 -0
- package/dist/no-data-page-layout-Csn0lvM1.cjs +104 -0
- package/dist/no-data-page-layout-Csn0lvM1.cjs.map +1 -0
- package/dist/no-data-page-layout-jSfL47xq.js +101 -0
- package/dist/no-data-page-layout-jSfL47xq.js.map +1 -0
- package/dist/page-header-CKUG2h2g.cjs +53 -0
- package/dist/page-header-CKUG2h2g.cjs.map +1 -0
- package/dist/page-header-CfCti-2E.js +51 -0
- package/dist/page-header-CfCti-2E.js.map +1 -0
- package/dist/pending-indicator-BzR7udVF.cjs +9 -0
- package/dist/pending-indicator-BzR7udVF.cjs.map +1 -0
- package/dist/pending-indicator-D25Svcqn.js +7 -0
- package/dist/pending-indicator-D25Svcqn.js.map +1 -0
- package/dist/popover-BjnbSCQw.cjs +119 -0
- package/dist/popover-BjnbSCQw.cjs.map +1 -0
- package/dist/popover-DaFWFKma.js +95 -0
- package/dist/popover-DaFWFKma.js.map +1 -0
- package/dist/process-step-progress-bar-DKn_SWjH.js +136 -0
- package/dist/process-step-progress-bar-DKn_SWjH.js.map +1 -0
- package/dist/process-step-progress-bar-gMkvVzG1.cjs +141 -0
- package/dist/process-step-progress-bar-gMkvVzG1.cjs.map +1 -0
- package/dist/property-filter-creator-DxxQ7nnp.js +669 -0
- package/dist/property-filter-creator-DxxQ7nnp.js.map +1 -0
- package/dist/property-filter-creator-N6YVZDUw.cjs +674 -0
- package/dist/property-filter-creator-N6YVZDUw.cjs.map +1 -0
- package/dist/radio-group-DdMscZHh.js +55 -0
- package/dist/radio-group-DdMscZHh.js.map +1 -0
- package/dist/radio-group-rp_4ZkOj.cjs +77 -0
- package/dist/radio-group-rp_4ZkOj.cjs.map +1 -0
- package/dist/scatter-plot-chart-B3hfFMKS.js +163 -0
- package/dist/scatter-plot-chart-B3hfFMKS.js.map +1 -0
- package/dist/scatter-plot-chart-CFZO31md.cjs +169 -0
- package/dist/scatter-plot-chart-CFZO31md.cjs.map +1 -0
- package/dist/scroll-area-0KvrrVBh.cjs +243 -0
- package/dist/scroll-area-0KvrrVBh.cjs.map +1 -0
- package/dist/scroll-area-COFVK-be.js +221 -0
- package/dist/scroll-area-COFVK-be.js.map +1 -0
- package/dist/search-field-block-BEBsQ2-6.cjs +117 -0
- package/dist/search-field-block-BEBsQ2-6.cjs.map +1 -0
- package/dist/search-field-block-CHB9BY84.js +115 -0
- package/dist/search-field-block-CHB9BY84.js.map +1 -0
- package/dist/searchbar-DzOR_xnW.cjs +105 -0
- package/dist/searchbar-DzOR_xnW.cjs.map +1 -0
- package/dist/searchbar-SYpN7NP_.js +102 -0
- package/dist/searchbar-SYpN7NP_.js.map +1 -0
- package/dist/section-B4BoDRzs.js +36 -0
- package/dist/section-B4BoDRzs.js.map +1 -0
- package/dist/section-BTptkVDr.cjs +40 -0
- package/dist/section-BTptkVDr.cjs.map +1 -0
- package/dist/section-card-D3Oe5Ph4.js +93 -0
- package/dist/section-card-D3Oe5Ph4.js.map +1 -0
- package/dist/section-card-zuraIMIJ.cjs +96 -0
- package/dist/section-card-zuraIMIJ.cjs.map +1 -0
- package/dist/sections-BN1lrVnM.cjs +11 -0
- package/dist/sections-BN1lrVnM.cjs.map +1 -0
- package/dist/sections-Dd3f7qhe.js +9 -0
- package/dist/sections-Dd3f7qhe.js.map +1 -0
- package/dist/select-BCKCKsi9.js +162 -0
- package/dist/select-BCKCKsi9.js.map +1 -0
- package/dist/select-DBbnw8QV.cjs +188 -0
- package/dist/select-DBbnw8QV.cjs.map +1 -0
- package/dist/select-data-filter-BdoLm7cU.js +192 -0
- package/dist/select-data-filter-BdoLm7cU.js.map +1 -0
- package/dist/select-data-filter-s_79ePBD.cjs +194 -0
- package/dist/select-data-filter-s_79ePBD.cjs.map +1 -0
- package/dist/select-field-block-C5wc3v5m.js +48 -0
- package/dist/select-field-block-C5wc3v5m.js.map +1 -0
- package/dist/select-field-block-CVy2hRpS.cjs +50 -0
- package/dist/select-field-block-CVy2hRpS.cjs.map +1 -0
- package/dist/shimmer-C_ea1Lfl.js +22 -0
- package/dist/shimmer-C_ea1Lfl.js.map +1 -0
- package/dist/shimmer-Ds0KyRHK.cjs +24 -0
- package/dist/shimmer-Ds0KyRHK.cjs.map +1 -0
- package/dist/skeleton-CUjhGPAx.js +23 -0
- package/dist/skeleton-CUjhGPAx.js.map +1 -0
- package/dist/skeleton-D5zq7rhk.cjs +25 -0
- package/dist/skeleton-D5zq7rhk.cjs.map +1 -0
- package/dist/slider-Cv_96kU9.cjs +90 -0
- package/dist/slider-Cv_96kU9.cjs.map +1 -0
- package/dist/slider-Kps70qjb.js +88 -0
- package/dist/slider-Kps70qjb.js.map +1 -0
- package/dist/spacings-C87dXiT-.js +208 -0
- package/dist/spacings-C87dXiT-.js.map +1 -0
- package/dist/spinner-CbKwvEp3.cjs +53 -0
- package/dist/spinner-CbKwvEp3.cjs.map +1 -0
- package/dist/spinner-CzdgR9lk.js +51 -0
- package/dist/spinner-CzdgR9lk.js.map +1 -0
- package/dist/src/utils/cn.d.ts +1 -0
- package/dist/switch-BGV-AXmu.cjs +124 -0
- package/dist/switch-BGV-AXmu.cjs.map +1 -0
- package/dist/switch-iBVqkTn8.js +103 -0
- package/dist/switch-iBVqkTn8.js.map +1 -0
- package/dist/tabs-content-De3TzqG0.cjs +20 -0
- package/dist/tabs-content-De3TzqG0.cjs.map +1 -0
- package/dist/tabs-content-J4YUF8-A.js +18 -0
- package/dist/tabs-content-J4YUF8-A.js.map +1 -0
- package/dist/tabs-tab-CkHDocn9.cjs +122 -0
- package/dist/tabs-tab-CkHDocn9.cjs.map +1 -0
- package/dist/tabs-tab-D0Ydz5KC.js +118 -0
- package/dist/tabs-tab-D0Ydz5KC.js.map +1 -0
- package/dist/text-field-block-DPyUlRc-.cjs +50 -0
- package/dist/text-field-block-DPyUlRc-.cjs.map +1 -0
- package/dist/text-field-block-DybcFyt-.js +48 -0
- package/dist/text-field-block-DybcFyt-.js.map +1 -0
- package/dist/textarea-CdmDbgMg.cjs +83 -0
- package/dist/textarea-CdmDbgMg.cjs.map +1 -0
- package/dist/textarea-CvcSdBxC.js +62 -0
- package/dist/textarea-CvcSdBxC.js.map +1 -0
- package/dist/theme-toggle-BhMopYF0.cjs +87 -0
- package/dist/theme-toggle-BhMopYF0.cjs.map +1 -0
- package/dist/theme-toggle-Byu3F-Vt.js +85 -0
- package/dist/theme-toggle-Byu3F-Vt.js.map +1 -0
- package/dist/thread-list-5lqbiVjT.cjs +79 -0
- package/dist/thread-list-5lqbiVjT.cjs.map +1 -0
- package/dist/thread-list-B0wpNa1l.js +72 -0
- package/dist/thread-list-B0wpNa1l.js.map +1 -0
- package/dist/time-picker-CQnJSakJ.cjs +113 -0
- package/dist/time-picker-CQnJSakJ.cjs.map +1 -0
- package/dist/time-picker-DoReHQCM.js +110 -0
- package/dist/time-picker-DoReHQCM.js.map +1 -0
- package/dist/tokens.es.js +1 -1
- package/dist/tooltip-CjjqIvhJ.js +111 -0
- package/dist/tooltip-CjjqIvhJ.js.map +1 -0
- package/dist/tooltip-fTKN3FCp.cjs +135 -0
- package/dist/tooltip-fTKN3FCp.cjs.map +1 -0
- package/dist/traces-data-list-DSPQP1h9.cjs +125 -0
- package/dist/traces-data-list-DSPQP1h9.cjs.map +1 -0
- package/dist/traces-data-list-rt7G6c-b.js +122 -0
- package/dist/traces-data-list-rt7G6c-b.js.map +1 -0
- package/dist/tree-DIW9AT9g.js +471 -0
- package/dist/tree-DIW9AT9g.js.map +1 -0
- package/dist/tree-TfjjoQWc.cjs +492 -0
- package/dist/tree-TfjjoQWc.cjs.map +1 -0
- package/dist/truncate-B__sdTWJ.cjs +49 -0
- package/dist/truncate-B__sdTWJ.cjs.map +1 -0
- package/dist/truncate-S31tpC20.js +47 -0
- package/dist/truncate-S31tpC20.js.map +1 -0
- package/dist/use-copy-to-clipboard-CiSfp8oO.js +127 -0
- package/dist/use-copy-to-clipboard-CiSfp8oO.js.map +1 -0
- package/dist/use-copy-to-clipboard-y495_Ckw.cjs +131 -0
- package/dist/use-copy-to-clipboard-y495_Ckw.cjs.map +1 -0
- package/dist/use-table-keyboard-navigation-4FqdVh0f.js +203 -0
- package/dist/use-table-keyboard-navigation-4FqdVh0f.js.map +1 -0
- package/dist/use-table-keyboard-navigation-DGHSNehl.cjs +214 -0
- package/dist/use-table-keyboard-navigation-DGHSNehl.cjs.map +1 -0
- package/dist/utils/cn.cjs.js +10 -0
- package/dist/utils/cn.cjs.js.map +1 -0
- package/dist/utils/cn.d.ts +2 -0
- package/dist/utils/cn.es.js +2 -0
- package/dist/utils/cn.es.js.map +1 -0
- package/package.json +17 -7
- package/dist/Avatar-Dcmi3-pN.js +0 -42
- package/dist/Avatar-Dcmi3-pN.js.map +0 -1
- package/dist/Avatar-Y-1fas25.cjs +0 -44
- package/dist/Avatar-Y-1fas25.cjs.map +0 -1
- package/dist/Badge-CuKV4oHH.cjs +0 -57
- package/dist/Badge-CuKV4oHH.cjs.map +0 -1
- package/dist/Badge-DdJC6M08.js +0 -55
- package/dist/Badge-DdJC6M08.js.map +0 -1
- package/dist/Breadcrumb-BT_nzL3M.cjs +0 -39
- package/dist/Breadcrumb-BT_nzL3M.cjs.map +0 -1
- package/dist/Breadcrumb-CxbCgAij.js +0 -35
- package/dist/Breadcrumb-CxbCgAij.js.map +0 -1
- package/dist/Button-CIPDOgxX.js +0 -105
- package/dist/Button-CIPDOgxX.js.map +0 -1
- package/dist/Button-DhjKny12.cjs +0 -108
- package/dist/Button-DhjKny12.cjs.map +0 -1
- package/dist/Card-Xx0_PeuI.cjs +0 -90
- package/dist/Card-Xx0_PeuI.cjs.map +0 -1
- package/dist/Card-cFJPRQ9O.js +0 -64
- package/dist/Card-cFJPRQ9O.js.map +0 -1
- package/dist/EmptyState-DfXdX6I8.js +0 -31
- package/dist/EmptyState-DfXdX6I8.js.map +0 -1
- package/dist/EmptyState-vw7dhSKP.cjs +0 -33
- package/dist/EmptyState-vw7dhSKP.cjs.map +0 -1
- package/dist/Entity-CVzaJDXu.js +0 -42
- package/dist/Entity-CVzaJDXu.js.map +0 -1
- package/dist/Entity-DALpbsRa.cjs +0 -48
- package/dist/Entity-DALpbsRa.cjs.map +0 -1
- package/dist/ErrorBoundary-DHKgEKNj.cjs +0 -175
- package/dist/ErrorBoundary-DHKgEKNj.cjs.map +0 -1
- package/dist/ErrorBoundary-dIqbGlfe.js +0 -154
- package/dist/ErrorBoundary-dIqbGlfe.js.map +0 -1
- package/dist/Header-Cfc5fIp6.js +0 -31
- package/dist/Header-Cfc5fIp6.js.map +0 -1
- package/dist/Header-wkLHG26m.cjs +0 -36
- package/dist/Header-wkLHG26m.cjs.map +0 -1
- package/dist/Icon-CJEjdbjB.js +0 -14
- package/dist/Icon-CJEjdbjB.js.map +0 -1
- package/dist/Icon-C_Ooy-cP.cjs +0 -16
- package/dist/Icon-C_Ooy-cP.cjs.map +0 -1
- package/dist/Notice-CeF-1wDL.js +0 -89
- package/dist/Notice-CeF-1wDL.js.map +0 -1
- package/dist/Notice-CoxDmlFE.cjs +0 -91
- package/dist/Notice-CoxDmlFE.cjs.map +0 -1
- package/dist/PermissionDenied-DFCUFnNH.js +0 -22
- package/dist/PermissionDenied-DFCUFnNH.js.map +0 -1
- package/dist/PermissionDenied-DjZjq-3E.cjs +0 -24
- package/dist/PermissionDenied-DjZjq-3E.cjs.map +0 -1
- package/dist/SessionExpired-B-3L6-qf.cjs +0 -47
- package/dist/SessionExpired-B-3L6-qf.cjs.map +0 -1
- package/dist/SessionExpired-DfwSc_Ra.js +0 -45
- package/dist/SessionExpired-DfwSc_Ra.js.map +0 -1
- package/dist/StatusBadge-DKtfODhH.cjs +0 -74
- package/dist/StatusBadge-DKtfODhH.cjs.map +0 -1
- package/dist/StatusBadge-DLLmQ85P.js +0 -72
- package/dist/StatusBadge-DLLmQ85P.js.map +0 -1
- package/dist/Txt-AhytBlTj.js +0 -26
- package/dist/Txt-AhytBlTj.js.map +0 -1
- package/dist/Txt-Cmn4ug68.cjs +0 -28
- package/dist/Txt-Cmn4ug68.cjs.map +0 -1
- package/dist/alert-dialog-BovzZq26.cjs +0 -120
- package/dist/alert-dialog-BovzZq26.cjs.map +0 -1
- package/dist/alert-dialog-DjNWuZ_D.js +0 -99
- package/dist/alert-dialog-DjNWuZ_D.js.map +0 -1
- package/dist/brand-loader-Bxz0bWdp.js +0 -52
- package/dist/brand-loader-Bxz0bWdp.js.map +0 -1
- package/dist/brand-loader-DNMY5ZK7.cjs +0 -54
- package/dist/brand-loader-DNMY5ZK7.cjs.map +0 -1
- package/dist/buttons-group-BAU7uXE9.js +0 -161
- package/dist/buttons-group-BAU7uXE9.js.map +0 -1
- package/dist/buttons-group-BvLg2kpv.cjs +0 -185
- package/dist/buttons-group-BvLg2kpv.cjs.map +0 -1
- package/dist/checkbox-Bda6srNY.cjs +0 -109
- package/dist/checkbox-Bda6srNY.cjs.map +0 -1
- package/dist/checkbox-DmKlRClz.js +0 -88
- package/dist/checkbox-DmKlRClz.js.map +0 -1
- package/dist/chip-Cx5D5DkA.cjs +0 -68
- package/dist/chip-Cx5D5DkA.cjs.map +0 -1
- package/dist/chip-Dgrpa03p.js +0 -66
- package/dist/chip-Dgrpa03p.js.map +0 -1
- package/dist/chips-group-CaxAKuxv.cjs +0 -23
- package/dist/chips-group-CaxAKuxv.cjs.map +0 -1
- package/dist/chips-group-DgaAmiHe.js +0 -21
- package/dist/chips-group-DgaAmiHe.js.map +0 -1
- package/dist/code-block-B0JgzCAI.cjs +0 -86
- package/dist/code-block-B0JgzCAI.cjs.map +0 -1
- package/dist/code-block-DlN7SOIs.js +0 -84
- package/dist/code-block-DlN7SOIs.js.map +0 -1
- package/dist/code-editor-CA_5t_YB.js +0 -441
- package/dist/code-editor-CA_5t_YB.js.map +0 -1
- package/dist/code-editor-DtZgszjz.cjs +0 -449
- package/dist/code-editor-DtZgszjz.cjs.map +0 -1
- package/dist/collapsible-CDSgJ39O.cjs +0 -61
- package/dist/collapsible-CDSgJ39O.cjs.map +0 -1
- package/dist/collapsible-PODbdTuV.js +0 -57
- package/dist/collapsible-PODbdTuV.js.map +0 -1
- package/dist/combobox-Bymhm65F.cjs +0 -245
- package/dist/combobox-Bymhm65F.cjs.map +0 -1
- package/dist/combobox-MFS1zEfJ.js +0 -223
- package/dist/combobox-MFS1zEfJ.js.map +0 -1
- package/dist/command-_06ZiPFA.cjs +0 -194
- package/dist/command-_06ZiPFA.cjs.map +0 -1
- package/dist/command-b2kxr61U.js +0 -165
- package/dist/command-b2kxr61U.js.map +0 -1
- package/dist/copy-button-B-6j0Ghf.js +0 -44
- package/dist/copy-button-B-6j0Ghf.js.map +0 -1
- package/dist/copy-button-MNcP8mIU.cjs +0 -46
- package/dist/copy-button-MNcP8mIU.cjs.map +0 -1
- package/dist/dashboard-card-B9enj4NG.cjs +0 -11
- package/dist/dashboard-card-B9enj4NG.cjs.map +0 -1
- package/dist/dashboard-card-C7nmBU5A.js +0 -9
- package/dist/dashboard-card-C7nmBU5A.js.map +0 -1
- package/dist/data-code-section-BJpV0KUn.cjs +0 -335
- package/dist/data-code-section-BJpV0KUn.cjs.map +0 -1
- package/dist/data-code-section-tiCO-71n.js +0 -332
- package/dist/data-code-section-tiCO-71n.js.map +0 -1
- package/dist/data-keys-and-values-Ccw1YngY.cjs +0 -124
- package/dist/data-keys-and-values-Ccw1YngY.cjs.map +0 -1
- package/dist/data-keys-and-values-Dsy4JtgG.js +0 -122
- package/dist/data-keys-and-values-Dsy4JtgG.js.map +0 -1
- package/dist/data-list-CIqwJqP6.js +0 -131
- package/dist/data-list-CIqwJqP6.js.map +0 -1
- package/dist/data-list-DLNj4u4L.cjs +0 -135
- package/dist/data-list-DLNj4u4L.cjs.map +0 -1
- package/dist/data-list-skeleton-BCx_L8EW.js +0 -55
- package/dist/data-list-skeleton-BCx_L8EW.js.map +0 -1
- package/dist/data-list-skeleton-CFw0wA4X.cjs +0 -59
- package/dist/data-list-skeleton-CFw0wA4X.cjs.map +0 -1
- package/dist/data-list-top-cell-C2XN7N1Q.cjs +0 -540
- package/dist/data-list-top-cell-C2XN7N1Q.cjs.map +0 -1
- package/dist/data-list-top-cell-DcI6Vwlh.js +0 -513
- package/dist/data-list-top-cell-DcI6Vwlh.js.map +0 -1
- package/dist/data-panel-Be5IQoR_.cjs +0 -89
- package/dist/data-panel-Be5IQoR_.cjs.map +0 -1
- package/dist/data-panel-Bq4egua6.js +0 -87
- package/dist/data-panel-Bq4egua6.js.map +0 -1
- package/dist/date-time-picker-DSLxVXii.js +0 -245
- package/dist/date-time-picker-DSLxVXii.js.map +0 -1
- package/dist/date-time-picker-ycaMiQLT.cjs +0 -268
- package/dist/date-time-picker-ycaMiQLT.cjs.map +0 -1
- package/dist/date-time-range-picker-CWcKSSEc.js +0 -168
- package/dist/date-time-range-picker-CWcKSSEc.js.map +0 -1
- package/dist/date-time-range-picker-Cjr8PooB.cjs +0 -170
- package/dist/date-time-range-picker-Cjr8PooB.cjs.map +0 -1
- package/dist/dialog-Bmx-XnsU.cjs +0 -107
- package/dist/dialog-Bmx-XnsU.cjs.map +0 -1
- package/dist/dialog-fl9TtR38.js +0 -76
- package/dist/dialog-fl9TtR38.js.map +0 -1
- package/dist/drawer-BW5z1C5B.js +0 -326
- package/dist/drawer-BW5z1C5B.js.map +0 -1
- package/dist/drawer-DAH6ENAQ.cjs +0 -366
- package/dist/drawer-DAH6ENAQ.cjs.map +0 -1
- package/dist/dropdown-menu-Bdxu9uRc.cjs +0 -263
- package/dist/dropdown-menu-Bdxu9uRc.cjs.map +0 -1
- package/dist/dropdown-menu-Zy39I8E6.js +0 -242
- package/dist/dropdown-menu-Zy39I8E6.js.map +0 -1
- package/dist/entity-header-CpClAdJT.js +0 -17
- package/dist/entity-header-CpClAdJT.js.map +0 -1
- package/dist/entity-header-D2q5PizE.cjs +0 -19
- package/dist/entity-header-D2q5PizE.cjs.map +0 -1
- package/dist/entry-B53NXi9c.js +0 -12
- package/dist/entry-B53NXi9c.js.map +0 -1
- package/dist/entry-BwpOISbt.cjs +0 -14
- package/dist/entry-BwpOISbt.cjs.map +0 -1
- package/dist/environment-variables-editor-CBelv_y4.js +0 -517
- package/dist/environment-variables-editor-CBelv_y4.js.map +0 -1
- package/dist/environment-variables-editor-D1AhR2r1.cjs +0 -519
- package/dist/environment-variables-editor-D1AhR2r1.cjs.map +0 -1
- package/dist/field-block-CdCFQi7X.js +0 -85
- package/dist/field-block-CdCFQi7X.js.map +0 -1
- package/dist/field-block-D9R9O6XE.cjs +0 -87
- package/dist/field-block-D9R9O6XE.cjs.map +0 -1
- package/dist/field-blocks-layout-BpbpaIev.js +0 -31
- package/dist/field-blocks-layout-BpbpaIev.js.map +0 -1
- package/dist/field-blocks-layout-Bqock2Nu.cjs +0 -33
- package/dist/field-blocks-layout-Bqock2Nu.cjs.map +0 -1
- package/dist/get-short-id-B4_2mLzM.js +0 -25
- package/dist/get-short-id-B4_2mLzM.js.map +0 -1
- package/dist/get-short-id-DtN4BmrD.cjs +0 -28
- package/dist/get-short-id-DtN4BmrD.cjs.map +0 -1
- package/dist/helpers-CKLV_hu4.cjs +0 -352
- package/dist/helpers-CKLV_hu4.cjs.map +0 -1
- package/dist/helpers-CmNb4X81.js +0 -346
- package/dist/helpers-CmNb4X81.js.map +0 -1
- package/dist/horizontal-bars-BCtFuFMq.js +0 -106
- package/dist/horizontal-bars-BCtFuFMq.js.map +0 -1
- package/dist/horizontal-bars-DbOdclKC.cjs +0 -108
- package/dist/horizontal-bars-DbOdclKC.cjs.map +0 -1
- package/dist/hover-card-D2yWTqja.js +0 -67
- package/dist/hover-card-D2yWTqja.js.map +0 -1
- package/dist/hover-card-F1UdDxwc.cjs +0 -90
- package/dist/hover-card-F1UdDxwc.cjs.map +0 -1
- package/dist/index-CsyK0ihk.js +0 -45
- package/dist/index-CsyK0ihk.js.map +0 -1
- package/dist/index-DPkWrpVb.cjs +0 -47
- package/dist/index-DPkWrpVb.cjs.map +0 -1
- package/dist/input-DGvJg7no.cjs +0 -86
- package/dist/input-DGvJg7no.cjs.map +0 -1
- package/dist/input-DsX-P_dO.js +0 -65
- package/dist/input-DsX-P_dO.js.map +0 -1
- package/dist/input-group-36p8kLTo.js +0 -219
- package/dist/input-group-36p8kLTo.js.map +0 -1
- package/dist/input-group-BTi9MLUI.cjs +0 -245
- package/dist/input-group-BTi9MLUI.cjs.map +0 -1
- package/dist/kbd-CnIg1L19.cjs +0 -29
- package/dist/kbd-CnIg1L19.cjs.map +0 -1
- package/dist/kbd-DRd56y7q.js +0 -27
- package/dist/kbd-DRd56y7q.js.map +0 -1
- package/dist/key-value-list-lPPZ49xw.cjs +0 -86
- package/dist/key-value-list-lPPZ49xw.cjs.map +0 -1
- package/dist/key-value-list-tgXqz4Ft.js +0 -84
- package/dist/key-value-list-tgXqz4Ft.js.map +0 -1
- package/dist/label-Dgz2hRMg.js +0 -13
- package/dist/label-Dgz2hRMg.js.map +0 -1
- package/dist/label-U8omtW8w.cjs +0 -34
- package/dist/label-U8omtW8w.cjs.map +0 -1
- package/dist/list-search-BJyDJlKe.cjs +0 -59
- package/dist/list-search-BJyDJlKe.cjs.map +0 -1
- package/dist/list-search-DfY420q7.js +0 -57
- package/dist/list-search-DfY420q7.js.map +0 -1
- package/dist/logo-BvzT5a1s.cjs +0 -70
- package/dist/logo-BvzT5a1s.cjs.map +0 -1
- package/dist/logo-CaqfKyP7.js +0 -67
- package/dist/logo-CaqfKyP7.js.map +0 -1
- package/dist/logs-data-list-Bl_RjW-m.js +0 -88
- package/dist/logs-data-list-Bl_RjW-m.js.map +0 -1
- package/dist/logs-data-list-CONoy_hv.cjs +0 -91
- package/dist/logs-data-list-CONoy_hv.cjs.map +0 -1
- package/dist/main-content-CR0j00N1.js +0 -75
- package/dist/main-content-CR0j00N1.js.map +0 -1
- package/dist/main-content-CnmMWNin.cjs +0 -79
- package/dist/main-content-CnmMWNin.cjs.map +0 -1
- package/dist/main-header-Bp0d1TMi.js +0 -96
- package/dist/main-header-Bp0d1TMi.js.map +0 -1
- package/dist/main-header-DJLRceP9.cjs +0 -98
- package/dist/main-header-DJLRceP9.cjs.map +0 -1
- package/dist/main-sidebar-4AkWj-fu.cjs +0 -798
- package/dist/main-sidebar-4AkWj-fu.cjs.map +0 -1
- package/dist/main-sidebar-Cwesy0Nt.js +0 -788
- package/dist/main-sidebar-Cwesy0Nt.js.map +0 -1
- package/dist/markdown-renderer-CpynPtYt.cjs +0 -88
- package/dist/markdown-renderer-CpynPtYt.cjs.map +0 -1
- package/dist/markdown-renderer-D67PpB6R.js +0 -86
- package/dist/markdown-renderer-D67PpB6R.js.map +0 -1
- package/dist/metrics-card-Bk3X19xx.js +0 -93
- package/dist/metrics-card-Bk3X19xx.js.map +0 -1
- package/dist/metrics-card-hs1pqY2Y.cjs +0 -95
- package/dist/metrics-card-hs1pqY2Y.cjs.map +0 -1
- package/dist/metrics-flex-grid-BqtZ5emh.js +0 -9
- package/dist/metrics-flex-grid-BqtZ5emh.js.map +0 -1
- package/dist/metrics-flex-grid-DzlyAgr7.cjs +0 -11
- package/dist/metrics-flex-grid-DzlyAgr7.cjs.map +0 -1
- package/dist/metrics-kpi-card-CNUpkoQO.js +0 -77
- package/dist/metrics-kpi-card-CNUpkoQO.js.map +0 -1
- package/dist/metrics-kpi-card-D_SaIWBc.cjs +0 -79
- package/dist/metrics-kpi-card-D_SaIWBc.cjs.map +0 -1
- package/dist/multi-column-ByVOxqGN.cjs +0 -137
- package/dist/multi-column-ByVOxqGN.cjs.map +0 -1
- package/dist/multi-column-DoMyaISV.js +0 -133
- package/dist/multi-column-DoMyaISV.js.map +0 -1
- package/dist/no-data-page-layout-CZzEj0NE.js +0 -101
- package/dist/no-data-page-layout-CZzEj0NE.js.map +0 -1
- package/dist/no-data-page-layout-CiNBx-vK.cjs +0 -104
- package/dist/no-data-page-layout-CiNBx-vK.cjs.map +0 -1
- package/dist/page-header-BS_LNnKw.js +0 -51
- package/dist/page-header-BS_LNnKw.js.map +0 -1
- package/dist/page-header-C1ZlL4Ua.cjs +0 -53
- package/dist/page-header-C1ZlL4Ua.cjs.map +0 -1
- package/dist/pending-indicator-BxD-kwEk.cjs +0 -9
- package/dist/pending-indicator-BxD-kwEk.cjs.map +0 -1
- package/dist/pending-indicator-DmowRHLo.js +0 -7
- package/dist/pending-indicator-DmowRHLo.js.map +0 -1
- package/dist/popover-DKD5OLdY.cjs +0 -119
- package/dist/popover-DKD5OLdY.cjs.map +0 -1
- package/dist/popover-Udpn9Z2N.js +0 -95
- package/dist/popover-Udpn9Z2N.js.map +0 -1
- package/dist/process-step-progress-bar-C0mArMKD.js +0 -136
- package/dist/process-step-progress-bar-C0mArMKD.js.map +0 -1
- package/dist/process-step-progress-bar-D74Y-8Jo.cjs +0 -141
- package/dist/process-step-progress-bar-D74Y-8Jo.cjs.map +0 -1
- package/dist/property-filter-creator-BZgP0jYi.cjs +0 -674
- package/dist/property-filter-creator-BZgP0jYi.cjs.map +0 -1
- package/dist/property-filter-creator-CnX6dWzN.js +0 -669
- package/dist/property-filter-creator-CnX6dWzN.js.map +0 -1
- package/dist/radio-group-CcZMn-TY.cjs +0 -77
- package/dist/radio-group-CcZMn-TY.cjs.map +0 -1
- package/dist/radio-group-DIbajvIk.js +0 -55
- package/dist/radio-group-DIbajvIk.js.map +0 -1
- package/dist/scatter-plot-chart-DGMFaT-u.js +0 -163
- package/dist/scatter-plot-chart-DGMFaT-u.js.map +0 -1
- package/dist/scatter-plot-chart-pPVR9vne.cjs +0 -169
- package/dist/scatter-plot-chart-pPVR9vne.cjs.map +0 -1
- package/dist/scroll-area-BtcyzOxO.cjs +0 -243
- package/dist/scroll-area-BtcyzOxO.cjs.map +0 -1
- package/dist/scroll-area-DjZ6nTm5.js +0 -221
- package/dist/scroll-area-DjZ6nTm5.js.map +0 -1
- package/dist/search-field-block-DZ9QUE2e.js +0 -115
- package/dist/search-field-block-DZ9QUE2e.js.map +0 -1
- package/dist/search-field-block-hpfI27ov.cjs +0 -117
- package/dist/search-field-block-hpfI27ov.cjs.map +0 -1
- package/dist/searchbar-8KtQRL0s.cjs +0 -105
- package/dist/searchbar-8KtQRL0s.cjs.map +0 -1
- package/dist/searchbar-HmTfVgXd.js +0 -102
- package/dist/searchbar-HmTfVgXd.js.map +0 -1
- package/dist/section-BUngbrvn.js +0 -36
- package/dist/section-BUngbrvn.js.map +0 -1
- package/dist/section-card-23Os1QRs.cjs +0 -96
- package/dist/section-card-23Os1QRs.cjs.map +0 -1
- package/dist/section-card-BMArnkcD.js +0 -93
- package/dist/section-card-BMArnkcD.js.map +0 -1
- package/dist/section-muObW4n-.cjs +0 -40
- package/dist/section-muObW4n-.cjs.map +0 -1
- package/dist/sections-BgrvBjOR.cjs +0 -11
- package/dist/sections-BgrvBjOR.cjs.map +0 -1
- package/dist/sections-SdJxf4JD.js +0 -9
- package/dist/sections-SdJxf4JD.js.map +0 -1
- package/dist/select-CYf1u7Vd.js +0 -162
- package/dist/select-CYf1u7Vd.js.map +0 -1
- package/dist/select-CvOn0-Xn.cjs +0 -188
- package/dist/select-CvOn0-Xn.cjs.map +0 -1
- package/dist/select-data-filter-CikxmWIL.js +0 -192
- package/dist/select-data-filter-CikxmWIL.js.map +0 -1
- package/dist/select-data-filter-D1KsoTi_.cjs +0 -194
- package/dist/select-data-filter-D1KsoTi_.cjs.map +0 -1
- package/dist/select-field-block-DhG3cqyr.js +0 -48
- package/dist/select-field-block-DhG3cqyr.js.map +0 -1
- package/dist/select-field-block-X1_PaG0F.cjs +0 -50
- package/dist/select-field-block-X1_PaG0F.cjs.map +0 -1
- package/dist/shimmer-CTVYNDBn.js +0 -22
- package/dist/shimmer-CTVYNDBn.js.map +0 -1
- package/dist/shimmer-DK8TWAV-.cjs +0 -24
- package/dist/shimmer-DK8TWAV-.cjs.map +0 -1
- package/dist/skeleton-Bo71UMWV.cjs +0 -25
- package/dist/skeleton-Bo71UMWV.cjs.map +0 -1
- package/dist/skeleton-Dbr54vol.js +0 -23
- package/dist/skeleton-Dbr54vol.js.map +0 -1
- package/dist/slider-BhA0bVR8.js +0 -88
- package/dist/slider-BhA0bVR8.js.map +0 -1
- package/dist/slider-b9_82QLR.cjs +0 -90
- package/dist/slider-b9_82QLR.cjs.map +0 -1
- package/dist/spacings-0Zbr65EW.js +0 -208
- package/dist/spacings-0Zbr65EW.js.map +0 -1
- package/dist/spinner-DuizqJj9.js +0 -51
- package/dist/spinner-DuizqJj9.js.map +0 -1
- package/dist/spinner-PSUHmhye.cjs +0 -53
- package/dist/spinner-PSUHmhye.cjs.map +0 -1
- package/dist/switch-DJRX_Onf.cjs +0 -124
- package/dist/switch-DJRX_Onf.cjs.map +0 -1
- package/dist/switch-VX4iYp3j.js +0 -103
- package/dist/switch-VX4iYp3j.js.map +0 -1
- package/dist/tabs-content-D-fKCtLW.js +0 -18
- package/dist/tabs-content-D-fKCtLW.js.map +0 -1
- package/dist/tabs-content-m86TGI_b.cjs +0 -20
- package/dist/tabs-content-m86TGI_b.cjs.map +0 -1
- package/dist/tabs-tab-Bv9aRRTl.js +0 -118
- package/dist/tabs-tab-Bv9aRRTl.js.map +0 -1
- package/dist/tabs-tab-CulV7e_n.cjs +0 -122
- package/dist/tabs-tab-CulV7e_n.cjs.map +0 -1
- package/dist/text-field-block-CGzVPqnF.cjs +0 -50
- package/dist/text-field-block-CGzVPqnF.cjs.map +0 -1
- package/dist/text-field-block-gjrZyIFr.js +0 -48
- package/dist/text-field-block-gjrZyIFr.js.map +0 -1
- package/dist/textarea-DTTTODYL.js +0 -62
- package/dist/textarea-DTTTODYL.js.map +0 -1
- package/dist/textarea-DdUaiUA3.cjs +0 -83
- package/dist/textarea-DdUaiUA3.cjs.map +0 -1
- package/dist/theme-toggle-AzjABhTN.js +0 -85
- package/dist/theme-toggle-AzjABhTN.js.map +0 -1
- package/dist/theme-toggle-DWtjTo-a.cjs +0 -87
- package/dist/theme-toggle-DWtjTo-a.cjs.map +0 -1
- package/dist/thread-list-BHbkkI65.js +0 -72
- package/dist/thread-list-BHbkkI65.js.map +0 -1
- package/dist/thread-list-DekqqJOH.cjs +0 -79
- package/dist/thread-list-DekqqJOH.cjs.map +0 -1
- package/dist/time-picker-CcatSlth.js +0 -110
- package/dist/time-picker-CcatSlth.js.map +0 -1
- package/dist/time-picker-DaF1ss5M.cjs +0 -113
- package/dist/time-picker-DaF1ss5M.cjs.map +0 -1
- package/dist/tooltip-FowezTqp.cjs +0 -135
- package/dist/tooltip-FowezTqp.cjs.map +0 -1
- package/dist/tooltip-wX2UZKox.js +0 -111
- package/dist/tooltip-wX2UZKox.js.map +0 -1
- package/dist/traces-data-list-DKU-oZxQ.js +0 -122
- package/dist/traces-data-list-DKU-oZxQ.js.map +0 -1
- package/dist/traces-data-list-kqDZjURb.cjs +0 -125
- package/dist/traces-data-list-kqDZjURb.cjs.map +0 -1
- package/dist/tree-BcSHc5Cw.cjs +0 -492
- package/dist/tree-BcSHc5Cw.cjs.map +0 -1
- package/dist/tree-CfOzTCxs.js +0 -471
- package/dist/tree-CfOzTCxs.js.map +0 -1
- package/dist/truncate-CNJINJdu.js +0 -47
- package/dist/truncate-CNJINJdu.js.map +0 -1
- package/dist/truncate-k92HJG2-.cjs +0 -49
- package/dist/truncate-k92HJG2-.cjs.map +0 -1
- package/dist/use-copy-to-clipboard-D7L_l6_x.js +0 -127
- package/dist/use-copy-to-clipboard-D7L_l6_x.js.map +0 -1
- package/dist/use-copy-to-clipboard-DHaJCGet.cjs +0 -131
- package/dist/use-copy-to-clipboard-DHaJCGet.cjs.map +0 -1
- package/dist/use-table-keyboard-navigation-D9tbkeqJ.cjs +0 -214
- package/dist/use-table-keyboard-navigation-D9tbkeqJ.cjs.map +0 -1
- package/dist/use-table-keyboard-navigation-TaCn1tec.js +0 -203
- package/dist/use-table-keyboard-navigation-TaCn1tec.js.map +0 -1
- package/dist/utils-CzYGxqbG.js +0 -3290
- package/dist/utils-CzYGxqbG.js.map +0 -1
- package/dist/utils-vA5sWo9W.cjs +0 -3293
- package/dist/utils-vA5sWo9W.cjs.map +0 -1
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"property-filter-creator-N6YVZDUw.cjs","sources":["../src/ds/components/PropertyFilter/property-filter-actions.tsx","../src/ds/components/PropertyFilter/pick-multi-panel.tsx","../src/ds/components/PropertyFilter/property-filter-applied.tsx","../src/ds/components/PropertyFilter/property-filter-creator.tsx"],"sourcesContent":["import { EllipsisVerticalIcon, SaveIcon, Trash2Icon, XIcon } from 'lucide-react';\nimport { Button } from '@/ds/components/Button/Button';\nimport { DropdownMenu } from '@/ds/components/DropdownMenu/dropdown-menu';\n\nexport type PropertyFilterActionsProps = {\n disabled?: boolean;\n /** Neutralize each pill's value (keep pills, clear values). Shown as a button, not a menu item. */\n onClear?: () => void;\n /** Fully remove all active filters. Rendered as \"Remove all filters\" inside the overflow menu. */\n onRemoveAll?: () => void;\n /** Persist the current filter set (typically to localStorage) for later restoration. */\n onSave?: () => void;\n /** Drop a previously-saved filter set. Wire only when a saved set actually exists. */\n onRemoveSaved?: () => void;\n};\n\n/**\n * Shared action bar for filter-driven pages (traces, logs, …). Renders a\n * Clear button and an overflow menu with Remove all / Save / Remove saved actions.\n */\nexport function PropertyFilterActions({\n disabled,\n onClear,\n onRemoveAll,\n onSave,\n onRemoveSaved,\n}: PropertyFilterActionsProps) {\n const hasMenuItems = !!(onRemoveAll || onSave || onRemoveSaved);\n const showClear = !!onClear;\n if (!showClear && !hasMenuItems) return null;\n\n return (\n <div className=\"flex items-center gap-2\">\n {showClear && (\n <Button disabled={disabled} size=\"md\" onClick={() => onClear!()}>\n <XIcon />\n Clear\n </Button>\n )}\n\n {hasMenuItems && (\n <DropdownMenu>\n <DropdownMenu.Trigger asChild>\n <Button disabled={disabled} size=\"md\" aria-label=\"More filter actions\">\n <EllipsisVerticalIcon />\n </Button>\n </DropdownMenu.Trigger>\n <DropdownMenu.Content align=\"end\">\n {onRemoveAll && (\n <DropdownMenu.Item onSelect={() => onRemoveAll()}>\n <XIcon />\n Remove all filters\n </DropdownMenu.Item>\n )}\n {onRemoveAll && (onSave || onRemoveSaved) && <DropdownMenu.Separator />}\n {onSave && (\n <DropdownMenu.Item onSelect={() => onSave()}>\n <SaveIcon />\n Save filters for next time\n </DropdownMenu.Item>\n )}\n {onRemoveSaved && (\n <DropdownMenu.Item onSelect={() => onRemoveSaved()}>\n <Trash2Icon />\n Remove saved filters\n </DropdownMenu.Item>\n )}\n </DropdownMenu.Content>\n </DropdownMenu>\n )}\n </div>\n );\n}\n","import { useMemo, useState } from 'react';\nimport type { PropertyFilterField, PropertyFilterToken } from './types';\nimport { Checkbox } from '@/ds/components/Checkbox';\nimport { Input } from '@/ds/components/Input';\nimport { RadioGroup, RadioGroupItem } from '@/ds/components/RadioGroup';\nimport { Spinner } from '@/ds/components/Spinner/spinner';\n\ntype PickMultiField = Extract<PropertyFilterField, { kind: 'pick-multi' }>;\n\nexport type PickMultiPanelProps = {\n field: PickMultiField;\n tokens: PropertyFilterToken[];\n onChange: (fieldId: string, value: string | string[] | undefined) => void;\n};\n\n/**\n * Reusable body for a pick-multi side popover: optional search input plus a\n * radio group (single-select) or checkbox list (when `field.multi` is true).\n * Shared between the Filter Creator's property-picker side popover and the\n * PropertyFilterApplied pill's inline editor so both surfaces use the exact same UI.\n */\nexport function PickMultiPanel({ field, tokens, onChange }: PickMultiPanelProps) {\n const [query, setQuery] = useState('');\n\n const filteredOptions = useMemo(() => {\n const q = query.trim().toLowerCase();\n if (!q) return field.options;\n return field.options.filter(o => o.label.toLowerCase().includes(q));\n }, [field.options, query]);\n\n const token = useMemo(() => tokens.find(t => t.fieldId === field.id), [tokens, field.id]);\n // Fall back to `defaultValue` when no token exists — lets view-toggle fields (e.g. List mode)\n // show their default option pre-selected before the user explicitly picks one.\n const selectedValue = typeof token?.value === 'string' ? token.value : !field.multi ? field.defaultValue : undefined;\n const selectedValues = useMemo<string[]>(() => {\n if (Array.isArray(token?.value)) return token!.value as string[];\n if (typeof token?.value === 'string') return [token.value];\n return [];\n }, [token]);\n\n return (\n <>\n {field.searchable !== false && (\n <Input\n size=\"sm\"\n value={query}\n onChange={e => setQuery(e.target.value)}\n placeholder={`Search ${field.label.toLowerCase()}...`}\n className=\"mb-2\"\n onKeyDown={e => {\n if (e.key !== 'ArrowDown') return;\n const panel = e.currentTarget.closest<HTMLElement>('[data-pick-multi-panel]');\n const first = panel?.querySelector<HTMLElement>('[data-pick-multi-item]:not([disabled])');\n if (!first) return;\n e.preventDefault();\n e.stopPropagation();\n first.focus();\n }}\n />\n )}\n\n {field.isLoading ? (\n <div className=\"flex items-center gap-2 px-2 py-1.5 text-ui-sm text-neutral3\">\n <Spinner size=\"sm\" className=\"size-3 text-neutral3\" />\n Loading options…\n </div>\n ) : filteredOptions.length === 0 ? (\n <div className=\"px-2 py-1.5 text-ui-sm text-neutral3\">{field.emptyText ?? 'No option found.'}</div>\n ) : field.multi ? (\n <div className=\"max-h-[80dvh] overflow-auto\">\n {filteredOptions.map(option => {\n const checked = selectedValues.includes(option.value);\n return (\n <label\n key={option.value}\n title={option.label}\n className=\"flex items-center gap-2 rounded-md px-2 py-1.5 text-ui-md text-neutral4 hover:bg-surface4 hover:text-neutral6 cursor-pointer focus-within:bg-surface4 focus-within:text-neutral6 min-w-0\"\n >\n <Checkbox\n data-pick-multi-item=\"\"\n checked={checked}\n onCheckedChange={next => {\n const isChecked = next === true;\n const nextValues = isChecked\n ? selectedValues.includes(option.value)\n ? selectedValues\n : [...selectedValues, option.value]\n : selectedValues.filter(v => v !== option.value);\n onChange(field.id, nextValues);\n }}\n className=\"shrink-0\"\n />\n <span className=\"truncate min-w-0 flex-1\">{option.label}</span>\n </label>\n );\n })}\n </div>\n ) : (\n <RadioGroup\n value={selectedValue ?? ''}\n onValueChange={value => onChange(field.id, value)}\n className=\"max-h-[80dvh] gap-0 overflow-auto\"\n >\n {filteredOptions.map(option => (\n <label\n key={option.value}\n title={option.label}\n className=\"flex items-center gap-2 rounded-md px-2 py-1.5 text-ui-md text-neutral4 hover:bg-surface4 hover:text-neutral6 cursor-pointer focus-within:bg-surface4 focus-within:text-neutral6 min-w-0\"\n >\n <RadioGroupItem data-pick-multi-item=\"\" value={option.value} className=\"shrink-0\" />\n <span className=\"truncate min-w-0 flex-1\">{option.label}</span>\n </label>\n ))}\n {!field.omitAnyOption && (\n <label\n title=\"Any\"\n className=\"flex items-center gap-2 rounded-md px-2 py-1.5 text-ui-md text-neutral4 hover:bg-surface4 hover:text-neutral6 cursor-pointer focus-within:bg-surface4 focus-within:text-neutral6 min-w-0\"\n >\n <RadioGroupItem data-pick-multi-item=\"\" value=\"Any\" className=\"shrink-0\" />\n <span className=\"truncate min-w-0 flex-1\">Any</span>\n </label>\n )}\n </RadioGroup>\n )}\n </>\n );\n}\n","import { LockIcon, XIcon } from 'lucide-react';\nimport type { ReactNode } from 'react';\nimport { useEffect, useRef, useState } from 'react';\nimport { Button } from '../Button';\nimport { ButtonsGroup, ButtonsGroupText } from '../ButtonsGroup';\nimport { Tooltip, TooltipContent, TooltipProvider, TooltipTrigger } from '../Tooltip';\nimport { PickMultiPanel } from './pick-multi-panel';\nimport type { PropertyFilterField, PropertyFilterToken } from './types';\nimport { Input } from '@/ds/components/Input';\nimport { Popover, PopoverContent, PopoverTrigger } from '@/ds/components/Popover/popover';\n\nexport type PropertyFilterAppliedProps = {\n fields: PropertyFilterField[];\n tokens: PropertyFilterToken[];\n onTokensChange: (tokens: PropertyFilterToken[]) => void;\n disabled?: boolean;\n /**\n * Field id that was just added via the Creator — rendered pill auto-focuses\n * its input so the user can start typing immediately.\n */\n autoFocusFieldId?: string;\n /**\n * Field ids whose pills must remain visible and read-only — value stays\n * displayed but cannot be edited or removed. Use when an upstream context\n * (e.g. agent-scoped traces tab) pre-applies a filter that the user must\n * not be able to clear.\n */\n lockedFieldIds?: readonly string[];\n /** Tooltip content shown on hover/focus of any locked pill. */\n lockedTooltipContent?: ReactNode;\n};\n\nfunction stringifyTokenValue(value: string | string[]) {\n if (Array.isArray(value)) return value.length === 0 ? 'Any' : value.join(', ');\n return value;\n}\n\nconst DEFAULT_LOCKED_TOOLTIP = 'This filter is set by the current context and cannot be removed here.';\n\nfunction lookupOptionLabel(field: PropertyFilterField, value: string | string[]): string {\n if (field.kind === 'pick-multi' && field.options) {\n if (Array.isArray(value)) {\n if (value.length === 0) return 'Any';\n return value.map(v => field.options.find(o => o.value === v)?.label ?? v).join(', ');\n }\n return field.options.find(o => o.value === value)?.label ?? value;\n }\n return stringifyTokenValue(value);\n}\n\ntype LockedTokenPillProps = {\n field: PropertyFilterField;\n value: string | string[];\n tooltipContent: ReactNode;\n};\n\nfunction LockedTokenPill({ field, value, tooltipContent }: LockedTokenPillProps) {\n const display = lookupOptionLabel(field, value);\n const lockA11yLabel = `${field.label} filter is locked by context`;\n\n return (\n <TooltipProvider delayDuration={150}>\n <Tooltip>\n <TooltipTrigger asChild>\n <ButtonsGroup\n spacing=\"close\"\n data-locked-field-id={field.id}\n data-property-filter-pill=\"locked\"\n tabIndex={0}\n aria-label={lockA11yLabel}\n >\n <ButtonsGroupText size=\"md\">{field.label}</ButtonsGroupText>\n <ButtonsGroupText size=\"md\">is</ButtonsGroupText>\n <ButtonsGroupText size=\"md\">{display}</ButtonsGroupText>\n <ButtonsGroupText size=\"md\">\n <LockIcon />\n </ButtonsGroupText>\n </ButtonsGroup>\n </TooltipTrigger>\n <TooltipContent>{tooltipContent}</TooltipContent>\n </Tooltip>\n </TooltipProvider>\n );\n}\n\ntype TextTokenPillProps = {\n field: Extract<PropertyFilterField, { kind: 'text' }>;\n value: string;\n onChange: (value: string) => void;\n onRemove: () => void;\n disabled?: boolean;\n autoFocus?: boolean;\n};\n\nfunction TextTokenPill({ field, value, onChange, onRemove, disabled, autoFocus }: TextTokenPillProps) {\n // Local draft keeps the caret stable when the URL round-trip trims the\n // stored value (e.g. trailing spaces). We only re-sync from the prop when\n // the external value is genuinely different from our current (trimmed) draft.\n const [draft, setDraft] = useState(value);\n const inputRef = useRef<HTMLInputElement>(null);\n\n useEffect(() => {\n if (draft.trim() !== value) setDraft(value);\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [value]);\n\n useEffect(() => {\n if (autoFocus) inputRef.current?.focus();\n }, [autoFocus]);\n\n return (\n <ButtonsGroup spacing=\"close\">\n <ButtonsGroupText size=\"md\">{field.label}</ButtonsGroupText>\n <ButtonsGroupText size=\"md\">is</ButtonsGroupText>\n <Input\n ref={inputRef}\n size=\"md\"\n disabled={disabled}\n value={draft}\n placeholder={field.placeholder ?? `Enter ${field.label}`}\n onChange={e => {\n const next = e.target.value;\n setDraft(next);\n // Apply live — URL and traces query update on every keystroke.\n // Empty values persist as empty-value tokens so the pill stays visible.\n if (next.trim() !== value) onChange(next);\n }}\n onKeyDown={e => {\n if (e.key === 'Enter') {\n e.preventDefault();\n const trimmed = draft.trim();\n if (trimmed !== value) onChange(trimmed);\n } else if (e.key === 'Escape') {\n e.preventDefault();\n setDraft(value);\n (e.target as HTMLInputElement).blur();\n }\n }}\n />\n <Button\n type=\"button\"\n disabled={disabled}\n aria-label={`Remove ${field.label} filter`}\n size=\"md\"\n onMouseDown={e => e.preventDefault()}\n onClick={onRemove}\n >\n <XIcon />\n </Button>\n </ButtonsGroup>\n );\n}\n\ntype PickMultiTokenPillProps = {\n field: Extract<PropertyFilterField, { kind: 'pick-multi' }>;\n token: PropertyFilterToken;\n tokens: PropertyFilterToken[];\n onChange: (fieldId: string, value: string | string[] | undefined) => void;\n onRemove: () => void;\n disabled?: boolean;\n};\n\nfunction PickMultiTokenPill({ field, token, tokens, onChange, onRemove, disabled }: PickMultiTokenPillProps) {\n const [open, setOpen] = useState(false);\n\n return (\n <ButtonsGroup spacing=\"close\">\n <ButtonsGroupText size=\"md\">{field.label}</ButtonsGroupText>\n <ButtonsGroupText size=\"md\">is</ButtonsGroupText>\n <Popover open={open} onOpenChange={setOpen}>\n <PopoverTrigger asChild>\n <Button type=\"button\" disabled={disabled} size=\"md\">\n {stringifyTokenValue(token.value)}\n </Button>\n </PopoverTrigger>\n <PopoverContent align=\"start\" sideOffset={8} className=\"w-64 p-2\" data-pick-multi-panel>\n <PickMultiPanel field={field} tokens={tokens} onChange={onChange} />\n </PopoverContent>\n </Popover>\n <Button\n type=\"button\"\n disabled={disabled}\n aria-label={`Remove ${field.label} filter`}\n size=\"md\"\n onClick={onRemove}\n >\n <XIcon />\n </Button>\n </ButtonsGroup>\n );\n}\n\n/**\n * Applied filter pills. Text/id-style tokens render with an always-active\n * input so the user can edit the value inline (and an empty token is valid —\n * it persists in the URL until the user explicitly removes it via ×).\n * Pick-multi tokens render with a clickable value that opens the same side\n * popover as the Filter Creator so the user can update selections in place.\n * Creation lives in a separate component (PropertyFilterCreator).\n */\nexport function PropertyFilterApplied({\n fields,\n tokens,\n onTokensChange,\n disabled,\n autoFocusFieldId,\n lockedFieldIds,\n lockedTooltipContent = DEFAULT_LOCKED_TOOLTIP,\n}: PropertyFilterAppliedProps) {\n if (tokens.length === 0) return null;\n\n const lockedSet = new Set(lockedFieldIds ?? []);\n\n const replaceTokenAt = (index: number, next: PropertyFilterToken) => {\n const copy = [...tokens];\n copy[index] = next;\n onTokensChange(copy);\n };\n\n const removeTokenAt = (index: number) => {\n onTokensChange(tokens.filter((_, i) => i !== index));\n };\n\n return (\n <div className=\"flex items-center gap-2 flex-wrap\">\n {tokens.map((token, index) => {\n const field = fields.find(f => f.id === token.fieldId);\n if (!field) return null;\n\n if (lockedSet.has(token.fieldId)) {\n return (\n <LockedTokenPill\n key={`${token.fieldId}-${index}`}\n field={field}\n value={token.value}\n tooltipContent={lockedTooltipContent}\n />\n );\n }\n\n if (field.kind === 'text' && typeof token.value === 'string') {\n return (\n <TextTokenPill\n key={`${token.fieldId}-${index}`}\n field={field}\n value={token.value}\n disabled={disabled}\n autoFocus={autoFocusFieldId === token.fieldId}\n onChange={nextValue => replaceTokenAt(index, { fieldId: token.fieldId, value: nextValue })}\n onRemove={() => removeTokenAt(index)}\n />\n );\n }\n\n if (field.kind === 'pick-multi') {\n return (\n <PickMultiTokenPill\n key={`${token.fieldId}-${index}`}\n field={field}\n token={token}\n tokens={tokens}\n disabled={disabled}\n onChange={(fieldId, value) => {\n // Unselecting everything (empty array) keeps the pill alive in\n // a neutral state — the user explicitly removes it via ×. This\n // lets the page-level Reset neutralize values without dropping\n // the pill structure.\n if (value === undefined) {\n removeTokenAt(index);\n return;\n }\n replaceTokenAt(index, { fieldId, value });\n }}\n onRemove={() => removeTokenAt(index)}\n />\n );\n }\n\n return (\n <ButtonsGroup spacing=\"close\" key={`${token.fieldId}-${index}`}>\n <ButtonsGroupText size=\"md\">{field.label}</ButtonsGroupText>\n <ButtonsGroupText size=\"md\">is</ButtonsGroupText>\n <ButtonsGroupText size=\"md\">{stringifyTokenValue(token.value)}</ButtonsGroupText>\n <Button\n type=\"button\"\n disabled={disabled}\n size=\"md\"\n aria-label={`Remove ${field.label} filter`}\n onClick={() => removeTokenAt(index)}\n >\n <XIcon />\n </Button>\n </ButtonsGroup>\n );\n })}\n </div>\n );\n}\n","import { ArrowLeftIcon, ChevronRightIcon, FilterIcon, ListFilterPlusIcon, PlusIcon } from 'lucide-react';\nimport { useCallback, useEffect, useMemo, useRef, useState } from 'react';\nimport { PickMultiPanel } from './pick-multi-panel';\nimport type { PropertyFilterField, PropertyFilterToken } from './types';\nimport { Button } from '@/ds/components/Button/Button';\nimport type { ButtonProps } from '@/ds/components/Button/Button';\nimport { Combobox } from '@/ds/components/Combobox/combobox';\nimport { Input } from '@/ds/components/Input';\nimport { Popover, PopoverContent, PopoverTrigger } from '@/ds/components/Popover/popover';\nimport { cn } from '@/lib/utils';\n\nexport type PropertyFilterCreatorProps = {\n fields: PropertyFilterField[];\n tokens: PropertyFilterToken[];\n onTokensChange: (tokens: PropertyFilterToken[]) => void;\n label?: string;\n disabled?: boolean;\n /** Size passed through to the trigger Button. Defaults to 'md'. */\n size?: ButtonProps['size'];\n /**\n * Called when the user picks a text (id-style) field. Consumers are expected\n * to render a pending applied-filter pill with an active input so the user\n * can type the value inline instead of in this popover.\n */\n onStartTextFilter?: (fieldId: string) => void;\n /**\n * Field ids hidden from the Add Filter dropdown. Use to prevent users from\n * recreating a filter that an upstream context already owns (e.g. the agent\n * id when viewing the agent-scoped traces tab).\n */\n hiddenFieldIds?: readonly string[];\n};\n\n/**\n * Minimal Linear-style filter creator: a `+ Filter` button whose popover walks\n * the user through property → value → commit. For id-style text fields, the\n * picker closes immediately and the applied-filter pill owns the input. For\n * `pick-multi` fields (e.g. Root Entity Name) hovering the item opens a\n * separate side popover with checkboxes — each check adds its own applied\n * filter and the main popover stays open so users can pick many.\n */\nexport function PropertyFilterCreator({\n fields,\n tokens,\n onTokensChange,\n label = 'Add Filter',\n disabled,\n size,\n onStartTextFilter,\n hiddenFieldIds,\n}: PropertyFilterCreatorProps) {\n const visibleFields = useMemo(() => {\n if (!hiddenFieldIds || hiddenFieldIds.length === 0) return fields;\n const hidden = new Set(hiddenFieldIds);\n return fields.filter(f => !hidden.has(f.id));\n }, [fields, hiddenFieldIds]);\n const [open, setOpen] = useState(false);\n const [fieldId, setFieldId] = useState<string | undefined>();\n const [textValue, setTextValue] = useState('');\n const [multiValue, setMultiValue] = useState<string[]>([]);\n const [error, setError] = useState<string | undefined>();\n // Single source of truth for which pick-multi side panel is open. Opens only\n // via explicit click/keyboard press on the menu item — no hover/focus\n // auto-open (was too flicker-prone).\n const [openPickMultiFieldId, setOpenPickMultiFieldId] = useState<string | undefined>();\n\n const textInputRef = useRef<HTMLInputElement>(null);\n // When the user picks a text field we close this popover and hand off focus\n // to the newly-created pill's input — prevent Radix from returning focus to\n // the trigger button in that case.\n const skipCloseFocusRef = useRef(false);\n\n const togglePickMulti = useCallback((id: string) => {\n setOpenPickMultiFieldId(current => (current === id ? undefined : id));\n }, []);\n const closePickMulti = useCallback(() => setOpenPickMultiFieldId(undefined), []);\n\n useEffect(() => {\n if (!open) setOpenPickMultiFieldId(undefined);\n }, [open]);\n\n const selectedField = useMemo(() => visibleFields.find(f => f.id === fieldId), [visibleFields, fieldId]);\n // Only single-use kinds (text, multi-select) count as \"used\". `pick-multi`\n // allows multiple tokens with the same fieldId.\n const singleUseFieldIds = useMemo(() => {\n const ids = new Set<string>();\n for (const token of tokens) {\n const field = fields.find(f => f.id === token.fieldId);\n if (field && field.kind !== 'pick-multi') ids.add(token.fieldId);\n }\n return ids;\n }, [tokens, fields]);\n\n const reset = useCallback(() => {\n setFieldId(undefined);\n setTextValue('');\n setMultiValue([]);\n setError(undefined);\n }, []);\n\n useEffect(() => {\n if (!open) reset();\n }, [open, reset]);\n\n useEffect(() => {\n if (!open) return;\n if (selectedField?.kind === 'text') textInputRef.current?.focus();\n }, [open, selectedField]);\n\n /**\n * Replace whatever token exists for `fieldId` with the given value. Used by\n * both single-select (radio) and multi-select (checkbox) pick-multi panels.\n * Pass `undefined` or `[]` to remove the token entirely.\n */\n const replacePickMultiToken = useCallback(\n (fieldId: string, value: string | string[] | undefined) => {\n const existingIndex = tokens.findIndex(t => t.fieldId === fieldId);\n const shouldRemove = value === undefined || (Array.isArray(value) && value.length === 0);\n\n if (shouldRemove) {\n if (existingIndex === -1) return;\n onTokensChange(tokens.filter((_, i) => i !== existingIndex));\n return;\n }\n\n if (existingIndex === -1) {\n onTokensChange([...tokens, { fieldId, value }]);\n return;\n }\n\n const nextTokens = [...tokens];\n nextTokens[existingIndex] = { fieldId, value };\n onTokensChange(nextTokens);\n },\n [onTokensChange, tokens],\n );\n\n const commit = useCallback(() => {\n if (!selectedField) {\n setError('Choose a property first.');\n return;\n }\n if (singleUseFieldIds.has(selectedField.id)) {\n setError(`Remove the existing ${selectedField.label} filter before adding another.`);\n return;\n }\n if (selectedField.kind === 'text' && !textValue.trim()) {\n setError(`Enter a value for ${selectedField.label}.`);\n return;\n }\n if (selectedField.kind === 'multi-select' && multiValue.length === 0) {\n setError(`Choose at least one ${selectedField.label.toLowerCase()} value.`);\n return;\n }\n const token: PropertyFilterToken =\n selectedField.kind === 'multi-select'\n ? { fieldId: selectedField.id, value: multiValue }\n : { fieldId: selectedField.id, value: (textValue as string).trim() };\n onTokensChange([...tokens, token]);\n setOpen(false);\n }, [multiValue, onTokensChange, selectedField, singleUseFieldIds, textValue, tokens]);\n\n return (\n <Popover open={open} onOpenChange={setOpen}>\n <PopoverTrigger asChild>\n <Button variant=\"outline\" size={size} disabled={disabled}>\n <ListFilterPlusIcon />\n {label}\n </Button>\n </PopoverTrigger>\n <PopoverContent\n align=\"end\"\n className=\"p-3 w-64\"\n initialFocus={false}\n finalFocus={() => {\n if (skipCloseFocusRef.current) {\n skipCloseFocusRef.current = false;\n return false;\n }\n return true;\n }}\n >\n <div className=\"grid gap-3\">\n {selectedField && (\n <div className=\"flex items-center gap-2\">\n <button\n type=\"button\"\n aria-label=\"Back to properties\"\n className=\"text-neutral3 hover:text-neutral6 transition-colors\"\n onClick={() => {\n setFieldId(undefined);\n setTextValue('');\n setMultiValue([]);\n setError(undefined);\n }}\n >\n <ArrowLeftIcon className=\"h-4 w-4\" />\n </button>\n <FilterIcon className=\"h-4 w-4 shrink-0 text-neutral3\" />\n <span className=\"text-ui-sm text-neutral3\">{`${selectedField.label} · is`}</span>\n </div>\n )}\n\n {!selectedField && (\n <div\n role=\"menu\"\n className=\"max-h-[80dvh] overflow-auto\"\n onKeyDown={e => {\n if (e.key !== 'ArrowDown' && e.key !== 'ArrowUp' && e.key !== 'Home' && e.key !== 'End') return;\n const buttons = Array.from(\n e.currentTarget.querySelectorAll<HTMLButtonElement>('[data-filter-item]:not([disabled])'),\n );\n if (buttons.length === 0) return;\n e.preventDefault();\n const active = document.activeElement as HTMLElement | null;\n const current = buttons.findIndex(b => b === active);\n let next: number;\n if (e.key === 'Home') next = 0;\n else if (e.key === 'End') next = buttons.length - 1;\n else if (e.key === 'ArrowDown') next = current < 0 ? 0 : (current + 1) % buttons.length;\n else next = current <= 0 ? buttons.length - 1 : current - 1;\n buttons[next]?.focus();\n }}\n >\n {visibleFields.length > 0 ? (\n visibleFields.map(f => {\n const used = singleUseFieldIds.has(f.id);\n if (f.kind === 'pick-multi') {\n return (\n <PickMultiMenuItem\n key={f.id}\n field={f}\n tokens={tokens}\n onChange={replacePickMultiToken}\n open={openPickMultiFieldId === f.id}\n onToggle={togglePickMulti}\n onClose={closePickMulti}\n />\n );\n }\n return (\n <button\n key={f.id}\n type=\"button\"\n role=\"menuitem\"\n data-filter-item=\"\"\n className={cn(\n 'group flex w-full items-center gap-2 rounded-md px-2 py-1.5 text-left text-ui-md transition-colors',\n 'focus:bg-surface4 focus:text-neutral6 focus:outline-none',\n used\n ? 'cursor-not-allowed text-neutral2 opacity-70'\n : 'text-neutral4 hover:bg-surface4 hover:text-neutral6',\n )}\n disabled={used}\n onClick={() => {\n setError(undefined);\n if (f.kind === 'text') {\n onTokensChange([...tokens, { fieldId: f.id, value: '' }]);\n onStartTextFilter?.(f.id);\n skipCloseFocusRef.current = true;\n setOpen(false);\n return;\n }\n setFieldId(f.id);\n }}\n >\n <span className=\"truncate\">{f.label}</span>\n {used ? (\n <span className=\"ml-auto text-neutral3\">In use</span>\n ) : (\n <PlusIcon className=\"ml-auto h-4 w-4 text-neutral3 opacity-0 transition-opacity group-hover:opacity-100 group-focus:opacity-100\" />\n )}\n </button>\n );\n })\n ) : (\n <div className=\"px-2 py-1.5 text-ui-sm text-neutral3\">No matching property.</div>\n )}\n </div>\n )}\n\n {selectedField && selectedField.kind === 'text' && (\n <Input\n ref={textInputRef}\n size=\"md\"\n value={textValue}\n onChange={e => {\n setTextValue(e.target.value);\n setError(undefined);\n }}\n placeholder={selectedField.placeholder ?? `Enter ${selectedField.label}`}\n onKeyDown={e => {\n if (e.key === 'Enter') {\n e.preventDefault();\n commit();\n }\n }}\n />\n )}\n\n {selectedField && selectedField.kind === 'multi-select' && (\n <Combobox\n multiple\n options={selectedField.options ?? []}\n value={multiValue}\n onValueChange={v => {\n setMultiValue(v);\n setError(undefined);\n }}\n placeholder={selectedField.placeholder ?? `Choose ${selectedField.label}`}\n searchPlaceholder={`Search ${selectedField.label.toLowerCase()}...`}\n emptyText={selectedField.emptyText ?? 'No option found.'}\n size=\"md\"\n />\n )}\n\n {error && <div className=\"text-ui-sm text-red-500\">{error}</div>}\n\n {selectedField && selectedField.kind !== 'pick-multi' && (\n <div className=\"flex items-center justify-end gap-2\">\n <Button variant=\"ghost\" size=\"md\" onClick={() => setOpen(false)}>\n Cancel\n </Button>\n <Button variant=\"outline\" size=\"md\" onClick={commit}>\n Add filter\n </Button>\n </div>\n )}\n </div>\n </PopoverContent>\n </Popover>\n );\n}\n\ntype PickMultiField = Extract<PropertyFilterField, { kind: 'pick-multi' }>;\n\ntype PickMultiMenuItemProps = {\n field: PickMultiField;\n tokens: PropertyFilterToken[];\n onChange: (fieldId: string, value: string | string[] | undefined) => void;\n open: boolean;\n onToggle: (fieldId: string) => void;\n onClose: () => void;\n};\n\n/**\n * A property-picker menu item that opens a separate Radix popover (portaled to\n * the side) with a radio group (single-select) or checkbox list (multi-select,\n * `field.multi === true`). Open/close is driven by explicit click / keyboard\n * press; the panel only closes when the user clicks outside, presses Escape,\n * or clicks the row again to toggle it off.\n */\nfunction PickMultiMenuItem({ field, tokens, onChange, open, onToggle, onClose }: PickMultiMenuItemProps) {\n const contentRef = useRef<HTMLDivElement>(null);\n\n return (\n <Popover\n open={open}\n onOpenChange={next => {\n if (next) onToggle(field.id);\n else onClose();\n }}\n >\n <PopoverTrigger asChild>\n <button\n type=\"button\"\n role=\"menuitem\"\n data-filter-item=\"\"\n className={cn(\n 'flex w-full items-center gap-2 rounded-md px-2 py-1.5 text-left text-ui-md text-neutral4 hover:bg-surface4 hover:text-neutral6 transition-colors',\n 'focus:bg-surface4 focus:text-neutral6 focus:outline-none',\n )}\n onKeyDown={e => {\n if (e.key !== 'ArrowRight' && e.key !== 'ArrowLeft') return;\n if (!open) onToggle(field.id);\n e.preventDefault();\n requestAnimationFrame(() => {\n const first = contentRef.current?.querySelector<HTMLElement>(\n 'input, button, [tabindex]:not([tabindex=\"-1\"])',\n );\n first?.focus();\n });\n }}\n >\n {open && <ChevronRightIcon className=\"h-4 w-4 text-neutral3 shrink-0\" />}\n <span className=\"truncate\">{field.label}</span>\n {!open && <ChevronRightIcon className=\"h-4 w-4 ml-auto text-neutral3 shrink-0\" />}\n </button>\n </PopoverTrigger>\n <PopoverContent\n ref={contentRef}\n side=\"right\"\n align=\"start\"\n sideOffset={8}\n className=\"w-64 p-2\"\n initialFocus={false}\n onKeyDown={e => {\n if (e.key !== 'ArrowDown' && e.key !== 'ArrowUp' && e.key !== 'Home' && e.key !== 'End') return;\n const items = Array.from(\n e.currentTarget.querySelectorAll<HTMLElement>('[data-pick-multi-item]:not([disabled])'),\n );\n if (items.length === 0) return;\n e.preventDefault();\n e.stopPropagation();\n const active = document.activeElement as HTMLElement | null;\n const current = items.findIndex(el => el === active);\n let next: number;\n if (e.key === 'Home') next = 0;\n else if (e.key === 'End') next = items.length - 1;\n else if (e.key === 'ArrowDown') next = current < 0 ? 0 : (current + 1) % items.length;\n else next = current <= 0 ? items.length - 1 : current - 1;\n items[next]?.focus();\n }}\n data-pick-multi-panel\n >\n <PickMultiPanel field={field} tokens={tokens} onChange={onChange} />\n </PopoverContent>\n </Popover>\n );\n}\n"],"names":["jsxs","Button","jsx","XIcon","DropdownMenu","EllipsisVerticalIcon","SaveIcon","Trash2Icon","useState","useMemo","Fragment","Input","Spinner","Checkbox","RadioGroup","RadioGroupItem","TooltipProvider","Tooltip","TooltipTrigger","ButtonsGroup","ButtonsGroupText","LockIcon","TooltipContent","useRef","useEffect","Popover","PopoverTrigger","PopoverContent","useCallback","fieldId","ListFilterPlusIcon","ArrowLeftIcon","FilterIcon","cn","PlusIcon","Combobox","ChevronRightIcon"],"mappings":"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"}
|
|
@@ -0,0 +1,55 @@
|
|
|
1
|
+
import { jsx } from 'react/jsx-runtime';
|
|
2
|
+
import { Radio } from '@base-ui/react/radio';
|
|
3
|
+
import { RadioGroup as RadioGroup$1 } from '@base-ui/react/radio-group';
|
|
4
|
+
import * as React from 'react';
|
|
5
|
+
import { t as transitions } from './transitions-tFfqxz40.js';
|
|
6
|
+
import { c as cn } from './cn-BakJzhuv.js';
|
|
7
|
+
|
|
8
|
+
const RadioGroup = React.forwardRef(({ className, ...props }, ref) => {
|
|
9
|
+
return /* @__PURE__ */ jsx(RadioGroup$1, { ref, "data-slot": "radio-group", className: cn("grid gap-2", className), ...props });
|
|
10
|
+
});
|
|
11
|
+
RadioGroup.displayName = "RadioGroup";
|
|
12
|
+
const RadioGroupItem = React.forwardRef(({ className, ...props }, ref) => {
|
|
13
|
+
return /* @__PURE__ */ jsx(
|
|
14
|
+
Radio.Root,
|
|
15
|
+
{
|
|
16
|
+
ref,
|
|
17
|
+
"data-slot": "radio-group-item",
|
|
18
|
+
className: cn(
|
|
19
|
+
"flex h-4 w-4 shrink-0 cursor-pointer items-center justify-center rounded-full",
|
|
20
|
+
"border border-neutral6/[0.06] bg-neutral6/[0.12] text-surface1 outline-hidden",
|
|
21
|
+
transitions.all,
|
|
22
|
+
"hover:border-neutral6/[0.12] hover:bg-neutral6/[0.16]",
|
|
23
|
+
"active:scale-95 active:border-neutral6/[0.18] active:bg-neutral6/[0.18]",
|
|
24
|
+
"focus-visible:border-neutral5/50 focus-visible:outline focus-visible:outline-1 focus-visible:outline-offset-2 focus-visible:outline-neutral5/55",
|
|
25
|
+
// Base UI exposes `data-checked`/`data-unchecked` instead of Radix's `data-state`.
|
|
26
|
+
"data-[checked]:border-neutral6 data-[checked]:bg-neutral6 data-[checked]:text-surface1",
|
|
27
|
+
"data-[checked]:hover:border-neutral5 data-[checked]:hover:bg-neutral5",
|
|
28
|
+
"data-[checked]:active:border-neutral4 data-[checked]:active:bg-neutral4",
|
|
29
|
+
// Base UI's Radio.Root is a `<span>`, so `:disabled` never matches; target `data-disabled`.
|
|
30
|
+
"data-[disabled]:cursor-not-allowed data-[disabled]:border-neutral6/[0.38] data-[disabled]:bg-neutral6/[0.38] data-[disabled]:hover:border-neutral6/[0.38] data-[disabled]:hover:bg-neutral6/[0.38] data-[disabled]:active:scale-100",
|
|
31
|
+
"data-[disabled]:data-[checked]:border-neutral6/[0.38] data-[disabled]:data-[checked]:bg-neutral6/[0.38] data-[disabled]:data-[checked]:text-neutral6",
|
|
32
|
+
className
|
|
33
|
+
),
|
|
34
|
+
...props,
|
|
35
|
+
children: /* @__PURE__ */ jsx(
|
|
36
|
+
Radio.Indicator,
|
|
37
|
+
{
|
|
38
|
+
keepMounted: true,
|
|
39
|
+
className: cn(
|
|
40
|
+
"flex items-center justify-center text-current",
|
|
41
|
+
"scale-50 opacity-0 transition-[opacity,scale] duration-200 ease-out-custom",
|
|
42
|
+
"data-[checked]:scale-100 data-[checked]:opacity-100",
|
|
43
|
+
"data-[starting-style]:scale-50 data-[starting-style]:opacity-0",
|
|
44
|
+
"data-[ending-style]:scale-50 data-[ending-style]:opacity-0"
|
|
45
|
+
),
|
|
46
|
+
children: /* @__PURE__ */ jsx("span", { className: "size-1.5 rounded-full bg-current" })
|
|
47
|
+
}
|
|
48
|
+
)
|
|
49
|
+
}
|
|
50
|
+
);
|
|
51
|
+
});
|
|
52
|
+
RadioGroupItem.displayName = "RadioGroupItem";
|
|
53
|
+
|
|
54
|
+
export { RadioGroup as R, RadioGroupItem as a };
|
|
55
|
+
//# sourceMappingURL=radio-group-DdMscZHh.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"radio-group-DdMscZHh.js","sources":["../src/ds/components/RadioGroup/radio-group.tsx"],"sourcesContent":["import { Radio as RadioPrimitive } from '@base-ui/react/radio';\nimport { RadioGroup as RadioGroupPrimitive } from '@base-ui/react/radio-group';\nimport * as React from 'react';\n\nimport { transitions } from '@/ds/primitives/transitions';\nimport { cn } from '@/lib/utils';\n\ntype RadioGroupProps = Omit<RadioGroupPrimitive.Props, 'className'> & {\n className?: string;\n};\n\nconst RadioGroup = React.forwardRef<HTMLDivElement, RadioGroupProps>(({ className, ...props }, ref) => {\n return <RadioGroupPrimitive ref={ref} data-slot=\"radio-group\" className={cn('grid gap-2', className)} {...props} />;\n});\nRadioGroup.displayName = 'RadioGroup';\n\ntype RadioGroupItemProps = Omit<RadioPrimitive.Root.Props, 'className'> & {\n className?: string;\n};\n\nconst RadioGroupItem = React.forwardRef<HTMLSpanElement, RadioGroupItemProps>(({ className, ...props }, ref) => {\n return (\n <RadioPrimitive.Root\n ref={ref}\n data-slot=\"radio-group-item\"\n className={cn(\n 'flex h-4 w-4 shrink-0 cursor-pointer items-center justify-center rounded-full',\n 'border border-neutral6/[0.06] bg-neutral6/[0.12] text-surface1 outline-hidden',\n transitions.all,\n 'hover:border-neutral6/[0.12] hover:bg-neutral6/[0.16]',\n 'active:scale-95 active:border-neutral6/[0.18] active:bg-neutral6/[0.18]',\n 'focus-visible:border-neutral5/50 focus-visible:outline focus-visible:outline-1 focus-visible:outline-offset-2 focus-visible:outline-neutral5/55',\n // Base UI exposes `data-checked`/`data-unchecked` instead of Radix's `data-state`.\n 'data-[checked]:border-neutral6 data-[checked]:bg-neutral6 data-[checked]:text-surface1',\n 'data-[checked]:hover:border-neutral5 data-[checked]:hover:bg-neutral5',\n 'data-[checked]:active:border-neutral4 data-[checked]:active:bg-neutral4',\n // Base UI's Radio.Root is a `<span>`, so `:disabled` never matches; target `data-disabled`.\n 'data-[disabled]:cursor-not-allowed data-[disabled]:border-neutral6/[0.38] data-[disabled]:bg-neutral6/[0.38] data-[disabled]:hover:border-neutral6/[0.38] data-[disabled]:hover:bg-neutral6/[0.38] data-[disabled]:active:scale-100',\n 'data-[disabled]:data-[checked]:border-neutral6/[0.38] data-[disabled]:data-[checked]:bg-neutral6/[0.38] data-[disabled]:data-[checked]:text-neutral6',\n className,\n )}\n {...props}\n >\n <RadioPrimitive.Indicator\n keepMounted\n className={cn(\n 'flex items-center justify-center text-current',\n 'scale-50 opacity-0 transition-[opacity,scale] duration-200 ease-out-custom',\n 'data-[checked]:scale-100 data-[checked]:opacity-100',\n 'data-[starting-style]:scale-50 data-[starting-style]:opacity-0',\n 'data-[ending-style]:scale-50 data-[ending-style]:opacity-0',\n )}\n >\n <span className=\"size-1.5 rounded-full bg-current\" />\n </RadioPrimitive.Indicator>\n </RadioPrimitive.Root>\n );\n});\nRadioGroupItem.displayName = 'RadioGroupItem';\n\nexport { RadioGroup, RadioGroupItem };\n"],"names":["RadioGroupPrimitive","RadioPrimitive"],"mappings":";;;;;;;AAWA,MAAM,UAAA,GAAa,MAAM,UAAA,CAA4C,CAAC,EAAE,SAAA,EAAW,GAAG,KAAA,EAAM,EAAG,GAAA,KAAQ;AACrG,EAAA,uBAAO,GAAA,CAACA,YAAA,EAAA,EAAoB,GAAA,EAAU,WAAA,EAAU,aAAA,EAAc,SAAA,EAAW,EAAA,CAAG,YAAA,EAAc,SAAS,CAAA,EAAI,GAAG,KAAA,EAAO,CAAA;AACnH,CAAC;AACD,UAAA,CAAW,WAAA,GAAc,YAAA;AAMzB,MAAM,cAAA,GAAiB,MAAM,UAAA,CAAiD,CAAC,EAAE,SAAA,EAAW,GAAG,KAAA,EAAM,EAAG,GAAA,KAAQ;AAC9G,EAAA,uBACE,GAAA;AAAA,IAACC,KAAA,CAAe,IAAA;AAAA,IAAf;AAAA,MACC,GAAA;AAAA,MACA,WAAA,EAAU,kBAAA;AAAA,MACV,SAAA,EAAW,EAAA;AAAA,QACT,+EAAA;AAAA,QACA,+EAAA;AAAA,QACA,WAAA,CAAY,GAAA;AAAA,QACZ,uDAAA;AAAA,QACA,yEAAA;AAAA,QACA,iJAAA;AAAA;AAAA,QAEA,wFAAA;AAAA,QACA,uEAAA;AAAA,QACA,yEAAA;AAAA;AAAA,QAEA,qOAAA;AAAA,QACA,sJAAA;AAAA,QACA;AAAA,OACF;AAAA,MACC,GAAG,KAAA;AAAA,MAEJ,QAAA,kBAAA,GAAA;AAAA,QAACA,KAAA,CAAe,SAAA;AAAA,QAAf;AAAA,UACC,WAAA,EAAW,IAAA;AAAA,UACX,SAAA,EAAW,EAAA;AAAA,YACT,+CAAA;AAAA,YACA,4EAAA;AAAA,YACA,qDAAA;AAAA,YACA,gEAAA;AAAA,YACA;AAAA,WACF;AAAA,UAEA,QAAA,kBAAA,GAAA,CAAC,MAAA,EAAA,EAAK,SAAA,EAAU,kCAAA,EAAmC;AAAA;AAAA;AACrD;AAAA,GACF;AAEJ,CAAC;AACD,cAAA,CAAe,WAAA,GAAc,gBAAA;;;;"}
|
|
@@ -0,0 +1,77 @@
|
|
|
1
|
+
'use strict';
|
|
2
|
+
|
|
3
|
+
const jsxRuntime = require('react/jsx-runtime');
|
|
4
|
+
const radio = require('@base-ui/react/radio');
|
|
5
|
+
const radioGroup = require('@base-ui/react/radio-group');
|
|
6
|
+
const React = require('react');
|
|
7
|
+
const transitions = require('./transitions-DpczSjmD.cjs');
|
|
8
|
+
const utils_cn = require('./cn-vA5sWo9W.cjs');
|
|
9
|
+
|
|
10
|
+
function _interopNamespaceDefault(e) {
|
|
11
|
+
const n = Object.create(null, { [Symbol.toStringTag]: { value: 'Module' } });
|
|
12
|
+
if (e) {
|
|
13
|
+
for (const k in e) {
|
|
14
|
+
if (k !== 'default') {
|
|
15
|
+
const d = Object.getOwnPropertyDescriptor(e, k);
|
|
16
|
+
Object.defineProperty(n, k, d.get ? d : {
|
|
17
|
+
enumerable: true,
|
|
18
|
+
get: () => e[k]
|
|
19
|
+
});
|
|
20
|
+
}
|
|
21
|
+
}
|
|
22
|
+
}
|
|
23
|
+
n.default = e;
|
|
24
|
+
return Object.freeze(n);
|
|
25
|
+
}
|
|
26
|
+
|
|
27
|
+
const React__namespace = /*#__PURE__*/_interopNamespaceDefault(React);
|
|
28
|
+
|
|
29
|
+
const RadioGroup = React__namespace.forwardRef(({ className, ...props }, ref) => {
|
|
30
|
+
return /* @__PURE__ */ jsxRuntime.jsx(radioGroup.RadioGroup, { ref, "data-slot": "radio-group", className: utils_cn.cn("grid gap-2", className), ...props });
|
|
31
|
+
});
|
|
32
|
+
RadioGroup.displayName = "RadioGroup";
|
|
33
|
+
const RadioGroupItem = React__namespace.forwardRef(({ className, ...props }, ref) => {
|
|
34
|
+
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
35
|
+
radio.Radio.Root,
|
|
36
|
+
{
|
|
37
|
+
ref,
|
|
38
|
+
"data-slot": "radio-group-item",
|
|
39
|
+
className: utils_cn.cn(
|
|
40
|
+
"flex h-4 w-4 shrink-0 cursor-pointer items-center justify-center rounded-full",
|
|
41
|
+
"border border-neutral6/[0.06] bg-neutral6/[0.12] text-surface1 outline-hidden",
|
|
42
|
+
transitions.transitions.all,
|
|
43
|
+
"hover:border-neutral6/[0.12] hover:bg-neutral6/[0.16]",
|
|
44
|
+
"active:scale-95 active:border-neutral6/[0.18] active:bg-neutral6/[0.18]",
|
|
45
|
+
"focus-visible:border-neutral5/50 focus-visible:outline focus-visible:outline-1 focus-visible:outline-offset-2 focus-visible:outline-neutral5/55",
|
|
46
|
+
// Base UI exposes `data-checked`/`data-unchecked` instead of Radix's `data-state`.
|
|
47
|
+
"data-[checked]:border-neutral6 data-[checked]:bg-neutral6 data-[checked]:text-surface1",
|
|
48
|
+
"data-[checked]:hover:border-neutral5 data-[checked]:hover:bg-neutral5",
|
|
49
|
+
"data-[checked]:active:border-neutral4 data-[checked]:active:bg-neutral4",
|
|
50
|
+
// Base UI's Radio.Root is a `<span>`, so `:disabled` never matches; target `data-disabled`.
|
|
51
|
+
"data-[disabled]:cursor-not-allowed data-[disabled]:border-neutral6/[0.38] data-[disabled]:bg-neutral6/[0.38] data-[disabled]:hover:border-neutral6/[0.38] data-[disabled]:hover:bg-neutral6/[0.38] data-[disabled]:active:scale-100",
|
|
52
|
+
"data-[disabled]:data-[checked]:border-neutral6/[0.38] data-[disabled]:data-[checked]:bg-neutral6/[0.38] data-[disabled]:data-[checked]:text-neutral6",
|
|
53
|
+
className
|
|
54
|
+
),
|
|
55
|
+
...props,
|
|
56
|
+
children: /* @__PURE__ */ jsxRuntime.jsx(
|
|
57
|
+
radio.Radio.Indicator,
|
|
58
|
+
{
|
|
59
|
+
keepMounted: true,
|
|
60
|
+
className: utils_cn.cn(
|
|
61
|
+
"flex items-center justify-center text-current",
|
|
62
|
+
"scale-50 opacity-0 transition-[opacity,scale] duration-200 ease-out-custom",
|
|
63
|
+
"data-[checked]:scale-100 data-[checked]:opacity-100",
|
|
64
|
+
"data-[starting-style]:scale-50 data-[starting-style]:opacity-0",
|
|
65
|
+
"data-[ending-style]:scale-50 data-[ending-style]:opacity-0"
|
|
66
|
+
),
|
|
67
|
+
children: /* @__PURE__ */ jsxRuntime.jsx("span", { className: "size-1.5 rounded-full bg-current" })
|
|
68
|
+
}
|
|
69
|
+
)
|
|
70
|
+
}
|
|
71
|
+
);
|
|
72
|
+
});
|
|
73
|
+
RadioGroupItem.displayName = "RadioGroupItem";
|
|
74
|
+
|
|
75
|
+
exports.RadioGroup = RadioGroup;
|
|
76
|
+
exports.RadioGroupItem = RadioGroupItem;
|
|
77
|
+
//# sourceMappingURL=radio-group-rp_4ZkOj.cjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"radio-group-rp_4ZkOj.cjs","sources":["../src/ds/components/RadioGroup/radio-group.tsx"],"sourcesContent":["import { Radio as RadioPrimitive } from '@base-ui/react/radio';\nimport { RadioGroup as RadioGroupPrimitive } from '@base-ui/react/radio-group';\nimport * as React from 'react';\n\nimport { transitions } from '@/ds/primitives/transitions';\nimport { cn } from '@/lib/utils';\n\ntype RadioGroupProps = Omit<RadioGroupPrimitive.Props, 'className'> & {\n className?: string;\n};\n\nconst RadioGroup = React.forwardRef<HTMLDivElement, RadioGroupProps>(({ className, ...props }, ref) => {\n return <RadioGroupPrimitive ref={ref} data-slot=\"radio-group\" className={cn('grid gap-2', className)} {...props} />;\n});\nRadioGroup.displayName = 'RadioGroup';\n\ntype RadioGroupItemProps = Omit<RadioPrimitive.Root.Props, 'className'> & {\n className?: string;\n};\n\nconst RadioGroupItem = React.forwardRef<HTMLSpanElement, RadioGroupItemProps>(({ className, ...props }, ref) => {\n return (\n <RadioPrimitive.Root\n ref={ref}\n data-slot=\"radio-group-item\"\n className={cn(\n 'flex h-4 w-4 shrink-0 cursor-pointer items-center justify-center rounded-full',\n 'border border-neutral6/[0.06] bg-neutral6/[0.12] text-surface1 outline-hidden',\n transitions.all,\n 'hover:border-neutral6/[0.12] hover:bg-neutral6/[0.16]',\n 'active:scale-95 active:border-neutral6/[0.18] active:bg-neutral6/[0.18]',\n 'focus-visible:border-neutral5/50 focus-visible:outline focus-visible:outline-1 focus-visible:outline-offset-2 focus-visible:outline-neutral5/55',\n // Base UI exposes `data-checked`/`data-unchecked` instead of Radix's `data-state`.\n 'data-[checked]:border-neutral6 data-[checked]:bg-neutral6 data-[checked]:text-surface1',\n 'data-[checked]:hover:border-neutral5 data-[checked]:hover:bg-neutral5',\n 'data-[checked]:active:border-neutral4 data-[checked]:active:bg-neutral4',\n // Base UI's Radio.Root is a `<span>`, so `:disabled` never matches; target `data-disabled`.\n 'data-[disabled]:cursor-not-allowed data-[disabled]:border-neutral6/[0.38] data-[disabled]:bg-neutral6/[0.38] data-[disabled]:hover:border-neutral6/[0.38] data-[disabled]:hover:bg-neutral6/[0.38] data-[disabled]:active:scale-100',\n 'data-[disabled]:data-[checked]:border-neutral6/[0.38] data-[disabled]:data-[checked]:bg-neutral6/[0.38] data-[disabled]:data-[checked]:text-neutral6',\n className,\n )}\n {...props}\n >\n <RadioPrimitive.Indicator\n keepMounted\n className={cn(\n 'flex items-center justify-center text-current',\n 'scale-50 opacity-0 transition-[opacity,scale] duration-200 ease-out-custom',\n 'data-[checked]:scale-100 data-[checked]:opacity-100',\n 'data-[starting-style]:scale-50 data-[starting-style]:opacity-0',\n 'data-[ending-style]:scale-50 data-[ending-style]:opacity-0',\n )}\n >\n <span className=\"size-1.5 rounded-full bg-current\" />\n </RadioPrimitive.Indicator>\n </RadioPrimitive.Root>\n );\n});\nRadioGroupItem.displayName = 'RadioGroupItem';\n\nexport { RadioGroup, RadioGroupItem };\n"],"names":["React","jsx","RadioGroupPrimitive","cn","RadioPrimitive","transitions"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;AAWA,MAAM,UAAA,GAAaA,iBAAM,UAAA,CAA4C,CAAC,EAAE,SAAA,EAAW,GAAG,KAAA,EAAM,EAAG,GAAA,KAAQ;AACrG,EAAA,uBAAOC,cAAA,CAACC,qBAAA,EAAA,EAAoB,GAAA,EAAU,WAAA,EAAU,aAAA,EAAc,SAAA,EAAWC,WAAA,CAAG,YAAA,EAAc,SAAS,CAAA,EAAI,GAAG,KAAA,EAAO,CAAA;AACnH,CAAC;AACD,UAAA,CAAW,WAAA,GAAc,YAAA;AAMzB,MAAM,cAAA,GAAiBH,iBAAM,UAAA,CAAiD,CAAC,EAAE,SAAA,EAAW,GAAG,KAAA,EAAM,EAAG,GAAA,KAAQ;AAC9G,EAAA,uBACEC,cAAA;AAAA,IAACG,WAAA,CAAe,IAAA;AAAA,IAAf;AAAA,MACC,GAAA;AAAA,MACA,WAAA,EAAU,kBAAA;AAAA,MACV,SAAA,EAAWD,WAAA;AAAA,QACT,+EAAA;AAAA,QACA,+EAAA;AAAA,QACAE,uBAAA,CAAY,GAAA;AAAA,QACZ,uDAAA;AAAA,QACA,yEAAA;AAAA,QACA,iJAAA;AAAA;AAAA,QAEA,wFAAA;AAAA,QACA,uEAAA;AAAA,QACA,yEAAA;AAAA;AAAA,QAEA,qOAAA;AAAA,QACA,sJAAA;AAAA,QACA;AAAA,OACF;AAAA,MACC,GAAG,KAAA;AAAA,MAEJ,QAAA,kBAAAJ,cAAA;AAAA,QAACG,WAAA,CAAe,SAAA;AAAA,QAAf;AAAA,UACC,WAAA,EAAW,IAAA;AAAA,UACX,SAAA,EAAWD,WAAA;AAAA,YACT,+CAAA;AAAA,YACA,4EAAA;AAAA,YACA,qDAAA;AAAA,YACA,gEAAA;AAAA,YACA;AAAA,WACF;AAAA,UAEA,QAAA,kBAAAF,cAAA,CAAC,MAAA,EAAA,EAAK,SAAA,EAAU,kCAAA,EAAmC;AAAA;AAAA;AACrD;AAAA,GACF;AAEJ,CAAC;AACD,cAAA,CAAe,WAAA,GAAc,gBAAA;;;;;"}
|
|
@@ -0,0 +1,163 @@
|
|
|
1
|
+
import { jsxs, jsx } from 'react/jsx-runtime';
|
|
2
|
+
import { ResponsiveContainer, ScatterChart, CartesianGrid, XAxis, YAxis, ZAxis, Tooltip, Scatter } from 'recharts';
|
|
3
|
+
import { C as Colors } from './spacings-C87dXiT-.js';
|
|
4
|
+
import { c as cn } from './cn-BakJzhuv.js';
|
|
5
|
+
|
|
6
|
+
function ScatterPlotChartTooltip({
|
|
7
|
+
active,
|
|
8
|
+
payload,
|
|
9
|
+
xKey,
|
|
10
|
+
yKey,
|
|
11
|
+
nameKey,
|
|
12
|
+
formatX,
|
|
13
|
+
formatY,
|
|
14
|
+
formatTooltipLabel
|
|
15
|
+
}) {
|
|
16
|
+
const point = payload?.[0]?.payload;
|
|
17
|
+
if (!active || !point) return null;
|
|
18
|
+
const label = formatTooltipLabel?.(point) ?? (nameKey ? point[nameKey] : void 0);
|
|
19
|
+
const xValue = point[xKey];
|
|
20
|
+
const yValue = point[yKey];
|
|
21
|
+
return /* @__PURE__ */ jsxs("div", { className: "rounded-md border border-border1 bg-surface2 px-3 py-2 text-xs shadow-lg", children: [
|
|
22
|
+
label !== void 0 && /* @__PURE__ */ jsx("p", { className: "mb-1 font-medium text-icon6", children: String(label) }),
|
|
23
|
+
/* @__PURE__ */ jsxs("div", { className: "grid gap-1 text-icon2", children: [
|
|
24
|
+
/* @__PURE__ */ jsxs("p", { children: [
|
|
25
|
+
/* @__PURE__ */ jsx("span", { className: "text-neutral3", children: "X:" }),
|
|
26
|
+
" ",
|
|
27
|
+
/* @__PURE__ */ jsx("span", { className: "font-mono", children: formatX ? formatX(xValue, point) : String(xValue) })
|
|
28
|
+
] }),
|
|
29
|
+
/* @__PURE__ */ jsxs("p", { children: [
|
|
30
|
+
/* @__PURE__ */ jsx("span", { className: "text-neutral3", children: "Y:" }),
|
|
31
|
+
" ",
|
|
32
|
+
/* @__PURE__ */ jsx("span", { className: "font-mono", children: formatY ? formatY(yValue, point) : String(yValue) })
|
|
33
|
+
] })
|
|
34
|
+
] })
|
|
35
|
+
] });
|
|
36
|
+
}
|
|
37
|
+
|
|
38
|
+
function getScatterPlotPointColor(point, colorKey) {
|
|
39
|
+
const color = colorKey ? point[colorKey] : void 0;
|
|
40
|
+
return typeof color === "string" && color.length > 0 ? color : Colors.accent3;
|
|
41
|
+
}
|
|
42
|
+
function getScatterPlotClickedPoint(payload) {
|
|
43
|
+
return payload?.payload;
|
|
44
|
+
}
|
|
45
|
+
function formatScatterPlotAxisTick(value, formatter) {
|
|
46
|
+
return (formatter?.(value, {}) ?? String(value)).replace(/\s+/g, " ");
|
|
47
|
+
}
|
|
48
|
+
|
|
49
|
+
const LABEL_COLOR = "#a1a1aa";
|
|
50
|
+
const DEFAULT_POINT_SIZE = 48;
|
|
51
|
+
const CHART_MARGIN = { top: 16, right: 16, bottom: 16, left: 16 };
|
|
52
|
+
function ScatterPlotChart({
|
|
53
|
+
data,
|
|
54
|
+
xKey,
|
|
55
|
+
yKey,
|
|
56
|
+
nameKey,
|
|
57
|
+
colorKey,
|
|
58
|
+
height = 210,
|
|
59
|
+
xLabel,
|
|
60
|
+
yLabel,
|
|
61
|
+
xDomain,
|
|
62
|
+
yDomain,
|
|
63
|
+
formatX,
|
|
64
|
+
formatY,
|
|
65
|
+
formatTooltipLabel,
|
|
66
|
+
onPointClick,
|
|
67
|
+
className
|
|
68
|
+
}) {
|
|
69
|
+
const isClickable = typeof onPointClick === "function";
|
|
70
|
+
const fillsContainer = height === "100%";
|
|
71
|
+
if (data.length === 0) {
|
|
72
|
+
return /* @__PURE__ */ jsx(
|
|
73
|
+
"div",
|
|
74
|
+
{
|
|
75
|
+
className: cn(
|
|
76
|
+
"flex items-center justify-center rounded-md border border-border1 text-ui-sm text-neutral3",
|
|
77
|
+
className
|
|
78
|
+
),
|
|
79
|
+
style: { height },
|
|
80
|
+
children: "No data to display"
|
|
81
|
+
}
|
|
82
|
+
);
|
|
83
|
+
}
|
|
84
|
+
return /* @__PURE__ */ jsx("div", { className: cn(fillsContainer && "flex h-full min-h-0 flex-col", className), children: /* @__PURE__ */ jsx("div", { className: cn(fillsContainer && "min-h-0 flex-1"), style: { height: fillsContainer ? void 0 : height }, children: /* @__PURE__ */ jsx(ResponsiveContainer, { width: "100%", height: "100%", children: /* @__PURE__ */ jsxs(ScatterChart, { data, margin: CHART_MARGIN, children: [
|
|
85
|
+
/* @__PURE__ */ jsx(CartesianGrid, { stroke: Colors.neutral3, strokeDasharray: "4 4", strokeOpacity: 0.18, vertical: false }),
|
|
86
|
+
/* @__PURE__ */ jsx(
|
|
87
|
+
XAxis,
|
|
88
|
+
{
|
|
89
|
+
dataKey: xKey,
|
|
90
|
+
name: xLabel,
|
|
91
|
+
type: "number",
|
|
92
|
+
tick: { fontSize: 10, fill: LABEL_COLOR, fontFamily: "var(--font-mono)" },
|
|
93
|
+
tickLine: false,
|
|
94
|
+
axisLine: false,
|
|
95
|
+
domain: xDomain,
|
|
96
|
+
tickFormatter: (value) => formatScatterPlotAxisTick(value, formatX)
|
|
97
|
+
}
|
|
98
|
+
),
|
|
99
|
+
/* @__PURE__ */ jsx(
|
|
100
|
+
YAxis,
|
|
101
|
+
{
|
|
102
|
+
dataKey: yKey,
|
|
103
|
+
name: yLabel,
|
|
104
|
+
type: "number",
|
|
105
|
+
tick: { fontSize: 10, fill: LABEL_COLOR, fontFamily: "var(--font-mono)" },
|
|
106
|
+
tickLine: false,
|
|
107
|
+
axisLine: false,
|
|
108
|
+
width: 44,
|
|
109
|
+
domain: yDomain,
|
|
110
|
+
tickFormatter: (value) => formatScatterPlotAxisTick(value, formatY)
|
|
111
|
+
}
|
|
112
|
+
),
|
|
113
|
+
/* @__PURE__ */ jsx(ZAxis, { range: [DEFAULT_POINT_SIZE, DEFAULT_POINT_SIZE] }),
|
|
114
|
+
/* @__PURE__ */ jsx(
|
|
115
|
+
Tooltip,
|
|
116
|
+
{
|
|
117
|
+
cursor: { stroke: Colors.neutral3, strokeOpacity: 0.16 },
|
|
118
|
+
content: /* @__PURE__ */ jsx(
|
|
119
|
+
ScatterPlotChartTooltip,
|
|
120
|
+
{
|
|
121
|
+
xKey,
|
|
122
|
+
yKey,
|
|
123
|
+
nameKey,
|
|
124
|
+
formatX,
|
|
125
|
+
formatY,
|
|
126
|
+
formatTooltipLabel
|
|
127
|
+
}
|
|
128
|
+
)
|
|
129
|
+
}
|
|
130
|
+
),
|
|
131
|
+
/* @__PURE__ */ jsx(
|
|
132
|
+
Scatter,
|
|
133
|
+
{
|
|
134
|
+
data,
|
|
135
|
+
fill: Colors.accent3,
|
|
136
|
+
shape: (props) => {
|
|
137
|
+
const point = props.payload ?? {};
|
|
138
|
+
const cx = props.cx;
|
|
139
|
+
const cy = props.cy;
|
|
140
|
+
if (typeof cx !== "number" || typeof cy !== "number") return /* @__PURE__ */ jsx("g", {});
|
|
141
|
+
return /* @__PURE__ */ jsx(
|
|
142
|
+
"circle",
|
|
143
|
+
{
|
|
144
|
+
cx,
|
|
145
|
+
cy,
|
|
146
|
+
r: 4,
|
|
147
|
+
fill: getScatterPlotPointColor(point, colorKey),
|
|
148
|
+
opacity: 0.9,
|
|
149
|
+
style: { cursor: isClickable ? "pointer" : void 0 }
|
|
150
|
+
}
|
|
151
|
+
);
|
|
152
|
+
},
|
|
153
|
+
onClick: (_, payload) => {
|
|
154
|
+
const point = getScatterPlotClickedPoint(payload);
|
|
155
|
+
if (point) onPointClick?.(point);
|
|
156
|
+
}
|
|
157
|
+
}
|
|
158
|
+
)
|
|
159
|
+
] }) }) }) });
|
|
160
|
+
}
|
|
161
|
+
|
|
162
|
+
export { ScatterPlotChart as S, ScatterPlotChartTooltip as a, getScatterPlotPointColor as b, formatScatterPlotAxisTick as f, getScatterPlotClickedPoint as g };
|
|
163
|
+
//# sourceMappingURL=scatter-plot-chart-B3hfFMKS.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"scatter-plot-chart-B3hfFMKS.js","sources":["../src/ds/components/ScatterPlotChart/scatter-plot-chart-tooltip.tsx","../src/ds/components/ScatterPlotChart/scatter-plot-chart-utils.ts","../src/ds/components/ScatterPlotChart/scatter-plot-chart.tsx"],"sourcesContent":["import type { ScatterPlotChartFormatter } from './scatter-plot-chart';\n\ntype ScatterTooltipPayload = Array<{\n color?: string;\n payload?: Record<string, unknown>;\n}>;\n\nexport function ScatterPlotChartTooltip({\n active,\n payload,\n xKey,\n yKey,\n nameKey,\n formatX,\n formatY,\n formatTooltipLabel,\n}: {\n active?: boolean;\n payload?: ScatterTooltipPayload;\n xKey: string;\n yKey: string;\n nameKey?: string;\n formatX?: ScatterPlotChartFormatter;\n formatY?: ScatterPlotChartFormatter;\n formatTooltipLabel?: (point: Record<string, unknown>) => string;\n}) {\n const point = payload?.[0]?.payload;\n if (!active || !point) return null;\n\n const label = formatTooltipLabel?.(point) ?? (nameKey ? point[nameKey] : undefined);\n const xValue = point[xKey];\n const yValue = point[yKey];\n\n return (\n <div className=\"rounded-md border border-border1 bg-surface2 px-3 py-2 text-xs shadow-lg\">\n {label !== undefined && <p className=\"mb-1 font-medium text-icon6\">{String(label)}</p>}\n <div className=\"grid gap-1 text-icon2\">\n <p>\n <span className=\"text-neutral3\">X:</span>{' '}\n <span className=\"font-mono\">{formatX ? formatX(xValue, point) : String(xValue)}</span>\n </p>\n <p>\n <span className=\"text-neutral3\">Y:</span>{' '}\n <span className=\"font-mono\">{formatY ? formatY(yValue, point) : String(yValue)}</span>\n </p>\n </div>\n </div>\n );\n}\n","import type { ScatterPlotChartFormatter } from './scatter-plot-chart';\nimport { Colors } from '@/ds/tokens';\n\nexport function getScatterPlotPointColor(point: Record<string, unknown>, colorKey?: string) {\n const color = colorKey ? point[colorKey] : undefined;\n return typeof color === 'string' && color.length > 0 ? color : Colors.accent3;\n}\n\nexport function getScatterPlotClickedPoint(payload: unknown) {\n return (payload as { payload?: Record<string, unknown> } | undefined)?.payload;\n}\n\nexport function formatScatterPlotAxisTick(value: unknown, formatter?: ScatterPlotChartFormatter) {\n return (formatter?.(value, {}) ?? String(value)).replace(/\\s+/g, '\\u00A0');\n}\n","import { CartesianGrid, ResponsiveContainer, Scatter, ScatterChart, Tooltip, XAxis, YAxis, ZAxis } from 'recharts';\nimport { ScatterPlotChartTooltip } from './scatter-plot-chart-tooltip';\nimport {\n formatScatterPlotAxisTick,\n getScatterPlotClickedPoint,\n getScatterPlotPointColor,\n} from './scatter-plot-chart-utils';\nimport { Colors } from '@/ds/tokens';\nimport { cn } from '@/lib/utils';\n\nconst LABEL_COLOR = '#a1a1aa';\nconst DEFAULT_POINT_SIZE = 48;\nconst CHART_MARGIN = { top: 16, right: 16, bottom: 16, left: 16 };\n\nexport type ScatterPlotChartDomain = [number | 'auto', number | 'auto'];\nexport type ScatterPlotChartFormatter = (value: unknown, point: Record<string, unknown>) => string;\nexport type ScatterPlotChartPointClickHandler = (point: Record<string, unknown>) => void;\n\nexport type ScatterPlotChartProps = {\n data: Array<Record<string, unknown>>;\n xKey: string;\n yKey: string;\n nameKey?: string;\n colorKey?: string;\n height?: React.CSSProperties['height'];\n xLabel?: string;\n yLabel?: string;\n xDomain?: ScatterPlotChartDomain;\n yDomain?: ScatterPlotChartDomain;\n formatX?: ScatterPlotChartFormatter;\n formatY?: ScatterPlotChartFormatter;\n formatTooltipLabel?: (point: Record<string, unknown>) => string;\n onPointClick?: ScatterPlotChartPointClickHandler;\n className?: string;\n};\n\nexport function ScatterPlotChart({\n data,\n xKey,\n yKey,\n nameKey,\n colorKey,\n height = 210,\n xLabel,\n yLabel,\n xDomain,\n yDomain,\n formatX,\n formatY,\n formatTooltipLabel,\n onPointClick,\n className,\n}: ScatterPlotChartProps) {\n const isClickable = typeof onPointClick === 'function';\n const fillsContainer = height === '100%';\n\n if (data.length === 0) {\n return (\n <div\n className={cn(\n 'flex items-center justify-center rounded-md border border-border1 text-ui-sm text-neutral3',\n className,\n )}\n style={{ height }}\n >\n No data to display\n </div>\n );\n }\n\n return (\n <div className={cn(fillsContainer && 'flex h-full min-h-0 flex-col', className)}>\n <div className={cn(fillsContainer && 'min-h-0 flex-1')} style={{ height: fillsContainer ? undefined : height }}>\n <ResponsiveContainer width=\"100%\" height=\"100%\">\n <ScatterChart data={data} margin={CHART_MARGIN}>\n <CartesianGrid stroke={Colors.neutral3} strokeDasharray=\"4 4\" strokeOpacity={0.18} vertical={false} />\n <XAxis\n dataKey={xKey}\n name={xLabel}\n type=\"number\"\n tick={{ fontSize: 10, fill: LABEL_COLOR, fontFamily: 'var(--font-mono)' }}\n tickLine={false}\n axisLine={false}\n domain={xDomain}\n tickFormatter={value => formatScatterPlotAxisTick(value, formatX)}\n />\n <YAxis\n dataKey={yKey}\n name={yLabel}\n type=\"number\"\n tick={{ fontSize: 10, fill: LABEL_COLOR, fontFamily: 'var(--font-mono)' }}\n tickLine={false}\n axisLine={false}\n width={44}\n domain={yDomain}\n tickFormatter={value => formatScatterPlotAxisTick(value, formatY)}\n />\n <ZAxis range={[DEFAULT_POINT_SIZE, DEFAULT_POINT_SIZE]} />\n <Tooltip\n cursor={{ stroke: Colors.neutral3, strokeOpacity: 0.16 }}\n content={\n <ScatterPlotChartTooltip\n xKey={xKey}\n yKey={yKey}\n nameKey={nameKey}\n formatX={formatX}\n formatY={formatY}\n formatTooltipLabel={formatTooltipLabel}\n />\n }\n />\n <Scatter\n data={data}\n fill={Colors.accent3}\n shape={(props: unknown) => {\n const point = (props as { payload?: Record<string, unknown> }).payload ?? {};\n const cx = (props as { cx?: number }).cx;\n const cy = (props as { cy?: number }).cy;\n if (typeof cx !== 'number' || typeof cy !== 'number') return <g />;\n return (\n <circle\n cx={cx}\n cy={cy}\n r={4}\n fill={getScatterPlotPointColor(point, colorKey)}\n opacity={0.9}\n style={{ cursor: isClickable ? 'pointer' : undefined }}\n />\n );\n }}\n onClick={(_: unknown, payload: unknown) => {\n const point = getScatterPlotClickedPoint(payload);\n if (point) onPointClick?.(point);\n }}\n />\n </ScatterChart>\n </ResponsiveContainer>\n </div>\n </div>\n );\n}\n"],"names":[],"mappings":"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"}
|