@flanksource/clicky-ui 0.2.2 → 0.2.4
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/NOTICE.md +516 -0
- package/README.md +12 -13
- package/dist/clicky.cjs +7 -0
- package/dist/clicky.cjs.map +1 -0
- package/dist/clicky.d.ts +1 -1
- package/dist/clicky.d.ts.map +1 -1
- package/dist/clicky.js +4 -2
- package/dist/components/DateField.cjs +17 -0
- package/dist/components/DateField.cjs.map +1 -0
- package/dist/components/DateField.d.ts +35 -0
- package/dist/components/DateField.d.ts.map +1 -0
- package/dist/components/DateField.js +17 -0
- package/dist/components/DateField.js.map +1 -0
- package/dist/components/DatePicker.cjs +65 -0
- package/dist/components/DatePicker.cjs.map +1 -0
- package/dist/components/DatePicker.d.ts.map +1 -1
- package/dist/components/DatePicker.js +3 -1
- package/dist/components/DatePicker.js.map +1 -1
- package/dist/components/DateTimePicker.cjs +85 -0
- package/dist/components/DateTimePicker.cjs.map +1 -0
- package/dist/components/DateTimePicker.d.ts.map +1 -1
- package/dist/components/DateTimePicker.js +2 -1
- package/dist/components/DateTimePicker.js.map +1 -1
- package/dist/components/FilterBar.cjs +2120 -0
- package/dist/components/FilterBar.cjs.map +1 -0
- package/dist/components/FilterBar.d.ts +86 -4
- package/dist/components/FilterBar.d.ts.map +1 -1
- package/dist/components/FilterBar.js +716 -281
- package/dist/components/FilterBar.js.map +1 -1
- package/dist/components/MultiSelect.cjs +139 -0
- package/dist/components/MultiSelect.cjs.map +1 -0
- package/dist/components/MultiSelect.d.ts +12 -0
- package/dist/components/MultiSelect.d.ts.map +1 -1
- package/dist/components/MultiSelect.js +3 -7
- package/dist/components/MultiSelect.js.map +1 -1
- package/dist/components/RangeSlider.cjs +92 -0
- package/dist/components/RangeSlider.cjs.map +1 -0
- package/dist/components/TimeRange.cjs +698 -0
- package/dist/components/TimeRange.cjs.map +1 -0
- package/dist/components/TimeRange.d.ts +69 -0
- package/dist/components/TimeRange.d.ts.map +1 -0
- package/dist/components/TimeRange.js +698 -0
- package/dist/components/TimeRange.js.map +1 -0
- package/dist/components/button.cjs +126 -0
- package/dist/components/button.cjs.map +1 -0
- package/dist/components/button.d.ts +6 -0
- package/dist/components/button.d.ts.map +1 -1
- package/dist/components/button.js.map +1 -1
- package/dist/components/density-switcher.cjs +35 -0
- package/dist/components/density-switcher.cjs.map +1 -0
- package/dist/components/density-switcher.d.ts +3 -0
- package/dist/components/density-switcher.d.ts.map +1 -1
- package/dist/components/density-switcher.js +6 -3
- package/dist/components/density-switcher.js.map +1 -1
- package/dist/components/icon-menu-picker.cjs +194 -0
- package/dist/components/icon-menu-picker.cjs.map +1 -0
- package/dist/components/icon-menu-picker.d.ts +2 -1
- package/dist/components/icon-menu-picker.d.ts.map +1 -1
- package/dist/components/icon-menu-picker.js +7 -5
- package/dist/components/icon-menu-picker.js.map +1 -1
- package/dist/components/select.cjs +40 -0
- package/dist/components/select.cjs.map +1 -0
- package/dist/components/select.d.ts.map +1 -1
- package/dist/components/select.js +2 -1
- package/dist/components/select.js.map +1 -1
- package/dist/components/theme-switcher.cjs +45 -0
- package/dist/components/theme-switcher.cjs.map +1 -0
- package/dist/components/theme-switcher.d.ts +3 -0
- package/dist/components/theme-switcher.d.ts.map +1 -1
- package/dist/components/theme-switcher.js +7 -4
- package/dist/components/theme-switcher.js.map +1 -1
- package/dist/components.cjs +39 -0
- package/dist/components.cjs.map +1 -0
- package/dist/components.d.ts +3 -0
- package/dist/components.d.ts.map +1 -1
- package/dist/components.js +6 -0
- package/dist/components.js.map +1 -1
- package/dist/data/AnsiHtml.cjs +71 -0
- package/dist/data/AnsiHtml.cjs.map +1 -0
- package/dist/data/AnsiHtml.d.ts +3 -0
- package/dist/data/AnsiHtml.d.ts.map +1 -1
- package/dist/data/AnsiHtml.js.map +1 -1
- package/dist/data/Avatar.cjs +201 -0
- package/dist/data/Avatar.cjs.map +1 -0
- package/dist/data/Avatar.d.ts +10 -0
- package/dist/data/Avatar.d.ts.map +1 -1
- package/dist/data/Avatar.js.map +1 -1
- package/dist/data/AvatarBadge.cjs +104 -0
- package/dist/data/AvatarBadge.cjs.map +1 -0
- package/dist/data/AvatarBadge.d.ts +2 -2
- package/dist/data/AvatarBadge.d.ts.map +1 -1
- package/dist/data/AvatarBadge.js +1 -1
- package/dist/data/AvatarBadge.js.map +1 -1
- package/dist/data/Badge.cjs +679 -0
- package/dist/data/Badge.cjs.map +1 -0
- package/dist/data/Badge.d.ts +26 -2
- package/dist/data/Badge.d.ts.map +1 -1
- package/dist/data/Badge.js +14 -2
- package/dist/data/Badge.js.map +1 -1
- package/dist/data/Clicky.cjs +1965 -0
- package/dist/data/Clicky.cjs.map +1 -0
- package/dist/data/Clicky.d.ts +48 -1
- package/dist/data/Clicky.d.ts.map +1 -1
- package/dist/data/Clicky.js +123 -118
- package/dist/data/Clicky.js.map +1 -1
- package/dist/data/CodeBlock.cjs +72 -0
- package/dist/data/CodeBlock.cjs.map +1 -0
- package/dist/data/CodeBlock.d.ts +14 -0
- package/dist/data/CodeBlock.d.ts.map +1 -0
- package/dist/data/CodeBlock.js +72 -0
- package/dist/data/CodeBlock.js.map +1 -0
- package/dist/data/DataTable.cjs +1735 -0
- package/dist/data/DataTable.cjs.map +1 -0
- package/dist/data/DataTable.d.ts +153 -3
- package/dist/data/DataTable.d.ts.map +1 -1
- package/dist/data/DataTable.js +464 -193
- package/dist/data/DataTable.js.map +1 -1
- package/dist/data/FilterPill.cjs +175 -0
- package/dist/data/FilterPill.cjs.map +1 -0
- package/dist/data/FilterPill.d.ts +12 -1
- package/dist/data/FilterPill.d.ts.map +1 -1
- package/dist/data/FilterPill.js +47 -25
- package/dist/data/FilterPill.js.map +1 -1
- package/dist/data/Gauge.cjs +75 -0
- package/dist/data/Gauge.cjs.map +1 -0
- package/dist/data/Gauge.d.ts +2 -1
- package/dist/data/Gauge.d.ts.map +1 -1
- package/dist/data/Gauge.js +13 -1
- package/dist/data/Gauge.js.map +1 -1
- package/dist/data/Icon.cjs +129 -0
- package/dist/data/Icon.cjs.map +1 -0
- package/dist/data/Icon.d.ts +28 -12
- package/dist/data/Icon.d.ts.map +1 -1
- package/dist/data/Icon.js +51 -37
- package/dist/data/Icon.js.map +1 -1
- package/dist/data/JsonView.cjs +74 -0
- package/dist/data/JsonView.cjs.map +1 -0
- package/dist/data/JsonView.d.ts +4 -0
- package/dist/data/JsonView.d.ts.map +1 -1
- package/dist/data/JsonView.js.map +1 -1
- package/dist/data/KeyValueList.cjs +33 -0
- package/dist/data/KeyValueList.cjs.map +1 -0
- package/dist/data/LogViewer.cjs +46 -0
- package/dist/data/LogViewer.cjs.map +1 -0
- package/dist/data/LogViewer.d.ts +6 -0
- package/dist/data/LogViewer.d.ts.map +1 -1
- package/dist/data/LogViewer.js.map +1 -1
- package/dist/data/LogsTable.cjs +452 -0
- package/dist/data/LogsTable.cjs.map +1 -0
- package/dist/data/LogsTable.d.ts +5 -6
- package/dist/data/LogsTable.d.ts.map +1 -1
- package/dist/data/LogsTable.js +88 -216
- package/dist/data/LogsTable.js.map +1 -1
- package/dist/data/Markdown.cjs +81 -0
- package/dist/data/Markdown.cjs.map +1 -0
- package/dist/data/Markdown.d.ts +2 -0
- package/dist/data/Markdown.d.ts.map +1 -1
- package/dist/data/Markdown.js.map +1 -1
- package/dist/data/MatrixTable.cjs +164 -0
- package/dist/data/MatrixTable.cjs.map +1 -0
- package/dist/data/MethodBadge.cjs +18 -0
- package/dist/data/MethodBadge.cjs.map +1 -0
- package/dist/data/MethodBadge.d.ts +2 -0
- package/dist/data/MethodBadge.d.ts.map +1 -1
- package/dist/data/MethodBadge.js.map +1 -1
- package/dist/data/ProgressBar.cjs +34 -0
- package/dist/data/ProgressBar.cjs.map +1 -0
- package/dist/data/ProgressBar.d.ts +7 -0
- package/dist/data/ProgressBar.d.ts.map +1 -1
- package/dist/data/ProgressBar.js.map +1 -1
- package/dist/data/Properties.cjs +146 -0
- package/dist/data/Properties.cjs.map +1 -0
- package/dist/data/Properties.d.ts +63 -0
- package/dist/data/Properties.d.ts.map +1 -0
- package/dist/data/Properties.js +146 -0
- package/dist/data/Properties.js.map +1 -0
- package/dist/data/SignedDeltaBar.cjs +58 -0
- package/dist/data/SignedDeltaBar.cjs.map +1 -0
- package/dist/data/SignedDeltaBar.d.ts +25 -0
- package/dist/data/SignedDeltaBar.d.ts.map +1 -0
- package/dist/data/SignedDeltaBar.js +58 -0
- package/dist/data/SignedDeltaBar.js.map +1 -0
- package/dist/data/SortableHeader.cjs +33 -0
- package/dist/data/SortableHeader.cjs.map +1 -0
- package/dist/data/SortableHeader.d.ts +6 -0
- package/dist/data/SortableHeader.d.ts.map +1 -1
- package/dist/data/SortableHeader.js.map +1 -1
- package/dist/data/TabButton.cjs +45 -0
- package/dist/data/TabButton.cjs.map +1 -0
- package/dist/data/TabButton.d.ts +9 -1
- package/dist/data/TabButton.d.ts.map +1 -1
- package/dist/data/TabButton.js +1 -1
- package/dist/data/TabButton.js.map +1 -1
- package/dist/data/Tree.cjs +240 -0
- package/dist/data/Tree.cjs.map +1 -0
- package/dist/data/Tree.d.ts +5 -0
- package/dist/data/Tree.d.ts.map +1 -1
- package/dist/data/Tree.js +8 -4
- package/dist/data/Tree.js.map +1 -1
- package/dist/data/TreeGroupHeader.cjs +43 -0
- package/dist/data/TreeGroupHeader.cjs.map +1 -0
- package/dist/data/TreeGroupHeader.d.ts +8 -1
- package/dist/data/TreeGroupHeader.d.ts.map +1 -1
- package/dist/data/TreeGroupHeader.js +4 -2
- package/dist/data/TreeGroupHeader.js.map +1 -1
- package/dist/data/TreeNode.cjs +109 -0
- package/dist/data/TreeNode.cjs.map +1 -0
- package/dist/data/TreeNode.d.ts.map +1 -1
- package/dist/data/TreeNode.js +11 -2
- package/dist/data/TreeNode.js.map +1 -1
- package/dist/data/cells/StatusDot.cjs +38 -0
- package/dist/data/cells/StatusDot.cjs.map +1 -0
- package/dist/data/cells/TagList.cjs +332 -0
- package/dist/data/cells/TagList.cjs.map +1 -0
- package/dist/data/cells/TagList.d.ts +15 -1
- package/dist/data/cells/TagList.d.ts.map +1 -1
- package/dist/data/cells/TagList.js +92 -17
- package/dist/data/cells/TagList.js.map +1 -1
- package/dist/data/cells/Timestamp.cjs +195 -0
- package/dist/data/cells/Timestamp.cjs.map +1 -0
- package/dist/data/cells/Timestamp.d.ts +12 -2
- package/dist/data/cells/Timestamp.d.ts.map +1 -1
- package/dist/data/cells/Timestamp.js +51 -2
- package/dist/data/cells/Timestamp.js.map +1 -1
- package/dist/data/cells/status-mapping.cjs +44 -0
- package/dist/data/cells/status-mapping.cjs.map +1 -0
- package/dist/data/code-highlight.cjs +115 -0
- package/dist/data/code-highlight.cjs.map +1 -0
- package/dist/data/code-highlight.d.ts +2 -2
- package/dist/data/code-highlight.d.ts.map +1 -1
- package/dist/data/code-highlight.js +73 -8
- package/dist/data/code-highlight.js.map +1 -1
- package/dist/data/diagnostics/DiagnosticsDetailPanel.cjs +446 -0
- package/dist/data/diagnostics/DiagnosticsDetailPanel.cjs.map +1 -0
- package/dist/data/diagnostics/DiagnosticsDetailPanel.d.ts +4 -0
- package/dist/data/diagnostics/DiagnosticsDetailPanel.d.ts.map +1 -1
- package/dist/data/diagnostics/DiagnosticsDetailPanel.js +11 -10
- package/dist/data/diagnostics/DiagnosticsDetailPanel.js.map +1 -1
- package/dist/data/diagnostics/DiagnosticsTree.cjs +81 -0
- package/dist/data/diagnostics/DiagnosticsTree.cjs.map +1 -0
- package/dist/data/diagnostics/DiagnosticsTree.d.ts +4 -0
- package/dist/data/diagnostics/DiagnosticsTree.d.ts.map +1 -1
- package/dist/data/diagnostics/DiagnosticsTree.js +6 -3
- package/dist/data/diagnostics/DiagnosticsTree.js.map +1 -1
- package/dist/data/diagnostics/ErrorDetails.cjs +166 -0
- package/dist/data/diagnostics/ErrorDetails.cjs.map +1 -0
- package/dist/data/diagnostics/ErrorDetails.d.ts.map +1 -1
- package/dist/data/diagnostics/ErrorDetails.js +15 -6
- package/dist/data/diagnostics/ErrorDetails.js.map +1 -1
- package/dist/data/diagnostics/GoroutineCard.cjs +78 -0
- package/dist/data/diagnostics/GoroutineCard.cjs.map +1 -0
- package/dist/data/diagnostics/GoroutineCard.d.ts.map +1 -1
- package/dist/data/diagnostics/GoroutineCard.js +4 -1
- package/dist/data/diagnostics/GoroutineCard.js.map +1 -1
- package/dist/data/diagnostics/JvmStackTrace.cjs +32 -0
- package/dist/data/diagnostics/JvmStackTrace.cjs.map +1 -0
- package/dist/data/diagnostics/JvmStackTrace.d.ts.map +1 -1
- package/dist/data/diagnostics/JvmStackTrace.js +8 -2
- package/dist/data/diagnostics/JvmStackTrace.js.map +1 -1
- package/dist/data/diagnostics/RenderedStackTrace.cjs +240 -0
- package/dist/data/diagnostics/RenderedStackTrace.cjs.map +1 -0
- package/dist/data/diagnostics/RenderedStackTrace.d.ts +11 -0
- package/dist/data/diagnostics/RenderedStackTrace.d.ts.map +1 -1
- package/dist/data/diagnostics/RenderedStackTrace.js +9 -4
- package/dist/data/diagnostics/RenderedStackTrace.js.map +1 -1
- package/dist/data/diagnostics/ThreadCard.cjs +78 -0
- package/dist/data/diagnostics/ThreadCard.cjs.map +1 -0
- package/dist/data/diagnostics/error-diagnostics.cjs +108 -0
- package/dist/data/diagnostics/error-diagnostics.cjs.map +1 -0
- package/dist/data/diagnostics/jvm-stacktrace.cjs +190 -0
- package/dist/data/diagnostics/jvm-stacktrace.cjs.map +1 -0
- package/dist/data/diagnostics/stacktrace-parse.cjs +87 -0
- package/dist/data/diagnostics/stacktrace-parse.cjs.map +1 -0
- package/dist/data/diagnostics/stacktrace.cjs +119 -0
- package/dist/data/diagnostics/stacktrace.cjs.map +1 -0
- package/dist/data/diagnostics/utils.cjs +65 -0
- package/dist/data/diagnostics/utils.cjs.map +1 -0
- package/dist/data/diagnostics/utils.d.ts +2 -1
- package/dist/data/diagnostics/utils.d.ts.map +1 -1
- package/dist/data/diagnostics/utils.js +12 -6
- package/dist/data/diagnostics/utils.js.map +1 -1
- package/dist/data/har/HarPanel.cjs +175 -0
- package/dist/data/har/HarPanel.cjs.map +1 -0
- package/dist/data/har/HarPanel.d.ts +4 -0
- package/dist/data/har/HarPanel.d.ts.map +1 -1
- package/dist/data/har/HarPanel.js.map +1 -1
- package/dist/data/html-utils.cjs +14 -0
- package/dist/data/html-utils.cjs.map +1 -0
- package/dist/data/html-utils.d.ts +3 -0
- package/dist/data/html-utils.d.ts.map +1 -0
- package/dist/data/html-utils.js +14 -0
- package/dist/data/html-utils.js.map +1 -0
- package/dist/data/properties-utils.cjs +7 -0
- package/dist/data/properties-utils.cjs.map +1 -0
- package/dist/data/properties-utils.d.ts +2 -0
- package/dist/data/properties-utils.d.ts.map +1 -0
- package/dist/data/properties-utils.js +7 -0
- package/dist/data/properties-utils.js.map +1 -0
- package/dist/data.cjs +868 -0
- package/dist/data.cjs.map +1 -0
- package/dist/data.d.ts +6 -1
- package/dist/data.d.ts.map +1 -1
- package/dist/data.js +759 -0
- package/dist/data.js.map +1 -1
- package/dist/hooks/use-density.cjs +63 -0
- package/dist/hooks/use-density.cjs.map +1 -0
- package/dist/hooks/use-density.d.ts +11 -0
- package/dist/hooks/use-density.d.ts.map +1 -1
- package/dist/hooks/use-density.js +10 -1
- package/dist/hooks/use-density.js.map +1 -1
- package/dist/hooks/use-history-route.cjs +31 -0
- package/dist/hooks/use-history-route.cjs.map +1 -0
- package/dist/hooks/use-sort.cjs +42 -0
- package/dist/hooks/use-sort.cjs.map +1 -0
- package/dist/hooks/use-theme.cjs +90 -0
- package/dist/hooks/use-theme.cjs.map +1 -0
- package/dist/hooks/use-theme.d.ts +2 -0
- package/dist/hooks/use-theme.d.ts.map +1 -1
- package/dist/hooks/use-theme.js +23 -1
- package/dist/hooks/use-theme.js.map +1 -1
- package/dist/hooks.cjs +16 -0
- package/dist/hooks.cjs.map +1 -0
- package/dist/hooks.d.ts +1 -1
- package/dist/hooks.d.ts.map +1 -1
- package/dist/hooks.js +3 -1
- package/dist/icons/changeIconAliases.cjs +66 -0
- package/dist/icons/changeIconAliases.cjs.map +1 -0
- package/dist/icons/changeIconAliases.d.ts +17 -0
- package/dist/icons/changeIconAliases.d.ts.map +1 -0
- package/dist/icons/changeIconAliases.js +66 -0
- package/dist/icons/changeIconAliases.js.map +1 -0
- package/dist/icons/components/UiActivity.cjs +10 -0
- package/dist/icons/components/UiActivity.cjs.map +1 -0
- package/dist/icons/components/UiActivity.d.ts +9 -0
- package/dist/icons/components/UiActivity.d.ts.map +1 -0
- package/dist/icons/components/UiActivity.js +10 -0
- package/dist/icons/components/UiActivity.js.map +1 -0
- package/dist/icons/components/UiAdd.cjs +15 -0
- package/dist/icons/components/UiAdd.cjs.map +1 -0
- package/dist/icons/components/UiAdd.d.ts +15 -0
- package/dist/icons/components/UiAdd.d.ts.map +1 -0
- package/dist/icons/components/UiAdd.js +15 -0
- package/dist/icons/components/UiAdd.js.map +1 -0
- package/dist/icons/components/UiArchive.cjs +15 -0
- package/dist/icons/components/UiArchive.cjs.map +1 -0
- package/dist/icons/components/UiArchive.d.ts +15 -0
- package/dist/icons/components/UiArchive.d.ts.map +1 -0
- package/dist/icons/components/UiArchive.js +15 -0
- package/dist/icons/components/UiArchive.js.map +1 -0
- package/dist/icons/components/UiArray.cjs +13 -0
- package/dist/icons/components/UiArray.cjs.map +1 -0
- package/dist/icons/components/UiArray.d.ts +9 -0
- package/dist/icons/components/UiArray.d.ts.map +1 -0
- package/dist/icons/components/UiArray.js +13 -0
- package/dist/icons/components/UiArray.js.map +1 -0
- package/dist/icons/components/UiArrowDown.cjs +15 -0
- package/dist/icons/components/UiArrowDown.cjs.map +1 -0
- package/dist/icons/components/UiArrowDown.d.ts +15 -0
- package/dist/icons/components/UiArrowDown.d.ts.map +1 -0
- package/dist/icons/components/UiArrowDown.js +15 -0
- package/dist/icons/components/UiArrowDown.js.map +1 -0
- package/dist/icons/components/UiArrowDownRight.cjs +10 -0
- package/dist/icons/components/UiArrowDownRight.cjs.map +1 -0
- package/dist/icons/components/UiArrowDownRight.d.ts +9 -0
- package/dist/icons/components/UiArrowDownRight.d.ts.map +1 -0
- package/dist/icons/components/UiArrowDownRight.js +10 -0
- package/dist/icons/components/UiArrowDownRight.js.map +1 -0
- package/dist/icons/components/UiArrowLeft.cjs +15 -0
- package/dist/icons/components/UiArrowLeft.cjs.map +1 -0
- package/dist/icons/components/UiArrowLeft.d.ts +15 -0
- package/dist/icons/components/UiArrowLeft.d.ts.map +1 -0
- package/dist/icons/components/UiArrowLeft.js +15 -0
- package/dist/icons/components/UiArrowLeft.js.map +1 -0
- package/dist/icons/components/UiArrowRight.cjs +15 -0
- package/dist/icons/components/UiArrowRight.cjs.map +1 -0
- package/dist/icons/components/UiArrowRight.d.ts +15 -0
- package/dist/icons/components/UiArrowRight.d.ts.map +1 -0
- package/dist/icons/components/UiArrowRight.js +15 -0
- package/dist/icons/components/UiArrowRight.js.map +1 -0
- package/dist/icons/components/UiArrowUp.cjs +15 -0
- package/dist/icons/components/UiArrowUp.cjs.map +1 -0
- package/dist/icons/components/UiArrowUp.d.ts +15 -0
- package/dist/icons/components/UiArrowUp.d.ts.map +1 -0
- package/dist/icons/components/UiArrowUp.js +15 -0
- package/dist/icons/components/UiArrowUp.js.map +1 -0
- package/dist/icons/components/UiArrowUpRight.cjs +10 -0
- package/dist/icons/components/UiArrowUpRight.cjs.map +1 -0
- package/dist/icons/components/UiArrowUpRight.d.ts +9 -0
- package/dist/icons/components/UiArrowUpRight.d.ts.map +1 -0
- package/dist/icons/components/UiArrowUpRight.js +10 -0
- package/dist/icons/components/UiArrowUpRight.js.map +1 -0
- package/dist/icons/components/UiAsyncFn.cjs +10 -0
- package/dist/icons/components/UiAsyncFn.cjs.map +1 -0
- package/dist/icons/components/UiAsyncFn.d.ts +9 -0
- package/dist/icons/components/UiAsyncFn.d.ts.map +1 -0
- package/dist/icons/components/UiAsyncFn.js +10 -0
- package/dist/icons/components/UiAsyncFn.js.map +1 -0
- package/dist/icons/components/UiAt.cjs +15 -0
- package/dist/icons/components/UiAt.cjs.map +1 -0
- package/dist/icons/components/UiAt.d.ts +15 -0
- package/dist/icons/components/UiAt.d.ts.map +1 -0
- package/dist/icons/components/UiAt.js +15 -0
- package/dist/icons/components/UiAt.js.map +1 -0
- package/dist/icons/components/UiBeaker.cjs +15 -0
- package/dist/icons/components/UiBeaker.cjs.map +1 -0
- package/dist/icons/components/UiBeaker.d.ts +15 -0
- package/dist/icons/components/UiBeaker.d.ts.map +1 -0
- package/dist/icons/components/UiBeaker.js +15 -0
- package/dist/icons/components/UiBeaker.js.map +1 -0
- package/dist/icons/components/UiBell.cjs +15 -0
- package/dist/icons/components/UiBell.cjs.map +1 -0
- package/dist/icons/components/UiBell.d.ts +15 -0
- package/dist/icons/components/UiBell.d.ts.map +1 -0
- package/dist/icons/components/UiBell.js +15 -0
- package/dist/icons/components/UiBell.js.map +1 -0
- package/dist/icons/components/UiBellSlash.cjs +15 -0
- package/dist/icons/components/UiBellSlash.cjs.map +1 -0
- package/dist/icons/components/UiBellSlash.d.ts +15 -0
- package/dist/icons/components/UiBellSlash.d.ts.map +1 -0
- package/dist/icons/components/UiBellSlash.js +15 -0
- package/dist/icons/components/UiBellSlash.js.map +1 -0
- package/dist/icons/components/UiBinary.cjs +15 -0
- package/dist/icons/components/UiBinary.cjs.map +1 -0
- package/dist/icons/components/UiBinary.d.ts +15 -0
- package/dist/icons/components/UiBinary.d.ts.map +1 -0
- package/dist/icons/components/UiBinary.js +15 -0
- package/dist/icons/components/UiBinary.js.map +1 -0
- package/dist/icons/components/UiBox.cjs +15 -0
- package/dist/icons/components/UiBox.cjs.map +1 -0
- package/dist/icons/components/UiBox.d.ts +15 -0
- package/dist/icons/components/UiBox.d.ts.map +1 -0
- package/dist/icons/components/UiBox.js +15 -0
- package/dist/icons/components/UiBox.js.map +1 -0
- package/dist/icons/components/UiBoxes.cjs +19 -0
- package/dist/icons/components/UiBoxes.cjs.map +1 -0
- package/dist/icons/components/UiBoxes.d.ts +15 -0
- package/dist/icons/components/UiBoxes.d.ts.map +1 -0
- package/dist/icons/components/UiBoxes.js +19 -0
- package/dist/icons/components/UiBoxes.js.map +1 -0
- package/dist/icons/components/UiBraces.cjs +10 -0
- package/dist/icons/components/UiBraces.cjs.map +1 -0
- package/dist/icons/components/UiBraces.d.ts +9 -0
- package/dist/icons/components/UiBraces.d.ts.map +1 -0
- package/dist/icons/components/UiBraces.js +10 -0
- package/dist/icons/components/UiBraces.js.map +1 -0
- package/dist/icons/components/UiBrain.cjs +15 -0
- package/dist/icons/components/UiBrain.cjs.map +1 -0
- package/dist/icons/components/UiBrain.d.ts +15 -0
- package/dist/icons/components/UiBrain.d.ts.map +1 -0
- package/dist/icons/components/UiBrain.js +15 -0
- package/dist/icons/components/UiBrain.js.map +1 -0
- package/dist/icons/components/UiBroadcast.cjs +15 -0
- package/dist/icons/components/UiBroadcast.cjs.map +1 -0
- package/dist/icons/components/UiBroadcast.d.ts +15 -0
- package/dist/icons/components/UiBroadcast.d.ts.map +1 -0
- package/dist/icons/components/UiBroadcast.js +15 -0
- package/dist/icons/components/UiBroadcast.js.map +1 -0
- package/dist/icons/components/UiBug.cjs +15 -0
- package/dist/icons/components/UiBug.cjs.map +1 -0
- package/dist/icons/components/UiBug.d.ts +15 -0
- package/dist/icons/components/UiBug.d.ts.map +1 -0
- package/dist/icons/components/UiBug.js +15 -0
- package/dist/icons/components/UiBug.js.map +1 -0
- package/dist/icons/components/UiCalculator.cjs +13 -0
- package/dist/icons/components/UiCalculator.cjs.map +1 -0
- package/dist/icons/components/UiCalculator.d.ts +9 -0
- package/dist/icons/components/UiCalculator.d.ts.map +1 -0
- package/dist/icons/components/UiCalculator.js +13 -0
- package/dist/icons/components/UiCalculator.js.map +1 -0
- package/dist/icons/components/UiCalendar.cjs +15 -0
- package/dist/icons/components/UiCalendar.cjs.map +1 -0
- package/dist/icons/components/UiCalendar.d.ts +15 -0
- package/dist/icons/components/UiCalendar.d.ts.map +1 -0
- package/dist/icons/components/UiCalendar.js +15 -0
- package/dist/icons/components/UiCalendar.js.map +1 -0
- package/dist/icons/components/UiCalendarBlank.cjs +15 -0
- package/dist/icons/components/UiCalendarBlank.cjs.map +1 -0
- package/dist/icons/components/UiCalendarBlank.d.ts +15 -0
- package/dist/icons/components/UiCalendarBlank.d.ts.map +1 -0
- package/dist/icons/components/UiCalendarBlank.js +15 -0
- package/dist/icons/components/UiCalendarBlank.js.map +1 -0
- package/dist/icons/components/UiCamera.cjs +15 -0
- package/dist/icons/components/UiCamera.cjs.map +1 -0
- package/dist/icons/components/UiCamera.d.ts +15 -0
- package/dist/icons/components/UiCamera.d.ts.map +1 -0
- package/dist/icons/components/UiCamera.js +15 -0
- package/dist/icons/components/UiCamera.js.map +1 -0
- package/dist/icons/components/UiCancel.cjs +15 -0
- package/dist/icons/components/UiCancel.cjs.map +1 -0
- package/dist/icons/components/UiCancel.d.ts +15 -0
- package/dist/icons/components/UiCancel.d.ts.map +1 -0
- package/dist/icons/components/UiCancel.js +15 -0
- package/dist/icons/components/UiCancel.js.map +1 -0
- package/dist/icons/components/UiChartBar.cjs +15 -0
- package/dist/icons/components/UiChartBar.cjs.map +1 -0
- package/dist/icons/components/UiChartBar.d.ts +15 -0
- package/dist/icons/components/UiChartBar.d.ts.map +1 -0
- package/dist/icons/components/UiChartBar.js +15 -0
- package/dist/icons/components/UiChartBar.js.map +1 -0
- package/dist/icons/components/UiChartPie.cjs +15 -0
- package/dist/icons/components/UiChartPie.cjs.map +1 -0
- package/dist/icons/components/UiChartPie.d.ts +15 -0
- package/dist/icons/components/UiChartPie.d.ts.map +1 -0
- package/dist/icons/components/UiChartPie.js +15 -0
- package/dist/icons/components/UiChartPie.js.map +1 -0
- package/dist/icons/components/UiCheck.cjs +23 -0
- package/dist/icons/components/UiCheck.cjs.map +1 -0
- package/dist/icons/components/UiCheck.d.ts +17 -0
- package/dist/icons/components/UiCheck.d.ts.map +1 -0
- package/dist/icons/components/UiCheck.js +23 -0
- package/dist/icons/components/UiCheck.js.map +1 -0
- package/dist/icons/components/UiChevronDown.cjs +15 -0
- package/dist/icons/components/UiChevronDown.cjs.map +1 -0
- package/dist/icons/components/UiChevronDown.d.ts +15 -0
- package/dist/icons/components/UiChevronDown.d.ts.map +1 -0
- package/dist/icons/components/UiChevronDown.js +15 -0
- package/dist/icons/components/UiChevronDown.js.map +1 -0
- package/dist/icons/components/UiChevronRight.cjs +15 -0
- package/dist/icons/components/UiChevronRight.cjs.map +1 -0
- package/dist/icons/components/UiChevronRight.d.ts +15 -0
- package/dist/icons/components/UiChevronRight.d.ts.map +1 -0
- package/dist/icons/components/UiChevronRight.js +15 -0
- package/dist/icons/components/UiChevronRight.js.map +1 -0
- package/dist/icons/components/UiChevronUp.cjs +15 -0
- package/dist/icons/components/UiChevronUp.cjs.map +1 -0
- package/dist/icons/components/UiChevronUp.d.ts +15 -0
- package/dist/icons/components/UiChevronUp.d.ts.map +1 -0
- package/dist/icons/components/UiChevronUp.js +15 -0
- package/dist/icons/components/UiChevronUp.js.map +1 -0
- package/dist/icons/components/UiChevronsDown.cjs +15 -0
- package/dist/icons/components/UiChevronsDown.cjs.map +1 -0
- package/dist/icons/components/UiChevronsDown.d.ts +15 -0
- package/dist/icons/components/UiChevronsDown.d.ts.map +1 -0
- package/dist/icons/components/UiChevronsDown.js +15 -0
- package/dist/icons/components/UiChevronsDown.js.map +1 -0
- package/dist/icons/components/UiChevronsUp.cjs +15 -0
- package/dist/icons/components/UiChevronsUp.cjs.map +1 -0
- package/dist/icons/components/UiChevronsUp.d.ts +15 -0
- package/dist/icons/components/UiChevronsUp.d.ts.map +1 -0
- package/dist/icons/components/UiChevronsUp.js +15 -0
- package/dist/icons/components/UiChevronsUp.js.map +1 -0
- package/dist/icons/components/UiChip.cjs +15 -0
- package/dist/icons/components/UiChip.cjs.map +1 -0
- package/dist/icons/components/UiChip.d.ts +15 -0
- package/dist/icons/components/UiChip.d.ts.map +1 -0
- package/dist/icons/components/UiChip.js +15 -0
- package/dist/icons/components/UiChip.js.map +1 -0
- package/dist/icons/components/UiCircleFilled.cjs +15 -0
- package/dist/icons/components/UiCircleFilled.cjs.map +1 -0
- package/dist/icons/components/UiCircleFilled.d.ts +15 -0
- package/dist/icons/components/UiCircleFilled.d.ts.map +1 -0
- package/dist/icons/components/UiCircleFilled.js +15 -0
- package/dist/icons/components/UiCircleFilled.js.map +1 -0
- package/dist/icons/components/UiCircleOutline.cjs +15 -0
- package/dist/icons/components/UiCircleOutline.cjs.map +1 -0
- package/dist/icons/components/UiCircleOutline.d.ts +15 -0
- package/dist/icons/components/UiCircleOutline.d.ts.map +1 -0
- package/dist/icons/components/UiCircleOutline.js +15 -0
- package/dist/icons/components/UiCircleOutline.js.map +1 -0
- package/dist/icons/components/UiCircleX.cjs +23 -0
- package/dist/icons/components/UiCircleX.cjs.map +1 -0
- package/dist/icons/components/UiCircleX.d.ts +17 -0
- package/dist/icons/components/UiCircleX.d.ts.map +1 -0
- package/dist/icons/components/UiCircleX.js +23 -0
- package/dist/icons/components/UiCircleX.js.map +1 -0
- package/dist/icons/components/UiClass.cjs +13 -0
- package/dist/icons/components/UiClass.cjs.map +1 -0
- package/dist/icons/components/UiClass.d.ts +9 -0
- package/dist/icons/components/UiClass.d.ts.map +1 -0
- package/dist/icons/components/UiClass.js +13 -0
- package/dist/icons/components/UiClass.js.map +1 -0
- package/dist/icons/components/UiClock.cjs +15 -0
- package/dist/icons/components/UiClock.cjs.map +1 -0
- package/dist/icons/components/UiClock.d.ts +15 -0
- package/dist/icons/components/UiClock.d.ts.map +1 -0
- package/dist/icons/components/UiClock.js +15 -0
- package/dist/icons/components/UiClock.js.map +1 -0
- package/dist/icons/components/UiClose.cjs +15 -0
- package/dist/icons/components/UiClose.cjs.map +1 -0
- package/dist/icons/components/UiClose.d.ts +15 -0
- package/dist/icons/components/UiClose.d.ts.map +1 -0
- package/dist/icons/components/UiClose.js +15 -0
- package/dist/icons/components/UiClose.js.map +1 -0
- package/dist/icons/components/UiCloud.cjs +15 -0
- package/dist/icons/components/UiCloud.cjs.map +1 -0
- package/dist/icons/components/UiCloud.d.ts +15 -0
- package/dist/icons/components/UiCloud.d.ts.map +1 -0
- package/dist/icons/components/UiCloud.js +15 -0
- package/dist/icons/components/UiCloud.js.map +1 -0
- package/dist/icons/components/UiCloudDownload.cjs +15 -0
- package/dist/icons/components/UiCloudDownload.cjs.map +1 -0
- package/dist/icons/components/UiCloudDownload.d.ts +15 -0
- package/dist/icons/components/UiCloudDownload.d.ts.map +1 -0
- package/dist/icons/components/UiCloudDownload.js +15 -0
- package/dist/icons/components/UiCloudDownload.js.map +1 -0
- package/dist/icons/components/UiCode2.cjs +15 -0
- package/dist/icons/components/UiCode2.cjs.map +1 -0
- package/dist/icons/components/UiCode2.d.ts +15 -0
- package/dist/icons/components/UiCode2.d.ts.map +1 -0
- package/dist/icons/components/UiCode2.js +15 -0
- package/dist/icons/components/UiCode2.js.map +1 -0
- package/dist/icons/components/UiCog.cjs +15 -0
- package/dist/icons/components/UiCog.cjs.map +1 -0
- package/dist/icons/components/UiCog.d.ts +15 -0
- package/dist/icons/components/UiCog.d.ts.map +1 -0
- package/dist/icons/components/UiCog.js +15 -0
- package/dist/icons/components/UiCog.js.map +1 -0
- package/dist/icons/components/UiCollapseAll.cjs +13 -0
- package/dist/icons/components/UiCollapseAll.cjs.map +1 -0
- package/dist/icons/components/UiCollapseAll.d.ts +9 -0
- package/dist/icons/components/UiCollapseAll.d.ts.map +1 -0
- package/dist/icons/components/UiCollapseAll.js +13 -0
- package/dist/icons/components/UiCollapseAll.js.map +1 -0
- package/dist/icons/components/UiColumns.cjs +15 -0
- package/dist/icons/components/UiColumns.cjs.map +1 -0
- package/dist/icons/components/UiColumns.d.ts +15 -0
- package/dist/icons/components/UiColumns.d.ts.map +1 -0
- package/dist/icons/components/UiColumns.js +15 -0
- package/dist/icons/components/UiColumns.js.map +1 -0
- package/dist/icons/components/UiCommand.cjs +15 -0
- package/dist/icons/components/UiCommand.cjs.map +1 -0
- package/dist/icons/components/UiCommand.d.ts +15 -0
- package/dist/icons/components/UiCommand.d.ts.map +1 -0
- package/dist/icons/components/UiCommand.js +15 -0
- package/dist/icons/components/UiCommand.js.map +1 -0
- package/dist/icons/components/UiComment.cjs +16 -0
- package/dist/icons/components/UiComment.cjs.map +1 -0
- package/dist/icons/components/UiComment.d.ts +9 -0
- package/dist/icons/components/UiComment.d.ts.map +1 -0
- package/dist/icons/components/UiComment.js +16 -0
- package/dist/icons/components/UiComment.js.map +1 -0
- package/dist/icons/components/UiConfig.cjs +15 -0
- package/dist/icons/components/UiConfig.cjs.map +1 -0
- package/dist/icons/components/UiConfig.d.ts +15 -0
- package/dist/icons/components/UiConfig.d.ts.map +1 -0
- package/dist/icons/components/UiConfig.js +15 -0
- package/dist/icons/components/UiConfig.js.map +1 -0
- package/dist/icons/components/UiConstant.cjs +14 -0
- package/dist/icons/components/UiConstant.cjs.map +1 -0
- package/dist/icons/components/UiConstant.d.ts +9 -0
- package/dist/icons/components/UiConstant.d.ts.map +1 -0
- package/dist/icons/components/UiConstant.js +14 -0
- package/dist/icons/components/UiConstant.js.map +1 -0
- package/dist/icons/components/UiConstructor.cjs +15 -0
- package/dist/icons/components/UiConstructor.cjs.map +1 -0
- package/dist/icons/components/UiConstructor.d.ts +9 -0
- package/dist/icons/components/UiConstructor.d.ts.map +1 -0
- package/dist/icons/components/UiConstructor.js +15 -0
- package/dist/icons/components/UiConstructor.js.map +1 -0
- package/dist/icons/components/UiCopy.cjs +15 -0
- package/dist/icons/components/UiCopy.cjs.map +1 -0
- package/dist/icons/components/UiCopy.d.ts +15 -0
- package/dist/icons/components/UiCopy.d.ts.map +1 -0
- package/dist/icons/components/UiCopy.js +15 -0
- package/dist/icons/components/UiCopy.js.map +1 -0
- package/dist/icons/components/UiDatabase.cjs +257 -0
- package/dist/icons/components/UiDatabase.cjs.map +1 -0
- package/dist/icons/components/UiDatabase.d.ts +147 -0
- package/dist/icons/components/UiDatabase.d.ts.map +1 -0
- package/dist/icons/components/UiDatabase.js +257 -0
- package/dist/icons/components/UiDatabase.js.map +1 -0
- package/dist/icons/components/UiDatabaseZap.cjs +14 -0
- package/dist/icons/components/UiDatabaseZap.cjs.map +1 -0
- package/dist/icons/components/UiDatabaseZap.d.ts +9 -0
- package/dist/icons/components/UiDatabaseZap.d.ts.map +1 -0
- package/dist/icons/components/UiDatabaseZap.js +14 -0
- package/dist/icons/components/UiDatabaseZap.js.map +1 -0
- package/dist/icons/components/UiDebug.cjs +15 -0
- package/dist/icons/components/UiDebug.cjs.map +1 -0
- package/dist/icons/components/UiDebug.d.ts +15 -0
- package/dist/icons/components/UiDebug.d.ts.map +1 -0
- package/dist/icons/components/UiDebug.js +15 -0
- package/dist/icons/components/UiDebug.js.map +1 -0
- package/dist/icons/components/UiDebugSmall.cjs +10 -0
- package/dist/icons/components/UiDebugSmall.cjs.map +1 -0
- package/dist/icons/components/UiDebugSmall.d.ts +9 -0
- package/dist/icons/components/UiDebugSmall.d.ts.map +1 -0
- package/dist/icons/components/UiDebugSmall.js +10 -0
- package/dist/icons/components/UiDebugSmall.js.map +1 -0
- package/dist/icons/components/UiDebugStepOver.cjs +10 -0
- package/dist/icons/components/UiDebugStepOver.cjs.map +1 -0
- package/dist/icons/components/UiDebugStepOver.d.ts +9 -0
- package/dist/icons/components/UiDebugStepOver.d.ts.map +1 -0
- package/dist/icons/components/UiDebugStepOver.js +10 -0
- package/dist/icons/components/UiDebugStepOver.js.map +1 -0
- package/dist/icons/components/UiDecorator.cjs +13 -0
- package/dist/icons/components/UiDecorator.cjs.map +1 -0
- package/dist/icons/components/UiDecorator.d.ts +9 -0
- package/dist/icons/components/UiDecorator.d.ts.map +1 -0
- package/dist/icons/components/UiDecorator.js +13 -0
- package/dist/icons/components/UiDecorator.js.map +1 -0
- package/dist/icons/components/UiDesktop.cjs +15 -0
- package/dist/icons/components/UiDesktop.cjs.map +1 -0
- package/dist/icons/components/UiDesktop.d.ts +15 -0
- package/dist/icons/components/UiDesktop.d.ts.map +1 -0
- package/dist/icons/components/UiDesktop.js +15 -0
- package/dist/icons/components/UiDesktop.js.map +1 -0
- package/dist/icons/components/UiDiff.cjs +10 -0
- package/dist/icons/components/UiDiff.cjs.map +1 -0
- package/dist/icons/components/UiDiff.d.ts +9 -0
- package/dist/icons/components/UiDiff.d.ts.map +1 -0
- package/dist/icons/components/UiDiff.js +10 -0
- package/dist/icons/components/UiDiff.js.map +1 -0
- package/dist/icons/components/UiDotsVertical.cjs +15 -0
- package/dist/icons/components/UiDotsVertical.cjs.map +1 -0
- package/dist/icons/components/UiDotsVertical.d.ts +15 -0
- package/dist/icons/components/UiDotsVertical.d.ts.map +1 -0
- package/dist/icons/components/UiDotsVertical.js +15 -0
- package/dist/icons/components/UiDotsVertical.js.map +1 -0
- package/dist/icons/components/UiDownload.cjs +15 -0
- package/dist/icons/components/UiDownload.cjs.map +1 -0
- package/dist/icons/components/UiDownload.d.ts +15 -0
- package/dist/icons/components/UiDownload.d.ts.map +1 -0
- package/dist/icons/components/UiDownload.js +15 -0
- package/dist/icons/components/UiDownload.js.map +1 -0
- package/dist/icons/components/UiEdit.cjs +15 -0
- package/dist/icons/components/UiEdit.cjs.map +1 -0
- package/dist/icons/components/UiEdit.d.ts +15 -0
- package/dist/icons/components/UiEdit.d.ts.map +1 -0
- package/dist/icons/components/UiEdit.js +15 -0
- package/dist/icons/components/UiEdit.js.map +1 -0
- package/dist/icons/components/UiEllipsis.cjs +15 -0
- package/dist/icons/components/UiEllipsis.cjs.map +1 -0
- package/dist/icons/components/UiEllipsis.d.ts +15 -0
- package/dist/icons/components/UiEllipsis.d.ts.map +1 -0
- package/dist/icons/components/UiEllipsis.js +15 -0
- package/dist/icons/components/UiEllipsis.js.map +1 -0
- package/dist/icons/components/UiEndpoint.cjs +10 -0
- package/dist/icons/components/UiEndpoint.cjs.map +1 -0
- package/dist/icons/components/UiEndpoint.d.ts +9 -0
- package/dist/icons/components/UiEndpoint.d.ts.map +1 -0
- package/dist/icons/components/UiEndpoint.js +10 -0
- package/dist/icons/components/UiEndpoint.js.map +1 -0
- package/dist/icons/components/UiEnum.cjs +13 -0
- package/dist/icons/components/UiEnum.cjs.map +1 -0
- package/dist/icons/components/UiEnum.d.ts +9 -0
- package/dist/icons/components/UiEnum.d.ts.map +1 -0
- package/dist/icons/components/UiEnum.js +13 -0
- package/dist/icons/components/UiEnum.js.map +1 -0
- package/dist/icons/components/UiEnumMember.cjs +19 -0
- package/dist/icons/components/UiEnumMember.cjs.map +1 -0
- package/dist/icons/components/UiEnumMember.d.ts +9 -0
- package/dist/icons/components/UiEnumMember.d.ts.map +1 -0
- package/dist/icons/components/UiEnumMember.js +19 -0
- package/dist/icons/components/UiEnumMember.js.map +1 -0
- package/dist/icons/components/UiEnvelope.cjs +15 -0
- package/dist/icons/components/UiEnvelope.cjs.map +1 -0
- package/dist/icons/components/UiEnvelope.d.ts +15 -0
- package/dist/icons/components/UiEnvelope.d.ts.map +1 -0
- package/dist/icons/components/UiEnvelope.js +15 -0
- package/dist/icons/components/UiEnvelope.js.map +1 -0
- package/dist/icons/components/UiError.cjs +14 -0
- package/dist/icons/components/UiError.cjs.map +1 -0
- package/dist/icons/components/UiError.d.ts +10 -0
- package/dist/icons/components/UiError.d.ts.map +1 -0
- package/dist/icons/components/UiError.js +14 -0
- package/dist/icons/components/UiError.js.map +1 -0
- package/dist/icons/components/UiEvent.cjs +13 -0
- package/dist/icons/components/UiEvent.cjs.map +1 -0
- package/dist/icons/components/UiEvent.d.ts +9 -0
- package/dist/icons/components/UiEvent.d.ts.map +1 -0
- package/dist/icons/components/UiEvent.js +13 -0
- package/dist/icons/components/UiEvent.js.map +1 -0
- package/dist/icons/components/UiExpandAll.cjs +13 -0
- package/dist/icons/components/UiExpandAll.cjs.map +1 -0
- package/dist/icons/components/UiExpandAll.d.ts +9 -0
- package/dist/icons/components/UiExpandAll.d.ts.map +1 -0
- package/dist/icons/components/UiExpandAll.js +13 -0
- package/dist/icons/components/UiExpandAll.js.map +1 -0
- package/dist/icons/components/UiExport.cjs +13 -0
- package/dist/icons/components/UiExport.cjs.map +1 -0
- package/dist/icons/components/UiExport.d.ts +9 -0
- package/dist/icons/components/UiExport.d.ts.map +1 -0
- package/dist/icons/components/UiExport.js +13 -0
- package/dist/icons/components/UiExport.js.map +1 -0
- package/dist/icons/components/UiExternalLink.cjs +10 -0
- package/dist/icons/components/UiExternalLink.cjs.map +1 -0
- package/dist/icons/components/UiExternalLink.d.ts +9 -0
- package/dist/icons/components/UiExternalLink.d.ts.map +1 -0
- package/dist/icons/components/UiExternalLink.js +10 -0
- package/dist/icons/components/UiExternalLink.js.map +1 -0
- package/dist/icons/components/UiEye.cjs +15 -0
- package/dist/icons/components/UiEye.cjs.map +1 -0
- package/dist/icons/components/UiEye.d.ts +15 -0
- package/dist/icons/components/UiEye.d.ts.map +1 -0
- package/dist/icons/components/UiEye.js +15 -0
- package/dist/icons/components/UiEye.js.map +1 -0
- package/dist/icons/components/UiEyeClosed.cjs +15 -0
- package/dist/icons/components/UiEyeClosed.cjs.map +1 -0
- package/dist/icons/components/UiEyeClosed.d.ts +15 -0
- package/dist/icons/components/UiEyeClosed.d.ts.map +1 -0
- package/dist/icons/components/UiEyeClosed.js +15 -0
- package/dist/icons/components/UiEyeClosed.js.map +1 -0
- package/dist/icons/components/UiField.cjs +13 -0
- package/dist/icons/components/UiField.cjs.map +1 -0
- package/dist/icons/components/UiField.d.ts +9 -0
- package/dist/icons/components/UiField.d.ts.map +1 -0
- package/dist/icons/components/UiField.js +13 -0
- package/dist/icons/components/UiField.js.map +1 -0
- package/dist/icons/components/UiFile.cjs +15 -0
- package/dist/icons/components/UiFile.cjs.map +1 -0
- package/dist/icons/components/UiFile.d.ts +15 -0
- package/dist/icons/components/UiFile.d.ts.map +1 -0
- package/dist/icons/components/UiFile.js +15 -0
- package/dist/icons/components/UiFile.js.map +1 -0
- package/dist/icons/components/UiFileCode.cjs +15 -0
- package/dist/icons/components/UiFileCode.cjs.map +1 -0
- package/dist/icons/components/UiFileCode.d.ts +15 -0
- package/dist/icons/components/UiFileCode.d.ts.map +1 -0
- package/dist/icons/components/UiFileCode.js +15 -0
- package/dist/icons/components/UiFileCode.js.map +1 -0
- package/dist/icons/components/UiFileCog.cjs +13 -0
- package/dist/icons/components/UiFileCog.cjs.map +1 -0
- package/dist/icons/components/UiFileCog.d.ts +9 -0
- package/dist/icons/components/UiFileCog.d.ts.map +1 -0
- package/dist/icons/components/UiFileCog.js +13 -0
- package/dist/icons/components/UiFileCog.js.map +1 -0
- package/dist/icons/components/UiFileJson.cjs +13 -0
- package/dist/icons/components/UiFileJson.cjs.map +1 -0
- package/dist/icons/components/UiFileJson.d.ts +9 -0
- package/dist/icons/components/UiFileJson.d.ts.map +1 -0
- package/dist/icons/components/UiFileJson.js +13 -0
- package/dist/icons/components/UiFileJson.js.map +1 -0
- package/dist/icons/components/UiFileSearch.cjs +15 -0
- package/dist/icons/components/UiFileSearch.cjs.map +1 -0
- package/dist/icons/components/UiFileSearch.d.ts +9 -0
- package/dist/icons/components/UiFileSearch.d.ts.map +1 -0
- package/dist/icons/components/UiFileSearch.js +15 -0
- package/dist/icons/components/UiFileSearch.js.map +1 -0
- package/dist/icons/components/UiFileSpreadsheet.cjs +13 -0
- package/dist/icons/components/UiFileSpreadsheet.cjs.map +1 -0
- package/dist/icons/components/UiFileSpreadsheet.d.ts +9 -0
- package/dist/icons/components/UiFileSpreadsheet.d.ts.map +1 -0
- package/dist/icons/components/UiFileSpreadsheet.js +13 -0
- package/dist/icons/components/UiFileSpreadsheet.js.map +1 -0
- package/dist/icons/components/UiFileText.cjs +15 -0
- package/dist/icons/components/UiFileText.cjs.map +1 -0
- package/dist/icons/components/UiFileText.d.ts +15 -0
- package/dist/icons/components/UiFileText.d.ts.map +1 -0
- package/dist/icons/components/UiFileText.js +15 -0
- package/dist/icons/components/UiFileText.js.map +1 -0
- package/dist/icons/components/UiFileType.cjs +13 -0
- package/dist/icons/components/UiFileType.cjs.map +1 -0
- package/dist/icons/components/UiFileType.d.ts +9 -0
- package/dist/icons/components/UiFileType.d.ts.map +1 -0
- package/dist/icons/components/UiFileType.js +13 -0
- package/dist/icons/components/UiFileType.js.map +1 -0
- package/dist/icons/components/UiFilter.cjs +15 -0
- package/dist/icons/components/UiFilter.cjs.map +1 -0
- package/dist/icons/components/UiFilter.d.ts +15 -0
- package/dist/icons/components/UiFilter.d.ts.map +1 -0
- package/dist/icons/components/UiFilter.js +15 -0
- package/dist/icons/components/UiFilter.js.map +1 -0
- package/dist/icons/components/UiFingerprint.cjs +15 -0
- package/dist/icons/components/UiFingerprint.cjs.map +1 -0
- package/dist/icons/components/UiFingerprint.d.ts +15 -0
- package/dist/icons/components/UiFingerprint.d.ts.map +1 -0
- package/dist/icons/components/UiFingerprint.js +15 -0
- package/dist/icons/components/UiFingerprint.js.map +1 -0
- package/dist/icons/components/UiFolder.cjs +15 -0
- package/dist/icons/components/UiFolder.cjs.map +1 -0
- package/dist/icons/components/UiFolder.d.ts +15 -0
- package/dist/icons/components/UiFolder.d.ts.map +1 -0
- package/dist/icons/components/UiFolder.js +15 -0
- package/dist/icons/components/UiFolder.js.map +1 -0
- package/dist/icons/components/UiFolderGit.cjs +15 -0
- package/dist/icons/components/UiFolderGit.cjs.map +1 -0
- package/dist/icons/components/UiFolderGit.d.ts +15 -0
- package/dist/icons/components/UiFolderGit.d.ts.map +1 -0
- package/dist/icons/components/UiFolderGit.js +15 -0
- package/dist/icons/components/UiFolderGit.js.map +1 -0
- package/dist/icons/components/UiFolderGit2.cjs +24 -0
- package/dist/icons/components/UiFolderGit2.cjs.map +1 -0
- package/dist/icons/components/UiFolderGit2.d.ts +15 -0
- package/dist/icons/components/UiFolderGit2.d.ts.map +1 -0
- package/dist/icons/components/UiFolderGit2.js +24 -0
- package/dist/icons/components/UiFolderGit2.js.map +1 -0
- package/dist/icons/components/UiForm.cjs +15 -0
- package/dist/icons/components/UiForm.cjs.map +1 -0
- package/dist/icons/components/UiForm.d.ts +15 -0
- package/dist/icons/components/UiForm.d.ts.map +1 -0
- package/dist/icons/components/UiForm.js +15 -0
- package/dist/icons/components/UiForm.js.map +1 -0
- package/dist/icons/components/UiFullscreen.cjs +15 -0
- package/dist/icons/components/UiFullscreen.cjs.map +1 -0
- package/dist/icons/components/UiFullscreen.d.ts +15 -0
- package/dist/icons/components/UiFullscreen.d.ts.map +1 -0
- package/dist/icons/components/UiFullscreen.js +15 -0
- package/dist/icons/components/UiFullscreen.js.map +1 -0
- package/dist/icons/components/UiFunction.cjs +13 -0
- package/dist/icons/components/UiFunction.cjs.map +1 -0
- package/dist/icons/components/UiFunction.d.ts +9 -0
- package/dist/icons/components/UiFunction.d.ts.map +1 -0
- package/dist/icons/components/UiFunction.js +13 -0
- package/dist/icons/components/UiFunction.js.map +1 -0
- package/dist/icons/components/UiFunctionSquare.cjs +18 -0
- package/dist/icons/components/UiFunctionSquare.cjs.map +1 -0
- package/dist/icons/components/UiFunctionSquare.d.ts +15 -0
- package/dist/icons/components/UiFunctionSquare.d.ts.map +1 -0
- package/dist/icons/components/UiFunctionSquare.js +18 -0
- package/dist/icons/components/UiFunctionSquare.js.map +1 -0
- package/dist/icons/components/UiFunnelData.cjs +15 -0
- package/dist/icons/components/UiFunnelData.cjs.map +1 -0
- package/dist/icons/components/UiFunnelData.d.ts +15 -0
- package/dist/icons/components/UiFunnelData.d.ts.map +1 -0
- package/dist/icons/components/UiFunnelData.js +15 -0
- package/dist/icons/components/UiFunnelData.js.map +1 -0
- package/dist/icons/components/UiGitBranch.cjs +15 -0
- package/dist/icons/components/UiGitBranch.cjs.map +1 -0
- package/dist/icons/components/UiGitBranch.d.ts +15 -0
- package/dist/icons/components/UiGitBranch.d.ts.map +1 -0
- package/dist/icons/components/UiGitBranch.js +15 -0
- package/dist/icons/components/UiGitBranch.js.map +1 -0
- package/dist/icons/components/UiGitGraph.cjs +15 -0
- package/dist/icons/components/UiGitGraph.cjs.map +1 -0
- package/dist/icons/components/UiGitGraph.d.ts +15 -0
- package/dist/icons/components/UiGitGraph.d.ts.map +1 -0
- package/dist/icons/components/UiGitGraph.js +15 -0
- package/dist/icons/components/UiGitGraph.js.map +1 -0
- package/dist/icons/components/UiGitMerge.cjs +15 -0
- package/dist/icons/components/UiGitMerge.cjs.map +1 -0
- package/dist/icons/components/UiGitMerge.d.ts +15 -0
- package/dist/icons/components/UiGitMerge.d.ts.map +1 -0
- package/dist/icons/components/UiGitMerge.js +15 -0
- package/dist/icons/components/UiGitMerge.js.map +1 -0
- package/dist/icons/components/UiGitPr.cjs +15 -0
- package/dist/icons/components/UiGitPr.cjs.map +1 -0
- package/dist/icons/components/UiGitPr.d.ts +15 -0
- package/dist/icons/components/UiGitPr.d.ts.map +1 -0
- package/dist/icons/components/UiGitPr.js +15 -0
- package/dist/icons/components/UiGitPr.js.map +1 -0
- package/dist/icons/components/UiGlobe.cjs +10 -0
- package/dist/icons/components/UiGlobe.cjs.map +1 -0
- package/dist/icons/components/UiGlobe.d.ts +9 -0
- package/dist/icons/components/UiGlobe.d.ts.map +1 -0
- package/dist/icons/components/UiGlobe.js +10 -0
- package/dist/icons/components/UiGlobe.js.map +1 -0
- package/dist/icons/components/UiGraph.cjs +15 -0
- package/dist/icons/components/UiGraph.cjs.map +1 -0
- package/dist/icons/components/UiGraph.d.ts +15 -0
- package/dist/icons/components/UiGraph.d.ts.map +1 -0
- package/dist/icons/components/UiGraph.js +15 -0
- package/dist/icons/components/UiGraph.js.map +1 -0
- package/dist/icons/components/UiGrid.cjs +15 -0
- package/dist/icons/components/UiGrid.cjs.map +1 -0
- package/dist/icons/components/UiGrid.d.ts +15 -0
- package/dist/icons/components/UiGrid.d.ts.map +1 -0
- package/dist/icons/components/UiGrid.js +15 -0
- package/dist/icons/components/UiGrid.js.map +1 -0
- package/dist/icons/components/UiHardDrive.cjs +10 -0
- package/dist/icons/components/UiHardDrive.cjs.map +1 -0
- package/dist/icons/components/UiHardDrive.d.ts +9 -0
- package/dist/icons/components/UiHardDrive.d.ts.map +1 -0
- package/dist/icons/components/UiHardDrive.js +10 -0
- package/dist/icons/components/UiHardDrive.js.map +1 -0
- package/dist/icons/components/UiHistory.cjs +15 -0
- package/dist/icons/components/UiHistory.cjs.map +1 -0
- package/dist/icons/components/UiHistory.d.ts +15 -0
- package/dist/icons/components/UiHistory.d.ts.map +1 -0
- package/dist/icons/components/UiHistory.js +15 -0
- package/dist/icons/components/UiHistory.js.map +1 -0
- package/dist/icons/components/UiHome.cjs +15 -0
- package/dist/icons/components/UiHome.cjs.map +1 -0
- package/dist/icons/components/UiHome.d.ts +15 -0
- package/dist/icons/components/UiHome.d.ts.map +1 -0
- package/dist/icons/components/UiHome.js +15 -0
- package/dist/icons/components/UiHome.js.map +1 -0
- package/dist/icons/components/UiHourglass.cjs +15 -0
- package/dist/icons/components/UiHourglass.cjs.map +1 -0
- package/dist/icons/components/UiHourglass.d.ts +15 -0
- package/dist/icons/components/UiHourglass.d.ts.map +1 -0
- package/dist/icons/components/UiHourglass.js +15 -0
- package/dist/icons/components/UiHourglass.js.map +1 -0
- package/dist/icons/components/UiHubot.cjs +15 -0
- package/dist/icons/components/UiHubot.cjs.map +1 -0
- package/dist/icons/components/UiHubot.d.ts +15 -0
- package/dist/icons/components/UiHubot.d.ts.map +1 -0
- package/dist/icons/components/UiHubot.js +15 -0
- package/dist/icons/components/UiHubot.js.map +1 -0
- package/dist/icons/components/UiImage.cjs +15 -0
- package/dist/icons/components/UiImage.cjs.map +1 -0
- package/dist/icons/components/UiImage.d.ts +15 -0
- package/dist/icons/components/UiImage.d.ts.map +1 -0
- package/dist/icons/components/UiImage.js +15 -0
- package/dist/icons/components/UiImage.js.map +1 -0
- package/dist/icons/components/UiImport.cjs +13 -0
- package/dist/icons/components/UiImport.cjs.map +1 -0
- package/dist/icons/components/UiImport.d.ts +9 -0
- package/dist/icons/components/UiImport.d.ts.map +1 -0
- package/dist/icons/components/UiImport.js +13 -0
- package/dist/icons/components/UiImport.js.map +1 -0
- package/dist/icons/components/UiInbox.cjs +15 -0
- package/dist/icons/components/UiInbox.cjs.map +1 -0
- package/dist/icons/components/UiInbox.d.ts +15 -0
- package/dist/icons/components/UiInbox.d.ts.map +1 -0
- package/dist/icons/components/UiInbox.js +15 -0
- package/dist/icons/components/UiInbox.js.map +1 -0
- package/dist/icons/components/UiInfo.cjs +23 -0
- package/dist/icons/components/UiInfo.cjs.map +1 -0
- package/dist/icons/components/UiInfo.d.ts +17 -0
- package/dist/icons/components/UiInfo.d.ts.map +1 -0
- package/dist/icons/components/UiInfo.js +23 -0
- package/dist/icons/components/UiInfo.js.map +1 -0
- package/dist/icons/components/UiInsightAvailability.cjs +15 -0
- package/dist/icons/components/UiInsightAvailability.cjs.map +1 -0
- package/dist/icons/components/UiInsightAvailability.d.ts +15 -0
- package/dist/icons/components/UiInsightAvailability.d.ts.map +1 -0
- package/dist/icons/components/UiInsightAvailability.js +15 -0
- package/dist/icons/components/UiInsightAvailability.js.map +1 -0
- package/dist/icons/components/UiInsightCompliance.cjs +10 -0
- package/dist/icons/components/UiInsightCompliance.cjs.map +1 -0
- package/dist/icons/components/UiInsightCompliance.d.ts +9 -0
- package/dist/icons/components/UiInsightCompliance.d.ts.map +1 -0
- package/dist/icons/components/UiInsightCompliance.js +10 -0
- package/dist/icons/components/UiInsightCompliance.js.map +1 -0
- package/dist/icons/components/UiInsightCost.cjs +15 -0
- package/dist/icons/components/UiInsightCost.cjs.map +1 -0
- package/dist/icons/components/UiInsightCost.d.ts +15 -0
- package/dist/icons/components/UiInsightCost.d.ts.map +1 -0
- package/dist/icons/components/UiInsightCost.js +15 -0
- package/dist/icons/components/UiInsightCost.js.map +1 -0
- package/dist/icons/components/UiInsightIntegration.cjs +10 -0
- package/dist/icons/components/UiInsightIntegration.cjs.map +1 -0
- package/dist/icons/components/UiInsightIntegration.d.ts +9 -0
- package/dist/icons/components/UiInsightIntegration.d.ts.map +1 -0
- package/dist/icons/components/UiInsightIntegration.js +10 -0
- package/dist/icons/components/UiInsightIntegration.js.map +1 -0
- package/dist/icons/components/UiInsightPerformance.cjs +15 -0
- package/dist/icons/components/UiInsightPerformance.cjs.map +1 -0
- package/dist/icons/components/UiInsightPerformance.d.ts +15 -0
- package/dist/icons/components/UiInsightPerformance.d.ts.map +1 -0
- package/dist/icons/components/UiInsightPerformance.js +15 -0
- package/dist/icons/components/UiInsightPerformance.js.map +1 -0
- package/dist/icons/components/UiInsightRecommendation.cjs +15 -0
- package/dist/icons/components/UiInsightRecommendation.cjs.map +1 -0
- package/dist/icons/components/UiInsightRecommendation.d.ts +15 -0
- package/dist/icons/components/UiInsightRecommendation.d.ts.map +1 -0
- package/dist/icons/components/UiInsightRecommendation.js +15 -0
- package/dist/icons/components/UiInsightRecommendation.js.map +1 -0
- package/dist/icons/components/UiInsightReliability.cjs +15 -0
- package/dist/icons/components/UiInsightReliability.cjs.map +1 -0
- package/dist/icons/components/UiInsightReliability.d.ts +15 -0
- package/dist/icons/components/UiInsightReliability.d.ts.map +1 -0
- package/dist/icons/components/UiInsightReliability.js +15 -0
- package/dist/icons/components/UiInsightReliability.js.map +1 -0
- package/dist/icons/components/UiInsightSecurity.cjs +15 -0
- package/dist/icons/components/UiInsightSecurity.cjs.map +1 -0
- package/dist/icons/components/UiInsightSecurity.d.ts +15 -0
- package/dist/icons/components/UiInsightSecurity.d.ts.map +1 -0
- package/dist/icons/components/UiInsightSecurity.js +15 -0
- package/dist/icons/components/UiInsightSecurity.js.map +1 -0
- package/dist/icons/components/UiInsightTechnicalDebt.cjs +15 -0
- package/dist/icons/components/UiInsightTechnicalDebt.cjs.map +1 -0
- package/dist/icons/components/UiInsightTechnicalDebt.d.ts +15 -0
- package/dist/icons/components/UiInsightTechnicalDebt.d.ts.map +1 -0
- package/dist/icons/components/UiInsightTechnicalDebt.js +15 -0
- package/dist/icons/components/UiInsightTechnicalDebt.js.map +1 -0
- package/dist/icons/components/UiInterface.cjs +13 -0
- package/dist/icons/components/UiInterface.cjs.map +1 -0
- package/dist/icons/components/UiInterface.d.ts +9 -0
- package/dist/icons/components/UiInterface.d.ts.map +1 -0
- package/dist/icons/components/UiInterface.js +13 -0
- package/dist/icons/components/UiInterface.js.map +1 -0
- package/dist/icons/components/UiJson.cjs +10 -0
- package/dist/icons/components/UiJson.cjs.map +1 -0
- package/dist/icons/components/UiJson.d.ts +9 -0
- package/dist/icons/components/UiJson.d.ts.map +1 -0
- package/dist/icons/components/UiJson.js +10 -0
- package/dist/icons/components/UiJson.js.map +1 -0
- package/dist/icons/components/UiKanban.cjs +15 -0
- package/dist/icons/components/UiKanban.cjs.map +1 -0
- package/dist/icons/components/UiKanban.d.ts +15 -0
- package/dist/icons/components/UiKanban.d.ts.map +1 -0
- package/dist/icons/components/UiKanban.js +15 -0
- package/dist/icons/components/UiKanban.js.map +1 -0
- package/dist/icons/components/UiKey.cjs +15 -0
- package/dist/icons/components/UiKey.cjs.map +1 -0
- package/dist/icons/components/UiKey.d.ts +15 -0
- package/dist/icons/components/UiKey.d.ts.map +1 -0
- package/dist/icons/components/UiKey.js +15 -0
- package/dist/icons/components/UiKey.js.map +1 -0
- package/dist/icons/components/UiKeyword.cjs +10 -0
- package/dist/icons/components/UiKeyword.cjs.map +1 -0
- package/dist/icons/components/UiKeyword.d.ts +9 -0
- package/dist/icons/components/UiKeyword.d.ts.map +1 -0
- package/dist/icons/components/UiKeyword.js +10 -0
- package/dist/icons/components/UiKeyword.js.map +1 -0
- package/dist/icons/components/UiLambda.cjs +13 -0
- package/dist/icons/components/UiLambda.cjs.map +1 -0
- package/dist/icons/components/UiLambda.d.ts +9 -0
- package/dist/icons/components/UiLambda.d.ts.map +1 -0
- package/dist/icons/components/UiLambda.js +13 -0
- package/dist/icons/components/UiLambda.js.map +1 -0
- package/dist/icons/components/UiLayers.cjs +14 -0
- package/dist/icons/components/UiLayers.cjs.map +1 -0
- package/dist/icons/components/UiLayers.d.ts +9 -0
- package/dist/icons/components/UiLayers.d.ts.map +1 -0
- package/dist/icons/components/UiLayers.js +14 -0
- package/dist/icons/components/UiLayers.js.map +1 -0
- package/dist/icons/components/UiLayoutDashboard.cjs +15 -0
- package/dist/icons/components/UiLayoutDashboard.cjs.map +1 -0
- package/dist/icons/components/UiLayoutDashboard.d.ts +15 -0
- package/dist/icons/components/UiLayoutDashboard.d.ts.map +1 -0
- package/dist/icons/components/UiLayoutDashboard.js +15 -0
- package/dist/icons/components/UiLayoutDashboard.js.map +1 -0
- package/dist/icons/components/UiLightbulb.cjs +15 -0
- package/dist/icons/components/UiLightbulb.cjs.map +1 -0
- package/dist/icons/components/UiLightbulb.d.ts +15 -0
- package/dist/icons/components/UiLightbulb.d.ts.map +1 -0
- package/dist/icons/components/UiLightbulb.js +15 -0
- package/dist/icons/components/UiLightbulb.js.map +1 -0
- package/dist/icons/components/UiLink.cjs +15 -0
- package/dist/icons/components/UiLink.cjs.map +1 -0
- package/dist/icons/components/UiLink.d.ts +15 -0
- package/dist/icons/components/UiLink.d.ts.map +1 -0
- package/dist/icons/components/UiLink.js +15 -0
- package/dist/icons/components/UiLink.js.map +1 -0
- package/dist/icons/components/UiLinkExternal.cjs +15 -0
- package/dist/icons/components/UiLinkExternal.cjs.map +1 -0
- package/dist/icons/components/UiLinkExternal.d.ts +15 -0
- package/dist/icons/components/UiLinkExternal.d.ts.map +1 -0
- package/dist/icons/components/UiLinkExternal.js +15 -0
- package/dist/icons/components/UiLinkExternal.js.map +1 -0
- package/dist/icons/components/UiListDashes.cjs +15 -0
- package/dist/icons/components/UiListDashes.cjs.map +1 -0
- package/dist/icons/components/UiListDashes.d.ts +15 -0
- package/dist/icons/components/UiListDashes.d.ts.map +1 -0
- package/dist/icons/components/UiListDashes.js +15 -0
- package/dist/icons/components/UiListDashes.js.map +1 -0
- package/dist/icons/components/UiListFlat.cjs +15 -0
- package/dist/icons/components/UiListFlat.cjs.map +1 -0
- package/dist/icons/components/UiListFlat.d.ts +15 -0
- package/dist/icons/components/UiListFlat.d.ts.map +1 -0
- package/dist/icons/components/UiListFlat.js +15 -0
- package/dist/icons/components/UiListFlat.js.map +1 -0
- package/dist/icons/components/UiListOrdered.cjs +10 -0
- package/dist/icons/components/UiListOrdered.cjs.map +1 -0
- package/dist/icons/components/UiListOrdered.d.ts +9 -0
- package/dist/icons/components/UiListOrdered.d.ts.map +1 -0
- package/dist/icons/components/UiListOrdered.js +10 -0
- package/dist/icons/components/UiListOrdered.js.map +1 -0
- package/dist/icons/components/UiListTree.cjs +15 -0
- package/dist/icons/components/UiListTree.cjs.map +1 -0
- package/dist/icons/components/UiListTree.d.ts +15 -0
- package/dist/icons/components/UiListTree.d.ts.map +1 -0
- package/dist/icons/components/UiListTree.js +15 -0
- package/dist/icons/components/UiListTree.js.map +1 -0
- package/dist/icons/components/UiLoader.cjs +23 -0
- package/dist/icons/components/UiLoader.cjs.map +1 -0
- package/dist/icons/components/UiLoader.d.ts +17 -0
- package/dist/icons/components/UiLoader.d.ts.map +1 -0
- package/dist/icons/components/UiLoader.js +23 -0
- package/dist/icons/components/UiLoader.js.map +1 -0
- package/dist/icons/components/UiLocation.cjs +15 -0
- package/dist/icons/components/UiLocation.cjs.map +1 -0
- package/dist/icons/components/UiLocation.d.ts +15 -0
- package/dist/icons/components/UiLocation.d.ts.map +1 -0
- package/dist/icons/components/UiLocation.js +15 -0
- package/dist/icons/components/UiLocation.js.map +1 -0
- package/dist/icons/components/UiLock.cjs +15 -0
- package/dist/icons/components/UiLock.cjs.map +1 -0
- package/dist/icons/components/UiLock.d.ts +15 -0
- package/dist/icons/components/UiLock.d.ts.map +1 -0
- package/dist/icons/components/UiLock.js +15 -0
- package/dist/icons/components/UiLock.js.map +1 -0
- package/dist/icons/components/UiLockOpen.cjs +15 -0
- package/dist/icons/components/UiLockOpen.cjs.map +1 -0
- package/dist/icons/components/UiLockOpen.d.ts +15 -0
- package/dist/icons/components/UiLockOpen.d.ts.map +1 -0
- package/dist/icons/components/UiLockOpen.js +15 -0
- package/dist/icons/components/UiLockOpen.js.map +1 -0
- package/dist/icons/components/UiMagicWand.cjs +15 -0
- package/dist/icons/components/UiMagicWand.cjs.map +1 -0
- package/dist/icons/components/UiMagicWand.d.ts +15 -0
- package/dist/icons/components/UiMagicWand.d.ts.map +1 -0
- package/dist/icons/components/UiMagicWand.js +15 -0
- package/dist/icons/components/UiMagicWand.js.map +1 -0
- package/dist/icons/components/UiMarkdown.cjs +13 -0
- package/dist/icons/components/UiMarkdown.cjs.map +1 -0
- package/dist/icons/components/UiMarkdown.d.ts +9 -0
- package/dist/icons/components/UiMarkdown.d.ts.map +1 -0
- package/dist/icons/components/UiMarkdown.js +13 -0
- package/dist/icons/components/UiMarkdown.js.map +1 -0
- package/dist/icons/components/UiMemoryStick.cjs +13 -0
- package/dist/icons/components/UiMemoryStick.cjs.map +1 -0
- package/dist/icons/components/UiMemoryStick.d.ts +9 -0
- package/dist/icons/components/UiMemoryStick.d.ts.map +1 -0
- package/dist/icons/components/UiMemoryStick.js +13 -0
- package/dist/icons/components/UiMemoryStick.js.map +1 -0
- package/dist/icons/components/UiMenu.cjs +15 -0
- package/dist/icons/components/UiMenu.cjs.map +1 -0
- package/dist/icons/components/UiMenu.d.ts +15 -0
- package/dist/icons/components/UiMenu.d.ts.map +1 -0
- package/dist/icons/components/UiMenu.js +15 -0
- package/dist/icons/components/UiMenu.js.map +1 -0
- package/dist/icons/components/UiMethod.cjs +13 -0
- package/dist/icons/components/UiMethod.cjs.map +1 -0
- package/dist/icons/components/UiMethod.d.ts +9 -0
- package/dist/icons/components/UiMethod.d.ts.map +1 -0
- package/dist/icons/components/UiMethod.js +13 -0
- package/dist/icons/components/UiMethod.js.map +1 -0
- package/dist/icons/components/UiModule.cjs +14 -0
- package/dist/icons/components/UiModule.cjs.map +1 -0
- package/dist/icons/components/UiModule.d.ts +9 -0
- package/dist/icons/components/UiModule.d.ts.map +1 -0
- package/dist/icons/components/UiModule.js +14 -0
- package/dist/icons/components/UiModule.js.map +1 -0
- package/dist/icons/components/UiMoon.cjs +15 -0
- package/dist/icons/components/UiMoon.cjs.map +1 -0
- package/dist/icons/components/UiMoon.d.ts +15 -0
- package/dist/icons/components/UiMoon.d.ts.map +1 -0
- package/dist/icons/components/UiMoon.js +15 -0
- package/dist/icons/components/UiMoon.js.map +1 -0
- package/dist/icons/components/UiNamespace.cjs +16 -0
- package/dist/icons/components/UiNamespace.cjs.map +1 -0
- package/dist/icons/components/UiNamespace.d.ts +9 -0
- package/dist/icons/components/UiNamespace.d.ts.map +1 -0
- package/dist/icons/components/UiNamespace.js +16 -0
- package/dist/icons/components/UiNamespace.js.map +1 -0
- package/dist/icons/components/UiNetwork.cjs +15 -0
- package/dist/icons/components/UiNetwork.cjs.map +1 -0
- package/dist/icons/components/UiNetwork.d.ts +15 -0
- package/dist/icons/components/UiNetwork.d.ts.map +1 -0
- package/dist/icons/components/UiNetwork.js +15 -0
- package/dist/icons/components/UiNetwork.js.map +1 -0
- package/dist/icons/components/UiNull.cjs +14 -0
- package/dist/icons/components/UiNull.cjs.map +1 -0
- package/dist/icons/components/UiNull.d.ts +9 -0
- package/dist/icons/components/UiNull.d.ts.map +1 -0
- package/dist/icons/components/UiNull.js +14 -0
- package/dist/icons/components/UiNull.js.map +1 -0
- package/dist/icons/components/UiNumeric.cjs +14 -0
- package/dist/icons/components/UiNumeric.cjs.map +1 -0
- package/dist/icons/components/UiNumeric.d.ts +9 -0
- package/dist/icons/components/UiNumeric.d.ts.map +1 -0
- package/dist/icons/components/UiNumeric.js +14 -0
- package/dist/icons/components/UiNumeric.js.map +1 -0
- package/dist/icons/components/UiObject.cjs +13 -0
- package/dist/icons/components/UiObject.cjs.map +1 -0
- package/dist/icons/components/UiObject.d.ts +9 -0
- package/dist/icons/components/UiObject.d.ts.map +1 -0
- package/dist/icons/components/UiObject.js +13 -0
- package/dist/icons/components/UiObject.js.map +1 -0
- package/dist/icons/components/UiOperator.cjs +10 -0
- package/dist/icons/components/UiOperator.cjs.map +1 -0
- package/dist/icons/components/UiOperator.d.ts +9 -0
- package/dist/icons/components/UiOperator.d.ts.map +1 -0
- package/dist/icons/components/UiOperator.js +10 -0
- package/dist/icons/components/UiOperator.js.map +1 -0
- package/dist/icons/components/UiOrganization.cjs +103 -0
- package/dist/icons/components/UiOrganization.cjs.map +1 -0
- package/dist/icons/components/UiOrganization.d.ts +63 -0
- package/dist/icons/components/UiOrganization.d.ts.map +1 -0
- package/dist/icons/components/UiOrganization.js +103 -0
- package/dist/icons/components/UiOrganization.js.map +1 -0
- package/dist/icons/components/UiPackage.cjs +15 -0
- package/dist/icons/components/UiPackage.cjs.map +1 -0
- package/dist/icons/components/UiPackage.d.ts +15 -0
- package/dist/icons/components/UiPackage.d.ts.map +1 -0
- package/dist/icons/components/UiPackage.js +15 -0
- package/dist/icons/components/UiPackage.js.map +1 -0
- package/dist/icons/components/UiParameter.cjs +13 -0
- package/dist/icons/components/UiParameter.cjs.map +1 -0
- package/dist/icons/components/UiParameter.d.ts +9 -0
- package/dist/icons/components/UiParameter.d.ts.map +1 -0
- package/dist/icons/components/UiParameter.js +13 -0
- package/dist/icons/components/UiParameter.js.map +1 -0
- package/dist/icons/components/UiPass.cjs +23 -0
- package/dist/icons/components/UiPass.cjs.map +1 -0
- package/dist/icons/components/UiPass.d.ts +17 -0
- package/dist/icons/components/UiPass.d.ts.map +1 -0
- package/dist/icons/components/UiPass.js +23 -0
- package/dist/icons/components/UiPass.js.map +1 -0
- package/dist/icons/components/UiPause.cjs +13 -0
- package/dist/icons/components/UiPause.cjs.map +1 -0
- package/dist/icons/components/UiPause.d.ts +9 -0
- package/dist/icons/components/UiPause.d.ts.map +1 -0
- package/dist/icons/components/UiPause.js +13 -0
- package/dist/icons/components/UiPause.js.map +1 -0
- package/dist/icons/components/UiPhone.cjs +15 -0
- package/dist/icons/components/UiPhone.cjs.map +1 -0
- package/dist/icons/components/UiPhone.d.ts +15 -0
- package/dist/icons/components/UiPhone.d.ts.map +1 -0
- package/dist/icons/components/UiPhone.js +15 -0
- package/dist/icons/components/UiPhone.js.map +1 -0
- package/dist/icons/components/UiPlay.cjs +10 -0
- package/dist/icons/components/UiPlay.cjs.map +1 -0
- package/dist/icons/components/UiPlay.d.ts +9 -0
- package/dist/icons/components/UiPlay.d.ts.map +1 -0
- package/dist/icons/components/UiPlay.js +10 -0
- package/dist/icons/components/UiPlay.js.map +1 -0
- package/dist/icons/components/UiPlayCircle.cjs +15 -0
- package/dist/icons/components/UiPlayCircle.cjs.map +1 -0
- package/dist/icons/components/UiPlayCircle.d.ts +15 -0
- package/dist/icons/components/UiPlayCircle.d.ts.map +1 -0
- package/dist/icons/components/UiPlayCircle.js +15 -0
- package/dist/icons/components/UiPlayCircle.js.map +1 -0
- package/dist/icons/components/UiPlaybook.cjs +10 -0
- package/dist/icons/components/UiPlaybook.cjs.map +1 -0
- package/dist/icons/components/UiPlaybook.d.ts +9 -0
- package/dist/icons/components/UiPlaybook.d.ts.map +1 -0
- package/dist/icons/components/UiPlaybook.js +10 -0
- package/dist/icons/components/UiPlaybook.js.map +1 -0
- package/dist/icons/components/UiPlug.cjs +10 -0
- package/dist/icons/components/UiPlug.cjs.map +1 -0
- package/dist/icons/components/UiPlug.d.ts +9 -0
- package/dist/icons/components/UiPlug.d.ts.map +1 -0
- package/dist/icons/components/UiPlug.js +10 -0
- package/dist/icons/components/UiPlug.js.map +1 -0
- package/dist/icons/components/UiProperty.cjs +13 -0
- package/dist/icons/components/UiProperty.cjs.map +1 -0
- package/dist/icons/components/UiProperty.d.ts +9 -0
- package/dist/icons/components/UiProperty.d.ts.map +1 -0
- package/dist/icons/components/UiProperty.js +13 -0
- package/dist/icons/components/UiProperty.js.map +1 -0
- package/dist/icons/components/UiPulse.cjs +15 -0
- package/dist/icons/components/UiPulse.cjs.map +1 -0
- package/dist/icons/components/UiPulse.d.ts +15 -0
- package/dist/icons/components/UiPulse.d.ts.map +1 -0
- package/dist/icons/components/UiPulse.js +15 -0
- package/dist/icons/components/UiPulse.js.map +1 -0
- package/dist/icons/components/UiPuzzle.cjs +15 -0
- package/dist/icons/components/UiPuzzle.cjs.map +1 -0
- package/dist/icons/components/UiPuzzle.d.ts +15 -0
- package/dist/icons/components/UiPuzzle.d.ts.map +1 -0
- package/dist/icons/components/UiPuzzle.js +15 -0
- package/dist/icons/components/UiPuzzle.js.map +1 -0
- package/dist/icons/components/UiQuestion.cjs +15 -0
- package/dist/icons/components/UiQuestion.cjs.map +1 -0
- package/dist/icons/components/UiQuestion.d.ts +15 -0
- package/dist/icons/components/UiQuestion.d.ts.map +1 -0
- package/dist/icons/components/UiQuestion.js +15 -0
- package/dist/icons/components/UiQuestion.js.map +1 -0
- package/dist/icons/components/UiQueue.cjs +15 -0
- package/dist/icons/components/UiQueue.cjs.map +1 -0
- package/dist/icons/components/UiQueue.d.ts +15 -0
- package/dist/icons/components/UiQueue.d.ts.map +1 -0
- package/dist/icons/components/UiQueue.js +15 -0
- package/dist/icons/components/UiQueue.js.map +1 -0
- package/dist/icons/components/UiRecord.cjs +13 -0
- package/dist/icons/components/UiRecord.cjs.map +1 -0
- package/dist/icons/components/UiRecord.d.ts +9 -0
- package/dist/icons/components/UiRecord.d.ts.map +1 -0
- package/dist/icons/components/UiRecord.js +13 -0
- package/dist/icons/components/UiRecord.js.map +1 -0
- package/dist/icons/components/UiRefresh.cjs +15 -0
- package/dist/icons/components/UiRefresh.cjs.map +1 -0
- package/dist/icons/components/UiRefresh.d.ts +15 -0
- package/dist/icons/components/UiRefresh.d.ts.map +1 -0
- package/dist/icons/components/UiRefresh.js +15 -0
- package/dist/icons/components/UiRefresh.js.map +1 -0
- package/dist/icons/components/UiRemove.cjs +15 -0
- package/dist/icons/components/UiRemove.cjs.map +1 -0
- package/dist/icons/components/UiRemove.d.ts +15 -0
- package/dist/icons/components/UiRemove.d.ts.map +1 -0
- package/dist/icons/components/UiRemove.js +15 -0
- package/dist/icons/components/UiRemove.js.map +1 -0
- package/dist/icons/components/UiResizeVertical.cjs +15 -0
- package/dist/icons/components/UiResizeVertical.cjs.map +1 -0
- package/dist/icons/components/UiResizeVertical.d.ts +15 -0
- package/dist/icons/components/UiResizeVertical.d.ts.map +1 -0
- package/dist/icons/components/UiResizeVertical.js +15 -0
- package/dist/icons/components/UiResizeVertical.js.map +1 -0
- package/dist/icons/components/UiRestart.cjs +10 -0
- package/dist/icons/components/UiRestart.cjs.map +1 -0
- package/dist/icons/components/UiRestart.d.ts +9 -0
- package/dist/icons/components/UiRestart.d.ts.map +1 -0
- package/dist/icons/components/UiRestart.js +10 -0
- package/dist/icons/components/UiRestart.js.map +1 -0
- package/dist/icons/components/UiRobotAi.cjs +15 -0
- package/dist/icons/components/UiRobotAi.cjs.map +1 -0
- package/dist/icons/components/UiRobotAi.d.ts +15 -0
- package/dist/icons/components/UiRobotAi.d.ts.map +1 -0
- package/dist/icons/components/UiRobotAi.js +15 -0
- package/dist/icons/components/UiRobotAi.js.map +1 -0
- package/dist/icons/components/UiRocket.cjs +15 -0
- package/dist/icons/components/UiRocket.cjs.map +1 -0
- package/dist/icons/components/UiRocket.d.ts +15 -0
- package/dist/icons/components/UiRocket.d.ts.map +1 -0
- package/dist/icons/components/UiRocket.js +15 -0
- package/dist/icons/components/UiRocket.js.map +1 -0
- package/dist/icons/components/UiRoute.cjs +15 -0
- package/dist/icons/components/UiRoute.cjs.map +1 -0
- package/dist/icons/components/UiRoute.d.ts +15 -0
- package/dist/icons/components/UiRoute.d.ts.map +1 -0
- package/dist/icons/components/UiRoute.js +15 -0
- package/dist/icons/components/UiRoute.js.map +1 -0
- package/dist/icons/components/UiRows.cjs +15 -0
- package/dist/icons/components/UiRows.cjs.map +1 -0
- package/dist/icons/components/UiRows.d.ts +15 -0
- package/dist/icons/components/UiRows.d.ts.map +1 -0
- package/dist/icons/components/UiRows.js +15 -0
- package/dist/icons/components/UiRows.js.map +1 -0
- package/dist/icons/components/UiSave.cjs +15 -0
- package/dist/icons/components/UiSave.cjs.map +1 -0
- package/dist/icons/components/UiSave.d.ts +15 -0
- package/dist/icons/components/UiSave.d.ts.map +1 -0
- package/dist/icons/components/UiSave.js +15 -0
- package/dist/icons/components/UiSave.js.map +1 -0
- package/dist/icons/components/UiScale.cjs +13 -0
- package/dist/icons/components/UiScale.cjs.map +1 -0
- package/dist/icons/components/UiScale.d.ts +9 -0
- package/dist/icons/components/UiScale.d.ts.map +1 -0
- package/dist/icons/components/UiScale.js +13 -0
- package/dist/icons/components/UiScale.js.map +1 -0
- package/dist/icons/components/UiSealCheck.cjs +15 -0
- package/dist/icons/components/UiSealCheck.cjs.map +1 -0
- package/dist/icons/components/UiSealCheck.d.ts +15 -0
- package/dist/icons/components/UiSealCheck.d.ts.map +1 -0
- package/dist/icons/components/UiSealCheck.js +15 -0
- package/dist/icons/components/UiSealCheck.js.map +1 -0
- package/dist/icons/components/UiSearch.cjs +10 -0
- package/dist/icons/components/UiSearch.cjs.map +1 -0
- package/dist/icons/components/UiSearch.d.ts +9 -0
- package/dist/icons/components/UiSearch.d.ts.map +1 -0
- package/dist/icons/components/UiSearch.js +10 -0
- package/dist/icons/components/UiSearch.js.map +1 -0
- package/dist/icons/components/UiSelect.cjs +15 -0
- package/dist/icons/components/UiSelect.cjs.map +1 -0
- package/dist/icons/components/UiSelect.d.ts +15 -0
- package/dist/icons/components/UiSelect.d.ts.map +1 -0
- package/dist/icons/components/UiSelect.js +15 -0
- package/dist/icons/components/UiSelect.js.map +1 -0
- package/dist/icons/components/UiServer.cjs +10 -0
- package/dist/icons/components/UiServer.cjs.map +1 -0
- package/dist/icons/components/UiServer.d.ts +9 -0
- package/dist/icons/components/UiServer.d.ts.map +1 -0
- package/dist/icons/components/UiServer.js +10 -0
- package/dist/icons/components/UiServer.js.map +1 -0
- package/dist/icons/components/UiServerProcess.cjs +15 -0
- package/dist/icons/components/UiServerProcess.cjs.map +1 -0
- package/dist/icons/components/UiServerProcess.d.ts +15 -0
- package/dist/icons/components/UiServerProcess.d.ts.map +1 -0
- package/dist/icons/components/UiServerProcess.js +15 -0
- package/dist/icons/components/UiServerProcess.js.map +1 -0
- package/dist/icons/components/UiSeverityBlocker.cjs +23 -0
- package/dist/icons/components/UiSeverityBlocker.cjs.map +1 -0
- package/dist/icons/components/UiSeverityBlocker.d.ts +17 -0
- package/dist/icons/components/UiSeverityBlocker.d.ts.map +1 -0
- package/dist/icons/components/UiSeverityBlocker.js +23 -0
- package/dist/icons/components/UiSeverityBlocker.js.map +1 -0
- package/dist/icons/components/UiSeverityCritical.cjs +23 -0
- package/dist/icons/components/UiSeverityCritical.cjs.map +1 -0
- package/dist/icons/components/UiSeverityCritical.d.ts +17 -0
- package/dist/icons/components/UiSeverityCritical.d.ts.map +1 -0
- package/dist/icons/components/UiSeverityCritical.js +23 -0
- package/dist/icons/components/UiSeverityCritical.js.map +1 -0
- package/dist/icons/components/UiSeverityHigh.cjs +23 -0
- package/dist/icons/components/UiSeverityHigh.cjs.map +1 -0
- package/dist/icons/components/UiSeverityHigh.d.ts +17 -0
- package/dist/icons/components/UiSeverityHigh.d.ts.map +1 -0
- package/dist/icons/components/UiSeverityHigh.js +23 -0
- package/dist/icons/components/UiSeverityHigh.js.map +1 -0
- package/dist/icons/components/UiSeverityInfo.cjs +23 -0
- package/dist/icons/components/UiSeverityInfo.cjs.map +1 -0
- package/dist/icons/components/UiSeverityInfo.d.ts +17 -0
- package/dist/icons/components/UiSeverityInfo.d.ts.map +1 -0
- package/dist/icons/components/UiSeverityInfo.js +23 -0
- package/dist/icons/components/UiSeverityInfo.js.map +1 -0
- package/dist/icons/components/UiSeverityLow.cjs +23 -0
- package/dist/icons/components/UiSeverityLow.cjs.map +1 -0
- package/dist/icons/components/UiSeverityLow.d.ts +17 -0
- package/dist/icons/components/UiSeverityLow.d.ts.map +1 -0
- package/dist/icons/components/UiSeverityLow.js +23 -0
- package/dist/icons/components/UiSeverityLow.js.map +1 -0
- package/dist/icons/components/UiSeverityMedium.cjs +23 -0
- package/dist/icons/components/UiSeverityMedium.cjs.map +1 -0
- package/dist/icons/components/UiSeverityMedium.d.ts +17 -0
- package/dist/icons/components/UiSeverityMedium.d.ts.map +1 -0
- package/dist/icons/components/UiSeverityMedium.js +23 -0
- package/dist/icons/components/UiSeverityMedium.js.map +1 -0
- package/dist/icons/components/UiSeverityWarning.cjs +23 -0
- package/dist/icons/components/UiSeverityWarning.cjs.map +1 -0
- package/dist/icons/components/UiSeverityWarning.d.ts +17 -0
- package/dist/icons/components/UiSeverityWarning.d.ts.map +1 -0
- package/dist/icons/components/UiSeverityWarning.js +23 -0
- package/dist/icons/components/UiSeverityWarning.js.map +1 -0
- package/dist/icons/components/UiShare.cjs +15 -0
- package/dist/icons/components/UiShare.cjs.map +1 -0
- package/dist/icons/components/UiShare.d.ts +15 -0
- package/dist/icons/components/UiShare.d.ts.map +1 -0
- package/dist/icons/components/UiShare.js +15 -0
- package/dist/icons/components/UiShare.js.map +1 -0
- package/dist/icons/components/UiShield.cjs +127 -0
- package/dist/icons/components/UiShield.cjs.map +1 -0
- package/dist/icons/components/UiShield.d.ts +99 -0
- package/dist/icons/components/UiShield.d.ts.map +1 -0
- package/dist/icons/components/UiShield.js +127 -0
- package/dist/icons/components/UiShield.js.map +1 -0
- package/dist/icons/components/UiShipWheel.cjs +14 -0
- package/dist/icons/components/UiShipWheel.cjs.map +1 -0
- package/dist/icons/components/UiShipWheel.d.ts +9 -0
- package/dist/icons/components/UiShipWheel.d.ts.map +1 -0
- package/dist/icons/components/UiShipWheel.js +14 -0
- package/dist/icons/components/UiShipWheel.js.map +1 -0
- package/dist/icons/components/UiSidebar.cjs +15 -0
- package/dist/icons/components/UiSidebar.cjs.map +1 -0
- package/dist/icons/components/UiSidebar.d.ts +15 -0
- package/dist/icons/components/UiSidebar.d.ts.map +1 -0
- package/dist/icons/components/UiSidebar.js +15 -0
- package/dist/icons/components/UiSidebar.js.map +1 -0
- package/dist/icons/components/UiSigma.cjs +10 -0
- package/dist/icons/components/UiSigma.cjs.map +1 -0
- package/dist/icons/components/UiSigma.d.ts +9 -0
- package/dist/icons/components/UiSigma.d.ts.map +1 -0
- package/dist/icons/components/UiSigma.js +10 -0
- package/dist/icons/components/UiSigma.js.map +1 -0
- package/dist/icons/components/UiSignIn.cjs +15 -0
- package/dist/icons/components/UiSignIn.cjs.map +1 -0
- package/dist/icons/components/UiSignIn.d.ts +15 -0
- package/dist/icons/components/UiSignIn.d.ts.map +1 -0
- package/dist/icons/components/UiSignIn.js +15 -0
- package/dist/icons/components/UiSignIn.js.map +1 -0
- package/dist/icons/components/UiSignOut.cjs +15 -0
- package/dist/icons/components/UiSignOut.cjs.map +1 -0
- package/dist/icons/components/UiSignOut.d.ts +15 -0
- package/dist/icons/components/UiSignOut.d.ts.map +1 -0
- package/dist/icons/components/UiSignOut.js +15 -0
- package/dist/icons/components/UiSignOut.js.map +1 -0
- package/dist/icons/components/UiSiren.cjs +23 -0
- package/dist/icons/components/UiSiren.cjs.map +1 -0
- package/dist/icons/components/UiSiren.d.ts +17 -0
- package/dist/icons/components/UiSiren.d.ts.map +1 -0
- package/dist/icons/components/UiSiren.js +23 -0
- package/dist/icons/components/UiSiren.js.map +1 -0
- package/dist/icons/components/UiSkipForward.cjs +15 -0
- package/dist/icons/components/UiSkipForward.cjs.map +1 -0
- package/dist/icons/components/UiSkipForward.d.ts +15 -0
- package/dist/icons/components/UiSkipForward.d.ts.map +1 -0
- package/dist/icons/components/UiSkipForward.js +15 -0
- package/dist/icons/components/UiSkipForward.js.map +1 -0
- package/dist/icons/components/UiSkull.cjs +23 -0
- package/dist/icons/components/UiSkull.cjs.map +1 -0
- package/dist/icons/components/UiSkull.d.ts +17 -0
- package/dist/icons/components/UiSkull.d.ts.map +1 -0
- package/dist/icons/components/UiSkull.js +23 -0
- package/dist/icons/components/UiSkull.js.map +1 -0
- package/dist/icons/components/UiSliders.cjs +15 -0
- package/dist/icons/components/UiSliders.cjs.map +1 -0
- package/dist/icons/components/UiSliders.d.ts +15 -0
- package/dist/icons/components/UiSliders.d.ts.map +1 -0
- package/dist/icons/components/UiSliders.js +15 -0
- package/dist/icons/components/UiSliders.js.map +1 -0
- package/dist/icons/components/UiSparkles.cjs +15 -0
- package/dist/icons/components/UiSparkles.cjs.map +1 -0
- package/dist/icons/components/UiSparkles.d.ts +15 -0
- package/dist/icons/components/UiSparkles.d.ts.map +1 -0
- package/dist/icons/components/UiSparkles.js +15 -0
- package/dist/icons/components/UiSparkles.js.map +1 -0
- package/dist/icons/components/UiSpeaker.cjs +15 -0
- package/dist/icons/components/UiSpeaker.cjs.map +1 -0
- package/dist/icons/components/UiSpeaker.d.ts +15 -0
- package/dist/icons/components/UiSpeaker.d.ts.map +1 -0
- package/dist/icons/components/UiSpeaker.js +15 -0
- package/dist/icons/components/UiSpeaker.js.map +1 -0
- package/dist/icons/components/UiSqlArray.cjs +13 -0
- package/dist/icons/components/UiSqlArray.cjs.map +1 -0
- package/dist/icons/components/UiSqlArray.d.ts +9 -0
- package/dist/icons/components/UiSqlArray.d.ts.map +1 -0
- package/dist/icons/components/UiSqlArray.js +13 -0
- package/dist/icons/components/UiSqlArray.js.map +1 -0
- package/dist/icons/components/UiSqlColumn.cjs +13 -0
- package/dist/icons/components/UiSqlColumn.cjs.map +1 -0
- package/dist/icons/components/UiSqlColumn.d.ts +9 -0
- package/dist/icons/components/UiSqlColumn.d.ts.map +1 -0
- package/dist/icons/components/UiSqlColumn.js +13 -0
- package/dist/icons/components/UiSqlColumn.js.map +1 -0
- package/dist/icons/components/UiSqlConstraint.cjs +10 -0
- package/dist/icons/components/UiSqlConstraint.cjs.map +1 -0
- package/dist/icons/components/UiSqlConstraint.d.ts +9 -0
- package/dist/icons/components/UiSqlConstraint.d.ts.map +1 -0
- package/dist/icons/components/UiSqlConstraint.js +10 -0
- package/dist/icons/components/UiSqlConstraint.js.map +1 -0
- package/dist/icons/components/UiSqlDatabase.cjs +14 -0
- package/dist/icons/components/UiSqlDatabase.cjs.map +1 -0
- package/dist/icons/components/UiSqlDatabase.d.ts +9 -0
- package/dist/icons/components/UiSqlDatabase.d.ts.map +1 -0
- package/dist/icons/components/UiSqlDatabase.js +14 -0
- package/dist/icons/components/UiSqlDatabase.js.map +1 -0
- package/dist/icons/components/UiSqlForeignKey.cjs +13 -0
- package/dist/icons/components/UiSqlForeignKey.cjs.map +1 -0
- package/dist/icons/components/UiSqlForeignKey.d.ts +9 -0
- package/dist/icons/components/UiSqlForeignKey.d.ts.map +1 -0
- package/dist/icons/components/UiSqlForeignKey.js +13 -0
- package/dist/icons/components/UiSqlForeignKey.js.map +1 -0
- package/dist/icons/components/UiSqlFunction.cjs +13 -0
- package/dist/icons/components/UiSqlFunction.cjs.map +1 -0
- package/dist/icons/components/UiSqlFunction.d.ts +9 -0
- package/dist/icons/components/UiSqlFunction.d.ts.map +1 -0
- package/dist/icons/components/UiSqlFunction.js +13 -0
- package/dist/icons/components/UiSqlFunction.js.map +1 -0
- package/dist/icons/components/UiSqlIndex.cjs +13 -0
- package/dist/icons/components/UiSqlIndex.cjs.map +1 -0
- package/dist/icons/components/UiSqlIndex.d.ts +9 -0
- package/dist/icons/components/UiSqlIndex.d.ts.map +1 -0
- package/dist/icons/components/UiSqlIndex.js +13 -0
- package/dist/icons/components/UiSqlIndex.js.map +1 -0
- package/dist/icons/components/UiSqlPrimaryKey.cjs +13 -0
- package/dist/icons/components/UiSqlPrimaryKey.cjs.map +1 -0
- package/dist/icons/components/UiSqlPrimaryKey.d.ts +9 -0
- package/dist/icons/components/UiSqlPrimaryKey.d.ts.map +1 -0
- package/dist/icons/components/UiSqlPrimaryKey.js +13 -0
- package/dist/icons/components/UiSqlPrimaryKey.js.map +1 -0
- package/dist/icons/components/UiSqlQuery.cjs +10 -0
- package/dist/icons/components/UiSqlQuery.cjs.map +1 -0
- package/dist/icons/components/UiSqlQuery.d.ts +9 -0
- package/dist/icons/components/UiSqlQuery.d.ts.map +1 -0
- package/dist/icons/components/UiSqlQuery.js +10 -0
- package/dist/icons/components/UiSqlQuery.js.map +1 -0
- package/dist/icons/components/UiSqlSchema.cjs +13 -0
- package/dist/icons/components/UiSqlSchema.cjs.map +1 -0
- package/dist/icons/components/UiSqlSchema.d.ts +9 -0
- package/dist/icons/components/UiSqlSchema.d.ts.map +1 -0
- package/dist/icons/components/UiSqlSchema.js +13 -0
- package/dist/icons/components/UiSqlSchema.js.map +1 -0
- package/dist/icons/components/UiSqlSequence.cjs +14 -0
- package/dist/icons/components/UiSqlSequence.cjs.map +1 -0
- package/dist/icons/components/UiSqlSequence.d.ts +9 -0
- package/dist/icons/components/UiSqlSequence.d.ts.map +1 -0
- package/dist/icons/components/UiSqlSequence.js +14 -0
- package/dist/icons/components/UiSqlSequence.js.map +1 -0
- package/dist/icons/components/UiSqlStoredProc.cjs +13 -0
- package/dist/icons/components/UiSqlStoredProc.cjs.map +1 -0
- package/dist/icons/components/UiSqlStoredProc.d.ts +9 -0
- package/dist/icons/components/UiSqlStoredProc.d.ts.map +1 -0
- package/dist/icons/components/UiSqlStoredProc.js +13 -0
- package/dist/icons/components/UiSqlStoredProc.js.map +1 -0
- package/dist/icons/components/UiSqlTable.cjs +20 -0
- package/dist/icons/components/UiSqlTable.cjs.map +1 -0
- package/dist/icons/components/UiSqlTable.d.ts +15 -0
- package/dist/icons/components/UiSqlTable.d.ts.map +1 -0
- package/dist/icons/components/UiSqlTable.js +20 -0
- package/dist/icons/components/UiSqlTable.js.map +1 -0
- package/dist/icons/components/UiSqlTrigger.cjs +10 -0
- package/dist/icons/components/UiSqlTrigger.cjs.map +1 -0
- package/dist/icons/components/UiSqlTrigger.d.ts +9 -0
- package/dist/icons/components/UiSqlTrigger.d.ts.map +1 -0
- package/dist/icons/components/UiSqlTrigger.js +10 -0
- package/dist/icons/components/UiSqlTrigger.js.map +1 -0
- package/dist/icons/components/UiSqlView.cjs +15 -0
- package/dist/icons/components/UiSqlView.cjs.map +1 -0
- package/dist/icons/components/UiSqlView.d.ts +9 -0
- package/dist/icons/components/UiSqlView.d.ts.map +1 -0
- package/dist/icons/components/UiSqlView.js +15 -0
- package/dist/icons/components/UiSqlView.js.map +1 -0
- package/dist/icons/components/UiSquare.cjs +15 -0
- package/dist/icons/components/UiSquare.cjs.map +1 -0
- package/dist/icons/components/UiSquare.d.ts +15 -0
- package/dist/icons/components/UiSquare.d.ts.map +1 -0
- package/dist/icons/components/UiSquare.js +15 -0
- package/dist/icons/components/UiSquare.js.map +1 -0
- package/dist/icons/components/UiStackFrameDot.cjs +10 -0
- package/dist/icons/components/UiStackFrameDot.cjs.map +1 -0
- package/dist/icons/components/UiStackFrameDot.d.ts +9 -0
- package/dist/icons/components/UiStackFrameDot.d.ts.map +1 -0
- package/dist/icons/components/UiStackFrameDot.js +10 -0
- package/dist/icons/components/UiStackFrameDot.js.map +1 -0
- package/dist/icons/components/UiStar.cjs +15 -0
- package/dist/icons/components/UiStar.cjs.map +1 -0
- package/dist/icons/components/UiStar.d.ts +15 -0
- package/dist/icons/components/UiStar.d.ts.map +1 -0
- package/dist/icons/components/UiStar.js +15 -0
- package/dist/icons/components/UiStar.js.map +1 -0
- package/dist/icons/components/UiStop.cjs +10 -0
- package/dist/icons/components/UiStop.cjs.map +1 -0
- package/dist/icons/components/UiStop.d.ts +9 -0
- package/dist/icons/components/UiStop.d.ts.map +1 -0
- package/dist/icons/components/UiStop.js +10 -0
- package/dist/icons/components/UiStop.js.map +1 -0
- package/dist/icons/components/UiString.cjs +13 -0
- package/dist/icons/components/UiString.cjs.map +1 -0
- package/dist/icons/components/UiString.d.ts +9 -0
- package/dist/icons/components/UiString.d.ts.map +1 -0
- package/dist/icons/components/UiString.js +13 -0
- package/dist/icons/components/UiString.js.map +1 -0
- package/dist/icons/components/UiStruct.cjs +13 -0
- package/dist/icons/components/UiStruct.cjs.map +1 -0
- package/dist/icons/components/UiStruct.d.ts +9 -0
- package/dist/icons/components/UiStruct.d.ts.map +1 -0
- package/dist/icons/components/UiStruct.js +13 -0
- package/dist/icons/components/UiStruct.js.map +1 -0
- package/dist/icons/components/UiSun.cjs +15 -0
- package/dist/icons/components/UiSun.cjs.map +1 -0
- package/dist/icons/components/UiSun.d.ts +15 -0
- package/dist/icons/components/UiSun.d.ts.map +1 -0
- package/dist/icons/components/UiSun.js +15 -0
- package/dist/icons/components/UiSun.js.map +1 -0
- package/dist/icons/components/UiSwap.cjs +15 -0
- package/dist/icons/components/UiSwap.cjs.map +1 -0
- package/dist/icons/components/UiSwap.d.ts +9 -0
- package/dist/icons/components/UiSwap.d.ts.map +1 -0
- package/dist/icons/components/UiSwap.js +15 -0
- package/dist/icons/components/UiSwap.js.map +1 -0
- package/dist/icons/components/UiSync.cjs +10 -0
- package/dist/icons/components/UiSync.cjs.map +1 -0
- package/dist/icons/components/UiSync.d.ts +9 -0
- package/dist/icons/components/UiSync.d.ts.map +1 -0
- package/dist/icons/components/UiSync.js +10 -0
- package/dist/icons/components/UiSync.js.map +1 -0
- package/dist/icons/components/UiTable.cjs +15 -0
- package/dist/icons/components/UiTable.cjs.map +1 -0
- package/dist/icons/components/UiTable.d.ts +15 -0
- package/dist/icons/components/UiTable.d.ts.map +1 -0
- package/dist/icons/components/UiTable.js +15 -0
- package/dist/icons/components/UiTable.js.map +1 -0
- package/dist/icons/components/UiTableProperties.cjs +15 -0
- package/dist/icons/components/UiTableProperties.cjs.map +1 -0
- package/dist/icons/components/UiTableProperties.d.ts +15 -0
- package/dist/icons/components/UiTableProperties.d.ts.map +1 -0
- package/dist/icons/components/UiTableProperties.js +15 -0
- package/dist/icons/components/UiTableProperties.js.map +1 -0
- package/dist/icons/components/UiTag.cjs +15 -0
- package/dist/icons/components/UiTag.cjs.map +1 -0
- package/dist/icons/components/UiTag.d.ts +15 -0
- package/dist/icons/components/UiTag.d.ts.map +1 -0
- package/dist/icons/components/UiTag.js +15 -0
- package/dist/icons/components/UiTag.js.map +1 -0
- package/dist/icons/components/UiTerminal.cjs +15 -0
- package/dist/icons/components/UiTerminal.cjs.map +1 -0
- package/dist/icons/components/UiTerminal.d.ts +15 -0
- package/dist/icons/components/UiTerminal.d.ts.map +1 -0
- package/dist/icons/components/UiTerminal.js +15 -0
- package/dist/icons/components/UiTerminal.js.map +1 -0
- package/dist/icons/components/UiTest.cjs +13 -0
- package/dist/icons/components/UiTest.cjs.map +1 -0
- package/dist/icons/components/UiTest.d.ts +9 -0
- package/dist/icons/components/UiTest.d.ts.map +1 -0
- package/dist/icons/components/UiTest.js +13 -0
- package/dist/icons/components/UiTest.js.map +1 -0
- package/dist/icons/components/UiThumbsDown.cjs +15 -0
- package/dist/icons/components/UiThumbsDown.cjs.map +1 -0
- package/dist/icons/components/UiThumbsDown.d.ts +15 -0
- package/dist/icons/components/UiThumbsDown.d.ts.map +1 -0
- package/dist/icons/components/UiThumbsDown.js +15 -0
- package/dist/icons/components/UiThumbsDown.js.map +1 -0
- package/dist/icons/components/UiThumbsUp.cjs +15 -0
- package/dist/icons/components/UiThumbsUp.cjs.map +1 -0
- package/dist/icons/components/UiThumbsUp.d.ts +15 -0
- package/dist/icons/components/UiThumbsUp.d.ts.map +1 -0
- package/dist/icons/components/UiThumbsUp.js +15 -0
- package/dist/icons/components/UiThumbsUp.js.map +1 -0
- package/dist/icons/components/UiToggleOff.cjs +15 -0
- package/dist/icons/components/UiToggleOff.cjs.map +1 -0
- package/dist/icons/components/UiToggleOff.d.ts +15 -0
- package/dist/icons/components/UiToggleOff.d.ts.map +1 -0
- package/dist/icons/components/UiToggleOff.js +15 -0
- package/dist/icons/components/UiToggleOff.js.map +1 -0
- package/dist/icons/components/UiToggleOn.cjs +15 -0
- package/dist/icons/components/UiToggleOn.cjs.map +1 -0
- package/dist/icons/components/UiToggleOn.d.ts +15 -0
- package/dist/icons/components/UiToggleOn.d.ts.map +1 -0
- package/dist/icons/components/UiToggleOn.js +15 -0
- package/dist/icons/components/UiToggleOn.js.map +1 -0
- package/dist/icons/components/UiTrait.cjs +13 -0
- package/dist/icons/components/UiTrait.cjs.map +1 -0
- package/dist/icons/components/UiTrait.d.ts +9 -0
- package/dist/icons/components/UiTrait.d.ts.map +1 -0
- package/dist/icons/components/UiTrait.js +13 -0
- package/dist/icons/components/UiTrait.js.map +1 -0
- package/dist/icons/components/UiTrash.cjs +15 -0
- package/dist/icons/components/UiTrash.cjs.map +1 -0
- package/dist/icons/components/UiTrash.d.ts +15 -0
- package/dist/icons/components/UiTrash.d.ts.map +1 -0
- package/dist/icons/components/UiTrash.js +15 -0
- package/dist/icons/components/UiTrash.js.map +1 -0
- package/dist/icons/components/UiTrendDown.cjs +15 -0
- package/dist/icons/components/UiTrendDown.cjs.map +1 -0
- package/dist/icons/components/UiTrendDown.d.ts +15 -0
- package/dist/icons/components/UiTrendDown.d.ts.map +1 -0
- package/dist/icons/components/UiTrendDown.js +15 -0
- package/dist/icons/components/UiTrendDown.js.map +1 -0
- package/dist/icons/components/UiTrendUp.cjs +15 -0
- package/dist/icons/components/UiTrendUp.cjs.map +1 -0
- package/dist/icons/components/UiTrendUp.d.ts +15 -0
- package/dist/icons/components/UiTrendUp.d.ts.map +1 -0
- package/dist/icons/components/UiTrendUp.js +15 -0
- package/dist/icons/components/UiTrendUp.js.map +1 -0
- package/dist/icons/components/UiTypeAlias.cjs +15 -0
- package/dist/icons/components/UiTypeAlias.cjs.map +1 -0
- package/dist/icons/components/UiTypeAlias.d.ts +9 -0
- package/dist/icons/components/UiTypeAlias.d.ts.map +1 -0
- package/dist/icons/components/UiTypeAlias.js +15 -0
- package/dist/icons/components/UiTypeAlias.js.map +1 -0
- package/dist/icons/components/UiTypeParameter.cjs +14 -0
- package/dist/icons/components/UiTypeParameter.cjs.map +1 -0
- package/dist/icons/components/UiTypeParameter.d.ts +9 -0
- package/dist/icons/components/UiTypeParameter.d.ts.map +1 -0
- package/dist/icons/components/UiTypeParameter.js +14 -0
- package/dist/icons/components/UiTypeParameter.js.map +1 -0
- package/dist/icons/components/UiUnknown.cjs +13 -0
- package/dist/icons/components/UiUnknown.cjs.map +1 -0
- package/dist/icons/components/UiUnknown.d.ts +9 -0
- package/dist/icons/components/UiUnknown.d.ts.map +1 -0
- package/dist/icons/components/UiUnknown.js +13 -0
- package/dist/icons/components/UiUnknown.js.map +1 -0
- package/dist/icons/components/UiUpload.cjs +15 -0
- package/dist/icons/components/UiUpload.cjs.map +1 -0
- package/dist/icons/components/UiUpload.d.ts +15 -0
- package/dist/icons/components/UiUpload.d.ts.map +1 -0
- package/dist/icons/components/UiUpload.js +15 -0
- package/dist/icons/components/UiUpload.js.map +1 -0
- package/dist/icons/components/UiUser.cjs +81 -0
- package/dist/icons/components/UiUser.cjs.map +1 -0
- package/dist/icons/components/UiUser.d.ts +51 -0
- package/dist/icons/components/UiUser.d.ts.map +1 -0
- package/dist/icons/components/UiUser.js +81 -0
- package/dist/icons/components/UiUser.js.map +1 -0
- package/dist/icons/components/UiUserCircle.cjs +81 -0
- package/dist/icons/components/UiUserCircle.cjs.map +1 -0
- package/dist/icons/components/UiUserCircle.d.ts +51 -0
- package/dist/icons/components/UiUserCircle.d.ts.map +1 -0
- package/dist/icons/components/UiUserCircle.js +81 -0
- package/dist/icons/components/UiUserCircle.js.map +1 -0
- package/dist/icons/components/UiUserCog.cjs +14 -0
- package/dist/icons/components/UiUserCog.cjs.map +1 -0
- package/dist/icons/components/UiUserCog.d.ts +9 -0
- package/dist/icons/components/UiUserCog.d.ts.map +1 -0
- package/dist/icons/components/UiUserCog.js +14 -0
- package/dist/icons/components/UiUserCog.js.map +1 -0
- package/dist/icons/components/UiUsersThree.cjs +103 -0
- package/dist/icons/components/UiUsersThree.cjs.map +1 -0
- package/dist/icons/components/UiUsersThree.d.ts +63 -0
- package/dist/icons/components/UiUsersThree.d.ts.map +1 -0
- package/dist/icons/components/UiUsersThree.js +103 -0
- package/dist/icons/components/UiUsersThree.js.map +1 -0
- package/dist/icons/components/UiVariable.cjs +13 -0
- package/dist/icons/components/UiVariable.cjs.map +1 -0
- package/dist/icons/components/UiVariable.d.ts +9 -0
- package/dist/icons/components/UiVariable.d.ts.map +1 -0
- package/dist/icons/components/UiVariable.js +13 -0
- package/dist/icons/components/UiVariable.js.map +1 -0
- package/dist/icons/components/UiVideo.cjs +15 -0
- package/dist/icons/components/UiVideo.cjs.map +1 -0
- package/dist/icons/components/UiVideo.d.ts +15 -0
- package/dist/icons/components/UiVideo.d.ts.map +1 -0
- package/dist/icons/components/UiVideo.js +15 -0
- package/dist/icons/components/UiVideo.js.map +1 -0
- package/dist/icons/components/UiWarningCircle.cjs +23 -0
- package/dist/icons/components/UiWarningCircle.cjs.map +1 -0
- package/dist/icons/components/UiWarningCircle.d.ts +17 -0
- package/dist/icons/components/UiWarningCircle.d.ts.map +1 -0
- package/dist/icons/components/UiWarningCircle.js +23 -0
- package/dist/icons/components/UiWarningCircle.js.map +1 -0
- package/dist/icons/components/UiWarningTriangle.cjs +23 -0
- package/dist/icons/components/UiWarningTriangle.cjs.map +1 -0
- package/dist/icons/components/UiWarningTriangle.d.ts +17 -0
- package/dist/icons/components/UiWarningTriangle.d.ts.map +1 -0
- package/dist/icons/components/UiWarningTriangle.js +23 -0
- package/dist/icons/components/UiWarningTriangle.js.map +1 -0
- package/dist/icons/components/UiWatch.cjs +15 -0
- package/dist/icons/components/UiWatch.cjs.map +1 -0
- package/dist/icons/components/UiWatch.d.ts +15 -0
- package/dist/icons/components/UiWatch.d.ts.map +1 -0
- package/dist/icons/components/UiWatch.js +15 -0
- package/dist/icons/components/UiWatch.js.map +1 -0
- package/dist/icons/components/UiWorkflow.cjs +10 -0
- package/dist/icons/components/UiWorkflow.cjs.map +1 -0
- package/dist/icons/components/UiWorkflow.d.ts +9 -0
- package/dist/icons/components/UiWorkflow.d.ts.map +1 -0
- package/dist/icons/components/UiWorkflow.js +10 -0
- package/dist/icons/components/UiWorkflow.js.map +1 -0
- package/dist/icons/components/UiWrench.cjs +15 -0
- package/dist/icons/components/UiWrench.cjs.map +1 -0
- package/dist/icons/components/UiWrench.d.ts +15 -0
- package/dist/icons/components/UiWrench.d.ts.map +1 -0
- package/dist/icons/components/UiWrench.js +15 -0
- package/dist/icons/components/UiWrench.js.map +1 -0
- package/dist/icons/components/UiZap.cjs +15 -0
- package/dist/icons/components/UiZap.cjs.map +1 -0
- package/dist/icons/components/UiZap.d.ts +15 -0
- package/dist/icons/components/UiZap.d.ts.map +1 -0
- package/dist/icons/components/UiZap.js +15 -0
- package/dist/icons/components/UiZap.js.map +1 -0
- package/dist/icons/components/UiZoomIn.cjs +15 -0
- package/dist/icons/components/UiZoomIn.cjs.map +1 -0
- package/dist/icons/components/UiZoomIn.d.ts +15 -0
- package/dist/icons/components/UiZoomIn.d.ts.map +1 -0
- package/dist/icons/components/UiZoomIn.js +15 -0
- package/dist/icons/components/UiZoomIn.js.map +1 -0
- package/dist/icons/components/UiZoomOut.cjs +15 -0
- package/dist/icons/components/UiZoomOut.cjs.map +1 -0
- package/dist/icons/components/UiZoomOut.d.ts +15 -0
- package/dist/icons/components/UiZoomOut.d.ts.map +1 -0
- package/dist/icons/components/UiZoomOut.js +15 -0
- package/dist/icons/components/UiZoomOut.js.map +1 -0
- package/dist/icons/index.d.ts +493 -0
- package/dist/icons/index.d.ts.map +1 -0
- package/dist/icons/types.d.ts +21 -0
- package/dist/icons/types.d.ts.map +1 -0
- package/dist/icons.cjs +754 -0
- package/dist/icons.cjs.map +1 -0
- package/dist/icons.d.ts +2 -0
- package/dist/icons.d.ts.map +1 -0
- package/dist/icons.js +754 -0
- package/dist/icons.js.map +1 -0
- package/dist/index.cjs +966 -0
- package/dist/index.cjs.map +1 -0
- package/dist/index.js +773 -2
- package/dist/index.js.map +1 -1
- package/dist/layout/Section.cjs +81 -0
- package/dist/layout/Section.cjs.map +1 -0
- package/dist/layout/Section.d.ts +18 -2
- package/dist/layout/Section.d.ts.map +1 -1
- package/dist/layout/Section.js +11 -3
- package/dist/layout/Section.js.map +1 -1
- package/dist/layout/SplitPane.cjs +72 -0
- package/dist/layout/SplitPane.cjs.map +1 -0
- package/dist/layout/SplitPane.d.ts +8 -0
- package/dist/layout/SplitPane.d.ts.map +1 -1
- package/dist/layout/SplitPane.js.map +1 -1
- package/dist/lib/palette.cjs +35 -0
- package/dist/lib/palette.cjs.map +1 -0
- package/dist/lib/size.cjs +14 -0
- package/dist/lib/size.cjs.map +1 -0
- package/dist/lib/utils.cjs +9 -0
- package/dist/lib/utils.cjs.map +1 -0
- package/dist/overlay/DropdownMenu.cjs +98 -0
- package/dist/overlay/DropdownMenu.cjs.map +1 -0
- package/dist/overlay/DropdownMenu.d.ts +43 -0
- package/dist/overlay/DropdownMenu.d.ts.map +1 -0
- package/dist/overlay/DropdownMenu.js +98 -0
- package/dist/overlay/DropdownMenu.js.map +1 -0
- package/dist/overlay/HoverCard.cjs +170 -0
- package/dist/overlay/HoverCard.cjs.map +1 -0
- package/dist/overlay/HoverCard.d.ts +7 -0
- package/dist/overlay/HoverCard.d.ts.map +1 -1
- package/dist/overlay/HoverCard.js.map +1 -1
- package/dist/overlay/Modal.cjs +108 -0
- package/dist/overlay/Modal.cjs.map +1 -0
- package/dist/overlay/Modal.d.ts +14 -1
- package/dist/overlay/Modal.d.ts.map +1 -1
- package/dist/overlay/Modal.js +22 -5
- package/dist/overlay/Modal.js.map +1 -1
- package/dist/rpc/AcceptPicker.cjs +128 -0
- package/dist/rpc/AcceptPicker.cjs.map +1 -0
- package/dist/rpc/AcceptPicker.d.ts.map +1 -1
- package/dist/rpc/AcceptPicker.js +4 -2
- package/dist/rpc/AcceptPicker.js.map +1 -1
- package/dist/rpc/CommandForm.cjs +357 -0
- package/dist/rpc/CommandForm.cjs.map +1 -0
- package/dist/rpc/CommandForm.d.ts.map +1 -1
- package/dist/rpc/CommandForm.js +3 -2
- package/dist/rpc/CommandForm.js.map +1 -1
- package/dist/rpc/CommandOutput.cjs +203 -0
- package/dist/rpc/CommandOutput.cjs.map +1 -0
- package/dist/rpc/CommandOutput.d.ts +5 -1
- package/dist/rpc/CommandOutput.d.ts.map +1 -1
- package/dist/rpc/CommandOutput.js +12 -4
- package/dist/rpc/CommandOutput.js.map +1 -1
- package/dist/rpc/EndpointList.cjs +56 -0
- package/dist/rpc/EndpointList.cjs.map +1 -0
- package/dist/rpc/EntityExplorerApp.cjs +358 -0
- package/dist/rpc/EntityExplorerApp.cjs.map +1 -0
- package/dist/rpc/EntityExplorerApp.d.ts +3 -5
- package/dist/rpc/EntityExplorerApp.d.ts.map +1 -1
- package/dist/rpc/EntityExplorerApp.js +99 -23
- package/dist/rpc/EntityExplorerApp.js.map +1 -1
- package/dist/rpc/ExecutionResult.cjs +85 -0
- package/dist/rpc/ExecutionResult.cjs.map +1 -0
- package/dist/rpc/ExecutionResult.d.ts +10 -1
- package/dist/rpc/ExecutionResult.d.ts.map +1 -1
- package/dist/rpc/ExecutionResult.js +36 -2
- package/dist/rpc/ExecutionResult.js.map +1 -1
- package/dist/rpc/FilterForm.cjs +375 -0
- package/dist/rpc/FilterForm.cjs.map +1 -0
- package/dist/rpc/FilterForm.d.ts.map +1 -1
- package/dist/rpc/FilterForm.js +20 -37
- package/dist/rpc/FilterForm.js.map +1 -1
- package/dist/rpc/InlineError.cjs +49 -0
- package/dist/rpc/InlineError.cjs.map +1 -0
- package/dist/rpc/InlineError.d.ts.map +1 -1
- package/dist/rpc/InlineError.js +2 -7
- package/dist/rpc/InlineError.js.map +1 -1
- package/dist/rpc/OperationActionDialog.cjs +106 -0
- package/dist/rpc/OperationActionDialog.cjs.map +1 -0
- package/dist/rpc/OperationActionDialog.d.ts.map +1 -1
- package/dist/rpc/OperationActionDialog.js +2 -1
- package/dist/rpc/OperationActionDialog.js.map +1 -1
- package/dist/rpc/OperationCatalog.cjs +342 -0
- package/dist/rpc/OperationCatalog.cjs.map +1 -0
- package/dist/rpc/OperationCatalog.d.ts.map +1 -1
- package/dist/rpc/OperationCatalog.js +32 -29
- package/dist/rpc/OperationCatalog.js.map +1 -1
- package/dist/rpc/OperationCommandPage.cjs +476 -0
- package/dist/rpc/OperationCommandPage.cjs.map +1 -0
- package/dist/rpc/OperationCommandPage.d.ts.map +1 -1
- package/dist/rpc/OperationCommandPage.js +119 -127
- package/dist/rpc/OperationCommandPage.js.map +1 -1
- package/dist/rpc/OperationEntityPage.cjs +221 -0
- package/dist/rpc/OperationEntityPage.cjs.map +1 -0
- package/dist/rpc/OperationEntityPage.d.ts.map +1 -1
- package/dist/rpc/OperationEntityPage.js +4 -1
- package/dist/rpc/OperationEntityPage.js.map +1 -1
- package/dist/rpc/classify.cjs +76 -0
- package/dist/rpc/classify.cjs.map +1 -0
- package/dist/rpc/clickyMetadata.cjs +71 -0
- package/dist/rpc/clickyMetadata.cjs.map +1 -0
- package/dist/rpc/formMetadata.cjs +308 -0
- package/dist/rpc/formMetadata.cjs.map +1 -0
- package/dist/rpc/formMetadata.d.ts +11 -1
- package/dist/rpc/formMetadata.d.ts.map +1 -1
- package/dist/rpc/formMetadata.js +61 -3
- package/dist/rpc/formMetadata.js.map +1 -1
- package/dist/rpc/types.cjs +8 -0
- package/dist/rpc/types.cjs.map +1 -0
- package/dist/rpc/types.d.ts +14 -0
- package/dist/rpc/types.d.ts.map +1 -1
- package/dist/rpc/types.js.map +1 -1
- package/dist/rpc/useOperations.cjs +31 -0
- package/dist/rpc/useOperations.cjs.map +1 -0
- package/dist/rpc.cjs +39 -0
- package/dist/rpc.cjs.map +1 -0
- package/dist/rpc.d.ts +1 -0
- package/dist/rpc.d.ts.map +1 -1
- package/dist/rpc.js +2 -0
- package/dist/rpc.js.map +1 -1
- package/dist/styles.cjs +3 -0
- package/dist/styles.cjs.map +1 -0
- package/dist/styles.css +1 -1
- package/dist/tailwind-preset.cjs +65 -62
- package/dist/tailwind-preset.cjs.map +1 -1
- package/dist/utils.cjs +12 -0
- package/dist/utils.cjs.map +1 -0
- package/package.json +41 -27
- package/dist/api-explorer.d.ts +0 -5
- package/dist/api-explorer.d.ts.map +0 -1
- package/dist/api-explorer.js +0 -25
- package/dist/api-explorer.js.map +0 -1
- package/dist/rpc/ApiExplorer.d.ts +0 -11
- package/dist/rpc/ApiExplorer.d.ts.map +0 -1
- package/dist/rpc/ApiExplorer.js +0 -37
- package/dist/rpc/ApiExplorer.js.map +0 -1
- package/dist/tailwind-preset.d.cts +0 -6
- package/dist/tailwind-preset.d.cts.map +0 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"FilterBar.js","sources":["../../src/components/FilterBar.tsx"],"sourcesContent":["import {\n createContext,\n useContext,\n useEffect,\n useMemo,\n useRef,\n useState,\n type ReactNode,\n type RefObject,\n} from \"react\";\nimport { FilterPill, type FilterMode } from \"../data/FilterPill\";\nimport { Icon } from \"../data/Icon\";\nimport { cn } from \"../lib/utils\";\nimport { Button } from \"./button\";\nimport { DatePicker } from \"./DatePicker\";\nimport { DateTimePicker } from \"./DateTimePicker\";\nimport { MultiSelect, type MultiSelectOption } from \"./MultiSelect\";\nimport { RangeSlider } from \"./RangeSlider\";\nimport { Select } from \"./select\";\n\nconst FILTER_INPUT_DEBOUNCE_MS = 500;\n\n// When `autoSubmit` is false, debounced fields forward their draft value\n// immediately (no timer) so the consumer can accumulate state locally and\n// fire one request when Apply is clicked. When true (default) fields debounce\n// upstream, matching the live-filter behaviour used in trace/log UIs.\nconst FilterBarContext = createContext<{ autoSubmit: boolean }>({\n autoSubmit: true,\n});\n\nexport type FilterBarSearchProps = {\n value: string;\n onChange: (value: string) => void;\n placeholder?: string;\n ariaLabel?: string;\n className?: string;\n};\n\nexport type FilterBarTextFilter = {\n key: string;\n kind: \"text\";\n label: string;\n description?: string;\n value: string;\n onChange: (value: string) => void;\n placeholder?: string;\n disabled?: boolean;\n className?: string;\n};\n\nexport type FilterBarLookupOption = {\n value: string;\n label?: string;\n disabled?: boolean;\n title?: string;\n};\n\nexport type FilterBarLookupInputType = \"text\" | \"number\" | \"date\";\n\nexport type FilterBarLookupFilter = {\n key: string;\n kind: \"lookup\";\n label: string;\n description?: string;\n value: string;\n options: FilterBarLookupOption[];\n onChange: (value: string) => void;\n placeholder?: string;\n inputType?: FilterBarLookupInputType;\n disabled?: boolean;\n className?: string;\n};\n\nexport type FilterBarLookupMultiFilter = {\n key: string;\n kind: \"lookup-multi\";\n label: string;\n description?: string;\n value: string[];\n options: FilterBarLookupOption[];\n onChange: (value: string[]) => void;\n placeholder?: string;\n disabled?: boolean;\n className?: string;\n};\n\nexport type FilterBarMultiFilterMode = Extract<FilterMode, \"include\" | \"exclude\">;\n\nexport type FilterBarMultiFilter = {\n key: string;\n kind: \"multi\";\n label: string;\n description?: string;\n value: Record<string, FilterBarMultiFilterMode>;\n options: MultiSelectOption[];\n onChange: (value: Record<string, FilterBarMultiFilterMode>) => void;\n disabled?: boolean;\n className?: string;\n};\n\nexport type FilterBarNestedMultiGroup = {\n groupKey: string;\n label?: string;\n options: MultiSelectOption[];\n};\n\nexport type FilterBarNestedMultiFilter = {\n key: string;\n kind: \"nested-multi\";\n label: string;\n description?: string;\n // Same wire shape as FilterBarMultiFilter so consumers can swap kinds\n // without changing their state slot.\n value: Record<string, FilterBarMultiFilterMode>;\n groups: FilterBarNestedMultiGroup[];\n onChange: (value: Record<string, FilterBarMultiFilterMode>) => void;\n disabled?: boolean;\n className?: string;\n};\n\nexport type FilterBarSelectMultiFilter = {\n key: string;\n kind: \"select-multi\";\n label: string;\n description?: string;\n value: string[];\n options: MultiSelectOption[];\n onChange: (value: string[]) => void;\n placeholder?: string;\n disabled?: boolean;\n className?: string;\n};\n\nexport type FilterBarNumberValue = {\n min?: string;\n max?: string;\n};\n\nexport type FilterBarNumberFilter = {\n key: string;\n kind: \"number\";\n label: string;\n description?: string;\n value: FilterBarNumberValue;\n onChange: (value: FilterBarNumberValue) => void;\n domainMin?: number;\n domainMax?: number;\n step?: number;\n formatValue?: (value: number) => string;\n minPlaceholder?: string;\n maxPlaceholder?: string;\n disabled?: boolean;\n className?: string;\n};\n\nexport type FilterBarEnumFilter = {\n key: string;\n kind: \"enum\";\n label: string;\n description?: string;\n value: string;\n options: Array<{ value: string; label?: string }>;\n onChange: (value: string) => void;\n placeholder?: string;\n disabled?: boolean;\n className?: string;\n};\n\nexport type FilterBarBooleanFilter = {\n key: string;\n kind: \"boolean\";\n label: string;\n description?: string;\n value: boolean;\n onChange: (value: boolean) => void;\n disabled?: boolean;\n className?: string;\n};\n\nexport type FilterBarFilter =\n | FilterBarTextFilter\n | FilterBarLookupFilter\n | FilterBarLookupMultiFilter\n | FilterBarMultiFilter\n | FilterBarNestedMultiFilter\n | FilterBarSelectMultiFilter\n | FilterBarNumberFilter\n | FilterBarEnumFilter\n | FilterBarBooleanFilter;\n\nexport type FilterBarRangePreset = {\n label: string;\n from: string;\n to: string;\n};\n\nexport type FilterBarRangeProps = {\n from?: string;\n to?: string;\n onApply: (from: string, to: string) => void;\n presets?: FilterBarRangePreset[];\n fromPlaceholder?: string;\n toPlaceholder?: string;\n emptyLabel?: string;\n className?: string;\n};\n\nexport type FilterBarProps = {\n search?: FilterBarSearchProps;\n filters?: FilterBarFilter[];\n timeRange?: FilterBarRangeProps;\n dateRange?: FilterBarRangeProps;\n children?: ReactNode;\n leading?: ReactNode;\n trailing?: ReactNode;\n className?: string;\n // When false, debounced fields forward edits immediately (no timer) and\n // an Apply button is rendered in the trailing slot. The caller is expected\n // to accumulate field state and perform the side effect in `onApply`.\n // Defaults to true.\n autoSubmit?: boolean;\n onApply?: () => void;\n applyLabel?: string;\n isPending?: boolean;\n};\n\nexport function FilterBar({\n search,\n filters,\n timeRange,\n dateRange,\n children,\n leading,\n trailing,\n className,\n autoSubmit = true,\n onApply,\n applyLabel = \"Apply\",\n isPending = false,\n}: FilterBarProps) {\n const hasRangeControls = Boolean(timeRange || dateRange);\n const showApply = !autoSubmit && !!onApply;\n const contextValue = useMemo(() => ({ autoSubmit }), [autoSubmit]);\n\n return (\n <FilterBarContext.Provider value={contextValue}>\n <div\n className={cn(\n \"flex flex-wrap items-center gap-2 rounded-lg border border-input bg-background px-2 py-1.5 shadow-sm\",\n className,\n )}\n >\n {leading && <div className=\"flex items-center gap-2\">{leading}</div>}\n\n {search && <SearchField search={search} />}\n\n {children}\n\n {filters?.map((filter, index) => {\n const grow = !search && index === 0;\n\n if (filter.kind === \"lookup\") {\n return <LookupFilterField key={filter.key} filter={filter} grow={grow} />;\n }\n\n if (filter.kind === \"lookup-multi\") {\n return <LookupMultiFilterField key={filter.key} filter={filter} grow={grow} />;\n }\n\n if (filter.kind === \"multi\") {\n return <MultiFilterField key={filter.key} filter={filter} grow={grow} />;\n }\n\n if (filter.kind === \"nested-multi\") {\n return <NestedMultiFilterField key={filter.key} filter={filter} grow={grow} />;\n }\n\n if (filter.kind === \"select-multi\") {\n return <SelectMultiFilterField key={filter.key} filter={filter} grow={grow} />;\n }\n\n if (filter.kind === \"number\") {\n return <NumberFilterField key={filter.key} filter={filter} grow={grow} />;\n }\n\n if (filter.kind === \"enum\") {\n return <EnumFilterField key={filter.key} filter={filter} grow={grow} />;\n }\n\n if (filter.kind === \"boolean\") {\n return <BooleanFilterField key={filter.key} filter={filter} />;\n }\n\n return <TextFilterField key={filter.key} filter={filter} grow={grow} />;\n })}\n\n {(hasRangeControls || trailing || showApply) && (\n <div className=\"ml-auto flex flex-wrap items-center gap-2\">\n {dateRange && <RangeControlButton kind=\"date\" label=\"Date range\" {...dateRange} />}\n {timeRange && <RangeControlButton kind=\"time\" label=\"Time range\" {...timeRange} />}\n {trailing}\n {showApply && (\n <Button\n type=\"button\"\n variant=\"default\"\n size=\"sm\"\n disabled={isPending}\n onClick={onApply}\n >\n {isPending ? \"Loading…\" : applyLabel}\n </Button>\n )}\n </div>\n )}\n </div>\n </FilterBarContext.Provider>\n );\n}\n\ntype FilterBarFilterPanelChrome = \"full\" | \"embedded\";\n\nexport function FilterBarFilterPanel({\n filter,\n chrome = \"full\",\n}: {\n filter: FilterBarFilter;\n chrome?: FilterBarFilterPanelChrome;\n}) {\n const contextValue = useMemo(() => ({ autoSubmit: true }), []);\n\n return (\n <FilterBarContext.Provider value={contextValue}>\n {filter.kind === \"lookup\" && <LookupFilterField filter={filter} grow />}\n {filter.kind === \"lookup-multi\" && <LookupMultiFilterField filter={filter} grow />}\n {filter.kind === \"multi\" && <MultiFilterPanel filter={filter} chrome={chrome} />}\n {filter.kind === \"nested-multi\" && <NestedMultiFilterPanel filter={filter} chrome={chrome} />}\n {filter.kind === \"select-multi\" && <SelectMultiFilterField filter={filter} grow />}\n {filter.kind === \"number\" && <NumberFilterPanel filter={filter} chrome={chrome} />}\n {filter.kind === \"enum\" && <EnumFilterField filter={filter} grow />}\n {filter.kind === \"boolean\" && <BooleanFilterField filter={filter} />}\n {filter.kind === \"text\" && <TextFilterField filter={filter} grow />}\n </FilterBarContext.Provider>\n );\n}\n\nexport function FilterBarRangePanel({\n kind,\n label,\n from = \"\",\n to = \"\",\n onApply,\n presets: _presets,\n fromPlaceholder,\n toPlaceholder,\n emptyLabel: _emptyLabel,\n}: FilterBarRangeProps & { kind: \"date\" | \"time\"; label: string }) {\n const fromInputRef = useRef<HTMLInputElement>(null);\n const toInputRef = useRef<HTMLInputElement>(null);\n const [draftFrom, setDraftFrom] = useState(from);\n const [draftTo, setDraftTo] = useState(to);\n\n useEffect(() => {\n setDraftFrom(from);\n setDraftTo(to);\n }, [from, to]);\n\n function applyRange(nextFrom: string, nextTo: string) {\n onApply(\n kind === \"time\" ? normalizeDateMath(nextFrom) : nextFrom.trim(),\n kind === \"time\" ? normalizeDateMath(nextTo) : nextTo.trim(),\n );\n }\n\n return (\n <div className=\"w-72 text-popover-foreground\">\n <div className=\"p-3\">\n <div className=\"mb-2 text-[10px] font-medium uppercase tracking-wide text-muted-foreground\">\n {label}\n </div>\n <div className=\"grid grid-cols-2 gap-2\">\n <div className=\"flex flex-col gap-1\">\n <label className=\"text-[10px] text-muted-foreground\">From</label>\n <RangeInput\n inputRef={fromInputRef}\n kind={kind}\n ariaLabel={`${label} from`}\n placeholder={fromPlaceholder ?? (kind === \"date\" ? \"\" : \"now-24h\")}\n value={draftFrom}\n onChange={setDraftFrom}\n />\n </div>\n <div className=\"flex flex-col gap-1\">\n <label className=\"text-[10px] text-muted-foreground\">To</label>\n <RangeInput\n inputRef={toInputRef}\n kind={kind}\n ariaLabel={`${label} to`}\n placeholder={toPlaceholder ?? (kind === \"date\" ? \"\" : \"now\")}\n value={draftTo}\n onChange={setDraftTo}\n />\n </div>\n </div>\n <div className=\"mt-3 flex justify-end\">\n <Button\n type=\"button\"\n variant=\"default\"\n size=\"sm\"\n className=\"h-8 px-3 text-xs\"\n onClick={() => applyRange(draftFrom, draftTo)}\n >\n Apply\n </Button>\n </div>\n </div>\n </div>\n );\n}\n\nfunction EnumFilterField({ filter, grow }: { filter: FilterBarEnumFilter; grow: boolean }) {\n return (\n <label\n title={filter.description}\n className={cn(\n \"flex h-8 items-center gap-2 rounded-md border border-input bg-muted/30 pl-2 pr-1 text-xs\",\n grow ? \"min-w-[12rem] max-w-[18rem] flex-1\" : \"min-w-[11rem] max-w-[15rem] shrink-0\",\n filter.disabled && \"opacity-60\",\n filter.className,\n )}\n >\n <span className=\"whitespace-nowrap font-medium uppercase tracking-wide text-muted-foreground\">\n {filter.label}\n </span>\n <Select\n aria-label={filter.label}\n className=\"h-6 border-0 bg-transparent px-1 text-xs shadow-none focus-visible:ring-0\"\n value={filter.value}\n placeholder={filter.placeholder ?? `Any ${filter.label.toLowerCase()}`}\n disabled={filter.disabled}\n onChange={(event) => filter.onChange(event.target.value)}\n options={filter.options.map((option) => ({\n value: option.value,\n label: option.label ?? option.value,\n }))}\n />\n </label>\n );\n}\n\nfunction BooleanFilterField({ filter }: { filter: FilterBarBooleanFilter }) {\n return (\n <label\n title={filter.description}\n className={cn(\n \"flex h-8 shrink-0 items-center gap-2 rounded-md border border-input bg-muted/30 px-2 text-xs\",\n filter.disabled && \"opacity-60\",\n filter.className,\n )}\n >\n <input\n type=\"checkbox\"\n aria-label={filter.label}\n className=\"h-3.5 w-3.5 accent-primary\"\n checked={filter.value}\n disabled={filter.disabled}\n onChange={(event) => filter.onChange(event.target.checked)}\n />\n <span className=\"whitespace-nowrap font-medium uppercase tracking-wide text-muted-foreground\">\n {filter.label}\n </span>\n </label>\n );\n}\n\nfunction SearchField({ search }: { search: FilterBarSearchProps }) {\n const [draft, setDraft] = useDebouncedTextDraft(search.value, search.onChange);\n\n return (\n <div className=\"flex min-w-[14rem] max-w-[24rem] flex-1 items-center gap-2\">\n <label\n className={cn(\n \"flex h-8 min-w-0 flex-1 items-center rounded-md border border-input bg-background px-3 text-sm\",\n search.className,\n )}\n >\n {draft.trim() ? (\n <span className=\"mr-2 whitespace-nowrap text-[10px] font-medium uppercase tracking-wide text-muted-foreground\">\n {search.ariaLabel ?? \"Search\"}\n </span>\n ) : (\n <Icon name=\"codicon:search\" className=\"mr-2 shrink-0 text-muted-foreground\" />\n )}\n <input\n type=\"search\"\n aria-label={search.ariaLabel ?? search.placeholder ?? \"Search\"}\n className=\"w-full bg-transparent outline-none placeholder:text-muted-foreground\"\n placeholder={search.placeholder ?? \"Search…\"}\n value={draft}\n onChange={(event) => setDraft(event.target.value)}\n />\n </label>\n </div>\n );\n}\n\nfunction TextFilterField({ filter, grow }: { filter: FilterBarTextFilter; grow: boolean }) {\n const [draft, setDraft] = useDebouncedTextDraft(filter.value, filter.onChange);\n\n return (\n <label\n title={filter.description}\n className={cn(\n \"flex h-8 items-center gap-2 rounded-md border border-input bg-muted/30 pl-2 pr-2 text-xs\",\n grow ? \"min-w-[12rem] max-w-[18rem] flex-1\" : \"min-w-[11rem] max-w-[15rem] shrink-0\",\n filter.disabled && \"opacity-60\",\n filter.className,\n )}\n >\n <span className=\"whitespace-nowrap font-medium uppercase tracking-wide text-muted-foreground\">\n {filter.label}\n </span>\n <input\n type=\"text\"\n aria-label={filter.label}\n className=\"w-full min-w-0 bg-transparent text-sm text-foreground outline-none placeholder:text-muted-foreground disabled:cursor-not-allowed\"\n placeholder={filter.placeholder ?? \"Filter…\"}\n value={draft}\n disabled={filter.disabled}\n onChange={(event) => setDraft(event.target.value)}\n />\n </label>\n );\n}\n\nfunction LookupFilterField({ filter, grow }: { filter: FilterBarLookupFilter; grow: boolean }) {\n const [draft, setDraft] = useDebouncedTextDraft(filter.value, filter.onChange);\n const listId = `${filter.key}-lookup-options`;\n\n return (\n <label\n title={filter.description}\n className={cn(\n \"flex h-8 items-center gap-2 rounded-md border border-input bg-muted/30 pl-2 pr-2 text-xs\",\n grow ? \"min-w-[12rem] max-w-[18rem] flex-1\" : \"min-w-[11rem] max-w-[15rem] shrink-0\",\n filter.disabled && \"opacity-60\",\n filter.className,\n )}\n >\n <span className=\"whitespace-nowrap font-medium uppercase tracking-wide text-muted-foreground\">\n {filter.label}\n </span>\n {filter.inputType === \"date\" ? (\n <DateTimePicker\n aria-label={filter.label}\n className=\"w-full\"\n inputClassName=\"w-full min-w-0 border-0 bg-transparent px-0 pr-6 text-sm text-foreground shadow-none focus-visible:ring-0\"\n buttonClassName=\"right-0\"\n placeholder={filter.placeholder ?? \"Filter…\"}\n value={draft}\n list={listId}\n disabled={filter.disabled}\n onChange={setDraft}\n />\n ) : (\n <input\n type={filter.inputType === \"number\" ? \"number\" : \"text\"}\n aria-label={filter.label}\n className=\"w-full min-w-0 bg-transparent text-sm text-foreground outline-none placeholder:text-muted-foreground disabled:cursor-not-allowed\"\n placeholder={filter.placeholder ?? \"Filter…\"}\n value={draft}\n list={listId}\n disabled={filter.disabled}\n onChange={(event) => setDraft(event.target.value)}\n />\n )}\n <datalist id={listId}>\n {filter.options.map((option) => (\n <option\n key={option.value}\n value={option.value}\n label={option.label ?? option.value}\n disabled={option.disabled}\n />\n ))}\n </datalist>\n </label>\n );\n}\n\nfunction LookupMultiFilterField({\n filter,\n grow,\n}: {\n filter: FilterBarLookupMultiFilter;\n grow: boolean;\n}) {\n const [draft, setDraft] = useDebouncedTextDraft(filter.value.join(\", \"), (next) =>\n filter.onChange(parseLookupMultiValue(next)),\n );\n const listId = `${filter.key}-lookup-options`;\n\n return (\n <label\n title={filter.description}\n className={cn(\n \"flex h-8 items-center gap-2 rounded-md border border-input bg-muted/30 pl-2 pr-2 text-xs\",\n grow ? \"min-w-[12rem] max-w-[18rem] flex-1\" : \"min-w-[11rem] max-w-[15rem] shrink-0\",\n filter.disabled && \"opacity-60\",\n filter.className,\n )}\n >\n <span className=\"whitespace-nowrap font-medium uppercase tracking-wide text-muted-foreground\">\n {filter.label}\n </span>\n <input\n type=\"text\"\n aria-label={filter.label}\n className=\"w-full min-w-0 bg-transparent text-sm text-foreground outline-none placeholder:text-muted-foreground disabled:cursor-not-allowed\"\n placeholder={filter.placeholder ?? \"value-1, value-2\"}\n value={draft}\n list={listId}\n disabled={filter.disabled}\n onChange={(event) => setDraft(event.target.value)}\n />\n <datalist id={listId}>\n {filter.options.map((option) => (\n <option\n key={option.value}\n value={option.value}\n label={option.label ?? option.value}\n disabled={option.disabled}\n />\n ))}\n </datalist>\n </label>\n );\n}\n\nfunction NumberFilterField({ filter, grow }: { filter: FilterBarNumberFilter; grow: boolean }) {\n const rootRef = useRef<HTMLDivElement>(null);\n const triggerRef = useRef<HTMLButtonElement>(null);\n const [open, setOpen] = useState(false);\n\n useDismissablePopup(open, rootRef, triggerRef, () => setOpen(false));\n\n const bounds = resolveNumberFilterBounds(filter);\n const [draft, setDraft] = useDebouncedNumberDraft(filter.value, filter.onChange);\n const sliderMin = clampNumber(parseFilterNumber(draft.min) ?? bounds.min, bounds.min, bounds.max);\n const sliderMax = clampNumber(parseFilterNumber(draft.max) ?? bounds.max, bounds.min, bounds.max);\n const activeMin = Math.min(sliderMin, sliderMax);\n const activeMax = Math.max(sliderMin, sliderMax);\n const summary = summarizeNumberFilter(filter, bounds, draft);\n\n return (\n <div\n ref={rootRef}\n title={filter.description}\n className={cn(\n \"relative min-w-0\",\n grow ? \"min-w-[8rem] max-w-[12rem] flex-1\" : \"shrink-0\",\n filter.disabled && \"opacity-60\",\n filter.className,\n )}\n >\n <Button\n ref={triggerRef}\n type=\"button\"\n variant=\"outline\"\n size=\"sm\"\n aria-label={`${filter.label} filter`}\n aria-haspopup=\"dialog\"\n aria-expanded={open}\n disabled={filter.disabled}\n onClick={() => setOpen((current) => !current)}\n className={cn(\n \"min-w-0 gap-2 font-normal\",\n grow ? \"w-full max-w-[12rem] justify-between\" : \"w-auto max-w-[9.5rem] px-2.5\",\n summary === filter.label && \"text-muted-foreground\",\n )}\n >\n <span className=\"truncate\">{summary}</span>\n <Icon\n name={open ? \"codicon:chevron-up\" : \"codicon:chevron-down\"}\n className=\"text-muted-foreground\"\n />\n </Button>\n\n {open && (\n <div className=\"absolute left-0 top-[calc(100%+0.375rem)] z-50 min-w-[18rem] max-w-[22rem] rounded-md border border-border bg-popover p-3 text-popover-foreground shadow-lg shadow-black/5\">\n <div className=\"mb-3 flex items-center justify-between gap-2\">\n <div className=\"text-[10px] font-medium uppercase tracking-wide text-muted-foreground\">\n {filter.label}\n </div>\n <button\n type=\"button\"\n className=\"text-[10px] text-primary disabled:text-muted-foreground\"\n onClick={() => {\n setDraft({});\n filter.onChange({});\n }}\n disabled={!String(draft.min ?? \"\").trim() && !String(draft.max ?? \"\").trim()}\n >\n Clear all\n </button>\n </div>\n\n <div className=\"space-y-3\">\n <div className=\"space-y-2\">\n <div className=\"flex items-center justify-between text-[11px] text-muted-foreground\">\n <span>{formatNumberValue(bounds.min, filter)}</span>\n <span>{formatNumberValue(bounds.max, filter)}</span>\n </div>\n <div className=\"relative h-6\">\n <RangeSlider\n min={bounds.min}\n max={bounds.max}\n step={bounds.step}\n value={[activeMin, activeMax]}\n ariaLabelMin={`${filter.label} minimum slider`}\n ariaLabelMax={`${filter.label} maximum slider`}\n onChange={([nextMin, nextMax]) =>\n setDraft(numberFilterValueFromSlider([nextMin, nextMax], bounds))\n }\n />\n </div>\n </div>\n\n <div className=\"grid grid-cols-2 gap-2\">\n <div className=\"space-y-1\">\n <label className=\"text-[10px] text-muted-foreground\">Min</label>\n <input\n type=\"number\"\n inputMode=\"decimal\"\n step={bounds.step}\n aria-label={`${filter.label} minimum`}\n className=\"h-8 w-full rounded-md border border-input bg-background px-2 text-xs outline-none focus-visible:ring-2 focus-visible:ring-ring\"\n placeholder={filter.minPlaceholder ?? formatNumberValue(bounds.min, filter)}\n value={draft.min ?? \"\"}\n onChange={(event) =>\n setDraft(\n normalizeNumberFilterValue(\n { min: event.target.value, max: draft.max ?? \"\" },\n \"min-input\",\n ),\n )\n }\n />\n </div>\n <div className=\"space-y-1\">\n <label className=\"text-[10px] text-muted-foreground\">Max</label>\n <input\n type=\"number\"\n inputMode=\"decimal\"\n step={bounds.step}\n aria-label={`${filter.label} maximum`}\n className=\"h-8 w-full rounded-md border border-input bg-background px-2 text-xs outline-none focus-visible:ring-2 focus-visible:ring-ring\"\n placeholder={filter.maxPlaceholder ?? formatNumberValue(bounds.max, filter)}\n value={draft.max ?? \"\"}\n onChange={(event) =>\n setDraft(\n normalizeNumberFilterValue(\n { min: draft.min ?? \"\", max: event.target.value },\n \"max-input\",\n ),\n )\n }\n />\n </div>\n </div>\n </div>\n </div>\n )}\n </div>\n );\n}\n\nfunction NumberFilterPanel({\n filter,\n chrome = \"full\",\n}: {\n filter: FilterBarNumberFilter;\n chrome?: FilterBarFilterPanelChrome;\n}) {\n const bounds = resolveNumberFilterBounds(filter);\n const [draft, setDraft] = useDebouncedNumberDraft(filter.value, filter.onChange);\n const sliderMin = clampNumber(parseFilterNumber(draft.min) ?? bounds.min, bounds.min, bounds.max);\n const sliderMax = clampNumber(parseFilterNumber(draft.max) ?? bounds.max, bounds.min, bounds.max);\n const activeMin = Math.min(sliderMin, sliderMax);\n const activeMax = Math.max(sliderMin, sliderMax);\n const embedded = chrome === \"embedded\";\n\n return (\n <div\n data-filter-panel-chrome={chrome}\n className={cn(\n \"min-w-[18rem] max-w-[22rem] text-popover-foreground\",\n embedded\n ? \"p-0\"\n : \"rounded-md border border-border bg-popover p-3 shadow-sm shadow-black/5\",\n )}\n >\n {!embedded && (\n <div className=\"mb-3 flex items-center justify-between gap-2\">\n <div className=\"text-[10px] font-medium uppercase tracking-wide text-muted-foreground\">\n {filter.label}\n </div>\n <button\n type=\"button\"\n className=\"text-[10px] text-primary disabled:text-muted-foreground\"\n onClick={() => {\n setDraft({});\n filter.onChange({});\n }}\n disabled={!String(draft.min ?? \"\").trim() && !String(draft.max ?? \"\").trim()}\n >\n Clear all\n </button>\n </div>\n )}\n\n <div className=\"space-y-3\">\n <div className=\"space-y-2\">\n <div className=\"flex items-center justify-between text-[11px] text-muted-foreground\">\n <span>{formatNumberValue(bounds.min, filter)}</span>\n <span>{formatNumberValue(bounds.max, filter)}</span>\n </div>\n <div className=\"relative h-6\">\n <RangeSlider\n min={bounds.min}\n max={bounds.max}\n step={bounds.step}\n value={[activeMin, activeMax]}\n ariaLabelMin={`${filter.label} minimum slider`}\n ariaLabelMax={`${filter.label} maximum slider`}\n onChange={([nextMin, nextMax]) =>\n setDraft(numberFilterValueFromSlider([nextMin, nextMax], bounds))\n }\n />\n </div>\n </div>\n\n <div className=\"grid grid-cols-2 gap-2\">\n <div className=\"space-y-1\">\n <label className=\"text-[10px] text-muted-foreground\">Min</label>\n <input\n type=\"number\"\n inputMode=\"decimal\"\n step={bounds.step}\n aria-label={`${filter.label} minimum`}\n className=\"h-8 w-full rounded-md border border-input bg-background px-2 text-xs outline-none focus-visible:ring-2 focus-visible:ring-ring\"\n placeholder={filter.minPlaceholder ?? formatNumberValue(bounds.min, filter)}\n value={draft.min ?? \"\"}\n onChange={(event) =>\n setDraft(\n normalizeNumberFilterValue(\n { min: event.target.value, max: draft.max ?? \"\" },\n \"min-input\",\n ),\n )\n }\n />\n </div>\n <div className=\"space-y-1\">\n <label className=\"text-[10px] text-muted-foreground\">Max</label>\n <input\n type=\"number\"\n inputMode=\"decimal\"\n step={bounds.step}\n aria-label={`${filter.label} maximum`}\n className=\"h-8 w-full rounded-md border border-input bg-background px-2 text-xs outline-none focus-visible:ring-2 focus-visible:ring-ring\"\n placeholder={filter.maxPlaceholder ?? formatNumberValue(bounds.max, filter)}\n value={draft.max ?? \"\"}\n onChange={(event) =>\n setDraft(\n normalizeNumberFilterValue(\n { min: draft.min ?? \"\", max: event.target.value },\n \"max-input\",\n ),\n )\n }\n />\n </div>\n </div>\n </div>\n </div>\n );\n}\n\nfunction MultiFilterField({ filter, grow }: { filter: FilterBarMultiFilter; grow: boolean }) {\n const rootRef = useRef<HTMLDivElement>(null);\n const triggerRef = useRef<HTMLButtonElement>(null);\n const [open, setOpen] = useState(false);\n const [optionQuery, setOptionQuery] = useState(\"\");\n const [draft, setDraft] = useDebouncedMultiDraft(filter.value, filter.onChange);\n\n useDismissablePopup(open, rootRef, triggerRef, () => setOpen(false));\n\n const summary = summarizeMultiFilter(filter.label, draft);\n const showOptionFilter = filter.options.length > 7;\n const visibleOptions = useMemo(() => {\n const query = optionQuery.trim().toLowerCase();\n if (!query) return filter.options;\n return filter.options.filter((option) =>\n multiSelectOptionText(option).toLowerCase().includes(query),\n );\n }, [filter.options, optionQuery]);\n\n return (\n <div\n ref={rootRef}\n title={filter.description}\n className={cn(\n \"relative min-w-0\",\n grow ? \"min-w-[8rem] max-w-[12rem] flex-1\" : \"shrink-0\",\n filter.disabled && \"opacity-60\",\n filter.className,\n )}\n >\n <Button\n ref={triggerRef}\n type=\"button\"\n variant=\"outline\"\n size=\"sm\"\n aria-label={`${filter.label} filter`}\n aria-haspopup=\"dialog\"\n aria-expanded={open}\n disabled={filter.disabled}\n onClick={() => setOpen((current) => !current)}\n className={cn(\n \"min-w-0 gap-2 font-normal\",\n grow ? \"w-full max-w-[12rem] justify-between\" : \"w-auto max-w-[8.5rem] px-2.5\",\n summary === filter.label && \"text-muted-foreground\",\n )}\n >\n <span className=\"truncate\">{summary}</span>\n <Icon\n name={open ? \"codicon:chevron-up\" : \"codicon:chevron-down\"}\n className=\"text-muted-foreground\"\n />\n </Button>\n\n {open && (\n <div className=\"absolute left-0 top-[calc(100%+0.375rem)] z-50 min-w-[18rem] max-w-[22rem] rounded-md border border-border bg-popover p-2 text-popover-foreground shadow-lg shadow-black/5\">\n <div className=\"mb-2 flex items-center justify-between gap-2\">\n <div className=\"text-[10px] font-medium uppercase tracking-wide text-muted-foreground\">\n {filter.label}\n </div>\n <button\n type=\"button\"\n className=\"text-[10px] text-primary disabled:text-muted-foreground\"\n onClick={() => setDraft({})}\n disabled={Object.keys(draft).length === 0}\n >\n Clear all\n </button>\n </div>\n\n {showOptionFilter && (\n <div className=\"mb-2 flex items-center gap-2 rounded-md border border-input bg-background px-2\">\n <Icon name=\"codicon:search\" className=\"shrink-0 text-muted-foreground\" />\n <input\n type=\"search\"\n aria-label={`Filter ${filter.label} options`}\n className=\"h-8 min-w-0 flex-1 bg-transparent text-sm outline-none placeholder:text-muted-foreground\"\n placeholder={`Filter ${filter.label.toLowerCase()}`}\n value={optionQuery}\n onChange={(event) => setOptionQuery(event.target.value)}\n />\n </div>\n )}\n\n <div className=\"max-h-72 space-y-0.5 overflow-auto\">\n {visibleOptions.map((option) => {\n const mode = draft[option.value] ?? \"neutral\";\n const title = option.title ?? multiSelectOptionText(option);\n\n return (\n <div\n key={option.value}\n role=\"button\"\n tabIndex={0}\n data-filter-option={option.value}\n className=\"rounded-md px-1.5 py-0.5 hover:bg-accent/50 focus-visible:bg-accent/50 focus-visible:outline-none\"\n onClick={() =>\n setDraft(updateMultiFilterValue(draft, option.value, nextFilterMode(mode)))\n }\n onKeyDown={(event) => {\n if (event.key === \"Enter\" || event.key === \" \") {\n event.preventDefault();\n setDraft(updateMultiFilterValue(draft, option.value, nextFilterMode(mode)));\n }\n }}\n >\n <FilterPill\n className=\"w-full justify-between\"\n label={option.label}\n mode={mode}\n title={title}\n togglePosition=\"right\"\n onModeChange={(next) =>\n setDraft(updateMultiFilterValue(draft, option.value, next))\n }\n />\n </div>\n );\n })}\n {visibleOptions.length === 0 && (\n <div className=\"px-2 py-3 text-sm text-muted-foreground\">No options found</div>\n )}\n </div>\n </div>\n )}\n </div>\n );\n}\n\nfunction MultiFilterPanel({\n filter,\n chrome = \"full\",\n}: {\n filter: FilterBarMultiFilter;\n chrome?: FilterBarFilterPanelChrome;\n}) {\n const [optionQuery, setOptionQuery] = useState(\"\");\n const [draft, setDraft] = useDebouncedMultiDraft(filter.value, filter.onChange);\n const showOptionFilter = filter.options.length > 7;\n const embedded = chrome === \"embedded\";\n const visibleOptions = useMemo(() => {\n const query = optionQuery.trim().toLowerCase();\n if (!query) return filter.options;\n return filter.options.filter((option) =>\n multiSelectOptionText(option).toLowerCase().includes(query),\n );\n }, [filter.options, optionQuery]);\n\n return (\n <div\n data-filter-panel-chrome={chrome}\n className={cn(\n \"min-w-[18rem] max-w-[22rem] text-popover-foreground\",\n embedded\n ? \"p-0\"\n : \"rounded-md border border-border bg-popover p-2 shadow-sm shadow-black/5\",\n )}\n >\n {!embedded && (\n <div className=\"mb-2 flex items-center justify-between gap-2\">\n <div className=\"text-[10px] font-medium uppercase tracking-wide text-muted-foreground\">\n {filter.label}\n </div>\n <button\n type=\"button\"\n className=\"text-[10px] text-primary disabled:text-muted-foreground\"\n onClick={() => setDraft({})}\n disabled={Object.keys(draft).length === 0}\n >\n Clear all\n </button>\n </div>\n )}\n\n {showOptionFilter && (\n <div className=\"mb-2 flex items-center gap-2 rounded-md border border-input bg-background px-2\">\n <Icon name=\"codicon:search\" className=\"shrink-0 text-muted-foreground\" />\n <input\n type=\"search\"\n aria-label={`Filter ${filter.label} options`}\n className=\"h-8 min-w-0 flex-1 bg-transparent text-sm outline-none placeholder:text-muted-foreground\"\n placeholder={`Filter ${filter.label.toLowerCase()}`}\n value={optionQuery}\n onChange={(event) => setOptionQuery(event.target.value)}\n />\n </div>\n )}\n\n <div className=\"max-h-72 space-y-0.5 overflow-auto\">\n {visibleOptions.map((option) => {\n const mode = draft[option.value] ?? \"neutral\";\n const title = option.title ?? multiSelectOptionText(option);\n\n return (\n <div\n key={option.value}\n role=\"button\"\n tabIndex={0}\n data-filter-option={option.value}\n className=\"rounded-md px-1.5 py-0.5 hover:bg-accent/50 focus-visible:bg-accent/50 focus-visible:outline-none\"\n onClick={() =>\n setDraft(updateMultiFilterValue(draft, option.value, nextFilterMode(mode)))\n }\n onKeyDown={(event) => {\n if (event.key === \"Enter\" || event.key === \" \") {\n event.preventDefault();\n setDraft(updateMultiFilterValue(draft, option.value, nextFilterMode(mode)));\n }\n }}\n >\n <FilterPill\n className=\"w-full justify-between\"\n label={option.label}\n mode={mode}\n title={title}\n togglePosition=\"right\"\n onModeChange={(next) => setDraft(updateMultiFilterValue(draft, option.value, next))}\n />\n </div>\n );\n })}\n {visibleOptions.length === 0 && (\n <div className=\"px-2 py-3 text-sm text-muted-foreground\">No options found</div>\n )}\n </div>\n </div>\n );\n}\n\nfunction NestedMultiFilterPanel({\n filter,\n chrome = \"full\",\n}: {\n filter: FilterBarNestedMultiFilter;\n chrome?: FilterBarFilterPanelChrome;\n}) {\n const [activeGroup, setActiveGroup] = useState<string | null>(filter.groups[0]?.groupKey ?? null);\n const [draft, setDraft] = useDebouncedMultiDraft(filter.value, filter.onChange);\n const groups = filter.groups;\n const embedded = chrome === \"embedded\";\n const activeGroupData = useMemo(\n () => groups.find((group) => group.groupKey === activeGroup) ?? groups[0] ?? null,\n [groups, activeGroup],\n );\n\n const selectedByGroup = useMemo(() => {\n const counts: Record<string, number> = {};\n for (const group of groups) {\n let n = 0;\n for (const option of group.options) {\n if (draft[option.value]) n += 1;\n }\n counts[group.groupKey] = n;\n }\n return counts;\n }, [groups, draft]);\n\n const sortedGroups = useMemo(() => {\n const selected: typeof groups = [];\n const rest: typeof groups = [];\n for (const group of groups) {\n if ((selectedByGroup[group.groupKey] ?? 0) > 0) selected.push(group);\n else rest.push(group);\n }\n return [...selected, ...rest];\n }, [groups, selectedByGroup]);\n\n const clearGroup = (groupKey: string) => {\n const group = groups.find((g) => g.groupKey === groupKey);\n if (!group) return;\n const next = { ...draft };\n for (const option of group.options) {\n delete next[option.value];\n }\n setDraft(next);\n };\n\n return (\n <div role=\"dialog\" className=\"flex\">\n <div\n data-filter-panel-chrome={chrome}\n className={cn(\n \"min-w-[14rem] max-w-[16rem] text-popover-foreground\",\n embedded\n ? \"p-0\"\n : \"rounded-md border border-border bg-popover p-2 shadow-sm shadow-black/5\",\n )}\n >\n {!embedded && (\n <div className=\"mb-2 flex items-center justify-between gap-2\">\n <div className=\"text-[10px] font-medium uppercase tracking-wide text-muted-foreground\">\n {filter.label}\n </div>\n <button\n type=\"button\"\n className=\"text-[10px] text-primary disabled:text-muted-foreground\"\n onClick={() => setDraft({})}\n disabled={Object.keys(draft).length === 0}\n >\n Clear all\n </button>\n </div>\n )}\n\n <div className=\"max-h-72 space-y-0.5 overflow-auto\">\n {sortedGroups.map((group) => {\n const selected = selectedByGroup[group.groupKey] ?? 0;\n const isActive = group.groupKey === activeGroup;\n return (\n <div\n key={group.groupKey}\n role=\"button\"\n tabIndex={0}\n onMouseEnter={() => setActiveGroup(group.groupKey)}\n onFocus={() => setActiveGroup(group.groupKey)}\n onClick={() => setActiveGroup(group.groupKey)}\n onKeyDown={(event) => {\n if (event.key === \"Enter\" || event.key === \" \" || event.key === \"ArrowRight\") {\n event.preventDefault();\n setActiveGroup(group.groupKey);\n }\n }}\n className={cn(\n \"flex cursor-pointer items-center justify-between gap-2 rounded-md px-1.5 py-0.5 text-sm\",\n \"hover:bg-accent/50 focus-visible:bg-accent/50 focus-visible:outline-none\",\n isActive && \"bg-accent/60\",\n )}\n >\n <span className=\"min-w-0 flex-1 truncate\">{group.label ?? group.groupKey}</span>\n {selected > 0 && (\n <span className=\"rounded-full bg-primary/15 px-1.5 text-[10px] font-medium text-primary\">\n {selected}/{group.options.length}\n </span>\n )}\n <Icon name=\"codicon:chevron-right\" className=\"shrink-0 text-muted-foreground\" />\n </div>\n );\n })}\n {groups.length === 0 && (\n <div className=\"px-2 py-3 text-sm text-muted-foreground\">No groups</div>\n )}\n </div>\n </div>\n\n {activeGroupData && (\n <div\n onMouseEnter={() => setActiveGroup(activeGroupData.groupKey)}\n className=\"ml-1.5 min-w-[16rem] max-w-[20rem] rounded-md border border-border bg-popover p-2 text-popover-foreground shadow-sm shadow-black/5\"\n >\n <div className=\"mb-2 flex items-center justify-between gap-2\">\n <div className=\"text-[10px] font-medium uppercase tracking-wide text-muted-foreground\">\n {activeGroupData.label ?? activeGroupData.groupKey}\n </div>\n <button\n type=\"button\"\n className=\"text-[10px] text-primary disabled:text-muted-foreground\"\n onClick={() => clearGroup(activeGroupData.groupKey)}\n disabled={(selectedByGroup[activeGroupData.groupKey] ?? 0) === 0}\n >\n Clear\n </button>\n </div>\n\n <div className=\"max-h-72 space-y-0.5 overflow-auto\">\n {activeGroupData.options.map((option) => {\n const mode = draft[option.value] ?? \"neutral\";\n const title = option.title ?? multiSelectOptionText(option);\n return (\n <div\n key={option.value}\n role=\"button\"\n tabIndex={0}\n data-filter-option={option.value}\n className=\"rounded-md px-1.5 py-0.5 hover:bg-accent/50 focus-visible:bg-accent/50 focus-visible:outline-none\"\n onClick={() =>\n setDraft(updateMultiFilterValue(draft, option.value, nextFilterMode(mode)))\n }\n onKeyDown={(event) => {\n if (event.key === \"Enter\" || event.key === \" \") {\n event.preventDefault();\n setDraft(updateMultiFilterValue(draft, option.value, nextFilterMode(mode)));\n } else if (event.key === \"ArrowLeft\") {\n event.preventDefault();\n setActiveGroup(null);\n }\n }}\n >\n <FilterPill\n className=\"w-full justify-between\"\n label={renderNestedOptionLabel(option, activeGroupData.groupKey)}\n mode={mode}\n title={title}\n togglePosition=\"right\"\n onModeChange={(next) =>\n setDraft(updateMultiFilterValue(draft, option.value, next))\n }\n />\n </div>\n );\n })}\n {activeGroupData.options.length === 0 && (\n <div className=\"px-2 py-3 text-sm text-muted-foreground\">No values</div>\n )}\n </div>\n </div>\n )}\n </div>\n );\n}\n\nfunction multiSelectOptionText(option: MultiSelectOption) {\n const label = typeof option.label === \"string\" ? option.label : \"\";\n return [option.value, label, option.title ?? \"\"].filter(Boolean).join(\" \");\n}\n\nfunction NestedMultiFilterField({\n filter,\n grow,\n}: {\n filter: FilterBarNestedMultiFilter;\n grow: boolean;\n}) {\n const rootRef = useRef<HTMLDivElement>(null);\n const triggerRef = useRef<HTMLButtonElement>(null);\n const [open, setOpen] = useState(false);\n const [activeGroup, setActiveGroup] = useState<string | null>(null);\n const [draft, setDraft] = useDebouncedMultiDraft(filter.value, filter.onChange);\n\n useDismissablePopup(open, rootRef, triggerRef, () => {\n setOpen(false);\n setActiveGroup(null);\n });\n\n const summary = summarizeMultiFilter(filter.label, draft);\n const groups = filter.groups;\n const activeGroupData = useMemo(\n () => groups.find((group) => group.groupKey === activeGroup) ?? null,\n [groups, activeGroup],\n );\n\n // Selected count per group, used in the outer list.\n const selectedByGroup = useMemo(() => {\n const counts: Record<string, number> = {};\n for (const group of groups) {\n let n = 0;\n for (const option of group.options) {\n if (draft[option.value]) n += 1;\n }\n counts[group.groupKey] = n;\n }\n return counts;\n }, [groups, draft]);\n\n // Groups with active selections sort to the top so the user always sees\n // what's filtered without scrolling. Within each partition, the original\n // order from the consumer is preserved.\n const sortedGroups = useMemo(() => {\n const selected: typeof groups = [];\n const rest: typeof groups = [];\n for (const group of groups) {\n if ((selectedByGroup[group.groupKey] ?? 0) > 0) selected.push(group);\n else rest.push(group);\n }\n return [...selected, ...rest];\n }, [groups, selectedByGroup]);\n\n const clearGroup = (groupKey: string) => {\n const group = groups.find((g) => g.groupKey === groupKey);\n if (!group) return;\n const next = { ...draft };\n for (const option of group.options) {\n delete next[option.value];\n }\n setDraft(next);\n };\n\n return (\n <div\n ref={rootRef}\n title={filter.description}\n className={cn(\n \"relative min-w-0\",\n grow ? \"min-w-[8rem] max-w-[12rem] flex-1\" : \"shrink-0\",\n filter.disabled && \"opacity-60\",\n filter.className,\n )}\n >\n <Button\n ref={triggerRef}\n type=\"button\"\n variant=\"outline\"\n size=\"sm\"\n aria-label={`${filter.label} filter`}\n aria-haspopup=\"dialog\"\n aria-expanded={open}\n disabled={filter.disabled}\n onClick={() => {\n setOpen((current) => !current);\n if (open) setActiveGroup(null);\n }}\n className={cn(\n \"min-w-0 gap-2 font-normal\",\n grow ? \"w-full max-w-[12rem] justify-between\" : \"w-auto max-w-[8.5rem] px-2.5\",\n summary === filter.label && \"text-muted-foreground\",\n )}\n >\n <span className=\"truncate\">{summary}</span>\n <Icon\n name={open ? \"codicon:chevron-up\" : \"codicon:chevron-down\"}\n className=\"text-muted-foreground\"\n />\n </Button>\n\n {open && (\n <div\n role=\"dialog\"\n onKeyDown={(event) => {\n if (event.key === \"Escape\") {\n event.preventDefault();\n setOpen(false);\n setActiveGroup(null);\n }\n }}\n className=\"absolute left-0 top-[calc(100%+0.375rem)] z-50 flex\"\n >\n <div className=\"min-w-[14rem] max-w-[16rem] rounded-md border border-border bg-popover p-2 text-popover-foreground shadow-lg shadow-black/5\">\n <div className=\"mb-2 flex items-center justify-between gap-2\">\n <div className=\"text-[10px] font-medium uppercase tracking-wide text-muted-foreground\">\n {filter.label}\n </div>\n <button\n type=\"button\"\n className=\"text-[10px] text-primary disabled:text-muted-foreground\"\n onClick={() => setDraft({})}\n disabled={Object.keys(draft).length === 0}\n >\n Clear all\n </button>\n </div>\n\n <div className=\"max-h-72 space-y-0.5 overflow-auto\">\n {sortedGroups.map((group) => {\n const selected = selectedByGroup[group.groupKey] ?? 0;\n const isActive = group.groupKey === activeGroup;\n return (\n <div\n key={group.groupKey}\n role=\"button\"\n tabIndex={0}\n onMouseEnter={() => setActiveGroup(group.groupKey)}\n onFocus={() => setActiveGroup(group.groupKey)}\n onClick={() => setActiveGroup(group.groupKey)}\n onKeyDown={(event) => {\n if (\n event.key === \"Enter\" ||\n event.key === \" \" ||\n event.key === \"ArrowRight\"\n ) {\n event.preventDefault();\n setActiveGroup(group.groupKey);\n }\n }}\n className={cn(\n \"flex cursor-pointer items-center justify-between gap-2 rounded-md px-1.5 py-0.5 text-sm\",\n \"hover:bg-accent/50 focus-visible:bg-accent/50 focus-visible:outline-none\",\n isActive && \"bg-accent/60\",\n )}\n >\n <span className=\"min-w-0 flex-1 truncate\">{group.label ?? group.groupKey}</span>\n {selected > 0 && (\n <span className=\"rounded-full bg-primary/15 px-1.5 text-[10px] font-medium text-primary\">\n {selected}/{group.options.length}\n </span>\n )}\n <Icon name=\"codicon:chevron-right\" className=\"shrink-0 text-muted-foreground\" />\n </div>\n );\n })}\n {groups.length === 0 && (\n <div className=\"px-2 py-3 text-sm text-muted-foreground\">No groups</div>\n )}\n </div>\n </div>\n\n {activeGroupData && (\n <div\n onMouseEnter={() => setActiveGroup(activeGroupData.groupKey)}\n className=\"ml-1.5 min-w-[16rem] max-w-[20rem] rounded-md border border-border bg-popover p-2 text-popover-foreground shadow-lg shadow-black/5\"\n >\n <div className=\"mb-2 flex items-center justify-between gap-2\">\n <div className=\"text-[10px] font-medium uppercase tracking-wide text-muted-foreground\">\n {activeGroupData.label ?? activeGroupData.groupKey}\n </div>\n <button\n type=\"button\"\n className=\"text-[10px] text-primary disabled:text-muted-foreground\"\n onClick={() => clearGroup(activeGroupData.groupKey)}\n disabled={(selectedByGroup[activeGroupData.groupKey] ?? 0) === 0}\n >\n Clear\n </button>\n </div>\n\n <div className=\"max-h-72 space-y-0.5 overflow-auto\">\n {activeGroupData.options.map((option) => {\n const mode = draft[option.value] ?? \"neutral\";\n const title = option.title ?? multiSelectOptionText(option);\n return (\n <div\n key={option.value}\n role=\"button\"\n tabIndex={0}\n data-filter-option={option.value}\n className=\"rounded-md px-1.5 py-0.5 hover:bg-accent/50 focus-visible:bg-accent/50 focus-visible:outline-none\"\n onClick={() =>\n setDraft(updateMultiFilterValue(draft, option.value, nextFilterMode(mode)))\n }\n onKeyDown={(event) => {\n if (event.key === \"Enter\" || event.key === \" \") {\n event.preventDefault();\n setDraft(\n updateMultiFilterValue(draft, option.value, nextFilterMode(mode)),\n );\n } else if (event.key === \"ArrowLeft\") {\n event.preventDefault();\n setActiveGroup(null);\n }\n }}\n >\n <FilterPill\n className=\"w-full justify-between\"\n // Show only the value side here — the key is already\n // implied by the parent group panel.\n label={renderNestedOptionLabel(option, activeGroupData.groupKey)}\n mode={mode}\n title={title}\n togglePosition=\"right\"\n onModeChange={(next) =>\n setDraft(updateMultiFilterValue(draft, option.value, next))\n }\n />\n </div>\n );\n })}\n {activeGroupData.options.length === 0 && (\n <div className=\"px-2 py-3 text-sm text-muted-foreground\">No values</div>\n )}\n </div>\n </div>\n )}\n </div>\n )}\n </div>\n );\n}\n\nfunction renderNestedOptionLabel(option: MultiSelectOption, groupKey: string): ReactNode {\n // If the option label already strips the key prefix, use it. Otherwise\n // strip it here so the inner panel doesn't repeat the key on every row.\n if (typeof option.label === \"string\") {\n const prefix = `${groupKey}=`;\n if (option.label.startsWith(prefix)) return option.label.slice(prefix.length);\n return option.label;\n }\n return option.label ?? option.value;\n}\n\nfunction SelectMultiFilterField({\n filter,\n grow,\n}: {\n filter: FilterBarSelectMultiFilter;\n grow: boolean;\n}) {\n return (\n <label\n title={filter.description}\n className={cn(\n \"flex h-8 items-center gap-2 rounded-md border border-input bg-muted/30 pl-2 pr-1 text-xs\",\n grow ? \"min-w-[12rem] max-w-[18rem] flex-1\" : \"min-w-[11rem] max-w-[15rem] shrink-0\",\n filter.disabled && \"opacity-60\",\n filter.className,\n )}\n >\n <span className=\"whitespace-nowrap font-medium uppercase tracking-wide text-muted-foreground\">\n {filter.label}\n </span>\n <MultiSelect\n options={filter.options}\n value={filter.value}\n onChange={filter.onChange}\n placeholder={filter.placeholder ?? `Any ${filter.label.toLowerCase()}`}\n {...(filter.disabled !== undefined ? { disabled: filter.disabled } : {})}\n triggerClassName=\"h-6 min-w-0 border-0 bg-transparent px-1 text-xs shadow-none focus-visible:ring-0\"\n menuClassName=\"left-auto right-0\"\n />\n </label>\n );\n}\n\nfunction RangeControlButton({\n kind,\n label,\n from = \"\",\n to = \"\",\n onApply,\n presets: _presets,\n fromPlaceholder,\n toPlaceholder,\n emptyLabel,\n className,\n}: FilterBarRangeProps & { kind: \"date\" | \"time\"; label: string }) {\n const rootRef = useRef<HTMLDivElement>(null);\n const triggerRef = useRef<HTMLButtonElement>(null);\n const fromInputRef = useRef<HTMLInputElement>(null);\n const toInputRef = useRef<HTMLInputElement>(null);\n const [open, setOpen] = useState(false);\n const [draftFrom, setDraftFrom] = useState(from);\n const [draftTo, setDraftTo] = useState(to);\n\n useDismissablePopup(open, rootRef, triggerRef, () => setOpen(false));\n\n useEffect(() => {\n if (open) {\n setDraftFrom(from);\n setDraftTo(to);\n }\n }, [from, open, to]);\n\n const buttonLabel = formatRangeLabel(kind, from, to, emptyLabel);\n\n function applyRange(nextFrom: string, nextTo: string) {\n onApply(\n kind === \"time\" ? normalizeDateMath(nextFrom) : nextFrom.trim(),\n kind === \"time\" ? normalizeDateMath(nextTo) : nextTo.trim(),\n );\n setOpen(false);\n }\n\n function clearRange() {\n setDraftFrom(\"\");\n setDraftTo(\"\");\n onApply(\"\", \"\");\n setOpen(false);\n }\n\n return (\n <div ref={rootRef} className={cn(\"relative\", className)}>\n <Button\n ref={triggerRef}\n type=\"button\"\n variant=\"outline\"\n size=\"sm\"\n aria-label={`${label} filter`}\n aria-expanded={open}\n aria-haspopup=\"dialog\"\n onClick={() => setOpen((current) => !current)}\n className=\"h-7 w-fit max-w-[11rem] min-w-0 gap-2 px-2 text-xs font-normal\"\n >\n <Icon name=\"codicon:calendar\" className=\"text-muted-foreground text-[14px]\" />\n <span className=\"truncate font-normal tabular-nums\">{buttonLabel}</span>\n </Button>\n\n {open && (\n <div className=\"absolute right-0 top-[calc(100%+0.375rem)] z-50 w-72 rounded-md border border-border bg-popover text-popover-foreground shadow-md shadow-black/5 outline-none\">\n <div className=\"p-3\">\n <div className=\"mb-2 text-[10px] font-medium uppercase tracking-wide text-muted-foreground\">\n {label}\n </div>\n <div className=\"grid grid-cols-2 gap-2\">\n <div className=\"flex flex-col gap-1\">\n <label className=\"text-[10px] text-muted-foreground\">From</label>\n <RangeInput\n inputRef={fromInputRef}\n kind={kind}\n ariaLabel={`${label} from`}\n placeholder={fromPlaceholder ?? (kind === \"date\" ? \"\" : \"now-24h\")}\n value={draftFrom}\n onChange={setDraftFrom}\n />\n </div>\n <div className=\"flex flex-col gap-1\">\n <label className=\"text-[10px] text-muted-foreground\">To</label>\n <RangeInput\n inputRef={toInputRef}\n kind={kind}\n ariaLabel={`${label} to`}\n placeholder={toPlaceholder ?? (kind === \"date\" ? \"\" : \"now\")}\n value={draftTo}\n onChange={setDraftTo}\n />\n </div>\n </div>\n <div className=\"mt-3 flex justify-between gap-2\">\n <Button\n type=\"button\"\n variant=\"ghost\"\n size=\"sm\"\n className=\"h-8 px-3 text-xs\"\n disabled={!from && !to}\n onClick={clearRange}\n >\n Clear\n </Button>\n <Button\n type=\"button\"\n variant=\"default\"\n size=\"sm\"\n className=\"h-8 px-3 text-xs\"\n onClick={() => applyRange(draftFrom, draftTo)}\n >\n Apply\n </Button>\n </div>\n </div>\n </div>\n )}\n </div>\n );\n}\n\nfunction useDismissablePopup(\n open: boolean,\n rootRef: RefObject<HTMLElement | null>,\n triggerRef: RefObject<HTMLElement | null>,\n onClose: () => void,\n) {\n useEffect(() => {\n if (!open) return;\n\n const onPointerDown = (event: MouseEvent) => {\n if (!rootRef.current?.contains(event.target as Node)) {\n onClose();\n }\n };\n\n const onKeyDown = (event: KeyboardEvent) => {\n if (event.key === \"Escape\") {\n onClose();\n triggerRef.current?.focus();\n }\n };\n\n document.addEventListener(\"mousedown\", onPointerDown);\n document.addEventListener(\"keydown\", onKeyDown);\n return () => {\n document.removeEventListener(\"mousedown\", onPointerDown);\n document.removeEventListener(\"keydown\", onKeyDown);\n };\n }, [onClose, open, rootRef, triggerRef]);\n}\n\nfunction summarizeMultiFilter(\n label: string,\n value: Record<string, FilterBarMultiFilterMode>,\n): string {\n const includeCount = Object.values(value).filter((mode) => mode === \"include\").length;\n const excludeCount = Object.values(value).filter((mode) => mode === \"exclude\").length;\n\n if (includeCount === 0 && excludeCount === 0) {\n return label;\n }\n\n const counts = [\n includeCount > 0 ? `+${includeCount}` : null,\n excludeCount > 0 ? `-${excludeCount}` : null,\n ].filter(Boolean);\n\n return `${label} ${counts.join(\" \")}`;\n}\n\nfunction parseLookupMultiValue(value: string) {\n return value\n .split(\",\")\n .map((item) => item.trim())\n .filter(Boolean);\n}\n\nfunction useDebouncedMultiDraft(\n value: Record<string, FilterBarMultiFilterMode>,\n onChange: (value: Record<string, FilterBarMultiFilterMode>) => void,\n) {\n const { autoSubmit } = useContext(FilterBarContext);\n const [draft, setDraft] = useState(value);\n const latestOnChange = useRef(onChange);\n\n useEffect(() => {\n latestOnChange.current = onChange;\n }, [onChange]);\n\n useEffect(() => {\n setDraft(value);\n }, [value]);\n\n useEffect(() => {\n if (sameMultiFilterValue(draft, value)) return;\n\n if (!autoSubmit) {\n latestOnChange.current(draft);\n return;\n }\n\n const timeoutId = window.setTimeout(() => {\n latestOnChange.current(draft);\n }, FILTER_INPUT_DEBOUNCE_MS);\n\n return () => window.clearTimeout(timeoutId);\n }, [autoSubmit, draft, value]);\n\n return [draft, setDraft] as const;\n}\n\nfunction sameMultiFilterValue(\n a: Record<string, FilterBarMultiFilterMode>,\n b: Record<string, FilterBarMultiFilterMode>,\n) {\n const aKeys = Object.keys(a);\n const bKeys = Object.keys(b);\n if (aKeys.length !== bKeys.length) return false;\n for (const key of aKeys) {\n if (a[key] !== b[key]) return false;\n }\n return true;\n}\n\nfunction useDebouncedTextDraft(value: string, onChange: (value: string) => void) {\n const { autoSubmit } = useContext(FilterBarContext);\n const [draft, setDraft] = useState(value);\n const latestOnChange = useRef(onChange);\n\n useEffect(() => {\n latestOnChange.current = onChange;\n }, [onChange]);\n\n useEffect(() => {\n setDraft(value);\n }, [value]);\n\n useEffect(() => {\n if (draft === value) return;\n\n if (!autoSubmit) {\n latestOnChange.current(draft);\n return;\n }\n\n const timeoutId = window.setTimeout(() => {\n latestOnChange.current(draft);\n }, FILTER_INPUT_DEBOUNCE_MS);\n\n return () => window.clearTimeout(timeoutId);\n }, [autoSubmit, draft, value]);\n\n return [draft, setDraft] as const;\n}\n\nfunction useDebouncedNumberDraft(\n value: FilterBarNumberValue,\n onChange: (value: FilterBarNumberValue) => void,\n) {\n const { autoSubmit } = useContext(FilterBarContext);\n const [draft, setDraft] = useState(value);\n const latestOnChange = useRef(onChange);\n\n useEffect(() => {\n latestOnChange.current = onChange;\n }, [onChange]);\n\n useEffect(() => {\n setDraft(value);\n }, [value.max, value.min]);\n\n useEffect(() => {\n if (sameNumberFilterValue(draft, value)) return;\n\n if (!autoSubmit) {\n latestOnChange.current(draft);\n return;\n }\n\n const timeoutId = window.setTimeout(() => {\n latestOnChange.current(draft);\n }, FILTER_INPUT_DEBOUNCE_MS);\n\n return () => window.clearTimeout(timeoutId);\n }, [autoSubmit, draft, value]);\n\n return [draft, setDraft] as const;\n}\n\nfunction sameNumberFilterValue(left: FilterBarNumberValue, right: FilterBarNumberValue) {\n return (left.min ?? \"\") === (right.min ?? \"\") && (left.max ?? \"\") === (right.max ?? \"\");\n}\n\ntype NumberFilterBounds = {\n min: number;\n max: number;\n step: number;\n};\n\ntype NumberFilterSource = \"min-input\" | \"max-input\";\n\nfunction resolveNumberFilterBounds(filter: FilterBarNumberFilter): NumberFilterBounds {\n const parsedMin = parseFilterNumber(filter.value.min);\n const parsedMax = parseFilterNumber(filter.value.max);\n const fallbackMin = parsedMin ?? 0;\n const fallbackMax = parsedMax ?? Math.max(fallbackMin + 100, 100);\n const min = filter.domainMin ?? Math.min(fallbackMin, fallbackMax);\n const max = filter.domainMax ?? Math.max(fallbackMax, min + 100);\n const step = filter.step && filter.step > 0 ? filter.step : 1;\n\n return {\n min,\n max: max <= min ? min + step : max,\n step,\n };\n}\n\nfunction summarizeNumberFilter(\n filter: FilterBarNumberFilter,\n bounds: NumberFilterBounds,\n value: FilterBarNumberValue,\n) {\n const parsedMin = parseFilterNumber(value.min);\n const parsedMax = parseFilterNumber(value.max);\n const hasMin = String(value.min ?? \"\").trim() !== \"\";\n const hasMax = String(value.max ?? \"\").trim() !== \"\";\n\n if (!hasMin && !hasMax) {\n return filter.label;\n }\n\n const minLabel =\n parsedMin == null\n ? formatNumberValue(bounds.min, filter)\n : formatNumberValue(parsedMin, filter);\n const maxLabel =\n parsedMax == null\n ? formatNumberValue(bounds.max, filter)\n : formatNumberValue(parsedMax, filter);\n\n if (hasMin && hasMax) {\n if (minLabel === maxLabel) {\n return `${filter.label} ${minLabel}`;\n }\n return `${filter.label} ${minLabel}-${maxLabel}`;\n }\n\n if (hasMin) {\n return `${filter.label} >=${minLabel}`;\n }\n\n return `${filter.label} <=${maxLabel}`;\n}\n\nfunction normalizeNumberFilterValue(\n nextValue: FilterBarNumberValue,\n source: NumberFilterSource,\n): FilterBarNumberValue {\n let min = nextValue.min ?? \"\";\n let max = nextValue.max ?? \"\";\n\n const parsedMin = parseFilterNumber(min);\n const parsedMax = parseFilterNumber(max);\n\n if (parsedMin != null && parsedMax != null && parsedMin > parsedMax) {\n if (source.startsWith(\"min\")) {\n max = min;\n } else {\n min = max;\n }\n }\n\n return { min, max };\n}\n\nfunction numberFilterValueFromSlider(\n value: [number, number],\n bounds: NumberFilterBounds,\n): FilterBarNumberValue {\n const [min, max] = value;\n return {\n min: min <= bounds.min ? \"\" : formatRawNumber(clampNumber(min, bounds.min, bounds.max)),\n max: max >= bounds.max ? \"\" : formatRawNumber(clampNumber(max, bounds.min, bounds.max)),\n };\n}\n\nfunction parseFilterNumber(value: string | undefined) {\n if (!value?.trim()) return null;\n const parsed = Number(value);\n return Number.isFinite(parsed) ? parsed : null;\n}\n\nfunction clampNumber(value: number, min: number, max: number) {\n return Math.min(max, Math.max(min, value));\n}\n\nfunction formatNumberValue(value: number, filter: FilterBarNumberFilter) {\n if (filter.formatValue) {\n return filter.formatValue(value);\n }\n\n return formatRawNumber(value);\n}\n\nfunction formatRawNumber(value: number) {\n return Number.isInteger(value) ? String(value) : String(Number(value.toFixed(6)));\n}\n\nfunction updateMultiFilterValue(\n current: Record<string, FilterBarMultiFilterMode>,\n optionValue: string,\n nextMode: FilterMode,\n): Record<string, FilterBarMultiFilterMode> {\n const next = { ...current };\n\n if (nextMode === \"neutral\") {\n delete next[optionValue];\n return next;\n }\n\n if (nextMode === \"include\" || nextMode === \"exclude\") {\n next[optionValue] = nextMode;\n }\n\n return next;\n}\n\nfunction nextFilterMode(mode: FilterMode): FilterMode {\n if (mode === \"include\") return \"exclude\";\n if (mode === \"exclude\") return \"neutral\";\n return \"include\";\n}\n\nfunction normalizeDateMath(value: string): string {\n const trimmed = value.trim();\n if (!trimmed) return \"\";\n if (trimmed === \"now\" || trimmed.startsWith(\"now\")) return trimmed;\n if (/^[+-]\\d/.test(trimmed)) return `now${trimmed}`;\n return trimmed;\n}\n\nfunction formatRangeLabel(\n kind: \"date\" | \"time\",\n from: string,\n to: string,\n emptyLabel?: string,\n): string {\n const trimmedFrom = from.trim();\n const trimmedTo = to.trim();\n\n if (!trimmedFrom && !trimmedTo) {\n return emptyLabel ?? (kind === \"date\" ? \"Any date\" : \"now-24h\");\n }\n\n if (kind === \"time\") {\n const normalizedFrom = normalizeDateMath(trimmedFrom);\n const normalizedTo = normalizeDateMath(trimmedTo || \"now\");\n if (!normalizedFrom) return normalizedTo;\n if (normalizedTo === \"now\") return normalizedFrom;\n return `${normalizedFrom} → ${normalizedTo}`;\n }\n\n if (trimmedFrom && trimmedTo && trimmedFrom === trimmedTo) {\n return trimmedFrom;\n }\n\n if (!trimmedFrom) return trimmedTo;\n if (!trimmedTo) return trimmedFrom;\n return `${trimmedFrom} → ${trimmedTo}`;\n}\n\nfunction RangeInput({\n inputRef,\n kind,\n ariaLabel,\n value,\n onChange,\n placeholder,\n}: {\n inputRef: RefObject<HTMLInputElement | null>;\n kind: \"date\" | \"time\";\n ariaLabel: string;\n value: string;\n onChange: (value: string) => void;\n placeholder: string;\n}) {\n if (kind === \"date\") {\n return (\n <DatePicker\n ref={inputRef as RefObject<HTMLInputElement>}\n aria-label={ariaLabel}\n value={value}\n onChange={onChange}\n placeholder={placeholder}\n inputClassName=\"pr-8\"\n />\n );\n }\n\n return (\n <DateTimePicker\n ref={inputRef as RefObject<HTMLInputElement>}\n aria-label={ariaLabel}\n inputClassName=\"pr-8\"\n placeholder={placeholder}\n value={value}\n onChange={onChange}\n />\n );\n}\n"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"FilterBar.js","sources":["../../src/components/FilterBar.tsx"],"sourcesContent":["import {\n useCallback,\n createContext,\n useContext,\n useEffect,\n useLayoutEffect,\n useMemo,\n useRef,\n useState,\n type ReactNode,\n type RefObject,\n} from \"react\";\nimport { FilterPill, type FilterMode } from \"../data/FilterPill\";\nimport { Icon } from \"../data/Icon\";\nimport { UiChevronDown, UiChevronRight, UiChevronUp, UiClose, UiFilter, UiSearch } from \"../icons\";\nimport { cn } from \"../lib/utils\";\nimport { Button } from \"./button\";\nimport { DateTimePicker } from \"./DateTimePicker\";\nimport { MultiSelect, type MultiSelectOption } from \"./MultiSelect\";\nimport { RangeSlider } from \"./RangeSlider\";\nimport { Select } from \"./select\";\nimport { TimeRange, type TimeRangePresetGroup } from \"./TimeRange\";\n\nconst FILTER_INPUT_DEBOUNCE_MS = 500;\nconst FILTER_BAR_GAP_PX = 8;\nconst FILTER_BAR_OVERFLOW_TRIGGER_ESTIMATE_PX = 44;\n\n// When `autoSubmit` is false, debounced fields forward their draft value\n// immediately (no timer) so the consumer can accumulate state locally and\n// fire one request when Apply is clicked. When true (default) fields debounce\n// upstream, matching the live-filter behaviour used in trace/log UIs.\nconst FilterBarContext = createContext<{ autoSubmit: boolean }>({\n autoSubmit: true,\n});\n\nexport type FilterBarSearchProps = {\n /** Controlled search text. */\n value: string;\n /** Called with the next search text. Debounced when `autoSubmit` is true. */\n onChange: (value: string) => void;\n /** Placeholder shown in the search input. */\n placeholder?: string;\n /** Accessible label for the search input. */\n ariaLabel?: string;\n /** Classes applied to the search input. */\n className?: string;\n};\n\nexport type FilterBarTextFilter = {\n /** Stable filter key used for rendering and overflow measurement. */\n key: string;\n /** Renders a free-text input. */\n kind: \"text\";\n /** Filter label shown on the control. */\n label: string;\n /** Optional helper text shown in filter popovers. */\n description?: string;\n /** Controlled input value. */\n value: string;\n /** Called with the next input value. */\n onChange: (value: string) => void;\n /** Placeholder shown in the input. */\n placeholder?: string;\n /** Disables this filter. */\n disabled?: boolean;\n /** Classes applied to this filter control. */\n className?: string;\n};\n\nexport type FilterBarLookupOption = {\n /** Option value written to filter state. */\n value: string;\n /** Optional display label; falls back to `value`. */\n label?: string;\n /** Prevents choosing the option. */\n disabled?: boolean;\n /** Optional browser tooltip. */\n title?: string;\n};\n\nexport type FilterBarLookupInputType = \"text\" | \"number\" | \"date\";\n\nexport type FilterBarLookupFilter = {\n key: string;\n /** Renders an input backed by a datalist-style option set. */\n kind: \"lookup\";\n label: string;\n description?: string;\n /** Controlled selected or typed value. */\n value: string;\n /** Suggestions for the lookup input. */\n options: FilterBarLookupOption[];\n onChange: (value: string) => void;\n placeholder?: string;\n /** Native input type for the lookup field. */\n inputType?: FilterBarLookupInputType;\n disabled?: boolean;\n className?: string;\n};\n\nexport type FilterBarLookupMultiFilter = {\n key: string;\n /** Renders a multi-value lookup filter. */\n kind: \"lookup-multi\";\n label: string;\n description?: string;\n /** Controlled selected values. */\n value: string[];\n /** Suggestions for the lookup input. */\n options: FilterBarLookupOption[];\n onChange: (value: string[]) => void;\n placeholder?: string;\n disabled?: boolean;\n className?: string;\n};\n\nexport type FilterBarMultiFilterMode = Extract<FilterMode, \"include\" | \"exclude\">;\n\nexport type FilterBarMultiFilter = {\n key: string;\n /** Renders include/exclude chips for each option. */\n kind: \"multi\";\n label: string;\n description?: string;\n /** Map of option value to include/exclude state. */\n value: Record<string, FilterBarMultiFilterMode>;\n /** Available chip options. */\n options: MultiSelectOption[];\n onChange: (value: Record<string, FilterBarMultiFilterMode>) => void;\n disabled?: boolean;\n className?: string;\n};\n\nexport type FilterBarNestedMultiGroup = {\n /** Stable group id. */\n groupKey: string;\n /** Optional visible group label. */\n label?: string;\n /** Options in this group. */\n options: MultiSelectOption[];\n};\n\nexport type FilterBarNestedMultiFilter = {\n key: string;\n /** Renders grouped include/exclude chips. */\n kind: \"nested-multi\";\n label: string;\n description?: string;\n // Same wire shape as FilterBarMultiFilter so consumers can swap kinds\n // without changing their state slot.\n value: Record<string, FilterBarMultiFilterMode>;\n groups: FilterBarNestedMultiGroup[];\n onChange: (value: Record<string, FilterBarMultiFilterMode>) => void;\n disabled?: boolean;\n className?: string;\n};\n\nexport type FilterBarSelectMultiFilter = {\n key: string;\n /** Renders a compact multi-select dropdown. */\n kind: \"select-multi\";\n label: string;\n description?: string;\n /** Controlled selected values. */\n value: string[];\n /** Available dropdown options. */\n options: MultiSelectOption[];\n onChange: (value: string[]) => void;\n placeholder?: string;\n disabled?: boolean;\n className?: string;\n};\n\nexport type FilterBarNumberValue = {\n /** Minimum bound as a string so callers can preserve draft input. */\n min?: string;\n /** Maximum bound as a string so callers can preserve draft input. */\n max?: string;\n};\n\nexport type FilterBarNumberFilter = {\n key: string;\n /** Renders paired min/max numeric controls. */\n kind: \"number\";\n label: string;\n description?: string;\n /** Controlled min/max value. */\n value: FilterBarNumberValue;\n onChange: (value: FilterBarNumberValue) => void;\n /** Lower bound used by the optional range slider. */\n domainMin?: number;\n /** Upper bound used by the optional range slider. */\n domainMax?: number;\n /** Step size for number inputs and slider movement. */\n step?: number;\n /** Formatter used for slider labels. */\n formatValue?: (value: number) => string;\n minPlaceholder?: string;\n maxPlaceholder?: string;\n disabled?: boolean;\n className?: string;\n};\n\nexport type FilterBarEnumFilter = {\n key: string;\n /** Renders a single-select dropdown. */\n kind: \"enum\";\n label: string;\n description?: string;\n /** Controlled selected value. */\n value: string;\n /** Available enum options. */\n options: Array<{ value: string; label?: string }>;\n onChange: (value: string) => void;\n placeholder?: string;\n disabled?: boolean;\n className?: string;\n};\n\nexport type FilterBarBooleanFilter = {\n key: string;\n /** Renders a boolean toggle. */\n kind: \"boolean\";\n label: string;\n description?: string;\n /** Controlled checked state. */\n value: boolean;\n onChange: (value: boolean) => void;\n disabled?: boolean;\n className?: string;\n};\n\nexport type FilterBarFilter =\n | FilterBarTextFilter\n | FilterBarLookupFilter\n | FilterBarLookupMultiFilter\n | FilterBarMultiFilter\n | FilterBarNestedMultiFilter\n | FilterBarSelectMultiFilter\n | FilterBarNumberFilter\n | FilterBarEnumFilter\n | FilterBarBooleanFilter;\n\nexport type FilterBarRangePreset = {\n /** Visible preset label. */\n label: string;\n /** Start value applied by the preset. */\n from: string;\n /** End value applied by the preset. */\n to: string;\n};\n\nexport type FilterBarRangeProps = {\n /** Current start value. */\n from?: string;\n /** Current end value. */\n to?: string;\n /** Called when the user applies the range. */\n onApply: (from: string, to: string) => void;\n /** Presets or preset groups shown in the range popup. */\n presets?: Array<FilterBarRangePreset | TimeRangePresetGroup>;\n /** Enables time inputs when using date-time values. */\n timeEnabled?: boolean;\n /** Selected timezone. */\n timeZone?: string;\n /** Available timezone options. */\n timeZones?: string[];\n fromPlaceholder?: string;\n toPlaceholder?: string;\n emptyLabel?: string;\n className?: string;\n};\n\nexport type FilterBarProps = {\n /** Optional global search control shown first. */\n search?: FilterBarSearchProps;\n /** Structured filters rendered after search. */\n filters?: FilterBarFilter[];\n /** Date-time range control. */\n timeRange?: FilterBarRangeProps;\n /** Date-only range control. */\n dateRange?: FilterBarRangeProps;\n /** Additional content rendered in the filter row. */\n children?: ReactNode;\n /** Content rendered before search and filters. */\n leading?: ReactNode;\n /** Content rendered at the end of the bar. */\n trailing?: ReactNode;\n /** Classes applied to the root bar. */\n className?: string;\n /**\n * When false, debounced fields forward edits immediately and an Apply button\n * is rendered in the trailing slot. Defaults to true.\n */\n autoSubmit?: boolean;\n /** Called by the Apply button when `autoSubmit` is false. */\n onApply?: () => void;\n /** Label for the Apply button. */\n applyLabel?: string;\n /** Shows a pending state on the Apply button. */\n isPending?: boolean;\n /** `responsive` moves hidden filters into an overflow popover; `wrap` lets them wrap. */\n overflowMode?: \"responsive\" | \"wrap\";\n};\n\nexport function FilterBar({\n search,\n filters,\n timeRange,\n dateRange,\n children,\n leading,\n trailing,\n className,\n autoSubmit = true,\n onApply,\n applyLabel = \"Apply\",\n isPending = false,\n overflowMode = \"responsive\",\n}: FilterBarProps) {\n const hasRangeControls = Boolean(timeRange || dateRange);\n const showApply = !autoSubmit && !!onApply;\n const contextValue = useMemo(() => ({ autoSubmit }), [autoSubmit]);\n const allFilters = filters ?? [];\n const responsiveOverflow = overflowMode === \"responsive\" && allFilters.length > 0;\n const filterListRef = useRef<HTMLDivElement>(null);\n const overflowTriggerRef = useRef<HTMLButtonElement>(null);\n const filterNodeRefs = useRef(new Map<string, HTMLDivElement>());\n const filterWidthCache = useRef(new Map<string, number>());\n const filterKeys = useMemo(\n () => allFilters.map((filter) => filter.key).join(\"\\u0000\"),\n [allFilters],\n );\n const [visibleFilterCount, setVisibleFilterCount] = useState(allFilters.length);\n\n // Latest-value refs so measureOverflow can be a stable useCallback. Reading\n // the current values through refs sidesteps the closure-staleness problem\n // without putting array references in the dep list — which is what caused\n // the \"Maximum update depth exceeded\" cascade (allFilters in the deps made\n // measureOverflow change on every render → ResizeObserver effect re-ran →\n // setVisibleFilterCount fired → repeat).\n const allFiltersRef = useRef(allFilters);\n const responsiveOverflowRef = useRef(responsiveOverflow);\n allFiltersRef.current = allFilters;\n responsiveOverflowRef.current = responsiveOverflow;\n\n useLayoutEffect(() => {\n setVisibleFilterCount(allFiltersRef.current.length);\n }, [filterKeys]);\n\n const measureOverflow = useCallback(() => {\n const current = allFiltersRef.current;\n if (!responsiveOverflowRef.current) {\n setVisibleFilterCount(current.length);\n return;\n }\n\n const filterList = filterListRef.current;\n if (!filterList) return;\n\n const availableWidth = Math.floor(filterList.getBoundingClientRect().width);\n if (availableWidth <= 0) return;\n\n const widths = current.map((filter) => {\n const node = filterNodeRefs.current.get(filter.key);\n const measured = node?.getBoundingClientRect().width ?? 0;\n if (measured > 0) {\n const width = Math.ceil(measured);\n filterWidthCache.current.set(filter.key, width);\n return width;\n }\n return filterWidthCache.current.get(filter.key) ?? estimateFilterWidth(filter);\n });\n\n const triggerWidth = Math.ceil(\n overflowTriggerRef.current?.getBoundingClientRect().width ??\n FILTER_BAR_OVERFLOW_TRIGGER_ESTIMATE_PX,\n );\n const triggerGap = triggerWidth > 0 ? FILTER_BAR_GAP_PX : 0;\n const allFiltersWidth = sumFilterWidths(widths);\n const nextVisible =\n allFiltersWidth <= availableWidth\n ? current.length\n : calculateVisibleFilterCount(\n widths,\n Math.max(0, availableWidth - triggerWidth - triggerGap),\n );\n setVisibleFilterCount((prev) => (prev === nextVisible ? prev : nextVisible));\n }, []);\n\n useLayoutEffect(() => {\n measureOverflow();\n }, [measureOverflow]);\n\n useEffect(() => {\n if (!responsiveOverflow) return;\n\n const filterList = filterListRef.current;\n const trigger = overflowTriggerRef.current;\n const ResizeObserverCtor = typeof ResizeObserver === \"undefined\" ? null : ResizeObserver;\n\n if (!ResizeObserverCtor) {\n window.addEventListener(\"resize\", measureOverflow);\n measureOverflow();\n return () => window.removeEventListener(\"resize\", measureOverflow);\n }\n\n const observer = new ResizeObserverCtor(() => measureOverflow());\n if (filterList) observer.observe(filterList);\n if (trigger) observer.observe(trigger);\n window.addEventListener(\"resize\", measureOverflow);\n measureOverflow();\n\n return () => {\n observer.disconnect();\n window.removeEventListener(\"resize\", measureOverflow);\n };\n }, [measureOverflow, responsiveOverflow]);\n\n const inlineFilters = responsiveOverflow\n ? allFilters.slice(0, Math.min(visibleFilterCount, allFilters.length))\n : allFilters;\n const overflowFilters = responsiveOverflow\n ? allFilters.slice(Math.min(visibleFilterCount, allFilters.length))\n : [];\n const activeOverflowCount = overflowFilters.filter(isFilterBarFilterActive).length;\n\n const setFilterNode = useCallback((key: string, node: HTMLDivElement | null) => {\n if (!node) {\n filterNodeRefs.current.delete(key);\n return;\n }\n filterNodeRefs.current.set(key, node);\n }, []);\n\n return (\n <FilterBarContext.Provider value={contextValue}>\n <div\n className={cn(\n \"flex flex-nowrap items-center gap-2 overflow-visible rounded-lg border border-input bg-background px-2 py-1.5 shadow-sm\",\n overflowMode === \"wrap\" && \"flex-wrap\",\n className,\n )}\n >\n {leading && <div className=\"flex shrink-0 items-center gap-2\">{leading}</div>}\n\n {search && <SearchField search={search} />}\n\n {children}\n\n {allFilters.length > 0 && (\n <div\n ref={filterListRef}\n data-filter-bar-list\n className={cn(\n \"flex min-w-0 items-center gap-2\",\n overflowMode === \"wrap\" ? \"flex-wrap\" : \"flex-1\",\n )}\n >\n {inlineFilters.map((filter, index) => (\n <div\n key={filter.key}\n ref={(node) => setFilterNode(filter.key, node)}\n data-filter-bar-item={filter.key}\n className=\"min-w-0 shrink-0\"\n >\n {renderFilterField(filter, !search && index === 0)}\n </div>\n ))}\n </div>\n )}\n\n {responsiveOverflow && overflowFilters.length > 0 && (\n <OverflowFiltersMenu\n triggerRef={overflowTriggerRef}\n filters={overflowFilters}\n activeHidden={activeOverflowCount}\n {...(onApply ? { onApply } : {})}\n />\n )}\n\n {(hasRangeControls || trailing || showApply) && (\n <div className=\"ml-auto flex shrink-0 flex-nowrap items-center gap-2\">\n {dateRange && <RangeControlButton kind=\"date\" label=\"Date range\" {...dateRange} />}\n {timeRange && <RangeControlButton kind=\"time\" label=\"Time range\" {...timeRange} />}\n {trailing}\n {showApply && (\n <Button\n type=\"button\"\n variant=\"default\"\n size=\"sm\"\n disabled={isPending}\n onClick={onApply}\n >\n {isPending ? \"Loading…\" : applyLabel}\n </Button>\n )}\n </div>\n )}\n </div>\n </FilterBarContext.Provider>\n );\n}\n\ntype FilterBarFilterPanelChrome = \"full\" | \"embedded\";\n\nexport function FilterBarFilterPanel({\n filter,\n chrome = \"full\",\n autoSubmit = true,\n}: {\n filter: FilterBarFilter;\n chrome?: FilterBarFilterPanelChrome;\n autoSubmit?: boolean;\n}) {\n const contextValue = useMemo(() => ({ autoSubmit }), [autoSubmit]);\n\n return (\n <FilterBarContext.Provider value={contextValue}>\n <FilterBarFilterPanelContent filter={filter} chrome={chrome} />\n </FilterBarContext.Provider>\n );\n}\n\nfunction FilterBarFilterPanelContent({\n filter,\n chrome = \"full\",\n}: {\n filter: FilterBarFilter;\n chrome?: FilterBarFilterPanelChrome;\n}) {\n return (\n <>\n {filter.kind === \"lookup\" && <LookupFilterField filter={filter} grow />}\n {filter.kind === \"lookup-multi\" && <LookupMultiFilterField filter={filter} grow />}\n {filter.kind === \"multi\" && <MultiFilterPanel filter={filter} chrome={chrome} />}\n {filter.kind === \"nested-multi\" && <NestedMultiFilterPanel filter={filter} chrome={chrome} />}\n {filter.kind === \"select-multi\" && <SelectMultiFilterField filter={filter} grow />}\n {filter.kind === \"number\" && <NumberFilterPanel filter={filter} chrome={chrome} />}\n {filter.kind === \"enum\" && <EnumFilterField filter={filter} grow />}\n {filter.kind === \"boolean\" && <BooleanFilterField filter={filter} />}\n {filter.kind === \"text\" && <TextFilterField filter={filter} grow />}\n </>\n );\n}\n\nfunction renderFilterField(filter: FilterBarFilter, grow: boolean) {\n if (filter.kind === \"lookup\") {\n return <LookupFilterField filter={filter} grow={grow} />;\n }\n\n if (filter.kind === \"lookup-multi\") {\n return <LookupMultiFilterField filter={filter} grow={grow} />;\n }\n\n if (filter.kind === \"multi\") {\n return <MultiFilterField filter={filter} grow={grow} />;\n }\n\n if (filter.kind === \"nested-multi\") {\n return <NestedMultiFilterField filter={filter} grow={grow} />;\n }\n\n if (filter.kind === \"select-multi\") {\n return <SelectMultiFilterField filter={filter} grow={grow} />;\n }\n\n if (filter.kind === \"number\") {\n return <NumberFilterField filter={filter} grow={grow} />;\n }\n\n if (filter.kind === \"enum\") {\n return <EnumFilterField filter={filter} grow={grow} />;\n }\n\n if (filter.kind === \"boolean\") {\n return <BooleanFilterField filter={filter} />;\n }\n\n return <TextFilterField filter={filter} grow={grow} />;\n}\n\nfunction OverflowFiltersMenu({\n triggerRef,\n filters,\n activeHidden,\n onApply,\n}: {\n triggerRef: RefObject<HTMLButtonElement>;\n filters: FilterBarFilter[];\n activeHidden: number;\n onApply?: () => void;\n}) {\n const rootRef = useRef<HTMLDivElement>(null);\n const [open, setOpen] = useState(false);\n const [stagedValues, setStagedValues] = useState<Record<string, FilterBarValue>>({});\n const hasHidden = filters.length > 0;\n const hiddenFilterKeys = useMemo(\n () => filters.map((filter) => filter.key).join(\"\\u0000\"),\n [filters],\n );\n const openOverflowMenu = useCallback(() => {\n setStagedValues(createFilterValueMap(filters));\n setOpen(true);\n }, [filters]);\n const closeOverflowMenu = useCallback(() => {\n setStagedValues(createFilterValueMap(filters));\n setOpen(false);\n }, [filters]);\n\n useDismissablePopup(open, rootRef, triggerRef, closeOverflowMenu);\n\n useEffect(() => {\n if (!hasHidden) closeOverflowMenu();\n }, [closeOverflowMenu, hasHidden]);\n\n useEffect(() => {\n if (!open) return;\n setStagedValues(createFilterValueMap(filters));\n }, [hiddenFilterKeys, open]);\n\n const stagedFilters = filters.map((filter) =>\n filterWithStagedValue(\n filter,\n stagedValues[filter.key] ?? filterBarFilterValue(filter),\n (next) =>\n setStagedValues((current) => ({\n ...current,\n [filter.key]: next,\n })),\n ),\n );\n\n return (\n <div\n ref={rootRef}\n className={cn(\"relative shrink-0\", !hasHidden && \"invisible pointer-events-none\")}\n aria-hidden={!hasHidden || undefined}\n >\n <Button\n ref={triggerRef}\n type=\"button\"\n variant=\"outline\"\n size=\"sm\"\n aria-label=\"More filters\"\n aria-haspopup=\"dialog\"\n aria-expanded={hasHidden ? open : false}\n tabIndex={hasHidden ? 0 : -1}\n title={hasHidden ? \"More filters\" : undefined}\n onClick={() => {\n if (!hasHidden) return;\n if (open) {\n closeOverflowMenu();\n } else {\n openOverflowMenu();\n }\n }}\n className={cn(\n \"h-8 min-w-0 gap-1.5 px-2 text-xs font-normal\",\n activeHidden > 0 && \"border-primary/40 text-primary\",\n )}\n >\n <Icon icon={UiFilter} className=\"text-[14px]\" />\n {activeHidden > 0 && (\n <span className=\"rounded-full bg-muted px-1.5 text-[10px] font-medium text-muted-foreground\">\n {activeHidden}\n </span>\n )}\n </Button>\n\n {hasHidden && open && (\n <div\n role=\"dialog\"\n aria-label=\"Overflow filters\"\n className=\"absolute right-0 top-[calc(100%+0.375rem)] z-50 w-[min(34rem,calc(100vw-2rem))] overflow-visible rounded-md border border-border bg-popover p-2 text-popover-foreground shadow-lg shadow-black/5\"\n onClick={(event) => event.stopPropagation()}\n >\n <div className=\"mb-2 flex items-center justify-between gap-2 px-1\">\n <div className=\"text-[10px] font-medium uppercase tracking-wide text-muted-foreground\">\n Filters\n </div>\n <div className=\"flex items-center gap-1\">\n <button\n type=\"button\"\n className=\"rounded px-1.5 py-0.5 text-xs text-primary transition-colors hover:bg-accent focus:bg-accent focus:outline-none disabled:text-muted-foreground\"\n onClick={() => stagedFilters.forEach(clearFilterBarFilter)}\n disabled={stagedFilters.every((filter) => !isFilterBarFilterActive(filter))}\n >\n Clear all\n </button>\n <button\n type=\"button\"\n aria-label=\"Close overflow filters\"\n title=\"Close\"\n className=\"inline-flex h-6 w-6 items-center justify-center rounded text-muted-foreground transition-colors hover:bg-accent hover:text-accent-foreground focus:bg-accent focus:outline-none\"\n onClick={closeOverflowMenu}\n >\n <Icon icon={UiClose} className=\"text-sm\" />\n </button>\n </div>\n </div>\n <div className=\"divide-y divide-border/70 rounded-md border border-border/70\">\n {stagedFilters.map((filter) => {\n const active = isFilterBarFilterActive(filter);\n return (\n <div\n key={filter.key}\n data-overflow-filter-row={filter.key}\n className=\"grid h-12 grid-cols-[minmax(7rem,10rem)_auto_minmax(0,1fr)_auto] items-center gap-2 overflow-visible p-2\"\n >\n <label\n htmlFor={filterInputId(filter)}\n className=\"min-w-0 truncate text-[10px] font-medium uppercase tracking-wide text-muted-foreground\"\n title={filter.description ?? filter.label}\n >\n {filter.label}\n </label>\n <span className=\"text-sm text-muted-foreground\">=</span>\n <div className=\"min-w-0 overflow-visible\">\n <FilterBarContext.Provider value={{ autoSubmit: false }}>\n <FilterBarKeyValueControl filter={filter} />\n </FilterBarContext.Provider>\n </div>\n <button\n type=\"button\"\n aria-label={`Clear ${filter.label}`}\n title={`Clear ${filter.label}`}\n className=\"inline-flex h-6 w-6 items-center justify-center rounded text-muted-foreground transition-colors hover:bg-accent hover:text-accent-foreground focus:bg-accent focus:outline-none disabled:text-muted-foreground/40\"\n onClick={() => clearFilterBarFilter(filter)}\n disabled={!active}\n >\n <Icon icon={UiClose} className=\"text-sm\" />\n </button>\n </div>\n );\n })}\n </div>\n <div className=\"mt-3 flex justify-end gap-2\">\n <Button\n type=\"button\"\n variant=\"ghost\"\n size=\"sm\"\n className=\"h-8 px-3 text-xs\"\n onClick={closeOverflowMenu}\n >\n Close\n </Button>\n <Button\n type=\"button\"\n variant=\"default\"\n size=\"sm\"\n className=\"h-8 px-3 text-xs\"\n onClick={() => {\n applyStagedFilterValues(filters, stagedValues);\n onApply?.();\n setOpen(false);\n }}\n >\n Apply\n </Button>\n </div>\n </div>\n )}\n </div>\n );\n}\n\nfunction FilterBarKeyValueControl({ filter }: { filter: FilterBarFilter }) {\n if (filter.kind === \"text\") {\n return <TextFilterValueControl filter={filter} />;\n }\n if (filter.kind === \"lookup\") {\n return <LookupFilterValueControl filter={filter} />;\n }\n if (filter.kind === \"lookup-multi\") {\n return <LookupMultiFilterValueControl filter={filter} />;\n }\n if (filter.kind === \"enum\") {\n return <EnumFilterValueControl filter={filter} />;\n }\n if (filter.kind === \"boolean\") {\n return <BooleanFilterValueControl filter={filter} />;\n }\n if (filter.kind === \"select-multi\") {\n return <SelectMultiFilterValueControl filter={filter} />;\n }\n if (filter.kind === \"multi\") {\n return <MultiFilterField filter={filter} grow />;\n }\n if (filter.kind === \"nested-multi\") {\n return <NestedMultiFilterField filter={filter} grow />;\n }\n return <NumberFilterField filter={filter} grow />;\n}\n\nfunction filterInputId(filter: FilterBarFilter) {\n return `filterbar-overflow-${filter.key}`;\n}\n\nfunction valueInputClassName(disabled?: boolean) {\n return cn(\n \"h-8 w-full rounded-md border border-input bg-background px-2 text-sm text-foreground outline-none placeholder:text-muted-foreground focus-visible:ring-2 focus-visible:ring-ring\",\n disabled && \"cursor-not-allowed opacity-60\",\n );\n}\n\nfunction TextFilterValueControl({ filter }: { filter: FilterBarTextFilter }) {\n const [draft, setDraft] = useDebouncedTextDraft(filter.value, filter.onChange);\n\n return (\n <input\n id={filterInputId(filter)}\n type=\"text\"\n aria-label={filter.label}\n className={valueInputClassName(filter.disabled)}\n placeholder={filter.placeholder ?? \"Filter...\"}\n value={draft}\n disabled={filter.disabled}\n onChange={(event) => setDraft(event.target.value)}\n />\n );\n}\n\nfunction LookupFilterValueControl({ filter }: { filter: FilterBarLookupFilter }) {\n const [draft, setDraft] = useDebouncedTextDraft(filter.value, filter.onChange);\n const listId = `${filter.key}-overflow-lookup-options`;\n\n if (filter.inputType === \"date\") {\n return (\n <DateTimePicker\n id={filterInputId(filter)}\n aria-label={filter.label}\n className=\"w-full\"\n inputClassName={valueInputClassName(filter.disabled)}\n buttonClassName=\"right-1\"\n placeholder={filter.placeholder ?? \"Filter...\"}\n value={draft}\n list={listId}\n disabled={filter.disabled}\n onChange={setDraft}\n />\n );\n }\n\n return (\n <>\n <input\n id={filterInputId(filter)}\n type={filter.inputType === \"number\" ? \"number\" : \"text\"}\n aria-label={filter.label}\n className={valueInputClassName(filter.disabled)}\n placeholder={filter.placeholder ?? \"Filter...\"}\n value={draft}\n list={listId}\n disabled={filter.disabled}\n onChange={(event) => setDraft(event.target.value)}\n />\n <datalist id={listId}>\n {filter.options.map((option) => (\n <option\n key={option.value}\n value={option.value}\n label={option.label ?? option.value}\n disabled={option.disabled}\n />\n ))}\n </datalist>\n </>\n );\n}\n\nfunction LookupMultiFilterValueControl({ filter }: { filter: FilterBarLookupMultiFilter }) {\n return (\n <MultiSelect\n options={filter.options.map((option) => ({\n value: option.value,\n label: option.label ?? option.value,\n ...(option.disabled !== undefined ? { disabled: option.disabled } : {}),\n ...(option.title !== undefined ? { title: option.title } : {}),\n }))}\n value={filter.value}\n onChange={filter.onChange}\n placeholder={filter.placeholder ?? `Any ${filter.label.toLowerCase()}`}\n {...(filter.disabled !== undefined ? { disabled: filter.disabled } : {})}\n triggerClassName=\"h-8 w-full rounded-md border border-input bg-background px-2 text-sm shadow-none\"\n menuClassName=\"left-auto right-0\"\n />\n );\n}\n\nfunction EnumFilterValueControl({ filter }: { filter: FilterBarEnumFilter }) {\n return (\n <Select\n id={filterInputId(filter)}\n aria-label={filter.label}\n className=\"h-8 w-full rounded-md border border-input bg-background px-2 text-sm shadow-none\"\n value={filter.value}\n placeholder={filter.placeholder ?? `Any ${filter.label.toLowerCase()}`}\n disabled={filter.disabled}\n onChange={(event) => filter.onChange(event.target.value)}\n options={filter.options.map((option) => ({\n value: option.value,\n label: option.label ?? option.value,\n }))}\n />\n );\n}\n\nfunction BooleanFilterValueControl({ filter }: { filter: FilterBarBooleanFilter }) {\n return (\n <div className=\"flex h-8 items-center\">\n <input\n id={filterInputId(filter)}\n type=\"checkbox\"\n aria-label={filter.label}\n className=\"h-4 w-4 accent-primary\"\n checked={filter.value}\n disabled={filter.disabled}\n onChange={(event) => filter.onChange(event.target.checked)}\n />\n </div>\n );\n}\n\nfunction SelectMultiFilterValueControl({ filter }: { filter: FilterBarSelectMultiFilter }) {\n return (\n <MultiSelect\n options={filter.options}\n value={filter.value}\n onChange={filter.onChange}\n placeholder={filter.placeholder ?? `Any ${filter.label.toLowerCase()}`}\n {...(filter.disabled !== undefined ? { disabled: filter.disabled } : {})}\n triggerClassName=\"h-8 w-full rounded-md border border-input bg-background px-2 text-sm shadow-none\"\n menuClassName=\"left-auto right-0\"\n />\n );\n}\n\nexport function FilterBarRangePanel({\n kind,\n label,\n from = \"\",\n to = \"\",\n onApply,\n presets,\n timeEnabled,\n timeZone,\n timeZones,\n fromPlaceholder,\n toPlaceholder,\n emptyLabel,\n}: FilterBarRangeProps & { kind: \"date\" | \"time\"; label: string }) {\n return (\n <div className=\"w-72 p-3 text-popover-foreground\">\n <TimeRange\n kind={kind}\n label={label}\n align=\"left\"\n from={from}\n to={to}\n onApply={onApply}\n {...(presets ? { presets } : {})}\n {...(timeEnabled !== undefined ? { timeEnabled } : {})}\n {...(timeZone ? { timeZone } : {})}\n {...(timeZones ? { timeZones } : {})}\n {...(fromPlaceholder ? { fromPlaceholder } : {})}\n {...(toPlaceholder ? { toPlaceholder } : {})}\n {...(emptyLabel ? { emptyLabel } : {})}\n panelClassName=\"left-0 right-auto\"\n />\n </div>\n );\n}\n\nfunction EnumFilterField({ filter, grow }: { filter: FilterBarEnumFilter; grow: boolean }) {\n return (\n <label\n title={filter.description}\n className={cn(\n \"flex h-8 items-center gap-2 rounded-md border border-input bg-muted/30 pl-2 pr-1 text-xs\",\n grow ? \"min-w-[12rem] max-w-[18rem] flex-1\" : \"min-w-[11rem] max-w-[15rem] shrink-0\",\n filter.disabled && \"opacity-60\",\n filter.className,\n )}\n >\n <span className=\"whitespace-nowrap font-medium uppercase tracking-wide text-muted-foreground\">\n {filter.label}\n </span>\n <Select\n aria-label={filter.label}\n className=\"h-6 border-0 bg-transparent px-1 text-xs shadow-none focus-visible:ring-0\"\n value={filter.value}\n placeholder={filter.placeholder ?? `Any ${filter.label.toLowerCase()}`}\n disabled={filter.disabled}\n onChange={(event) => filter.onChange(event.target.value)}\n options={filter.options.map((option) => ({\n value: option.value,\n label: option.label ?? option.value,\n }))}\n />\n </label>\n );\n}\n\nfunction BooleanFilterField({ filter }: { filter: FilterBarBooleanFilter }) {\n return (\n <label\n title={filter.description}\n className={cn(\n \"flex h-8 shrink-0 items-center gap-2 rounded-md border border-input bg-muted/30 px-2 text-xs\",\n filter.disabled && \"opacity-60\",\n filter.className,\n )}\n >\n <input\n type=\"checkbox\"\n aria-label={filter.label}\n className=\"h-3.5 w-3.5 accent-primary\"\n checked={filter.value}\n disabled={filter.disabled}\n onChange={(event) => filter.onChange(event.target.checked)}\n />\n <span className=\"whitespace-nowrap font-medium uppercase tracking-wide text-muted-foreground\">\n {filter.label}\n </span>\n </label>\n );\n}\n\nfunction SearchField({ search }: { search: FilterBarSearchProps }) {\n const [draft, setDraft] = useDebouncedTextDraft(search.value, search.onChange);\n\n return (\n <div className=\"flex min-w-[14rem] max-w-[24rem] flex-1 items-center gap-2\">\n <label\n className={cn(\n \"flex h-8 min-w-0 flex-1 items-center rounded-md border border-input bg-background px-3 text-sm\",\n search.className,\n )}\n >\n {draft.trim() ? (\n <span className=\"mr-2 whitespace-nowrap text-[10px] font-medium uppercase tracking-wide text-muted-foreground\">\n {search.ariaLabel ?? \"Search\"}\n </span>\n ) : (\n <Icon icon={UiSearch} className=\"mr-2 shrink-0 text-muted-foreground\" />\n )}\n <input\n type=\"search\"\n aria-label={search.ariaLabel ?? search.placeholder ?? \"Search\"}\n className=\"w-full bg-transparent outline-none placeholder:text-muted-foreground\"\n placeholder={search.placeholder ?? \"Search…\"}\n value={draft}\n onChange={(event) => setDraft(event.target.value)}\n />\n </label>\n </div>\n );\n}\n\nfunction TextFilterField({ filter, grow }: { filter: FilterBarTextFilter; grow: boolean }) {\n const [draft, setDraft] = useDebouncedTextDraft(filter.value, filter.onChange);\n\n return (\n <label\n title={filter.description}\n className={cn(\n \"flex h-8 items-center gap-2 rounded-md border border-input bg-muted/30 pl-2 pr-2 text-xs\",\n grow ? \"min-w-[12rem] max-w-[18rem] flex-1\" : \"min-w-[11rem] max-w-[15rem] shrink-0\",\n filter.disabled && \"opacity-60\",\n filter.className,\n )}\n >\n <span className=\"whitespace-nowrap font-medium uppercase tracking-wide text-muted-foreground\">\n {filter.label}\n </span>\n <input\n type=\"text\"\n aria-label={filter.label}\n className=\"w-full min-w-0 bg-transparent text-sm text-foreground outline-none placeholder:text-muted-foreground disabled:cursor-not-allowed\"\n placeholder={filter.placeholder ?? \"Filter…\"}\n value={draft}\n disabled={filter.disabled}\n onChange={(event) => setDraft(event.target.value)}\n />\n </label>\n );\n}\n\nfunction LookupFilterField({ filter, grow }: { filter: FilterBarLookupFilter; grow: boolean }) {\n const [draft, setDraft] = useDebouncedTextDraft(filter.value, filter.onChange);\n const listId = `${filter.key}-lookup-options`;\n\n return (\n <label\n title={filter.description}\n className={cn(\n \"flex h-8 items-center gap-2 rounded-md border border-input bg-muted/30 pl-2 pr-2 text-xs\",\n grow ? \"min-w-[12rem] max-w-[18rem] flex-1\" : \"min-w-[11rem] max-w-[15rem] shrink-0\",\n filter.disabled && \"opacity-60\",\n filter.className,\n )}\n >\n <span className=\"whitespace-nowrap font-medium uppercase tracking-wide text-muted-foreground\">\n {filter.label}\n </span>\n {filter.inputType === \"date\" ? (\n <DateTimePicker\n aria-label={filter.label}\n className=\"w-full\"\n inputClassName=\"w-full min-w-0 border-0 bg-transparent px-0 pr-6 text-sm text-foreground shadow-none focus-visible:ring-0\"\n buttonClassName=\"right-0\"\n placeholder={filter.placeholder ?? \"Filter…\"}\n value={draft}\n list={listId}\n disabled={filter.disabled}\n onChange={setDraft}\n />\n ) : (\n <input\n type={filter.inputType === \"number\" ? \"number\" : \"text\"}\n aria-label={filter.label}\n className=\"w-full min-w-0 bg-transparent text-sm text-foreground outline-none placeholder:text-muted-foreground disabled:cursor-not-allowed\"\n placeholder={filter.placeholder ?? \"Filter…\"}\n value={draft}\n list={listId}\n disabled={filter.disabled}\n onChange={(event) => setDraft(event.target.value)}\n />\n )}\n <datalist id={listId}>\n {filter.options.map((option) => (\n <option\n key={option.value}\n value={option.value}\n label={option.label ?? option.value}\n disabled={option.disabled}\n />\n ))}\n </datalist>\n </label>\n );\n}\n\nfunction LookupMultiFilterField({\n filter,\n grow,\n}: {\n filter: FilterBarLookupMultiFilter;\n grow: boolean;\n}) {\n const [draft, setDraft] = useDebouncedTextDraft(filter.value.join(\", \"), (next) =>\n filter.onChange(parseLookupMultiValue(next)),\n );\n const listId = `${filter.key}-lookup-options`;\n\n return (\n <label\n title={filter.description}\n className={cn(\n \"flex h-8 items-center gap-2 rounded-md border border-input bg-muted/30 pl-2 pr-2 text-xs\",\n grow ? \"min-w-[12rem] max-w-[18rem] flex-1\" : \"min-w-[11rem] max-w-[15rem] shrink-0\",\n filter.disabled && \"opacity-60\",\n filter.className,\n )}\n >\n <span className=\"whitespace-nowrap font-medium uppercase tracking-wide text-muted-foreground\">\n {filter.label}\n </span>\n <input\n type=\"text\"\n aria-label={filter.label}\n className=\"w-full min-w-0 bg-transparent text-sm text-foreground outline-none placeholder:text-muted-foreground disabled:cursor-not-allowed\"\n placeholder={filter.placeholder ?? \"value-1, value-2\"}\n value={draft}\n list={listId}\n disabled={filter.disabled}\n onChange={(event) => setDraft(event.target.value)}\n />\n <datalist id={listId}>\n {filter.options.map((option) => (\n <option\n key={option.value}\n value={option.value}\n label={option.label ?? option.value}\n disabled={option.disabled}\n />\n ))}\n </datalist>\n </label>\n );\n}\n\nfunction NumberFilterField({ filter, grow }: { filter: FilterBarNumberFilter; grow: boolean }) {\n const rootRef = useRef<HTMLDivElement>(null);\n const triggerRef = useRef<HTMLButtonElement>(null);\n const [open, setOpen] = useState(false);\n\n useDismissablePopup(open, rootRef, triggerRef, () => setOpen(false));\n\n const bounds = resolveNumberFilterBounds(filter);\n const [draft, setDraft] = useDebouncedNumberDraft(filter.value, filter.onChange);\n const sliderMin = clampNumber(parseFilterNumber(draft.min) ?? bounds.min, bounds.min, bounds.max);\n const sliderMax = clampNumber(parseFilterNumber(draft.max) ?? bounds.max, bounds.min, bounds.max);\n const activeMin = Math.min(sliderMin, sliderMax);\n const activeMax = Math.max(sliderMin, sliderMax);\n const summary = summarizeNumberFilter(filter, bounds, draft);\n\n return (\n <div\n ref={rootRef}\n title={filter.description}\n className={cn(\n \"relative min-w-0\",\n grow ? \"min-w-[8rem] max-w-[12rem] flex-1\" : \"shrink-0\",\n filter.disabled && \"opacity-60\",\n filter.className,\n )}\n >\n <Button\n ref={triggerRef}\n type=\"button\"\n variant=\"outline\"\n size=\"sm\"\n aria-label={`${filter.label} filter`}\n aria-haspopup=\"dialog\"\n aria-expanded={open}\n disabled={filter.disabled}\n onClick={() => setOpen((current) => !current)}\n className={cn(\n \"min-w-0 gap-2 font-normal\",\n grow ? \"w-full max-w-[12rem] justify-between\" : \"w-auto max-w-[9.5rem] px-2.5\",\n summary === filter.label && \"text-muted-foreground\",\n )}\n >\n <span className=\"truncate\">{summary}</span>\n <Icon icon={open ? UiChevronUp : UiChevronDown} className=\"text-muted-foreground\" />\n </Button>\n\n {open && (\n <div className=\"absolute left-0 top-[calc(100%+0.375rem)] z-50 min-w-[18rem] max-w-[22rem] rounded-md border border-border bg-popover p-3 text-popover-foreground shadow-lg shadow-black/5\">\n <div className=\"mb-3 flex items-center justify-between gap-2\">\n <div className=\"text-[10px] font-medium uppercase tracking-wide text-muted-foreground\">\n {filter.label}\n </div>\n <button\n type=\"button\"\n className=\"text-[10px] text-primary disabled:text-muted-foreground\"\n onClick={() => {\n setDraft({});\n filter.onChange({});\n }}\n disabled={!String(draft.min ?? \"\").trim() && !String(draft.max ?? \"\").trim()}\n >\n Clear all\n </button>\n </div>\n\n <div className=\"space-y-3\">\n <div className=\"space-y-2\">\n <div className=\"flex items-center justify-between text-[11px] text-muted-foreground\">\n <span>{formatNumberValue(bounds.min, filter)}</span>\n <span>{formatNumberValue(bounds.max, filter)}</span>\n </div>\n <div className=\"relative h-6\">\n <RangeSlider\n min={bounds.min}\n max={bounds.max}\n step={bounds.step}\n value={[activeMin, activeMax]}\n ariaLabelMin={`${filter.label} minimum slider`}\n ariaLabelMax={`${filter.label} maximum slider`}\n onChange={([nextMin, nextMax]) =>\n setDraft(numberFilterValueFromSlider([nextMin, nextMax], bounds))\n }\n />\n </div>\n </div>\n\n <div className=\"grid grid-cols-2 gap-2\">\n <div className=\"space-y-1\">\n <label className=\"text-[10px] text-muted-foreground\">Min</label>\n <input\n type=\"number\"\n inputMode=\"decimal\"\n step={bounds.step}\n aria-label={`${filter.label} minimum`}\n className=\"h-8 w-full rounded-md border border-input bg-background px-2 text-xs outline-none focus-visible:ring-2 focus-visible:ring-ring\"\n placeholder={filter.minPlaceholder ?? formatNumberValue(bounds.min, filter)}\n value={draft.min ?? \"\"}\n onChange={(event) =>\n setDraft(\n normalizeNumberFilterValue(\n { min: event.target.value, max: draft.max ?? \"\" },\n \"min-input\",\n ),\n )\n }\n />\n </div>\n <div className=\"space-y-1\">\n <label className=\"text-[10px] text-muted-foreground\">Max</label>\n <input\n type=\"number\"\n inputMode=\"decimal\"\n step={bounds.step}\n aria-label={`${filter.label} maximum`}\n className=\"h-8 w-full rounded-md border border-input bg-background px-2 text-xs outline-none focus-visible:ring-2 focus-visible:ring-ring\"\n placeholder={filter.maxPlaceholder ?? formatNumberValue(bounds.max, filter)}\n value={draft.max ?? \"\"}\n onChange={(event) =>\n setDraft(\n normalizeNumberFilterValue(\n { min: draft.min ?? \"\", max: event.target.value },\n \"max-input\",\n ),\n )\n }\n />\n </div>\n </div>\n </div>\n </div>\n )}\n </div>\n );\n}\n\nfunction NumberFilterPanel({\n filter,\n chrome = \"full\",\n}: {\n filter: FilterBarNumberFilter;\n chrome?: FilterBarFilterPanelChrome;\n}) {\n const bounds = resolveNumberFilterBounds(filter);\n const [draft, setDraft] = useDebouncedNumberDraft(filter.value, filter.onChange);\n const sliderMin = clampNumber(parseFilterNumber(draft.min) ?? bounds.min, bounds.min, bounds.max);\n const sliderMax = clampNumber(parseFilterNumber(draft.max) ?? bounds.max, bounds.min, bounds.max);\n const activeMin = Math.min(sliderMin, sliderMax);\n const activeMax = Math.max(sliderMin, sliderMax);\n const embedded = chrome === \"embedded\";\n\n return (\n <div\n data-filter-panel-chrome={chrome}\n className={cn(\n \"min-w-[18rem] max-w-[22rem] text-popover-foreground\",\n embedded\n ? \"p-0\"\n : \"rounded-md border border-border bg-popover p-3 shadow-sm shadow-black/5\",\n )}\n >\n {!embedded && (\n <div className=\"mb-3 flex items-center justify-between gap-2\">\n <div className=\"text-[10px] font-medium uppercase tracking-wide text-muted-foreground\">\n {filter.label}\n </div>\n <button\n type=\"button\"\n className=\"text-[10px] text-primary disabled:text-muted-foreground\"\n onClick={() => {\n setDraft({});\n filter.onChange({});\n }}\n disabled={!String(draft.min ?? \"\").trim() && !String(draft.max ?? \"\").trim()}\n >\n Clear all\n </button>\n </div>\n )}\n\n <div className=\"space-y-3\">\n <div className=\"space-y-2\">\n <div className=\"flex items-center justify-between text-[11px] text-muted-foreground\">\n <span>{formatNumberValue(bounds.min, filter)}</span>\n <span>{formatNumberValue(bounds.max, filter)}</span>\n </div>\n <div className=\"relative h-6\">\n <RangeSlider\n min={bounds.min}\n max={bounds.max}\n step={bounds.step}\n value={[activeMin, activeMax]}\n ariaLabelMin={`${filter.label} minimum slider`}\n ariaLabelMax={`${filter.label} maximum slider`}\n onChange={([nextMin, nextMax]) =>\n setDraft(numberFilterValueFromSlider([nextMin, nextMax], bounds))\n }\n />\n </div>\n </div>\n\n <div className=\"grid grid-cols-2 gap-2\">\n <div className=\"space-y-1\">\n <label className=\"text-[10px] text-muted-foreground\">Min</label>\n <input\n type=\"number\"\n inputMode=\"decimal\"\n step={bounds.step}\n aria-label={`${filter.label} minimum`}\n className=\"h-8 w-full rounded-md border border-input bg-background px-2 text-xs outline-none focus-visible:ring-2 focus-visible:ring-ring\"\n placeholder={filter.minPlaceholder ?? formatNumberValue(bounds.min, filter)}\n value={draft.min ?? \"\"}\n onChange={(event) =>\n setDraft(\n normalizeNumberFilterValue(\n { min: event.target.value, max: draft.max ?? \"\" },\n \"min-input\",\n ),\n )\n }\n />\n </div>\n <div className=\"space-y-1\">\n <label className=\"text-[10px] text-muted-foreground\">Max</label>\n <input\n type=\"number\"\n inputMode=\"decimal\"\n step={bounds.step}\n aria-label={`${filter.label} maximum`}\n className=\"h-8 w-full rounded-md border border-input bg-background px-2 text-xs outline-none focus-visible:ring-2 focus-visible:ring-ring\"\n placeholder={filter.maxPlaceholder ?? formatNumberValue(bounds.max, filter)}\n value={draft.max ?? \"\"}\n onChange={(event) =>\n setDraft(\n normalizeNumberFilterValue(\n { min: draft.min ?? \"\", max: event.target.value },\n \"max-input\",\n ),\n )\n }\n />\n </div>\n </div>\n </div>\n </div>\n );\n}\n\nfunction MultiFilterField({ filter, grow }: { filter: FilterBarMultiFilter; grow: boolean }) {\n const rootRef = useRef<HTMLDivElement>(null);\n const triggerRef = useRef<HTMLButtonElement>(null);\n const [open, setOpen] = useState(false);\n const [optionQuery, setOptionQuery] = useState(\"\");\n const [draft, setDraft] = useDebouncedMultiDraft(filter.value, filter.onChange);\n\n useDismissablePopup(open, rootRef, triggerRef, () => setOpen(false));\n\n const summary = summarizeMultiFilter(filter.label, draft);\n const showOptionFilter = filter.options.length > 7;\n const visibleOptions = useMemo(() => {\n const query = optionQuery.trim().toLowerCase();\n if (!query) return filter.options;\n return filter.options.filter((option) =>\n multiSelectOptionText(option).toLowerCase().includes(query),\n );\n }, [filter.options, optionQuery]);\n\n return (\n <div\n ref={rootRef}\n title={filter.description}\n className={cn(\n \"relative min-w-0\",\n grow ? \"min-w-[8rem] max-w-[12rem] flex-1\" : \"shrink-0\",\n filter.disabled && \"opacity-60\",\n filter.className,\n )}\n >\n <Button\n ref={triggerRef}\n type=\"button\"\n variant=\"outline\"\n size=\"sm\"\n aria-label={`${filter.label} filter`}\n aria-haspopup=\"dialog\"\n aria-expanded={open}\n disabled={filter.disabled}\n onClick={() => setOpen((current) => !current)}\n className={cn(\n \"min-w-0 gap-2 font-normal\",\n grow ? \"w-full max-w-[12rem] justify-between\" : \"w-auto max-w-[8.5rem] px-2.5\",\n summary === filter.label && \"text-muted-foreground\",\n )}\n >\n <span className=\"truncate\">{summary}</span>\n <Icon icon={open ? UiChevronUp : UiChevronDown} className=\"text-muted-foreground\" />\n </Button>\n\n {open && (\n <div className=\"absolute left-0 top-[calc(100%+0.375rem)] z-50 min-w-[18rem] max-w-[22rem] rounded-md border border-border bg-popover p-2 text-popover-foreground shadow-lg shadow-black/5\">\n <div className=\"mb-2 flex items-center justify-between gap-2\">\n <div className=\"text-[10px] font-medium uppercase tracking-wide text-muted-foreground\">\n {filter.label}\n </div>\n <button\n type=\"button\"\n className=\"text-[10px] text-primary disabled:text-muted-foreground\"\n onClick={() => setDraft({})}\n disabled={Object.keys(draft).length === 0}\n >\n Clear all\n </button>\n </div>\n\n {showOptionFilter && (\n <div className=\"mb-2 flex items-center gap-2 rounded-md border border-input bg-background px-2\">\n <Icon icon={UiSearch} className=\"shrink-0 text-muted-foreground\" />\n <input\n type=\"search\"\n aria-label={`Filter ${filter.label} options`}\n className=\"h-8 min-w-0 flex-1 bg-transparent text-sm outline-none placeholder:text-muted-foreground\"\n placeholder={`Filter ${filter.label.toLowerCase()}`}\n value={optionQuery}\n onChange={(event) => setOptionQuery(event.target.value)}\n />\n </div>\n )}\n\n <div className=\"max-h-72 space-y-0.5 overflow-auto\">\n {visibleOptions.map((option) => {\n const mode = draft[option.value] ?? \"neutral\";\n const title = option.title ?? multiSelectOptionText(option);\n\n return (\n <div\n key={option.value}\n role=\"button\"\n tabIndex={0}\n data-filter-option={option.value}\n className=\"rounded-md px-1.5 py-0.5 hover:bg-accent/50 focus-visible:bg-accent/50 focus-visible:outline-none\"\n onClick={() =>\n setDraft(updateMultiFilterValue(draft, option.value, nextFilterMode(mode)))\n }\n onKeyDown={(event) => {\n if (event.key === \"Enter\" || event.key === \" \") {\n event.preventDefault();\n setDraft(updateMultiFilterValue(draft, option.value, nextFilterMode(mode)));\n }\n }}\n >\n <FilterPill\n className=\"w-full justify-between\"\n label={option.label}\n mode={mode}\n title={title}\n togglePosition=\"right\"\n onModeChange={(next) =>\n setDraft(updateMultiFilterValue(draft, option.value, next))\n }\n />\n </div>\n );\n })}\n {visibleOptions.length === 0 && (\n <div className=\"px-2 py-3 text-sm text-muted-foreground\">No options found</div>\n )}\n </div>\n </div>\n )}\n </div>\n );\n}\n\nfunction MultiFilterPanel({\n filter,\n chrome = \"full\",\n}: {\n filter: FilterBarMultiFilter;\n chrome?: FilterBarFilterPanelChrome;\n}) {\n const [optionQuery, setOptionQuery] = useState(\"\");\n const [draft, setDraft] = useDebouncedMultiDraft(filter.value, filter.onChange);\n const showOptionFilter = filter.options.length > 7;\n const embedded = chrome === \"embedded\";\n const visibleOptions = useMemo(() => {\n const query = optionQuery.trim().toLowerCase();\n if (!query) return filter.options;\n return filter.options.filter((option) =>\n multiSelectOptionText(option).toLowerCase().includes(query),\n );\n }, [filter.options, optionQuery]);\n\n return (\n <div\n data-filter-panel-chrome={chrome}\n className={cn(\n \"min-w-[18rem] max-w-[22rem] text-popover-foreground\",\n embedded\n ? \"p-0\"\n : \"rounded-md border border-border bg-popover p-2 shadow-sm shadow-black/5\",\n )}\n >\n {!embedded && (\n <div className=\"mb-2 flex items-center justify-between gap-2\">\n <div className=\"text-[10px] font-medium uppercase tracking-wide text-muted-foreground\">\n {filter.label}\n </div>\n <button\n type=\"button\"\n className=\"text-[10px] text-primary disabled:text-muted-foreground\"\n onClick={() => setDraft({})}\n disabled={Object.keys(draft).length === 0}\n >\n Clear all\n </button>\n </div>\n )}\n\n {showOptionFilter && (\n <div className=\"mb-2 flex items-center gap-2 rounded-md border border-input bg-background px-2\">\n <Icon icon={UiSearch} className=\"shrink-0 text-muted-foreground\" />\n <input\n type=\"search\"\n aria-label={`Filter ${filter.label} options`}\n className=\"h-8 min-w-0 flex-1 bg-transparent text-sm outline-none placeholder:text-muted-foreground\"\n placeholder={`Filter ${filter.label.toLowerCase()}`}\n value={optionQuery}\n onChange={(event) => setOptionQuery(event.target.value)}\n />\n </div>\n )}\n\n <div className=\"max-h-72 space-y-0.5 overflow-auto\">\n {visibleOptions.map((option) => {\n const mode = draft[option.value] ?? \"neutral\";\n const title = option.title ?? multiSelectOptionText(option);\n\n return (\n <div\n key={option.value}\n role=\"button\"\n tabIndex={0}\n data-filter-option={option.value}\n className=\"rounded-md px-1.5 py-0.5 hover:bg-accent/50 focus-visible:bg-accent/50 focus-visible:outline-none\"\n onClick={() =>\n setDraft(updateMultiFilterValue(draft, option.value, nextFilterMode(mode)))\n }\n onKeyDown={(event) => {\n if (event.key === \"Enter\" || event.key === \" \") {\n event.preventDefault();\n setDraft(updateMultiFilterValue(draft, option.value, nextFilterMode(mode)));\n }\n }}\n >\n <FilterPill\n className=\"w-full justify-between\"\n label={option.label}\n mode={mode}\n title={title}\n togglePosition=\"right\"\n onModeChange={(next) => setDraft(updateMultiFilterValue(draft, option.value, next))}\n />\n </div>\n );\n })}\n {visibleOptions.length === 0 && (\n <div className=\"px-2 py-3 text-sm text-muted-foreground\">No options found</div>\n )}\n </div>\n </div>\n );\n}\n\nfunction NestedMultiFilterPanel({\n filter,\n chrome = \"full\",\n}: {\n filter: FilterBarNestedMultiFilter;\n chrome?: FilterBarFilterPanelChrome;\n}) {\n const [activeGroup, setActiveGroup] = useState<string | null>(filter.groups[0]?.groupKey ?? null);\n const [draft, setDraft] = useDebouncedMultiDraft(filter.value, filter.onChange);\n const groups = filter.groups;\n const embedded = chrome === \"embedded\";\n const activeGroupData = useMemo(\n () => groups.find((group) => group.groupKey === activeGroup) ?? groups[0] ?? null,\n [groups, activeGroup],\n );\n\n const selectedByGroup = useMemo(() => {\n const counts: Record<string, number> = {};\n for (const group of groups) {\n let n = 0;\n for (const option of group.options) {\n if (draft[option.value]) n += 1;\n }\n counts[group.groupKey] = n;\n }\n return counts;\n }, [groups, draft]);\n\n const sortedGroups = useMemo(() => {\n const selected: typeof groups = [];\n const rest: typeof groups = [];\n for (const group of groups) {\n if ((selectedByGroup[group.groupKey] ?? 0) > 0) selected.push(group);\n else rest.push(group);\n }\n return [...selected, ...rest];\n }, [groups, selectedByGroup]);\n\n const clearGroup = (groupKey: string) => {\n const group = groups.find((g) => g.groupKey === groupKey);\n if (!group) return;\n const next = { ...draft };\n for (const option of group.options) {\n delete next[option.value];\n }\n setDraft(next);\n };\n\n return (\n <div role=\"dialog\" className=\"flex\">\n <div\n data-filter-panel-chrome={chrome}\n className={cn(\n \"min-w-[14rem] max-w-[16rem] text-popover-foreground\",\n embedded\n ? \"p-0\"\n : \"rounded-md border border-border bg-popover p-2 shadow-sm shadow-black/5\",\n )}\n >\n {!embedded && (\n <div className=\"mb-2 flex items-center justify-between gap-2\">\n <div className=\"text-[10px] font-medium uppercase tracking-wide text-muted-foreground\">\n {filter.label}\n </div>\n <button\n type=\"button\"\n className=\"text-[10px] text-primary disabled:text-muted-foreground\"\n onClick={() => setDraft({})}\n disabled={Object.keys(draft).length === 0}\n >\n Clear all\n </button>\n </div>\n )}\n\n <div className=\"max-h-72 space-y-0.5 overflow-auto\">\n {sortedGroups.map((group) => {\n const selected = selectedByGroup[group.groupKey] ?? 0;\n const isActive = group.groupKey === activeGroup;\n return (\n <div\n key={group.groupKey}\n role=\"button\"\n tabIndex={0}\n onMouseEnter={() => setActiveGroup(group.groupKey)}\n onFocus={() => setActiveGroup(group.groupKey)}\n onClick={() => setActiveGroup(group.groupKey)}\n onKeyDown={(event) => {\n if (event.key === \"Enter\" || event.key === \" \" || event.key === \"ArrowRight\") {\n event.preventDefault();\n setActiveGroup(group.groupKey);\n }\n }}\n className={cn(\n \"flex cursor-pointer items-center justify-between gap-2 rounded-md px-1.5 py-0.5 text-sm\",\n \"hover:bg-accent/50 focus-visible:bg-accent/50 focus-visible:outline-none\",\n isActive && \"bg-accent/60\",\n )}\n >\n <span className=\"min-w-0 flex-1 truncate\">{group.label ?? group.groupKey}</span>\n {selected > 0 && (\n <span className=\"rounded-full bg-primary/15 px-1.5 text-[10px] font-medium text-primary\">\n {selected}/{group.options.length}\n </span>\n )}\n <Icon icon={UiChevronRight} className=\"shrink-0 text-muted-foreground\" />\n </div>\n );\n })}\n {groups.length === 0 && (\n <div className=\"px-2 py-3 text-sm text-muted-foreground\">No groups</div>\n )}\n </div>\n </div>\n\n {activeGroupData && (\n <div\n onMouseEnter={() => setActiveGroup(activeGroupData.groupKey)}\n className=\"ml-1.5 min-w-[16rem] max-w-[20rem] rounded-md border border-border bg-popover p-2 text-popover-foreground shadow-sm shadow-black/5\"\n >\n <div className=\"mb-2 flex items-center justify-between gap-2\">\n <div className=\"text-[10px] font-medium uppercase tracking-wide text-muted-foreground\">\n {activeGroupData.label ?? activeGroupData.groupKey}\n </div>\n <button\n type=\"button\"\n className=\"text-[10px] text-primary disabled:text-muted-foreground\"\n onClick={() => clearGroup(activeGroupData.groupKey)}\n disabled={(selectedByGroup[activeGroupData.groupKey] ?? 0) === 0}\n >\n Clear\n </button>\n </div>\n\n <div className=\"max-h-72 space-y-0.5 overflow-auto\">\n {activeGroupData.options.map((option) => {\n const mode = draft[option.value] ?? \"neutral\";\n const title = option.title ?? multiSelectOptionText(option);\n return (\n <div\n key={option.value}\n role=\"button\"\n tabIndex={0}\n data-filter-option={option.value}\n className=\"rounded-md px-1.5 py-0.5 hover:bg-accent/50 focus-visible:bg-accent/50 focus-visible:outline-none\"\n onClick={() =>\n setDraft(updateMultiFilterValue(draft, option.value, nextFilterMode(mode)))\n }\n onKeyDown={(event) => {\n if (event.key === \"Enter\" || event.key === \" \") {\n event.preventDefault();\n setDraft(updateMultiFilterValue(draft, option.value, nextFilterMode(mode)));\n } else if (event.key === \"ArrowLeft\") {\n event.preventDefault();\n setActiveGroup(null);\n }\n }}\n >\n <FilterPill\n className=\"w-full justify-between\"\n label={renderNestedOptionLabel(option, activeGroupData.groupKey)}\n mode={mode}\n title={title}\n togglePosition=\"right\"\n onModeChange={(next) =>\n setDraft(updateMultiFilterValue(draft, option.value, next))\n }\n />\n </div>\n );\n })}\n {activeGroupData.options.length === 0 && (\n <div className=\"px-2 py-3 text-sm text-muted-foreground\">No values</div>\n )}\n </div>\n </div>\n )}\n </div>\n );\n}\n\nfunction multiSelectOptionText(option: MultiSelectOption) {\n const label = typeof option.label === \"string\" ? option.label : \"\";\n return [option.value, label, option.title ?? \"\"].filter(Boolean).join(\" \");\n}\n\nfunction NestedMultiFilterField({\n filter,\n grow,\n}: {\n filter: FilterBarNestedMultiFilter;\n grow: boolean;\n}) {\n const rootRef = useRef<HTMLDivElement>(null);\n const triggerRef = useRef<HTMLButtonElement>(null);\n const [open, setOpen] = useState(false);\n const [activeGroup, setActiveGroup] = useState<string | null>(null);\n const [draft, setDraft] = useDebouncedMultiDraft(filter.value, filter.onChange);\n\n useDismissablePopup(open, rootRef, triggerRef, () => {\n setOpen(false);\n setActiveGroup(null);\n });\n\n const summary = summarizeMultiFilter(filter.label, draft);\n const groups = filter.groups;\n const activeGroupData = useMemo(\n () => groups.find((group) => group.groupKey === activeGroup) ?? null,\n [groups, activeGroup],\n );\n\n // Selected count per group, used in the outer list.\n const selectedByGroup = useMemo(() => {\n const counts: Record<string, number> = {};\n for (const group of groups) {\n let n = 0;\n for (const option of group.options) {\n if (draft[option.value]) n += 1;\n }\n counts[group.groupKey] = n;\n }\n return counts;\n }, [groups, draft]);\n\n // Groups with active selections sort to the top so the user always sees\n // what's filtered without scrolling. Within each partition, the original\n // order from the consumer is preserved.\n const sortedGroups = useMemo(() => {\n const selected: typeof groups = [];\n const rest: typeof groups = [];\n for (const group of groups) {\n if ((selectedByGroup[group.groupKey] ?? 0) > 0) selected.push(group);\n else rest.push(group);\n }\n return [...selected, ...rest];\n }, [groups, selectedByGroup]);\n\n const clearGroup = (groupKey: string) => {\n const group = groups.find((g) => g.groupKey === groupKey);\n if (!group) return;\n const next = { ...draft };\n for (const option of group.options) {\n delete next[option.value];\n }\n setDraft(next);\n };\n\n return (\n <div\n ref={rootRef}\n title={filter.description}\n className={cn(\n \"relative min-w-0\",\n grow ? \"min-w-[8rem] max-w-[12rem] flex-1\" : \"shrink-0\",\n filter.disabled && \"opacity-60\",\n filter.className,\n )}\n >\n <Button\n ref={triggerRef}\n type=\"button\"\n variant=\"outline\"\n size=\"sm\"\n aria-label={`${filter.label} filter`}\n aria-haspopup=\"dialog\"\n aria-expanded={open}\n disabled={filter.disabled}\n onClick={() => {\n setOpen((current) => !current);\n if (open) setActiveGroup(null);\n }}\n className={cn(\n \"min-w-0 gap-2 font-normal\",\n grow ? \"w-full max-w-[12rem] justify-between\" : \"w-auto max-w-[8.5rem] px-2.5\",\n summary === filter.label && \"text-muted-foreground\",\n )}\n >\n <span className=\"truncate\">{summary}</span>\n <Icon icon={open ? UiChevronUp : UiChevronDown} className=\"text-muted-foreground\" />\n </Button>\n\n {open && (\n <div\n role=\"dialog\"\n onKeyDown={(event) => {\n if (event.key === \"Escape\") {\n event.preventDefault();\n setOpen(false);\n setActiveGroup(null);\n }\n }}\n className=\"absolute left-0 top-[calc(100%+0.375rem)] z-50 flex\"\n >\n <div className=\"min-w-[14rem] max-w-[16rem] rounded-md border border-border bg-popover p-2 text-popover-foreground shadow-lg shadow-black/5\">\n <div className=\"mb-2 flex items-center justify-between gap-2\">\n <div className=\"text-[10px] font-medium uppercase tracking-wide text-muted-foreground\">\n {filter.label}\n </div>\n <button\n type=\"button\"\n className=\"text-[10px] text-primary disabled:text-muted-foreground\"\n onClick={() => setDraft({})}\n disabled={Object.keys(draft).length === 0}\n >\n Clear all\n </button>\n </div>\n\n <div className=\"max-h-72 space-y-0.5 overflow-auto\">\n {sortedGroups.map((group) => {\n const selected = selectedByGroup[group.groupKey] ?? 0;\n const isActive = group.groupKey === activeGroup;\n return (\n <div\n key={group.groupKey}\n role=\"button\"\n tabIndex={0}\n onMouseEnter={() => setActiveGroup(group.groupKey)}\n onFocus={() => setActiveGroup(group.groupKey)}\n onClick={() => setActiveGroup(group.groupKey)}\n onKeyDown={(event) => {\n if (\n event.key === \"Enter\" ||\n event.key === \" \" ||\n event.key === \"ArrowRight\"\n ) {\n event.preventDefault();\n setActiveGroup(group.groupKey);\n }\n }}\n className={cn(\n \"flex cursor-pointer items-center justify-between gap-2 rounded-md px-1.5 py-0.5 text-sm\",\n \"hover:bg-accent/50 focus-visible:bg-accent/50 focus-visible:outline-none\",\n isActive && \"bg-accent/60\",\n )}\n >\n <span className=\"min-w-0 flex-1 truncate\">{group.label ?? group.groupKey}</span>\n {selected > 0 && (\n <span className=\"rounded-full bg-primary/15 px-1.5 text-[10px] font-medium text-primary\">\n {selected}/{group.options.length}\n </span>\n )}\n <Icon icon={UiChevronRight} className=\"shrink-0 text-muted-foreground\" />\n </div>\n );\n })}\n {groups.length === 0 && (\n <div className=\"px-2 py-3 text-sm text-muted-foreground\">No groups</div>\n )}\n </div>\n </div>\n\n {activeGroupData && (\n <div\n onMouseEnter={() => setActiveGroup(activeGroupData.groupKey)}\n className=\"ml-1.5 min-w-[16rem] max-w-[20rem] rounded-md border border-border bg-popover p-2 text-popover-foreground shadow-lg shadow-black/5\"\n >\n <div className=\"mb-2 flex items-center justify-between gap-2\">\n <div className=\"text-[10px] font-medium uppercase tracking-wide text-muted-foreground\">\n {activeGroupData.label ?? activeGroupData.groupKey}\n </div>\n <button\n type=\"button\"\n className=\"text-[10px] text-primary disabled:text-muted-foreground\"\n onClick={() => clearGroup(activeGroupData.groupKey)}\n disabled={(selectedByGroup[activeGroupData.groupKey] ?? 0) === 0}\n >\n Clear\n </button>\n </div>\n\n <div className=\"max-h-72 space-y-0.5 overflow-auto\">\n {activeGroupData.options.map((option) => {\n const mode = draft[option.value] ?? \"neutral\";\n const title = option.title ?? multiSelectOptionText(option);\n return (\n <div\n key={option.value}\n role=\"button\"\n tabIndex={0}\n data-filter-option={option.value}\n className=\"rounded-md px-1.5 py-0.5 hover:bg-accent/50 focus-visible:bg-accent/50 focus-visible:outline-none\"\n onClick={() =>\n setDraft(updateMultiFilterValue(draft, option.value, nextFilterMode(mode)))\n }\n onKeyDown={(event) => {\n if (event.key === \"Enter\" || event.key === \" \") {\n event.preventDefault();\n setDraft(\n updateMultiFilterValue(draft, option.value, nextFilterMode(mode)),\n );\n } else if (event.key === \"ArrowLeft\") {\n event.preventDefault();\n setActiveGroup(null);\n }\n }}\n >\n <FilterPill\n className=\"w-full justify-between\"\n // Show only the value side here — the key is already\n // implied by the parent group panel.\n label={renderNestedOptionLabel(option, activeGroupData.groupKey)}\n mode={mode}\n title={title}\n togglePosition=\"right\"\n onModeChange={(next) =>\n setDraft(updateMultiFilterValue(draft, option.value, next))\n }\n />\n </div>\n );\n })}\n {activeGroupData.options.length === 0 && (\n <div className=\"px-2 py-3 text-sm text-muted-foreground\">No values</div>\n )}\n </div>\n </div>\n )}\n </div>\n )}\n </div>\n );\n}\n\nfunction renderNestedOptionLabel(option: MultiSelectOption, groupKey: string): ReactNode {\n // If the option label already strips the key prefix, use it. Otherwise\n // strip it here so the inner panel doesn't repeat the key on every row.\n if (typeof option.label === \"string\") {\n const prefix = `${groupKey}=`;\n if (option.label.startsWith(prefix)) return option.label.slice(prefix.length);\n return option.label;\n }\n return option.label ?? option.value;\n}\n\nfunction SelectMultiFilterField({\n filter,\n grow,\n}: {\n filter: FilterBarSelectMultiFilter;\n grow: boolean;\n}) {\n return (\n <label\n title={filter.description}\n className={cn(\n \"flex h-8 items-center gap-2 rounded-md border border-input bg-muted/30 pl-2 pr-1 text-xs\",\n grow ? \"min-w-[12rem] max-w-[18rem] flex-1\" : \"min-w-[11rem] max-w-[15rem] shrink-0\",\n filter.disabled && \"opacity-60\",\n filter.className,\n )}\n >\n <span className=\"whitespace-nowrap font-medium uppercase tracking-wide text-muted-foreground\">\n {filter.label}\n </span>\n <MultiSelect\n options={filter.options}\n value={filter.value}\n onChange={filter.onChange}\n placeholder={filter.placeholder ?? `Any ${filter.label.toLowerCase()}`}\n {...(filter.disabled !== undefined ? { disabled: filter.disabled } : {})}\n triggerClassName=\"h-6 min-w-0 border-0 bg-transparent px-1 text-xs shadow-none focus-visible:ring-0\"\n menuClassName=\"left-auto right-0\"\n />\n </label>\n );\n}\n\nfunction RangeControlButton({\n kind,\n label,\n from = \"\",\n to = \"\",\n onApply,\n presets,\n timeEnabled,\n timeZone,\n timeZones,\n fromPlaceholder,\n toPlaceholder,\n emptyLabel,\n className,\n}: FilterBarRangeProps & { kind: \"date\" | \"time\"; label: string }) {\n return (\n <TimeRange\n kind={kind}\n label={label}\n from={from}\n to={to}\n onApply={onApply}\n {...(presets ? { presets } : {})}\n {...(timeEnabled !== undefined ? { timeEnabled } : {})}\n {...(timeZone ? { timeZone } : {})}\n {...(timeZones ? { timeZones } : {})}\n {...(fromPlaceholder ? { fromPlaceholder } : {})}\n {...(toPlaceholder ? { toPlaceholder } : {})}\n {...(emptyLabel ? { emptyLabel } : {})}\n {...(className ? { className } : {})}\n />\n );\n}\n\nfunction useDismissablePopup(\n open: boolean,\n rootRef: RefObject<HTMLElement | null>,\n triggerRef: RefObject<HTMLElement | null>,\n onClose: () => void,\n) {\n useEffect(() => {\n if (!open) return;\n\n const onPointerDown = (event: MouseEvent) => {\n if (!rootRef.current?.contains(event.target as Node)) {\n onClose();\n }\n };\n\n const onKeyDown = (event: KeyboardEvent) => {\n if (event.key === \"Escape\") {\n onClose();\n triggerRef.current?.focus();\n }\n };\n\n document.addEventListener(\"mousedown\", onPointerDown);\n document.addEventListener(\"keydown\", onKeyDown);\n return () => {\n document.removeEventListener(\"mousedown\", onPointerDown);\n document.removeEventListener(\"keydown\", onKeyDown);\n };\n }, [onClose, open, rootRef, triggerRef]);\n}\n\nfunction summarizeMultiFilter(\n label: string,\n value: Record<string, FilterBarMultiFilterMode>,\n): string {\n const includeCount = Object.values(value).filter((mode) => mode === \"include\").length;\n const excludeCount = Object.values(value).filter((mode) => mode === \"exclude\").length;\n\n if (includeCount === 0 && excludeCount === 0) {\n return label;\n }\n\n const counts = [\n includeCount > 0 ? `+${includeCount}` : null,\n excludeCount > 0 ? `-${excludeCount}` : null,\n ].filter(Boolean);\n\n return `${label} ${counts.join(\" \")}`;\n}\n\nfunction parseLookupMultiValue(value: string) {\n return value\n .split(\",\")\n .map((item) => item.trim())\n .filter(Boolean);\n}\n\nfunction useDebouncedMultiDraft(\n value: Record<string, FilterBarMultiFilterMode>,\n onChange: (value: Record<string, FilterBarMultiFilterMode>) => void,\n) {\n const { autoSubmit } = useContext(FilterBarContext);\n const [draft, setDraft] = useState(value);\n const latestOnChange = useRef(onChange);\n\n useEffect(() => {\n latestOnChange.current = onChange;\n }, [onChange]);\n\n useEffect(() => {\n setDraft(value);\n }, [value]);\n\n useEffect(() => {\n if (sameMultiFilterValue(draft, value)) return;\n\n if (!autoSubmit) {\n latestOnChange.current(draft);\n return;\n }\n\n const timeoutId = window.setTimeout(() => {\n latestOnChange.current(draft);\n }, FILTER_INPUT_DEBOUNCE_MS);\n\n return () => window.clearTimeout(timeoutId);\n }, [autoSubmit, draft, value]);\n\n return [draft, setDraft] as const;\n}\n\nfunction sameMultiFilterValue(\n a: Record<string, FilterBarMultiFilterMode>,\n b: Record<string, FilterBarMultiFilterMode>,\n) {\n const aKeys = Object.keys(a);\n const bKeys = Object.keys(b);\n if (aKeys.length !== bKeys.length) return false;\n for (const key of aKeys) {\n if (a[key] !== b[key]) return false;\n }\n return true;\n}\n\nfunction useDebouncedTextDraft(value: string, onChange: (value: string) => void) {\n const { autoSubmit } = useContext(FilterBarContext);\n const [draft, setDraft] = useState(value);\n const latestOnChange = useRef(onChange);\n\n useEffect(() => {\n latestOnChange.current = onChange;\n }, [onChange]);\n\n useEffect(() => {\n setDraft(value);\n }, [value]);\n\n useEffect(() => {\n if (draft === value) return;\n\n if (!autoSubmit) {\n latestOnChange.current(draft);\n return;\n }\n\n const timeoutId = window.setTimeout(() => {\n latestOnChange.current(draft);\n }, FILTER_INPUT_DEBOUNCE_MS);\n\n return () => window.clearTimeout(timeoutId);\n }, [autoSubmit, draft, value]);\n\n return [draft, setDraft] as const;\n}\n\nfunction useDebouncedNumberDraft(\n value: FilterBarNumberValue,\n onChange: (value: FilterBarNumberValue) => void,\n) {\n const { autoSubmit } = useContext(FilterBarContext);\n const [draft, setDraft] = useState(value);\n const latestOnChange = useRef(onChange);\n\n useEffect(() => {\n latestOnChange.current = onChange;\n }, [onChange]);\n\n useEffect(() => {\n setDraft(value);\n }, [value.max, value.min]);\n\n useEffect(() => {\n if (sameNumberFilterValue(draft, value)) return;\n\n if (!autoSubmit) {\n latestOnChange.current(draft);\n return;\n }\n\n const timeoutId = window.setTimeout(() => {\n latestOnChange.current(draft);\n }, FILTER_INPUT_DEBOUNCE_MS);\n\n return () => window.clearTimeout(timeoutId);\n }, [autoSubmit, draft, value]);\n\n return [draft, setDraft] as const;\n}\n\nfunction sameNumberFilterValue(left: FilterBarNumberValue, right: FilterBarNumberValue) {\n return (left.min ?? \"\") === (right.min ?? \"\") && (left.max ?? \"\") === (right.max ?? \"\");\n}\n\ntype NumberFilterBounds = {\n min: number;\n max: number;\n step: number;\n};\n\ntype NumberFilterSource = \"min-input\" | \"max-input\";\n\nfunction resolveNumberFilterBounds(filter: FilterBarNumberFilter): NumberFilterBounds {\n const parsedMin = parseFilterNumber(filter.value.min);\n const parsedMax = parseFilterNumber(filter.value.max);\n const fallbackMin = parsedMin ?? 0;\n const fallbackMax = parsedMax ?? Math.max(fallbackMin + 100, 100);\n const min = filter.domainMin ?? Math.min(fallbackMin, fallbackMax);\n const max = filter.domainMax ?? Math.max(fallbackMax, min + 100);\n const step = filter.step && filter.step > 0 ? filter.step : 1;\n\n return {\n min,\n max: max <= min ? min + step : max,\n step,\n };\n}\n\nfunction summarizeNumberFilter(\n filter: FilterBarNumberFilter,\n bounds: NumberFilterBounds,\n value: FilterBarNumberValue,\n) {\n const parsedMin = parseFilterNumber(value.min);\n const parsedMax = parseFilterNumber(value.max);\n const hasMin = String(value.min ?? \"\").trim() !== \"\";\n const hasMax = String(value.max ?? \"\").trim() !== \"\";\n\n if (!hasMin && !hasMax) {\n return filter.label;\n }\n\n const minLabel =\n parsedMin == null\n ? formatNumberValue(bounds.min, filter)\n : formatNumberValue(parsedMin, filter);\n const maxLabel =\n parsedMax == null\n ? formatNumberValue(bounds.max, filter)\n : formatNumberValue(parsedMax, filter);\n\n if (hasMin && hasMax) {\n if (minLabel === maxLabel) {\n return `${filter.label} ${minLabel}`;\n }\n return `${filter.label} ${minLabel}-${maxLabel}`;\n }\n\n if (hasMin) {\n return `${filter.label} >=${minLabel}`;\n }\n\n return `${filter.label} <=${maxLabel}`;\n}\n\nfunction normalizeNumberFilterValue(\n nextValue: FilterBarNumberValue,\n source: NumberFilterSource,\n): FilterBarNumberValue {\n let min = nextValue.min ?? \"\";\n let max = nextValue.max ?? \"\";\n\n const parsedMin = parseFilterNumber(min);\n const parsedMax = parseFilterNumber(max);\n\n if (parsedMin != null && parsedMax != null && parsedMin > parsedMax) {\n if (source.startsWith(\"min\")) {\n max = min;\n } else {\n min = max;\n }\n }\n\n return { min, max };\n}\n\nfunction numberFilterValueFromSlider(\n value: [number, number],\n bounds: NumberFilterBounds,\n): FilterBarNumberValue {\n const [min, max] = value;\n return {\n min: min <= bounds.min ? \"\" : formatRawNumber(clampNumber(min, bounds.min, bounds.max)),\n max: max >= bounds.max ? \"\" : formatRawNumber(clampNumber(max, bounds.min, bounds.max)),\n };\n}\n\nfunction parseFilterNumber(value: string | undefined) {\n if (!value?.trim()) return null;\n const parsed = Number(value);\n return Number.isFinite(parsed) ? parsed : null;\n}\n\nfunction clampNumber(value: number, min: number, max: number) {\n return Math.min(max, Math.max(min, value));\n}\n\nfunction formatNumberValue(value: number, filter: FilterBarNumberFilter) {\n if (filter.formatValue) {\n return filter.formatValue(value);\n }\n\n return formatRawNumber(value);\n}\n\nfunction formatRawNumber(value: number) {\n return Number.isInteger(value) ? String(value) : String(Number(value.toFixed(6)));\n}\n\nfunction updateMultiFilterValue(\n current: Record<string, FilterBarMultiFilterMode>,\n optionValue: string,\n nextMode: FilterMode,\n): Record<string, FilterBarMultiFilterMode> {\n const next = { ...current };\n\n if (nextMode === \"neutral\") {\n delete next[optionValue];\n return next;\n }\n\n if (nextMode === \"include\" || nextMode === \"exclude\") {\n next[optionValue] = nextMode;\n }\n\n return next;\n}\n\nfunction nextFilterMode(mode: FilterMode): FilterMode {\n if (mode === \"include\") return \"exclude\";\n if (mode === \"exclude\") return \"neutral\";\n return \"include\";\n}\n\nexport function clearFilterBarFilter(filter: FilterBarFilter) {\n if (filter.kind === \"text\" || filter.kind === \"lookup\" || filter.kind === \"enum\") {\n filter.onChange(\"\");\n return;\n }\n\n if (filter.kind === \"lookup-multi\" || filter.kind === \"select-multi\") {\n filter.onChange([]);\n return;\n }\n\n if (filter.kind === \"number\") {\n filter.onChange({});\n return;\n }\n\n if (filter.kind === \"boolean\") {\n filter.onChange(false);\n return;\n }\n\n filter.onChange({});\n}\n\nexport function isFilterBarFilterActive(filter: FilterBarFilter) {\n if (filter.kind === \"text\" || filter.kind === \"lookup\" || filter.kind === \"enum\") {\n return String(filter.value ?? \"\").trim() !== \"\";\n }\n if (filter.kind === \"lookup-multi\" || filter.kind === \"select-multi\") {\n return filter.value.length > 0;\n }\n if (filter.kind === \"number\") {\n return (\n String(filter.value.min ?? \"\").trim() !== \"\" || String(filter.value.max ?? \"\").trim() !== \"\"\n );\n }\n if (filter.kind === \"boolean\") return filter.value;\n return Object.keys(filter.value).length > 0;\n}\n\ntype FilterBarValue =\n | string\n | string[]\n | boolean\n | FilterBarNumberValue\n | Record<string, FilterBarMultiFilterMode>;\n\nfunction createFilterValueMap(filters: FilterBarFilter[]) {\n return Object.fromEntries(filters.map((filter) => [filter.key, filterBarFilterValue(filter)]));\n}\n\nfunction filterBarFilterValue(filter: FilterBarFilter): FilterBarValue {\n return filter.value;\n}\n\nfunction filterWithStagedValue(\n filter: FilterBarFilter,\n value: FilterBarValue,\n onChange: (value: FilterBarValue) => void,\n): FilterBarFilter {\n if (filter.kind === \"text\") {\n return {\n ...filter,\n value: String(value ?? \"\"),\n onChange: (next: string) => onChange(next),\n };\n }\n if (filter.kind === \"lookup\") {\n return {\n ...filter,\n value: String(value ?? \"\"),\n onChange: (next: string) => onChange(next),\n };\n }\n if (filter.kind === \"lookup-multi\") {\n return {\n ...filter,\n value: Array.isArray(value) ? value.map(String) : [],\n onChange: (next: string[]) => onChange(next),\n };\n }\n if (filter.kind === \"multi\") {\n return {\n ...filter,\n value: isMultiFilterValue(value) ? value : {},\n onChange: (next: Record<string, FilterBarMultiFilterMode>) => onChange(next),\n };\n }\n if (filter.kind === \"nested-multi\") {\n return {\n ...filter,\n value: isMultiFilterValue(value) ? value : {},\n onChange: (next: Record<string, FilterBarMultiFilterMode>) => onChange(next),\n };\n }\n if (filter.kind === \"select-multi\") {\n return {\n ...filter,\n value: Array.isArray(value) ? value.map(String) : [],\n onChange: (next: string[]) => onChange(next),\n };\n }\n if (filter.kind === \"number\") {\n return {\n ...filter,\n value: isNumberFilterValue(value) ? value : {},\n onChange: (next: FilterBarNumberValue) => onChange(next),\n };\n }\n if (filter.kind === \"enum\") {\n return {\n ...filter,\n value: String(value ?? \"\"),\n onChange: (next: string) => onChange(next),\n };\n }\n return {\n ...filter,\n value: Boolean(value),\n onChange: (next: boolean) => onChange(next),\n };\n}\n\nfunction applyStagedFilterValues(\n filters: FilterBarFilter[],\n stagedValues: Record<string, FilterBarValue>,\n) {\n for (const filter of filters) {\n const next = stagedValues[filter.key] ?? filterBarFilterValue(filter);\n if (sameFilterBarValue(filterBarFilterValue(filter), next)) continue;\n applyFilterBarValue(filter, next);\n }\n}\n\nfunction applyFilterBarValue(filter: FilterBarFilter, value: FilterBarValue) {\n if (filter.kind === \"text\" || filter.kind === \"lookup\" || filter.kind === \"enum\") {\n filter.onChange(String(value ?? \"\"));\n return;\n }\n if (filter.kind === \"lookup-multi\" || filter.kind === \"select-multi\") {\n filter.onChange(Array.isArray(value) ? value.map(String) : []);\n return;\n }\n if (filter.kind === \"number\") {\n filter.onChange(isNumberFilterValue(value) ? value : {});\n return;\n }\n if (filter.kind === \"boolean\") {\n filter.onChange(Boolean(value));\n return;\n }\n filter.onChange(isMultiFilterValue(value) ? value : {});\n}\n\nfunction sameFilterBarValue(left: FilterBarValue, right: FilterBarValue) {\n return JSON.stringify(left) === JSON.stringify(right);\n}\n\nfunction isNumberFilterValue(value: FilterBarValue): value is FilterBarNumberValue {\n return typeof value === \"object\" && value !== null && !Array.isArray(value);\n}\n\nfunction isMultiFilterValue(\n value: FilterBarValue,\n): value is Record<string, FilterBarMultiFilterMode> {\n return typeof value === \"object\" && value !== null && !Array.isArray(value);\n}\n\nfunction calculateVisibleFilterCount(widths: number[], availableWidth: number) {\n if (widths.length === 0) return 0;\n\n let used = 0;\n let count = 0;\n for (const width of widths) {\n const nextUsed = used + (count > 0 ? FILTER_BAR_GAP_PX : 0) + width;\n if (nextUsed > availableWidth) break;\n used = nextUsed;\n count += 1;\n }\n return count;\n}\n\nfunction sumFilterWidths(widths: number[]) {\n if (widths.length === 0) return 0;\n return (\n widths.reduce((total, width) => total + width, 0) + (widths.length - 1) * FILTER_BAR_GAP_PX\n );\n}\n\nfunction estimateFilterWidth(filter: FilterBarFilter) {\n if (filter.kind === \"boolean\") return Math.max(88, filter.label.length * 8 + 40);\n if (filter.kind === \"multi\" || filter.kind === \"nested-multi\") return 136;\n if (filter.kind === \"number\") return 152;\n return Math.max(144, filter.label.length * 8 + 96);\n}\n"],"names":[],"mappings":"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"}
|