@datum-cloud/datum-ui 2.5.0 → 2.7.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (39) hide show
  1. package/dist/{calendar-date-picker-Cl4lIDl5.mjs → calendar-date-picker-bpTUcGu_.mjs} +1 -1
  2. package/dist/components/features/logs/components/columns.d.ts +15 -0
  3. package/dist/components/features/logs/components/root.d.ts +1 -1
  4. package/dist/components/features/logs/components/status-badge.d.ts +5 -0
  5. package/dist/components/features/logs/components/timeline.d.ts +3 -0
  6. package/dist/components/features/logs/fixtures/index.d.ts +2 -0
  7. package/dist/components/features/logs/index.d.ts +3 -2
  8. package/dist/components/features/logs/logs.d.ts +2 -0
  9. package/dist/components/features/logs/types.d.ts +51 -3
  10. package/dist/components/features/logs/utils/detail-width.d.ts +3 -0
  11. package/dist/components/features/logs/utils/facets.d.ts +7 -0
  12. package/dist/components/features/logs/utils/format-timestamp.d.ts +4 -0
  13. package/dist/components/features/logs/utils/histogram.d.ts +16 -0
  14. package/dist/components/features/logs/utils/host.d.ts +7 -0
  15. package/dist/components/features/logs/utils/index.d.ts +8 -4
  16. package/dist/components/features/logs/utils/parse-log-line.d.ts +17 -3
  17. package/dist/components/features/logs/utils/time-range.d.ts +19 -0
  18. package/dist/components/features/logs/utils/user-agent.d.ts +25 -0
  19. package/dist/data-table/index.mjs +1 -1
  20. package/dist/{data-table-C37OD6_4.mjs → data-table-BaWOHdZX.mjs} +1 -1
  21. package/dist/date-picker/index.mjs +3 -3
  22. package/dist/date-time/index.mjs +1 -1
  23. package/dist/{date-time-BmYjT5vd.mjs → date-time-lZdefM4H.mjs} +1 -1
  24. package/dist/date-time-picker/index.mjs +1 -1
  25. package/dist/{date-time-picker-DlaSizpS.mjs → date-time-picker-Bd7qSZVr.mjs} +1 -1
  26. package/dist/{date-time-range-picker-CQQLACgN.mjs → date-time-range-picker-DlFTh3DF.mjs} +12 -3
  27. package/dist/form/index.mjs +1 -1
  28. package/dist/{form-DDtBJ3Dj.mjs → form-BKxvdIKB.mjs} +3 -3
  29. package/dist/grouped-table/index.mjs +1 -1
  30. package/dist/{grouped-table-DImzzehJ.mjs → grouped-table-DWtEx18V.mjs} +1 -1
  31. package/dist/index.mjs +9 -9
  32. package/dist/logs/fixtures/index.mjs +770 -3
  33. package/dist/logs/index.mjs +1321 -252
  34. package/dist/picker/index.mjs +2 -2
  35. package/dist/{picker-Bbjl9FOq.mjs → picker-DbKukBkk.mjs} +1 -1
  36. package/dist/time-picker/index.mjs +1 -1
  37. package/dist/{time-picker-CoUqZCb7.mjs → time-picker-rVTkmbIG.mjs} +1 -1
  38. package/dist/{to-api-format-BzKfX7yo.mjs → to-api-format-Bm1VcKkS.mjs} +1 -1
  39. package/package.json +1 -1
@@ -1,5 +1,5 @@
1
1
  import { t as useDeprecationWarning } from "./use-deprecation-warning-DXrGc0jX.mjs";
2
- import { a as DateRangePicker } from "./picker-Bbjl9FOq.mjs";
2
+ import { a as DateRangePicker } from "./picker-DbKukBkk.mjs";
3
3
  import { jsx } from "react/jsx-runtime";
4
4
  //#region src/components/features/calendar-date-picker/calendar-date-picker.tsx
5
5
  /**
@@ -0,0 +1,15 @@
1
+ import type { CSSProperties, ReactNode } from 'react';
2
+ import type { LogColumn, LogColumnSize, LogColumnSpec } from '../types';
3
+ /**
4
+ * Expand column specs into renderable columns. Unknown built-in ids are
5
+ * skipped (with a one-time dev warning) so a typo or a stale URL-driven
6
+ * column list degrades to a narrower table instead of a crash.
7
+ */
8
+ export declare function resolveLogColumns(specs: readonly LogColumnSpec[]): LogColumn[];
9
+ export declare function columnSize(column: LogColumn): LogColumnSize;
10
+ export declare function columnWidth(column: LogColumn): number;
11
+ export declare function columnHeadClass(column: LogColumn): string;
12
+ export declare function columnCellClass(column: LogColumn): string;
13
+ export declare function columnWidthStyle(column: LogColumn): CSSProperties | undefined;
14
+ export declare function columnSkeleton(column: LogColumn, row: number): ReactNode;
15
+ export declare function columnHeader(column: LogColumn): ReactNode;
@@ -1,2 +1,2 @@
1
1
  import type { LogsRootProps } from '../types';
2
- export declare function LogsRoot({ entries, facets, timeRange, defaultTimeRange, filters, defaultFilters, search, defaultSearch, live, defaultLive, selectedId, defaultSelectedId, isLoading, error, columns, onTimeRangeChange, onFiltersChange, onSearchChange, onLiveChange, onSelectedIdChange, onRefresh, onExport, className, children, }: LogsRootProps): import("react").JSX.Element;
2
+ export declare function LogsRoot({ entries, facets, histogram, timeRange, defaultTimeRange, filters, defaultFilters, search, defaultSearch, live, defaultLive, selectedId, defaultSelectedId, isLoading, error, columns, onTimeRangeChange, onFiltersChange, onSearchChange, onLiveChange, onSelectedIdChange, onRefresh, onExport, className, children, }: LogsRootProps): import("react").JSX.Element;
@@ -2,6 +2,11 @@ import type { ParsedLogLine } from '../types';
2
2
  export declare function LogsSeverityBadge({ severity }: {
3
3
  severity?: string;
4
4
  }): import("react").JSX.Element;
5
+ /** Compact HTTP status chip, used inline next to the detail title. */
6
+ export declare function LogsHttpStatusChip({ status, className }: {
7
+ status: number;
8
+ className?: string;
9
+ }): import("react").JSX.Element;
5
10
  export declare function LogsStatusBadge({ parsed }: {
6
11
  parsed: ParsedLogLine;
7
12
  }): import("react").JSX.Element;
@@ -0,0 +1,3 @@
1
+ export declare function LogsTimeline({ className }: {
2
+ className?: string;
3
+ }): import("react").JSX.Element;
@@ -1,2 +1,4 @@
1
1
  import type { LokiQueryRangeResponse } from '../types';
2
2
  export declare const queryRangeFixture: LokiQueryRangeResponse;
3
+ /** Staging Envoy OTEL access logs: empty Body, HTTP fields on stream labels. */
4
+ export declare const albQueryRangeFixture: LokiQueryRangeResponse;
@@ -1,4 +1,5 @@
1
+ export { resolveLogColumns } from './components/columns';
1
2
  export { useLogs } from './hooks/use-logs';
2
3
  export { Logs } from './logs';
3
- export type { BuildLogQLOptions, LogColumnId, LogEntry, LogFacet, LogFacetOption, LogFilters, LogsContextValue, LogsRootProps, LogTimeRange, LokiQueryRangeResponse, LokiStream, ParsedHttpLogLine, ParsedLogLine, ParsedTextLogLine, } from './types';
4
- export { buildLogQL, facetsFromEntries, filterEntries, flattenLokiStreams, httpStatusBadgeType, httpStatusTextClass, lastThirtyMinutes, logLineDisplay, nsToDate, parseLogLine, severityBadgeType, } from './utils';
4
+ export type { BuildLogQLOptions, LogColumn, LogColumnCellContext, LogColumnId, LogColumnSize, LogColumnSkeletonContext, LogColumnSpec, LogEntry, LogFacet, LogFacetOption, LogFilters, LogHistogramBucket, LogsContextValue, LogsRootProps, LogTimeRange, LokiQueryRangeResponse, LokiStream, ParsedHttpLogLine, ParsedLogLine, ParsedTextLogLine, } from './types';
5
+ export { buildLogQL, facetsFromEntries, filterEntries, flattenLokiStreams, formatHttpLogLine, histogramFromEntries, httpStatusBadgeType, httpStatusTextClass, lastThirtyMinutes, LOG_TIME_PRESETS, logLineDisplay, logRequestHost, logTimeRangeLabel, logUserAgent, nsToDate, parseLogLine, parseUserAgent, resolveLogTimeRange, searchableLogText, severityBadgeType, splitPathQuery, } from './utils';
@@ -3,6 +3,7 @@ import { LogsExplorer } from './components/explorer';
3
3
  import { LogsFilterGroup, LogsFilters, LogsTimeRangeFilter } from './components/filters';
4
4
  import { LogsRoot } from './components/root';
5
5
  import { LogsTable } from './components/table';
6
+ import { LogsTimeline } from './components/timeline';
6
7
  import { LogsLiveToggle, LogsSearch, LogsToolbar } from './components/toolbar';
7
8
  export declare const Logs: {
8
9
  readonly Root: typeof LogsRoot;
@@ -13,6 +14,7 @@ export declare const Logs: {
13
14
  readonly Toolbar: typeof LogsToolbar;
14
15
  readonly Search: typeof LogsSearch;
15
16
  readonly LiveToggle: typeof LogsLiveToggle;
17
+ readonly Timeline: typeof LogsTimeline;
16
18
  readonly Table: typeof LogsTable;
17
19
  readonly Detail: typeof LogsDetail;
18
20
  };
@@ -31,9 +31,49 @@ export interface LogFacet {
31
31
  export interface LogTimeRange {
32
32
  from: string;
33
33
  to: string;
34
+ /**
35
+ * Key of the relative preset this range came from (e.g. `last-30m`).
36
+ * Absent for hand-picked absolute ranges. Pass through
37
+ * `resolveLogTimeRange` to slide a preset window forward to "now".
38
+ */
39
+ preset?: string;
34
40
  }
35
41
  export type LogFilters = Record<string, string[]>;
36
- export type LogColumnId = 'time' | 'severity' | 'status' | 'service' | 'resource' | 'path' | 'message';
42
+ /** One bar of the timeline histogram. `start` is inclusive, `end` exclusive. */
43
+ export interface LogHistogramBucket {
44
+ start: string;
45
+ end: string;
46
+ count: number;
47
+ }
48
+ export type LogColumnId = 'time' | 'severity' | 'status' | 'service' | 'resource' | 'host' | 'path' | 'message';
49
+ /** How a column behaves in a full-width table. */
50
+ export type LogColumnSize = 'hug' | 'fixed' | 'fill';
51
+ export interface LogColumnCellContext {
52
+ entry: LogEntry;
53
+ parsed: ParsedLogLine;
54
+ path: string | null;
55
+ message: string;
56
+ }
57
+ /**
58
+ * A logs table column. Pass a built-in `LogColumnId` or a custom column
59
+ * so consumers can add Host / Request without CSS overrides.
60
+ */
61
+ export interface LogColumnSkeletonContext {
62
+ row: number;
63
+ }
64
+ export interface LogColumn {
65
+ id: string;
66
+ header: ReactNode;
67
+ size?: LogColumnSize;
68
+ /** Pixel width when `size` is `fixed`. Defaults to 160. */
69
+ width?: number;
70
+ className?: string;
71
+ headerClassName?: string;
72
+ cell: (ctx: LogColumnCellContext) => ReactNode;
73
+ /** Placeholder that mirrors this cell's real content while logs load. */
74
+ skeleton?: (ctx: LogColumnSkeletonContext) => ReactNode;
75
+ }
76
+ export type LogColumnSpec = LogColumnId | LogColumn;
37
77
  export interface ParsedHttpLogLine {
38
78
  kind: 'http';
39
79
  method: string;
@@ -54,6 +94,13 @@ export type LogSeverity = 'DEBUG' | 'INFO' | 'WARN' | 'ERROR' | 'FATAL' | (strin
54
94
  export interface LogsRootProps {
55
95
  entries: readonly LogEntry[];
56
96
  facets?: readonly LogFacet[];
97
+ /**
98
+ * Bucketed counts for `Logs.Timeline`. Supply server-side counts (e.g. a
99
+ * LogQL `count_over_time` range query) so the histogram reflects the whole
100
+ * window rather than the loaded page. Defaults to bucketing `entries`
101
+ * across `timeRange`.
102
+ */
103
+ histogram?: readonly LogHistogramBucket[];
57
104
  timeRange?: LogTimeRange;
58
105
  defaultTimeRange?: LogTimeRange;
59
106
  filters?: LogFilters;
@@ -66,7 +113,7 @@ export interface LogsRootProps {
66
113
  defaultSelectedId?: string | null;
67
114
  isLoading?: boolean;
68
115
  error?: ReactNode;
69
- columns?: readonly LogColumnId[];
116
+ columns?: readonly LogColumnSpec[];
70
117
  onTimeRangeChange?: (range: LogTimeRange) => void;
71
118
  onFiltersChange?: (filters: LogFilters) => void;
72
119
  onSearchChange?: (search: string) => void;
@@ -80,6 +127,7 @@ export interface LogsRootProps {
80
127
  export interface LogsContextValue {
81
128
  entries: readonly LogEntry[];
82
129
  facets: readonly LogFacet[];
130
+ histogram: readonly LogHistogramBucket[];
83
131
  timeRange: LogTimeRange;
84
132
  setTimeRange: (range: LogTimeRange) => void;
85
133
  filters: LogFilters;
@@ -98,7 +146,7 @@ export interface LogsContextValue {
98
146
  selectNext: () => void;
99
147
  isLoading: boolean;
100
148
  error: ReactNode;
101
- columns: readonly LogColumnId[];
149
+ columns: readonly LogColumn[];
102
150
  hasActiveFilters: boolean;
103
151
  onRefresh?: () => void;
104
152
  onExport?: (entries: readonly LogEntry[]) => void;
@@ -0,0 +1,3 @@
1
+ export declare const LOGS_DETAIL_MIN_WIDTH = 400;
2
+ export declare function clampLogsDetailWidth(width: number, maxWidth: number): number;
3
+ export declare function logsDetailMaxWidth(node: HTMLElement | null): number;
@@ -1,3 +1,10 @@
1
1
  import type { LogEntry, LogFacet, LogFilters } from '../types';
2
2
  export declare function facetsFromEntries(entries: readonly LogEntry[], names?: readonly string[]): LogFacet[];
3
3
  export declare function filterEntries(entries: readonly LogEntry[], filters: LogFilters, search?: string): LogEntry[];
4
+ /**
5
+ * Text a search term is matched against: the line, plus the fields the table
6
+ * actually shows for a label-only access log (method, path, status, host).
7
+ * Other labels (request ids, user agents, pod names) are deliberately not
8
+ * searched so a hit is always visible on screen.
9
+ */
10
+ export declare function searchableLogText(entry: LogEntry): string;
@@ -1,3 +1,7 @@
1
+ export declare function formatLogTimestampParts(date: Date): {
2
+ date: string;
3
+ time: string;
4
+ };
1
5
  export declare function formatLogTimestamp(date: Date): string;
2
6
  export declare function formatRelativeTimestamp(date: Date, now?: Date): string;
3
7
  export declare function formatUtcTimestamp(date: Date): string;
@@ -0,0 +1,16 @@
1
+ import type { LogEntry, LogHistogramBucket, LogTimeRange } from '../types';
2
+ export declare const DEFAULT_HISTOGRAM_BUCKETS = 60;
3
+ /**
4
+ * Bucket `entries` into `bucketCount` equal-width bars across `range`.
5
+ * Entries outside the range are ignored. Returns `[]` when the range is
6
+ * invalid or empty so the timeline can fall back to an axis-only state.
7
+ */
8
+ export declare function histogramFromEntries(entries: readonly LogEntry[], range: LogTimeRange, bucketCount?: number): LogHistogramBucket[];
9
+ /** Index of the bucket containing `date`, or `-1`. */
10
+ export declare function histogramBucketIndex(histogram: readonly LogHistogramBucket[], date: Date): number;
11
+ /** Total span covered by a histogram, in ms. `0` when empty. */
12
+ export declare function histogramSpanMs(histogram: readonly LogHistogramBucket[]): number;
13
+ /** Axis tick label whose precision follows the span being displayed. */
14
+ export declare function formatTimelineTick(date: Date, spanMs: number): string;
15
+ /** Tooltip text for a bucket: count plus its window. */
16
+ export declare function formatBucketSummary(bucket: LogHistogramBucket, spanMs: number): string;
@@ -0,0 +1,7 @@
1
+ /**
2
+ * Host shown for an HTTP access log. An explicit `host` label (set by the
3
+ * host app) wins; otherwise prefer the name the client asked for
4
+ * (`requested_server_name`, `x_forwarded_host`) over the upstream
5
+ * `authority`, then fall back to `resource_name`.
6
+ */
7
+ export declare function logRequestHost(labels: Record<string, string>): string | undefined;
@@ -1,8 +1,12 @@
1
1
  export { buildLogQL } from './build-logql';
2
2
  export { CANONICAL_FACET_NAMES, DEFAULT_LOG_COLUMNS, DEFAULT_LOGQL_MATCHER, FACET_LABELS, SEVERITY_ORDER, } from './constants';
3
- export { facetsFromEntries, filterEntries } from './facets';
3
+ export { facetsFromEntries, filterEntries, searchableLogText } from './facets';
4
4
  export { flattenLokiStreams, nsToDate } from './flatten-loki';
5
- export { formatLocalTimestamp, formatLogTimestamp, formatRelativeTimestamp, formatUtcTimestamp, } from './format-timestamp';
6
- export { logLineDisplay, parseLogLine } from './parse-log-line';
5
+ export { formatLocalTimestamp, formatLogTimestamp, formatLogTimestampParts, formatRelativeTimestamp, formatUtcTimestamp, } from './format-timestamp';
6
+ export { DEFAULT_HISTOGRAM_BUCKETS, formatBucketSummary, formatTimelineTick, histogramBucketIndex, histogramFromEntries, histogramSpanMs, } from './histogram';
7
+ export { logRequestHost } from './host';
8
+ export { formatHttpLogLine, logLineDisplay, parseLogLine, splitPathQuery } from './parse-log-line';
7
9
  export { httpStatusBadgeType, httpStatusTextClass, severityBadgeType } from './severity';
8
- export { filtersAreActive, lastThirtyMinutes } from './time-range';
10
+ export { filtersAreActive, lastThirtyMinutes, LOG_TIME_PRESETS, logTimeRangeLabel, resolveLogTimeRange, } from './time-range';
11
+ export { logUserAgent, parseUserAgent } from './user-agent';
12
+ export type { ParsedUserAgent, UserAgentDevice } from './user-agent';
@@ -1,6 +1,20 @@
1
- import type { ParsedLogLine } from '../types';
2
- export declare function parseLogLine(line: string): ParsedLogLine;
3
- export declare function logLineDisplay(line: string): {
1
+ import type { ParsedHttpLogLine, ParsedLogLine } from '../types';
2
+ /**
3
+ * Parse an access-log line, falling back to Envoy/OTEL stream labels when the
4
+ * body is empty (queryapi stores method/path/status as attributes).
5
+ */
6
+ export declare function parseLogLine(line: string, labels?: Record<string, string>): ParsedLogLine;
7
+ export declare function formatHttpLogLine(parsed: ParsedHttpLogLine): string;
8
+ export interface SplitPath {
9
+ pathname: string;
10
+ /** Raw query string without the leading `?`, or `''`. */
11
+ search: string;
12
+ /** Decoded key/value pairs in order of appearance; repeated keys are kept. */
13
+ params: Array<[key: string, value: string]>;
14
+ }
15
+ /** Separate `/a/b?x=1&y=2` into its pathname and decoded search params. */
16
+ export declare function splitPathQuery(path: string): SplitPath;
17
+ export declare function logLineDisplay(line: string, labels?: Record<string, string>): {
4
18
  parsed: ParsedLogLine;
5
19
  path: string | null;
6
20
  message: string;
@@ -1,3 +1,22 @@
1
+ import type { PickerPreset } from '../../picker/types';
1
2
  import type { LogTimeRange } from '../types';
3
+ /**
4
+ * Relative "Last N" windows offered by `Logs.Filters`. Keys are persisted on
5
+ * `LogTimeRange.preset` so hosts can slide the window forward with
6
+ * `resolveLogTimeRange` on refresh or while live tailing.
7
+ *
8
+ * Shortcuts follow the `picker` datetime presets (`1` / `2` / `H` / `W`) that
9
+ * the logs picker is built on. Keys that mean something else in the pickers
10
+ * (`3` is "Last 30 minutes" in `time-range-picker`, `D` is "Today") are not
11
+ * reused, so muscle memory carries over between the two.
12
+ */
13
+ export declare const LOG_TIME_PRESETS: readonly PickerPreset[];
2
14
  export declare function lastThirtyMinutes(now?: Date): LogTimeRange;
15
+ /**
16
+ * Re-anchor a preset range to `now`. Absolute ranges (no `preset`, or an
17
+ * unknown key) are returned unchanged.
18
+ */
19
+ export declare function resolveLogTimeRange(range: LogTimeRange, now?: Date): LogTimeRange;
20
+ /** Human label for the time-range trigger: preset name, or a compact absolute range. */
21
+ export declare function logTimeRangeLabel(range: LogTimeRange): string;
3
22
  export declare function filtersAreActive(filters: Record<string, string[]>): boolean;
@@ -0,0 +1,25 @@
1
+ export type UserAgentDevice = 'desktop' | 'mobile' | 'tablet' | 'bot' | 'unknown';
2
+ export interface ParsedUserAgent {
3
+ /** Browser or client name, e.g. "Chrome", "Safari", "curl". */
4
+ browser?: string;
5
+ /** Major version of the browser or client, e.g. "128". */
6
+ browserVersion?: string;
7
+ /** Operating system, e.g. "macOS", "iOS", "Android", "Windows". */
8
+ os?: string;
9
+ /** OS version where it is meaningful (iOS, Android). Desktop OS versions are frozen or ambiguous in UA strings. */
10
+ osVersion?: string;
11
+ device: UserAgentDevice;
12
+ /** Human summary such as "Chrome 128 on macOS" or "curl 8.7". */
13
+ summary: string;
14
+ raw: string;
15
+ }
16
+ /** The User-Agent header from an entry's labels, if any. */
17
+ export declare function logUserAgent(labels: Record<string, string>): string | undefined;
18
+ /**
19
+ * Parse a User-Agent header into browser, OS and device type. Deliberately
20
+ * small: it recognises the mainstream browsers, mobile platforms, common
21
+ * command-line / SDK clients, and anything that calls itself a bot. Returns
22
+ * `null` for an empty string; unrecognised strings still return `summary`
23
+ * as the raw value with `device: 'unknown'`.
24
+ */
25
+ export declare function parseUserAgent(raw: string): ParsedUserAgent | null;
@@ -1,2 +1,2 @@
1
- import { _ as useNuqsAdapter, a as useDataTablePagination, b as DEFAULT_PAGE_SIZE, c as useDataTableSelection, d as resolvePath, f as rowMatchesSearch, g as createSelectionColumn, h as DataTableColumnHeader, i as useDataTableLoading, l as useDataTableSorting, m as DataTableRowActions, n as useDataTableFilters, o as useDataTableRows, p as dataTableFeatures, r as useDataTableInlineContents, s as useDataTableSearch, t as DataTable, u as createDataTableStore, v as DEFAULT_DEBOUNCE_MS, x as DEFAULT_PAGE_SIZES, y as DEFAULT_LOADING_ROWS } from "../data-table-C37OD6_4.mjs";
1
+ import { _ as useNuqsAdapter, a as useDataTablePagination, b as DEFAULT_PAGE_SIZE, c as useDataTableSelection, d as resolvePath, f as rowMatchesSearch, g as createSelectionColumn, h as DataTableColumnHeader, i as useDataTableLoading, l as useDataTableSorting, m as DataTableRowActions, n as useDataTableFilters, o as useDataTableRows, p as dataTableFeatures, r as useDataTableInlineContents, s as useDataTableSearch, t as DataTable, u as createDataTableStore, v as DEFAULT_DEBOUNCE_MS, x as DEFAULT_PAGE_SIZES, y as DEFAULT_LOADING_ROWS } from "../data-table-BaWOHdZX.mjs";
2
2
  export { DEFAULT_DEBOUNCE_MS, DEFAULT_LOADING_ROWS, DEFAULT_PAGE_SIZE, DEFAULT_PAGE_SIZES, DataTable, DataTableColumnHeader, DataTableRowActions, createDataTableStore, createSelectionColumn, dataTableFeatures, resolvePath, rowMatchesSearch, useDataTableFilters, useDataTableInlineContents, useDataTableLoading, useDataTablePagination, useDataTableRows, useDataTableSearch, useDataTableSelection, useDataTableSorting, useNuqsAdapter };
@@ -8,7 +8,7 @@ import { i as SelectItem, l as SelectTrigger, n as SelectContent, t as Select, u
8
8
  import { Skeleton } from "./skeleton/index.mjs";
9
9
  import { Table, TableBody, TableCell, TableHead, TableHeader, TableRow } from "./table/index.mjs";
10
10
  import { t as Autocomplete } from "./autocomplete-BxtzndxZ.mjs";
11
- import { t as CalendarDatePicker } from "./calendar-date-picker-Cl4lIDl5.mjs";
11
+ import { t as CalendarDatePicker } from "./calendar-date-picker-bpTUcGu_.mjs";
12
12
  import { t as ActionRow } from "./action-row-DTvs91_3.mjs";
13
13
  import { n as useDebouncedSearchInput } from "./use-debounced-search-input-yu_F0QBt.mjs";
14
14
  import { t as MultiSelect } from "./multi-select-CH8KERkt.mjs";
@@ -1,4 +1,4 @@
1
- import { M as getBrowserTimezone, N as getTimezoneOffset, j as formatTimezoneLabel } from "../date-time-range-picker-CQQLACgN.mjs";
2
- import { t as CalendarDatePicker } from "../calendar-date-picker-Cl4lIDl5.mjs";
3
- import { _ as getShortTimezoneDisplay, a as TimeRangePicker, b as utcToLocalInputString, c as getPresetByKey, d as TimezoneSelector, f as QuickRangesPanel, g as getDefaultTimezoneOptions, h as formatUtcForDisplay, i as formatTimeRangeDisplay, l as getPresetByShortcut, m as createTimezoneOption, n as formatDateForInput, o as DEFAULT_PRESETS, p as CustomRangePanel, r as formatSingleTimeDisplay, s as getDefaultPreset, t as toApiTimeRange, u as getPresetRange, v as localInputStringToUtc, x as zonedDateToUtcString, y as utcStringToZonedDate } from "../to-api-format-BzKfX7yo.mjs";
1
+ import { M as getBrowserTimezone, N as getTimezoneOffset, j as formatTimezoneLabel } from "../date-time-range-picker-DlFTh3DF.mjs";
2
+ import { t as CalendarDatePicker } from "../calendar-date-picker-bpTUcGu_.mjs";
3
+ import { _ as getShortTimezoneDisplay, a as TimeRangePicker, b as utcToLocalInputString, c as getPresetByKey, d as TimezoneSelector, f as QuickRangesPanel, g as getDefaultTimezoneOptions, h as formatUtcForDisplay, i as formatTimeRangeDisplay, l as getPresetByShortcut, m as createTimezoneOption, n as formatDateForInput, o as DEFAULT_PRESETS, p as CustomRangePanel, r as formatSingleTimeDisplay, s as getDefaultPreset, t as toApiTimeRange, u as getPresetRange, v as localInputStringToUtc, x as zonedDateToUtcString, y as utcStringToZonedDate } from "../to-api-format-Bm1VcKkS.mjs";
4
4
  export { CustomRangePanel as AbsoluteRangePanel, CustomRangePanel, CalendarDatePicker, DEFAULT_PRESETS, QuickRangesPanel, TimeRangePicker, TimezoneSelector, createTimezoneOption, formatDateForInput, formatSingleTimeDisplay, formatTimeRangeDisplay, formatTimezoneLabel, formatUtcForDisplay, getBrowserTimezone, getDefaultPreset, getDefaultTimezoneOptions, getPresetByKey, getPresetByShortcut, getPresetRange, getShortTimezoneDisplay, getTimezoneOffset, localInputStringToUtc, toApiTimeRange, utcStringToZonedDate, utcToLocalInputString, zonedDateToUtcString };
@@ -1,2 +1,2 @@
1
- import { a as formatRelativeDate, c as getTimestamp, i as formatCombinedDate, l as getTimezoneAbbreviation, n as DEFAULT_DATE_FORMAT, o as formatTimezoneDate, r as formatAbsoluteDate, s as formatUTCDate, t as DateTime, u as parseDate } from "../date-time-BmYjT5vd.mjs";
1
+ import { a as formatRelativeDate, d as parseDate, i as formatCombinedDate, l as getTimestamp, n as DEFAULT_DATE_FORMAT, o as formatTimezoneDate, r as formatAbsoluteDate, s as formatUTCDate, t as DateTime, u as getTimezoneAbbreviation } from "../date-time-lZdefM4H.mjs";
2
2
  export { DEFAULT_DATE_FORMAT, DateTime, formatAbsoluteDate, formatCombinedDate, formatRelativeDate, formatTimezoneDate, formatUTCDate, getTimestamp, getTimezoneAbbreviation, parseDate };
@@ -131,4 +131,4 @@ function getTooltipContent(date, variant, tooltip, options, timeZone, timestamp)
131
131
  return null;
132
132
  }
133
133
  //#endregion
134
- export { formatRelativeDate as a, getTimestamp as c, formatCombinedDate as i, getTimezoneAbbreviation as l, DEFAULT_DATE_FORMAT as n, formatTimezoneDate as o, formatAbsoluteDate as r, formatUTCDate as s, DateTime as t, parseDate as u };
134
+ export { formatRelativeDate as a, getBrowserTimezone as c, parseDate as d, formatCombinedDate as i, getTimestamp as l, DEFAULT_DATE_FORMAT as n, formatTimezoneDate as o, formatAbsoluteDate as r, formatUTCDate as s, DateTime as t, getTimezoneAbbreviation as u };
@@ -1,2 +1,2 @@
1
- import { t as DateTimePicker } from "../date-time-picker-DlaSizpS.mjs";
1
+ import { t as DateTimePicker } from "../date-time-picker-Bd7qSZVr.mjs";
2
2
  export { DateTimePicker };
@@ -1,5 +1,5 @@
1
1
  import { t as useDeprecationWarning } from "./use-deprecation-warning-DXrGc0jX.mjs";
2
- import { r as DateTimePicker$1 } from "./picker-Bbjl9FOq.mjs";
2
+ import { r as DateTimePicker$1 } from "./picker-DbKukBkk.mjs";
3
3
  import { jsx } from "react/jsx-runtime";
4
4
  //#region src/components/features/date-time-picker/date-time-picker.tsx
5
5
  /**
@@ -399,7 +399,7 @@ function PickerPresets({ className }) {
399
399
  actions.selectPreset(range, preset.key);
400
400
  },
401
401
  children: [/* @__PURE__ */ jsx("span", { children: preset.label }), preset.shortcut && /* @__PURE__ */ jsx("kbd", {
402
- className: "bg-muted ml-auto hidden rounded border px-1.5 font-mono text-[10px] sm:inline-flex",
402
+ className: cn("ml-auto hidden rounded border px-1.5 font-mono text-[10px] sm:inline-flex", isSelected ? "border-primary-foreground/30 bg-primary-foreground/15 text-primary-foreground" : "bg-muted text-muted-foreground"),
403
403
  children: preset.shortcut
404
404
  })]
405
405
  }, preset.key);
@@ -529,6 +529,15 @@ function formatTimeLabel(time, hourCycle) {
529
529
  }
530
530
  //#endregion
531
531
  //#region src/components/features/picker/hooks/use-picker-state.ts
532
+ /**
533
+ * Preset key carried on a range value (`{ from, to, preset }`), so a value
534
+ * hydrated from props / URL highlights its preset chip.
535
+ */
536
+ function presetKeyOf(value) {
537
+ if (typeof value !== "object" || value === null) return void 0;
538
+ const preset = value.preset;
539
+ return typeof preset === "string" ? preset : void 0;
540
+ }
532
541
  function reducer(state, action) {
533
542
  switch (action.type) {
534
543
  case "SET_SINGLE_DATE":
@@ -567,7 +576,7 @@ function reducer(state, action) {
567
576
  case "RESET_TO": return {
568
577
  ...state,
569
578
  pendingValue: action.payload,
570
- selectedPresetKey: void 0
579
+ selectedPresetKey: presetKeyOf(action.payload)
571
580
  };
572
581
  case "CLEAR_PRESET": return {
573
582
  ...state,
@@ -632,7 +641,7 @@ function usePickerState({ mode, value, onChange, commit, timezone }) {
632
641
  const [state, dispatch] = useReducer(reducer, void 0, () => ({
633
642
  pendingValue: value,
634
643
  open: false,
635
- selectedPresetKey: void 0,
644
+ selectedPresetKey: presetKeyOf(value),
636
645
  monthFrom: void 0,
637
646
  monthTo: void 0
638
647
  }));
@@ -1,3 +1,3 @@
1
- import { A as FormCheckbox, C as FormDialog, D as FormCustom, E as FormDatePicker, M as FormAutosearch, N as FormAutocomplete, O as FormCopyBox, S as FormError, T as FormDateTimePicker, _ as FormRadioGroup, a as useField, b as FormFieldArray, c as useWatchAll, d as FormTextarea, f as FormSwitch, g as FormRoot, h as FormSelectItem, i as useFieldContext, j as FormButton, k as FormCombobox, l as FormTransfer, m as FormSelect, n as useFormState, o as FormWhen, p as FormSubmit, r as useFormContext, s as useWatch, t as Form, u as FormTimePicker, v as FormRadioItem, w as FormDescription, x as FormField, y as FormInput } from "../form-DDtBJ3Dj.mjs";
1
+ import { A as FormCheckbox, C as FormDialog, D as FormCustom, E as FormDatePicker, M as FormAutosearch, N as FormAutocomplete, O as FormCopyBox, S as FormError, T as FormDateTimePicker, _ as FormRadioGroup, a as useField, b as FormFieldArray, c as useWatchAll, d as FormTextarea, f as FormSwitch, g as FormRoot, h as FormSelectItem, i as useFieldContext, j as FormButton, k as FormCombobox, l as FormTransfer, m as FormSelect, n as useFormState, o as FormWhen, p as FormSubmit, r as useFormContext, s as useWatch, t as Form, u as FormTimePicker, v as FormRadioItem, w as FormDescription, x as FormField, y as FormInput } from "../form-BKxvdIKB.mjs";
2
2
  import { n as useAdapter, t as FormAdapterProvider } from "../adapter-context-h0jCVqGO.mjs";
3
3
  export { Form, FormAdapterProvider, FormAutocomplete, FormAutosearch, FormButton, FormCheckbox, FormCombobox, FormCopyBox, FormCustom, FormDatePicker, FormDateTimePicker, FormDescription, FormDialog, FormError, FormField, FormFieldArray, FormInput, FormRadioGroup, FormRadioItem, FormRoot, FormSelect, FormSelectItem, FormSubmit, FormSwitch, FormTextarea, FormTimePicker, FormTransfer, FormWhen, useAdapter, useField, useFieldContext, useFormContext, useFormState, useWatch, useWatchAll };
@@ -13,14 +13,14 @@ import { t as Switch } from "./switch-Z2pJMckf.mjs";
13
13
  import { t as Textarea } from "./textarea-B6YhjFVC.mjs";
14
14
  import { t as Autocomplete } from "./autocomplete-BxtzndxZ.mjs";
15
15
  import { Autosearch } from "./autosearch/index.mjs";
16
- import { t as CalendarDatePicker } from "./calendar-date-picker-Cl4lIDl5.mjs";
16
+ import { t as CalendarDatePicker } from "./calendar-date-picker-bpTUcGu_.mjs";
17
17
  import { t as toast } from "./toast-BUPlDkN3.mjs";
18
- import { t as DateTimePicker } from "./date-time-picker-DlaSizpS.mjs";
18
+ import { t as DateTimePicker } from "./date-time-picker-Bd7qSZVr.mjs";
19
19
  import { n as useFormContext$1, t as FormProvider } from "./form-context-DzB2a-dw.mjs";
20
20
  import { t as useCopyToClipboard } from "./use-copy-to-clipboard-DZDq_85T.mjs";
21
21
  import { n as useAdapter } from "./adapter-context-h0jCVqGO.mjs";
22
22
  import { InputWithAddons } from "./input-with-addons/index.mjs";
23
- import { t as TimePicker } from "./time-picker-CoUqZCb7.mjs";
23
+ import { t as TimePicker } from "./time-picker-rVTkmbIG.mjs";
24
24
  import { t as Transfer } from "./transfer-DsshYgIk.mjs";
25
25
  import { CheckIcon, CircleHelp, CopyIcon } from "lucide-react";
26
26
  import * as React from "react";
@@ -1,2 +1,2 @@
1
- import { t as GroupedTable } from "../grouped-table-DImzzehJ.mjs";
1
+ import { t as GroupedTable } from "../grouped-table-DWtEx18V.mjs";
2
2
  export { GroupedTable };
@@ -6,7 +6,7 @@ import { t as useControllableState } from "./use-controllable-state-Dna7u3r9.mjs
6
6
  import { Skeleton } from "./skeleton/index.mjs";
7
7
  import { TableBody, TableCell, TableHead, TableHeader, TableRow } from "./table/index.mjs";
8
8
  import { n as EASE } from "./motion-DvGRWdsm.mjs";
9
- import { f as rowMatchesSearch, g as createSelectionColumn, h as DataTableColumnHeader, m as DataTableRowActions, p as dataTableFeatures } from "./data-table-C37OD6_4.mjs";
9
+ import { f as rowMatchesSearch, g as createSelectionColumn, h as DataTableColumnHeader, m as DataTableRowActions, p as dataTableFeatures } from "./data-table-BaWOHdZX.mjs";
10
10
  import { n as useDebouncedSearchInput } from "./use-debounced-search-input-yu_F0QBt.mjs";
11
11
  import { InputWithAddons } from "./input-with-addons/index.mjs";
12
12
  import { ChevronRight, Search, X } from "lucide-react";
package/dist/index.mjs CHANGED
@@ -48,29 +48,29 @@ import { t as LoaderOverlay } from "./loader-overlay-DD94azZX.mjs";
48
48
  import { t as Autocomplete } from "./autocomplete-BxtzndxZ.mjs";
49
49
  import { Autosearch, defaultAutosearchValue } from "./autosearch/index.mjs";
50
50
  import { n as avatarStackVariants, t as AvatarStack } from "./avatar-stack-BUcsjhA6.mjs";
51
- import { M as getBrowserTimezone, N as getTimezoneOffset, j as formatTimezoneLabel } from "./date-time-range-picker-CQQLACgN.mjs";
52
- import { t as CalendarDatePicker } from "./calendar-date-picker-Cl4lIDl5.mjs";
51
+ import { M as getBrowserTimezone, N as getTimezoneOffset, j as formatTimezoneLabel } from "./date-time-range-picker-DlFTh3DF.mjs";
52
+ import { t as CalendarDatePicker } from "./calendar-date-picker-bpTUcGu_.mjs";
53
53
  import { i as ClientOnly, n as useTheme, r as ThemeScript, t as ThemeProvider } from "./themes-Ba2bajuF.mjs";
54
54
  import { a as formatJson, c as isValidYaml, d as CodeEditor, i as CodeEditorTabs, l as jsonToYaml, n as jsonSchema, o as formatYaml, r as yamlSchema, s as isValidJson, t as createCodeEditorSchema, u as yamlToJson } from "./types-agDpVXBG.mjs";
55
55
  import { t as toast } from "./toast-BUPlDkN3.mjs";
56
56
  import { n as Toaster, t as useToast } from "./use-toast-Bpq0yJIT.mjs";
57
- import { _ as useNuqsAdapter, a as useDataTablePagination, b as DEFAULT_PAGE_SIZE, c as useDataTableSelection, d as resolvePath, f as rowMatchesSearch, g as createSelectionColumn, h as DataTableColumnHeader, i as useDataTableLoading, l as useDataTableSorting, m as DataTableRowActions, n as useDataTableFilters, o as useDataTableRows, p as dataTableFeatures, r as useDataTableInlineContents, s as useDataTableSearch, t as DataTable, u as createDataTableStore, v as DEFAULT_DEBOUNCE_MS, x as DEFAULT_PAGE_SIZES, y as DEFAULT_LOADING_ROWS } from "./data-table-C37OD6_4.mjs";
57
+ import { _ as useNuqsAdapter, a as useDataTablePagination, b as DEFAULT_PAGE_SIZE, c as useDataTableSelection, d as resolvePath, f as rowMatchesSearch, g as createSelectionColumn, h as DataTableColumnHeader, i as useDataTableLoading, l as useDataTableSorting, m as DataTableRowActions, n as useDataTableFilters, o as useDataTableRows, p as dataTableFeatures, r as useDataTableInlineContents, s as useDataTableSearch, t as DataTable, u as createDataTableStore, v as DEFAULT_DEBOUNCE_MS, x as DEFAULT_PAGE_SIZES, y as DEFAULT_LOADING_ROWS } from "./data-table-BaWOHdZX.mjs";
58
58
  import { t as ActionRow } from "./action-row-DTvs91_3.mjs";
59
59
  import { n as useDebouncedSearchInput, t as DEFAULT_SEARCH_DEBOUNCE_MS } from "./use-debounced-search-input-yu_F0QBt.mjs";
60
60
  import { t as MultiSelect } from "./multi-select-CH8KERkt.mjs";
61
- import { a as formatRelativeDate, c as getTimestamp, i as formatCombinedDate, l as getTimezoneAbbreviation, n as DEFAULT_DATE_FORMAT, o as formatTimezoneDate, r as formatAbsoluteDate, s as formatUTCDate, t as DateTime, u as parseDate } from "./date-time-BmYjT5vd.mjs";
62
- import { t as DateTimePicker } from "./date-time-picker-DlaSizpS.mjs";
61
+ import { a as formatRelativeDate, d as parseDate, i as formatCombinedDate, l as getTimestamp, n as DEFAULT_DATE_FORMAT, o as formatTimezoneDate, r as formatAbsoluteDate, s as formatUTCDate, t as DateTime, u as getTimezoneAbbreviation } from "./date-time-lZdefM4H.mjs";
62
+ import { t as DateTimePicker } from "./date-time-picker-Bd7qSZVr.mjs";
63
63
  import { a as DropdownMenuItem, c as DropdownMenuRadioGroup, d as DropdownMenuShortcut, f as DropdownMenuSub, h as DropdownMenuTrigger, i as DropdownMenuGroup, l as DropdownMenuRadioItem, m as DropdownMenuSubTrigger, n as DropdownMenuCheckboxItem, o as DropdownMenuLabel, p as DropdownMenuSubContent, r as DropdownMenuContent, s as DropdownMenuPortal, t as DropdownMenu, u as DropdownMenuSeparator } from "./dropdown-Xvduih96.mjs";
64
64
  import { i as FileInputButton, n as DropzoneContent, r as DropzoneEmptyState, t as Dropzone } from "./dropzone-ihksfjN2.mjs";
65
65
  import { t as EmptyContent } from "./empty-content-CmuVcU0P.mjs";
66
- import { A as FormCheckbox, C as FormDialog, D as FormCustom, E as FormDatePicker, M as FormAutosearch, N as FormAutocomplete, O as FormCopyBox, S as FormError, T as FormDateTimePicker, _ as FormRadioGroup, a as useField, b as FormFieldArray, c as useWatchAll, d as FormTextarea, f as FormSwitch, g as FormRoot, h as FormSelectItem, i as useFieldContext, j as FormButton, k as FormCombobox, l as FormTransfer, m as FormSelect, n as useFormState, o as FormWhen, p as FormSubmit, r as useFormContext, s as useWatch, t as Form, u as FormTimePicker, v as FormRadioItem, w as FormDescription, x as FormField, y as FormInput } from "./form-DDtBJ3Dj.mjs";
66
+ import { A as FormCheckbox, C as FormDialog, D as FormCustom, E as FormDatePicker, M as FormAutosearch, N as FormAutocomplete, O as FormCopyBox, S as FormError, T as FormDateTimePicker, _ as FormRadioGroup, a as useField, b as FormFieldArray, c as useWatchAll, d as FormTextarea, f as FormSwitch, g as FormRoot, h as FormSelectItem, i as useFieldContext, j as FormButton, k as FormCombobox, l as FormTransfer, m as FormSelect, n as useFormState, o as FormWhen, p as FormSubmit, r as useFormContext, s as useWatch, t as Form, u as FormTimePicker, v as FormRadioItem, w as FormDescription, x as FormField, y as FormInput } from "./form-BKxvdIKB.mjs";
67
67
  import { t as useCopyToClipboard } from "./use-copy-to-clipboard-DZDq_85T.mjs";
68
68
  import { n as useAdapter, t as FormAdapterProvider } from "./adapter-context-h0jCVqGO.mjs";
69
69
  import { InputWithAddons } from "./input-with-addons/index.mjs";
70
- import { t as TimePicker } from "./time-picker-CoUqZCb7.mjs";
70
+ import { t as TimePicker } from "./time-picker-rVTkmbIG.mjs";
71
71
  import { t as Transfer } from "./transfer-DsshYgIk.mjs";
72
72
  import { a as getResponsiveValue, c as GRID_COLUMNS, d as RESPONSIVE_MAP, i as getGutter, l as GRID_PREFIX, n as Row, o as registerMediaQuery, r as RowContext, s as GRID_BREAKPOINTS, t as Col, u as RESPONSIVE_ARRAY } from "./col-BYGWTB4j.mjs";
73
- import { t as GroupedTable } from "./grouped-table-DImzzehJ.mjs";
73
+ import { t as GroupedTable } from "./grouped-table-DWtEx18V.mjs";
74
74
  import { t as InputNumber } from "./input-number-TXmW-X9o.mjs";
75
75
  import { a as logoStyles, i as LogoFlat, n as LogoStacked, r as LogoIcon, t as LogoText } from "./logo-text-Dpm5O6Kg.mjs";
76
76
  import { t as Logo } from "./logo-C3FxD7jb.mjs";
@@ -81,7 +81,7 @@ import { n as useRichTextEditor, r as RichTextContent, t as RichTextEditor } fro
81
81
  import { t as defineStepper } from "./stepper-dNvkipop.mjs";
82
82
  import { t as TagsInput } from "./tag-input-Ctxtcpwy.mjs";
83
83
  import { _ as RedisTaskStorage, a as TaskPanelItem, b as createProjectMetadata, c as TaskPanelHeader, d as useCurrentScope, f as useTasksWithLabels, g as detectStorage, h as TaskQueue, i as TaskPanel, l as getContextLabel, m as TaskQueueProvider, n as TaskSummaryDialog, o as TaskPanelCounter, p as useTaskQueue, r as TaskQueueTrigger, s as TaskPanelActions, t as TaskQueueDropdown, u as matchesCurrentScope, v as LocalTaskStorage, x as createUserMetadata, y as createOrgMetadata } from "./task-queue-dropdown-BJS3snfZ.mjs";
84
- import { _ as getShortTimezoneDisplay, a as TimeRangePicker, b as utcToLocalInputString, c as getPresetByKey, d as TimezoneSelector, f as QuickRangesPanel, g as getDefaultTimezoneOptions, h as formatUtcForDisplay, i as formatTimeRangeDisplay, l as getPresetByShortcut, m as createTimezoneOption, n as formatDateForInput, o as DEFAULT_PRESETS, p as CustomRangePanel, r as formatSingleTimeDisplay, s as getDefaultPreset, t as toApiTimeRange, u as getPresetRange, v as localInputStringToUtc, x as zonedDateToUtcString, y as utcStringToZonedDate } from "./to-api-format-BzKfX7yo.mjs";
84
+ import { _ as getShortTimezoneDisplay, a as TimeRangePicker, b as utcToLocalInputString, c as getPresetByKey, d as TimezoneSelector, f as QuickRangesPanel, g as getDefaultTimezoneOptions, h as formatUtcForDisplay, i as formatTimeRangeDisplay, l as getPresetByShortcut, m as createTimezoneOption, n as formatDateForInput, o as DEFAULT_PRESETS, p as CustomRangePanel, r as formatSingleTimeDisplay, s as getDefaultPreset, t as toApiTimeRange, u as getPresetRange, v as localInputStringToUtc, x as zonedDateToUtcString, y as utcStringToZonedDate } from "./to-api-format-Bm1VcKkS.mjs";
85
85
  import { t as useDebounce } from "./hooks-CwZ6hyI1.mjs";
86
86
  import { n as toUTCTimestampStartOfDay, t as toUTCTimestampEndOfDay } from "./utils-CA4QEIJ8.mjs";
87
87
  export { CustomRangePanel as AbsoluteRangePanel, CustomRangePanel, ActionRow, Alert, AlertDescription, AlertTitle, AppNavigation, Autocomplete, Autosearch, Avatar, AvatarFallback, AvatarImage, AvatarStack, Badge, Blockquote, Breadcrumb, BreadcrumbEllipsis, BreadcrumbItem, BreadcrumbLink, BreadcrumbList, BreadcrumbPage, BreadcrumbSeparator, Button, ButtonGroup, ButtonGroupSeparator, ButtonGroupText, Calendar, CalendarDatePicker, CalendarDayButton, Card, CardContent, CardDescription, CardFooter, CardHeader, CardTitle, ChartContainer, ChartLegend, ChartLegendContent, ChartStyle, ChartTooltip, ChartTooltipContent, Checkbox, ClientOnly, CloseIcon, Code, CodeEditor, CodeEditorTabs, Col, Collapsible, CollapsibleContent, CollapsibleTrigger, Command, CommandDialog, CommandEmpty, CommandGroup, CommandInput, CommandItem, CommandList, CommandSeparator, CommandShortcut, DEFAULT_DATE_FORMAT, DEFAULT_DEBOUNCE_MS, DEFAULT_LOADING_ROWS, DEFAULT_PAGE_SIZE, DEFAULT_PAGE_SIZES, DEFAULT_PRESETS, DEFAULT_SEARCH_DEBOUNCE_MS, DURATION, DataTable, DataTableColumnHeader, DataTableRowActions, DateTime, DateTimePicker, Dialog, DropdownMenu, DropdownMenuCheckboxItem, DropdownMenuContent, DropdownMenuGroup, DropdownMenuItem, DropdownMenuLabel, DropdownMenuPortal, DropdownMenuRadioGroup, DropdownMenuRadioItem, DropdownMenuSeparator, DropdownMenuShortcut, DropdownMenuSub, DropdownMenuSubContent, DropdownMenuSubTrigger, DropdownMenuTrigger, Dropzone, DropzoneContent, DropzoneEmptyState, EASE, EmptyContent, FileInputButton, Form, FormAdapterProvider, FormAutocomplete, FormAutosearch, FormButton, FormCheckbox, FormCombobox, FormCopyBox, FormCustom, FormDatePicker, FormDateTimePicker, FormDescription, FormDialog, FormError, FormField, FormFieldArray, FormInput, FormRadioGroup, FormRadioItem, FormRoot, FormSelect, FormSelectItem, FormSubmit, FormSwitch, FormTextarea, FormTimePicker, FormTransfer, FormWhen, GRID_BREAKPOINTS, GRID_COLUMNS, GRID_PREFIX, GroupedTable, HoverCard, HoverCardContent, HoverCardTrigger, Icon, InSheetContext, Input, InputGroup, InputGroupAddon, InputGroupButton, InputGroupInput, InputGroupText, InputGroupTextarea, InputNumber, InputWithAddons, Label, Link, LinkButton, List, ListItem, LoaderOverlay, LocalTaskStorage, Logo, LogoFlat, LogoIcon, LogoStacked, LogoText, Map, MapCircle, MapCircleMarker, MapControlContainer, MapDrawCircle, MapDrawControl, MapDrawDelete, MapDrawEdit, MapDrawMarker, MapDrawPolygon, MapDrawPolyline, MapDrawRectangle, MapDrawUndo, MapFeatureGroup, MapFullscreenControl, MapLayerGroup, MapLayers, MapLayersControl, MapLocateControl, MapMarker, MapMarkerClusterGroup, MapPolygon, MapPolyline, MapPopup, MapRectangle, MapSearchControl, MapTileLayer, MapTooltip, MapZoomControl, MobileSheet, MoreActions, MultiSelect, NavMenu, NavMenuItem, PageTitle, Paragraph, PlaceAutocomplete, Popover, PopoverAnchor, PopoverContent, PopoverTrigger, QuickRangesPanel, RESPONSIVE_ARRAY, RESPONSIVE_MAP, RadioGroup, RadioGroupItem, RedisTaskStorage, ResponsiveDropdown, ResponsivePopover, ResponsiveSheetTrigger, RichTextContent, RichTextEditor, Row, RowContext, Select, SelectContent, SelectGroup, SelectItem, SelectLabel, SelectScrollDownButton, SelectScrollUpButton, SelectSeparator, SelectTrigger, SelectValue, Separator, Sheet, SheetClose, SheetContent, SheetDescription, SheetFooter, SheetHeader, SheetOverlay, SheetTitle, SheetTrigger, Sidebar, SidebarContent, SidebarFooter, SidebarGroup, SidebarGroupAction, SidebarGroupContent, SidebarGroupLabel, SidebarHeader, SidebarInput, SidebarInset, SidebarMenu, SidebarMenuAction, SidebarMenuBadge, SidebarMenuButton, SidebarMenuItem, SidebarMenuSkeleton, SidebarMenuSub, SidebarMenuSubButton, SidebarMenuSubItem, SidebarProvider, SidebarRail, SidebarSeparator, SidebarTrigger, Skeleton, Spinner, SpinnerIcon, Switch, Table, TableBody, TableCaption, TableCell, TableFooter, TableHead, TableHeader, TableRow, Tabs, TabsContent, TabsLinkTrigger, TabsList, TabsTrigger, TagsInput, TaskPanel, TaskPanelActions, TaskPanelCounter, TaskPanelHeader, TaskPanelItem, TaskQueue, TaskQueueDropdown, TaskQueueProvider, TaskQueueTrigger, TaskSummaryDialog, Text, Textarea, ThemeProvider, ThemeScript, TimePicker, TimeRangePicker, TimezoneSelector, Title, Toaster, Tooltip, Transfer, VisuallyHidden, avatarStackVariants, badgeVariants, buttonGroupVariants, buttonVariants, cn, configureProgress, createCodeEditorSchema, createDataTableStore, createOrgMetadata, createProjectMetadata, createSelectionColumn, createTimezoneOption, createUserMetadata, dataTableFeatures, defaultAutosearchValue, defineStepper, detectStorage, findItemByHref, formatAbsoluteDate, formatCombinedDate, formatDateForInput, formatJson, formatRelativeDate, formatSingleTimeDisplay, formatTimeRangeDisplay, formatTimezoneDate, formatTimezoneLabel, formatUTCDate, formatUtcForDisplay, formatYaml, getBrowserTimezone, getContextLabel, getDefaultPreset, getDefaultTimezoneOptions, getGutter, getPresetByKey, getPresetByShortcut, getPresetRange, getResponsiveValue, getShortTimezoneDisplay, getTimestamp, getTimezoneAbbreviation, getTimezoneOffset, hasActiveDescendant, isNavItemActive, isValidJson, isValidYaml, jsonSchema, jsonToYaml, localInputStringToUtc, logoStyles, matchesCurrentScope, normalizePath, paragraphVariants, parseDate, registerMediaQuery, resolvePath, rowMatchesSearch, startProgress, stopProgress, textVariants, titleVariants, toApiTimeRange, toUTCTimestampEndOfDay, toUTCTimestampStartOfDay, toast, useAdapter, useBreakpoint, useControllableState, useCopyToClipboard, useCurrentScope, useDataTableFilters, useDataTableInlineContents, useDataTableLoading, useDataTablePagination, useDataTableRows, useDataTableSearch, useDataTableSelection, useDataTableSorting, useDebounce, useDebouncedSearchInput, useField, useFieldContext, useFormContext, useFormState, useInSheet, useLeaflet, useNuqsAdapter, useRichTextEditor, useSidebar, useTaskQueue, useTasksWithLabels, useTheme, useToast, useWatch, useWatchAll, utcStringToZonedDate, utcToLocalInputString, yamlSchema, yamlToJson, zonedDateToUtcString };