@xeonr/platform-ui 0.2.5 → 0.3.1

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 (53) hide show
  1. package/dist/index.d.ts +10 -5
  2. package/dist/index.d.ts.map +1 -1
  3. package/dist/index.js +14 -5
  4. package/dist/index.js.map +1 -1
  5. package/dist/kit/Card.d.ts +44 -0
  6. package/dist/kit/Card.d.ts.map +1 -0
  7. package/dist/kit/Card.js +95 -0
  8. package/dist/kit/Card.js.map +1 -0
  9. package/dist/kit/Charts.d.ts +44 -0
  10. package/dist/kit/Charts.d.ts.map +1 -0
  11. package/dist/kit/Charts.js +164 -0
  12. package/dist/kit/Charts.js.map +1 -0
  13. package/dist/kit/DataTable.d.ts +3 -1
  14. package/dist/kit/DataTable.d.ts.map +1 -1
  15. package/dist/kit/DataTable.js +8 -2
  16. package/dist/kit/DataTable.js.map +1 -1
  17. package/dist/kit/Facet.d.ts +37 -0
  18. package/dist/kit/Facet.d.ts.map +1 -0
  19. package/dist/kit/Facet.js +126 -0
  20. package/dist/kit/Facet.js.map +1 -0
  21. package/dist/kit/Form.d.ts +8 -0
  22. package/dist/kit/Form.d.ts.map +1 -1
  23. package/dist/kit/Form.js +17 -0
  24. package/dist/kit/Form.js.map +1 -1
  25. package/dist/kit/Icon.d.ts +10 -0
  26. package/dist/kit/Icon.d.ts.map +1 -1
  27. package/dist/kit/Icon.js +4 -1
  28. package/dist/kit/Icon.js.map +1 -1
  29. package/dist/kit/Range.d.ts +30 -0
  30. package/dist/kit/Range.d.ts.map +1 -0
  31. package/dist/kit/Range.js +137 -0
  32. package/dist/kit/Range.js.map +1 -0
  33. package/dist/kit/Search.d.ts +9 -0
  34. package/dist/kit/Search.d.ts.map +1 -0
  35. package/dist/kit/Search.js +59 -0
  36. package/dist/kit/Search.js.map +1 -0
  37. package/dist/kit/Skeleton.d.ts +6 -0
  38. package/dist/kit/Skeleton.d.ts.map +1 -1
  39. package/dist/kit/Skeleton.js +15 -0
  40. package/dist/kit/Skeleton.js.map +1 -1
  41. package/dist/kit/Toast.d.ts +10 -2
  42. package/dist/kit/Toast.d.ts.map +1 -1
  43. package/dist/kit/Toast.js +9 -2
  44. package/dist/kit/Toast.js.map +1 -1
  45. package/dist/theme/ThemeProvider.d.ts +15 -2
  46. package/dist/theme/ThemeProvider.d.ts.map +1 -1
  47. package/dist/theme/ThemeProvider.js +43 -53
  48. package/dist/theme/ThemeProvider.js.map +1 -1
  49. package/dist/theme/tokens.d.ts +1 -0
  50. package/dist/theme/tokens.d.ts.map +1 -1
  51. package/dist/theme/tokens.js +47 -0
  52. package/dist/theme/tokens.js.map +1 -1
  53. package/package.json +1 -1
package/dist/index.d.ts CHANGED
@@ -1,13 +1,13 @@
1
- export { BRAND, GRAD, GRAD_90, cssVariables, v } from "./theme/tokens.ts";
2
- export { AppThemeProvider, useTheme, type ThemePref } from "./theme/ThemeProvider.tsx";
1
+ export { BRAND, GRAD, GRAD_90, cssVariables, globalCss, v } from "./theme/tokens.ts";
2
+ export { AppThemeProvider, useTheme, useThemeMaybe, type ThemePref, type AppThemeProviderProps } from "./theme/ThemeProvider.tsx";
3
3
  export { Icon, extendIcons, type IconName } from "./kit/Icon.tsx";
4
4
  export { AppButton, IconButton, ButtonRow, type AppButtonProps } from "./kit/Button.tsx";
5
5
  export { StatusPill, Tag, LiveDot, InitialsTile, RemovableTag, type Tone } from "./kit/Badge.tsx";
6
6
  export { Panel, PanelHead, PanelTitle, PanelActions, PanelBody, MicroLabel, SectionHead, Hairline } from "./kit/Panel.tsx";
7
- export { Skeleton, SkeletonRow } from "./kit/Skeleton.tsx";
7
+ export { Skeleton, SkeletonRow, Spinner } from "./kit/Skeleton.tsx";
8
8
  export { EmptyState } from "./kit/EmptyState.tsx";
9
9
  export { Splash } from "./kit/Splash.tsx";
10
- export { FormGrid, Field, Input, MonoInput, Select, TextArea, Segmented, Toggle, FormSection, FormActions, InlineError, KVEditor, kvToMap, mapToKv, type KVPair, } from "./kit/Form.tsx";
10
+ export { FormGrid, Field, Input, MonoInput, Select, TextArea, Segmented, Toggle, FormSection, FormActions, InlineError, KVEditor, kvToMap, mapToKv, type KVPair, CheckRow, } from "./kit/Form.tsx";
11
11
  export { EntityModal, ConfirmDialog, PromptDialog } from "./kit/Modal.tsx";
12
12
  export { DataTable, type Column } from "./kit/DataTable.tsx";
13
13
  export { PageHead, PageTitle, PageActions, FactLine, PageBody, SubNav } from "./kit/PageHeader.tsx";
@@ -15,10 +15,15 @@ export { EntityHeader, CodeChip } from "./kit/EntityHeader.tsx";
15
15
  export { LogSurface, LogPanel, type LogLine } from "./kit/LogView.tsx";
16
16
  export { KVGrid } from "./kit/KV.tsx";
17
17
  export { SecretField, CopyIcon } from "./kit/Secret.tsx";
18
- export { ToastProvider, useToast } from "./kit/Toast.tsx";
18
+ export { ToastProvider, useToast, toastError, type ToastKind } from "./kit/Toast.tsx";
19
19
  export { Mono, Num, Hint, InlineHint, Cell, InlineLink } from "./kit/Text.tsx";
20
20
  export { RowList, ListRow, RowActions, SelectableList, Breadcrumbs } from "./kit/List.tsx";
21
21
  export { FilterBar, FilterField, Chip, EditableChip } from "./kit/Chip.tsx";
22
22
  export { StatGrid, StatTile, StatValue, Meter } from "./kit/Stat.tsx";
23
23
  export { Tabs, Disclosure, Subpanel, SubpanelHead, AddPanel, Callout, RepeaterRows, CodeBlock, StepList, Steps, Step, Divider, CopyField, PanelHeadMeta, LoadMoreFooter, DarkSurface, } from "./kit/Blocks.tsx";
24
+ export { FacetSelect, RankList, fmtCount, fmtShare, type FacetOption } from "./kit/Facet.tsx";
25
+ export { SearchBox } from "./kit/Search.tsx";
26
+ export { RangePicker, RANGE_PRESETS, DEFAULT_RANGE, presetMinutes, rangeBounds, rangeMinutes, describeRange, type TimeRange, type RangePreset } from "./kit/Range.tsx";
27
+ export { Histogram, LineChart, type HistogramBucket, type ChartSeries, type ChartTone } from "./kit/Charts.tsx";
28
+ export { CardGrid, ListCard, type ListCardProps } from "./kit/Card.tsx";
24
29
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,KAAK,EAAE,IAAI,EAAE,OAAO,EAAE,YAAY,EAAE,CAAC,EAAE,MAAM,mBAAmB,CAAC;AAC1E,OAAO,EAAE,gBAAgB,EAAE,QAAQ,EAAE,KAAK,SAAS,EAAE,MAAM,2BAA2B,CAAC;AAIvF,OAAO,EAAE,IAAI,EAAE,WAAW,EAAE,KAAK,QAAQ,EAAE,MAAM,gBAAgB,CAAC;AAClE,OAAO,EAAE,SAAS,EAAE,UAAU,EAAE,SAAS,EAAE,KAAK,cAAc,EAAE,MAAM,kBAAkB,CAAC;AACzF,OAAO,EAAE,UAAU,EAAE,GAAG,EAAE,OAAO,EAAE,YAAY,EAAE,YAAY,EAAE,KAAK,IAAI,EAAE,MAAM,iBAAiB,CAAC;AAClG,OAAO,EAAE,KAAK,EAAE,SAAS,EAAE,UAAU,EAAE,YAAY,EAAE,SAAS,EAAE,UAAU,EAAE,WAAW,EAAE,QAAQ,EAAE,MAAM,iBAAiB,CAAC;AAC3H,OAAO,EAAE,QAAQ,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC;AAC3D,OAAO,EAAE,UAAU,EAAE,MAAM,sBAAsB,CAAC;AAClD,OAAO,EAAE,MAAM,EAAE,MAAM,kBAAkB,CAAC;AAC1C,OAAO,EACL,QAAQ,EAAE,KAAK,EAAE,KAAK,EAAE,SAAS,EAAE,MAAM,EAAE,QAAQ,EAAE,SAAS,EAAE,MAAM,EACtE,WAAW,EAAE,WAAW,EAAE,WAAW,EACrC,QAAQ,EAAE,OAAO,EAAE,OAAO,EAAE,KAAK,MAAM,GACxC,MAAM,gBAAgB,CAAC;AACxB,OAAO,EAAE,WAAW,EAAE,aAAa,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAC;AAC3E,OAAO,EAAE,SAAS,EAAE,KAAK,MAAM,EAAE,MAAM,qBAAqB,CAAC;AAC7D,OAAO,EAAE,QAAQ,EAAE,SAAS,EAAE,WAAW,EAAE,QAAQ,EAAE,QAAQ,EAAE,MAAM,EAAE,MAAM,sBAAsB,CAAC;AACpG,OAAO,EAAE,YAAY,EAAE,QAAQ,EAAE,MAAM,wBAAwB,CAAC;AAChE,OAAO,EAAE,UAAU,EAAE,QAAQ,EAAE,KAAK,OAAO,EAAE,MAAM,mBAAmB,CAAC;AACvE,OAAO,EAAE,MAAM,EAAE,MAAM,cAAc,CAAC;AACtC,OAAO,EAAE,WAAW,EAAE,QAAQ,EAAE,MAAM,kBAAkB,CAAC;AACzD,OAAO,EAAE,aAAa,EAAE,QAAQ,EAAE,MAAM,iBAAiB,CAAC;AAI1D,OAAO,EAAE,IAAI,EAAE,GAAG,EAAE,IAAI,EAAE,UAAU,EAAE,IAAI,EAAE,UAAU,EAAE,MAAM,gBAAgB,CAAC;AAC/E,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,UAAU,EAAE,cAAc,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAC;AAC3F,OAAO,EAAE,SAAS,EAAE,WAAW,EAAE,IAAI,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAC;AAC5E,OAAO,EAAE,QAAQ,EAAE,QAAQ,EAAE,SAAS,EAAE,KAAK,EAAE,MAAM,gBAAgB,CAAC;AACtE,OAAO,EACL,IAAI,EAAE,UAAU,EAAE,QAAQ,EAAE,YAAY,EAAE,QAAQ,EAAE,OAAO,EAAE,YAAY,EACzE,SAAS,EAAE,QAAQ,EAAE,KAAK,EAAE,IAAI,EAAE,OAAO,EAAE,SAAS,EAAE,aAAa,EACnE,cAAc,EAAE,WAAW,GAC5B,MAAM,kBAAkB,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
package/dist/index.js CHANGED
@@ -2,18 +2,18 @@
2
2
  //
3
3
  // Tokens + theme: the --x-* custom-property sheet (dark-first, first-class
4
4
  // light), the tri-state ThemeProvider, and `v` for styled-components.
5
- export { BRAND, GRAD, GRAD_90, cssVariables, v } from "./theme/tokens.js";
6
- export { AppThemeProvider, useTheme } from "./theme/ThemeProvider.js";
5
+ export { BRAND, GRAD, GRAD_90, cssVariables, globalCss, v } from "./theme/tokens.js";
6
+ export { AppThemeProvider, useTheme, useThemeMaybe } from "./theme/ThemeProvider.js";
7
7
  // Kit: the same names and props container-platform/ui and functions/ui use,
8
8
  // so adopting the package is an import-path change.
9
9
  export { Icon, extendIcons } from "./kit/Icon.js";
10
10
  export { AppButton, IconButton, ButtonRow } from "./kit/Button.js";
11
11
  export { StatusPill, Tag, LiveDot, InitialsTile, RemovableTag } from "./kit/Badge.js";
12
12
  export { Panel, PanelHead, PanelTitle, PanelActions, PanelBody, MicroLabel, SectionHead, Hairline } from "./kit/Panel.js";
13
- export { Skeleton, SkeletonRow } from "./kit/Skeleton.js";
13
+ export { Skeleton, SkeletonRow, Spinner } from "./kit/Skeleton.js";
14
14
  export { EmptyState } from "./kit/EmptyState.js";
15
15
  export { Splash } from "./kit/Splash.js";
16
- export { FormGrid, Field, Input, MonoInput, Select, TextArea, Segmented, Toggle, FormSection, FormActions, InlineError, KVEditor, kvToMap, mapToKv, } from "./kit/Form.js";
16
+ export { FormGrid, Field, Input, MonoInput, Select, TextArea, Segmented, Toggle, FormSection, FormActions, InlineError, KVEditor, kvToMap, mapToKv, CheckRow, } from "./kit/Form.js";
17
17
  export { EntityModal, ConfirmDialog, PromptDialog } from "./kit/Modal.js";
18
18
  export { DataTable } from "./kit/DataTable.js";
19
19
  export { PageHead, PageTitle, PageActions, FactLine, PageBody, SubNav } from "./kit/PageHeader.js";
@@ -21,7 +21,7 @@ export { EntityHeader, CodeChip } from "./kit/EntityHeader.js";
21
21
  export { LogSurface, LogPanel } from "./kit/LogView.js";
22
22
  export { KVGrid } from "./kit/KV.js";
23
23
  export { SecretField, CopyIcon } from "./kit/Secret.js";
24
- export { ToastProvider, useToast } from "./kit/Toast.js";
24
+ export { ToastProvider, useToast, toastError } from "./kit/Toast.js";
25
25
  // Added for the Container Platform adoption (2026-09-26): the widgets every
26
26
  // list and detail screen grows locally, now shared.
27
27
  export { Mono, Num, Hint, InlineHint, Cell, InlineLink } from "./kit/Text.js";
@@ -29,4 +29,13 @@ export { RowList, ListRow, RowActions, SelectableList, Breadcrumbs } from "./kit
29
29
  export { FilterBar, FilterField, Chip, EditableChip } from "./kit/Chip.js";
30
30
  export { StatGrid, StatTile, StatValue, Meter } from "./kit/Stat.js";
31
31
  export { Tabs, Disclosure, Subpanel, SubpanelHead, AddPanel, Callout, RepeaterRows, CodeBlock, StepList, Steps, Step, Divider, CopyField, PanelHeadMeta, LoadMoreFooter, DarkSurface, } from "./kit/Blocks.js";
32
+ // Added for the Forest adoption (2026-09-26): faceted filtering, the time
33
+ // window, and the two charts an observability console needs.
34
+ export { FacetSelect, RankList, fmtCount, fmtShare } from "./kit/Facet.js";
35
+ export { SearchBox } from "./kit/Search.js";
36
+ export { RangePicker, RANGE_PRESETS, DEFAULT_RANGE, presetMinutes, rangeBounds, rangeMinutes, describeRange } from "./kit/Range.js";
37
+ export { Histogram, LineChart } from "./kit/Charts.js";
38
+ // Added for the Dev adoption (2026-09-26): the card list three consoles had
39
+ // each grown their own Grid+Card pair for.
40
+ export { CardGrid, ListCard } from "./kit/Card.js";
32
41
  //# sourceMappingURL=index.js.map
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,iEAAiE;AACjE,EAAE;AACF,2EAA2E;AAC3E,sEAAsE;AACtE,OAAO,EAAE,KAAK,EAAE,IAAI,EAAE,OAAO,EAAE,YAAY,EAAE,CAAC,EAAE,MAAM,mBAAmB,CAAC;AAC1E,OAAO,EAAE,gBAAgB,EAAE,QAAQ,EAAkB,MAAM,0BAA2B,CAAC;AAEvF,4EAA4E;AAC5E,oDAAoD;AACpD,OAAO,EAAE,IAAI,EAAE,WAAW,EAAiB,MAAM,eAAgB,CAAC;AAClE,OAAO,EAAE,SAAS,EAAE,UAAU,EAAE,SAAS,EAAuB,MAAM,iBAAkB,CAAC;AACzF,OAAO,EAAE,UAAU,EAAE,GAAG,EAAE,OAAO,EAAE,YAAY,EAAE,YAAY,EAAa,MAAM,gBAAiB,CAAC;AAClG,OAAO,EAAE,KAAK,EAAE,SAAS,EAAE,UAAU,EAAE,YAAY,EAAE,SAAS,EAAE,UAAU,EAAE,WAAW,EAAE,QAAQ,EAAE,MAAM,gBAAiB,CAAC;AAC3H,OAAO,EAAE,QAAQ,EAAE,WAAW,EAAE,MAAM,mBAAoB,CAAC;AAC3D,OAAO,EAAE,UAAU,EAAE,MAAM,qBAAsB,CAAC;AAClD,OAAO,EAAE,MAAM,EAAE,MAAM,iBAAkB,CAAC;AAC1C,OAAO,EACL,QAAQ,EAAE,KAAK,EAAE,KAAK,EAAE,SAAS,EAAE,MAAM,EAAE,QAAQ,EAAE,SAAS,EAAE,MAAM,EACtE,WAAW,EAAE,WAAW,EAAE,WAAW,EACrC,QAAQ,EAAE,OAAO,EAAE,OAAO,GAC3B,MAAM,eAAgB,CAAC;AACxB,OAAO,EAAE,WAAW,EAAE,aAAa,EAAE,YAAY,EAAE,MAAM,gBAAiB,CAAC;AAC3E,OAAO,EAAE,SAAS,EAAe,MAAM,oBAAqB,CAAC;AAC7D,OAAO,EAAE,QAAQ,EAAE,SAAS,EAAE,WAAW,EAAE,QAAQ,EAAE,QAAQ,EAAE,MAAM,EAAE,MAAM,qBAAsB,CAAC;AACpG,OAAO,EAAE,YAAY,EAAE,QAAQ,EAAE,MAAM,uBAAwB,CAAC;AAChE,OAAO,EAAE,UAAU,EAAE,QAAQ,EAAgB,MAAM,kBAAmB,CAAC;AACvE,OAAO,EAAE,MAAM,EAAE,MAAM,aAAc,CAAC;AACtC,OAAO,EAAE,WAAW,EAAE,QAAQ,EAAE,MAAM,iBAAkB,CAAC;AACzD,OAAO,EAAE,aAAa,EAAE,QAAQ,EAAE,MAAM,gBAAiB,CAAC;AAE1D,4EAA4E;AAC5E,oDAAoD;AACpD,OAAO,EAAE,IAAI,EAAE,GAAG,EAAE,IAAI,EAAE,UAAU,EAAE,IAAI,EAAE,UAAU,EAAE,MAAM,eAAgB,CAAC;AAC/E,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,UAAU,EAAE,cAAc,EAAE,WAAW,EAAE,MAAM,eAAgB,CAAC;AAC3F,OAAO,EAAE,SAAS,EAAE,WAAW,EAAE,IAAI,EAAE,YAAY,EAAE,MAAM,eAAgB,CAAC;AAC5E,OAAO,EAAE,QAAQ,EAAE,QAAQ,EAAE,SAAS,EAAE,KAAK,EAAE,MAAM,eAAgB,CAAC;AACtE,OAAO,EACL,IAAI,EAAE,UAAU,EAAE,QAAQ,EAAE,YAAY,EAAE,QAAQ,EAAE,OAAO,EAAE,YAAY,EACzE,SAAS,EAAE,QAAQ,EAAE,KAAK,EAAE,IAAI,EAAE,OAAO,EAAE,SAAS,EAAE,aAAa,EACnE,cAAc,EAAE,WAAW,GAC5B,MAAM,iBAAkB,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,44 @@
1
+ import type { ReactNode } from "react";
2
+ import { type IconName } from "./Icon.tsx";
3
+ /** CardGrid: auto-fill columns that reflow; `$min` is the narrowest a card gets. */
4
+ export declare const CardGrid: import("styled-components/dist/types").IStyledComponentBase<"web", import("styled-components/dist/types").Merged<Omit<import("react").DetailedHTMLProps<import("react").HTMLAttributes<HTMLDivElement>, HTMLDivElement>, "style"> & {
5
+ style?: import("react").CSSProperties | import("styled-components/dist/types").CSSPropertiesWithVars | undefined;
6
+ }, {
7
+ $min?: number | undefined;
8
+ $gap?: number | undefined;
9
+ }>> & string;
10
+ export interface ListCardProps {
11
+ title: ReactNode;
12
+ /** semantic icon left of the title */
13
+ icon?: IconName | (string & {}) | undefined;
14
+ /** mono title, for a technical name */
15
+ mono?: boolean | undefined;
16
+ /** right of the title — a StatusPill or a Tag */
17
+ status?: ReactNode | undefined;
18
+ /** the small row under the title — Tags, a fact or two */
19
+ facts?: ReactNode | undefined;
20
+ /** the footer row — a ButtonRow. A card with actions is never itself clickable. */
21
+ actions?: ReactNode | undefined;
22
+ /** a severity edge, matching DataTable's `severity` tones */
23
+ tone?: "crit" | "warn" | undefined;
24
+ /** router destination — the whole card becomes the link */
25
+ to?: string | undefined;
26
+ /** external or same-origin href — the whole card becomes the link */
27
+ href?: string | undefined;
28
+ target?: string | undefined;
29
+ rel?: string | undefined;
30
+ children?: ReactNode | undefined;
31
+ className?: string | undefined;
32
+ /** the full value behind a truncated title */
33
+ tooltip?: string | undefined;
34
+ }
35
+ /**
36
+ * ListCard: one card in a CardGrid.
37
+ *
38
+ * `to`/`href` make the whole card the link. `actions` and a whole-card link are
39
+ * mutually exclusive by construction — a link wrapping buttons is invalid
40
+ * markup and unusable by keyboard — so a card with actions renders as a plain
41
+ * surface and the actions carry the navigation.
42
+ */
43
+ export declare function ListCard({ title, icon, mono, status, facts, actions, tone, to, href, target, rel, children, className, tooltip, }: ListCardProps): import("react").JSX.Element;
44
+ //# sourceMappingURL=Card.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Card.d.ts","sourceRoot":"","sources":["../../src/kit/Card.tsx"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC;AAGvC,OAAO,EAAQ,KAAK,QAAQ,EAAE,MAAM,YAAY,CAAC;AAQjD,oFAAoF;AACpF,eAAO,MAAM,QAAQ;;;WAAuB,MAAM,GAAG,SAAS;WAAS,MAAM,GAAG,SAAS;YAIxF,CAAC;AAuEF,MAAM,WAAW,aAAa;IAC5B,KAAK,EAAE,SAAS,CAAC;IACjB,sCAAsC;IACtC,IAAI,CAAC,EAAE,QAAQ,GAAG,CAAC,MAAM,GAAG,EAAE,CAAC,GAAG,SAAS,CAAC;IAC5C,uCAAuC;IACvC,IAAI,CAAC,EAAE,OAAO,GAAG,SAAS,CAAC;IAC3B,iDAAiD;IACjD,MAAM,CAAC,EAAE,SAAS,GAAG,SAAS,CAAC;IAC/B,0DAA0D;IAC1D,KAAK,CAAC,EAAE,SAAS,GAAG,SAAS,CAAC;IAC9B,mFAAmF;IACnF,OAAO,CAAC,EAAE,SAAS,GAAG,SAAS,CAAC;IAChC,6DAA6D;IAC7D,IAAI,CAAC,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS,CAAC;IACnC,2DAA2D;IAC3D,EAAE,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IACxB,qEAAqE;IACrE,IAAI,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IAC1B,MAAM,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IAC5B,GAAG,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IACzB,QAAQ,CAAC,EAAE,SAAS,GAAG,SAAS,CAAC;IACjC,SAAS,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IAC/B,8CAA8C;IAC9C,OAAO,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;CAC9B;AAED;;;;;;;GAOG;AACH,wBAAgB,QAAQ,CAAC,EACvB,KAAK,EAAE,IAAI,EAAE,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,OAAO,EAAE,IAAI,EAAE,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE,GAAG,EAAE,QAAQ,EAAE,SAAS,EAAE,OAAO,GACrG,EAAE,aAAa,+BAoBf"}
@@ -0,0 +1,95 @@
1
+ import { jsx as _jsx, jsxs as _jsxs, Fragment as _Fragment } from "react/jsx-runtime";
2
+ import styled, { css } from "styled-components";
3
+ import { Link } from "react-router-dom";
4
+ import { v } from "../theme/tokens.js";
5
+ import { Icon } from "./Icon.js";
6
+ // The card list. A list of things too few and too visual for a DataTable — a
7
+ // team picker, a project picker, a handful of environments — reads as cards,
8
+ // and three consoles had grown their own `Grid`/`Card` pair for it
9
+ // (container-platform's pools, dbaas' teams, dev's environments). This is that
10
+ // pair, with the differences between them as props.
11
+ /** CardGrid: auto-fill columns that reflow; `$min` is the narrowest a card gets. */
12
+ export const CardGrid = styled.div `
13
+ display: grid;
14
+ gap: ${(p) => p.$gap ?? 12}px;
15
+ grid-template-columns: repeat(auto-fill, minmax(${(p) => p.$min ?? 300}px, 1fr));
16
+ `;
17
+ const shell = css `
18
+ display: flex;
19
+ flex-direction: column;
20
+ min-width: 0;
21
+ background: ${v.surface};
22
+ border: 1px solid ${(p) => (p.$tone === "crit" ? v.danger : p.$tone === "warn" ? v.warning : v.line)};
23
+ border-radius: ${v.rCard};
24
+ box-shadow: inset 0 1px 0 0 ${v.brand08}, ${v.elev};
25
+ color: inherit;
26
+ text-align: left;
27
+ text-decoration: none;
28
+ overflow: hidden;
29
+ ${(p) => p.$interactive &&
30
+ css `
31
+ cursor: pointer;
32
+ transition: border-color 0.14s ease, transform 0.14s ease;
33
+ &:hover { border-color: ${v.brand55}; transform: translateY(-1px); }
34
+ &:focus-visible { outline: 2px solid ${v.brand55}; outline-offset: 2px; }
35
+ `}
36
+ `;
37
+ const DivShell = styled.div `${shell}`;
38
+ const AShell = styled.a `${shell}`;
39
+ const LinkShell = styled(Link) `${shell}`;
40
+ const Head = styled.div `
41
+ display: flex;
42
+ align-items: center;
43
+ gap: 10px;
44
+ padding: 14px 16px 0;
45
+ svg { flex: none; color: ${v.brand}; }
46
+ `;
47
+ const Title = styled.div `
48
+ flex: 1;
49
+ min-width: 0;
50
+ font-weight: 600;
51
+ font-size: 14px;
52
+ overflow: hidden;
53
+ text-overflow: ellipsis;
54
+ white-space: nowrap;
55
+ ${(p) => p.$mono && css `font-family: ${v.mono}; font-size: 13px;`}
56
+ `;
57
+ const Facts = styled.div `
58
+ display: flex;
59
+ flex-wrap: wrap;
60
+ align-items: center;
61
+ gap: 6px;
62
+ padding: 10px 16px 0;
63
+ color: ${v.muted};
64
+ font-size: 12px;
65
+ `;
66
+ const Body = styled.div `
67
+ padding: 12px 16px 0;
68
+ min-width: 0;
69
+ `;
70
+ const Actions = styled.div `
71
+ display: flex;
72
+ align-items: center;
73
+ gap: 8px;
74
+ padding: 14px 16px;
75
+ margin-top: auto;
76
+ `;
77
+ /**
78
+ * ListCard: one card in a CardGrid.
79
+ *
80
+ * `to`/`href` make the whole card the link. `actions` and a whole-card link are
81
+ * mutually exclusive by construction — a link wrapping buttons is invalid
82
+ * markup and unusable by keyboard — so a card with actions renders as a plain
83
+ * surface and the actions carry the navigation.
84
+ */
85
+ export function ListCard({ title, icon, mono, status, facts, actions, tone, to, href, target, rel, children, className, tooltip, }) {
86
+ const inner = (_jsxs(_Fragment, { children: [_jsxs(Head, { children: [icon ? _jsx(Icon, { name: icon }) : null, _jsx(Title, { "$mono": mono, title: tooltip ?? (typeof title === "string" ? title : undefined), children: title }), status] }), facts ? _jsx(Facts, { children: facts }) : null, children ? _jsx(Body, { children: children }) : null, actions ? _jsx(Actions, { children: actions }) : null] }));
87
+ if (to && !actions) {
88
+ return _jsx(LinkShell, { to: to, "$tone": tone, "$interactive": true, className: className, children: inner });
89
+ }
90
+ if (href && !actions) {
91
+ return _jsx(AShell, { href: href, target: target, rel: rel, "$tone": tone, "$interactive": true, className: className, children: inner });
92
+ }
93
+ return _jsx(DivShell, { "$tone": tone, className: className, children: inner });
94
+ }
95
+ //# sourceMappingURL=Card.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Card.js","sourceRoot":"","sources":["../../src/kit/Card.tsx"],"names":[],"mappings":";AAAA,OAAO,MAAM,EAAE,EAAE,GAAG,EAAE,MAAM,mBAAmB,CAAC;AAEhD,OAAO,EAAE,IAAI,EAAE,MAAM,kBAAkB,CAAC;AACxC,OAAO,EAAE,CAAC,EAAE,MAAM,oBAAoB,CAAC;AACvC,OAAO,EAAE,IAAI,EAAiB,MAAM,WAAY,CAAC;AAEjD,6EAA6E;AAC7E,6EAA6E;AAC7E,mEAAmE;AACnE,+EAA+E;AAC/E,oDAAoD;AAEpD,oFAAoF;AACpF,MAAM,CAAC,MAAM,QAAQ,GAAG,MAAM,CAAC,GAAG,CAA0D;;SAEnF,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,IAAI,EAAE;oDACwB,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,IAAI,GAAG;CACvE,CAAC;AAEF,MAAM,KAAK,GAAG,GAAG,CAA6E;;;;gBAI9E,CAAC,CAAC,OAAO;sBACH,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;mBACnF,CAAC,CAAC,KAAK;gCACM,CAAC,CAAC,OAAO,KAAK,CAAC,CAAC,IAAI;;;;;IAKhD,CAAC,CAAC,EAAE,EAAE,CACN,CAAC,CAAC,YAAY;IACd,GAAG,CAAA;;;gCAGyB,CAAC,CAAC,OAAO;6CACI,CAAC,CAAC,OAAO;KACjD;CACJ,CAAC;AAGF,MAAM,QAAQ,GAAG,MAAM,CAAC,GAAG,CAAY,GAAG,KAAK,EAAE,CAAC;AAClD,MAAM,MAAM,GAAG,MAAM,CAAC,CAAC,CAAY,GAAG,KAAK,EAAE,CAAC;AAC9C,MAAM,SAAS,GAAG,MAAM,CAAC,IAAI,CAAC,CAAY,GAAG,KAAK,EAAE,CAAC;AAErD,MAAM,IAAI,GAAG,MAAM,CAAC,GAAG,CAAA;;;;;6BAKM,CAAC,CAAC,KAAK;CACnC,CAAC;AAEF,MAAM,KAAK,GAAG,MAAM,CAAC,GAAG,CAAiC;;;;;;;;IAQrD,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,KAAK,IAAI,GAAG,CAAA,gBAAgB,CAAC,CAAC,IAAI,oBAAoB;CAClE,CAAC;AAEF,MAAM,KAAK,GAAG,MAAM,CAAC,GAAG,CAAA;;;;;;WAMb,CAAC,CAAC,KAAK;;CAEjB,CAAC;AAEF,MAAM,IAAI,GAAG,MAAM,CAAC,GAAG,CAAA;;;CAGtB,CAAC;AAEF,MAAM,OAAO,GAAG,MAAM,CAAC,GAAG,CAAA;;;;;;CAMzB,CAAC;AA4BF;;;;;;;GAOG;AACH,MAAM,UAAU,QAAQ,CAAC,EACvB,KAAK,EAAE,IAAI,EAAE,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,OAAO,EAAE,IAAI,EAAE,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE,GAAG,EAAE,QAAQ,EAAE,SAAS,EAAE,OAAO,GACtF;IACd,MAAM,KAAK,GAAG,CACZ,8BACE,MAAC,IAAI,eACF,IAAI,CAAC,CAAC,CAAC,KAAC,IAAI,IAAC,IAAI,EAAE,IAAI,GAAI,CAAC,CAAC,CAAC,IAAI,EACnC,KAAC,KAAK,aAAQ,IAAI,EAAE,KAAK,EAAE,OAAO,IAAI,CAAC,OAAO,KAAK,KAAK,QAAQ,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,SAAS,CAAC,YAAG,KAAK,GAAS,EACrG,MAAM,IACF,EACN,KAAK,CAAC,CAAC,CAAC,KAAC,KAAK,cAAE,KAAK,GAAS,CAAC,CAAC,CAAC,IAAI,EACrC,QAAQ,CAAC,CAAC,CAAC,KAAC,IAAI,cAAE,QAAQ,GAAQ,CAAC,CAAC,CAAC,IAAI,EACzC,OAAO,CAAC,CAAC,CAAC,KAAC,OAAO,cAAE,OAAO,GAAW,CAAC,CAAC,CAAC,IAAI,IAC7C,CACJ,CAAC;IACF,IAAI,EAAE,IAAI,CAAC,OAAO,EAAE,CAAC;QACnB,OAAO,KAAC,SAAS,IAAC,EAAE,EAAE,EAAE,WAAS,IAAI,wBAAe,SAAS,EAAE,SAAS,YAAG,KAAK,GAAa,CAAC;IAChG,CAAC;IACD,IAAI,IAAI,IAAI,CAAC,OAAO,EAAE,CAAC;QACrB,OAAO,KAAC,MAAM,IAAC,IAAI,EAAE,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,GAAG,EAAE,GAAG,WAAS,IAAI,wBAAe,SAAS,EAAE,SAAS,YAAG,KAAK,GAAU,CAAC;IACxH,CAAC;IACD,OAAO,KAAC,QAAQ,aAAQ,IAAI,EAAE,SAAS,EAAE,SAAS,YAAG,KAAK,GAAY,CAAC;AACzE,CAAC"}
@@ -0,0 +1,44 @@
1
+ export interface HistogramBucket {
2
+ /** bucket start, ms since epoch */
3
+ t: number;
4
+ /** stacked parts, in stack order */
5
+ parts: {
6
+ name: string;
7
+ value: number;
8
+ }[];
9
+ }
10
+ /** Tones a part may take; unnamed parts use the brand colour. */
11
+ export type ChartTone = "brand" | "ok" | "warn" | "crit" | "info" | "mut";
12
+ /**
13
+ * Histogram: a stacked bar per bucket over time, so the shape of what you are
14
+ * looking at is visible before you read a single row. `tones` maps a part
15
+ * name to its tone (e.g. error → crit) so a spike reads without a legend.
16
+ */
17
+ export declare function Histogram({ buckets, tones, height, label, empty }: {
18
+ buckets: HistogramBucket[];
19
+ tones?: Record<string, ChartTone> | undefined;
20
+ height?: number | undefined;
21
+ label?: string | undefined;
22
+ empty?: string | undefined;
23
+ }): import("react").JSX.Element;
24
+ export interface ChartSeries {
25
+ name: string;
26
+ points: {
27
+ t: number;
28
+ v: number;
29
+ }[];
30
+ }
31
+ /**
32
+ * LineChart: n series over a shared time axis. Axes to read a value off, a
33
+ * crosshair to compare series at one instant, a legend that mutes lines, and
34
+ * a drag that selects a window (`onZoom`) — the natural gesture once a spike
35
+ * is visible.
36
+ */
37
+ export declare function LineChart({ series, onZoom, label, empty }: {
38
+ series: ChartSeries[];
39
+ /** Given a dragged selection. Omit to leave the chart read-only. */
40
+ onZoom?: ((from: Date, to: Date) => void) | undefined;
41
+ label?: string | undefined;
42
+ empty?: string | undefined;
43
+ }): import("react").JSX.Element;
44
+ //# sourceMappingURL=Charts.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Charts.d.ts","sourceRoot":"","sources":["../../src/kit/Charts.tsx"],"names":[],"mappings":"AAiBA,MAAM,WAAW,eAAe;IAC9B,mCAAmC;IACnC,CAAC,EAAE,MAAM,CAAC;IACV,oCAAoC;IACpC,KAAK,EAAE;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,CAAA;KAAE,EAAE,CAAC;CAC1C;AAUD,iEAAiE;AACjE,MAAM,MAAM,SAAS,GAAG,OAAO,GAAG,IAAI,GAAG,MAAM,GAAG,MAAM,GAAG,MAAM,GAAG,KAAK,CAAC;AAK1E;;;;GAIG;AACH,wBAAgB,SAAS,CAAC,EAAE,OAAO,EAAE,KAAU,EAAE,MAAM,EAAE,KAA4B,EAAE,KAA8B,EAAE,EAAE;IACvH,OAAO,EAAE,eAAe,EAAE,CAAC;IAC3B,KAAK,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,SAAS,CAAC,GAAG,SAAS,CAAC;IAC9C,MAAM,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IAC5B,KAAK,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IAC3B,KAAK,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;CAC5B,+BA6BA;AAMD,MAAM,WAAW,WAAW;IAC1B,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE;QAAE,CAAC,EAAE,MAAM,CAAC;QAAC,CAAC,EAAE,MAAM,CAAA;KAAE,EAAE,CAAC;CACpC;AA0DD;;;;;GAKG;AACH,wBAAgB,SAAS,CAAC,EAAE,MAAM,EAAE,MAAM,EAAE,KAAgB,EAAE,KAA6B,EAAE,EAAE;IAC7F,MAAM,EAAE,WAAW,EAAE,CAAC;IACtB,oEAAoE;IACpE,MAAM,CAAC,EAAE,CAAC,CAAC,IAAI,EAAE,IAAI,EAAE,EAAE,EAAE,IAAI,KAAK,IAAI,CAAC,GAAG,SAAS,CAAC;IACtD,KAAK,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IAC3B,KAAK,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;CAC5B,+BA8GA"}
@@ -0,0 +1,164 @@
1
+ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
+ import { useMemo, useRef, useState } from "react";
3
+ import styled from "styled-components";
4
+ import { v } from "../theme/tokens.js";
5
+ import { fmtCount } from "./Facet.js";
6
+ // Two charts in raw SVG, themed with the tokens so they sit in the same visual
7
+ // system as everything else. No charting library: the need is "n series over a
8
+ // shared time axis" and "a stacked histogram", and a dependency for that costs
9
+ // more in bundle size and theming friction than the code it saves.
10
+ const hhmm = (t) => new Date(t).toLocaleTimeString(undefined, { hour: "2-digit", minute: "2-digit", hour12: false });
11
+ const HistWrap = styled.div `padding: 12px 14px 8px;`;
12
+ const HistSvg = styled.svg `display: block; width: 100%; height: 84px;`;
13
+ const Axis = styled.div `
14
+ display: flex; justify-content: space-between;
15
+ color: ${v.faint}; font-size: 11px; margin-top: 4px; font-variant-numeric: tabular-nums;
16
+ `;
17
+ const Note = styled.div `color: ${v.faint}; font-size: 12px; padding: 22px 0; text-align: center;`;
18
+ const TONE_FILL = {
19
+ brand: v.brand, ok: v.success, warn: v.warning, crit: v.danger, info: v.info, mut: v.faint,
20
+ };
21
+ /**
22
+ * Histogram: a stacked bar per bucket over time, so the shape of what you are
23
+ * looking at is visible before you read a single row. `tones` maps a part
24
+ * name to its tone (e.g. error → crit) so a spike reads without a legend.
25
+ */
26
+ export function Histogram({ buckets, tones = {}, height, label = "Activity over time", empty = "No activity in range" }) {
27
+ const sorted = useMemo(() => [...buckets].sort((a, b) => a.t - b.t), [buckets]);
28
+ if (sorted.length === 0)
29
+ return _jsx(HistWrap, { children: _jsx(Note, { children: empty }) });
30
+ const totals = sorted.map((b) => b.parts.reduce((s, p) => s + p.value, 0));
31
+ const max = Math.max(...totals, 1);
32
+ const w = 100 / sorted.length;
33
+ return (_jsxs(HistWrap, { children: [_jsx(HistSvg, { viewBox: "0 0 100 40", preserveAspectRatio: "none", role: "img", "aria-label": label, style: height ? { height } : undefined, children: sorted.map((b, i) => {
34
+ let y = 40;
35
+ return (_jsxs("g", { children: [_jsx("title", { children: `${hhmm(b.t)} — ${fmtCount(totals[i] ?? 0)}` }), b.parts.map((p) => {
36
+ const h = (p.value / max) * 40;
37
+ y -= h;
38
+ return _jsx("rect", { x: i * w + w * 0.12, y: y, width: w * 0.76, height: h, fill: TONE_FILL[tones[p.name] ?? "brand"] }, p.name);
39
+ })] }, b.t));
40
+ }) }), _jsxs(Axis, { children: [_jsx("span", { children: hhmm(sorted[0].t) }), _jsx("span", { children: hhmm(sorted[sorted.length - 1].t) })] })] }));
41
+ }
42
+ const Wrap = styled.div `padding: 14px;`;
43
+ const Plot = styled.div `position: relative;`;
44
+ const Svg = styled.svg `display: block; width: 100%; height: 220px; cursor: crosshair; user-select: none;`;
45
+ const Legend = styled.div `display: flex; flex-wrap: wrap; gap: 12px; margin-top: 10px; font-size: 12px; color: ${v.muted};`;
46
+ // Series colours come from the theme's accent ramp rather than a chart palette.
47
+ const STROKES = [v.brand, v.success, v.warning, v.info, v.danger];
48
+ // A legend entry is a control: clicking isolates or restores a series, which is
49
+ // the only way to read a chart split into a dozen sessions.
50
+ const Key = styled.button `
51
+ display: inline-flex; align-items: center; gap: 6px;
52
+ font: inherit; font-size: 12px;
53
+ color: ${(p) => (p.$off ? v.faint : v.muted)};
54
+ opacity: ${(p) => (p.$off ? 0.55 : 1)};
55
+ &::before { content: ""; width: 9px; height: 3px; border-radius: 2px; background: ${(p) => (p.$off ? v.faint : STROKES[p.$i % STROKES.length])}; }
56
+ &:hover { color: ${v.text}; }
57
+ `;
58
+ const ChartHint = styled.div `margin-top: 8px; font-size: 11px; color: ${v.faint};`;
59
+ const Tip = styled.div `
60
+ position: absolute;
61
+ top: 6px;
62
+ left: ${(p) => p.$left}%;
63
+ transform: translateX(${(p) => (p.$flip ? "-100%" : "0")});
64
+ margin-left: ${(p) => (p.$flip ? "-10px" : "10px")};
65
+ pointer-events: none;
66
+ background: ${v.surface2};
67
+ border: 1px solid ${v.line2};
68
+ border-radius: ${v.rCard};
69
+ box-shadow: ${v.elev};
70
+ padding: 7px 9px;
71
+ font-size: 11px;
72
+ color: ${v.text};
73
+ white-space: nowrap;
74
+ z-index: ${v.zPop};
75
+ .t { color: ${v.faint}; margin-bottom: 4px; }
76
+ .val { margin-left: auto; padding-left: 12px; font-variant-numeric: tabular-nums; }
77
+ `;
78
+ const TipRow = styled.div `
79
+ display: flex; align-items: center; gap: 6px;
80
+ &::before { content: ""; width: 8px; height: 3px; border-radius: 2px; background: ${(p) => STROKES[p.$i % STROKES.length]}; }
81
+ `;
82
+ const W = 600;
83
+ const H = 200;
84
+ const PAD_L = 44;
85
+ const PAD_B = 18;
86
+ const PAD_T = 8;
87
+ function tickValue(x) {
88
+ if (Math.abs(x) >= 1000)
89
+ return fmtCount(Math.round(x));
90
+ return Number.isInteger(x) ? String(x) : x.toFixed(2);
91
+ }
92
+ /**
93
+ * LineChart: n series over a shared time axis. Axes to read a value off, a
94
+ * crosshair to compare series at one instant, a legend that mutes lines, and
95
+ * a drag that selects a window (`onZoom`) — the natural gesture once a spike
96
+ * is visible.
97
+ */
98
+ export function LineChart({ series, onZoom, label = "Series", empty = "No samples in range" }) {
99
+ const svg = useRef(null);
100
+ const [hidden, setHidden] = useState(new Set());
101
+ const [hoverX, setHoverX] = useState(null);
102
+ const [drag, setDrag] = useState(null);
103
+ const shown = useMemo(() => series.filter((s) => !hidden.has(s.name)), [series, hidden]);
104
+ const points = shown.flatMap((s) => s.points);
105
+ const all = series.flatMap((s) => s.points.map((p) => p.t));
106
+ if (all.length === 0)
107
+ return _jsx(Wrap, { children: _jsx(Note, { children: empty }) });
108
+ // The time axis spans every series, so hiding one does not move the x axis
109
+ // under the reader; only the value axis rescales to what is shown.
110
+ const tMin = Math.min(...all);
111
+ const tMax = Math.max(...all);
112
+ const vMax = Math.max(...points.map((p) => p.v), 0);
113
+ const vMin = Math.min(...points.map((p) => p.v), 0);
114
+ const tSpan = tMax - tMin || 1;
115
+ const vSpan = vMax - vMin || 1;
116
+ const x = (t) => PAD_L + ((t - tMin) / tSpan) * (W - PAD_L);
117
+ const y = (val) => (H - PAD_B) - ((val - vMin) / vSpan) * (H - PAD_B - PAD_T);
118
+ const frac = (t) => (x(t) - PAD_L) / (W - PAD_L);
119
+ const timeAt = (fraction) => tMin + fraction * tSpan;
120
+ const gridValues = [vMin, vMin + vSpan / 2, vMax];
121
+ const fractionOf = (clientX) => {
122
+ const rect = svg.current?.getBoundingClientRect();
123
+ if (!rect)
124
+ return null;
125
+ const plotLeft = rect.left + (PAD_L / W) * rect.width;
126
+ const plotWidth = rect.width * (1 - PAD_L / W);
127
+ return Math.min(1, Math.max(0, (clientX - plotLeft) / plotWidth));
128
+ };
129
+ // The nearest sample per series to the hovered instant.
130
+ const hovered = hoverX === null ? null : (() => {
131
+ const t = timeAt(hoverX);
132
+ const rows = shown.map((s) => {
133
+ let best = null;
134
+ for (const p of s.points)
135
+ if (!best || Math.abs(p.t - t) < Math.abs(best.t - t))
136
+ best = p;
137
+ return best ? { name: s.name, i: series.indexOf(s), v: best.v, t: best.t } : null;
138
+ }).filter((r) => r !== null);
139
+ return rows.length ? { t, rows } : null;
140
+ })();
141
+ const toggle = (name) => setHidden((prev) => {
142
+ const next = new Set(prev);
143
+ if (next.has(name))
144
+ next.delete(name);
145
+ else
146
+ next.add(name);
147
+ // Hiding everything leaves a chart with no axis to read; treat the last
148
+ // one as "show all again".
149
+ return next.size === series.length ? new Set() : next;
150
+ });
151
+ return (_jsxs(Wrap, { children: [_jsxs(Plot, { children: [_jsxs(Svg, { ref: svg, viewBox: `0 0 ${W} ${H}`, preserveAspectRatio: "none", role: "img", "aria-label": label, onMouseMove: (e) => { const f = fractionOf(e.clientX); if (f === null)
152
+ return; setHoverX(f); setDrag((d) => (d ? { ...d, to: f } : null)); }, onMouseLeave: () => { setHoverX(null); setDrag(null); }, onMouseDown: (e) => { if (!onZoom)
153
+ return; const f = fractionOf(e.clientX); if (f !== null)
154
+ setDrag({ from: f, to: f }); }, onMouseUp: () => {
155
+ if (drag && onZoom)
156
+ onZoom(new Date(timeAt(Math.min(drag.from, drag.to))), new Date(timeAt(Math.max(drag.from, drag.to))));
157
+ setDrag(null);
158
+ }, children: [gridValues.map((g) => (_jsxs("g", { children: [_jsx("line", { x1: PAD_L, x2: W, y1: y(g), y2: y(g), stroke: v.line, strokeWidth: 1, vectorEffect: "non-scaling-stroke" }), _jsx("text", { x: PAD_L - 6, y: y(g) + 3, textAnchor: "end", fontSize: 9, fill: v.faint, children: tickValue(g) })] }, g))), _jsx("text", { x: PAD_L, y: H - 4, fontSize: 9, fill: v.faint, children: hhmm(tMin) }), _jsx("text", { x: W, y: H - 4, fontSize: 9, fill: v.faint, textAnchor: "end", children: hhmm(tMax) }), shown.map((s) => {
159
+ const i = series.indexOf(s);
160
+ const d = s.points.map((p, j) => `${j === 0 ? "M" : "L"} ${x(p.t)} ${y(p.v)}`).join(" ");
161
+ return _jsx("path", { d: d, fill: "none", stroke: STROKES[i % STROKES.length], strokeWidth: 1.5, vectorEffect: "non-scaling-stroke" }, s.name);
162
+ }), drag && Math.abs(drag.to - drag.from) > 0.002 ? (_jsx("rect", { x: PAD_L + Math.min(drag.from, drag.to) * (W - PAD_L), width: Math.abs(drag.to - drag.from) * (W - PAD_L), y: PAD_T, height: H - PAD_B - PAD_T, fill: v.brand12, stroke: v.brand55, strokeWidth: 1, vectorEffect: "non-scaling-stroke" })) : null, hoverX !== null && !drag ? (_jsx("line", { x1: PAD_L + hoverX * (W - PAD_L), x2: PAD_L + hoverX * (W - PAD_L), y1: PAD_T, y2: H - PAD_B, stroke: v.line2, strokeWidth: 1, vectorEffect: "non-scaling-stroke" })) : null, hovered && !drag ? hovered.rows.map((r) => _jsx("circle", { cx: x(r.t), cy: y(r.v), r: 2.5, fill: STROKES[r.i % STROKES.length] }, r.name)) : null] }), hovered && !drag ? (_jsxs(Tip, { "$left": frac(hovered.t) * 100, "$flip": frac(hovered.t) > 0.6, children: [_jsx("div", { className: "t", children: new Date(hovered.t).toLocaleString() }), hovered.rows.map((r) => _jsxs(TipRow, { "$i": r.i, children: [r.name, _jsx("span", { className: "val", children: tickValue(r.v) })] }, r.name))] })) : null] }), _jsx(Legend, { children: series.map((s, i) => (_jsx(Key, { type: "button", "$i": i, "$off": hidden.has(s.name), onClick: () => toggle(s.name), title: hidden.has(s.name) ? "Show this series" : "Hide this series", children: s.name }, s.name))) }), onZoom ? _jsx(ChartHint, { children: "Drag across the chart to zoom into a window." }) : null] }));
163
+ }
164
+ //# sourceMappingURL=Charts.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Charts.js","sourceRoot":"","sources":["../../src/kit/Charts.tsx"],"names":[],"mappings":"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"}
@@ -8,7 +8,7 @@ export interface Column<T> {
8
8
  /** hide below this viewport width (px) */
9
9
  hideBelow?: number | undefined;
10
10
  }
11
- export declare function DataTable<T>({ columns, rows, rowKey, loading, skeletonRows, empty, rowHref, onRowClick, severity, footer, variant, hideHead }: {
11
+ export declare function DataTable<T>({ columns, rows, rowKey, loading, skeletonRows, empty, rowHref, onRowClick, severity, footer, variant, hideHead, detail }: {
12
12
  columns: Column<T>[];
13
13
  rows: T[] | undefined;
14
14
  rowKey: (row: T) => string;
@@ -23,5 +23,7 @@ export declare function DataTable<T>({ columns, rows, rowKey, loading, skeletonR
23
23
  variant?: "panel" | "bare" | undefined;
24
24
  /** omit the header row (short bare lists whose columns are self-evident) */
25
25
  hideHead?: boolean | undefined;
26
+ /** an expanded row under this one (a log line's attributes); null/undefined for none — the caller keeps the open state */
27
+ detail?: ((row: T) => ReactNode) | undefined;
26
28
  }): import("react").JSX.Element;
27
29
  //# sourceMappingURL=DataTable.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"DataTable.d.ts","sourceRoot":"","sources":["../../src/kit/DataTable.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAY,KAAK,SAAS,EAAE,MAAM,OAAO,CAAC;AAOjD,MAAM,WAAW,MAAM,CAAC,CAAC;IACvB,GAAG,EAAE,MAAM,CAAC;IACZ,IAAI,EAAE,SAAS,CAAC;IAChB,MAAM,EAAE,CAAC,GAAG,EAAE,CAAC,KAAK,SAAS,CAAC;IAC9B,KAAK,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IAC3B,KAAK,CAAC,EAAE,MAAM,GAAG,OAAO,GAAG,SAAS,CAAC;IACrC,0CAA0C;IAC1C,SAAS,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;CAChC;AAsDD,wBAAgB,SAAS,CAAC,CAAC,EAAE,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,YAAgB,EAAE,KAAK,EAAE,OAAO,EAAE,UAAU,EAAE,QAAQ,EAAE,MAAM,EAAE,OAAO,EAAE,QAAQ,EAAE,EAAE;IAClJ,OAAO,EAAE,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC;IACrB,IAAI,EAAE,CAAC,EAAE,GAAG,SAAS,CAAC;IACtB,MAAM,EAAE,CAAC,GAAG,EAAE,CAAC,KAAK,MAAM,CAAC;IAC3B,OAAO,CAAC,EAAE,OAAO,GAAG,SAAS,CAAC;IAC9B,YAAY,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IAClC,KAAK,CAAC,EAAE,SAAS,GAAG,SAAS,CAAC;IAC9B,OAAO,CAAC,EAAE,CAAC,CAAC,GAAG,EAAE,CAAC,KAAK,MAAM,GAAG,IAAI,CAAC,GAAG,SAAS,CAAC;IAClD,UAAU,CAAC,EAAE,CAAC,CAAC,GAAG,EAAE,CAAC,KAAK,IAAI,CAAC,GAAG,SAAS,CAAC;IAC5C,QAAQ,CAAC,EAAE,CAAC,CAAC,GAAG,EAAE,CAAC,KAAK,MAAM,GAAG,MAAM,GAAG,IAAI,CAAC,GAAG,SAAS,CAAC;IAC5D,MAAM,CAAC,EAAE,SAAS,GAAG,SAAS,CAAC;IAC/B,oFAAoF;IACpF,OAAO,CAAC,EAAE,OAAO,GAAG,MAAM,GAAG,SAAS,CAAC;IACvC,4EAA4E;IAC5E,QAAQ,CAAC,EAAE,OAAO,GAAG,SAAS,CAAC;CAChC,+BAgDA"}
1
+ {"version":3,"file":"DataTable.d.ts","sourceRoot":"","sources":["../../src/kit/DataTable.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAY,KAAK,SAAS,EAAE,MAAM,OAAO,CAAC;AAOjD,MAAM,WAAW,MAAM,CAAC,CAAC;IACvB,GAAG,EAAE,MAAM,CAAC;IACZ,IAAI,EAAE,SAAS,CAAC;IAChB,MAAM,EAAE,CAAC,GAAG,EAAE,CAAC,KAAK,SAAS,CAAC;IAC9B,KAAK,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IAC3B,KAAK,CAAC,EAAE,MAAM,GAAG,OAAO,GAAG,SAAS,CAAC;IACrC,0CAA0C;IAC1C,SAAS,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;CAChC;AA4DD,wBAAgB,SAAS,CAAC,CAAC,EAAE,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,YAAgB,EAAE,KAAK,EAAE,OAAO,EAAE,UAAU,EAAE,QAAQ,EAAE,MAAM,EAAE,OAAO,EAAE,QAAQ,EAAE,MAAM,EAAE,EAAE;IAC1J,OAAO,EAAE,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC;IACrB,IAAI,EAAE,CAAC,EAAE,GAAG,SAAS,CAAC;IACtB,MAAM,EAAE,CAAC,GAAG,EAAE,CAAC,KAAK,MAAM,CAAC;IAC3B,OAAO,CAAC,EAAE,OAAO,GAAG,SAAS,CAAC;IAC9B,YAAY,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IAClC,KAAK,CAAC,EAAE,SAAS,GAAG,SAAS,CAAC;IAC9B,OAAO,CAAC,EAAE,CAAC,CAAC,GAAG,EAAE,CAAC,KAAK,MAAM,GAAG,IAAI,CAAC,GAAG,SAAS,CAAC;IAClD,UAAU,CAAC,EAAE,CAAC,CAAC,GAAG,EAAE,CAAC,KAAK,IAAI,CAAC,GAAG,SAAS,CAAC;IAC5C,QAAQ,CAAC,EAAE,CAAC,CAAC,GAAG,EAAE,CAAC,KAAK,MAAM,GAAG,MAAM,GAAG,IAAI,CAAC,GAAG,SAAS,CAAC;IAC5D,MAAM,CAAC,EAAE,SAAS,GAAG,SAAS,CAAC;IAC/B,oFAAoF;IACpF,OAAO,CAAC,EAAE,OAAO,GAAG,MAAM,GAAG,SAAS,CAAC;IACvC,4EAA4E;IAC5E,QAAQ,CAAC,EAAE,OAAO,GAAG,SAAS,CAAC;IAC/B,0HAA0H;IAC1H,MAAM,CAAC,EAAE,CAAC,CAAC,GAAG,EAAE,CAAC,KAAK,SAAS,CAAC,GAAG,SAAS,CAAC;CAC9C,+BAmDA"}
@@ -50,7 +50,12 @@ const Bare = styled.div `
50
50
  table td { padding: 7px 12px; }
51
51
  table th { padding: 7px 12px; background: transparent; }
52
52
  `;
53
- export function DataTable({ columns, rows, rowKey, loading, skeletonRows = 5, empty, rowHref, onRowClick, severity, footer, variant, hideHead }) {
53
+ const DetailTd = styled.td `
54
+ padding: 12px 16px 16px;
55
+ background: ${v.surface2};
56
+ border-bottom: 1px solid ${v.line};
57
+ `;
58
+ export function DataTable({ columns, rows, rowKey, loading, skeletonRows = 5, empty, rowHref, onRowClick, severity, footer, variant, hideHead, detail }) {
54
59
  const navigate = useNavigate();
55
60
  const Wrap = variant === "bare" ? Bare : Panel;
56
61
  const showSkeleton = loading && (!rows || rows.length === 0);
@@ -58,7 +63,8 @@ export function DataTable({ columns, rows, rowKey, loading, skeletonRows = 5, em
58
63
  return (_jsxs(Wrap, { children: [_jsx(Scroll, { children: _jsxs(Table, { children: [hideHead ? null : (_jsx("thead", { children: _jsx("tr", { children: columns.map((c) => _jsx(Th, { "$align": c.align, "$hide": c.hideBelow, style: c.width ? { width: c.width } : undefined, children: c.head }, c.key)) }) })), !showSkeleton && !isEmpty ? (_jsx("tbody", { style: loading ? { opacity: 0.55 } : undefined, children: (rows ?? []).map((r) => {
59
64
  const href = rowHref?.(r) ?? null;
60
65
  const click = !!href || !!onRowClick;
61
- return (_jsx(Tr, { "$click": click, "$mark": severity?.(r) ?? null, onClick: click ? () => (href ? navigate(href) : onRowClick?.(r)) : undefined, children: columns.map((c) => _jsx(Td, { "$align": c.align, "$hide": c.hideBelow, children: c.render(r) }, c.key)) }, rowKey(r)));
66
+ const extra = detail?.(r);
67
+ return (_jsxs(Fragment, { children: [_jsx(Tr, { "$click": click, "$mark": severity?.(r) ?? null, onClick: click ? () => (href ? navigate(href) : onRowClick?.(r)) : undefined, children: columns.map((c) => _jsx(Td, { "$align": c.align, "$hide": c.hideBelow, children: c.render(r) }, c.key)) }), extra ? _jsx("tr", { children: _jsx(DetailTd, { colSpan: columns.length, children: extra }) }) : null] }, rowKey(r)));
62
68
  }) })) : null] }) }), showSkeleton ? (_jsx("div", { children: Array.from({ length: skeletonRows }).map((_, i) => (_jsxs(SkeletonRow, { children: [_jsx(Skeleton, { "$w": "26%" }), _jsx(Skeleton, { "$w": "12%" }), _jsx(Skeleton, { "$w": "8%" }), _jsx(Skeleton, { "$w": "16%" })] }, i))) })) : null, isEmpty ? _jsx(Fragment, { children: empty }) : null, footer && !showSkeleton && !isEmpty ? _jsx(FootRow, { children: footer }) : null] }));
63
69
  }
64
70
  //# sourceMappingURL=DataTable.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"DataTable.js","sourceRoot":"","sources":["../../src/kit/DataTable.tsx"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"DataTable.js","sourceRoot":"","sources":["../../src/kit/DataTable.tsx"],"names":[],"mappings":";AAAA,OAAO,EAAE,QAAQ,EAAkB,MAAM,OAAO,CAAC;AACjD,OAAO,MAAM,EAAE,EAAE,GAAG,EAAE,MAAM,mBAAmB,CAAC;AAChD,OAAO,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;AAC/C,OAAO,EAAE,CAAC,EAAE,MAAM,oBAAoB,CAAC;AACvC,OAAO,EAAE,KAAK,EAAE,MAAM,YAAa,CAAC;AACpC,OAAO,EAAE,QAAQ,EAAE,WAAW,EAAE,MAAM,eAAgB,CAAC;AAYvD,MAAM,KAAK,GAAG,MAAM,CAAC,KAAK,CAAA;;;;CAIzB,CAAC;AAEF,MAAM,EAAE,GAAG,MAAM,CAAC,EAAE,CAAuE;gBAC3E,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,MAAM,IAAI,MAAM;;;;;WAK9B,CAAC,CAAC,KAAK;gBACF,CAAC,CAAC,QAAQ;6BACG,CAAC,CAAC,IAAI;;;IAG/B,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,KAAK,IAAI,GAAG,CAAA,sBAAsB,CAAC,CAAC,KAAK,wBAAwB;CAC7E,CAAC;AAEF,MAAM,EAAE,GAAG,MAAM,CAAC,EAAE,CAAuE;gBAC3E,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,MAAM,IAAI,MAAM;;6BAEZ,CAAC,CAAC,IAAI;;IAE/B,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,KAAK,IAAI,GAAG,CAAA,sBAAsB,CAAC,CAAC,KAAK,wBAAwB;CAC7E,CAAC;AAEF,iFAAiF;AACjF,MAAM,EAAE,GAAG,MAAM,CAAC,EAAE,CAA8E;IAC9F,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,MAAM,IAAI,GAAG,CAAA,6CAA6C,CAAC,CAAC,KAAK,KAAK;;IAE/E,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,KAAK,IAAI,GAAG,CAAA,gDAAgD,CAAC,CAAC,KAAK,KAAK,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,KAAK;CACtH,CAAC;AAEF,MAAM,OAAO,GAAG,MAAM,CAAC,GAAG,CAAA;;;;;;WAMf,CAAC,CAAC,KAAK;0BACQ,CAAC,CAAC,IAAI;CAC/B,CAAC;AAEF,MAAM,MAAM,GAAG,MAAM,CAAC,GAAG,CAAA,mBAAmB,CAAC;AAE7C,MAAM,IAAI,GAAG,MAAM,CAAC,GAAG,CAAA;;;CAGtB,CAAC;AAEF,MAAM,QAAQ,GAAG,MAAM,CAAC,EAAE,CAAA;;gBAEV,CAAC,CAAC,QAAQ;6BACG,CAAC,CAAC,IAAI;CAClC,CAAC;AAEF,MAAM,UAAU,SAAS,CAAI,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,YAAY,GAAG,CAAC,EAAE,KAAK,EAAE,OAAO,EAAE,UAAU,EAAE,QAAQ,EAAE,MAAM,EAAE,OAAO,EAAE,QAAQ,EAAE,MAAM,EAiBvJ;IACC,MAAM,QAAQ,GAAG,WAAW,EAAE,CAAC;IAC/B,MAAM,IAAI,GAAG,OAAO,KAAK,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC;IAC/C,MAAM,YAAY,GAAG,OAAO,IAAI,CAAC,CAAC,IAAI,IAAI,IAAI,CAAC,MAAM,KAAK,CAAC,CAAC,CAAC;IAC7D,MAAM,OAAO,GAAG,CAAC,OAAO,IAAI,IAAI,IAAI,IAAI,CAAC,MAAM,KAAK,CAAC,CAAC;IAEtD,OAAO,CACL,MAAC,IAAI,eACH,KAAC,MAAM,cACL,MAAC,KAAK,eACH,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CACjB,0BACE,uBAAK,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,KAAC,EAAE,cAAqB,CAAC,CAAC,KAAK,WAAS,CAAC,CAAC,SAAS,EAAE,KAAK,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC,SAAS,YAAG,CAAC,CAAC,IAAI,IAApG,CAAC,CAAC,GAAG,CAAqG,CAAC,GAAM,GAC5I,CACT,EACA,CAAC,YAAY,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,CAC3B,gBAAO,KAAK,EAAE,OAAO,CAAC,CAAC,CAAC,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,SAAS,YAClD,CAAC,IAAI,IAAI,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE;gCACtB,MAAM,IAAI,GAAG,OAAO,EAAE,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC;gCAClC,MAAM,KAAK,GAAG,CAAC,CAAC,IAAI,IAAI,CAAC,CAAC,UAAU,CAAC;gCACrC,MAAM,KAAK,GAAG,MAAM,EAAE,CAAC,CAAC,CAAC,CAAC;gCAC1B,OAAO,CACL,MAAC,QAAQ,eACP,KAAC,EAAE,cACO,KAAK,WACN,QAAQ,EAAE,CAAC,CAAC,CAAC,IAAI,IAAI,EAC5B,OAAO,EAAE,KAAK,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,UAAU,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,YAE3E,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,KAAC,EAAE,cAAqB,CAAC,CAAC,KAAK,WAAS,CAAC,CAAC,SAAS,YAAG,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,IAAxD,CAAC,CAAC,GAAG,CAAyD,CAAC,GACzF,EACJ,KAAK,CAAC,CAAC,CAAC,uBAAI,KAAC,QAAQ,IAAC,OAAO,EAAE,OAAO,CAAC,MAAM,YAAG,KAAK,GAAY,GAAK,CAAC,CAAC,CAAC,IAAI,KARjE,MAAM,CAAC,CAAC,CAAC,CASb,CACZ,CAAC;4BACJ,CAAC,CAAC,GACI,CACT,CAAC,CAAC,CAAC,IAAI,IACF,GACD,EACR,YAAY,CAAC,CAAC,CAAC,CACd,wBACG,KAAK,CAAC,IAAI,CAAC,EAAE,MAAM,EAAE,YAAY,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAClD,MAAC,WAAW,eACV,KAAC,QAAQ,UAAI,KAAK,GAAG,EAAA,KAAC,QAAQ,UAAI,KAAK,GAAG,EAAA,KAAC,QAAQ,UAAI,IAAI,GAAG,EAAA,KAAC,QAAQ,UAAI,KAAK,GAAG,KADnE,CAAC,CAEL,CACf,CAAC,GACE,CACP,CAAC,CAAC,CAAC,IAAI,EACP,OAAO,CAAC,CAAC,CAAC,KAAC,QAAQ,cAAE,KAAK,GAAY,CAAC,CAAC,CAAC,IAAI,EAC7C,MAAM,IAAI,CAAC,YAAY,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,KAAC,OAAO,cAAE,MAAM,GAAW,CAAC,CAAC,CAAC,IAAI,IACpE,CACR,CAAC;AACJ,CAAC"}
@@ -0,0 +1,37 @@
1
+ import { type ReactNode } from "react";
2
+ export interface FacetOption {
3
+ value: string;
4
+ count: number | bigint;
5
+ /** 0..1 fraction of the total */
6
+ share: number;
7
+ }
8
+ /** compact count: 1234 → "1.2k" */
9
+ export declare function fmtCount(n: number | bigint): string;
10
+ /** share as a percentage: 0.0421 → "4.2%" */
11
+ export declare function fmtShare(share: number): string;
12
+ /**
13
+ * FacetSelect: a multi-select over the values a field takes, each with its
14
+ * count and share. Clearing from the chip is the common case once a filter is
15
+ * set, so the trailing × clears without opening the menu.
16
+ */
17
+ export declare function FacetSelect({ label, options, selected, onChange, loading, unavailable }: {
18
+ label: ReactNode;
19
+ options: FacetOption[];
20
+ selected: string[];
21
+ onChange: (values: string[]) => void;
22
+ loading?: boolean | undefined;
23
+ /**
24
+ * Why this field cannot be offered for what is being viewed. Distinct from
25
+ * having no options: "nothing matched" and "you cannot filter on this here"
26
+ * look identical in an empty menu, and only one is the user's to fix.
27
+ */
28
+ unavailable?: string | undefined;
29
+ }): import("react").JSX.Element;
30
+ /** RankList: ranked rows with a share bar behind each — "top events", "top clients". */
31
+ export declare function RankList({ items, onPick, empty, limit }: {
32
+ items: FacetOption[];
33
+ onPick?: ((value: string) => void) | undefined;
34
+ empty?: string | undefined;
35
+ limit?: number | undefined;
36
+ }): import("react").JSX.Element;
37
+ //# sourceMappingURL=Facet.d.ts.map