@flanksource/clicky-ui 0.2.19 → 0.2.20
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/dist/ai.cjs +26 -0
- package/dist/ai.cjs.map +1 -0
- package/dist/ai.d.ts +2 -0
- package/dist/ai.d.ts.map +1 -0
- package/dist/ai.js +26 -0
- package/dist/ai.js.map +1 -0
- package/dist/chat.cjs +7 -0
- package/dist/chat.cjs.map +1 -1
- package/dist/chat.js +7 -0
- package/dist/chat.js.map +1 -1
- package/dist/components/FilterBar.cjs +49 -18
- package/dist/components/FilterBar.cjs.map +1 -1
- package/dist/components/FilterBar.d.ts +0 -2
- package/dist/components/FilterBar.d.ts.map +1 -1
- package/dist/components/FilterBar.js +50 -19
- package/dist/components/FilterBar.js.map +1 -1
- package/dist/components/SearchInput.cjs +63 -0
- package/dist/components/SearchInput.cjs.map +1 -0
- package/dist/components/SearchInput.d.ts +31 -0
- package/dist/components/SearchInput.d.ts.map +1 -0
- package/dist/components/SearchInput.js +63 -0
- package/dist/components/SearchInput.js.map +1 -0
- package/dist/components/SegmentedControl.cjs +88 -0
- package/dist/components/SegmentedControl.cjs.map +1 -0
- package/dist/components/SegmentedControl.d.ts +38 -0
- package/dist/components/SegmentedControl.d.ts.map +1 -0
- package/dist/components/SegmentedControl.js +88 -0
- package/dist/components/SegmentedControl.js.map +1 -0
- package/dist/components/Switch.cjs +51 -0
- package/dist/components/Switch.cjs.map +1 -0
- package/dist/components/Switch.d.ts +23 -0
- package/dist/components/Switch.d.ts.map +1 -0
- package/dist/components/Switch.js +51 -0
- package/dist/components/Switch.js.map +1 -0
- package/dist/components/TimeRange.cjs +53 -45
- package/dist/components/TimeRange.cjs.map +1 -1
- package/dist/components/TimeRange.d.ts.map +1 -1
- package/dist/components/TimeRange.js +53 -45
- package/dist/components/TimeRange.js.map +1 -1
- package/dist/components/TreePickerField.cjs +5 -1
- package/dist/components/TreePickerField.cjs.map +1 -1
- package/dist/components/TreePickerField.d.ts.map +1 -1
- package/dist/components/TreePickerField.js +5 -1
- package/dist/components/TreePickerField.js.map +1 -1
- package/dist/components/filter-bar-utils.cjs +5 -0
- package/dist/components/filter-bar-utils.cjs.map +1 -1
- package/dist/components/filter-bar-utils.d.ts +2 -0
- package/dist/components/filter-bar-utils.d.ts.map +1 -1
- package/dist/components/filter-bar-utils.js +5 -0
- package/dist/components/filter-bar-utils.js.map +1 -1
- package/dist/components/json-schema-form-fields.cjs +8 -2
- package/dist/components/json-schema-form-fields.cjs.map +1 -1
- package/dist/components/json-schema-form-fields.d.ts.map +1 -1
- package/dist/components/json-schema-form-fields.js +8 -2
- package/dist/components/json-schema-form-fields.js.map +1 -1
- package/dist/components/json-schema-form-resolve.cjs +1 -1
- package/dist/components/json-schema-form-resolve.cjs.map +1 -1
- package/dist/components/json-schema-form-resolve.js +1 -1
- package/dist/components/json-schema-form-resolve.js.map +1 -1
- package/dist/components.cjs +15 -1
- package/dist/components.cjs.map +1 -1
- package/dist/components.d.ts +8 -1
- package/dist/components.d.ts.map +1 -1
- package/dist/components.js +15 -1
- package/dist/components.js.map +1 -1
- package/dist/data/Clicky.cjs +33 -44
- package/dist/data/Clicky.cjs.map +1 -1
- package/dist/data/Clicky.d.ts +0 -9
- package/dist/data/Clicky.d.ts.map +1 -1
- package/dist/data/Clicky.js +31 -42
- package/dist/data/Clicky.js.map +1 -1
- package/dist/data/DataTable.cjs +73 -50
- package/dist/data/DataTable.cjs.map +1 -1
- package/dist/data/DataTable.d.ts +4 -0
- package/dist/data/DataTable.d.ts.map +1 -1
- package/dist/data/DataTable.js +73 -50
- package/dist/data/DataTable.js.map +1 -1
- package/dist/data/Icon.cjs +2 -5
- package/dist/data/Icon.cjs.map +1 -1
- package/dist/data/Icon.d.ts +1 -21
- package/dist/data/Icon.d.ts.map +1 -1
- package/dist/data/Icon.js +3 -6
- package/dist/data/Icon.js.map +1 -1
- package/dist/data/MatrixTable.cjs +4 -4
- package/dist/data/MatrixTable.cjs.map +1 -1
- package/dist/data/MatrixTable.js +4 -4
- package/dist/data/MatrixTable.js.map +1 -1
- package/dist/data/RadialGauge.cjs +76 -0
- package/dist/data/RadialGauge.cjs.map +1 -0
- package/dist/data/RadialGauge.d.ts +24 -0
- package/dist/data/RadialGauge.d.ts.map +1 -0
- package/dist/data/RadialGauge.js +76 -0
- package/dist/data/RadialGauge.js.map +1 -0
- package/dist/data/StatusBreakdown.cjs +0 -4
- package/dist/data/StatusBreakdown.cjs.map +1 -1
- package/dist/data/StatusBreakdown.d.ts +0 -2
- package/dist/data/StatusBreakdown.d.ts.map +1 -1
- package/dist/data/StatusBreakdown.js +1 -5
- package/dist/data/StatusBreakdown.js.map +1 -1
- package/dist/data/Timeline.cjs +61 -0
- package/dist/data/Timeline.cjs.map +1 -0
- package/dist/data/Timeline.d.ts +36 -0
- package/dist/data/Timeline.d.ts.map +1 -0
- package/dist/data/Timeline.js +61 -0
- package/dist/data/Timeline.js.map +1 -0
- package/dist/data/TimeseriesCoreBars.cjs +2 -25
- package/dist/data/TimeseriesCoreBars.cjs.map +1 -1
- package/dist/data/TimeseriesCoreBars.d.ts +0 -19
- package/dist/data/TimeseriesCoreBars.d.ts.map +1 -1
- package/dist/data/TimeseriesCoreBars.js +2 -25
- package/dist/data/TimeseriesCoreBars.js.map +1 -1
- package/dist/data/TimeseriesCoreBars.model.cjs +27 -0
- package/dist/data/TimeseriesCoreBars.model.cjs.map +1 -0
- package/dist/data/TimeseriesCoreBars.model.d.ts +20 -0
- package/dist/data/TimeseriesCoreBars.model.d.ts.map +1 -0
- package/dist/data/TimeseriesCoreBars.model.js +27 -0
- package/dist/data/TimeseriesCoreBars.model.js.map +1 -0
- package/dist/data/TimeseriesPanel.axes.cjs.map +1 -1
- package/dist/data/TimeseriesPanel.axes.d.ts +1 -1
- package/dist/data/TimeseriesPanel.axes.d.ts.map +1 -1
- package/dist/data/TimeseriesPanel.axes.js.map +1 -1
- package/dist/data/TimeseriesPanel.cjs +4 -54
- package/dist/data/TimeseriesPanel.cjs.map +1 -1
- package/dist/data/TimeseriesPanel.d.ts +2 -138
- package/dist/data/TimeseriesPanel.d.ts.map +1 -1
- package/dist/data/TimeseriesPanel.js +2 -52
- package/dist/data/TimeseriesPanel.js.map +1 -1
- package/dist/data/TimeseriesPanel.model.cjs +53 -0
- package/dist/data/TimeseriesPanel.model.cjs.map +1 -0
- package/dist/data/TimeseriesPanel.model.d.ts +88 -0
- package/dist/data/TimeseriesPanel.model.d.ts.map +1 -0
- package/dist/data/TimeseriesPanel.model.js +53 -0
- package/dist/data/TimeseriesPanel.model.js.map +1 -0
- package/dist/data/Tree.cjs +1 -1
- package/dist/data/Tree.cjs.map +1 -1
- package/dist/data/Tree.js +1 -1
- package/dist/data/Tree.js.map +1 -1
- package/dist/data/ai/ChatFab.cjs +29 -0
- package/dist/data/ai/ChatFab.cjs.map +1 -0
- package/dist/data/ai/ChatFab.d.ts +12 -0
- package/dist/data/ai/ChatFab.d.ts.map +1 -0
- package/dist/data/ai/ChatFab.js +29 -0
- package/dist/data/ai/ChatFab.js.map +1 -0
- package/dist/data/ai/ChatWindow.cjs +178 -0
- package/dist/data/ai/ChatWindow.cjs.map +1 -0
- package/dist/data/ai/ChatWindow.d.ts +38 -0
- package/dist/data/ai/ChatWindow.d.ts.map +1 -0
- package/dist/data/ai/ChatWindow.js +156 -0
- package/dist/data/ai/ChatWindow.js.map +1 -0
- package/dist/data/ai/ChatWindowManager.cjs +139 -0
- package/dist/data/ai/ChatWindowManager.cjs.map +1 -0
- package/dist/data/ai/ChatWindowManager.d.ts +12 -0
- package/dist/data/ai/ChatWindowManager.d.ts.map +1 -0
- package/dist/data/ai/ChatWindowManager.js +139 -0
- package/dist/data/ai/ChatWindowManager.js.map +1 -0
- package/dist/data/ai/ContextBadges.cjs +74 -0
- package/dist/data/ai/ContextBadges.cjs.map +1 -0
- package/dist/data/ai/ContextBadges.d.ts +16 -0
- package/dist/data/ai/ContextBadges.d.ts.map +1 -0
- package/dist/data/ai/ContextBadges.js +74 -0
- package/dist/data/ai/ContextBadges.js.map +1 -0
- package/dist/data/ai/ThreadPicker.cjs +148 -0
- package/dist/data/ai/ThreadPicker.cjs.map +1 -0
- package/dist/data/ai/ThreadPicker.d.ts +37 -0
- package/dist/data/ai/ThreadPicker.d.ts.map +1 -0
- package/dist/data/ai/ThreadPicker.js +148 -0
- package/dist/data/ai/ThreadPicker.js.map +1 -0
- package/dist/data/ai/ToolPreferences.cjs +80 -0
- package/dist/data/ai/ToolPreferences.cjs.map +1 -0
- package/dist/data/ai/ToolPreferences.d.ts +19 -0
- package/dist/data/ai/ToolPreferences.d.ts.map +1 -0
- package/dist/data/ai/ToolPreferences.js +80 -0
- package/dist/data/ai/ToolPreferences.js.map +1 -0
- package/dist/data/ai/chat-window-context.cjs +78 -0
- package/dist/data/ai/chat-window-context.cjs.map +1 -0
- package/dist/data/ai/chat-window-context.d.ts +57 -0
- package/dist/data/ai/chat-window-context.d.ts.map +1 -0
- package/dist/data/ai/chat-window-context.js +78 -0
- package/dist/data/ai/chat-window-context.js.map +1 -0
- package/dist/data/ai/context.cjs +43 -0
- package/dist/data/ai/context.cjs.map +1 -0
- package/dist/data/ai/context.d.ts +35 -0
- package/dist/data/ai/context.d.ts.map +1 -0
- package/dist/data/ai/context.js +43 -0
- package/dist/data/ai/context.js.map +1 -0
- package/dist/data/ai/index.d.ts +10 -0
- package/dist/data/ai/index.d.ts.map +1 -0
- package/dist/data/cache-browser/CacheDetailPanel.cjs +15 -0
- package/dist/data/cache-browser/CacheDetailPanel.cjs.map +1 -1
- package/dist/data/cache-browser/CacheDetailPanel.d.ts.map +1 -1
- package/dist/data/cache-browser/CacheDetailPanel.js +15 -0
- package/dist/data/cache-browser/CacheDetailPanel.js.map +1 -1
- package/dist/data/cache-browser/cache-browser.fixtures.d.ts +10 -0
- package/dist/data/cache-browser/cache-browser.fixtures.d.ts.map +1 -0
- package/dist/data/cache-browser/download.cjs +13 -0
- package/dist/data/cache-browser/download.cjs.map +1 -0
- package/dist/data/cache-browser/download.d.ts +3 -0
- package/dist/data/cache-browser/download.d.ts.map +1 -0
- package/dist/data/cache-browser/download.js +13 -0
- package/dist/data/cache-browser/download.js.map +1 -0
- package/dist/data/chat/Chat.cjs +40 -2
- package/dist/data/chat/Chat.cjs.map +1 -1
- package/dist/data/chat/Chat.d.ts +5 -2
- package/dist/data/chat/Chat.d.ts.map +1 -1
- package/dist/data/chat/Chat.fixtures.cjs +86 -0
- package/dist/data/chat/Chat.fixtures.cjs.map +1 -0
- package/dist/data/chat/Chat.fixtures.d.ts +4 -0
- package/dist/data/chat/Chat.fixtures.d.ts.map +1 -1
- package/dist/data/chat/Chat.fixtures.js +86 -0
- package/dist/data/chat/Chat.fixtures.js.map +1 -0
- package/dist/data/chat/Chat.js +41 -3
- package/dist/data/chat/Chat.js.map +1 -1
- package/dist/data/chat/ContextUsage.cjs +99 -0
- package/dist/data/chat/ContextUsage.cjs.map +1 -0
- package/dist/data/chat/ContextUsage.d.ts +19 -0
- package/dist/data/chat/ContextUsage.d.ts.map +1 -0
- package/dist/data/chat/ContextUsage.js +99 -0
- package/dist/data/chat/ContextUsage.js.map +1 -0
- package/dist/data/chat/ModelSelector.cjs +28 -14
- package/dist/data/chat/ModelSelector.cjs.map +1 -1
- package/dist/data/chat/ModelSelector.d.ts +5 -4
- package/dist/data/chat/ModelSelector.d.ts.map +1 -1
- package/dist/data/chat/ModelSelector.js +28 -14
- package/dist/data/chat/ModelSelector.js.map +1 -1
- package/dist/data/chat/clickyOperationsToTools.cjs +21 -1
- package/dist/data/chat/clickyOperationsToTools.cjs.map +1 -1
- package/dist/data/chat/clickyOperationsToTools.d.ts +5 -4
- package/dist/data/chat/clickyOperationsToTools.d.ts.map +1 -1
- package/dist/data/chat/clickyOperationsToTools.js +21 -1
- package/dist/data/chat/clickyOperationsToTools.js.map +1 -1
- package/dist/data/chat/index.d.ts +4 -1
- package/dist/data/chat/index.d.ts.map +1 -1
- package/dist/data/chat/provider-icons.cjs +15 -0
- package/dist/data/chat/provider-icons.cjs.map +1 -0
- package/dist/data/chat/provider-icons.d.ts +7 -0
- package/dist/data/chat/provider-icons.d.ts.map +1 -0
- package/dist/data/chat/provider-icons.js +15 -0
- package/dist/data/chat/provider-icons.js.map +1 -0
- package/dist/data/chat/types.cjs.map +1 -1
- package/dist/data/chat/types.d.ts +41 -9
- package/dist/data/chat/types.d.ts.map +1 -1
- package/dist/data/chat/types.js.map +1 -1
- package/dist/data/clicky-parse.cjs +42 -0
- package/dist/data/clicky-parse.cjs.map +1 -0
- package/dist/data/clicky-parse.d.ts +11 -0
- package/dist/data/clicky-parse.d.ts.map +1 -0
- package/dist/data/clicky-parse.js +42 -0
- package/dist/data/clicky-parse.js.map +1 -0
- package/dist/data/diagnostics/FrameSourceWindow.cjs +0 -4
- package/dist/data/diagnostics/FrameSourceWindow.cjs.map +1 -1
- package/dist/data/diagnostics/FrameSourceWindow.d.ts +1 -11
- package/dist/data/diagnostics/FrameSourceWindow.d.ts.map +1 -1
- package/dist/data/diagnostics/FrameSourceWindow.js +1 -5
- package/dist/data/diagnostics/FrameSourceWindow.js.map +1 -1
- package/dist/data/diagnostics/FrameSourceWindow.utils.cjs +7 -0
- package/dist/data/diagnostics/FrameSourceWindow.utils.cjs.map +1 -0
- package/dist/data/diagnostics/FrameSourceWindow.utils.d.ts +12 -0
- package/dist/data/diagnostics/FrameSourceWindow.utils.d.ts.map +1 -0
- package/dist/data/diagnostics/FrameSourceWindow.utils.js +7 -0
- package/dist/data/diagnostics/FrameSourceWindow.utils.js.map +1 -0
- package/dist/data/diagnostics/JvmStackTrace.cjs +2 -1
- package/dist/data/diagnostics/JvmStackTrace.cjs.map +1 -1
- package/dist/data/diagnostics/JvmStackTrace.d.ts.map +1 -1
- package/dist/data/diagnostics/JvmStackTrace.js +2 -1
- package/dist/data/diagnostics/JvmStackTrace.js.map +1 -1
- package/dist/data/icon-fallback.cjs +12 -0
- package/dist/data/icon-fallback.cjs.map +1 -0
- package/dist/data/icon-fallback.d.ts +19 -0
- package/dist/data/icon-fallback.d.ts.map +1 -0
- package/dist/data/icon-fallback.js +12 -0
- package/dist/data/icon-fallback.js.map +1 -0
- package/dist/data/status-breakdown-utils.cjs +7 -0
- package/dist/data/status-breakdown-utils.cjs.map +1 -0
- package/dist/data/status-breakdown-utils.d.ts +4 -0
- package/dist/data/status-breakdown-utils.d.ts.map +1 -0
- package/dist/data/status-breakdown-utils.js +7 -0
- package/dist/data/status-breakdown-utils.js.map +1 -0
- package/dist/data/test-runner/TestRunSummary.cjs +36 -0
- package/dist/data/test-runner/TestRunSummary.cjs.map +1 -1
- package/dist/data/test-runner/TestRunSummary.d.ts +7 -1
- package/dist/data/test-runner/TestRunSummary.d.ts.map +1 -1
- package/dist/data/test-runner/TestRunSummary.js +36 -0
- package/dist/data/test-runner/TestRunSummary.js.map +1 -1
- package/dist/data/test-runner/TestRunner.cjs +5 -3
- package/dist/data/test-runner/TestRunner.cjs.map +1 -1
- package/dist/data/test-runner/TestRunner.d.ts +13 -1
- package/dist/data/test-runner/TestRunner.d.ts.map +1 -1
- package/dist/data/test-runner/TestRunner.js +5 -3
- package/dist/data/test-runner/TestRunner.js.map +1 -1
- package/dist/data/version-info.cjs +2 -2
- package/dist/data/version-info.js +2 -2
- package/dist/data.cjs +19 -6
- package/dist/data.cjs.map +1 -1
- package/dist/data.d.ts +13 -5
- package/dist/data.d.ts.map +1 -1
- package/dist/data.js +18 -5
- package/dist/data.js.map +1 -1
- package/dist/index.cjs +51 -7
- package/dist/index.cjs.map +1 -1
- package/dist/index.js +50 -6
- package/dist/index.js.map +1 -1
- package/dist/layout/AppShell.cjs +179 -29
- package/dist/layout/AppShell.cjs.map +1 -1
- package/dist/layout/AppShell.d.ts +5 -5
- package/dist/layout/AppShell.d.ts.map +1 -1
- package/dist/layout/AppShell.js +179 -29
- package/dist/layout/AppShell.js.map +1 -1
- package/dist/layout/AppSidebar.cjs +239 -0
- package/dist/layout/AppSidebar.cjs.map +1 -0
- package/dist/layout/AppSidebar.d.ts +62 -0
- package/dist/layout/AppSidebar.d.ts.map +1 -0
- package/dist/layout/AppSidebar.js +239 -0
- package/dist/layout/AppSidebar.js.map +1 -0
- package/dist/overlay/DropdownMenu.cjs.map +1 -1
- package/dist/overlay/DropdownMenu.d.ts.map +1 -1
- package/dist/overlay/DropdownMenu.js.map +1 -1
- package/dist/overlay/Modal.cjs +4 -2
- package/dist/overlay/Modal.cjs.map +1 -1
- package/dist/overlay/Modal.d.ts +1 -1
- package/dist/overlay/Modal.d.ts.map +1 -1
- package/dist/overlay/Modal.js +4 -2
- package/dist/overlay/Modal.js.map +1 -1
- package/dist/overlay/Toast.cjs +89 -0
- package/dist/overlay/Toast.cjs.map +1 -0
- package/dist/overlay/Toast.d.ts +14 -0
- package/dist/overlay/Toast.d.ts.map +1 -0
- package/dist/overlay/Toast.js +89 -0
- package/dist/overlay/Toast.js.map +1 -0
- package/dist/overlay/toast-context.cjs +12 -0
- package/dist/overlay/toast-context.cjs.map +1 -0
- package/dist/overlay/toast-context.d.ts +24 -0
- package/dist/overlay/toast-context.d.ts.map +1 -0
- package/dist/overlay/toast-context.js +12 -0
- package/dist/overlay/toast-context.js.map +1 -0
- package/dist/rpc/AcceptPicker.cjs +81 -58
- package/dist/rpc/AcceptPicker.cjs.map +1 -1
- package/dist/rpc/AcceptPicker.d.ts.map +1 -1
- package/dist/rpc/AcceptPicker.js +81 -58
- package/dist/rpc/AcceptPicker.js.map +1 -1
- package/dist/rpc/CommandForm.cjs +5 -35
- package/dist/rpc/CommandForm.cjs.map +1 -1
- package/dist/rpc/CommandForm.d.ts +0 -3
- package/dist/rpc/CommandForm.d.ts.map +1 -1
- package/dist/rpc/CommandForm.js +2 -32
- package/dist/rpc/CommandForm.js.map +1 -1
- package/dist/rpc/CommandOutput.cjs +2 -1
- package/dist/rpc/CommandOutput.cjs.map +1 -1
- package/dist/rpc/CommandOutput.d.ts.map +1 -1
- package/dist/rpc/CommandOutput.js +2 -1
- package/dist/rpc/CommandOutput.js.map +1 -1
- package/dist/rpc/EntityExplorerApp.cjs +28 -83
- package/dist/rpc/EntityExplorerApp.cjs.map +1 -1
- package/dist/rpc/EntityExplorerApp.d.ts +1 -4
- package/dist/rpc/EntityExplorerApp.d.ts.map +1 -1
- package/dist/rpc/EntityExplorerApp.js +13 -68
- package/dist/rpc/EntityExplorerApp.js.map +1 -1
- package/dist/rpc/OperationCatalog.cjs +2 -2
- package/dist/rpc/OperationCatalog.cjs.map +1 -1
- package/dist/rpc/OperationCatalog.d.ts +1 -1
- package/dist/rpc/OperationCatalog.d.ts.map +1 -1
- package/dist/rpc/OperationCatalog.js +1 -1
- package/dist/rpc/OperationCatalog.js.map +1 -1
- package/dist/rpc/OperationCommandPage.cjs +6 -4
- package/dist/rpc/OperationCommandPage.cjs.map +1 -1
- package/dist/rpc/OperationCommandPage.d.ts.map +1 -1
- package/dist/rpc/OperationCommandPage.js +3 -1
- package/dist/rpc/OperationCommandPage.js.map +1 -1
- package/dist/rpc/RouterProvider.cjs +10 -0
- package/dist/rpc/RouterProvider.cjs.map +1 -0
- package/dist/rpc/RouterProvider.d.ts +10 -0
- package/dist/rpc/RouterProvider.d.ts.map +1 -0
- package/dist/rpc/RouterProvider.js +10 -0
- package/dist/rpc/RouterProvider.js.map +1 -0
- package/dist/rpc/apiClient.cjs +4 -4
- package/dist/rpc/apiClient.cjs.map +1 -1
- package/dist/rpc/apiClient.js +4 -4
- package/dist/rpc/apiClient.js.map +1 -1
- package/dist/rpc/command-form-utils.cjs +43 -0
- package/dist/rpc/command-form-utils.cjs.map +1 -0
- package/dist/rpc/command-form-utils.d.ts +5 -0
- package/dist/rpc/command-form-utils.d.ts.map +1 -0
- package/dist/rpc/command-form-utils.js +43 -0
- package/dist/rpc/command-form-utils.js.map +1 -0
- package/dist/rpc/commandHref.cjs +62 -0
- package/dist/rpc/commandHref.cjs.map +1 -0
- package/dist/rpc/commandHref.d.ts +7 -0
- package/dist/rpc/commandHref.d.ts.map +1 -0
- package/dist/rpc/commandHref.js +62 -0
- package/dist/rpc/commandHref.js.map +1 -0
- package/dist/rpc/formMetadata.cjs +1 -1
- package/dist/rpc/formMetadata.cjs.map +1 -1
- package/dist/rpc/formMetadata.js +1 -1
- package/dist/rpc/formMetadata.js.map +1 -1
- package/dist/rpc/router.cjs +83 -0
- package/dist/rpc/router.cjs.map +1 -0
- package/dist/rpc/router.d.ts +24 -0
- package/dist/rpc/router.d.ts.map +1 -0
- package/dist/rpc/router.js +83 -0
- package/dist/rpc/router.js.map +1 -0
- package/dist/rpc/rpc-story-fixtures/orders.fixture.d.ts +3 -0
- package/dist/rpc/rpc-story-fixtures/orders.fixture.d.ts.map +1 -0
- package/dist/rpc/rpc-story-fixtures/services.fixture.d.ts +3 -0
- package/dist/rpc/rpc-story-fixtures/services.fixture.d.ts.map +1 -0
- package/dist/rpc/rpc-story-fixtures/surface-fixture.d.ts +24 -0
- package/dist/rpc/rpc-story-fixtures/surface-fixture.d.ts.map +1 -0
- package/dist/rpc/rpc-story-fixtures/widgets.fixture.d.ts +3 -0
- package/dist/rpc/rpc-story-fixtures/widgets.fixture.d.ts.map +1 -0
- package/dist/rpc/rpc-story.fixtures.d.ts +16 -0
- package/dist/rpc/rpc-story.fixtures.d.ts.map +1 -0
- package/dist/rpc.cjs +17 -0
- package/dist/rpc.cjs.map +1 -1
- package/dist/rpc.d.ts +5 -0
- package/dist/rpc.d.ts.map +1 -1
- package/dist/rpc.js +18 -1
- package/dist/rpc.js.map +1 -1
- package/dist/styles.css +1 -1
- package/package.json +11 -1
|
@@ -232,8 +232,8 @@ function TimeRange({
|
|
|
232
232
|
role: "dialog",
|
|
233
233
|
"aria-label": label,
|
|
234
234
|
className: utils.cn(
|
|
235
|
-
"
|
|
236
|
-
align === "left" ? "left-0" : "right-0",
|
|
235
|
+
"fixed inset-x-2 bottom-4 top-16 z-50 flex flex-col overflow-hidden rounded-lg border border-border bg-popover text-popover-foreground shadow-lg shadow-black/10 outline-none md:absolute md:bottom-auto md:top-[calc(100%+0.375rem)] md:block md:w-[22.5rem] md:shadow-black/5",
|
|
236
|
+
align === "left" ? "md:left-0" : "md:right-0",
|
|
237
237
|
panelClassName
|
|
238
238
|
),
|
|
239
239
|
children: [
|
|
@@ -241,54 +241,62 @@ function TimeRange({
|
|
|
241
241
|
/* @__PURE__ */ jsxRuntime.jsx("span", { className: "text-[10px] font-semibold uppercase tracking-wider text-muted-foreground", children: label }),
|
|
242
242
|
/* @__PURE__ */ jsxRuntime.jsx("span", { className: "font-mono text-[10px] text-muted-foreground", children: timeEnabled ? selectedTimeZone : "Relative" })
|
|
243
243
|
] }),
|
|
244
|
-
|
|
245
|
-
|
|
246
|
-
|
|
247
|
-
/* @__PURE__ */ jsxRuntime.jsxs("div", { className: "
|
|
248
|
-
/* @__PURE__ */ jsxRuntime.
|
|
249
|
-
|
|
250
|
-
/* @__PURE__ */ jsxRuntime.
|
|
244
|
+
/* @__PURE__ */ jsxRuntime.jsxs("div", { className: "min-h-0 flex-1 overflow-y-auto md:overflow-visible", children: [
|
|
245
|
+
activeChipRows.length > 0 && /* @__PURE__ */ jsxRuntime.jsx(ChipRowList, { rows: activeChipRows, activeToken, onApply: applyRange }),
|
|
246
|
+
activePresets.length > 0 && /* @__PURE__ */ jsxRuntime.jsx("div", { className: activeChipRows.length > 0 ? "px-3.5 pb-3" : "px-3.5 pt-3", children: /* @__PURE__ */ jsxRuntime.jsx(PresetList, { presets: activePresets, onApply: applyRange }) }),
|
|
247
|
+
/* @__PURE__ */ jsxRuntime.jsxs("div", { className: "border-t border-border/60 bg-muted/30 px-3.5 py-2.5", children: [
|
|
248
|
+
/* @__PURE__ */ jsxRuntime.jsxs("div", { className: "mb-1.5 flex flex-wrap items-center justify-between gap-2", children: [
|
|
249
|
+
/* @__PURE__ */ jsxRuntime.jsx("div", { className: "text-[10px] font-semibold uppercase tracking-wider text-muted-foreground", children: "Custom" }),
|
|
250
|
+
timeEnabled && /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex min-w-0 items-center gap-1.5", children: [
|
|
251
|
+
/* @__PURE__ */ jsxRuntime.jsx("span", { className: "text-[10px] font-semibold uppercase tracking-wider text-muted-foreground", children: "TZ" }),
|
|
252
|
+
/* @__PURE__ */ jsxRuntime.jsx(
|
|
253
|
+
select.Select,
|
|
254
|
+
{
|
|
255
|
+
"aria-label": `${label} timezone`,
|
|
256
|
+
value: selectedTimeZone,
|
|
257
|
+
options: activeTimeZones.map((zone) => ({
|
|
258
|
+
value: zone,
|
|
259
|
+
label: zone
|
|
260
|
+
})),
|
|
261
|
+
onChange: (event) => setSelectedTimeZone(event.target.value),
|
|
262
|
+
className: "h-7 w-40 truncate px-2 pr-7 font-mono text-xs"
|
|
263
|
+
}
|
|
264
|
+
)
|
|
265
|
+
] })
|
|
266
|
+
] }),
|
|
267
|
+
/* @__PURE__ */ jsxRuntime.jsxs("div", { className: "grid gap-1.5 md:grid-cols-[1fr_auto_1fr] md:items-center", children: [
|
|
251
268
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
252
|
-
|
|
269
|
+
DraftRangeInput,
|
|
253
270
|
{
|
|
254
|
-
"aria-label": `${label}
|
|
255
|
-
|
|
256
|
-
|
|
257
|
-
|
|
258
|
-
|
|
259
|
-
|
|
260
|
-
|
|
261
|
-
|
|
271
|
+
"aria-label": `${label} from`,
|
|
272
|
+
placeholder: fromPlaceholder ?? (kind === "date" ? "YYYY-MM-DD or now-1d" : "now-24h"),
|
|
273
|
+
value: draftFrom,
|
|
274
|
+
onChange: setDraftFrom,
|
|
275
|
+
onClear: () => setDraftFrom(""),
|
|
276
|
+
pickerKind: kind,
|
|
277
|
+
timeEnabled
|
|
278
|
+
}
|
|
279
|
+
),
|
|
280
|
+
/* @__PURE__ */ jsxRuntime.jsx(
|
|
281
|
+
Icon.Icon,
|
|
282
|
+
{
|
|
283
|
+
icon: UiArrowRight.UiArrowRight,
|
|
284
|
+
className: "hidden text-muted-foreground text-[12px] md:block"
|
|
285
|
+
}
|
|
286
|
+
),
|
|
287
|
+
/* @__PURE__ */ jsxRuntime.jsx(
|
|
288
|
+
DraftRangeInput,
|
|
289
|
+
{
|
|
290
|
+
"aria-label": `${label} to`,
|
|
291
|
+
placeholder: toPlaceholder ?? (kind === "date" ? "YYYY-MM-DD or now" : "now"),
|
|
292
|
+
value: draftTo,
|
|
293
|
+
onChange: setDraftTo,
|
|
294
|
+
onClear: () => setDraftTo(""),
|
|
295
|
+
pickerKind: kind,
|
|
296
|
+
timeEnabled
|
|
262
297
|
}
|
|
263
298
|
)
|
|
264
299
|
] })
|
|
265
|
-
] }),
|
|
266
|
-
/* @__PURE__ */ jsxRuntime.jsxs("div", { className: "grid grid-cols-[1fr_auto_1fr] items-center gap-1.5", children: [
|
|
267
|
-
/* @__PURE__ */ jsxRuntime.jsx(
|
|
268
|
-
DraftRangeInput,
|
|
269
|
-
{
|
|
270
|
-
"aria-label": `${label} from`,
|
|
271
|
-
placeholder: fromPlaceholder ?? (kind === "date" ? "YYYY-MM-DD or now-1d" : "now-24h"),
|
|
272
|
-
value: draftFrom,
|
|
273
|
-
onChange: setDraftFrom,
|
|
274
|
-
onClear: () => setDraftFrom(""),
|
|
275
|
-
pickerKind: kind,
|
|
276
|
-
timeEnabled
|
|
277
|
-
}
|
|
278
|
-
),
|
|
279
|
-
/* @__PURE__ */ jsxRuntime.jsx(Icon.Icon, { icon: UiArrowRight.UiArrowRight, className: "text-muted-foreground text-[12px]" }),
|
|
280
|
-
/* @__PURE__ */ jsxRuntime.jsx(
|
|
281
|
-
DraftRangeInput,
|
|
282
|
-
{
|
|
283
|
-
"aria-label": `${label} to`,
|
|
284
|
-
placeholder: toPlaceholder ?? (kind === "date" ? "YYYY-MM-DD or now" : "now"),
|
|
285
|
-
value: draftTo,
|
|
286
|
-
onChange: setDraftTo,
|
|
287
|
-
onClear: () => setDraftTo(""),
|
|
288
|
-
pickerKind: kind,
|
|
289
|
-
timeEnabled
|
|
290
|
-
}
|
|
291
|
-
)
|
|
292
300
|
] })
|
|
293
301
|
] }),
|
|
294
302
|
/* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex items-center justify-between border-t border-border/60 px-3 py-2", children: [
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"TimeRange.cjs","sources":["../../src/components/TimeRange.tsx"],"sourcesContent":["import { useEffect, useRef, useState, type RefObject } from \"react\";\nimport { Icon } from \"../data/Icon\";\nimport { UiArrowRight, UiCalendar, UiClose, UiWatch } from \"../icons\";\nimport { cn } from \"../lib/utils\";\nimport { Button } from \"./button\";\nimport { Select } from \"./select\";\n\nexport type TimeRangeKind = \"time\" | \"date\";\n\nexport type TimeRangePresetGroup = \"min\" | \"hr\" | \"day\" | \"wk+\" | \"this\" | \"last\";\n\nexport type TimeRangePreset = {\n /** Visible label for the preset row. */\n label: string;\n /** Start value applied when the preset is selected, e.g. `now-1h`. */\n from: string;\n /** End value applied when the preset is selected, usually `now`. */\n to: string;\n};\n\nexport type TimeRangeChipRow = {\n /** Stable row id used as the React key. */\n id: string;\n /** Group label shown beside the chips. */\n label: string;\n /** Preset chips rendered in this row. */\n chips: {\n /** Compact label shown in the chip. */\n label: string;\n /** Start value applied when clicked, e.g. `now-15m`. */\n token: string;\n /** Optional end value; defaults to `now`. */\n to?: string;\n /** Accessible label for the chip button. */\n ariaLabel?: string;\n /** Optional browser tooltip. */\n title?: string;\n }[];\n};\n\nexport type TimeRangeProps = {\n /** Controls whether the inputs accept date-only or date-time values. */\n kind?: TimeRangeKind;\n /** Label shown in the trigger before the selected range summary. */\n label?: string;\n /** Current start value. Relative values such as `now-1h` are supported. */\n from?: string;\n /** Current end value. Relative values such as `now` are supported. */\n to?: string;\n /** Called when the user applies a typed value or preset. */\n onApply: (from: string, to: string) => void;\n /** Presets or preset groups to show in the popup. */\n presets?: Array<TimeRangePreset | TimeRangePresetGroup>;\n /** Explicit chip rows; overrides the built-in preset group layout. */\n chipRows?: TimeRangeChipRow[];\n /** Enables time fields for date-time ranges. */\n timeEnabled?: boolean;\n /** Selected timezone shown in the popup. */\n timeZone?: string;\n /** Available timezone options. */\n timeZones?: string[];\n /** Placeholder for the start input. */\n fromPlaceholder?: string;\n /** Placeholder for the end input. */\n toPlaceholder?: string;\n /** Trigger text when neither boundary is set. */\n emptyLabel?: string;\n /** Aligns the popup to the trigger's left or right edge. */\n align?: \"left\" | \"right\";\n /** Disables opening and applying changes. */\n disabled?: boolean;\n /** Classes applied to the root wrapper. */\n className?: string;\n /** Classes applied to the trigger button. */\n triggerClassName?: string;\n /** Classes applied to the popup panel. */\n panelClassName?: string;\n};\n\nconst defaultTimeChipRows: TimeRangeChipRow[] = [\n {\n id: \"minutes\",\n label: \"Min\",\n chips: [\n { label: \"5m\", token: \"now-5m\" },\n { label: \"15m\", token: \"now-15m\" },\n { label: \"30m\", token: \"now-30m\" },\n ],\n },\n {\n id: \"hours\",\n label: \"Hr\",\n chips: [\n { label: \"1h\", token: \"now-1h\" },\n { label: \"2h\", token: \"now-2h\" },\n { label: \"4h\", token: \"now-4h\" },\n { label: \"8h\", token: \"now-8h\" },\n { label: \"12h\", token: \"now-12h\" },\n ],\n },\n {\n id: \"days\",\n label: \"Day\",\n chips: [\n { label: \"1d\", token: \"now-1d\" },\n { label: \"2d\", token: \"now-2d\" },\n { label: \"3d\", token: \"now-3d\" },\n { label: \"1w\", token: \"now-1w\" },\n ],\n },\n {\n id: \"weeks\",\n label: \"Wk+\",\n chips: [\n { label: \"2w\", token: \"now-2w\" },\n { label: \"1M\", token: \"now-1M\" },\n { label: \"3M\", token: \"now-3M\" },\n { label: \"6M\", token: \"now-6M\" },\n { label: \"1y\", token: \"now-1y\" },\n ],\n },\n];\n\nconst timeChipRowsByGroup: Record<\n Exclude<TimeRangePresetGroup, \"this\" | \"last\">,\n TimeRangeChipRow\n> = {\n min: defaultTimeChipRows[0]!,\n hr: defaultTimeChipRows[1]!,\n day: defaultTimeChipRows[2]!,\n \"wk+\": defaultTimeChipRows[3]!,\n};\n\nconst defaultDateChipRows: TimeRangeChipRow[] = [\n {\n id: \"days\",\n label: \"Day\",\n chips: [\n { label: \"1d\", token: \"now-1d\" },\n { label: \"2d\", token: \"now-2d\" },\n { label: \"3d\", token: \"now-3d\" },\n { label: \"7d\", token: \"now-7d\" },\n ],\n },\n {\n id: \"weeks\",\n label: \"Wk\",\n chips: [\n { label: \"1w\", token: \"now-1w\" },\n { label: \"2w\", token: \"now-2w\" },\n { label: \"4w\", token: \"now-4w\" },\n ],\n },\n {\n id: \"months\",\n label: \"Mo\",\n chips: [\n { label: \"1M\", token: \"now-1M\" },\n { label: \"3M\", token: \"now-3M\" },\n { label: \"6M\", token: \"now-6M\" },\n { label: \"1y\", token: \"now-1y\" },\n ],\n },\n];\n\nconst thisLastChipRows: Record<Extract<TimeRangePresetGroup, \"this\" | \"last\">, TimeRangeChipRow> = {\n this: {\n id: \"this\",\n label: \"This\",\n chips: [\n { label: \"Week\", token: \"now/w\", to: \"now/w+1w\", ariaLabel: \"this week\" },\n {\n label: \"Month\",\n token: \"now/M\",\n to: \"now/M+1M\",\n ariaLabel: \"this month\",\n },\n {\n label: \"Quarter\",\n token: \"now/q\",\n to: \"now/q+1q\",\n ariaLabel: \"this quarter\",\n },\n { label: \"Year\", token: \"now/y\", to: \"now/y+1y\", ariaLabel: \"this year\" },\n ],\n },\n last: {\n id: \"last\",\n label: \"Last\",\n chips: [\n { label: \"Week\", token: \"now/w-1w\", to: \"now/w\", ariaLabel: \"last week\" },\n {\n label: \"Month\",\n token: \"now/M-1M\",\n to: \"now/M\",\n ariaLabel: \"last month\",\n },\n {\n label: \"Quarter\",\n token: \"now/q-1q\",\n to: \"now/q\",\n ariaLabel: \"last quarter\",\n },\n { label: \"Year\", token: \"now/y-1y\", to: \"now/y\", ariaLabel: \"last year\" },\n ],\n },\n};\n\nexport function TimeRange({\n kind = \"time\",\n label = \"Time range\",\n from = \"\",\n to = \"\",\n onApply,\n presets,\n chipRows,\n timeEnabled = false,\n timeZone,\n timeZones,\n fromPlaceholder,\n toPlaceholder,\n emptyLabel,\n align = \"right\",\n disabled = false,\n className,\n triggerClassName,\n panelClassName,\n}: TimeRangeProps) {\n const rootRef = useRef<HTMLDivElement>(null);\n const triggerRef = useRef<HTMLButtonElement>(null);\n const [open, setOpen] = useState(false);\n const [draftFrom, setDraftFrom] = useState(from);\n const [draftTo, setDraftTo] = useState(to);\n const resolvedDefaultTimeZone = timeZone ?? getDefaultTimeZone();\n const [selectedTimeZone, setSelectedTimeZone] = useState(resolvedDefaultTimeZone);\n\n const activeTimeZones = resolveTimeZones(timeZones, selectedTimeZone);\n const { rows: activeChipRows, presets: activePresets } = resolvePresetConfig(\n kind,\n presets,\n chipRows,\n );\n\n useDismissablePopup(open, rootRef, triggerRef, () => setOpen(false));\n\n useEffect(() => {\n if (open) {\n setDraftFrom(from);\n setDraftTo(to);\n setSelectedTimeZone(resolvedDefaultTimeZone);\n }\n }, [from, open, resolvedDefaultTimeZone, to]);\n\n const buttonLabel =\n formatSelectedPresetLabel(from, to, activeChipRows, activePresets) ??\n formatRangeLabel(kind, from, to, emptyLabel);\n const activeToken = normalizeRangeValue(kind, from, {\n timeEnabled,\n timeZone: selectedTimeZone,\n });\n\n function applyRange(nextFrom: string, nextTo: string) {\n onApply(\n normalizeRangeValue(kind, nextFrom, {\n timeEnabled,\n timeZone: selectedTimeZone,\n }),\n normalizeRangeValue(kind, nextTo, {\n timeEnabled,\n timeZone: selectedTimeZone,\n }),\n );\n setOpen(false);\n }\n\n function clearRange() {\n setDraftFrom(\"\");\n setDraftTo(\"\");\n onApply(\"\", \"\");\n setOpen(false);\n }\n\n return (\n <div ref={rootRef} className={cn(\"relative inline-flex\", className)}>\n <Button\n ref={triggerRef}\n type=\"button\"\n variant=\"outline\"\n size=\"sm\"\n aria-label={`${label} filter`}\n aria-expanded={open}\n aria-haspopup=\"dialog\"\n disabled={disabled}\n onClick={() => setOpen((current) => !current)}\n className={cn(\n \"h-7 w-fit max-w-[12rem] min-w-0 gap-2 px-2 text-xs font-normal\",\n triggerClassName,\n )}\n >\n <Icon\n icon={kind === \"time\" ? UiWatch : UiCalendar}\n className=\"text-muted-foreground text-[14px]\"\n />\n <span className=\"truncate font-normal tabular-nums\">{buttonLabel}</span>\n </Button>\n\n {open && (\n <div\n role=\"dialog\"\n aria-label={label}\n className={cn(\n \"absolute top-[calc(100%+0.375rem)] z-50 w-[22.5rem] overflow-hidden rounded-lg border border-border bg-popover text-popover-foreground shadow-lg shadow-black/5 outline-none\",\n align === \"left\" ? \"left-0\" : \"right-0\",\n panelClassName,\n )}\n >\n <div className=\"flex items-center justify-between border-b border-border/60 px-3.5 py-2.5\">\n <span className=\"text-[10px] font-semibold uppercase tracking-wider text-muted-foreground\">\n {label}\n </span>\n <span className=\"font-mono text-[10px] text-muted-foreground\">\n {timeEnabled ? selectedTimeZone : \"Relative\"}\n </span>\n </div>\n\n {activeChipRows.length > 0 && (\n <ChipRowList rows={activeChipRows} activeToken={activeToken} onApply={applyRange} />\n )}\n {activePresets.length > 0 && (\n <div className={activeChipRows.length > 0 ? \"px-3.5 pb-3\" : \"px-3.5 pt-3\"}>\n <PresetList presets={activePresets} onApply={applyRange} />\n </div>\n )}\n\n <div className=\"border-t border-border/60 bg-muted/30 px-3.5 py-2.5\">\n <div className=\"mb-1.5 flex items-center justify-between gap-2\">\n <div className=\"text-[10px] font-semibold uppercase tracking-wider text-muted-foreground\">\n Custom\n </div>\n {timeEnabled && (\n <div className=\"flex min-w-0 items-center gap-1.5\">\n <span className=\"text-[10px] font-semibold uppercase tracking-wider text-muted-foreground\">\n TZ\n </span>\n <Select\n aria-label={`${label} timezone`}\n value={selectedTimeZone}\n options={activeTimeZones.map((zone) => ({\n value: zone,\n label: zone,\n }))}\n onChange={(event) => setSelectedTimeZone(event.target.value)}\n className=\"h-7 w-40 truncate px-2 pr-7 font-mono text-xs\"\n />\n </div>\n )}\n </div>\n <div className=\"grid grid-cols-[1fr_auto_1fr] items-center gap-1.5\">\n <DraftRangeInput\n aria-label={`${label} from`}\n placeholder={\n fromPlaceholder ?? (kind === \"date\" ? \"YYYY-MM-DD or now-1d\" : \"now-24h\")\n }\n value={draftFrom}\n onChange={setDraftFrom}\n onClear={() => setDraftFrom(\"\")}\n pickerKind={kind}\n timeEnabled={timeEnabled}\n />\n <Icon icon={UiArrowRight} className=\"text-muted-foreground text-[12px]\" />\n <DraftRangeInput\n aria-label={`${label} to`}\n placeholder={toPlaceholder ?? (kind === \"date\" ? \"YYYY-MM-DD or now\" : \"now\")}\n value={draftTo}\n onChange={setDraftTo}\n onClear={() => setDraftTo(\"\")}\n pickerKind={kind}\n timeEnabled={timeEnabled}\n />\n </div>\n </div>\n\n <div className=\"flex items-center justify-between border-t border-border/60 px-3 py-2\">\n <Button\n type=\"button\"\n variant=\"ghost\"\n size=\"sm\"\n className=\"h-7 px-2.5 text-xs\"\n disabled={!from && !to}\n onClick={clearRange}\n >\n Clear\n </Button>\n <div className=\"flex gap-1.5\">\n <Button\n type=\"button\"\n variant=\"ghost\"\n size=\"sm\"\n className=\"h-7 px-2.5 text-xs\"\n onClick={() => setOpen(false)}\n >\n Cancel\n </Button>\n <Button\n type=\"button\"\n variant=\"default\"\n size=\"sm\"\n className=\"h-7 px-3.5 text-xs\"\n onClick={() => applyRange(draftFrom, draftTo)}\n >\n Apply\n </Button>\n </div>\n </div>\n </div>\n )}\n </div>\n );\n}\n\nfunction DraftRangeInput({\n value,\n onChange,\n onClear,\n placeholder,\n pickerKind,\n timeEnabled,\n ...rest\n}: {\n value: string;\n onChange: (value: string) => void;\n onClear: () => void;\n placeholder: string | undefined;\n pickerKind?: TimeRangeKind;\n timeEnabled: boolean;\n \"aria-label\": string;\n}) {\n const ariaLabel = rest[\"aria-label\"];\n const showCalendar = pickerKind !== undefined;\n const showTimeInput = pickerKind === \"time\" && timeEnabled;\n const { date: datePart, time: timePart } = splitDateTime(value);\n\n function setDatePart(nextDate: string) {\n if (!showTimeInput) {\n onChange(nextDate);\n return;\n }\n if (!nextDate) {\n onChange(timePart ? `T${timePart}` : \"\");\n return;\n }\n onChange(timePart ? `${nextDate}T${timePart}` : nextDate);\n }\n\n function setTimePart(nextTime: string) {\n if (!nextTime) {\n onChange(datePart);\n return;\n }\n onChange(datePart ? `${datePart}T${nextTime}` : `T${nextTime}`);\n }\n\n return (\n <div className=\"space-y-1\">\n <DraftTextInput\n ariaLabel={ariaLabel}\n placeholder={placeholder}\n value={showTimeInput ? datePart : value}\n onChange={showTimeInput ? setDatePart : onChange}\n onClear={onClear}\n showCalendar={showCalendar}\n />\n {showTimeInput && (\n <DraftTimeInput ariaLabel={`${ariaLabel} time`} value={timePart} onChange={setTimePart} />\n )}\n </div>\n );\n}\n\nfunction resolvePresetConfig(\n kind: TimeRangeKind,\n presets: TimeRangeProps[\"presets\"],\n chipRows: TimeRangeChipRow[] | undefined,\n) {\n if (presets === undefined) {\n return {\n rows: chipRows ?? (kind === \"date\" ? defaultDateChipRows : defaultTimeChipRows),\n presets: [] as TimeRangePreset[],\n };\n }\n\n const rows: TimeRangeChipRow[] = chipRows ? [...chipRows] : [];\n const presetList: TimeRangePreset[] = [];\n\n for (const preset of presets) {\n if (typeof preset !== \"string\") {\n presetList.push(preset);\n continue;\n }\n if (preset === \"this\" || preset === \"last\") {\n rows.push(thisLastChipRows[preset]);\n continue;\n }\n rows.push(timeChipRowsByGroup[preset]);\n }\n\n return { rows, presets: presetList };\n}\n\nfunction DraftTextInput({\n ariaLabel,\n value,\n onChange,\n onClear,\n placeholder,\n showCalendar,\n}: {\n ariaLabel: string;\n value: string;\n onChange: (value: string) => void;\n onClear: () => void;\n placeholder: string | undefined;\n showCalendar: boolean;\n}) {\n const pickerRef = useRef<HTMLInputElement | null>(null);\n const hasValue = value.length > 0;\n const paddingRight = showCalendar ? (hasValue ? \"pr-12\" : \"pr-7\") : \"pr-7\";\n\n return (\n <div className=\"relative\">\n <input\n type=\"text\"\n aria-label={ariaLabel}\n placeholder={placeholder}\n value={value}\n onChange={(event) => onChange(event.target.value)}\n className={cn(\n \"h-8 w-full rounded-md border border-input bg-background px-2 font-mono text-xs outline-none focus-visible:ring-2 focus-visible:ring-ring\",\n paddingRight,\n )}\n />\n {hasValue && (\n <button\n type=\"button\"\n aria-label={`Clear ${ariaLabel}`}\n onClick={onClear}\n className={cn(\n \"absolute inset-y-0 inline-flex w-5 items-center justify-center text-muted-foreground hover:text-foreground focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring\",\n showCalendar ? \"right-6\" : \"right-1\",\n )}\n >\n <Icon icon={UiClose} className=\"text-[12px]\" />\n </button>\n )}\n {showCalendar && (\n <>\n <input\n ref={pickerRef}\n type=\"date\"\n tabIndex={-1}\n aria-hidden=\"true\"\n value={/^\\d{4}-\\d{2}-\\d{2}$/.test(value.trim()) ? value.trim() : \"\"}\n onChange={(event) => onChange(event.target.value)}\n className=\"pointer-events-none absolute left-0 top-0 h-0 w-0 opacity-0\"\n />\n <button\n type=\"button\"\n aria-label={`Pick ${ariaLabel}`}\n onClick={() => pickerRef.current?.showPicker?.()}\n className=\"absolute inset-y-0 right-1 inline-flex w-5 items-center justify-center text-muted-foreground hover:text-foreground focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring\"\n >\n <Icon icon={UiCalendar} className=\"text-[12px]\" />\n </button>\n </>\n )}\n </div>\n );\n}\n\nfunction DraftTimeInput({\n ariaLabel,\n value,\n onChange,\n}: {\n ariaLabel: string;\n value: string;\n onChange: (value: string) => void;\n}) {\n return (\n <input\n type=\"time\"\n aria-label={ariaLabel}\n value={value}\n onChange={(event) => onChange(event.target.value)}\n className=\"h-8 w-full rounded-md border border-input bg-background px-2 font-mono text-xs outline-none focus-visible:ring-2 focus-visible:ring-ring\"\n />\n );\n}\n\nfunction splitDateTime(value: string) {\n const trimmed = value.trim();\n const match = /^(\\d{4}-\\d{2}-\\d{2})?T?(\\d{2}:\\d{2})?/.exec(trimmed);\n if (!match || trimmed.startsWith(\"now\") || /^[+-]/.test(trimmed)) {\n return { date: trimmed, time: \"\" };\n }\n return { date: match[1] ?? \"\", time: match[2] ?? \"\" };\n}\n\nfunction ChipRowList({\n rows,\n activeToken,\n onApply,\n}: {\n rows: TimeRangeChipRow[];\n activeToken: string;\n onApply: (from: string, to: string) => void;\n}) {\n if (rows.length === 0) return null;\n\n return (\n <div className=\"px-3.5 py-3\" role=\"list\" aria-label=\"Time filters\">\n {rows.map((row, index) => (\n <div\n key={row.id}\n className={cn(\n \"grid grid-cols-[2rem_1fr] items-center gap-2\",\n index === rows.length - 1 ? \"\" : \"mb-1.5\",\n )}\n role=\"listitem\"\n >\n <span className=\"text-[9.5px] font-bold uppercase tracking-wider text-muted-foreground\">\n {row.label}\n </span>\n <div className=\"flex divide-x divide-border overflow-hidden rounded-[5px] border border-border\">\n {row.chips.map((chip) => {\n const active = chip.token === activeToken;\n return (\n <button\n key={chip.token}\n type=\"button\"\n title={chip.title ?? chip.ariaLabel ?? chip.token}\n aria-label={chip.ariaLabel ?? chip.token}\n aria-pressed={active}\n onClick={() => onApply(chip.token, chip.to ?? \"now\")}\n className={cn(\n \"flex-1 min-w-0 px-0 py-1.5 text-center font-mono text-[11.5px] leading-none transition-colors focus-visible:relative focus-visible:z-10 focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring\",\n active\n ? \"bg-foreground font-semibold text-background\"\n : \"bg-background font-medium text-muted-foreground hover:bg-muted\",\n )}\n >\n {chip.label}\n </button>\n );\n })}\n </div>\n </div>\n ))}\n </div>\n );\n}\n\nfunction PresetList({\n presets,\n onApply,\n}: {\n presets: TimeRangePreset[];\n onApply: (from: string, to: string) => void;\n}) {\n if (presets.length === 0) return null;\n\n return (\n <div className=\"mb-3 space-y-1\" role=\"list\" aria-label=\"Time filters\">\n {presets.map((preset) => (\n <button\n key={`${preset.label}-${preset.from}-${preset.to}`}\n type=\"button\"\n className=\"flex h-8 w-full items-center justify-between gap-3 rounded-md border border-border bg-background px-2 text-left text-xs hover:bg-muted focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring\"\n onClick={() => onApply(preset.from, preset.to)}\n >\n <span className=\"min-w-0 truncate font-medium\">{preset.label}</span>\n <span className=\"shrink-0 font-mono text-[11px] text-muted-foreground\">\n {formatPresetRange(preset)}\n </span>\n </button>\n ))}\n </div>\n );\n}\n\nfunction formatSelectedPresetLabel(\n from: string,\n to: string,\n rows: TimeRangeChipRow[],\n presets: TimeRangePreset[],\n) {\n const normalizedFrom = from.trim();\n const normalizedTo = to.trim();\n if (!normalizedFrom && !normalizedTo) return undefined;\n\n for (const row of rows) {\n for (const chip of row.chips) {\n if (chip.token === normalizedFrom && (chip.to ?? \"now\") === normalizedTo) {\n return chip.ariaLabel ?? chip.title ?? chip.label;\n }\n }\n }\n\n return presets.find((preset) => preset.from === normalizedFrom && preset.to === normalizedTo)\n ?.label;\n}\n\nfunction formatPresetRange({ from, to }: TimeRangePreset) {\n if (!from) return to;\n if (!to || to === \"now\") return from;\n return `${from} -> ${to}`;\n}\n\nfunction useDismissablePopup(\n open: boolean,\n rootRef: RefObject<HTMLElement | null>,\n triggerRef: RefObject<HTMLElement | null>,\n onClose: () => void,\n) {\n useEffect(() => {\n if (!open) return;\n\n const onPointerDown = (event: MouseEvent) => {\n if (!rootRef.current?.contains(event.target as Node)) {\n onClose();\n }\n };\n\n const onKeyDown = (event: KeyboardEvent) => {\n if (event.key === \"Escape\") {\n onClose();\n triggerRef.current?.focus();\n }\n };\n\n document.addEventListener(\"mousedown\", onPointerDown);\n document.addEventListener(\"keydown\", onKeyDown);\n return () => {\n document.removeEventListener(\"mousedown\", onPointerDown);\n document.removeEventListener(\"keydown\", onKeyDown);\n };\n }, [onClose, open, rootRef, triggerRef]);\n}\n\nfunction normalizeRangeValue(\n kind: TimeRangeKind,\n value: string,\n options: { timeEnabled?: boolean; timeZone?: string } = {},\n) {\n const trimmed = value.trim();\n if (!trimmed) return \"\";\n if (trimmed === \"now\" || trimmed.startsWith(\"now\")) return trimmed;\n if (kind === \"time\" && /^[+-]\\d/.test(trimmed)) return `now${trimmed}`;\n if (kind === \"time\" && options.timeEnabled) {\n return encodeDateTimeWithOffset(trimmed, options.timeZone ?? getDefaultTimeZone());\n }\n return trimmed;\n}\n\nfunction formatRangeLabel(kind: TimeRangeKind, from: string, to: string, emptyLabel?: string) {\n const trimmedFrom = from.trim();\n const trimmedTo = to.trim();\n\n if (!trimmedFrom && !trimmedTo) {\n return emptyLabel ?? (kind === \"date\" ? \"Any date\" : \"now-24h\");\n }\n\n if (kind === \"time\") {\n const normalizedFrom = normalizeRangeValue(kind, trimmedFrom);\n const normalizedTo = normalizeRangeValue(kind, trimmedTo || \"now\");\n if (!normalizedFrom) return normalizedTo;\n if (normalizedTo === \"now\") return normalizedFrom;\n return `${normalizedFrom} -> ${normalizedTo}`;\n }\n\n if (trimmedFrom && trimmedTo && trimmedFrom === trimmedTo) {\n return trimmedFrom;\n }\n\n if (!trimmedFrom) return trimmedTo;\n if (!trimmedTo) return trimmedFrom;\n return `${trimmedFrom} -> ${trimmedTo}`;\n}\n\nfunction getDefaultTimeZone() {\n try {\n return Intl.DateTimeFormat().resolvedOptions().timeZone || \"UTC\";\n } catch {\n return \"UTC\";\n }\n}\n\nfunction resolveTimeZones(timeZones: string[] | undefined, selectedTimeZone: string) {\n const zones = timeZones && timeZones.length > 0 ? timeZones : [selectedTimeZone, \"UTC\"];\n return Array.from(new Set([selectedTimeZone, ...zones, \"UTC\"].filter(Boolean)));\n}\n\nfunction encodeDateTimeWithOffset(value: string, timeZone: string) {\n if (!isLocalDateTime(value) || hasExplicitOffset(value)) return value;\n\n const match = value.match(/^(\\d{4})-(\\d{2})-(\\d{2})T(\\d{2}):(\\d{2})(?::(\\d{2}))?(?:\\.\\d+)?$/);\n if (!match) return value;\n\n const [, year, month, day, hour, minute, second = \"00\"] = match;\n const localUtcMillis = Date.UTC(\n Number(year),\n Number(month) - 1,\n Number(day),\n Number(hour),\n Number(minute),\n Number(second),\n );\n const offsetMinutes = getTimeZoneOffsetMinutes(timeZone, localUtcMillis);\n return `${year}-${month}-${day}T${hour}:${minute}:${second}${formatOffset(offsetMinutes)}`;\n}\n\nfunction isLocalDateTime(value: string) {\n return /^\\d{4}-\\d{2}-\\d{2}T\\d{2}:\\d{2}(?::\\d{2})?(?:\\.\\d+)?$/.test(value.trim());\n}\n\nfunction hasExplicitOffset(value: string) {\n return /(?:Z|[+-]\\d{2}:?\\d{2})$/i.test(value.trim());\n}\n\nfunction getTimeZoneOffsetMinutes(timeZone: string, localUtcMillis: number) {\n try {\n const formatter = new Intl.DateTimeFormat(\"en-US\", {\n timeZone,\n year: \"numeric\",\n month: \"2-digit\",\n day: \"2-digit\",\n hour: \"2-digit\",\n minute: \"2-digit\",\n second: \"2-digit\",\n hour12: false,\n });\n const parts = Object.fromEntries(\n formatter\n .formatToParts(new Date(localUtcMillis))\n .filter((part) => part.type !== \"literal\")\n .map((part) => [part.type, part.value]),\n );\n const zonedUtcMillis = Date.UTC(\n Number(parts.year),\n Number(parts.month) - 1,\n Number(parts.day),\n Number(parts.hour),\n Number(parts.minute),\n Number(parts.second),\n );\n return (zonedUtcMillis - localUtcMillis) / 60_000;\n } catch {\n return 0;\n }\n}\n\nfunction formatOffset(offsetMinutes: number) {\n const sign = offsetMinutes >= 0 ? \"+\" : \"-\";\n const abs = Math.abs(offsetMinutes);\n const hours = Math.floor(abs / 60)\n .toString()\n .padStart(2, \"0\");\n const minutes = Math.floor(abs % 60)\n .toString()\n .padStart(2, \"0\");\n return `${sign}${hours}:${minutes}`;\n}\n"],"names":["useRef","useState","useEffect","jsxs","cn","Button","jsx","Icon","UiWatch","UiCalendar","Select","UiArrowRight","UiClose","Fragment"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"TimeRange.cjs","sources":["../../src/components/TimeRange.tsx"],"sourcesContent":["import { useEffect, useRef, useState, type RefObject } from \"react\";\nimport { Icon } from \"../data/Icon\";\nimport { UiArrowRight, UiCalendar, UiClose, UiWatch } from \"../icons\";\nimport { cn } from \"../lib/utils\";\nimport { Button } from \"./button\";\nimport { Select } from \"./select\";\n\nexport type TimeRangeKind = \"time\" | \"date\";\n\nexport type TimeRangePresetGroup = \"min\" | \"hr\" | \"day\" | \"wk+\" | \"this\" | \"last\";\n\nexport type TimeRangePreset = {\n /** Visible label for the preset row. */\n label: string;\n /** Start value applied when the preset is selected, e.g. `now-1h`. */\n from: string;\n /** End value applied when the preset is selected, usually `now`. */\n to: string;\n};\n\nexport type TimeRangeChipRow = {\n /** Stable row id used as the React key. */\n id: string;\n /** Group label shown beside the chips. */\n label: string;\n /** Preset chips rendered in this row. */\n chips: {\n /** Compact label shown in the chip. */\n label: string;\n /** Start value applied when clicked, e.g. `now-15m`. */\n token: string;\n /** Optional end value; defaults to `now`. */\n to?: string;\n /** Accessible label for the chip button. */\n ariaLabel?: string;\n /** Optional browser tooltip. */\n title?: string;\n }[];\n};\n\nexport type TimeRangeProps = {\n /** Controls whether the inputs accept date-only or date-time values. */\n kind?: TimeRangeKind;\n /** Label shown in the trigger before the selected range summary. */\n label?: string;\n /** Current start value. Relative values such as `now-1h` are supported. */\n from?: string;\n /** Current end value. Relative values such as `now` are supported. */\n to?: string;\n /** Called when the user applies a typed value or preset. */\n onApply: (from: string, to: string) => void;\n /** Presets or preset groups to show in the popup. */\n presets?: Array<TimeRangePreset | TimeRangePresetGroup>;\n /** Explicit chip rows; overrides the built-in preset group layout. */\n chipRows?: TimeRangeChipRow[];\n /** Enables time fields for date-time ranges. */\n timeEnabled?: boolean;\n /** Selected timezone shown in the popup. */\n timeZone?: string;\n /** Available timezone options. */\n timeZones?: string[];\n /** Placeholder for the start input. */\n fromPlaceholder?: string;\n /** Placeholder for the end input. */\n toPlaceholder?: string;\n /** Trigger text when neither boundary is set. */\n emptyLabel?: string;\n /** Aligns the popup to the trigger's left or right edge. */\n align?: \"left\" | \"right\";\n /** Disables opening and applying changes. */\n disabled?: boolean;\n /** Classes applied to the root wrapper. */\n className?: string;\n /** Classes applied to the trigger button. */\n triggerClassName?: string;\n /** Classes applied to the popup panel. */\n panelClassName?: string;\n};\n\nconst defaultTimeChipRows: TimeRangeChipRow[] = [\n {\n id: \"minutes\",\n label: \"Min\",\n chips: [\n { label: \"5m\", token: \"now-5m\" },\n { label: \"15m\", token: \"now-15m\" },\n { label: \"30m\", token: \"now-30m\" },\n ],\n },\n {\n id: \"hours\",\n label: \"Hr\",\n chips: [\n { label: \"1h\", token: \"now-1h\" },\n { label: \"2h\", token: \"now-2h\" },\n { label: \"4h\", token: \"now-4h\" },\n { label: \"8h\", token: \"now-8h\" },\n { label: \"12h\", token: \"now-12h\" },\n ],\n },\n {\n id: \"days\",\n label: \"Day\",\n chips: [\n { label: \"1d\", token: \"now-1d\" },\n { label: \"2d\", token: \"now-2d\" },\n { label: \"3d\", token: \"now-3d\" },\n { label: \"1w\", token: \"now-1w\" },\n ],\n },\n {\n id: \"weeks\",\n label: \"Wk+\",\n chips: [\n { label: \"2w\", token: \"now-2w\" },\n { label: \"1M\", token: \"now-1M\" },\n { label: \"3M\", token: \"now-3M\" },\n { label: \"6M\", token: \"now-6M\" },\n { label: \"1y\", token: \"now-1y\" },\n ],\n },\n];\n\nconst timeChipRowsByGroup: Record<\n Exclude<TimeRangePresetGroup, \"this\" | \"last\">,\n TimeRangeChipRow\n> = {\n min: defaultTimeChipRows[0]!,\n hr: defaultTimeChipRows[1]!,\n day: defaultTimeChipRows[2]!,\n \"wk+\": defaultTimeChipRows[3]!,\n};\n\nconst defaultDateChipRows: TimeRangeChipRow[] = [\n {\n id: \"days\",\n label: \"Day\",\n chips: [\n { label: \"1d\", token: \"now-1d\" },\n { label: \"2d\", token: \"now-2d\" },\n { label: \"3d\", token: \"now-3d\" },\n { label: \"7d\", token: \"now-7d\" },\n ],\n },\n {\n id: \"weeks\",\n label: \"Wk\",\n chips: [\n { label: \"1w\", token: \"now-1w\" },\n { label: \"2w\", token: \"now-2w\" },\n { label: \"4w\", token: \"now-4w\" },\n ],\n },\n {\n id: \"months\",\n label: \"Mo\",\n chips: [\n { label: \"1M\", token: \"now-1M\" },\n { label: \"3M\", token: \"now-3M\" },\n { label: \"6M\", token: \"now-6M\" },\n { label: \"1y\", token: \"now-1y\" },\n ],\n },\n];\n\nconst thisLastChipRows: Record<Extract<TimeRangePresetGroup, \"this\" | \"last\">, TimeRangeChipRow> = {\n this: {\n id: \"this\",\n label: \"This\",\n chips: [\n { label: \"Week\", token: \"now/w\", to: \"now/w+1w\", ariaLabel: \"this week\" },\n {\n label: \"Month\",\n token: \"now/M\",\n to: \"now/M+1M\",\n ariaLabel: \"this month\",\n },\n {\n label: \"Quarter\",\n token: \"now/q\",\n to: \"now/q+1q\",\n ariaLabel: \"this quarter\",\n },\n { label: \"Year\", token: \"now/y\", to: \"now/y+1y\", ariaLabel: \"this year\" },\n ],\n },\n last: {\n id: \"last\",\n label: \"Last\",\n chips: [\n { label: \"Week\", token: \"now/w-1w\", to: \"now/w\", ariaLabel: \"last week\" },\n {\n label: \"Month\",\n token: \"now/M-1M\",\n to: \"now/M\",\n ariaLabel: \"last month\",\n },\n {\n label: \"Quarter\",\n token: \"now/q-1q\",\n to: \"now/q\",\n ariaLabel: \"last quarter\",\n },\n { label: \"Year\", token: \"now/y-1y\", to: \"now/y\", ariaLabel: \"last year\" },\n ],\n },\n};\n\nexport function TimeRange({\n kind = \"time\",\n label = \"Time range\",\n from = \"\",\n to = \"\",\n onApply,\n presets,\n chipRows,\n timeEnabled = false,\n timeZone,\n timeZones,\n fromPlaceholder,\n toPlaceholder,\n emptyLabel,\n align = \"right\",\n disabled = false,\n className,\n triggerClassName,\n panelClassName,\n}: TimeRangeProps) {\n const rootRef = useRef<HTMLDivElement>(null);\n const triggerRef = useRef<HTMLButtonElement>(null);\n const [open, setOpen] = useState(false);\n const [draftFrom, setDraftFrom] = useState(from);\n const [draftTo, setDraftTo] = useState(to);\n const resolvedDefaultTimeZone = timeZone ?? getDefaultTimeZone();\n const [selectedTimeZone, setSelectedTimeZone] = useState(resolvedDefaultTimeZone);\n\n const activeTimeZones = resolveTimeZones(timeZones, selectedTimeZone);\n const { rows: activeChipRows, presets: activePresets } = resolvePresetConfig(\n kind,\n presets,\n chipRows,\n );\n\n useDismissablePopup(open, rootRef, triggerRef, () => setOpen(false));\n\n useEffect(() => {\n if (open) {\n setDraftFrom(from);\n setDraftTo(to);\n setSelectedTimeZone(resolvedDefaultTimeZone);\n }\n }, [from, open, resolvedDefaultTimeZone, to]);\n\n const buttonLabel =\n formatSelectedPresetLabel(from, to, activeChipRows, activePresets) ??\n formatRangeLabel(kind, from, to, emptyLabel);\n const activeToken = normalizeRangeValue(kind, from, {\n timeEnabled,\n timeZone: selectedTimeZone,\n });\n\n function applyRange(nextFrom: string, nextTo: string) {\n onApply(\n normalizeRangeValue(kind, nextFrom, {\n timeEnabled,\n timeZone: selectedTimeZone,\n }),\n normalizeRangeValue(kind, nextTo, {\n timeEnabled,\n timeZone: selectedTimeZone,\n }),\n );\n setOpen(false);\n }\n\n function clearRange() {\n setDraftFrom(\"\");\n setDraftTo(\"\");\n onApply(\"\", \"\");\n setOpen(false);\n }\n\n return (\n <div ref={rootRef} className={cn(\"relative inline-flex\", className)}>\n <Button\n ref={triggerRef}\n type=\"button\"\n variant=\"outline\"\n size=\"sm\"\n aria-label={`${label} filter`}\n aria-expanded={open}\n aria-haspopup=\"dialog\"\n disabled={disabled}\n onClick={() => setOpen((current) => !current)}\n className={cn(\n \"h-7 w-fit max-w-[12rem] min-w-0 gap-2 px-2 text-xs font-normal\",\n triggerClassName,\n )}\n >\n <Icon\n icon={kind === \"time\" ? UiWatch : UiCalendar}\n className=\"text-muted-foreground text-[14px]\"\n />\n <span className=\"truncate font-normal tabular-nums\">{buttonLabel}</span>\n </Button>\n\n {open && (\n <div\n role=\"dialog\"\n aria-label={label}\n className={cn(\n \"fixed inset-x-2 bottom-4 top-16 z-50 flex flex-col overflow-hidden rounded-lg border border-border bg-popover text-popover-foreground shadow-lg shadow-black/10 outline-none md:absolute md:bottom-auto md:top-[calc(100%+0.375rem)] md:block md:w-[22.5rem] md:shadow-black/5\",\n align === \"left\" ? \"md:left-0\" : \"md:right-0\",\n panelClassName,\n )}\n >\n <div className=\"flex items-center justify-between border-b border-border/60 px-3.5 py-2.5\">\n <span className=\"text-[10px] font-semibold uppercase tracking-wider text-muted-foreground\">\n {label}\n </span>\n <span className=\"font-mono text-[10px] text-muted-foreground\">\n {timeEnabled ? selectedTimeZone : \"Relative\"}\n </span>\n </div>\n\n <div className=\"min-h-0 flex-1 overflow-y-auto md:overflow-visible\">\n {activeChipRows.length > 0 && (\n <ChipRowList rows={activeChipRows} activeToken={activeToken} onApply={applyRange} />\n )}\n {activePresets.length > 0 && (\n <div className={activeChipRows.length > 0 ? \"px-3.5 pb-3\" : \"px-3.5 pt-3\"}>\n <PresetList presets={activePresets} onApply={applyRange} />\n </div>\n )}\n\n <div className=\"border-t border-border/60 bg-muted/30 px-3.5 py-2.5\">\n <div className=\"mb-1.5 flex flex-wrap items-center justify-between gap-2\">\n <div className=\"text-[10px] font-semibold uppercase tracking-wider text-muted-foreground\">\n Custom\n </div>\n {timeEnabled && (\n <div className=\"flex min-w-0 items-center gap-1.5\">\n <span className=\"text-[10px] font-semibold uppercase tracking-wider text-muted-foreground\">\n TZ\n </span>\n <Select\n aria-label={`${label} timezone`}\n value={selectedTimeZone}\n options={activeTimeZones.map((zone) => ({\n value: zone,\n label: zone,\n }))}\n onChange={(event) => setSelectedTimeZone(event.target.value)}\n className=\"h-7 w-40 truncate px-2 pr-7 font-mono text-xs\"\n />\n </div>\n )}\n </div>\n <div className=\"grid gap-1.5 md:grid-cols-[1fr_auto_1fr] md:items-center\">\n <DraftRangeInput\n aria-label={`${label} from`}\n placeholder={\n fromPlaceholder ?? (kind === \"date\" ? \"YYYY-MM-DD or now-1d\" : \"now-24h\")\n }\n value={draftFrom}\n onChange={setDraftFrom}\n onClear={() => setDraftFrom(\"\")}\n pickerKind={kind}\n timeEnabled={timeEnabled}\n />\n <Icon\n icon={UiArrowRight}\n className=\"hidden text-muted-foreground text-[12px] md:block\"\n />\n <DraftRangeInput\n aria-label={`${label} to`}\n placeholder={toPlaceholder ?? (kind === \"date\" ? \"YYYY-MM-DD or now\" : \"now\")}\n value={draftTo}\n onChange={setDraftTo}\n onClear={() => setDraftTo(\"\")}\n pickerKind={kind}\n timeEnabled={timeEnabled}\n />\n </div>\n </div>\n </div>\n\n <div className=\"flex items-center justify-between border-t border-border/60 px-3 py-2\">\n <Button\n type=\"button\"\n variant=\"ghost\"\n size=\"sm\"\n className=\"h-7 px-2.5 text-xs\"\n disabled={!from && !to}\n onClick={clearRange}\n >\n Clear\n </Button>\n <div className=\"flex gap-1.5\">\n <Button\n type=\"button\"\n variant=\"ghost\"\n size=\"sm\"\n className=\"h-7 px-2.5 text-xs\"\n onClick={() => setOpen(false)}\n >\n Cancel\n </Button>\n <Button\n type=\"button\"\n variant=\"default\"\n size=\"sm\"\n className=\"h-7 px-3.5 text-xs\"\n onClick={() => applyRange(draftFrom, draftTo)}\n >\n Apply\n </Button>\n </div>\n </div>\n </div>\n )}\n </div>\n );\n}\n\nfunction DraftRangeInput({\n value,\n onChange,\n onClear,\n placeholder,\n pickerKind,\n timeEnabled,\n ...rest\n}: {\n value: string;\n onChange: (value: string) => void;\n onClear: () => void;\n placeholder: string | undefined;\n pickerKind?: TimeRangeKind;\n timeEnabled: boolean;\n \"aria-label\": string;\n}) {\n const ariaLabel = rest[\"aria-label\"];\n const showCalendar = pickerKind !== undefined;\n const showTimeInput = pickerKind === \"time\" && timeEnabled;\n const { date: datePart, time: timePart } = splitDateTime(value);\n\n function setDatePart(nextDate: string) {\n if (!showTimeInput) {\n onChange(nextDate);\n return;\n }\n if (!nextDate) {\n onChange(timePart ? `T${timePart}` : \"\");\n return;\n }\n onChange(timePart ? `${nextDate}T${timePart}` : nextDate);\n }\n\n function setTimePart(nextTime: string) {\n if (!nextTime) {\n onChange(datePart);\n return;\n }\n onChange(datePart ? `${datePart}T${nextTime}` : `T${nextTime}`);\n }\n\n return (\n <div className=\"space-y-1\">\n <DraftTextInput\n ariaLabel={ariaLabel}\n placeholder={placeholder}\n value={showTimeInput ? datePart : value}\n onChange={showTimeInput ? setDatePart : onChange}\n onClear={onClear}\n showCalendar={showCalendar}\n />\n {showTimeInput && (\n <DraftTimeInput ariaLabel={`${ariaLabel} time`} value={timePart} onChange={setTimePart} />\n )}\n </div>\n );\n}\n\nfunction resolvePresetConfig(\n kind: TimeRangeKind,\n presets: TimeRangeProps[\"presets\"],\n chipRows: TimeRangeChipRow[] | undefined,\n) {\n if (presets === undefined) {\n return {\n rows: chipRows ?? (kind === \"date\" ? defaultDateChipRows : defaultTimeChipRows),\n presets: [] as TimeRangePreset[],\n };\n }\n\n const rows: TimeRangeChipRow[] = chipRows ? [...chipRows] : [];\n const presetList: TimeRangePreset[] = [];\n\n for (const preset of presets) {\n if (typeof preset !== \"string\") {\n presetList.push(preset);\n continue;\n }\n if (preset === \"this\" || preset === \"last\") {\n rows.push(thisLastChipRows[preset]);\n continue;\n }\n rows.push(timeChipRowsByGroup[preset]);\n }\n\n return { rows, presets: presetList };\n}\n\nfunction DraftTextInput({\n ariaLabel,\n value,\n onChange,\n onClear,\n placeholder,\n showCalendar,\n}: {\n ariaLabel: string;\n value: string;\n onChange: (value: string) => void;\n onClear: () => void;\n placeholder: string | undefined;\n showCalendar: boolean;\n}) {\n const pickerRef = useRef<HTMLInputElement | null>(null);\n const hasValue = value.length > 0;\n const paddingRight = showCalendar ? (hasValue ? \"pr-12\" : \"pr-7\") : \"pr-7\";\n\n return (\n <div className=\"relative\">\n <input\n type=\"text\"\n aria-label={ariaLabel}\n placeholder={placeholder}\n value={value}\n onChange={(event) => onChange(event.target.value)}\n className={cn(\n \"h-8 w-full rounded-md border border-input bg-background px-2 font-mono text-xs outline-none focus-visible:ring-2 focus-visible:ring-ring\",\n paddingRight,\n )}\n />\n {hasValue && (\n <button\n type=\"button\"\n aria-label={`Clear ${ariaLabel}`}\n onClick={onClear}\n className={cn(\n \"absolute inset-y-0 inline-flex w-5 items-center justify-center text-muted-foreground hover:text-foreground focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring\",\n showCalendar ? \"right-6\" : \"right-1\",\n )}\n >\n <Icon icon={UiClose} className=\"text-[12px]\" />\n </button>\n )}\n {showCalendar && (\n <>\n <input\n ref={pickerRef}\n type=\"date\"\n tabIndex={-1}\n aria-hidden=\"true\"\n value={/^\\d{4}-\\d{2}-\\d{2}$/.test(value.trim()) ? value.trim() : \"\"}\n onChange={(event) => onChange(event.target.value)}\n className=\"pointer-events-none absolute left-0 top-0 h-0 w-0 opacity-0\"\n />\n <button\n type=\"button\"\n aria-label={`Pick ${ariaLabel}`}\n onClick={() => pickerRef.current?.showPicker?.()}\n className=\"absolute inset-y-0 right-1 inline-flex w-5 items-center justify-center text-muted-foreground hover:text-foreground focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring\"\n >\n <Icon icon={UiCalendar} className=\"text-[12px]\" />\n </button>\n </>\n )}\n </div>\n );\n}\n\nfunction DraftTimeInput({\n ariaLabel,\n value,\n onChange,\n}: {\n ariaLabel: string;\n value: string;\n onChange: (value: string) => void;\n}) {\n return (\n <input\n type=\"time\"\n aria-label={ariaLabel}\n value={value}\n onChange={(event) => onChange(event.target.value)}\n className=\"h-8 w-full rounded-md border border-input bg-background px-2 font-mono text-xs outline-none focus-visible:ring-2 focus-visible:ring-ring\"\n />\n );\n}\n\nfunction splitDateTime(value: string) {\n const trimmed = value.trim();\n const match = /^(\\d{4}-\\d{2}-\\d{2})?T?(\\d{2}:\\d{2})?/.exec(trimmed);\n if (!match || trimmed.startsWith(\"now\") || /^[+-]/.test(trimmed)) {\n return { date: trimmed, time: \"\" };\n }\n return { date: match[1] ?? \"\", time: match[2] ?? \"\" };\n}\n\nfunction ChipRowList({\n rows,\n activeToken,\n onApply,\n}: {\n rows: TimeRangeChipRow[];\n activeToken: string;\n onApply: (from: string, to: string) => void;\n}) {\n if (rows.length === 0) return null;\n\n return (\n <div className=\"px-3.5 py-3\" role=\"list\" aria-label=\"Time filters\">\n {rows.map((row, index) => (\n <div\n key={row.id}\n className={cn(\n \"grid grid-cols-[2rem_1fr] items-center gap-2\",\n index === rows.length - 1 ? \"\" : \"mb-1.5\",\n )}\n role=\"listitem\"\n >\n <span className=\"text-[9.5px] font-bold uppercase tracking-wider text-muted-foreground\">\n {row.label}\n </span>\n <div className=\"flex divide-x divide-border overflow-hidden rounded-[5px] border border-border\">\n {row.chips.map((chip) => {\n const active = chip.token === activeToken;\n return (\n <button\n key={chip.token}\n type=\"button\"\n title={chip.title ?? chip.ariaLabel ?? chip.token}\n aria-label={chip.ariaLabel ?? chip.token}\n aria-pressed={active}\n onClick={() => onApply(chip.token, chip.to ?? \"now\")}\n className={cn(\n \"flex-1 min-w-0 px-0 py-1.5 text-center font-mono text-[11.5px] leading-none transition-colors focus-visible:relative focus-visible:z-10 focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring\",\n active\n ? \"bg-foreground font-semibold text-background\"\n : \"bg-background font-medium text-muted-foreground hover:bg-muted\",\n )}\n >\n {chip.label}\n </button>\n );\n })}\n </div>\n </div>\n ))}\n </div>\n );\n}\n\nfunction PresetList({\n presets,\n onApply,\n}: {\n presets: TimeRangePreset[];\n onApply: (from: string, to: string) => void;\n}) {\n if (presets.length === 0) return null;\n\n return (\n <div className=\"mb-3 space-y-1\" role=\"list\" aria-label=\"Time filters\">\n {presets.map((preset) => (\n <button\n key={`${preset.label}-${preset.from}-${preset.to}`}\n type=\"button\"\n className=\"flex h-8 w-full items-center justify-between gap-3 rounded-md border border-border bg-background px-2 text-left text-xs hover:bg-muted focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring\"\n onClick={() => onApply(preset.from, preset.to)}\n >\n <span className=\"min-w-0 truncate font-medium\">{preset.label}</span>\n <span className=\"shrink-0 font-mono text-[11px] text-muted-foreground\">\n {formatPresetRange(preset)}\n </span>\n </button>\n ))}\n </div>\n );\n}\n\nfunction formatSelectedPresetLabel(\n from: string,\n to: string,\n rows: TimeRangeChipRow[],\n presets: TimeRangePreset[],\n) {\n const normalizedFrom = from.trim();\n const normalizedTo = to.trim();\n if (!normalizedFrom && !normalizedTo) return undefined;\n\n for (const row of rows) {\n for (const chip of row.chips) {\n if (chip.token === normalizedFrom && (chip.to ?? \"now\") === normalizedTo) {\n return chip.ariaLabel ?? chip.title ?? chip.label;\n }\n }\n }\n\n return presets.find((preset) => preset.from === normalizedFrom && preset.to === normalizedTo)\n ?.label;\n}\n\nfunction formatPresetRange({ from, to }: TimeRangePreset) {\n if (!from) return to;\n if (!to || to === \"now\") return from;\n return `${from} -> ${to}`;\n}\n\nfunction useDismissablePopup(\n open: boolean,\n rootRef: RefObject<HTMLElement | null>,\n triggerRef: RefObject<HTMLElement | null>,\n onClose: () => void,\n) {\n useEffect(() => {\n if (!open) return;\n\n const onPointerDown = (event: MouseEvent) => {\n if (!rootRef.current?.contains(event.target as Node)) {\n onClose();\n }\n };\n\n const onKeyDown = (event: KeyboardEvent) => {\n if (event.key === \"Escape\") {\n onClose();\n triggerRef.current?.focus();\n }\n };\n\n document.addEventListener(\"mousedown\", onPointerDown);\n document.addEventListener(\"keydown\", onKeyDown);\n return () => {\n document.removeEventListener(\"mousedown\", onPointerDown);\n document.removeEventListener(\"keydown\", onKeyDown);\n };\n }, [onClose, open, rootRef, triggerRef]);\n}\n\nfunction normalizeRangeValue(\n kind: TimeRangeKind,\n value: string,\n options: { timeEnabled?: boolean; timeZone?: string } = {},\n) {\n const trimmed = value.trim();\n if (!trimmed) return \"\";\n if (trimmed === \"now\" || trimmed.startsWith(\"now\")) return trimmed;\n if (kind === \"time\" && /^[+-]\\d/.test(trimmed)) return `now${trimmed}`;\n if (kind === \"time\" && options.timeEnabled) {\n return encodeDateTimeWithOffset(trimmed, options.timeZone ?? getDefaultTimeZone());\n }\n return trimmed;\n}\n\nfunction formatRangeLabel(kind: TimeRangeKind, from: string, to: string, emptyLabel?: string) {\n const trimmedFrom = from.trim();\n const trimmedTo = to.trim();\n\n if (!trimmedFrom && !trimmedTo) {\n return emptyLabel ?? (kind === \"date\" ? \"Any date\" : \"now-24h\");\n }\n\n if (kind === \"time\") {\n const normalizedFrom = normalizeRangeValue(kind, trimmedFrom);\n const normalizedTo = normalizeRangeValue(kind, trimmedTo || \"now\");\n if (!normalizedFrom) return normalizedTo;\n if (normalizedTo === \"now\") return normalizedFrom;\n return `${normalizedFrom} -> ${normalizedTo}`;\n }\n\n if (trimmedFrom && trimmedTo && trimmedFrom === trimmedTo) {\n return trimmedFrom;\n }\n\n if (!trimmedFrom) return trimmedTo;\n if (!trimmedTo) return trimmedFrom;\n return `${trimmedFrom} -> ${trimmedTo}`;\n}\n\nfunction getDefaultTimeZone() {\n try {\n return Intl.DateTimeFormat().resolvedOptions().timeZone || \"UTC\";\n } catch {\n return \"UTC\";\n }\n}\n\nfunction resolveTimeZones(timeZones: string[] | undefined, selectedTimeZone: string) {\n const zones = timeZones && timeZones.length > 0 ? timeZones : [selectedTimeZone, \"UTC\"];\n return Array.from(new Set([selectedTimeZone, ...zones, \"UTC\"].filter(Boolean)));\n}\n\nfunction encodeDateTimeWithOffset(value: string, timeZone: string) {\n if (!isLocalDateTime(value) || hasExplicitOffset(value)) return value;\n\n const match = value.match(/^(\\d{4})-(\\d{2})-(\\d{2})T(\\d{2}):(\\d{2})(?::(\\d{2}))?(?:\\.\\d+)?$/);\n if (!match) return value;\n\n const [, year, month, day, hour, minute, second = \"00\"] = match;\n const localUtcMillis = Date.UTC(\n Number(year),\n Number(month) - 1,\n Number(day),\n Number(hour),\n Number(minute),\n Number(second),\n );\n const offsetMinutes = getTimeZoneOffsetMinutes(timeZone, localUtcMillis);\n return `${year}-${month}-${day}T${hour}:${minute}:${second}${formatOffset(offsetMinutes)}`;\n}\n\nfunction isLocalDateTime(value: string) {\n return /^\\d{4}-\\d{2}-\\d{2}T\\d{2}:\\d{2}(?::\\d{2})?(?:\\.\\d+)?$/.test(value.trim());\n}\n\nfunction hasExplicitOffset(value: string) {\n return /(?:Z|[+-]\\d{2}:?\\d{2})$/i.test(value.trim());\n}\n\nfunction getTimeZoneOffsetMinutes(timeZone: string, localUtcMillis: number) {\n try {\n const formatter = new Intl.DateTimeFormat(\"en-US\", {\n timeZone,\n year: \"numeric\",\n month: \"2-digit\",\n day: \"2-digit\",\n hour: \"2-digit\",\n minute: \"2-digit\",\n second: \"2-digit\",\n hour12: false,\n });\n const parts = Object.fromEntries(\n formatter\n .formatToParts(new Date(localUtcMillis))\n .filter((part) => part.type !== \"literal\")\n .map((part) => [part.type, part.value]),\n );\n const zonedUtcMillis = Date.UTC(\n Number(parts.year),\n Number(parts.month) - 1,\n Number(parts.day),\n Number(parts.hour),\n Number(parts.minute),\n Number(parts.second),\n );\n return (zonedUtcMillis - localUtcMillis) / 60_000;\n } catch {\n return 0;\n }\n}\n\nfunction formatOffset(offsetMinutes: number) {\n const sign = offsetMinutes >= 0 ? \"+\" : \"-\";\n const abs = Math.abs(offsetMinutes);\n const hours = Math.floor(abs / 60)\n .toString()\n .padStart(2, \"0\");\n const minutes = Math.floor(abs % 60)\n .toString()\n .padStart(2, \"0\");\n return `${sign}${hours}:${minutes}`;\n}\n"],"names":["useRef","useState","useEffect","jsxs","cn","Button","jsx","Icon","UiWatch","UiCalendar","Select","UiArrowRight","UiClose","Fragment"],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"TimeRange.d.ts","sourceRoot":"","sources":["../../src/components/TimeRange.tsx"],"names":[],"mappings":"AAOA,MAAM,MAAM,aAAa,GAAG,MAAM,GAAG,MAAM,CAAC;AAE5C,MAAM,MAAM,oBAAoB,GAAG,KAAK,GAAG,IAAI,GAAG,KAAK,GAAG,KAAK,GAAG,MAAM,GAAG,MAAM,CAAC;AAElF,MAAM,MAAM,eAAe,GAAG;IAC5B,wCAAwC;IACxC,KAAK,EAAE,MAAM,CAAC;IACd,sEAAsE;IACtE,IAAI,EAAE,MAAM,CAAC;IACb,oEAAoE;IACpE,EAAE,EAAE,MAAM,CAAC;CACZ,CAAC;AAEF,MAAM,MAAM,gBAAgB,GAAG;IAC7B,2CAA2C;IAC3C,EAAE,EAAE,MAAM,CAAC;IACX,0CAA0C;IAC1C,KAAK,EAAE,MAAM,CAAC;IACd,yCAAyC;IACzC,KAAK,EAAE;QACL,uCAAuC;QACvC,KAAK,EAAE,MAAM,CAAC;QACd,wDAAwD;QACxD,KAAK,EAAE,MAAM,CAAC;QACd,6CAA6C;QAC7C,EAAE,CAAC,EAAE,MAAM,CAAC;QACZ,4CAA4C;QAC5C,SAAS,CAAC,EAAE,MAAM,CAAC;QACnB,gCAAgC;QAChC,KAAK,CAAC,EAAE,MAAM,CAAC;KAChB,EAAE,CAAC;CACL,CAAC;AAEF,MAAM,MAAM,cAAc,GAAG;IAC3B,wEAAwE;IACxE,IAAI,CAAC,EAAE,aAAa,CAAC;IACrB,oEAAoE;IACpE,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,2EAA2E;IAC3E,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,sEAAsE;IACtE,EAAE,CAAC,EAAE,MAAM,CAAC;IACZ,4DAA4D;IAC5D,OAAO,EAAE,CAAC,IAAI,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,KAAK,IAAI,CAAC;IAC5C,qDAAqD;IACrD,OAAO,CAAC,EAAE,KAAK,CAAC,eAAe,GAAG,oBAAoB,CAAC,CAAC;IACxD,sEAAsE;IACtE,QAAQ,CAAC,EAAE,gBAAgB,EAAE,CAAC;IAC9B,gDAAgD;IAChD,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB,4CAA4C;IAC5C,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,kCAAkC;IAClC,SAAS,CAAC,EAAE,MAAM,EAAE,CAAC;IACrB,uCAAuC;IACvC,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,qCAAqC;IACrC,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,iDAAiD;IACjD,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,4DAA4D;IAC5D,KAAK,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC;IACzB,6CAA6C;IAC7C,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,2CAA2C;IAC3C,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,6CAA6C;IAC7C,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,0CAA0C;IAC1C,cAAc,CAAC,EAAE,MAAM,CAAC;CACzB,CAAC;AAmIF,wBAAgB,SAAS,CAAC,EACxB,IAAa,EACb,KAAoB,EACpB,IAAS,EACT,EAAO,EACP,OAAO,EACP,OAAO,EACP,QAAQ,EACR,WAAmB,EACnB,QAAQ,EACR,SAAS,EACT,eAAe,EACf,aAAa,EACb,UAAU,EACV,KAAe,EACf,QAAgB,EAChB,SAAS,EACT,gBAAgB,EAChB,cAAc,GACf,EAAE,cAAc,
|
|
1
|
+
{"version":3,"file":"TimeRange.d.ts","sourceRoot":"","sources":["../../src/components/TimeRange.tsx"],"names":[],"mappings":"AAOA,MAAM,MAAM,aAAa,GAAG,MAAM,GAAG,MAAM,CAAC;AAE5C,MAAM,MAAM,oBAAoB,GAAG,KAAK,GAAG,IAAI,GAAG,KAAK,GAAG,KAAK,GAAG,MAAM,GAAG,MAAM,CAAC;AAElF,MAAM,MAAM,eAAe,GAAG;IAC5B,wCAAwC;IACxC,KAAK,EAAE,MAAM,CAAC;IACd,sEAAsE;IACtE,IAAI,EAAE,MAAM,CAAC;IACb,oEAAoE;IACpE,EAAE,EAAE,MAAM,CAAC;CACZ,CAAC;AAEF,MAAM,MAAM,gBAAgB,GAAG;IAC7B,2CAA2C;IAC3C,EAAE,EAAE,MAAM,CAAC;IACX,0CAA0C;IAC1C,KAAK,EAAE,MAAM,CAAC;IACd,yCAAyC;IACzC,KAAK,EAAE;QACL,uCAAuC;QACvC,KAAK,EAAE,MAAM,CAAC;QACd,wDAAwD;QACxD,KAAK,EAAE,MAAM,CAAC;QACd,6CAA6C;QAC7C,EAAE,CAAC,EAAE,MAAM,CAAC;QACZ,4CAA4C;QAC5C,SAAS,CAAC,EAAE,MAAM,CAAC;QACnB,gCAAgC;QAChC,KAAK,CAAC,EAAE,MAAM,CAAC;KAChB,EAAE,CAAC;CACL,CAAC;AAEF,MAAM,MAAM,cAAc,GAAG;IAC3B,wEAAwE;IACxE,IAAI,CAAC,EAAE,aAAa,CAAC;IACrB,oEAAoE;IACpE,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,2EAA2E;IAC3E,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,sEAAsE;IACtE,EAAE,CAAC,EAAE,MAAM,CAAC;IACZ,4DAA4D;IAC5D,OAAO,EAAE,CAAC,IAAI,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,KAAK,IAAI,CAAC;IAC5C,qDAAqD;IACrD,OAAO,CAAC,EAAE,KAAK,CAAC,eAAe,GAAG,oBAAoB,CAAC,CAAC;IACxD,sEAAsE;IACtE,QAAQ,CAAC,EAAE,gBAAgB,EAAE,CAAC;IAC9B,gDAAgD;IAChD,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB,4CAA4C;IAC5C,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,kCAAkC;IAClC,SAAS,CAAC,EAAE,MAAM,EAAE,CAAC;IACrB,uCAAuC;IACvC,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,qCAAqC;IACrC,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,iDAAiD;IACjD,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,4DAA4D;IAC5D,KAAK,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC;IACzB,6CAA6C;IAC7C,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,2CAA2C;IAC3C,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,6CAA6C;IAC7C,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,0CAA0C;IAC1C,cAAc,CAAC,EAAE,MAAM,CAAC;CACzB,CAAC;AAmIF,wBAAgB,SAAS,CAAC,EACxB,IAAa,EACb,KAAoB,EACpB,IAAS,EACT,EAAO,EACP,OAAO,EACP,OAAO,EACP,QAAQ,EACR,WAAmB,EACnB,QAAQ,EACR,SAAS,EACT,eAAe,EACf,aAAa,EACb,UAAU,EACV,KAAe,EACf,QAAgB,EAChB,SAAS,EACT,gBAAgB,EAChB,cAAc,GACf,EAAE,cAAc,2CAoMhB"}
|
|
@@ -230,8 +230,8 @@ function TimeRange({
|
|
|
230
230
|
role: "dialog",
|
|
231
231
|
"aria-label": label,
|
|
232
232
|
className: cn(
|
|
233
|
-
"
|
|
234
|
-
align === "left" ? "left-0" : "right-0",
|
|
233
|
+
"fixed inset-x-2 bottom-4 top-16 z-50 flex flex-col overflow-hidden rounded-lg border border-border bg-popover text-popover-foreground shadow-lg shadow-black/10 outline-none md:absolute md:bottom-auto md:top-[calc(100%+0.375rem)] md:block md:w-[22.5rem] md:shadow-black/5",
|
|
234
|
+
align === "left" ? "md:left-0" : "md:right-0",
|
|
235
235
|
panelClassName
|
|
236
236
|
),
|
|
237
237
|
children: [
|
|
@@ -239,54 +239,62 @@ function TimeRange({
|
|
|
239
239
|
/* @__PURE__ */ jsx("span", { className: "text-[10px] font-semibold uppercase tracking-wider text-muted-foreground", children: label }),
|
|
240
240
|
/* @__PURE__ */ jsx("span", { className: "font-mono text-[10px] text-muted-foreground", children: timeEnabled ? selectedTimeZone : "Relative" })
|
|
241
241
|
] }),
|
|
242
|
-
|
|
243
|
-
|
|
244
|
-
|
|
245
|
-
/* @__PURE__ */ jsxs("div", { className: "
|
|
246
|
-
/* @__PURE__ */
|
|
247
|
-
|
|
248
|
-
/* @__PURE__ */
|
|
242
|
+
/* @__PURE__ */ jsxs("div", { className: "min-h-0 flex-1 overflow-y-auto md:overflow-visible", children: [
|
|
243
|
+
activeChipRows.length > 0 && /* @__PURE__ */ jsx(ChipRowList, { rows: activeChipRows, activeToken, onApply: applyRange }),
|
|
244
|
+
activePresets.length > 0 && /* @__PURE__ */ jsx("div", { className: activeChipRows.length > 0 ? "px-3.5 pb-3" : "px-3.5 pt-3", children: /* @__PURE__ */ jsx(PresetList, { presets: activePresets, onApply: applyRange }) }),
|
|
245
|
+
/* @__PURE__ */ jsxs("div", { className: "border-t border-border/60 bg-muted/30 px-3.5 py-2.5", children: [
|
|
246
|
+
/* @__PURE__ */ jsxs("div", { className: "mb-1.5 flex flex-wrap items-center justify-between gap-2", children: [
|
|
247
|
+
/* @__PURE__ */ jsx("div", { className: "text-[10px] font-semibold uppercase tracking-wider text-muted-foreground", children: "Custom" }),
|
|
248
|
+
timeEnabled && /* @__PURE__ */ jsxs("div", { className: "flex min-w-0 items-center gap-1.5", children: [
|
|
249
|
+
/* @__PURE__ */ jsx("span", { className: "text-[10px] font-semibold uppercase tracking-wider text-muted-foreground", children: "TZ" }),
|
|
250
|
+
/* @__PURE__ */ jsx(
|
|
251
|
+
Select,
|
|
252
|
+
{
|
|
253
|
+
"aria-label": `${label} timezone`,
|
|
254
|
+
value: selectedTimeZone,
|
|
255
|
+
options: activeTimeZones.map((zone) => ({
|
|
256
|
+
value: zone,
|
|
257
|
+
label: zone
|
|
258
|
+
})),
|
|
259
|
+
onChange: (event) => setSelectedTimeZone(event.target.value),
|
|
260
|
+
className: "h-7 w-40 truncate px-2 pr-7 font-mono text-xs"
|
|
261
|
+
}
|
|
262
|
+
)
|
|
263
|
+
] })
|
|
264
|
+
] }),
|
|
265
|
+
/* @__PURE__ */ jsxs("div", { className: "grid gap-1.5 md:grid-cols-[1fr_auto_1fr] md:items-center", children: [
|
|
249
266
|
/* @__PURE__ */ jsx(
|
|
250
|
-
|
|
267
|
+
DraftRangeInput,
|
|
251
268
|
{
|
|
252
|
-
"aria-label": `${label}
|
|
253
|
-
|
|
254
|
-
|
|
255
|
-
|
|
256
|
-
|
|
257
|
-
|
|
258
|
-
|
|
259
|
-
|
|
269
|
+
"aria-label": `${label} from`,
|
|
270
|
+
placeholder: fromPlaceholder ?? (kind === "date" ? "YYYY-MM-DD or now-1d" : "now-24h"),
|
|
271
|
+
value: draftFrom,
|
|
272
|
+
onChange: setDraftFrom,
|
|
273
|
+
onClear: () => setDraftFrom(""),
|
|
274
|
+
pickerKind: kind,
|
|
275
|
+
timeEnabled
|
|
276
|
+
}
|
|
277
|
+
),
|
|
278
|
+
/* @__PURE__ */ jsx(
|
|
279
|
+
Icon,
|
|
280
|
+
{
|
|
281
|
+
icon: UiArrowRight,
|
|
282
|
+
className: "hidden text-muted-foreground text-[12px] md:block"
|
|
283
|
+
}
|
|
284
|
+
),
|
|
285
|
+
/* @__PURE__ */ jsx(
|
|
286
|
+
DraftRangeInput,
|
|
287
|
+
{
|
|
288
|
+
"aria-label": `${label} to`,
|
|
289
|
+
placeholder: toPlaceholder ?? (kind === "date" ? "YYYY-MM-DD or now" : "now"),
|
|
290
|
+
value: draftTo,
|
|
291
|
+
onChange: setDraftTo,
|
|
292
|
+
onClear: () => setDraftTo(""),
|
|
293
|
+
pickerKind: kind,
|
|
294
|
+
timeEnabled
|
|
260
295
|
}
|
|
261
296
|
)
|
|
262
297
|
] })
|
|
263
|
-
] }),
|
|
264
|
-
/* @__PURE__ */ jsxs("div", { className: "grid grid-cols-[1fr_auto_1fr] items-center gap-1.5", children: [
|
|
265
|
-
/* @__PURE__ */ jsx(
|
|
266
|
-
DraftRangeInput,
|
|
267
|
-
{
|
|
268
|
-
"aria-label": `${label} from`,
|
|
269
|
-
placeholder: fromPlaceholder ?? (kind === "date" ? "YYYY-MM-DD or now-1d" : "now-24h"),
|
|
270
|
-
value: draftFrom,
|
|
271
|
-
onChange: setDraftFrom,
|
|
272
|
-
onClear: () => setDraftFrom(""),
|
|
273
|
-
pickerKind: kind,
|
|
274
|
-
timeEnabled
|
|
275
|
-
}
|
|
276
|
-
),
|
|
277
|
-
/* @__PURE__ */ jsx(Icon, { icon: UiArrowRight, className: "text-muted-foreground text-[12px]" }),
|
|
278
|
-
/* @__PURE__ */ jsx(
|
|
279
|
-
DraftRangeInput,
|
|
280
|
-
{
|
|
281
|
-
"aria-label": `${label} to`,
|
|
282
|
-
placeholder: toPlaceholder ?? (kind === "date" ? "YYYY-MM-DD or now" : "now"),
|
|
283
|
-
value: draftTo,
|
|
284
|
-
onChange: setDraftTo,
|
|
285
|
-
onClear: () => setDraftTo(""),
|
|
286
|
-
pickerKind: kind,
|
|
287
|
-
timeEnabled
|
|
288
|
-
}
|
|
289
|
-
)
|
|
290
298
|
] })
|
|
291
299
|
] }),
|
|
292
300
|
/* @__PURE__ */ jsxs("div", { className: "flex items-center justify-between border-t border-border/60 px-3 py-2", children: [
|