@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":"DataTable.js","sources":["../../src/data/DataTable.tsx"],"sourcesContent":["import {\n Fragment,\n useEffect,\n useMemo,\n useState,\n type CSSProperties,\n type MouseEvent as ReactMouseEvent,\n type ReactNode,\n type TdHTMLAttributes,\n} from \"react\";\nimport { useSort, type SortDir } from \"../hooks/use-sort\";\nimport type { Density } from \"../hooks/use-density\";\nimport { cn } from \"../lib/utils\";\nimport {\n FilterBar,\n FilterBarFilterPanel,\n FilterBarRangePanel,\n type FilterBarFilter,\n type FilterBarMultiFilterMode,\n type FilterBarNumberValue,\n type FilterBarProps,\n type FilterBarRangePreset,\n type FilterBarRangeProps,\n} from \"../components/FilterBar\";\nimport type { MultiSelectOption } from \"../components/MultiSelect\";\nimport { Icon } from \"./Icon\";\nimport { SortableHeader } from \"./SortableHeader\";\nimport {\n Timestamp,\n chooseTimestampFormat,\n modeToFormat,\n parseTimestamp,\n resolveDateMath,\n type TimestampFormat,\n type TimestampOptions,\n} from \"./cells/Timestamp\";\nimport {\n TagActionsProvider,\n TagList,\n normalizeTags,\n splitTagToken,\n tagActionsFromRecord,\n tagFilterTokens,\n type TagActionsContextValue,\n type TagFilterMode,\n type TagsOptions,\n type TagsValue,\n} from \"./cells/TagList\";\nimport { StatusDot } from \"./cells/StatusDot\";\nimport { normalizeStatus } from \"./cells/status-mapping\";\nimport type { BadgeStatus } from \"./Badge\";\n\nexport type { TimestampOptions, TagsOptions };\n\nexport type DataTableColumnKind = \"timestamp\" | \"tags\" | \"status\";\n\nexport type StatusOptions<T extends Record<string, unknown> = Record<string, unknown>> = {\n map?: (raw: unknown, row: T) => BadgeStatus | null;\n showLabel?: boolean;\n title?: (raw: unknown, row: T) => string;\n};\n\ntype FilterValue = string | number | boolean | null | undefined | Array<string | number | boolean>;\n\ntype InternalRow<T> = {\n id: string;\n row: T;\n};\n\ntype GeneratedFilter<T extends Record<string, unknown>> = {\n column: DataTableColumn<T>;\n kind: \"text\" | \"multi\" | \"nested-multi\" | \"number\";\n options: MultiSelectOption[];\n groups?: Array<{\n groupKey: string;\n label?: string;\n options: MultiSelectOption[];\n }>;\n numberBounds?: {\n min: number;\n max: number;\n step: number;\n };\n};\n\nconst DEFAULT_COLUMN_MIN_WIDTH = 64;\nconst DEFAULT_COLUMN_WIDTH = 160;\nconst DEFAULT_GROW_COLUMN_WIDTH = 224;\nconst DEFAULT_SHRINK_COLUMN_WIDTH = 96;\nconst COLUMN_WIDTH_STORAGE_PREFIX = \"clicky-ui-data-table-column-widths\";\nconst COLUMN_VISIBILITY_STORAGE_PREFIX = \"clicky-ui-data-table-column-visibility\";\nconst DENSITY_STORAGE_PREFIX = \"clicky-ui-data-table-density\";\n\nconst DENSITY_OPTIONS: Array<{ value: Density; icon: string; label: string }> = [\n { value: \"compact\", icon: \"ph:rows\", label: \"Compact\" },\n { value: \"comfortable\", icon: \"ph:list\", label: \"Comfortable\" },\n { value: \"spacious\", icon: \"ph:list-dashes\", label: \"Spacious\" },\n];\n\nconst DATA_TABLE_HEADER_DENSITY_CLASS =\n \"px-2.5 py-1.5 density-compact:px-2 density-compact:py-1 density-comfortable:px-2.5 density-comfortable:py-1.5 density-spacious:px-4 density-spacious:py-3\";\nconst DATA_TABLE_CELL_DENSITY_CLASS =\n \"px-2.5 py-1.5 density-compact:px-2 density-compact:py-0.5 density-comfortable:px-2.5 density-comfortable:py-1.5 density-spacious:px-4 density-spacious:py-3\";\n\ntype ColumnMenuState = {\n x: number;\n y: number;\n columnKey?: string;\n};\n\nexport type DataTableRowDetailContext<T extends Record<string, unknown> = Record<string, unknown>> =\n {\n columns: DataTableColumn<T>[];\n visibleColumns: DataTableColumn<T>[];\n tagActionsByColumn: Record<string, TagActionsContextValue>;\n };\n\n// Mirrors the preset list used by the trace UI's TraceFilters so log/trace\n// tables share the same vocabulary out of the box.\nconst TIMESTAMP_RANGE_PRESETS: FilterBarRangePreset[] = [\n { label: \"Last 5 minutes\", from: \"now-5m\", to: \"now\" },\n { label: \"Last 15 minutes\", from: \"now-15m\", to: \"now\" },\n { label: \"Last 1 hour\", from: \"now-1h\", to: \"now\" },\n { label: \"Last 6 hours\", from: \"now-6h\", to: \"now\" },\n { label: \"Last 24 hours\", from: \"now-24h\", to: \"now\" },\n { label: \"Last 7 days\", from: \"now-7d\", to: \"now\" },\n { label: \"Last 30 days\", from: \"now-30d\", to: \"now\" },\n];\n\nexport type DataTableColumn<T extends Record<string, unknown> = Record<string, unknown>> = {\n key: string;\n label: ReactNode;\n sortable?: boolean;\n filterable?: boolean;\n grow?: boolean;\n shrink?: boolean;\n resizable?: boolean;\n hideable?: boolean;\n minWidth?: number;\n maxWidth?: number;\n align?: \"left\" | \"center\" | \"right\";\n render?: (value: unknown, row: T) => ReactNode;\n sortValue?: (value: unknown, row: T) => unknown;\n filterValue?: (value: unknown, row: T) => FilterValue;\n cellClassName?: string;\n headerClassName?: string;\n /**\n * Built-in cell kind. When set, DataTable supplies a default renderer,\n * a default `sortValue` and a default `filterValue` (all overridable).\n * - \"timestamp\": adaptive format (relative / time / short / iso) chosen\n * from the spread of values in `data`.\n * - \"tags\": chip list with `+N` overflow; auto-multi-filter on tag tokens.\n * - \"status\": colored dot with the standard error/warning/success palette\n * (token-mapped — \"ERROR\", \"failed\", \"fatal\" all collapse to \"error\").\n */\n kind?: DataTableColumnKind;\n timestamp?: TimestampOptions;\n tags?: TagsOptions;\n status?: StatusOptions<T>;\n};\n\nexport type DataTableColumnInput<T extends Record<string, unknown> = Record<string, unknown>> =\n | DataTableColumn<T>\n | string;\n\nexport type DataTableProps<T extends Record<string, unknown> = Record<string, unknown>> = {\n data: T[];\n /**\n * Column descriptors. Pass a bare string for a default column —\n * `\"foo\"` is equivalent to `{ key: \"foo\", label: \"foo\" }` — handy for\n * ad-hoc query results where the column metadata is just a list of names.\n * Mix and match strings with full descriptors as needed.\n */\n columns: Array<DataTableColumnInput<T>>;\n emptyMessage?: string;\n className?: string;\n autoFilter?: boolean;\n showGlobalFilter?: boolean;\n globalFilter?: string;\n onGlobalFilterChange?: (value: string) => void;\n globalFilterPlaceholder?: string;\n defaultSort?: { key: string; dir?: SortDir };\n filterBarProps?: Omit<FilterBarProps, \"search\" | \"filters\">;\n getRowId?: (row: T, index: number) => string;\n onRowClick?: (row: T) => void;\n isRowClickable?: (row: T) => boolean;\n getRowHref?: (row: T) => string | undefined;\n renderExpandedRow?: (row: T, context: DataTableRowDetailContext<T>) => ReactNode;\n resizableColumns?: boolean;\n persistColumnWidths?: boolean;\n columnResizeStorageKey?: string;\n hideableColumns?: boolean;\n persistColumnVisibility?: boolean;\n columnVisibilityStorageKey?: string;\n density?: Density;\n defaultDensity?: Density;\n onDensityChange?: (density: Density | undefined) => void;\n persistDensity?: boolean;\n densityStorageKey?: string;\n showDensityControl?: boolean;\n showHeaderFilters?: boolean;\n};\n\nexport function DataTable<T extends Record<string, unknown>>({\n data,\n columns: columnsInput,\n emptyMessage: _emptyMessage = \"No data\",\n className,\n autoFilter = false,\n showGlobalFilter = true,\n globalFilter,\n onGlobalFilterChange,\n globalFilterPlaceholder = \"Search all columns…\",\n defaultSort,\n filterBarProps,\n getRowId,\n onRowClick,\n isRowClickable,\n getRowHref,\n renderExpandedRow,\n resizableColumns = true,\n persistColumnWidths = true,\n columnResizeStorageKey,\n hideableColumns = true,\n persistColumnVisibility = true,\n columnVisibilityStorageKey,\n density,\n defaultDensity,\n onDensityChange,\n persistDensity = true,\n densityStorageKey,\n showDensityControl,\n showHeaderFilters = true,\n}: DataTableProps<T>) {\n const columns = useMemo<DataTableColumn<T>[]>(\n () =>\n columnsInput.map((column) =>\n typeof column === \"string\" ? { key: column, label: column } : column,\n ),\n [columnsInput],\n );\n const columnKeysSignature = useMemo(\n () => columns.map((column) => column.key).join(\"|\"),\n [columns],\n );\n const resolvedColumnResizeStorageKey =\n columnResizeStorageKey ?? `${COLUMN_WIDTH_STORAGE_PREFIX}:${columnKeysSignature}`;\n const resolvedColumnVisibilityStorageKey =\n columnVisibilityStorageKey ?? `${COLUMN_VISIBILITY_STORAGE_PREFIX}:${columnKeysSignature}`;\n const resolvedDensityStorageKey =\n densityStorageKey ?? `${DENSITY_STORAGE_PREFIX}:${columnKeysSignature}`;\n const [columnWidths, setColumnWidths] = useState<Record<string, number>>(() =>\n persistColumnWidths ? readStoredColumnWidths(resolvedColumnResizeStorageKey, columns) : {},\n );\n const [hiddenColumns, setHiddenColumns] = useState<Record<string, boolean>>(() =>\n persistColumnVisibility\n ? readStoredHiddenColumns(resolvedColumnVisibilityStorageKey, columns)\n : {},\n );\n const densityControlled = density !== undefined;\n const [localDensityOverride, setLocalDensityOverride] = useState<Density | undefined>(() => {\n if (densityControlled) return density;\n if (persistDensity)\n return readStoredDensityOverride(resolvedDensityStorageKey) ?? defaultDensity;\n return defaultDensity;\n });\n const [columnMenu, setColumnMenu] = useState<ColumnMenuState | null>(null);\n const [headerFilterMenu, setHeaderFilterMenu] = useState<ColumnMenuState | null>(null);\n const [textFilters, setTextFilters] = useState<Record<string, string>>({});\n const [multiFilters, setMultiFilters] = useState<\n Record<string, Record<string, FilterBarMultiFilterMode>>\n >({});\n const [numberFilters, setNumberFilters] = useState<Record<string, FilterBarNumberValue>>({});\n const [expandedRows, setExpandedRows] = useState<Record<string, boolean>>({});\n const [localGlobalFilter, setLocalGlobalFilter] = useState(\"\");\n const [timeRangeFilter, setTimeRangeFilter] = useState<{\n from: string;\n to: string;\n }>(() => {\n const seed = columns.find(\n (column) => column.kind === \"timestamp\" && column.timestamp?.defaultRange,\n );\n return {\n from: seed?.timestamp?.defaultRange?.from ?? \"\",\n to: seed?.timestamp?.defaultRange?.to ?? \"\",\n };\n });\n\n useEffect(() => {\n setColumnWidths((current) => {\n const stored = persistColumnWidths\n ? readStoredColumnWidths(resolvedColumnResizeStorageKey, columns)\n : {};\n const next = pruneColumnWidths({ ...stored, ...current }, columns);\n return sameColumnWidths(current, next) ? current : next;\n });\n }, [columnKeysSignature, persistColumnWidths, resolvedColumnResizeStorageKey]);\n\n useEffect(() => {\n if (!persistColumnWidths) return;\n writeStoredColumnWidths(resolvedColumnResizeStorageKey, columnWidths);\n }, [columnWidths, persistColumnWidths, resolvedColumnResizeStorageKey]);\n\n useEffect(() => {\n setHiddenColumns((current) => {\n const stored = persistColumnVisibility\n ? readStoredHiddenColumns(resolvedColumnVisibilityStorageKey, columns)\n : {};\n const next = pruneHiddenColumns({ ...stored, ...current }, columns);\n return sameHiddenColumns(current, next) ? current : next;\n });\n }, [columnKeysSignature, persistColumnVisibility, resolvedColumnVisibilityStorageKey]);\n\n useEffect(() => {\n if (!persistColumnVisibility) return;\n writeStoredHiddenColumns(resolvedColumnVisibilityStorageKey, hiddenColumns);\n }, [hiddenColumns, persistColumnVisibility, resolvedColumnVisibilityStorageKey]);\n\n useEffect(() => {\n if (densityControlled) return;\n setLocalDensityOverride(\n persistDensity\n ? (readStoredDensityOverride(resolvedDensityStorageKey) ?? defaultDensity)\n : defaultDensity,\n );\n }, [defaultDensity, densityControlled, persistDensity, resolvedDensityStorageKey]);\n\n useEffect(() => {\n if (densityControlled || !persistDensity) return;\n writeStoredDensityOverride(resolvedDensityStorageKey, localDensityOverride);\n }, [densityControlled, localDensityOverride, persistDensity, resolvedDensityStorageKey]);\n\n useEffect(() => {\n if (!columnMenu && !headerFilterMenu) return;\n\n const close = () => {\n setColumnMenu(null);\n setHeaderFilterMenu(null);\n };\n const closeOnEscape = (event: KeyboardEvent) => {\n if (event.key === \"Escape\") close();\n };\n\n document.addEventListener(\"click\", close);\n document.addEventListener(\"keydown\", closeOnEscape);\n return () => {\n document.removeEventListener(\"click\", close);\n document.removeEventListener(\"keydown\", closeOnEscape);\n };\n }, [columnMenu, headerFilterMenu]);\n\n const rows = useMemo<InternalRow<T>[]>(\n () =>\n data.map((row, index) => ({\n id: getRowId?.(row, index) ?? String(index),\n row,\n })),\n [data, getRowId],\n );\n\n const timestampFormats = useMemo<Record<string, TimestampFormat>>(() => {\n const out: Record<string, TimestampFormat> = {};\n for (const column of columns) {\n if (column.kind !== \"timestamp\") continue;\n const dates: Date[] = [];\n for (const row of data) {\n const raw = resolvePath(row, column.key);\n const parsed = parseTimestamp(raw);\n if (parsed) dates.push(parsed);\n }\n const dataFormat = chooseTimestampFormat(dates);\n out[column.key] = modeToFormat(column.timestamp?.mode ?? \"auto\", dataFormat);\n }\n return out;\n }, [columns, data]);\n\n const effectiveColumns = useMemo<DataTableColumn<T>[]>(\n () => columns.map((column) => applyKindDefaults<T>(column, timestampFormats[column.key])),\n [columns, timestampFormats],\n );\n\n const visibleColumns = useMemo(() => {\n if (!hideableColumns) return effectiveColumns;\n const next = effectiveColumns.filter((column) => !hiddenColumns[column.key]);\n return next.length > 0 ? next : effectiveColumns;\n }, [effectiveColumns, hiddenColumns, hideableColumns]);\n\n const hideableColumnCount = useMemo(\n () => effectiveColumns.filter(isColumnHideable).length,\n [effectiveColumns],\n );\n\n const visibleHideableColumnCount = useMemo(\n () => visibleColumns.filter(isColumnHideable).length,\n [visibleColumns],\n );\n\n const showColumnVisibilityControl = hideableColumns && hideableColumnCount > 1;\n const resolvedShowDensityControl = showDensityControl ?? showColumnVisibilityControl;\n const showTablePreferencesControl = showColumnVisibilityControl || resolvedShowDensityControl;\n const densityOverride = densityControlled ? density : localDensityOverride;\n\n // For each kind:\"tags\" column, expose a TagActions value backed by this\n // table's multiFilters slot. The + / − icons inside each tag mutate the\n // same Record<token, mode> shape that the filter-bar dropdown uses, so\n // the existing filter pipeline picks up the change without changes.\n const tagActionsByColumn = useMemo(() => {\n const out: Record<string, TagActionsContextValue> = {};\n for (const column of visibleColumns) {\n if (column.kind !== \"tags\") continue;\n const columnKey = column.key;\n const current = (multiFilters[columnKey] ?? {}) as Record<string, TagFilterMode>;\n const handler = (next: Record<string, TagFilterMode>) =>\n setMultiFilters((state) => updateFilterRecord(state, columnKey, next));\n out[columnKey] = tagActionsFromRecord(current, handler);\n }\n return out;\n }, [multiFilters, visibleColumns]);\n\n // The first kind:\"timestamp\" column (with autoRangeFilter not disabled) gets\n // the auto-mounted FilterBar time-range picker. The user can override by\n // supplying their own filterBarProps.timeRange.\n const timeRangeColumn = useMemo(() => {\n if (filterBarProps?.timeRange) return null;\n return (\n visibleColumns.find(\n (column) =>\n column.kind === \"timestamp\" &&\n column.filterable !== false &&\n column.timestamp?.autoRangeFilter !== false,\n ) ?? null\n );\n }, [filterBarProps?.timeRange, visibleColumns]);\n\n const filterableColumns = useMemo(\n () =>\n visibleColumns.filter((column) => {\n if (column.filterable === false) return false;\n // Timestamp columns are filtered through the time-range picker, not\n // a per-column text/multi filter. Skip them in auto-filter generation.\n if (column.kind === \"timestamp\") return false;\n return true;\n }),\n [visibleColumns],\n );\n\n const generatedFilters = useMemo<GeneratedFilter<T>[]>(() => {\n if (!autoFilter) return [];\n\n return filterableColumns.map((column) => {\n const numberBounds = getNumericFilterBounds(rows, column);\n if (numberBounds) {\n return {\n column,\n kind: \"number\" as const,\n options: [],\n numberBounds,\n };\n }\n\n const values = new Set<string>();\n\n for (const record of rows) {\n for (const token of getFilterTokens(record.row, column)) {\n if (token) values.add(token);\n }\n }\n\n const options = Array.from(values)\n .sort((left, right) => left.localeCompare(right, undefined, { numeric: true }))\n .map((value) => ({ value, label: value }));\n\n // Tag columns naturally have higher cardinality (e.g. infra labels);\n // we let the multi-filter scale to 50 distinct values before falling\n // back to free-text search.\n const multiCap = column.kind === \"tags\" ? 50 : 20;\n\n const fitsMulti = options.length >= 2 && options.length <= multiCap;\n\n // For tag columns we group tokens by their key so the filter renders\n // as a two-level submenu (env → prod/staging, tier → edge/core, …).\n // Falls back to a flat multi when there's only one key (or none).\n if (column.kind === \"tags\" && fitsMulti) {\n const separator = column.tags?.separator ?? \"=\";\n const groups = groupTagOptions(options, separator);\n if (groups.length >= 2) {\n return {\n column,\n kind: \"nested-multi\" as const,\n options,\n groups,\n };\n }\n }\n\n return {\n column,\n kind: fitsMulti ? \"multi\" : \"text\",\n options,\n };\n });\n }, [autoFilter, filterableColumns, rows]);\n\n useEffect(() => {\n setTextFilters((current) => pruneTextFilterState(current, generatedFilters));\n setMultiFilters((current) => pruneMultiFilterState(current, generatedFilters));\n setNumberFilters((current) => pruneNumberFilterState(current, generatedFilters));\n }, [generatedFilters]);\n\n const globalFilterControlled = globalFilter !== undefined;\n const effectiveGlobalFilter = globalFilterControlled ? globalFilter : localGlobalFilter;\n const setEffectiveGlobalFilter = globalFilterControlled\n ? (onGlobalFilterChange ?? (() => {}))\n : setLocalGlobalFilter;\n const nativeFilters = useMemo<FilterBarFilter[]>(\n () =>\n generatedFilters.map((filter): FilterBarFilter => {\n const columnKey = filter.column.key;\n if (filter.kind === \"multi\") {\n return {\n key: columnKey,\n kind: \"multi\",\n label: labelText(filter.column),\n value: multiFilters[columnKey] ?? {},\n onChange: (next) =>\n setMultiFilters((current) => updateFilterRecord(current, columnKey, next)),\n options: filter.options,\n };\n }\n if (filter.kind === \"nested-multi\") {\n return {\n key: columnKey,\n kind: \"nested-multi\",\n label: labelText(filter.column),\n value: multiFilters[columnKey] ?? {},\n onChange: (next) =>\n setMultiFilters((current) => updateFilterRecord(current, columnKey, next)),\n groups: filter.groups ?? [],\n };\n }\n if (filter.kind === \"number\") {\n const numberFilter: Extract<FilterBarFilter, { kind: \"number\" }> = {\n key: columnKey,\n kind: \"number\",\n label: labelText(filter.column),\n value: numberFilters[columnKey] ?? {},\n onChange: (next: FilterBarNumberValue) =>\n setNumberFilters((current) => updateNumberFilterValue(current, columnKey, next)),\n };\n if (filter.numberBounds?.min !== undefined) {\n numberFilter.domainMin = filter.numberBounds.min;\n }\n if (filter.numberBounds?.max !== undefined) {\n numberFilter.domainMax = filter.numberBounds.max;\n }\n if (filter.numberBounds?.step !== undefined) {\n numberFilter.step = filter.numberBounds.step;\n }\n return numberFilter;\n }\n return {\n key: columnKey,\n kind: \"text\",\n label: labelText(filter.column),\n value: textFilters[columnKey] ?? \"\",\n onChange: (next: string) =>\n setTextFilters((current) => updateFilterValue(current, columnKey, next)),\n };\n }),\n [generatedFilters, multiFilters, numberFilters, textFilters],\n );\n const nativeFilterByColumn = useMemo(\n () => new Map(nativeFilters.map((filter) => [filter.key, filter])),\n [nativeFilters],\n );\n const hasCustomFilterBarContent = Boolean(\n filterBarProps?.leading ||\n filterBarProps?.children ||\n filterBarProps?.trailing ||\n filterBarProps?.timeRange ||\n filterBarProps?.dateRange,\n );\n const autoTimeRange = useMemo<FilterBarRangeProps | null>(() => {\n if (!autoFilter || !timeRangeColumn) return null;\n return {\n from: timeRangeFilter.from,\n to: timeRangeFilter.to,\n onApply: (from, to) => setTimeRangeFilter({ from, to }),\n presets: timeRangeColumn.timestamp?.rangePresets ?? TIMESTAMP_RANGE_PRESETS,\n fromPlaceholder: \"now-24h\",\n toPlaceholder: \"now\",\n emptyLabel: \"Any time\",\n };\n }, [autoFilter, timeRangeColumn, timeRangeFilter.from, timeRangeFilter.to]);\n const showFilterBar =\n (autoFilter && (showGlobalFilter || nativeFilters.length > 0 || !!autoTimeRange)) ||\n hasCustomFilterBarContent ||\n showTablePreferencesControl;\n const setDensityOverride = (next: Density | undefined) => {\n if (!densityControlled) setLocalDensityOverride(next);\n onDensityChange?.(next);\n };\n const filterBarTrailing = showTablePreferencesControl ? (\n <>\n {filterBarProps?.trailing}\n <ColumnVisibilityTrigger onOpen={(event) => setColumnMenu(menuStateFromTrigger(event))} />\n </>\n ) : (\n filterBarProps?.trailing\n );\n const showHeaderFilterControls = autoFilter && showHeaderFilters;\n\n const filteredRows = useMemo(() => {\n const globalNeedle = effectiveGlobalFilter.trim().toLowerCase();\n const now = new Date();\n const rangeFromDate = timeRangeColumn ? resolveDateMath(timeRangeFilter.from, now) : null;\n const rangeToDate = timeRangeColumn ? resolveDateMath(timeRangeFilter.to, now) : null;\n const rangeColumnKey = timeRangeColumn?.key;\n\n return rows.filter(({ row }) => {\n if (rangeColumnKey && (rangeFromDate || rangeToDate)) {\n const raw = resolvePath(row, rangeColumnKey);\n const ts = parseTimestamp(raw);\n if (!ts) return false;\n if (rangeFromDate && ts.getTime() < rangeFromDate.getTime()) return false;\n if (rangeToDate && ts.getTime() > rangeToDate.getTime()) return false;\n }\n\n if (globalNeedle) {\n const haystack = filterableColumns\n .flatMap((column) => getFilterTokens(row, column))\n .join(\" \")\n .toLowerCase();\n\n if (!haystack.includes(globalNeedle)) {\n return false;\n }\n }\n\n for (const filter of generatedFilters) {\n const tokens = getFilterTokens(row, filter.column);\n\n if (filter.kind === \"text\") {\n const needle = (textFilters[filter.column.key] ?? \"\").trim().toLowerCase();\n if (needle && !tokens.some((token) => token.toLowerCase().includes(needle))) {\n return false;\n }\n } else if (filter.kind === \"number\") {\n const range = numberFilters[filter.column.key] ?? {};\n const min = parseNumberInput(range.min);\n const max = parseNumberInput(range.max);\n const hasMin = String(range.min ?? \"\").trim() !== \"\";\n const hasMax = String(range.max ?? \"\").trim() !== \"\";\n\n if (hasMin || hasMax) {\n const values = getFilterNumbers(row, filter.column);\n const matches = values.some(\n (value) => (min == null || value >= min) && (max == null || value <= max),\n );\n\n if (!matches) {\n return false;\n }\n }\n } else {\n const selected = multiFilters[filter.column.key] ?? {};\n const include = Object.entries(selected)\n .filter(([, mode]) => mode === \"include\")\n .map(([value]) => value);\n const exclude = Object.entries(selected)\n .filter(([, mode]) => mode === \"exclude\")\n .map(([value]) => value);\n\n if (include.length > 0 && !tokens.some((token) => include.includes(token))) {\n return false;\n }\n\n if (exclude.length > 0 && tokens.some((token) => exclude.includes(token))) {\n return false;\n }\n }\n }\n\n return true;\n });\n }, [\n effectiveGlobalFilter,\n filterableColumns,\n generatedFilters,\n multiFilters,\n numberFilters,\n rows,\n textFilters,\n timeRangeColumn,\n timeRangeFilter.from,\n timeRangeFilter.to,\n ]);\n\n const sortResolvers = useMemo(\n () =>\n Object.fromEntries(\n effectiveColumns.map((column) => [\n column.key,\n (record: InternalRow<T>) => getSortValue(record.row, column),\n ]),\n ) as Record<string, (record: InternalRow<T>) => unknown>,\n [effectiveColumns],\n );\n\n const { sorted, sort, toggle } = useSort(filteredRows, {\n defaultDir: defaultSort?.dir ?? \"asc\",\n resolvers: sortResolvers,\n ...(defaultSort?.key ? { defaultKey: defaultSort.key } : {}),\n });\n\n const startColumnResize = (event: ReactMouseEvent<HTMLElement>, column: DataTableColumn<T>) => {\n event.preventDefault();\n event.stopPropagation();\n\n const startX = event.clientX;\n const header = event.currentTarget.closest(\"th\");\n const measuredWidth = header?.getBoundingClientRect().width ?? 0;\n const startWidth = measuredWidth || columnWidths[column.key] || defaultColumnWidth(column);\n\n const onMove = (moveEvent: MouseEvent) => {\n const nextWidth = clampColumnWidth(column, startWidth + moveEvent.clientX - startX);\n setColumnWidths((current) => ({\n ...current,\n [column.key]: nextWidth,\n }));\n };\n\n const onUp = () => {\n document.removeEventListener(\"mousemove\", onMove);\n document.removeEventListener(\"mouseup\", onUp);\n document.body.style.cursor = \"\";\n document.body.style.userSelect = \"\";\n };\n\n document.addEventListener(\"mousemove\", onMove);\n document.addEventListener(\"mouseup\", onUp);\n document.body.style.cursor = \"col-resize\";\n document.body.style.userSelect = \"none\";\n };\n\n const autoFitColumn = (event: ReactMouseEvent<HTMLElement>, column: DataTableColumn<T>) => {\n event.preventDefault();\n event.stopPropagation();\n\n const header = event.currentTarget.closest(\"th\");\n const table = event.currentTarget.closest(\"table\");\n if (!header || !table) return;\n\n const columnIndex = Array.from(header.parentElement?.children ?? []).indexOf(header);\n if (columnIndex < 0) return;\n\n const width = measureColumnContentWidth(table, columnIndex, column);\n setColumnWidths((current) => ({\n ...current,\n [column.key]: width,\n }));\n };\n\n const toggleColumnVisibility = (column: DataTableColumn<T>) => {\n if (!isColumnHideable(column)) return;\n\n setHiddenColumns((current) => {\n const hidden = current[column.key] === true;\n if (!hidden && visibleHideableColumnCount <= 1) return current;\n\n const next = { ...current };\n if (hidden) {\n delete next[column.key];\n } else {\n next[column.key] = true;\n }\n\n return pruneHiddenColumns(next, columns);\n });\n };\n\n const showAllColumns = () => setHiddenColumns({});\n\n const openHeaderColumnMenu = (\n event: ReactMouseEvent<HTMLTableCellElement>,\n column: DataTableColumn<T>,\n ) => {\n if (!showColumnVisibilityControl) return;\n event.preventDefault();\n setColumnMenu(menuStateFromPointer(event, column.key));\n };\n\n const openHeaderFilterMenu = (event: ReactMouseEvent<HTMLElement>, columnKey: string) => {\n event.preventDefault();\n event.stopPropagation();\n setHeaderFilterMenu(menuStateFromTrigger(event, columnKey));\n };\n\n return (\n <div className={cn(\"flex min-h-0 flex-col gap-3\", className)} data-density={densityOverride}>\n {showFilterBar && (\n <FilterBar\n {...filterBarProps}\n {...(autoFilter && showGlobalFilter\n ? {\n search: {\n value: effectiveGlobalFilter,\n onChange: setEffectiveGlobalFilter,\n placeholder: globalFilterPlaceholder,\n },\n }\n : {})}\n {...(autoTimeRange ? { timeRange: autoTimeRange } : {})}\n trailing={filterBarTrailing}\n filters={nativeFilters}\n />\n )}\n\n <div className=\"min-h-0 flex-1 overflow-auto rounded-md border border-border\">\n <table className=\"w-max table-auto text-left text-sm\">\n <colgroup>\n {visibleColumns.map((column) => (\n <col\n key={column.key}\n style={columnStyle(column, columnWidths)}\n className={column.shrink && !column.grow ? \"w-px\" : undefined}\n />\n ))}\n </colgroup>\n <thead className=\"sticky top-0 z-10 bg-muted shadow-[0_1px_0_0_var(--tw-shadow-color)] shadow-border\">\n <tr className=\"border-b border-border text-xs text-muted-foreground\">\n {visibleColumns.map((column) => (\n <th\n key={column.key}\n className={cn(\n \"group/header relative whitespace-nowrap font-medium\",\n DATA_TABLE_HEADER_DENSITY_CLASS,\n alignmentClass(column.align),\n resizableColumns && column.resizable !== false && \"select-none\",\n column.headerClassName,\n )}\n onContextMenu={(event) => openHeaderColumnMenu(event, column)}\n >\n <div\n className={cn(\n \"flex min-w-0 items-center gap-1\",\n headerAlignmentClass(column.align),\n resizableColumns && column.resizable !== false && \"pr-2\",\n )}\n >\n <span className=\"min-w-0\">\n {column.sortable === false ? (\n <span>{column.label}</span>\n ) : (\n <SortableHeader\n active={sort?.key === column.key}\n {...(sort?.key === column.key ? { dir: sort.dir } : {})}\n {...(column.align ? { align: column.align } : {})}\n onClick={() => toggle(column.key)}\n >\n {column.label}\n </SortableHeader>\n )}\n </span>\n {showHeaderFilterControls &&\n (nativeFilterByColumn.has(column.key) ||\n (autoTimeRange && timeRangeColumn?.key === column.key)) && (\n <HeaderFilterButton\n column={column}\n active={\n nativeFilterByColumn.has(column.key)\n ? isFilterBarFilterActive(nativeFilterByColumn.get(column.key)!)\n : Boolean(timeRangeFilter.from || timeRangeFilter.to)\n }\n onOpen={(event) => openHeaderFilterMenu(event, column.key)}\n />\n )}\n </div>\n {resizableColumns && column.resizable !== false && (\n <span\n role=\"separator\"\n aria-label={`Resize ${labelText(column)} column`}\n aria-orientation=\"vertical\"\n className=\"absolute right-0 top-0 flex h-full w-3 cursor-col-resize touch-none items-center justify-center border-r border-border/70 bg-gradient-to-l from-border/30 to-transparent transition-colors hover:border-primary hover:from-primary/20\"\n onClick={(event) => {\n event.preventDefault();\n event.stopPropagation();\n }}\n onDoubleClick={(event) => autoFitColumn(event, column)}\n onMouseDown={(event) => startColumnResize(event, column)}\n >\n <span\n aria-hidden\n className=\"h-4 w-0.5 rounded-full bg-border transition-colors group-hover/header:bg-primary/70\"\n />\n </span>\n )}\n </th>\n ))}\n </tr>\n </thead>\n <tbody>\n {sorted.map((record) => {\n const href = getRowHref?.(record.row);\n const expanded = expandedRows[record.id] ?? false;\n const expandedContent =\n renderExpandedRow?.(record.row, {\n columns: effectiveColumns,\n visibleColumns,\n tagActionsByColumn,\n }) ?? null;\n const expandable = expandedContent !== null;\n const rowClickEnabled = isRowClickable?.(record.row) ?? !!onRowClick;\n const clickable = !!href || rowClickEnabled || expandable;\n\n return (\n <Fragment key={record.id}>\n <tr\n className={cn(\n \"border-b border-border/60 align-top\",\n clickable && \"cursor-pointer hover:bg-accent/40\",\n )}\n onClick={() => {\n if (expandable) {\n setExpandedRows((current) => ({\n ...current,\n [record.id]: !current[record.id],\n }));\n }\n if (rowClickEnabled) {\n onRowClick?.(record.row);\n }\n }}\n >\n {visibleColumns.map((column, index) => {\n const rawValue = resolvePath(record.row, column.key);\n let content: ReactNode = column.render\n ? column.render(rawValue, record.row)\n : formatCell(rawValue);\n\n // Tag cells get the + / − filter affordance via\n // context; copy-to-clipboard works without it too.\n if (column.kind === \"tags\" && tagActionsByColumn[column.key]) {\n content = (\n <TagActionsProvider value={tagActionsByColumn[column.key]!}>\n {content}\n </TagActionsProvider>\n );\n }\n\n return (\n <td\n key={column.key}\n className={cn(\n DATA_TABLE_CELL_DENSITY_CLASS,\n alignmentClass(column.align),\n column.cellClassName,\n )}\n >\n <CellContent\n column={column}\n {...(columnWidths[column.key] !== undefined\n ? { width: columnWidths[column.key] }\n : {})}\n >\n {href && index === 0 ? (\n <a href={href} className=\"hover:underline\">\n {content}\n </a>\n ) : (\n content\n )}\n </CellContent>\n </td>\n );\n })}\n </tr>\n {expanded && expandedContent && (\n <tr>\n <td colSpan={visibleColumns.length} className=\"bg-muted/40 p-density-3\">\n <div className=\"rounded-md border border-border bg-background p-density-3\">\n {expandedContent}\n </div>\n </td>\n </tr>\n )}\n </Fragment>\n );\n })}\n </tbody>\n </table>\n </div>\n\n <div className=\"px-1 text-xs text-muted-foreground\">\n {sorted.length} of {data.length} row{data.length === 1 ? \"\" : \"s\"}\n </div>\n {columnMenu && showTablePreferencesControl && (\n <ColumnVisibilityMenu\n columns={effectiveColumns}\n hiddenColumns={hiddenColumns}\n anchor={columnMenu}\n showColumnVisibilityControl={showColumnVisibilityControl}\n showDensityControl={resolvedShowDensityControl}\n densityOverride={densityOverride}\n visibleHideableColumnCount={visibleHideableColumnCount}\n onToggle={toggleColumnVisibility}\n onShowAll={showAllColumns}\n onDensityChange={setDensityOverride}\n onClose={() => setColumnMenu(null)}\n />\n )}\n {headerFilterMenu && (\n <HeaderFilterMenu\n filter={nativeFilterByColumn.get(headerFilterMenu.columnKey ?? \"\")}\n {...(autoTimeRange && timeRangeColumn?.key === headerFilterMenu.columnKey\n ? { timeRange: autoTimeRange }\n : {})}\n anchor={headerFilterMenu}\n onClose={() => setHeaderFilterMenu(null)}\n />\n )}\n </div>\n );\n}\n\nfunction HeaderFilterButton<T extends Record<string, unknown>>({\n column,\n active,\n onOpen,\n}: {\n column: DataTableColumn<T>;\n active: boolean;\n onOpen: (event: ReactMouseEvent<HTMLButtonElement>) => void;\n}) {\n return (\n <button\n type=\"button\"\n aria-label={`Open ${labelText(column)} column filter`}\n aria-haspopup=\"dialog\"\n aria-pressed={active}\n className={cn(\n \"inline-flex h-5 w-5 shrink-0 items-center justify-center rounded text-muted-foreground transition-colors hover:bg-accent hover:text-accent-foreground focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring\",\n active && \"bg-accent text-foreground\",\n )}\n onClick={onOpen}\n >\n <Icon name=\"codicon:filter\" className=\"text-xs\" />\n </button>\n );\n}\n\nfunction HeaderFilterMenu({\n filter,\n timeRange,\n anchor,\n onClose,\n}: {\n filter: FilterBarFilter | undefined;\n timeRange?: FilterBarRangeProps;\n anchor: ColumnMenuState;\n onClose: () => void;\n}) {\n if (!filter && !timeRange) return null;\n\n const label = filter?.label ?? \"Time range\";\n const timeRangeActive = Boolean(timeRange?.from || timeRange?.to);\n\n return (\n <div\n role=\"dialog\"\n aria-label={`${label} column filter`}\n className=\"fixed z-50 rounded-md border border-border bg-popover p-2 text-popover-foreground shadow-lg shadow-black/5\"\n style={{ left: anchor.x, top: anchor.y }}\n onClick={(event) => event.stopPropagation()}\n onContextMenu={(event) => event.preventDefault()}\n >\n <div className=\"mb-2 flex items-center justify-between gap-3\">\n <div className=\"truncate text-xs font-semibold uppercase tracking-wide text-muted-foreground\">\n {label}\n </div>\n <div className=\"flex items-center gap-1\">\n {filter && (\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={() => clearFilterBarFilter(filter)}\n disabled={!isFilterBarFilterActive(filter)}\n >\n Clear all\n </button>\n )}\n {timeRange && (\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={() => timeRange.onApply(\"\", \"\")}\n disabled={!timeRangeActive}\n >\n Clear all\n </button>\n )}\n <button\n type=\"button\"\n aria-label=\"Close column filter\"\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={onClose}\n >\n <Icon name=\"codicon:close\" className=\"text-sm\" />\n </button>\n </div>\n </div>\n <div className=\"flex flex-col gap-2\">\n {filter && <FilterBarFilterPanel filter={filter} chrome=\"embedded\" />}\n {timeRange && <FilterBarRangePanel kind=\"time\" label=\"Time range\" {...timeRange} />}\n </div>\n </div>\n );\n}\n\nfunction 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\nfunction ColumnVisibilityTrigger({\n onOpen,\n}: {\n onOpen: (event: ReactMouseEvent<HTMLButtonElement>) => void;\n}) {\n return (\n <button\n type=\"button\"\n aria-label=\"Open column menu\"\n aria-haspopup=\"menu\"\n className=\"inline-flex h-[34px] w-[34px] items-center justify-center rounded-md border border-input bg-background text-muted-foreground transition-colors hover:bg-accent hover:text-accent-foreground focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2\"\n onClick={(event) => {\n event.stopPropagation();\n onOpen(event);\n }}\n >\n <Icon name=\"codicon:ellipsis\" className=\"text-sm\" />\n </button>\n );\n}\n\nfunction ColumnVisibilityMenu<T extends Record<string, unknown>>({\n columns,\n hiddenColumns,\n anchor,\n showColumnVisibilityControl,\n showDensityControl,\n densityOverride,\n visibleHideableColumnCount,\n onToggle,\n onShowAll,\n onDensityChange,\n onClose,\n}: {\n columns: DataTableColumn<T>[];\n hiddenColumns: Record<string, boolean>;\n anchor: ColumnMenuState;\n showColumnVisibilityControl: boolean;\n showDensityControl: boolean;\n densityOverride: Density | undefined;\n visibleHideableColumnCount: number;\n onToggle: (column: DataTableColumn<T>) => void;\n onShowAll: () => void;\n onDensityChange: (density: Density | undefined) => void;\n onClose: () => void;\n}) {\n const activeColumn = anchor.columnKey\n ? columns.find((column) => column.key === anchor.columnKey)\n : undefined;\n const canHideActiveColumn =\n activeColumn && isColumnHideable(activeColumn) && visibleHideableColumnCount > 1;\n\n return (\n <div\n role=\"menu\"\n aria-label=\"Column menu\"\n className=\"fixed z-50 min-w-[16rem] rounded-md border border-border bg-popover p-1.5 text-popover-foreground shadow-lg shadow-black/5\"\n style={{ left: anchor.x, top: anchor.y }}\n onClick={(event) => event.stopPropagation()}\n onContextMenu={(event) => event.preventDefault()}\n >\n {showColumnVisibilityControl && (\n <>\n <div className=\"flex items-center justify-between gap-3 px-2 py-1.5 text-xs font-medium text-muted-foreground\">\n <span>Columns</span>\n <button\n type=\"button\"\n className=\"rounded px-1.5 py-0.5 text-xs text-foreground transition-colors hover:bg-accent hover:text-accent-foreground focus:bg-accent focus:outline-none\"\n onClick={onShowAll}\n >\n Show all\n </button>\n </div>\n\n {activeColumn && (\n <>\n <button\n type=\"button\"\n role=\"menuitem\"\n disabled={!canHideActiveColumn}\n className={cn(\n \"flex w-full items-center gap-2 rounded-md px-2 py-1.5 text-left text-sm transition-colors hover:bg-accent hover:text-accent-foreground focus:bg-accent focus:outline-none\",\n !canHideActiveColumn && \"cursor-not-allowed opacity-50\",\n )}\n onClick={() => {\n if (!canHideActiveColumn) return;\n onToggle(activeColumn);\n onClose();\n }}\n >\n <Icon name=\"codicon:eye-closed\" className=\"text-sm text-muted-foreground\" />\n <span>Hide {labelText(activeColumn)}</span>\n </button>\n <div className=\"my-1 h-px bg-border\" />\n </>\n )}\n\n <div className=\"max-h-72 overflow-auto\">\n {columns.map((column) => {\n const hideable = isColumnHideable(column);\n const visible = hiddenColumns[column.key] !== true;\n const disabled = !hideable || (visible && visibleHideableColumnCount <= 1);\n return (\n <label\n key={column.key}\n className={cn(\n \"flex cursor-pointer items-center gap-2 rounded-md px-2 py-1.5 text-sm transition-colors hover:bg-accent hover:text-accent-foreground\",\n disabled && \"cursor-not-allowed opacity-50\",\n )}\n >\n <input\n type=\"checkbox\"\n className=\"h-4 w-4 rounded border-border\"\n checked={visible}\n disabled={disabled}\n onChange={() => onToggle(column)}\n />\n <span className=\"truncate\">{labelText(column)}</span>\n </label>\n );\n })}\n </div>\n </>\n )}\n\n {showDensityControl && (\n <DensityMenuSection\n densityOverride={densityOverride}\n separated={showColumnVisibilityControl}\n onDensityChange={onDensityChange}\n />\n )}\n </div>\n );\n}\n\nfunction DensityMenuSection({\n densityOverride,\n separated,\n onDensityChange,\n}: {\n densityOverride: Density | undefined;\n separated: boolean;\n onDensityChange: (density: Density | undefined) => void;\n}) {\n const current = densityOverride ?? \"inherit\";\n\n return (\n <div className={cn(separated && \"mt-1 border-t border-border pt-1\")}>\n <div className=\"px-2 py-1.5 text-xs font-medium text-muted-foreground\">Density</div>\n <button\n type=\"button\"\n role=\"menuitemradio\"\n aria-checked={current === \"inherit\"}\n className={densityMenuItemClassName(current === \"inherit\")}\n onClick={() => onDensityChange(undefined)}\n >\n <Icon name=\"ph:arrows-in-line-vertical\" className=\"text-sm text-muted-foreground\" />\n <span className=\"min-w-0 flex-1 truncate\">Use page density</span>\n {current === \"inherit\" ? (\n <Icon name=\"ph:check\" className=\"text-sm text-foreground\" />\n ) : (\n <span className=\"inline-block h-4 w-4\" aria-hidden />\n )}\n </button>\n {DENSITY_OPTIONS.map((option) => {\n const active = current === option.value;\n return (\n <button\n key={option.value}\n type=\"button\"\n role=\"menuitemradio\"\n aria-checked={active}\n className={densityMenuItemClassName(active)}\n onClick={() => onDensityChange(option.value)}\n >\n <Icon name={option.icon} className=\"text-sm text-muted-foreground\" />\n <span className=\"min-w-0 flex-1 truncate\">{option.label}</span>\n {active ? (\n <Icon name=\"ph:check\" className=\"text-sm text-foreground\" />\n ) : (\n <span className=\"inline-block h-4 w-4\" aria-hidden />\n )}\n </button>\n );\n })}\n </div>\n );\n}\n\nfunction densityMenuItemClassName(active: boolean) {\n return cn(\n \"flex w-full items-center gap-2 rounded-md px-2 py-1.5 text-left text-sm transition-colors hover:bg-accent hover:text-accent-foreground focus:bg-accent focus:outline-none\",\n active && \"text-foreground\",\n );\n}\n\nfunction CellContent<T extends Record<string, unknown>>({\n column,\n width,\n children,\n}: {\n column: DataTableColumn<T>;\n width?: number;\n children: ReactNode;\n}) {\n return (\n <div\n className={cn(cellContentClassName(column, width), alignmentClass(column.align))}\n style={cellContentStyle(width)}\n >\n {children}\n </div>\n );\n}\n\nfunction getSortValue<T extends Record<string, unknown>>(row: T, column: DataTableColumn<T>) {\n const rawValue = resolvePath(row, column.key);\n return column.sortValue ? column.sortValue(rawValue, row) : rawValue;\n}\n\nfunction getFilterCandidate<T extends Record<string, unknown>>(row: T, column: DataTableColumn<T>) {\n const rawValue = resolvePath(row, column.key);\n return column.filterValue ? column.filterValue(rawValue, row) : rawValue;\n}\n\nfunction getFilterTokens<T extends Record<string, unknown>>(row: T, column: DataTableColumn<T>) {\n return normalizeTokens(getFilterCandidate(row, column));\n}\n\nfunction getFilterNumbers<T extends Record<string, unknown>>(row: T, column: DataTableColumn<T>) {\n return normalizeNumbers(getFilterCandidate(row, column));\n}\n\nfunction normalizeTokens(value: FilterValue | unknown): string[] {\n if (Array.isArray(value)) {\n return value.flatMap((item) => normalizeTokens(item)).filter(Boolean);\n }\n\n if (value == null) return [];\n if (typeof value === \"object\") return [JSON.stringify(value)];\n\n const token = String(value).trim();\n return token ? [token] : [];\n}\n\nfunction normalizeNumbers(value: FilterValue | unknown): number[] {\n if (Array.isArray(value)) {\n return value.flatMap((item) => normalizeNumbers(item));\n }\n\n const parsed = parseNumberInput(value);\n return parsed == null ? [] : [parsed];\n}\n\nfunction updateFilterValue(state: Record<string, string>, key: string, nextValue: string) {\n const next = { ...state };\n\n if (nextValue.trim()) {\n next[key] = nextValue;\n } else {\n delete next[key];\n }\n\n return next;\n}\n\nfunction updateFilterRecord(\n state: Record<string, Record<string, FilterBarMultiFilterMode>>,\n key: string,\n nextValue: Record<string, FilterBarMultiFilterMode>,\n) {\n const next = { ...state };\n\n if (Object.keys(nextValue).length > 0) {\n next[key] = nextValue;\n } else {\n delete next[key];\n }\n\n return next;\n}\n\nfunction updateNumberFilterValue(\n state: Record<string, FilterBarNumberValue>,\n key: string,\n nextValue: FilterBarNumberValue,\n) {\n const next = { ...state };\n const hasMin = String(nextValue.min ?? \"\").trim() !== \"\";\n const hasMax = String(nextValue.max ?? \"\").trim() !== \"\";\n\n if (hasMin || hasMax) {\n next[key] = nextValue;\n } else {\n delete next[key];\n }\n\n return next;\n}\n\nfunction pruneTextFilterState(state: Record<string, string>, filters: GeneratedFilter<any>[]) {\n return pruneFilterState(state, filters, \"text\", (value) => !String(value ?? \"\").trim());\n}\n\nfunction pruneMultiFilterState(\n state: Record<string, Record<string, FilterBarMultiFilterMode>>,\n filters: GeneratedFilter<any>[],\n) {\n // multi and nested-multi share the same state slot; allow either kind to\n // keep the entry alive.\n const allowed = new Set(\n filters\n .filter((filter) => filter.kind === \"multi\" || filter.kind === \"nested-multi\")\n .map((filter) => filter.column.key),\n );\n return Object.fromEntries(\n Object.entries(state).filter(\n ([key, value]) => allowed.has(key) && Object.keys(value).length > 0,\n ),\n );\n}\n\nfunction pruneNumberFilterState(\n state: Record<string, FilterBarNumberValue>,\n filters: GeneratedFilter<any>[],\n) {\n return pruneFilterState(\n state,\n filters,\n \"number\",\n (value) => !String(value.min ?? \"\").trim() && !String(value.max ?? \"\").trim(),\n );\n}\n\nfunction pruneFilterState<T>(\n state: Record<string, T>,\n filters: GeneratedFilter<any>[],\n kind: GeneratedFilter<any>[\"kind\"],\n isEmpty: (value: T) => boolean,\n) {\n const allowed = new Set(\n filters.filter((filter) => filter.kind === kind).map((filter) => filter.column.key),\n );\n return Object.fromEntries(\n Object.entries(state).filter(([key, value]) => allowed.has(key) && !isEmpty(value)),\n ) as Record<string, T>;\n}\n\nfunction resolvePath(obj: unknown, path: string): unknown {\n return path.split(\".\").reduce<unknown>((current, key) => {\n if (current && typeof current === \"object\") {\n return (current as Record<string, unknown>)[key];\n }\n return undefined;\n }, obj);\n}\n\nfunction formatCell(value: unknown): ReactNode {\n if (value == null || value === \"\") {\n return <span className=\"text-muted-foreground\">—</span>;\n }\n if (typeof value === \"boolean\") return value ? \"True\" : \"False\";\n if (typeof value === \"object\") return JSON.stringify(value);\n return String(value);\n}\n\n// Groups flat key=value tokens by key for the nested-multi tag filter.\n// Tokens without a separator land in a synthetic \"\" group rendered as\n// \"Other\" by the filter UI.\nfunction groupTagOptions(\n options: MultiSelectOption[],\n separator: string,\n): Array<{ groupKey: string; label?: string; options: MultiSelectOption[] }> {\n const byKey = new Map<string, MultiSelectOption[]>();\n for (const option of options) {\n const { key } = splitTagToken(option.value, separator);\n const list = byKey.get(key) ?? [];\n list.push(option);\n byKey.set(key, list);\n }\n return Array.from(byKey.entries())\n .sort(([a], [b]) => {\n // Bare-tag bucket sinks to the bottom; otherwise alphabetical.\n if (a === \"\" && b !== \"\") return 1;\n if (b === \"\" && a !== \"\") return -1;\n return a.localeCompare(b);\n })\n .map(([groupKey, groupOptions]) => ({\n groupKey,\n label: groupKey === \"\" ? \"Other\" : groupKey,\n options: groupOptions,\n }));\n}\n\nfunction applyKindDefaults<T extends Record<string, unknown>>(\n column: DataTableColumn<T>,\n timestampFormat: TimestampFormat | undefined,\n): DataTableColumn<T> {\n if (!column.kind) return column;\n\n if (column.kind === \"timestamp\") {\n const format = timestampFormat ?? \"iso\";\n return {\n ...column,\n render:\n column.render ??\n ((value) => (\n <Timestamp\n value={value}\n format={format}\n showTitleOnHover={column.timestamp?.alwaysShowFullOnHover !== false}\n />\n )),\n sortValue: column.sortValue ?? ((value) => parseTimestamp(value)?.getTime() ?? null),\n filterValue:\n column.filterValue ??\n ((value) => {\n const parsed = parseTimestamp(value);\n return parsed ? parsed.toISOString() : \"\";\n }),\n };\n }\n\n if (column.kind === \"tags\") {\n const opts = column.tags;\n const separator = opts?.separator ?? \"=\";\n return {\n ...column,\n render:\n column.render ??\n ((value) => (\n <TagList\n tags={normalizeTags(value as TagsValue, separator)}\n maxVisible={opts?.maxVisible ?? 3}\n />\n )),\n filterValue:\n column.filterValue ?? ((value) => tagFilterTokens(value as TagsValue, separator)),\n sortValue:\n column.sortValue ?? ((value) => tagFilterTokens(value as TagsValue, separator).length),\n };\n }\n\n if (column.kind === \"status\") {\n const opts = column.status;\n const map = opts?.map ?? ((raw) => normalizeStatus(raw));\n return {\n ...column,\n render:\n column.render ??\n ((value, row) => {\n const status = map(value, row);\n if (!status) return <span className=\"text-muted-foreground\">—</span>;\n const label = opts?.showLabel ? (typeof value === \"string\" ? value : status) : undefined;\n const title =\n opts?.title?.(value, row) ?? (typeof value === \"string\" ? value : undefined);\n return (\n <StatusDot\n status={status}\n {...(label ? { label } : {})}\n {...(title ? { title } : {})}\n />\n );\n }),\n filterValue:\n column.filterValue ??\n ((value, row) => {\n const status = map(value, row);\n return status ?? \"\";\n }),\n sortValue: column.sortValue ?? ((value, row) => map(value, row) ?? \"\"),\n };\n }\n\n return column;\n}\n\nfunction prettifyKey(key: string) {\n return key\n .replace(/([a-z])([A-Z])/g, \"$1 $2\")\n .replace(/[_-]/g, \" \")\n .replace(/\\b\\w/g, (value) => value.toUpperCase())\n .trim();\n}\n\nfunction labelText<T extends Record<string, unknown>>(column: DataTableColumn<T>) {\n if (typeof column.label === \"string\") return column.label;\n return prettifyKey(column.key.split(\".\").at(-1) ?? column.key);\n}\n\nfunction isColumnHideable<T extends Record<string, unknown>>(column: DataTableColumn<T>) {\n return column.hideable !== false;\n}\n\nfunction 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\nfunction menuStateFromPointer(\n event: ReactMouseEvent<HTMLElement>,\n columnKey?: string,\n): ColumnMenuState {\n const padding = 8;\n const width = 256;\n const height = 320;\n const viewportWidth = typeof window === \"undefined\" ? event.clientX + width : window.innerWidth;\n const viewportHeight =\n typeof window === \"undefined\" ? event.clientY + height : window.innerHeight;\n\n const position = {\n x: Math.max(padding, Math.min(event.clientX, viewportWidth - width - padding)),\n y: Math.max(padding, Math.min(event.clientY, viewportHeight - height - padding)),\n };\n return columnKey ? { ...position, columnKey } : position;\n}\n\nfunction menuStateFromTrigger(\n event: ReactMouseEvent<HTMLElement>,\n columnKey?: string,\n): ColumnMenuState {\n const rect = event.currentTarget.getBoundingClientRect();\n const padding = 8;\n const width = 256;\n const height = 320;\n const viewportWidth = typeof window === \"undefined\" ? rect.right + width : window.innerWidth;\n const viewportHeight = typeof window === \"undefined\" ? rect.bottom + height : window.innerHeight;\n\n const position = {\n x: Math.max(padding, Math.min(rect.right - width, viewportWidth - width - padding)),\n y: Math.max(padding, Math.min(rect.bottom + 6, viewportHeight - height - padding)),\n };\n return columnKey ? { ...position, columnKey } : position;\n}\n\nfunction columnStyle<T extends Record<string, unknown>>(\n column: DataTableColumn<T>,\n widths: Record<string, number>,\n): CSSProperties | undefined {\n const width = widths[column.key];\n return width ? { width: `${width}px` } : undefined;\n}\n\nfunction measureColumnContentWidth<T extends Record<string, unknown>>(\n table: HTMLTableElement,\n columnIndex: number,\n column: DataTableColumn<T>,\n) {\n const cells = Array.from(table.querySelectorAll(\"th, td\")).filter(\n (cell): cell is HTMLTableCellElement =>\n cell instanceof HTMLTableCellElement && cell.cellIndex === columnIndex && cell.colSpan === 1,\n );\n\n const measured = cells.reduce((current, cell) => {\n const horizontalPadding = getHorizontalPadding(cell);\n const contentWidths = Array.from(cell.children).map((child) =>\n child instanceof HTMLElement ? child.scrollWidth + horizontalPadding : 0,\n );\n return Math.max(current, cell.scrollWidth, ...contentWidths);\n }, 0);\n\n return clampColumnWidth(column, measured || defaultColumnWidth(column));\n}\n\nfunction getHorizontalPadding(element: HTMLElement) {\n if (typeof window === \"undefined\") return 0;\n const styles = window.getComputedStyle(element);\n return parseCssPixelValue(styles.paddingLeft) + parseCssPixelValue(styles.paddingRight);\n}\n\nfunction parseCssPixelValue(value: string) {\n const parsed = Number.parseFloat(value);\n return Number.isFinite(parsed) ? parsed : 0;\n}\n\nfunction readStoredColumnWidths<T extends Record<string, unknown>>(\n storageKey: string,\n columns: DataTableColumn<T>[],\n): Record<string, number> {\n if (typeof window === \"undefined\") return {};\n\n try {\n const raw = window.localStorage.getItem(storageKey);\n if (!raw) return {};\n\n const parsed = JSON.parse(raw);\n if (!parsed || typeof parsed !== \"object\" || Array.isArray(parsed)) return {};\n\n return pruneColumnWidths(parsed as Record<string, unknown>, columns);\n } catch {\n return {};\n }\n}\n\nfunction writeStoredColumnWidths(storageKey: string, widths: Record<string, number>) {\n if (typeof window === \"undefined\") return;\n\n try {\n if (Object.keys(widths).length === 0) {\n window.localStorage.removeItem(storageKey);\n } else {\n window.localStorage.setItem(storageKey, JSON.stringify(widths));\n }\n } catch {}\n}\n\nfunction readStoredHiddenColumns<T extends Record<string, unknown>>(\n storageKey: string,\n columns: DataTableColumn<T>[],\n): Record<string, boolean> {\n if (typeof window === \"undefined\") return {};\n\n try {\n const raw = window.localStorage.getItem(storageKey);\n if (!raw) return {};\n\n const parsed = JSON.parse(raw);\n if (!parsed || typeof parsed !== \"object\" || Array.isArray(parsed)) return {};\n\n return pruneHiddenColumns(parsed as Record<string, unknown>, columns);\n } catch {\n return {};\n }\n}\n\nfunction writeStoredHiddenColumns(storageKey: string, hiddenColumns: Record<string, boolean>) {\n if (typeof window === \"undefined\") return;\n\n try {\n if (Object.keys(hiddenColumns).length === 0) {\n window.localStorage.removeItem(storageKey);\n } else {\n window.localStorage.setItem(storageKey, JSON.stringify(hiddenColumns));\n }\n } catch {}\n}\n\nfunction readStoredDensityOverride(storageKey: string): Density | undefined {\n if (typeof window === \"undefined\") return undefined;\n\n try {\n const raw = window.localStorage.getItem(storageKey);\n return isDensity(raw) ? raw : undefined;\n } catch {\n return undefined;\n }\n}\n\nfunction writeStoredDensityOverride(storageKey: string, density: Density | undefined) {\n if (typeof window === \"undefined\") return;\n\n try {\n if (density) {\n window.localStorage.setItem(storageKey, density);\n } else {\n window.localStorage.removeItem(storageKey);\n }\n } catch {}\n}\n\nfunction isDensity(value: unknown): value is Density {\n return value === \"compact\" || value === \"comfortable\" || value === \"spacious\";\n}\n\nfunction pruneColumnWidths<T extends Record<string, unknown>>(\n widths: Record<string, unknown>,\n columns: DataTableColumn<T>[],\n): Record<string, number> {\n const byKey = new Map(columns.map((column) => [column.key, column]));\n const next: Record<string, number> = {};\n\n for (const [key, width] of Object.entries(widths)) {\n const column = byKey.get(key);\n if (!column || typeof width !== \"number\" || !Number.isFinite(width)) continue;\n\n next[key] = clampColumnWidth(column, width);\n }\n\n return next;\n}\n\nfunction pruneHiddenColumns<T extends Record<string, unknown>>(\n hiddenColumns: Record<string, unknown>,\n columns: DataTableColumn<T>[],\n): Record<string, boolean> {\n const byKey = new Map(columns.map((column) => [column.key, column]));\n const next: Record<string, boolean> = {};\n\n for (const [key, hidden] of Object.entries(hiddenColumns)) {\n const column = byKey.get(key);\n if (!column || hidden !== true || !isColumnHideable(column)) continue;\n\n next[key] = true;\n }\n\n const hideable = columns.filter(isColumnHideable);\n const visibleHideableCount = hideable.filter((column) => next[column.key] !== true).length;\n if (hideable.length > 0 && visibleHideableCount === 0) {\n delete next[hideable[0]!.key];\n }\n\n return next;\n}\n\nfunction sameColumnWidths(left: Record<string, number>, right: Record<string, number>) {\n const leftKeys = Object.keys(left);\n const rightKeys = Object.keys(right);\n return (\n leftKeys.length === rightKeys.length &&\n leftKeys.every(\n (key) => Object.prototype.hasOwnProperty.call(right, key) && left[key] === right[key],\n )\n );\n}\n\nfunction sameHiddenColumns(left: Record<string, boolean>, right: Record<string, boolean>) {\n const leftKeys = Object.keys(left);\n const rightKeys = Object.keys(right);\n return (\n leftKeys.length === rightKeys.length &&\n leftKeys.every(\n (key) => Object.prototype.hasOwnProperty.call(right, key) && left[key] === right[key],\n )\n );\n}\n\nfunction defaultColumnWidth<T extends Record<string, unknown>>(column: DataTableColumn<T>) {\n if (column.grow) return DEFAULT_GROW_COLUMN_WIDTH;\n if (column.shrink) return DEFAULT_SHRINK_COLUMN_WIDTH;\n return DEFAULT_COLUMN_WIDTH;\n}\n\nfunction clampColumnWidth<T extends Record<string, unknown>>(\n column: DataTableColumn<T>,\n width: number,\n) {\n const minWidth = column.minWidth ?? DEFAULT_COLUMN_MIN_WIDTH;\n const maxWidth = column.maxWidth;\n const minimum = Number.isFinite(minWidth) ? Math.max(1, minWidth) : DEFAULT_COLUMN_MIN_WIDTH;\n const maximum =\n maxWidth != null && Number.isFinite(maxWidth) ? Math.max(minimum, maxWidth) : Infinity;\n\n return Math.round(Math.max(minimum, Math.min(maximum, width)));\n}\n\nfunction getNumericFilterBounds<T extends Record<string, unknown>>(\n rows: InternalRow<T>[],\n column: DataTableColumn<T>,\n) {\n const values = rows.flatMap((record) =>\n collectFilterValues(getFilterCandidate(record.row, column)),\n );\n const populated = values.filter(hasFilterValue);\n const numericValues = populated\n .map((value) => parseNumberInput(value))\n .filter((value) => value != null);\n\n if (populated.length === 0 || numericValues.length !== populated.length) {\n return null;\n }\n\n return {\n min: Math.min(...numericValues),\n max: Math.max(...numericValues),\n step: inferNumericStep(numericValues),\n };\n}\n\nfunction collectFilterValues(value: unknown): unknown[] {\n if (Array.isArray(value)) {\n return value.flatMap((item) => collectFilterValues(item));\n }\n\n return [value];\n}\n\nfunction hasFilterValue(value: unknown) {\n return value != null && !(typeof value === \"string\" && value.trim() === \"\");\n}\n\nfunction parseNumberInput(value: unknown): number | null {\n if (typeof value === \"number\") {\n return Number.isFinite(value) ? value : null;\n }\n\n if (typeof value !== \"string\") {\n return null;\n }\n\n const trimmed = value.trim();\n if (!trimmed) return null;\n\n const parsed = Number(trimmed);\n return Number.isFinite(parsed) ? parsed : null;\n}\n\nfunction inferNumericStep(values: number[]) {\n if (values.every(Number.isInteger)) {\n return 1;\n }\n\n const maxFractionDigits = values.reduce((current, value) => {\n const [, fraction = \"\"] = String(value).split(\".\");\n return Math.max(current, fraction.length);\n }, 0);\n\n return 10 ** -Math.min(maxFractionDigits || 2, 6);\n}\n\nfunction alignmentClass(align?: DataTableColumn[\"align\"]) {\n if (align === \"right\") return \"text-right\";\n if (align === \"center\") return \"text-center\";\n return \"text-left\";\n}\n\nfunction headerAlignmentClass(align?: DataTableColumn[\"align\"]) {\n if (align === \"right\") return \"justify-end\";\n if (align === \"center\") return \"justify-center\";\n return \"justify-start\";\n}\n\nfunction cellContentStyle(width: number | undefined): CSSProperties | undefined {\n return width ? { maxWidth: `${width}px` } : undefined;\n}\n\nfunction cellContentClassName<T extends Record<string, unknown>>(\n column: DataTableColumn<T>,\n width?: number,\n): TdHTMLAttributes<HTMLTableCellElement>[\"className\"] {\n const resized = width !== undefined;\n const base = \"w-full truncate\";\n if (column.grow) return cn(base, resized ? \"min-w-0\" : \"min-w-56 max-w-[36rem]\");\n if (column.shrink) return cn(base, \"min-w-0 whitespace-nowrap\", !resized && \"max-w-[16rem]\");\n return cn(base, \"min-w-0\", !resized && \"max-w-[18rem]\");\n}\n\nexport function inferColumns<T extends Record<string, unknown>>(data: T[]): DataTableColumn<T>[] {\n if (data.length === 0) return [];\n\n const keys = new Set<string>();\n for (const row of data.slice(0, 20)) {\n Object.keys(row)\n .filter((key) => !key.startsWith(\"_\"))\n .forEach((key) => keys.add(key));\n }\n\n return Array.from(keys).map((key) => ({\n key,\n label: prettifyKey(key),\n sortable: true,\n filterable: true,\n }));\n}\n"],"names":["_a","Fragment"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"DataTable.js","sources":["../../src/data/DataTable.tsx"],"sourcesContent":["import {\n Fragment,\n useEffect,\n useMemo,\n useState,\n type CSSProperties,\n type MouseEvent as ReactMouseEvent,\n type ReactNode,\n type TdHTMLAttributes,\n} from \"react\";\nimport { useSort, type SortDir } from \"../hooks/use-sort\";\nimport { DensityValueProvider, type Density } from \"../hooks/use-density\";\nimport { useResolvedTheme, type Theme } from \"../hooks/use-theme\";\nimport { cn } from \"../lib/utils\";\nimport { Modal, type ModalSize } from \"../overlay/Modal\";\nimport {\n FilterBar,\n FilterBarFilterPanel,\n FilterBarRangePanel,\n clearFilterBarFilter,\n isFilterBarFilterActive,\n type FilterBarFilter,\n type FilterBarMultiFilterMode,\n type FilterBarNumberValue,\n type FilterBarProps,\n type FilterBarRangePreset,\n type FilterBarRangeProps,\n type FilterBarSearchProps,\n} from \"../components/FilterBar\";\nimport type { MultiSelectOption } from \"../components/MultiSelect\";\nimport { Icon, type StaticIconComponent } from \"./Icon\";\nimport {\n UiClose,\n UiEllipsis,\n UiEyeClosed,\n UiFilterFilled,\n UiFilter,\n UiFullscreen,\n UiResizeVertical,\n UiCheck,\n UiDesktop,\n UiListDashes,\n UiListFlat,\n UiMoon,\n UiRows,\n UiSun,\n} from \"../icons\";\nimport { SortableHeader } from \"./SortableHeader\";\nimport {\n Timestamp,\n chooseTimestampFormat,\n modeToFormat,\n parseTimestamp,\n resolveDateMath,\n type TimestampFormat,\n type TimestampOptions,\n} from \"./cells/Timestamp\";\nimport {\n TagActionsProvider,\n TagList,\n normalizeTags,\n splitTagToken,\n tagActionsFromRecord,\n tagFilterTokens,\n type TagActionsContextValue,\n type TagFilterMode,\n type TagsOptions,\n type TagsValue,\n} from \"./cells/TagList\";\nimport { StatusDot } from \"./cells/StatusDot\";\nimport { normalizeStatus } from \"./cells/status-mapping\";\nimport type { BadgeStatus } from \"./Badge\";\n\nexport type { TimestampOptions, TagsOptions };\n\nexport type DataTableColumnKind = \"timestamp\" | \"tags\" | \"status\";\n\nexport type StatusOptions<T extends Record<string, unknown> = Record<string, unknown>> = {\n /** Maps the raw cell value to a badge status. Return null to fall back to text. */\n map?: (raw: unknown, row: T) => BadgeStatus | null;\n /** Show the normalized status label next to the dot. */\n showLabel?: boolean;\n /** Tooltip text for the status cell. */\n title?: (raw: unknown, row: T) => string;\n};\n\ntype FilterValue = string | number | boolean | null | undefined | Array<string | number | boolean>;\n\ntype InternalRow<T> = {\n id: string;\n row: T;\n};\n\ntype GeneratedFilter<T extends Record<string, unknown>> = {\n column: DataTableColumn<T>;\n kind: \"text\" | \"multi\" | \"nested-multi\" | \"number\";\n options: MultiSelectOption[];\n groups?: Array<{\n groupKey: string;\n label?: string;\n options: MultiSelectOption[];\n }>;\n numberBounds?: {\n min: number;\n max: number;\n step: number;\n };\n};\n\nconst DEFAULT_COLUMN_MIN_WIDTH = 64;\nconst DEFAULT_COLUMN_WIDTH = 160;\nconst DEFAULT_GROW_COLUMN_WIDTH = 224;\nconst DEFAULT_SHRINK_COLUMN_WIDTH = 96;\nconst COLUMN_WIDTH_STORAGE_PREFIX = \"clicky-ui-data-table-column-widths\";\nconst COLUMN_VISIBILITY_STORAGE_PREFIX = \"clicky-ui-data-table-column-visibility\";\nconst DENSITY_STORAGE_PREFIX = \"clicky-ui-data-table-density\";\n\nconst DENSITY_OPTIONS: Array<{\n value: Density;\n icon: StaticIconComponent;\n label: string;\n}> = [\n { value: \"compact\", icon: UiRows, label: \"Compact\" },\n { value: \"comfortable\", icon: UiListFlat, label: \"Comfortable\" },\n { value: \"spacious\", icon: UiListDashes, label: \"Spacious\" },\n];\n\nconst DATA_TABLE_HEADER_DENSITY_CLASS =\n \"px-2.5 py-1.5 density-compact:px-2 density-compact:py-1 density-comfortable:px-2.5 density-comfortable:py-1.5 density-spacious:px-4 density-spacious:py-3\";\nconst DATA_TABLE_CELL_DENSITY_CLASS =\n \"px-2.5 py-1.5 density-compact:px-2 density-compact:py-0.5 density-comfortable:px-2.5 density-comfortable:py-1.5 density-spacious:px-4 density-spacious:py-3\";\n\ntype ColumnMenuState = {\n x: number;\n y: number;\n columnKey?: string;\n};\n\nexport type DataTableRowDetailContext<T extends Record<string, unknown> = Record<string, unknown>> =\n {\n columns: DataTableColumn<T>[];\n visibleColumns: DataTableColumn<T>[];\n tagActionsByColumn: Record<string, TagActionsContextValue>;\n };\n\n// Mirrors the preset list used by the trace UI's TraceFilters so log/trace\n// tables share the same vocabulary out of the box.\nconst TIMESTAMP_RANGE_PRESETS: FilterBarRangePreset[] = [\n { label: \"Last 5 minutes\", from: \"now-5m\", to: \"now\" },\n { label: \"Last 15 minutes\", from: \"now-15m\", to: \"now\" },\n { label: \"Last 1 hour\", from: \"now-1h\", to: \"now\" },\n { label: \"Last 6 hours\", from: \"now-6h\", to: \"now\" },\n { label: \"Last 24 hours\", from: \"now-24h\", to: \"now\" },\n { label: \"Last 7 days\", from: \"now-7d\", to: \"now\" },\n { label: \"Last 30 days\", from: \"now-30d\", to: \"now\" },\n];\n\nexport type DataTableColumn<T extends Record<string, unknown> = Record<string, unknown>> = {\n /** Field path or stable column id. Dotted paths read nested row values. */\n key: string;\n /** Header label. */\n label: ReactNode;\n /** Enables header click sorting for this column. */\n sortable?: boolean;\n /** Enables a generated column filter when `autoFilter` is true. */\n filterable?: boolean;\n /** Prefer allocating extra width to this column. */\n grow?: boolean;\n /** Prefer keeping this column compact. */\n shrink?: boolean;\n /** Allows users to drag the column separator. */\n resizable?: boolean;\n /** Allows the column to be toggled from the column menu. */\n hideable?: boolean;\n /** Minimum column width in pixels. */\n minWidth?: number;\n /** Maximum column width in pixels. */\n maxWidth?: number;\n /** Cell and header text alignment. */\n align?: \"left\" | \"center\" | \"right\";\n /** Custom cell renderer. */\n render?: (value: unknown, row: T) => ReactNode;\n /** Sort key derived from the raw value and row. */\n sortValue?: (value: unknown, row: T) => unknown;\n /** Filter token or tokens derived from the raw value and row. */\n filterValue?: (value: unknown, row: T) => FilterValue;\n /** Classes applied to cells in this column. */\n cellClassName?: string;\n /** Classes applied to the header cell. */\n headerClassName?: string;\n /**\n * Built-in cell kind. When set, DataTable supplies a default renderer,\n * a default `sortValue` and a default `filterValue` (all overridable).\n * - \"timestamp\": adaptive format (relative / time / short / iso) chosen\n * from the spread of values in `data`.\n * - \"tags\": chip list with `+N` overflow; auto-multi-filter on tag tokens.\n * - \"status\": colored dot with the standard error/warning/success palette\n * (token-mapped — \"ERROR\", \"failed\", \"fatal\" all collapse to \"error\").\n */\n kind?: DataTableColumnKind;\n timestamp?: TimestampOptions;\n tags?: TagsOptions;\n status?: StatusOptions<T>;\n};\n\nexport type DataTableColumnInput<T extends Record<string, unknown> = Record<string, unknown>> =\n | DataTableColumn<T>\n | string;\n\n/**\n * Server-side pagination control surfaced as a footer strip below the table.\n * The DataTable never slices data itself; callers refetch when the page or\n * pageSize changes.\n */\nexport type DataTablePagination = {\n /** Current zero-indexed page. */\n page: number;\n /** Number of rows requested per page. */\n pageSize: number;\n /** Total row count if known; enables \"Page X of Y\". */\n total?: number;\n /** Called when the user moves to another page. */\n onPageChange: (page: number) => void;\n /** Called when the page size select changes. */\n onPageSizeChange: (pageSize: number) => void;\n /** Available page sizes. Defaults to [25, 50, 100, 200]. */\n pageSizeOptions?: number[];\n};\n\ntype DataTableInnerProps<T extends Record<string, unknown> = Record<string, unknown>> = {\n /** Rows to render. The table does not fetch or mutate row data. */\n data: T[];\n /**\n * Column descriptors. Pass a bare string for a default column —\n * `\"foo\"` is equivalent to `{ key: \"foo\", label: \"foo\" }` — handy for\n * ad-hoc query results where the column metadata is just a list of names.\n * Mix and match strings with full descriptors as needed.\n */\n columns: Array<DataTableColumnInput<T>>;\n /** Shows skeleton/loading rows instead of data rows. */\n loading?: boolean;\n /** Message shown while `loading` is true. */\n loadingMessage?: ReactNode;\n /** Number of skeleton rows to render while loading. */\n loadingRowCount?: number;\n /** Message used when there are no rows after filtering. */\n emptyMessage?: string;\n /** Classes applied to the table shell. */\n className?: string;\n /** Generate filters from filterable columns. */\n autoFilter?: boolean;\n /** Show the global search input. */\n showGlobalFilter?: boolean;\n /** Controlled global search value. */\n globalFilter?: string;\n /** Called when the global search changes. */\n onGlobalFilterChange?: (value: string) => void;\n /** Placeholder for the global search input. */\n globalFilterPlaceholder?: string;\n /** Initial sort state. */\n defaultSort?: { key: string; dir?: SortDir };\n /** Extra props forwarded to the internal FilterBar. */\n filterBarProps?: Omit<FilterBarProps, \"search\" | \"filters\">;\n /**\n * Caller-owned search input rendered in the FilterBar's search slot. Unlike\n * `globalFilter`, this does NOT filter rows client-side — it is a controlled\n * input the caller wires to a server-side query (e.g., an operation's `q`\n * parameter). Takes precedence over the built-in global filter input.\n */\n externalSearch?: FilterBarSearchProps;\n /**\n * Caller-owned time-range control rendered in the FilterBar. Like\n * `externalSearch`/`externalFilters`, it does NOT filter rows client-side —\n * the caller wires it to a server-side query (e.g. an operation's\n * `time-from`/`time-to` parameters). Takes precedence over any\n * column-derived time range.\n */\n externalTimeRange?: FilterBarRangeProps;\n /**\n * Extra filter pills supplied by the caller (e.g., operation query\n * parameters surfaced via parametersToFormConfig) that should appear in the\n * FilterBar alongside the column-derived filters. Rendered before the\n * column filters so the caller's natural ordering wins.\n */\n externalFilters?: FilterBarFilter[];\n /**\n * Server-side pagination footer. When provided, a small page-size / prev /\n * next strip is rendered below the table; the DataTable does NOT slice\n * `data` itself, callers are expected to refetch when `onPageChange` or\n * `onPageSizeChange` fires.\n */\n pagination?: DataTablePagination;\n /** Stable row id extractor. Defaults to the row index. */\n getRowId?: (row: T, index: number) => string;\n /** Called when a clickable row is selected. */\n onRowClick?: (row: T) => void;\n /** Predicate controlling whether a row is clickable. */\n isRowClickable?: (row: T) => boolean;\n /** Optional href for row link affordances. */\n getRowHref?: (row: T) => string | undefined;\n /** Detail content rendered for expanded rows or dialog details. */\n renderExpandedRow?: (row: T, context: DataTableRowDetailContext<T>) => ReactNode;\n /**\n * How `renderExpandedRow` detail is surfaced when a row is clicked.\n * - \"row\" (default): expands an inline detail row beneath the clicked row.\n * Multiple rows can be open at once.\n * - \"dialog\": opens the detail content in a centered modal; one row at a\n * time. The same `renderExpandedRow` (and its context) drives both styles.\n */\n detailStyle?: \"row\" | \"dialog\";\n /**\n * Title for the detail dialog (detailStyle=\"dialog\"). Pass a function to\n * derive a per-row title, e.g. `(row) => \\`Session ${row.sessionId}\\``.\n */\n detailDialogTitle?: ReactNode | ((row: T) => ReactNode);\n /** Modal size for the detail dialog. Defaults to \"lg\". */\n detailDialogSize?: ModalSize;\n /** Enables column drag resize handles. */\n resizableColumns?: boolean;\n /** Persists column widths to localStorage. */\n persistColumnWidths?: boolean;\n /** Storage key for persisted column widths. */\n columnResizeStorageKey?: string;\n /** Enables column visibility controls. */\n hideableColumns?: boolean;\n /** Persists column visibility to localStorage. */\n persistColumnVisibility?: boolean;\n /** Storage key for persisted column visibility. */\n columnVisibilityStorageKey?: string;\n /** Controlled row density. */\n density?: Density;\n /** Initial row density for uncontrolled usage. */\n defaultDensity?: Density;\n /** Called when density changes. */\n onDensityChange?: (density: Density | undefined) => void;\n /** Persists density to localStorage. */\n persistDensity?: boolean;\n /** Storage key for persisted density. */\n densityStorageKey?: string;\n /** Shows density controls in the column menu. */\n showDensityControl?: boolean;\n /**\n * Current value of the theme menu shown in the column / preferences popover.\n * The inner DataTable does not apply this value itself — it's the menu's\n * displayed selection. The outer `DataTable` wrapper manages this state and\n * paints a wrapper-level `data-theme`.\n */\n themeMenuValue?: Theme;\n onThemeChange?: (theme: Theme) => void;\n /** Shows theme controls in the column menu. */\n showThemeControl?: boolean;\n /** Shows per-column filter buttons in table headers. */\n showHeaderFilters?: boolean;\n};\n\nexport type DataTableProps<T extends Record<string, unknown> = Record<string, unknown>> = Omit<\n DataTableInnerProps<T>,\n \"themeMenuValue\"\n> & {\n /**\n * Initial / controlled theme value for the column-menu Theme section.\n * When `onThemeChange` is omitted, the DataTable manages this internally\n * (seeded from `theme`) and applies `data-theme` to its root so the table\n * reflects the choice without requiring an enclosing `<ThemeProvider>`.\n */\n theme?: Theme;\n /**\n * Render a fullscreen-toggle button in the FilterBar's trailing slot\n * (just before the column-menu trigger). When clicked, the table re-renders\n * inside a full-viewport `<Modal>`. Defaults to `false`.\n */\n showFullscreenControl?: boolean;\n /** Title shown in the fullscreen modal. */\n fullscreenTitle?: ReactNode;\n /**\n * `aria-label` and `title` for the fullscreen toggle button. Defaults to\n * \"Open table full screen\". LogsTable overrides to \"Open logs full screen\".\n */\n fullscreenButtonLabel?: string;\n};\n\nfunction DataTableInner<T extends Record<string, unknown>>({\n data,\n columns: columnsInput,\n loading = false,\n loadingMessage = \"Loading results…\",\n loadingRowCount = 8,\n emptyMessage: _emptyMessage = \"No data\",\n className,\n autoFilter = false,\n showGlobalFilter = true,\n globalFilter,\n onGlobalFilterChange,\n globalFilterPlaceholder = \"Search all columns…\",\n defaultSort,\n filterBarProps,\n externalSearch,\n externalTimeRange,\n externalFilters,\n pagination,\n getRowId,\n onRowClick,\n isRowClickable,\n getRowHref,\n renderExpandedRow,\n detailStyle = \"row\",\n detailDialogTitle,\n detailDialogSize = \"lg\",\n resizableColumns = true,\n persistColumnWidths = true,\n columnResizeStorageKey,\n hideableColumns = true,\n persistColumnVisibility = true,\n columnVisibilityStorageKey,\n density,\n defaultDensity,\n onDensityChange,\n persistDensity = true,\n densityStorageKey,\n showDensityControl,\n themeMenuValue,\n onThemeChange,\n showThemeControl = false,\n showHeaderFilters = true,\n}: DataTableInnerProps<T>) {\n const columns = useMemo<DataTableColumn<T>[]>(\n () =>\n columnsInput.map((column) =>\n typeof column === \"string\" ? { key: column, label: column } : column,\n ),\n [columnsInput],\n );\n const columnKeysSignature = useMemo(\n () => columns.map((column) => column.key).join(\"|\"),\n [columns],\n );\n const resolvedColumnResizeStorageKey =\n columnResizeStorageKey ?? `${COLUMN_WIDTH_STORAGE_PREFIX}:${columnKeysSignature}`;\n const resolvedColumnVisibilityStorageKey =\n columnVisibilityStorageKey ?? `${COLUMN_VISIBILITY_STORAGE_PREFIX}:${columnKeysSignature}`;\n const resolvedDensityStorageKey =\n densityStorageKey ?? `${DENSITY_STORAGE_PREFIX}:${columnKeysSignature}`;\n const [columnWidths, setColumnWidths] = useState<Record<string, number>>(() =>\n persistColumnWidths ? readStoredColumnWidths(resolvedColumnResizeStorageKey, columns) : {},\n );\n const [hiddenColumns, setHiddenColumns] = useState<Record<string, boolean>>(() =>\n persistColumnVisibility\n ? readStoredHiddenColumns(resolvedColumnVisibilityStorageKey, columns)\n : {},\n );\n const densityControlled = density !== undefined;\n const [localDensityOverride, setLocalDensityOverride] = useState<Density | undefined>(() => {\n if (densityControlled) return density;\n if (persistDensity)\n return readStoredDensityOverride(resolvedDensityStorageKey) ?? defaultDensity;\n return defaultDensity;\n });\n const [columnMenu, setColumnMenu] = useState<ColumnMenuState | null>(null);\n const [headerFilterMenu, setHeaderFilterMenu] = useState<ColumnMenuState | null>(null);\n const [textFilters, setTextFilters] = useState<Record<string, string>>({});\n const [multiFilters, setMultiFilters] = useState<\n Record<string, Record<string, FilterBarMultiFilterMode>>\n >({});\n const [numberFilters, setNumberFilters] = useState<Record<string, FilterBarNumberValue>>({});\n const [expandedRows, setExpandedRows] = useState<Record<string, boolean>>({});\n const [detailRow, setDetailRow] = useState<InternalRow<T> | null>(null);\n const [localGlobalFilter, setLocalGlobalFilter] = useState(\"\");\n const [timeRangeFilter, setTimeRangeFilter] = useState<{\n from: string;\n to: string;\n }>(() => {\n const seed = columns.find(\n (column) => column.kind === \"timestamp\" && column.timestamp?.defaultRange,\n );\n return {\n from: seed?.timestamp?.defaultRange?.from ?? \"\",\n to: seed?.timestamp?.defaultRange?.to ?? \"\",\n };\n });\n\n useEffect(() => {\n setColumnWidths((current) => {\n const stored = persistColumnWidths\n ? readStoredColumnWidths(resolvedColumnResizeStorageKey, columns)\n : {};\n const next = pruneColumnWidths({ ...stored, ...current }, columns);\n return sameColumnWidths(current, next) ? current : next;\n });\n }, [columnKeysSignature, persistColumnWidths, resolvedColumnResizeStorageKey]);\n\n useEffect(() => {\n if (!persistColumnWidths) return;\n writeStoredColumnWidths(resolvedColumnResizeStorageKey, columnWidths);\n }, [columnWidths, persistColumnWidths, resolvedColumnResizeStorageKey]);\n\n useEffect(() => {\n setHiddenColumns((current) => {\n const stored = persistColumnVisibility\n ? readStoredHiddenColumns(resolvedColumnVisibilityStorageKey, columns)\n : {};\n const next = pruneHiddenColumns({ ...stored, ...current }, columns);\n return sameHiddenColumns(current, next) ? current : next;\n });\n }, [columnKeysSignature, persistColumnVisibility, resolvedColumnVisibilityStorageKey]);\n\n useEffect(() => {\n if (!persistColumnVisibility) return;\n writeStoredHiddenColumns(resolvedColumnVisibilityStorageKey, hiddenColumns);\n }, [hiddenColumns, persistColumnVisibility, resolvedColumnVisibilityStorageKey]);\n\n useEffect(() => {\n if (densityControlled) return;\n setLocalDensityOverride(\n persistDensity\n ? (readStoredDensityOverride(resolvedDensityStorageKey) ?? defaultDensity)\n : defaultDensity,\n );\n }, [defaultDensity, densityControlled, persistDensity, resolvedDensityStorageKey]);\n\n useEffect(() => {\n if (densityControlled || !persistDensity) return;\n writeStoredDensityOverride(resolvedDensityStorageKey, localDensityOverride);\n }, [densityControlled, localDensityOverride, persistDensity, resolvedDensityStorageKey]);\n\n useEffect(() => {\n if (!columnMenu && !headerFilterMenu) return;\n\n const close = () => {\n setColumnMenu(null);\n setHeaderFilterMenu(null);\n };\n const closeOnEscape = (event: KeyboardEvent) => {\n if (event.key === \"Escape\") close();\n };\n\n document.addEventListener(\"click\", close);\n document.addEventListener(\"keydown\", closeOnEscape);\n return () => {\n document.removeEventListener(\"click\", close);\n document.removeEventListener(\"keydown\", closeOnEscape);\n };\n }, [columnMenu, headerFilterMenu]);\n\n const rows = useMemo<InternalRow<T>[]>(\n () =>\n data.map((row, index) => ({\n id: getRowId?.(row, index) ?? String(index),\n row,\n })),\n [data, getRowId],\n );\n\n const timestampFormats = useMemo<Record<string, TimestampFormat>>(() => {\n const out: Record<string, TimestampFormat> = {};\n for (const column of columns) {\n if (column.kind !== \"timestamp\") continue;\n const dates: Date[] = [];\n for (const row of data) {\n const raw = resolvePath(row, column.key);\n const parsed = parseTimestamp(raw);\n if (parsed) dates.push(parsed);\n }\n const dataFormat = chooseTimestampFormat(dates);\n out[column.key] = modeToFormat(column.timestamp?.mode ?? \"auto\", dataFormat);\n }\n return out;\n }, [columns, data]);\n\n const effectiveColumns = useMemo<DataTableColumn<T>[]>(\n () => columns.map((column) => applyKindDefaults<T>(column, timestampFormats[column.key])),\n [columns, timestampFormats],\n );\n\n const visibleColumns = useMemo(() => {\n if (!hideableColumns) return effectiveColumns;\n const next = effectiveColumns.filter((column) => !hiddenColumns[column.key]);\n return next.length > 0 ? next : effectiveColumns;\n }, [effectiveColumns, hiddenColumns, hideableColumns]);\n\n const hideableColumnCount = useMemo(\n () => effectiveColumns.filter(isColumnHideable).length,\n [effectiveColumns],\n );\n\n const visibleHideableColumnCount = useMemo(\n () => visibleColumns.filter(isColumnHideable).length,\n [visibleColumns],\n );\n\n const showColumnVisibilityControl = hideableColumns && hideableColumnCount > 1;\n const resolvedShowDensityControl = showDensityControl ?? showColumnVisibilityControl;\n const showTablePreferencesControl =\n showColumnVisibilityControl || resolvedShowDensityControl || showThemeControl;\n const densityOverride = densityControlled ? density : localDensityOverride;\n\n // For each kind:\"tags\" column, expose a TagActions value backed by this\n // table's multiFilters slot. The + / − icons inside each tag mutate the\n // same Record<token, mode> shape that the filter-bar dropdown uses, so\n // the existing filter pipeline picks up the change without changes.\n const tagActionsByColumn = useMemo(() => {\n const out: Record<string, TagActionsContextValue> = {};\n for (const column of visibleColumns) {\n if (column.kind !== \"tags\") continue;\n const columnKey = column.key;\n const current = (multiFilters[columnKey] ?? {}) as Record<string, TagFilterMode>;\n const handler = (next: Record<string, TagFilterMode>) =>\n setMultiFilters((state) => updateFilterRecord(state, columnKey, next));\n out[columnKey] = tagActionsFromRecord(current, handler);\n }\n return out;\n }, [multiFilters, visibleColumns]);\n\n // The first kind:\"timestamp\" column (with autoRangeFilter not disabled) gets\n // the auto-mounted FilterBar time-range picker. The user can override by\n // supplying their own filterBarProps.timeRange.\n const timeRangeColumn = useMemo(() => {\n if (filterBarProps?.timeRange) return null;\n return (\n visibleColumns.find(\n (column) =>\n column.kind === \"timestamp\" &&\n column.filterable !== false &&\n column.timestamp?.autoRangeFilter !== false,\n ) ?? null\n );\n }, [filterBarProps?.timeRange, visibleColumns]);\n\n const filterableColumns = useMemo(\n () =>\n visibleColumns.filter((column) => {\n if (column.filterable === false) return false;\n // Timestamp columns are filtered through the time-range picker, not\n // a per-column text/multi filter. Skip them in auto-filter generation.\n if (column.kind === \"timestamp\") return false;\n return true;\n }),\n [visibleColumns],\n );\n\n const generatedFilters = useMemo<GeneratedFilter<T>[]>(() => {\n if (!autoFilter || loading) return [];\n\n return filterableColumns.map((column) => {\n const numberBounds = getNumericFilterBounds(rows, column);\n if (numberBounds) {\n return {\n column,\n kind: \"number\" as const,\n options: [],\n numberBounds,\n };\n }\n\n const values = new Set<string>();\n\n for (const record of rows) {\n for (const token of getFilterTokens(record.row, column)) {\n if (token) values.add(token);\n }\n }\n\n const options = Array.from(values)\n .sort((left, right) => left.localeCompare(right, undefined, { numeric: true }))\n .map((value) => ({ value, label: value }));\n\n // Tag columns naturally have higher cardinality (e.g. infra labels);\n // we let the multi-filter scale to 50 distinct values before falling\n // back to free-text search.\n const multiCap = column.kind === \"tags\" ? 50 : 20;\n\n const fitsMulti = options.length >= 2 && options.length <= multiCap;\n\n // For tag columns we group tokens by their key so the filter renders\n // as a two-level submenu (env → prod/staging, tier → edge/core, …).\n // Falls back to a flat multi when there's only one key (or none).\n if (column.kind === \"tags\" && fitsMulti) {\n const separator = column.tags?.separator ?? \"=\";\n const groups = groupTagOptions(options, separator);\n if (groups.length >= 2) {\n return {\n column,\n kind: \"nested-multi\" as const,\n options,\n groups,\n };\n }\n }\n\n return {\n column,\n kind: fitsMulti ? \"multi\" : \"text\",\n options,\n };\n });\n }, [autoFilter, filterableColumns, loading, rows]);\n\n useEffect(() => {\n setTextFilters((current) => pruneTextFilterState(current, generatedFilters));\n setMultiFilters((current) => pruneMultiFilterState(current, generatedFilters));\n setNumberFilters((current) => pruneNumberFilterState(current, generatedFilters));\n }, [generatedFilters]);\n\n const globalFilterControlled = globalFilter !== undefined;\n const effectiveGlobalFilter = globalFilterControlled ? globalFilter : localGlobalFilter;\n const setEffectiveGlobalFilter = globalFilterControlled\n ? (onGlobalFilterChange ?? (() => {}))\n : setLocalGlobalFilter;\n const nativeFilters = useMemo<FilterBarFilter[]>(\n () =>\n generatedFilters.map((filter): FilterBarFilter => {\n const columnKey = filter.column.key;\n if (filter.kind === \"multi\") {\n return {\n key: columnKey,\n kind: \"multi\",\n label: labelText(filter.column),\n value: multiFilters[columnKey] ?? {},\n onChange: (next) =>\n setMultiFilters((current) => updateFilterRecord(current, columnKey, next)),\n options: filter.options,\n };\n }\n if (filter.kind === \"nested-multi\") {\n return {\n key: columnKey,\n kind: \"nested-multi\",\n label: labelText(filter.column),\n value: multiFilters[columnKey] ?? {},\n onChange: (next) =>\n setMultiFilters((current) => updateFilterRecord(current, columnKey, next)),\n groups: filter.groups ?? [],\n };\n }\n if (filter.kind === \"number\") {\n const numberFilter: Extract<FilterBarFilter, { kind: \"number\" }> = {\n key: columnKey,\n kind: \"number\",\n label: labelText(filter.column),\n value: numberFilters[columnKey] ?? {},\n onChange: (next: FilterBarNumberValue) =>\n setNumberFilters((current) => updateNumberFilterValue(current, columnKey, next)),\n };\n if (filter.numberBounds?.min !== undefined) {\n numberFilter.domainMin = filter.numberBounds.min;\n }\n if (filter.numberBounds?.max !== undefined) {\n numberFilter.domainMax = filter.numberBounds.max;\n }\n if (filter.numberBounds?.step !== undefined) {\n numberFilter.step = filter.numberBounds.step;\n }\n return numberFilter;\n }\n return {\n key: columnKey,\n kind: \"text\",\n label: labelText(filter.column),\n value: textFilters[columnKey] ?? \"\",\n onChange: (next: string) =>\n setTextFilters((current) => updateFilterValue(current, columnKey, next)),\n };\n }),\n [generatedFilters, multiFilters, numberFilters, textFilters],\n );\n const nativeFilterByColumn = useMemo(\n () => new Map(nativeFilters.map((filter) => [filter.key, filter])),\n [nativeFilters],\n );\n const hasCustomFilterBarContent = Boolean(\n filterBarProps?.leading ||\n filterBarProps?.children ||\n filterBarProps?.trailing ||\n filterBarProps?.timeRange ||\n filterBarProps?.dateRange,\n );\n const autoTimeRange = useMemo<FilterBarRangeProps | null>(() => {\n if (!autoFilter || !timeRangeColumn) return null;\n const next: FilterBarRangeProps = {\n from: timeRangeFilter.from,\n to: timeRangeFilter.to,\n onApply: (from, to) => setTimeRangeFilter({ from, to }),\n presets: timeRangeColumn.timestamp?.rangePresets ?? TIMESTAMP_RANGE_PRESETS,\n fromPlaceholder: \"now-24h\",\n toPlaceholder: \"now\",\n emptyLabel: \"Any time\",\n };\n if (timeRangeColumn.timestamp?.timeEnabled !== undefined) {\n next.timeEnabled = timeRangeColumn.timestamp.timeEnabled;\n }\n if (timeRangeColumn.timestamp?.timeZone) {\n next.timeZone = timeRangeColumn.timestamp.timeZone;\n }\n if (timeRangeColumn.timestamp?.timeZones) {\n next.timeZones = timeRangeColumn.timestamp.timeZones;\n }\n return next;\n }, [autoFilter, timeRangeColumn, timeRangeFilter.from, timeRangeFilter.to]);\n const showFilterBar =\n (autoFilter && (showGlobalFilter || nativeFilters.length > 0 || !!autoTimeRange)) ||\n !!externalSearch ||\n !!externalTimeRange ||\n (externalFilters && externalFilters.length > 0) ||\n hasCustomFilterBarContent ||\n showTablePreferencesControl;\n const setDensityOverride = (next: Density | undefined) => {\n if (!densityControlled) setLocalDensityOverride(next);\n onDensityChange?.(next);\n };\n const filterBarTrailing = showTablePreferencesControl ? (\n <>\n {filterBarProps?.trailing}\n <ColumnVisibilityTrigger onOpen={(event) => setColumnMenu(menuStateFromTrigger(event))} />\n </>\n ) : (\n filterBarProps?.trailing\n );\n const showHeaderFilterControls = autoFilter && showHeaderFilters;\n\n const filteredRows = useMemo(() => {\n const globalNeedle = effectiveGlobalFilter.trim().toLowerCase();\n const now = new Date();\n const rangeFromDate = timeRangeColumn ? resolveDateMath(timeRangeFilter.from, now) : null;\n const rangeToDate = timeRangeColumn ? resolveDateMath(timeRangeFilter.to, now) : null;\n const rangeColumnKey = timeRangeColumn?.key;\n\n return rows.filter(({ row }) => {\n if (rangeColumnKey && (rangeFromDate || rangeToDate)) {\n const raw = resolvePath(row, rangeColumnKey);\n const ts = parseTimestamp(raw);\n if (!ts) return false;\n if (rangeFromDate && ts.getTime() < rangeFromDate.getTime()) return false;\n if (rangeToDate && ts.getTime() > rangeToDate.getTime()) return false;\n }\n\n if (globalNeedle) {\n const haystack = filterableColumns\n .flatMap((column) => getFilterTokens(row, column))\n .join(\" \")\n .toLowerCase();\n\n if (!haystack.includes(globalNeedle)) {\n return false;\n }\n }\n\n for (const filter of generatedFilters) {\n const tokens = getFilterTokens(row, filter.column);\n\n if (filter.kind === \"text\") {\n const needle = (textFilters[filter.column.key] ?? \"\").trim().toLowerCase();\n if (needle && !tokens.some((token) => token.toLowerCase().includes(needle))) {\n return false;\n }\n } else if (filter.kind === \"number\") {\n const range = numberFilters[filter.column.key] ?? {};\n const min = parseNumberInput(range.min);\n const max = parseNumberInput(range.max);\n const hasMin = String(range.min ?? \"\").trim() !== \"\";\n const hasMax = String(range.max ?? \"\").trim() !== \"\";\n\n if (hasMin || hasMax) {\n const values = getFilterNumbers(row, filter.column);\n const matches = values.some(\n (value) => (min == null || value >= min) && (max == null || value <= max),\n );\n\n if (!matches) {\n return false;\n }\n }\n } else {\n const selected = multiFilters[filter.column.key] ?? {};\n const include = Object.entries(selected)\n .filter(([, mode]) => mode === \"include\")\n .map(([value]) => value);\n const exclude = Object.entries(selected)\n .filter(([, mode]) => mode === \"exclude\")\n .map(([value]) => value);\n\n if (include.length > 0 && !tokens.some((token) => include.includes(token))) {\n return false;\n }\n\n if (exclude.length > 0 && tokens.some((token) => exclude.includes(token))) {\n return false;\n }\n }\n }\n\n return true;\n });\n }, [\n effectiveGlobalFilter,\n filterableColumns,\n generatedFilters,\n multiFilters,\n numberFilters,\n rows,\n textFilters,\n timeRangeColumn,\n timeRangeFilter.from,\n timeRangeFilter.to,\n ]);\n\n const sortResolvers = useMemo(\n () =>\n Object.fromEntries(\n effectiveColumns.map((column) => [\n column.key,\n (record: InternalRow<T>) => getSortValue(record.row, column),\n ]),\n ) as Record<string, (record: InternalRow<T>) => unknown>,\n [effectiveColumns],\n );\n\n const { sorted, sort, toggle } = useSort(filteredRows, {\n defaultDir: defaultSort?.dir ?? \"asc\",\n resolvers: sortResolvers,\n ...(defaultSort?.key ? { defaultKey: defaultSort.key } : {}),\n });\n\n const startColumnResize = (event: ReactMouseEvent<HTMLElement>, column: DataTableColumn<T>) => {\n event.preventDefault();\n event.stopPropagation();\n\n const startX = event.clientX;\n const header = event.currentTarget.closest(\"th\");\n const measuredWidth = header?.getBoundingClientRect().width ?? 0;\n const startWidth = measuredWidth || columnWidths[column.key] || defaultColumnWidth(column);\n\n const onMove = (moveEvent: MouseEvent) => {\n const nextWidth = clampColumnWidth(column, startWidth + moveEvent.clientX - startX);\n setColumnWidths((current) => ({\n ...current,\n [column.key]: nextWidth,\n }));\n };\n\n const onUp = () => {\n document.removeEventListener(\"mousemove\", onMove);\n document.removeEventListener(\"mouseup\", onUp);\n document.body.style.cursor = \"\";\n document.body.style.userSelect = \"\";\n };\n\n document.addEventListener(\"mousemove\", onMove);\n document.addEventListener(\"mouseup\", onUp);\n document.body.style.cursor = \"col-resize\";\n document.body.style.userSelect = \"none\";\n };\n\n const autoFitColumn = (event: ReactMouseEvent<HTMLElement>, column: DataTableColumn<T>) => {\n event.preventDefault();\n event.stopPropagation();\n\n const header = event.currentTarget.closest(\"th\");\n const table = event.currentTarget.closest(\"table\");\n if (!header || !table) return;\n\n const columnIndex = Array.from(header.parentElement?.children ?? []).indexOf(header);\n if (columnIndex < 0) return;\n\n const width = measureColumnContentWidth(table, columnIndex, column);\n setColumnWidths((current) => ({\n ...current,\n [column.key]: width,\n }));\n };\n\n const toggleColumnVisibility = (column: DataTableColumn<T>) => {\n if (!isColumnHideable(column)) return;\n\n setHiddenColumns((current) => {\n const hidden = current[column.key] === true;\n if (!hidden && visibleHideableColumnCount <= 1) return current;\n\n const next = { ...current };\n if (hidden) {\n delete next[column.key];\n } else {\n next[column.key] = true;\n }\n\n return pruneHiddenColumns(next, columns);\n });\n };\n\n const showAllColumns = () => setHiddenColumns({});\n\n const openHeaderColumnMenu = (\n event: ReactMouseEvent<HTMLTableCellElement>,\n column: DataTableColumn<T>,\n ) => {\n if (!showColumnVisibilityControl) return;\n event.preventDefault();\n setColumnMenu(menuStateFromPointer(event, column.key));\n };\n\n const openHeaderFilterMenu = (event: ReactMouseEvent<HTMLElement>, columnKey: string) => {\n event.preventDefault();\n event.stopPropagation();\n setHeaderFilterMenu(menuStateFromTrigger(event, columnKey));\n };\n\n return (\n <DensityValueProvider density={densityOverride ?? \"comfortable\"}>\n <div className={cn(\"flex min-h-0 flex-col gap-3\", className)} data-density={densityOverride}>\n {showFilterBar && (\n <FilterBar\n {...filterBarProps}\n {...(externalSearch\n ? { search: externalSearch }\n : autoFilter && showGlobalFilter\n ? {\n search: {\n value: effectiveGlobalFilter,\n onChange: setEffectiveGlobalFilter,\n placeholder: globalFilterPlaceholder,\n },\n }\n : {})}\n {...(externalTimeRange\n ? { timeRange: externalTimeRange }\n : autoTimeRange\n ? { timeRange: autoTimeRange }\n : {})}\n trailing={filterBarTrailing}\n filters={\n externalFilters && externalFilters.length > 0\n ? [...externalFilters, ...nativeFilters]\n : nativeFilters\n }\n />\n )}\n\n <div\n className=\"min-h-0 flex-1 overflow-auto rounded-md border border-border\"\n aria-busy={loading || undefined}\n >\n <table className=\"w-max table-auto text-left text-sm\">\n <colgroup>\n {visibleColumns.map((column) => (\n <col\n key={column.key}\n style={columnStyle(column, columnWidths)}\n className={column.shrink && !column.grow ? \"w-px\" : undefined}\n />\n ))}\n </colgroup>\n <thead className=\"sticky top-0 z-10 bg-muted shadow-[0_1px_0_0_var(--tw-shadow-color)] shadow-border\">\n <tr className=\"border-b border-border text-xs text-muted-foreground\">\n {visibleColumns.map((column) => (\n <th\n key={column.key}\n className={cn(\n \"group/header relative whitespace-nowrap font-medium\",\n DATA_TABLE_HEADER_DENSITY_CLASS,\n alignmentClass(column.align),\n resizableColumns && column.resizable !== false && \"select-none\",\n column.headerClassName,\n )}\n onContextMenu={(event) => openHeaderColumnMenu(event, column)}\n >\n <div\n className={cn(\n \"flex min-w-0 items-center gap-1\",\n headerAlignmentClass(column.align),\n resizableColumns && column.resizable !== false && \"pr-2\",\n )}\n >\n <span className=\"min-w-0\">\n {column.sortable === false ? (\n <span>{column.label}</span>\n ) : (\n <SortableHeader\n active={sort?.key === column.key}\n {...(sort?.key === column.key ? { dir: sort.dir } : {})}\n {...(column.align ? { align: column.align } : {})}\n onClick={() => toggle(column.key)}\n >\n {column.label}\n </SortableHeader>\n )}\n </span>\n {showHeaderFilterControls &&\n (nativeFilterByColumn.has(column.key) ||\n (autoTimeRange && timeRangeColumn?.key === column.key)) && (\n <HeaderFilterButton\n column={column}\n active={\n nativeFilterByColumn.has(column.key)\n ? isFilterBarFilterActive(nativeFilterByColumn.get(column.key)!)\n : Boolean(timeRangeFilter.from || timeRangeFilter.to)\n }\n onOpen={(event) => openHeaderFilterMenu(event, column.key)}\n />\n )}\n </div>\n {resizableColumns && column.resizable !== false && (\n <span\n role=\"separator\"\n aria-label={`Resize ${labelText(column)} column`}\n aria-orientation=\"vertical\"\n className=\"absolute right-0 top-0 flex h-full w-3 cursor-col-resize touch-none items-center justify-center border-r border-border/70 bg-gradient-to-l from-border/30 to-transparent transition-colors hover:border-primary hover:from-primary/20\"\n onClick={(event) => {\n event.preventDefault();\n event.stopPropagation();\n }}\n onDoubleClick={(event) => autoFitColumn(event, column)}\n onMouseDown={(event) => startColumnResize(event, column)}\n >\n <span\n aria-hidden\n className=\"h-4 w-0.5 rounded-full bg-border transition-colors group-hover/header:bg-primary/70\"\n />\n </span>\n )}\n </th>\n ))}\n </tr>\n </thead>\n <tbody>\n {loading ? (\n <DataTableLoadingRows\n columns={visibleColumns}\n rowCount={loadingRowCount}\n message={loadingMessage}\n />\n ) : (\n sorted.map((record) => {\n const href = getRowHref?.(record.row);\n const expanded = expandedRows[record.id] ?? false;\n const expandedContent =\n renderExpandedRow?.(record.row, {\n columns: effectiveColumns,\n visibleColumns,\n tagActionsByColumn,\n }) ?? null;\n const expandable = expandedContent !== null;\n const expandsInline = expandable && detailStyle === \"row\";\n const opensDialog = expandable && detailStyle === \"dialog\";\n const rowClickEnabled = isRowClickable?.(record.row) ?? !!onRowClick;\n const clickable = !!href || rowClickEnabled || expandable;\n\n return (\n <Fragment key={record.id}>\n <tr\n className={cn(\n \"border-b border-border/60 align-top\",\n clickable && \"cursor-pointer hover:bg-accent/40\",\n )}\n onClick={() => {\n if (expandsInline) {\n setExpandedRows((current) => ({\n ...current,\n [record.id]: !current[record.id],\n }));\n }\n if (opensDialog) {\n setDetailRow(record);\n }\n if (rowClickEnabled) {\n onRowClick?.(record.row);\n }\n }}\n >\n {visibleColumns.map((column, index) => {\n const rawValue = resolvePath(record.row, column.key);\n let content: ReactNode = column.render\n ? column.render(rawValue, record.row)\n : formatCell(rawValue);\n\n // Tag cells get the + / − filter affordance via\n // context; copy-to-clipboard works without it too.\n if (column.kind === \"tags\" && tagActionsByColumn[column.key]) {\n content = (\n <TagActionsProvider value={tagActionsByColumn[column.key]!}>\n {content}\n </TagActionsProvider>\n );\n }\n\n return (\n <td\n key={column.key}\n className={cn(\n DATA_TABLE_CELL_DENSITY_CLASS,\n alignmentClass(column.align),\n column.cellClassName,\n )}\n >\n <CellContent\n column={column}\n {...(columnWidths[column.key] !== undefined\n ? { width: columnWidths[column.key] }\n : {})}\n >\n {href && index === 0 ? (\n <a href={href} className=\"hover:underline\">\n {content}\n </a>\n ) : (\n content\n )}\n </CellContent>\n </td>\n );\n })}\n </tr>\n {expandsInline && expanded && expandedContent && (\n <tr>\n <td colSpan={visibleColumns.length} className=\"bg-muted/40 p-density-3\">\n <div className=\"rounded-md border border-border bg-background p-density-3\">\n {expandedContent}\n </div>\n </td>\n </tr>\n )}\n </Fragment>\n );\n })\n )}\n </tbody>\n </table>\n </div>\n\n <div className=\"px-1 text-xs text-muted-foreground\">\n {loading\n ? loadingMessage\n : `${sorted.length} of ${data.length} row${data.length === 1 ? \"\" : \"s\"}`}\n </div>\n {pagination && <DataTablePaginationFooter pagination={pagination} />}\n {detailStyle === \"dialog\" && renderExpandedRow && (\n <Modal\n open={detailRow !== null}\n onClose={() => setDetailRow(null)}\n size={detailDialogSize}\n {...(detailRow\n ? {\n title:\n typeof detailDialogTitle === \"function\"\n ? detailDialogTitle(detailRow.row)\n : detailDialogTitle,\n }\n : {})}\n >\n {detailRow\n ? renderExpandedRow(detailRow.row, {\n columns: effectiveColumns,\n visibleColumns,\n tagActionsByColumn,\n })\n : null}\n </Modal>\n )}\n {columnMenu && showTablePreferencesControl && (\n <ColumnVisibilityMenu\n columns={effectiveColumns}\n hiddenColumns={hiddenColumns}\n anchor={columnMenu}\n showColumnVisibilityControl={showColumnVisibilityControl}\n showDensityControl={resolvedShowDensityControl}\n showThemeControl={showThemeControl}\n themeMenuValue={themeMenuValue}\n densityOverride={densityOverride}\n visibleHideableColumnCount={visibleHideableColumnCount}\n onToggle={toggleColumnVisibility}\n onShowAll={showAllColumns}\n onDensityChange={setDensityOverride}\n {...(onThemeChange ? { onThemeChange } : {})}\n onClose={() => setColumnMenu(null)}\n />\n )}\n {headerFilterMenu && (\n <HeaderFilterMenu\n filter={nativeFilterByColumn.get(headerFilterMenu.columnKey ?? \"\")}\n {...(autoTimeRange && timeRangeColumn?.key === headerFilterMenu.columnKey\n ? { timeRange: autoTimeRange }\n : {})}\n anchor={headerFilterMenu}\n onClose={() => setHeaderFilterMenu(null)}\n />\n )}\n </div>\n </DensityValueProvider>\n );\n}\n\nconst DEFAULT_PAGE_SIZE_OPTIONS = [25, 50, 100, 200];\n\n// DataTablePaginationFooter renders a small page-size selector and prev/next\n// controls below the table. Pure presentation: every interaction routes\n// straight to the caller-supplied callbacks so the data layer (which lives in\n// CommandOutput / OperationCommandPage) stays the source of truth for which\n// rows are visible.\nfunction DataTablePaginationFooter({ pagination }: { pagination: DataTablePagination }) {\n const { page, pageSize, total, onPageChange, onPageSizeChange } = pagination;\n const options = pagination.pageSizeOptions ?? DEFAULT_PAGE_SIZE_OPTIONS;\n const safePage = Math.max(0, page);\n const totalPages =\n total != null && pageSize > 0 ? Math.max(1, Math.ceil(total / pageSize)) : undefined;\n const atFirst = safePage === 0;\n const atLast = totalPages != null ? safePage >= totalPages - 1 : false;\n return (\n <div className=\"flex flex-wrap items-center justify-between gap-3 px-1 text-xs text-muted-foreground\">\n <label className=\"flex items-center gap-1\">\n <span>Rows per page</span>\n <select\n className=\"rounded border border-border bg-background px-1 py-0.5 text-foreground\"\n value={pageSize}\n onChange={(event) => onPageSizeChange(Number(event.target.value))}\n >\n {options.map((option) => (\n <option key={option} value={option}>\n {option}\n </option>\n ))}\n </select>\n </label>\n <div className=\"flex items-center gap-2\">\n <button\n type=\"button\"\n className=\"rounded border border-border px-2 py-0.5 disabled:opacity-50\"\n disabled={atFirst}\n onClick={() => onPageChange(Math.max(0, safePage - 1))}\n >\n Prev\n </button>\n <span>\n Page {safePage + 1}\n {totalPages != null ? ` of ${totalPages}` : \"\"}\n </span>\n <button\n type=\"button\"\n className=\"rounded border border-border px-2 py-0.5 disabled:opacity-50\"\n disabled={atLast}\n onClick={() => onPageChange(safePage + 1)}\n >\n Next\n </button>\n </div>\n </div>\n );\n}\n\nfunction DataTableLoadingRows<T extends Record<string, unknown>>({\n columns,\n rowCount,\n message,\n}: {\n columns: DataTableColumn<T>[];\n rowCount: number;\n message: ReactNode;\n}) {\n const safeRowCount = Math.max(1, rowCount);\n const safeColumnCount = Math.max(1, columns.length);\n\n return (\n <>\n <tr className=\"border-b border-border/60 bg-muted/20\">\n <td colSpan={safeColumnCount} className={cn(DATA_TABLE_CELL_DENSITY_CLASS, \"p-0\")}>\n <div className=\"h-0.5 w-full overflow-hidden bg-muted\">\n <div className=\"h-full w-1/2 animate-pulse rounded-full bg-primary/70\" />\n </div>\n <div className=\"flex items-center gap-2 px-3 py-2 text-xs text-muted-foreground\">\n <span\n aria-hidden\n className=\"h-3 w-3 animate-spin rounded-full border-2 border-primary/30 border-t-primary\"\n />\n <span>{message}</span>\n </div>\n </td>\n </tr>\n {Array.from({ length: safeRowCount }).map((_, rowIndex) => (\n <tr key={rowIndex} className=\"border-b border-border/60\">\n {columns.map((column, columnIndex) => (\n <td\n key={column.key}\n className={cn(\n DATA_TABLE_CELL_DENSITY_CLASS,\n alignmentClass(column.align),\n column.cellClassName,\n )}\n >\n <CellContent column={column}>\n <span\n aria-hidden\n className={cn(\n \"block h-3 animate-pulse rounded-full bg-muted\",\n loadingSkeletonWidth(columnIndex),\n )}\n />\n </CellContent>\n </td>\n ))}\n </tr>\n ))}\n </>\n );\n}\n\nfunction HeaderFilterButton<T extends Record<string, unknown>>({\n column,\n active,\n onOpen,\n}: {\n column: DataTableColumn<T>;\n active: boolean;\n onOpen: (event: ReactMouseEvent<HTMLButtonElement>) => void;\n}) {\n return (\n <button\n type=\"button\"\n aria-label={`Open ${labelText(column)} column filter`}\n aria-haspopup=\"dialog\"\n aria-pressed={active}\n className={cn(\n \"inline-flex h-5 w-5 shrink-0 items-center justify-center rounded text-muted-foreground transition-colors hover:bg-accent hover:text-accent-foreground focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring\",\n active && \"bg-accent text-foreground\",\n )}\n onClick={onOpen}\n >\n <span data-filter-icon-state={active ? \"filled\" : \"outline\"} className=\"inline-flex\">\n <Icon icon={active ? UiFilterFilled : UiFilter} className=\"text-xs\" />\n </span>\n </button>\n );\n}\n\nfunction HeaderFilterMenu({\n filter,\n timeRange,\n anchor,\n onClose,\n}: {\n filter: FilterBarFilter | undefined;\n timeRange?: FilterBarRangeProps;\n anchor: ColumnMenuState;\n onClose: () => void;\n}) {\n if (!filter && !timeRange) return null;\n\n const label = filter?.label ?? \"Time range\";\n const timeRangeActive = Boolean(timeRange?.from || timeRange?.to);\n\n return (\n <div\n role=\"dialog\"\n aria-label={`${label} column filter`}\n className=\"fixed z-50 rounded-md border border-border bg-popover p-2 text-popover-foreground shadow-lg shadow-black/5\"\n style={{ left: anchor.x, top: anchor.y }}\n onClick={(event) => event.stopPropagation()}\n onContextMenu={(event) => event.preventDefault()}\n >\n <div className=\"mb-2 flex items-center justify-between gap-3\">\n <div className=\"truncate text-xs font-semibold uppercase tracking-wide text-muted-foreground\">\n {label}\n </div>\n <div className=\"flex items-center gap-1\">\n {filter && (\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={() => clearFilterBarFilter(filter)}\n disabled={!isFilterBarFilterActive(filter)}\n >\n Clear all\n </button>\n )}\n {timeRange && (\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={() => timeRange.onApply(\"\", \"\")}\n disabled={!timeRangeActive}\n >\n Clear all\n </button>\n )}\n <button\n type=\"button\"\n aria-label=\"Close column filter\"\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={onClose}\n >\n <Icon icon={UiClose} className=\"text-sm\" />\n </button>\n </div>\n </div>\n <div className=\"flex flex-col gap-2\">\n {filter && <FilterBarFilterPanel filter={filter} chrome=\"embedded\" />}\n {timeRange && <FilterBarRangePanel kind=\"time\" label=\"Time range\" {...timeRange} />}\n </div>\n </div>\n );\n}\n\nfunction ColumnVisibilityTrigger({\n onOpen,\n}: {\n onOpen: (event: ReactMouseEvent<HTMLButtonElement>) => void;\n}) {\n return (\n <button\n type=\"button\"\n aria-label=\"Open column menu\"\n aria-haspopup=\"menu\"\n className=\"inline-flex h-8 w-8 items-center justify-center rounded-md border border-input bg-background text-muted-foreground transition-colors hover:bg-accent hover:text-accent-foreground focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2\"\n onClick={(event) => {\n event.stopPropagation();\n onOpen(event);\n }}\n >\n <Icon icon={UiEllipsis} className=\"text-sm\" />\n </button>\n );\n}\n\nfunction ColumnVisibilityMenu<T extends Record<string, unknown>>({\n columns,\n hiddenColumns,\n anchor,\n showColumnVisibilityControl,\n showDensityControl,\n showThemeControl,\n themeMenuValue,\n densityOverride,\n visibleHideableColumnCount,\n onToggle,\n onShowAll,\n onDensityChange,\n onThemeChange,\n onClose,\n}: {\n columns: DataTableColumn<T>[];\n hiddenColumns: Record<string, boolean>;\n anchor: ColumnMenuState;\n showColumnVisibilityControl: boolean;\n showDensityControl: boolean;\n showThemeControl: boolean;\n themeMenuValue: Theme | undefined;\n densityOverride: Density | undefined;\n visibleHideableColumnCount: number;\n onToggle: (column: DataTableColumn<T>) => void;\n onShowAll: () => void;\n onDensityChange: (density: Density | undefined) => void;\n onThemeChange?: (theme: Theme) => void;\n onClose: () => void;\n}) {\n const activeColumn = anchor.columnKey\n ? columns.find((column) => column.key === anchor.columnKey)\n : undefined;\n const canHideActiveColumn =\n activeColumn && isColumnHideable(activeColumn) && visibleHideableColumnCount > 1;\n\n return (\n <div\n role=\"menu\"\n aria-label=\"Column menu\"\n className=\"fixed z-50 min-w-[16rem] rounded-md border border-border bg-popover p-1.5 text-popover-foreground shadow-lg shadow-black/5\"\n style={{ left: anchor.x, top: anchor.y }}\n onClick={(event) => event.stopPropagation()}\n onContextMenu={(event) => event.preventDefault()}\n >\n {showColumnVisibilityControl && (\n <>\n <div className=\"flex items-center justify-between gap-3 px-2 py-1.5 text-xs font-medium text-muted-foreground\">\n <span>Columns</span>\n <button\n type=\"button\"\n className=\"rounded px-1.5 py-0.5 text-xs text-foreground transition-colors hover:bg-accent hover:text-accent-foreground focus:bg-accent focus:outline-none\"\n onClick={onShowAll}\n >\n Show all\n </button>\n </div>\n\n {activeColumn && (\n <>\n <button\n type=\"button\"\n role=\"menuitem\"\n disabled={!canHideActiveColumn}\n className={cn(\n \"flex w-full items-center gap-2 rounded-md px-2 py-1.5 text-left text-sm transition-colors hover:bg-accent hover:text-accent-foreground focus:bg-accent focus:outline-none\",\n !canHideActiveColumn && \"cursor-not-allowed opacity-50\",\n )}\n onClick={() => {\n if (!canHideActiveColumn) return;\n onToggle(activeColumn);\n onClose();\n }}\n >\n <Icon icon={UiEyeClosed} className=\"text-sm text-muted-foreground\" />\n <span>Hide {labelText(activeColumn)}</span>\n </button>\n <div className=\"my-1 h-px bg-border\" />\n </>\n )}\n\n <div className=\"max-h-72 overflow-auto\">\n {columns.map((column) => {\n const hideable = isColumnHideable(column);\n const visible = hiddenColumns[column.key] !== true;\n const disabled = !hideable || (visible && visibleHideableColumnCount <= 1);\n return (\n <label\n key={column.key}\n className={cn(\n \"flex cursor-pointer items-center gap-2 rounded-md px-2 py-1.5 text-sm transition-colors hover:bg-accent hover:text-accent-foreground\",\n disabled && \"cursor-not-allowed opacity-50\",\n )}\n >\n <input\n type=\"checkbox\"\n className=\"h-4 w-4 rounded border-border\"\n checked={visible}\n disabled={disabled}\n onChange={() => onToggle(column)}\n />\n <span className=\"truncate\">{labelText(column)}</span>\n </label>\n );\n })}\n </div>\n </>\n )}\n\n {showDensityControl && (\n <DensityMenuSection\n densityOverride={densityOverride}\n separated={showColumnVisibilityControl}\n onDensityChange={onDensityChange}\n />\n )}\n\n {showThemeControl && onThemeChange && (\n <ThemeMenuSection\n value={themeMenuValue ?? \"system\"}\n separated={showColumnVisibilityControl || showDensityControl}\n onChange={onThemeChange}\n />\n )}\n </div>\n );\n}\n\nfunction DensityMenuSection({\n densityOverride,\n separated,\n onDensityChange,\n}: {\n densityOverride: Density | undefined;\n separated: boolean;\n onDensityChange: (density: Density | undefined) => void;\n}) {\n const current = densityOverride ?? \"inherit\";\n\n return (\n <div className={cn(separated && \"mt-1 border-t border-border pt-1\")}>\n <div className=\"px-2 py-1.5 text-xs font-medium text-muted-foreground\">Density</div>\n <button\n type=\"button\"\n role=\"menuitemradio\"\n aria-checked={current === \"inherit\"}\n className={densityMenuItemClassName(current === \"inherit\")}\n onClick={() => onDensityChange(undefined)}\n >\n <Icon icon={UiResizeVertical} className=\"text-sm text-muted-foreground\" />\n <span className=\"min-w-0 flex-1 truncate\">Use page density</span>\n {current === \"inherit\" ? (\n <Icon icon={UiCheck} className=\"text-sm text-foreground\" />\n ) : (\n <span className=\"inline-block h-4 w-4\" aria-hidden />\n )}\n </button>\n {DENSITY_OPTIONS.map((option) => {\n const active = current === option.value;\n return (\n <button\n key={option.value}\n type=\"button\"\n role=\"menuitemradio\"\n aria-checked={active}\n className={densityMenuItemClassName(active)}\n onClick={() => onDensityChange(option.value)}\n >\n <Icon icon={option.icon} className=\"text-sm text-muted-foreground\" />\n <span className=\"min-w-0 flex-1 truncate\">{option.label}</span>\n {active ? (\n <Icon icon={UiCheck} className=\"text-sm text-foreground\" />\n ) : (\n <span className=\"inline-block h-4 w-4\" aria-hidden />\n )}\n </button>\n );\n })}\n </div>\n );\n}\n\nfunction densityMenuItemClassName(active: boolean) {\n return cn(\n \"flex w-full items-center gap-2 rounded-md px-2 py-1.5 text-left text-sm transition-colors hover:bg-accent hover:text-accent-foreground focus:bg-accent focus:outline-none\",\n active && \"text-foreground\",\n );\n}\n\nconst THEME_MENU_OPTIONS: Array<{\n value: Theme;\n icon: StaticIconComponent;\n label: string;\n}> = [\n { value: \"system\", icon: UiDesktop, label: \"Use system theme\" },\n { value: \"light\", icon: UiSun, label: \"Light\" },\n { value: \"dark\", icon: UiMoon, label: \"Dark\" },\n];\n\nfunction ThemeMenuSection({\n value,\n separated,\n onChange,\n}: {\n value: Theme;\n separated: boolean;\n onChange: (theme: Theme) => void;\n}) {\n return (\n <div className={cn(separated && \"mt-1 border-t border-border pt-1\")}>\n <div className=\"px-2 py-1.5 text-xs font-medium text-muted-foreground\">Theme</div>\n {THEME_MENU_OPTIONS.map((option) => {\n const active = value === option.value;\n return (\n <button\n key={option.value}\n type=\"button\"\n role=\"menuitemradio\"\n aria-checked={active}\n className={densityMenuItemClassName(active)}\n onClick={() => onChange(option.value)}\n >\n <Icon icon={option.icon} className=\"text-sm text-muted-foreground\" />\n <span className=\"min-w-0 flex-1 truncate\">{option.label}</span>\n {active ? (\n <Icon icon={UiCheck} className=\"text-sm text-foreground\" />\n ) : (\n <span className=\"inline-block h-4 w-4\" aria-hidden />\n )}\n </button>\n );\n })}\n </div>\n );\n}\n\nfunction CellContent<T extends Record<string, unknown>>({\n column,\n width,\n children,\n}: {\n column: DataTableColumn<T>;\n width?: number;\n children: ReactNode;\n}) {\n return (\n <div\n className={cn(cellContentClassName(column, width), alignmentClass(column.align))}\n style={cellContentStyle(width)}\n >\n {children}\n </div>\n );\n}\n\nfunction getSortValue<T extends Record<string, unknown>>(row: T, column: DataTableColumn<T>) {\n const rawValue = resolvePath(row, column.key);\n return column.sortValue ? column.sortValue(rawValue, row) : rawValue;\n}\n\nfunction getFilterCandidate<T extends Record<string, unknown>>(row: T, column: DataTableColumn<T>) {\n const rawValue = resolvePath(row, column.key);\n return column.filterValue ? column.filterValue(rawValue, row) : rawValue;\n}\n\nfunction getFilterTokens<T extends Record<string, unknown>>(row: T, column: DataTableColumn<T>) {\n return normalizeTokens(getFilterCandidate(row, column));\n}\n\nfunction getFilterNumbers<T extends Record<string, unknown>>(row: T, column: DataTableColumn<T>) {\n return normalizeNumbers(getFilterCandidate(row, column));\n}\n\nfunction normalizeTokens(value: FilterValue | unknown): string[] {\n if (Array.isArray(value)) {\n return value.flatMap((item) => normalizeTokens(item)).filter(Boolean);\n }\n\n if (value == null) return [];\n if (typeof value === \"object\") return [JSON.stringify(value)];\n\n const token = String(value).trim();\n return token ? [token] : [];\n}\n\nfunction normalizeNumbers(value: FilterValue | unknown): number[] {\n if (Array.isArray(value)) {\n return value.flatMap((item) => normalizeNumbers(item));\n }\n\n const parsed = parseNumberInput(value);\n return parsed == null ? [] : [parsed];\n}\n\nfunction updateFilterValue(state: Record<string, string>, key: string, nextValue: string) {\n const next = { ...state };\n\n if (nextValue.trim()) {\n next[key] = nextValue;\n } else {\n delete next[key];\n }\n\n return next;\n}\n\nfunction updateFilterRecord(\n state: Record<string, Record<string, FilterBarMultiFilterMode>>,\n key: string,\n nextValue: Record<string, FilterBarMultiFilterMode>,\n) {\n const next = { ...state };\n\n if (Object.keys(nextValue).length > 0) {\n next[key] = nextValue;\n } else {\n delete next[key];\n }\n\n return next;\n}\n\nfunction updateNumberFilterValue(\n state: Record<string, FilterBarNumberValue>,\n key: string,\n nextValue: FilterBarNumberValue,\n) {\n const next = { ...state };\n const hasMin = String(nextValue.min ?? \"\").trim() !== \"\";\n const hasMax = String(nextValue.max ?? \"\").trim() !== \"\";\n\n if (hasMin || hasMax) {\n next[key] = nextValue;\n } else {\n delete next[key];\n }\n\n return next;\n}\n\nfunction pruneTextFilterState(state: Record<string, string>, filters: GeneratedFilter<any>[]) {\n return pruneFilterState(state, filters, \"text\", (value) => !String(value ?? \"\").trim());\n}\n\nfunction pruneMultiFilterState(\n state: Record<string, Record<string, FilterBarMultiFilterMode>>,\n filters: GeneratedFilter<any>[],\n) {\n // multi and nested-multi share the same state slot; allow either kind to\n // keep the entry alive.\n const allowed = new Set(\n filters\n .filter((filter) => filter.kind === \"multi\" || filter.kind === \"nested-multi\")\n .map((filter) => filter.column.key),\n );\n return Object.fromEntries(\n Object.entries(state).filter(\n ([key, value]) => allowed.has(key) && Object.keys(value).length > 0,\n ),\n );\n}\n\nfunction pruneNumberFilterState(\n state: Record<string, FilterBarNumberValue>,\n filters: GeneratedFilter<any>[],\n) {\n return pruneFilterState(\n state,\n filters,\n \"number\",\n (value) => !String(value.min ?? \"\").trim() && !String(value.max ?? \"\").trim(),\n );\n}\n\nfunction pruneFilterState<T>(\n state: Record<string, T>,\n filters: GeneratedFilter<any>[],\n kind: GeneratedFilter<any>[\"kind\"],\n isEmpty: (value: T) => boolean,\n) {\n const allowed = new Set(\n filters.filter((filter) => filter.kind === kind).map((filter) => filter.column.key),\n );\n return Object.fromEntries(\n Object.entries(state).filter(([key, value]) => allowed.has(key) && !isEmpty(value)),\n ) as Record<string, T>;\n}\n\nfunction resolvePath(obj: unknown, path: string): unknown {\n return path.split(\".\").reduce<unknown>((current, key) => {\n if (current && typeof current === \"object\") {\n return (current as Record<string, unknown>)[key];\n }\n return undefined;\n }, obj);\n}\n\nfunction formatCell(value: unknown): ReactNode {\n if (value == null || value === \"\") {\n return <span className=\"text-muted-foreground\">—</span>;\n }\n if (typeof value === \"boolean\") return value ? \"True\" : \"False\";\n if (typeof value === \"object\") return JSON.stringify(value);\n return String(value);\n}\n\n// Groups flat key=value tokens by key for the nested-multi tag filter.\n// Tokens without a separator land in a synthetic \"\" group rendered as\n// \"Other\" by the filter UI.\nfunction groupTagOptions(\n options: MultiSelectOption[],\n separator: string,\n): Array<{ groupKey: string; label?: string; options: MultiSelectOption[] }> {\n const byKey = new Map<string, MultiSelectOption[]>();\n for (const option of options) {\n const { key } = splitTagToken(option.value, separator);\n const list = byKey.get(key) ?? [];\n list.push(option);\n byKey.set(key, list);\n }\n return Array.from(byKey.entries())\n .sort(([a], [b]) => {\n // Bare-tag bucket sinks to the bottom; otherwise alphabetical.\n if (a === \"\" && b !== \"\") return 1;\n if (b === \"\" && a !== \"\") return -1;\n return a.localeCompare(b);\n })\n .map(([groupKey, groupOptions]) => ({\n groupKey,\n label: groupKey === \"\" ? \"Other\" : groupKey,\n options: groupOptions,\n }));\n}\n\nfunction applyKindDefaults<T extends Record<string, unknown>>(\n column: DataTableColumn<T>,\n timestampFormat: TimestampFormat | undefined,\n): DataTableColumn<T> {\n if (!column.kind) return column;\n\n if (column.kind === \"timestamp\") {\n const format = timestampFormat ?? \"iso\";\n return {\n ...column,\n render:\n column.render ??\n ((value) => (\n <Timestamp\n value={value}\n format={format}\n showTitleOnHover={column.timestamp?.alwaysShowFullOnHover !== false}\n />\n )),\n sortValue: column.sortValue ?? ((value) => parseTimestamp(value)?.getTime() ?? null),\n filterValue:\n column.filterValue ??\n ((value) => {\n const parsed = parseTimestamp(value);\n return parsed ? parsed.toISOString() : \"\";\n }),\n };\n }\n\n if (column.kind === \"tags\") {\n const opts = column.tags;\n const separator = opts?.separator ?? \"=\";\n return {\n ...column,\n render:\n column.render ??\n ((value) => (\n <TagList\n tags={normalizeTags(value as TagsValue, separator)}\n maxVisible={opts?.maxVisible ?? 3}\n />\n )),\n filterValue:\n column.filterValue ?? ((value) => tagFilterTokens(value as TagsValue, separator)),\n sortValue:\n column.sortValue ?? ((value) => tagFilterTokens(value as TagsValue, separator).length),\n };\n }\n\n if (column.kind === \"status\") {\n const opts = column.status;\n const map = opts?.map ?? ((raw) => normalizeStatus(raw));\n return {\n ...column,\n render:\n column.render ??\n ((value, row) => {\n const status = map(value, row);\n if (!status) return <span className=\"text-muted-foreground\">—</span>;\n const label = opts?.showLabel ? (typeof value === \"string\" ? value : status) : undefined;\n const title =\n opts?.title?.(value, row) ?? (typeof value === \"string\" ? value : undefined);\n return (\n <StatusDot\n status={status}\n {...(label ? { label } : {})}\n {...(title ? { title } : {})}\n />\n );\n }),\n filterValue:\n column.filterValue ??\n ((value, row) => {\n const status = map(value, row);\n return status ?? \"\";\n }),\n sortValue: column.sortValue ?? ((value, row) => map(value, row) ?? \"\"),\n };\n }\n\n return column;\n}\n\nfunction prettifyKey(key: string) {\n return key\n .replace(/([a-z])([A-Z])/g, \"$1 $2\")\n .replace(/[_-]/g, \" \")\n .replace(/\\b\\w/g, (value) => value.toUpperCase())\n .trim();\n}\n\nfunction labelText<T extends Record<string, unknown>>(column: DataTableColumn<T>) {\n if (typeof column.label === \"string\") return column.label;\n return prettifyKey(column.key.split(\".\").at(-1) ?? column.key);\n}\n\nfunction isColumnHideable<T extends Record<string, unknown>>(column: DataTableColumn<T>) {\n return column.hideable !== false;\n}\n\nfunction menuStateFromPointer(\n event: ReactMouseEvent<HTMLElement>,\n columnKey?: string,\n): ColumnMenuState {\n const padding = 8;\n const width = 256;\n const height = 320;\n const viewportWidth = typeof window === \"undefined\" ? event.clientX + width : window.innerWidth;\n const viewportHeight =\n typeof window === \"undefined\" ? event.clientY + height : window.innerHeight;\n\n const position = {\n x: Math.max(padding, Math.min(event.clientX, viewportWidth - width - padding)),\n y: Math.max(padding, Math.min(event.clientY, viewportHeight - height - padding)),\n };\n return columnKey ? { ...position, columnKey } : position;\n}\n\nfunction menuStateFromTrigger(\n event: ReactMouseEvent<HTMLElement>,\n columnKey?: string,\n): ColumnMenuState {\n const rect = event.currentTarget.getBoundingClientRect();\n const padding = 8;\n const width = 256;\n const height = 320;\n const viewportWidth = typeof window === \"undefined\" ? rect.right + width : window.innerWidth;\n const viewportHeight = typeof window === \"undefined\" ? rect.bottom + height : window.innerHeight;\n\n const position = {\n x: Math.max(padding, Math.min(rect.right - width, viewportWidth - width - padding)),\n y: Math.max(padding, Math.min(rect.bottom + 6, viewportHeight - height - padding)),\n };\n return columnKey ? { ...position, columnKey } : position;\n}\n\nfunction columnStyle<T extends Record<string, unknown>>(\n column: DataTableColumn<T>,\n widths: Record<string, number>,\n): CSSProperties | undefined {\n const width = widths[column.key];\n return width ? { width: `${width}px` } : undefined;\n}\n\nfunction measureColumnContentWidth<T extends Record<string, unknown>>(\n table: HTMLTableElement,\n columnIndex: number,\n column: DataTableColumn<T>,\n) {\n const cells = Array.from(table.querySelectorAll(\"th, td\")).filter(\n (cell): cell is HTMLTableCellElement =>\n cell instanceof HTMLTableCellElement && cell.cellIndex === columnIndex && cell.colSpan === 1,\n );\n\n const measured = cells.reduce((current, cell) => {\n const horizontalPadding = getHorizontalPadding(cell);\n const contentWidths = Array.from(cell.children).map((child) =>\n child instanceof HTMLElement ? child.scrollWidth + horizontalPadding : 0,\n );\n return Math.max(current, cell.scrollWidth, ...contentWidths);\n }, 0);\n\n return clampColumnWidth(column, measured || defaultColumnWidth(column));\n}\n\nfunction getHorizontalPadding(element: HTMLElement) {\n if (typeof window === \"undefined\") return 0;\n const styles = window.getComputedStyle(element);\n return parseCssPixelValue(styles.paddingLeft) + parseCssPixelValue(styles.paddingRight);\n}\n\nfunction parseCssPixelValue(value: string) {\n const parsed = Number.parseFloat(value);\n return Number.isFinite(parsed) ? parsed : 0;\n}\n\nfunction readStoredColumnWidths<T extends Record<string, unknown>>(\n storageKey: string,\n columns: DataTableColumn<T>[],\n): Record<string, number> {\n if (typeof window === \"undefined\") return {};\n\n try {\n const raw = window.localStorage.getItem(storageKey);\n if (!raw) return {};\n\n const parsed = JSON.parse(raw);\n if (!parsed || typeof parsed !== \"object\" || Array.isArray(parsed)) return {};\n\n return pruneColumnWidths(parsed as Record<string, unknown>, columns);\n } catch {\n return {};\n }\n}\n\nfunction writeStoredColumnWidths(storageKey: string, widths: Record<string, number>) {\n if (typeof window === \"undefined\") return;\n\n try {\n if (Object.keys(widths).length === 0) {\n window.localStorage.removeItem(storageKey);\n } else {\n window.localStorage.setItem(storageKey, JSON.stringify(widths));\n }\n } catch {}\n}\n\nfunction readStoredHiddenColumns<T extends Record<string, unknown>>(\n storageKey: string,\n columns: DataTableColumn<T>[],\n): Record<string, boolean> {\n if (typeof window === \"undefined\") return {};\n\n try {\n const raw = window.localStorage.getItem(storageKey);\n if (!raw) return {};\n\n const parsed = JSON.parse(raw);\n if (!parsed || typeof parsed !== \"object\" || Array.isArray(parsed)) return {};\n\n return pruneHiddenColumns(parsed as Record<string, unknown>, columns);\n } catch {\n return {};\n }\n}\n\nfunction writeStoredHiddenColumns(storageKey: string, hiddenColumns: Record<string, boolean>) {\n if (typeof window === \"undefined\") return;\n\n try {\n if (Object.keys(hiddenColumns).length === 0) {\n window.localStorage.removeItem(storageKey);\n } else {\n window.localStorage.setItem(storageKey, JSON.stringify(hiddenColumns));\n }\n } catch {}\n}\n\nfunction readStoredDensityOverride(storageKey: string): Density | undefined {\n if (typeof window === \"undefined\") return undefined;\n\n try {\n const raw = window.localStorage.getItem(storageKey);\n return isDensity(raw) ? raw : undefined;\n } catch {\n return undefined;\n }\n}\n\nfunction writeStoredDensityOverride(storageKey: string, density: Density | undefined) {\n if (typeof window === \"undefined\") return;\n\n try {\n if (density) {\n window.localStorage.setItem(storageKey, density);\n } else {\n window.localStorage.removeItem(storageKey);\n }\n } catch {}\n}\n\nfunction isDensity(value: unknown): value is Density {\n return value === \"compact\" || value === \"comfortable\" || value === \"spacious\";\n}\n\nfunction pruneColumnWidths<T extends Record<string, unknown>>(\n widths: Record<string, unknown>,\n columns: DataTableColumn<T>[],\n): Record<string, number> {\n const byKey = new Map(columns.map((column) => [column.key, column]));\n const next: Record<string, number> = {};\n\n for (const [key, width] of Object.entries(widths)) {\n const column = byKey.get(key);\n if (!column || typeof width !== \"number\" || !Number.isFinite(width)) continue;\n\n next[key] = clampColumnWidth(column, width);\n }\n\n return next;\n}\n\nfunction pruneHiddenColumns<T extends Record<string, unknown>>(\n hiddenColumns: Record<string, unknown>,\n columns: DataTableColumn<T>[],\n): Record<string, boolean> {\n const byKey = new Map(columns.map((column) => [column.key, column]));\n const next: Record<string, boolean> = {};\n\n for (const [key, hidden] of Object.entries(hiddenColumns)) {\n const column = byKey.get(key);\n if (!column || hidden !== true || !isColumnHideable(column)) continue;\n\n next[key] = true;\n }\n\n const hideable = columns.filter(isColumnHideable);\n const visibleHideableCount = hideable.filter((column) => next[column.key] !== true).length;\n if (hideable.length > 0 && visibleHideableCount === 0) {\n delete next[hideable[0]!.key];\n }\n\n return next;\n}\n\nfunction sameColumnWidths(left: Record<string, number>, right: Record<string, number>) {\n const leftKeys = Object.keys(left);\n const rightKeys = Object.keys(right);\n return (\n leftKeys.length === rightKeys.length &&\n leftKeys.every(\n (key) => Object.prototype.hasOwnProperty.call(right, key) && left[key] === right[key],\n )\n );\n}\n\nfunction sameHiddenColumns(left: Record<string, boolean>, right: Record<string, boolean>) {\n const leftKeys = Object.keys(left);\n const rightKeys = Object.keys(right);\n return (\n leftKeys.length === rightKeys.length &&\n leftKeys.every(\n (key) => Object.prototype.hasOwnProperty.call(right, key) && left[key] === right[key],\n )\n );\n}\n\nfunction defaultColumnWidth<T extends Record<string, unknown>>(column: DataTableColumn<T>) {\n if (column.grow) return DEFAULT_GROW_COLUMN_WIDTH;\n if (column.shrink) return DEFAULT_SHRINK_COLUMN_WIDTH;\n return DEFAULT_COLUMN_WIDTH;\n}\n\nfunction clampColumnWidth<T extends Record<string, unknown>>(\n column: DataTableColumn<T>,\n width: number,\n) {\n const minWidth = column.minWidth ?? DEFAULT_COLUMN_MIN_WIDTH;\n const maxWidth = column.maxWidth;\n const minimum = Number.isFinite(minWidth) ? Math.max(1, minWidth) : DEFAULT_COLUMN_MIN_WIDTH;\n const maximum =\n maxWidth != null && Number.isFinite(maxWidth) ? Math.max(minimum, maxWidth) : Infinity;\n\n return Math.round(Math.max(minimum, Math.min(maximum, width)));\n}\n\nfunction getNumericFilterBounds<T extends Record<string, unknown>>(\n rows: InternalRow<T>[],\n column: DataTableColumn<T>,\n) {\n const values = rows.flatMap((record) =>\n collectFilterValues(getFilterCandidate(record.row, column)),\n );\n const populated = values.filter(hasFilterValue);\n const numericValues = populated\n .map((value) => parseNumberInput(value))\n .filter((value) => value != null);\n\n if (populated.length === 0 || numericValues.length !== populated.length) {\n return null;\n }\n\n return {\n min: Math.min(...numericValues),\n max: Math.max(...numericValues),\n step: inferNumericStep(numericValues),\n };\n}\n\nfunction collectFilterValues(value: unknown): unknown[] {\n if (Array.isArray(value)) {\n return value.flatMap((item) => collectFilterValues(item));\n }\n\n return [value];\n}\n\nfunction hasFilterValue(value: unknown) {\n return value != null && !(typeof value === \"string\" && value.trim() === \"\");\n}\n\nfunction parseNumberInput(value: unknown): number | null {\n if (typeof value === \"number\") {\n return Number.isFinite(value) ? value : null;\n }\n\n if (typeof value !== \"string\") {\n return null;\n }\n\n const trimmed = value.trim();\n if (!trimmed) return null;\n\n const parsed = Number(trimmed);\n return Number.isFinite(parsed) ? parsed : null;\n}\n\nfunction inferNumericStep(values: number[]) {\n if (values.every(Number.isInteger)) {\n return 1;\n }\n\n const maxFractionDigits = values.reduce((current, value) => {\n const [, fraction = \"\"] = String(value).split(\".\");\n return Math.max(current, fraction.length);\n }, 0);\n\n return 10 ** -Math.min(maxFractionDigits || 2, 6);\n}\n\nfunction alignmentClass(align?: DataTableColumn[\"align\"]) {\n if (align === \"right\") return \"text-right\";\n if (align === \"center\") return \"text-center\";\n return \"text-left\";\n}\n\nfunction headerAlignmentClass(align?: DataTableColumn[\"align\"]) {\n if (align === \"right\") return \"justify-end\";\n if (align === \"center\") return \"justify-center\";\n return \"justify-start\";\n}\n\nfunction loadingSkeletonWidth(index: number) {\n return [\"w-24\", \"w-40\", \"w-28\", \"w-56\", \"w-32\", \"w-48\"][index % 6];\n}\n\nfunction cellContentStyle(width: number | undefined): CSSProperties | undefined {\n return width ? { maxWidth: `${width}px` } : undefined;\n}\n\nfunction cellContentClassName<T extends Record<string, unknown>>(\n column: DataTableColumn<T>,\n width?: number,\n): TdHTMLAttributes<HTMLTableCellElement>[\"className\"] {\n const resized = width !== undefined;\n const base = \"w-full truncate\";\n if (column.grow) return cn(base, resized ? \"min-w-0\" : \"min-w-56 max-w-[36rem]\");\n if (column.shrink) return cn(base, \"min-w-0 whitespace-nowrap\", !resized && \"max-w-[16rem]\");\n return cn(base, \"min-w-0\", !resized && \"max-w-[18rem]\");\n}\n\nexport function inferColumns<T extends Record<string, unknown>>(data: T[]): DataTableColumn<T>[] {\n if (data.length === 0) return [];\n\n const keys = new Set<string>();\n for (const row of data.slice(0, 20)) {\n Object.keys(row)\n .filter((key) => !key.startsWith(\"_\"))\n .forEach((key) => keys.add(key));\n }\n\n return Array.from(keys).map((key) => ({\n key,\n label: prettifyKey(key),\n sortable: true,\n filterable: true,\n }));\n}\n\nexport function DataTable<T extends Record<string, unknown>>({\n theme: themeProp = \"system\",\n onThemeChange,\n showThemeControl = false,\n showFullscreenControl = false,\n fullscreenTitle = \"Table\",\n fullscreenButtonLabel = \"Open table full screen\",\n className,\n filterBarProps,\n ...inner\n}: DataTableProps<T>) {\n const themeControlled = onThemeChange !== undefined;\n const [internalTheme, setInternalTheme] = useState<Theme>(themeProp);\n const themeValue = themeControlled ? themeProp : internalTheme;\n const resolvedTheme = useResolvedTheme(themeValue);\n const handleThemeChange = (next: Theme) => {\n if (!themeControlled) setInternalTheme(next);\n onThemeChange?.(next);\n };\n const [fullscreenOpen, setFullscreenOpen] = useState(false);\n\n const renderTable = ({ inFullscreen }: { inFullscreen: boolean }) => {\n const showFullscreenButton = showFullscreenControl && !inFullscreen;\n const callerTrailing = filterBarProps?.trailing;\n const mergedFilterBarProps = showFullscreenButton\n ? {\n ...filterBarProps,\n trailing: (\n <>\n {callerTrailing}\n <FullscreenButton\n label={fullscreenButtonLabel}\n onClick={() => setFullscreenOpen(true)}\n />\n </>\n ),\n }\n : filterBarProps;\n return (\n <DataTableInner\n {...(inner as DataTableInnerProps<T>)}\n {...(mergedFilterBarProps ? { filterBarProps: mergedFilterBarProps } : {})}\n themeMenuValue={themeValue}\n showThemeControl={showThemeControl}\n onThemeChange={handleThemeChange}\n />\n );\n };\n\n return (\n <div\n data-theme={resolvedTheme}\n className={cn(\"flex min-h-0 flex-col text-foreground\", className)}\n >\n {renderTable({ inFullscreen: false })}\n {showFullscreenControl && (\n <Modal\n open={fullscreenOpen}\n onClose={() => setFullscreenOpen(false)}\n title={fullscreenTitle}\n size=\"full\"\n className=\"h-[95vh]\"\n >\n <div\n data-theme={resolvedTheme}\n className=\"flex h-full min-h-0 flex-col bg-background text-foreground\"\n >\n {renderTable({ inFullscreen: true })}\n </div>\n </Modal>\n )}\n </div>\n );\n}\n\nfunction FullscreenButton({ label, onClick }: { label: string; onClick: () => void }) {\n return (\n <button\n type=\"button\"\n aria-label={label}\n title={label}\n className=\"inline-flex h-8 w-8 items-center justify-center rounded-md border border-input bg-background text-muted-foreground transition-colors hover:bg-accent hover:text-accent-foreground focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2\"\n onClick={onClick}\n >\n <Icon icon={UiFullscreen} className=\"text-sm\" />\n </button>\n );\n}\n"],"names":["_a","Fragment"],"mappings":"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"}
|