@siyahi/ui 0.1.9-next.32 → 0.1.9-next.34
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/DESIGN.md +20 -7
- package/agents/examples/chart-panels-three.tsx +51 -0
- package/agents/examples/context-menu.tsx +14 -4
- package/agents/examples/overview-dashboard.tsx +2 -2
- package/agents/examples/{page-hero.tsx → page-header.tsx} +4 -4
- package/agents/examples/select.tsx +2 -1
- package/agents/manifest.json +16 -3
- package/dist/components/registry/charts/area-chart-card.d.ts +2 -2
- package/dist/components/registry/charts/area-chart-card.js +1 -0
- package/dist/components/registry/charts/bar-chart-card.d.ts +4 -4
- package/dist/components/registry/charts/bar-chart-card.js +0 -2
- package/dist/components/registry/charts/line-chart-card.d.ts +1 -1
- package/dist/components/registry/dashboard-01/section-cards.d.ts +4 -4
- package/dist/components/registry/dashboardcn/bar-list.d.ts +8 -8
- package/dist/components/registry/dashboardcn/distribution-bar.d.ts +11 -11
- package/dist/components/registry/dashboardcn/kpi-row-card.d.ts +4 -4
- package/dist/components/registry/dashboardcn/sparkline.d.ts +6 -6
- package/dist/components/registry/heatmap/calendar-heatmap.d.ts +50 -50
- package/dist/components/registry/heatmap/calendar-heatmap.js +1 -1
- package/dist/components/registry/heatmap/status-heatmap.d.ts +44 -44
- package/dist/components/registry/heatmap/status-heatmap.js +1 -1
- package/dist/components/registry/heatmap/weekday-heatmap.d.ts +53 -53
- package/dist/components/registry/heatmap/weekday-heatmap.js +1 -1
- package/dist/components/registry/minidev/copy-button.d.ts +2 -2
- package/dist/components/registry/niko-table/components/data-table-column-actions.d.ts +1 -1
- package/dist/components/registry/niko-table/components/data-table-column-filter.d.ts +1 -1
- package/dist/components/registry/niko-table/components/data-table-empty-state.d.ts +7 -7
- package/dist/components/registry/niko-table/components/data-table-faceted-filter.d.ts +5 -5
- package/dist/components/registry/niko-table/components/data-table-grouped-rows.d.ts +1 -1
- package/dist/components/registry/niko-table/components/data-table-row-context-menu-slot.d.ts +1 -1
- package/dist/components/registry/niko-table/components/data-table-row-context-menu.d.ts +1 -1
- package/dist/components/registry/niko-table/config/feature-detection.d.ts +13 -13
- package/dist/components/registry/niko-table/core/data-table-context.d.ts +5 -5
- package/dist/components/registry/niko-table/core/data-table-error-boundary.d.ts +3 -3
- package/dist/components/registry/niko-table/core/data-table-grouped-row.d.ts +2 -2
- package/dist/components/registry/niko-table/core/data-table-root.d.ts +36 -35
- package/dist/components/registry/niko-table/core/data-table-structure.d.ts +22 -22
- package/dist/components/registry/niko-table/core/data-table-structure.js +6 -0
- package/dist/components/registry/niko-table/core/data-table.d.ts +3 -3
- package/dist/components/registry/niko-table/core/data-table.js +1 -1
- package/dist/components/registry/niko-table/filters/table-column-actions.d.ts +5 -5
- package/dist/components/registry/niko-table/filters/table-column-sort.d.ts +6 -6
- package/dist/components/registry/niko-table/filters/table-column-sort.js +2 -2
- package/dist/components/registry/niko-table/filters/table-column-title.d.ts +2 -2
- package/dist/components/registry/niko-table/filters/table-faceted-filter.d.ts +9 -9
- package/dist/components/registry/niko-table/filters/table-faceted-filter.js +1 -1
- package/dist/components/registry/niko-table/filters/table-search-filter.d.ts +7 -7
- package/dist/components/registry/niko-table/hooks/use-generated-options.d.ts +7 -7
- package/dist/components/registry/niko-table/lib/build-faceted-options.d.ts +2 -2
- package/dist/components/registry/niko-table/lib/column-resize-handle.d.ts +3 -3
- package/dist/components/registry/niko-table/lib/column-resize-handle.js +1 -1
- package/dist/components/registry/niko-table/lib/create-scroll-handler.d.ts +4 -4
- package/dist/components/registry/niko-table/types/index.d.ts +29 -29
- package/dist/components/registry/sidebar-07/app-sidebar.d.ts +6 -5
- package/dist/components/registry/sidebar-07/nav-main.d.ts +4 -4
- package/dist/components/registry/sidebar-07/nav-user.js +16 -19
- package/dist/components/siyahi/callout.d.ts +1 -1
- package/dist/components/siyahi/change-bar.d.ts +3 -3
- package/dist/components/siyahi/change-grid.d.ts +6 -6
- package/dist/components/siyahi/data-bar.d.ts +2 -2
- package/dist/components/siyahi/data-list.d.ts +1 -1
- package/dist/components/siyahi/data-table-row-count.d.ts +1 -1
- package/dist/components/siyahi/data-table-sort-header.d.ts +1 -1
- package/dist/components/siyahi/delta.d.ts +2 -2
- package/dist/components/siyahi/drawdown-chart.d.ts +2 -2
- package/dist/components/siyahi/histogram-chart.d.ts +5 -5
- package/dist/components/siyahi/local-time.d.ts +1 -1
- package/dist/components/siyahi/{page-hero.d.ts → page-header.d.ts} +3 -3
- package/dist/components/siyahi/{page-hero.js → page-header.js} +4 -4
- package/dist/components/siyahi/page-section.d.ts +1 -1
- package/dist/components/siyahi/page-toc.d.ts +2 -2
- package/dist/components/siyahi/panel-grid.d.ts +7 -4
- package/dist/components/siyahi/panel-grid.js +1 -1
- package/dist/components/siyahi/price-chart.d.ts +1 -1
- package/dist/components/siyahi/range-position.d.ts +5 -5
- package/dist/components/siyahi/range-position.js +1 -1
- package/dist/components/siyahi/scale-toggle.d.ts +2 -2
- package/dist/components/siyahi/scatter-chart.d.ts +15 -15
- package/dist/components/siyahi/scatter-chart.js +14 -1
- package/dist/components/siyahi/siyahi-provider.d.ts +3 -2
- package/dist/components/siyahi/siyahi-provider.js +1 -4
- package/dist/components/siyahi/slope-chart.d.ts +4 -4
- package/dist/components/siyahi/status-alert.d.ts +1 -1
- package/dist/components/siyahi/status-badge.d.ts +1 -1
- package/dist/components/siyahi/target-rows.d.ts +6 -6
- package/dist/components/siyahi/target-rows.js +2 -2
- package/dist/components/siyahi/treemap.d.ts +8 -8
- package/dist/components/siyahi/treemap.js +0 -3
- package/dist/components/siyahi/waterfall-chart.d.ts +3 -3
- package/dist/index.d.ts +2 -2
- package/dist/index.js +2 -2
- package/dist/lib/chart-frame.d.ts +48 -20
- package/dist/lib/chart-frame.js +60 -30
- package/dist/lib/chart-marks.d.ts +2 -2
- package/dist/lib/chart-series.d.ts +25 -24
- package/dist/lib/format.d.ts +1 -1
- package/dist/lib/optional.d.ts +7 -0
- package/dist/lib/optional.js +0 -0
- package/dist/lib/scatter.d.ts +7 -7
- package/dist/lib/ticks.d.ts +9 -0
- package/dist/lib/ticks.js +25 -3
- package/dist/lib/treemap.d.ts +1 -1
- package/dist/lib/use-render-when-fonts-load.d.ts +11 -0
- package/dist/lib/use-render-when-fonts-load.js +49 -0
- package/package.json +2 -2
- package/report.css +1 -0
- package/styles/siyahi.css +51 -4
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import { Optional } from "../../lib/optional.js";
|
|
1
2
|
import { SiyahiLocale } from "../../lib/locale.js";
|
|
2
3
|
import { ReactNode } from "react";
|
|
3
4
|
//#region src/components/siyahi/siyahi-provider.d.ts
|
|
@@ -10,12 +11,12 @@ import { ReactNode } from "react";
|
|
|
10
11
|
export type Surface = "ruled" | "card" | "open";
|
|
11
12
|
export interface SiyahiProviderProps {
|
|
12
13
|
/** Any setting left out keeps its default: en-IN, INR, Asia/Kolkata. */
|
|
13
|
-
locale?:
|
|
14
|
+
locale?: Optional<SiyahiLocale> | undefined;
|
|
14
15
|
/**
|
|
15
16
|
* Set it on a nested provider for one part of a page. Left out, a provider keeps the surface around it, so a
|
|
16
17
|
* provider that only changes the locale changes nothing else; the outermost default is "ruled".
|
|
17
18
|
*/
|
|
18
|
-
surface?: Surface;
|
|
19
|
+
surface?: Surface | undefined;
|
|
19
20
|
children: ReactNode;
|
|
20
21
|
}
|
|
21
22
|
/** Wrap the app once. Carries the locale, the surface and the tooltip provider shadcn asks for. */
|
|
@@ -7,10 +7,7 @@ const LocaleContext = createContext(defaultLocale);
|
|
|
7
7
|
const SurfaceContext = createContext("ruled");
|
|
8
8
|
/** Wrap the app once. Carries the locale, the surface and the tooltip provider shadcn asks for. */
|
|
9
9
|
function SiyahiProvider({ locale, surface, children }) {
|
|
10
|
-
const { numberLocale, currency, timeZone } = {
|
|
11
|
-
...defaultLocale,
|
|
12
|
-
...locale
|
|
13
|
-
};
|
|
10
|
+
const { numberLocale = defaultLocale.numberLocale, currency = defaultLocale.currency, timeZone = defaultLocale.timeZone } = locale ?? {};
|
|
14
11
|
const value = useMemo(() => ({
|
|
15
12
|
numberLocale,
|
|
16
13
|
currency,
|
|
@@ -6,7 +6,7 @@ export interface SlopeItem {
|
|
|
6
6
|
/** The value on the right: after, or our own figure. */
|
|
7
7
|
to: number;
|
|
8
8
|
/** Unique key when names repeat. Defaults to `name`. */
|
|
9
|
-
key?: string;
|
|
9
|
+
key?: string | undefined;
|
|
10
10
|
}
|
|
11
11
|
export interface SlopeChartProps {
|
|
12
12
|
/** An item whose from or to is not a finite number is not drawn: say on the page how many are left out. */
|
|
@@ -16,10 +16,10 @@ export interface SlopeChartProps {
|
|
|
16
16
|
/** Heads the right side, such as "Portfolio" or "2026". */
|
|
17
17
|
toLabel: string;
|
|
18
18
|
/** Keys (or names) of the items to draw in the accent colour; the rest stay grey. */
|
|
19
|
-
highlighted?: readonly string[];
|
|
19
|
+
highlighted?: readonly string[] | undefined;
|
|
20
20
|
/** Writes each end's value; useFormat().pct by default. */
|
|
21
|
-
valueFormatter?: (value: number) => string;
|
|
22
|
-
className?: string;
|
|
21
|
+
valueFormatter?: ((value: number) => string) | undefined;
|
|
22
|
+
className?: string | undefined;
|
|
23
23
|
}
|
|
24
24
|
/**
|
|
25
25
|
* Pushes labels apart so none sits closer than `gap` to the next, keeping their order and staying inside [min, max]:
|
|
@@ -4,7 +4,7 @@ import { ComponentProps } from "react";
|
|
|
4
4
|
//#region src/components/siyahi/status-alert.d.ts
|
|
5
5
|
export interface StatusAlertProps extends Omit<ComponentProps<typeof Alert>, "variant"> {
|
|
6
6
|
/** neutral for information, warning for a caution, negative for an error, positive for a success. */
|
|
7
|
-
tone?: Tone;
|
|
7
|
+
tone?: Tone | undefined;
|
|
8
8
|
}
|
|
9
9
|
/**
|
|
10
10
|
* A notice the reader must not miss: the whole card takes its tone, a faint wash inside a border of the same colour,
|
|
@@ -4,7 +4,7 @@ import { ComponentProps } from "react";
|
|
|
4
4
|
//#region src/components/siyahi/status-badge.d.ts
|
|
5
5
|
export interface StatusBadgeProps extends Omit<ComponentProps<typeof Badge>, "variant"> {
|
|
6
6
|
/** positive for done or paid, warning for pending, negative for failed, accent for new, neutral for a draft. */
|
|
7
|
-
tone?: Tone;
|
|
7
|
+
tone?: Tone | undefined;
|
|
8
8
|
}
|
|
9
9
|
/**
|
|
10
10
|
* A state, such as Paid, Pending or Failed: the badge takes its tone's wash and border, and a dot in the tone's
|
|
@@ -13,18 +13,18 @@ export interface TargetRow {
|
|
|
13
13
|
value: number;
|
|
14
14
|
target: number;
|
|
15
15
|
/** Qualitative ranges behind the bar as [from, to]; each later band draws a grey step darker, so nest them. */
|
|
16
|
-
bands?: [number, number][];
|
|
17
|
-
status?: TargetStatus;
|
|
16
|
+
bands?: [number, number][] | undefined;
|
|
17
|
+
status?: TargetStatus | undefined;
|
|
18
18
|
/** Tells rows apart when labels are not plain unique text. */
|
|
19
|
-
key?: string;
|
|
19
|
+
key?: string | undefined;
|
|
20
20
|
}
|
|
21
21
|
export interface TargetRowsProps {
|
|
22
22
|
rows: TargetRow[];
|
|
23
23
|
/** The scale every row shares; by default 0 to the largest value, target or band edge. */
|
|
24
|
-
domain?: [number, number];
|
|
24
|
+
domain?: [number, number] | undefined;
|
|
25
25
|
/** Writes the value and the target; useFormat().count by default. */
|
|
26
|
-
valueFormatter?: (value: number) => string;
|
|
27
|
-
className?: string;
|
|
26
|
+
valueFormatter?: ((value: number) => string) | undefined;
|
|
27
|
+
className?: string | undefined;
|
|
28
28
|
}
|
|
29
29
|
/**
|
|
30
30
|
* Bullet rows: each row's label, value and status beside a track where the value is a solid bar, the target a tall
|
|
@@ -37,7 +37,7 @@ function TargetRows({ rows, domain, valueFormatter, className }) {
|
|
|
37
37
|
/* @__PURE__ */ jsxs("div", {
|
|
38
38
|
className: "flex items-baseline justify-between gap-3",
|
|
39
39
|
children: [/* @__PURE__ */ jsx("span", {
|
|
40
|
-
className: "
|
|
40
|
+
className: "min-w-0 font-medium wrap-anywhere",
|
|
41
41
|
children: row.label
|
|
42
42
|
}), /* @__PURE__ */ jsx("span", {
|
|
43
43
|
className: "shrink-0 text-base font-semibold tabular-nums",
|
|
@@ -47,7 +47,7 @@ function TargetRows({ rows, domain, valueFormatter, className }) {
|
|
|
47
47
|
/* @__PURE__ */ jsxs("div", {
|
|
48
48
|
className: "flex justify-between gap-3 text-muted-foreground",
|
|
49
49
|
children: [/* @__PURE__ */ jsx("span", {
|
|
50
|
-
className: "
|
|
50
|
+
className: "min-w-0 wrap-anywhere",
|
|
51
51
|
children: row.detail
|
|
52
52
|
}), /* @__PURE__ */ jsxs("span", {
|
|
53
53
|
className: "shrink-0 tabular-nums",
|
|
@@ -6,35 +6,35 @@ export interface TreemapItem {
|
|
|
6
6
|
/** Signed change as a fraction; sets the heat. `null` when unknown: a muted tile marked "—". */
|
|
7
7
|
change: number | null;
|
|
8
8
|
/** Unique key when names repeat, such as one city sold to online and in stores. Defaults to `name`. */
|
|
9
|
-
key?: string;
|
|
9
|
+
key?: string | undefined;
|
|
10
10
|
/** Tiles of one group, such as a region, sit together under the group's name, even a group of one. */
|
|
11
|
-
group?: string;
|
|
11
|
+
group?: string | undefined;
|
|
12
12
|
}
|
|
13
13
|
export interface TreemapProps<T extends TreemapItem> {
|
|
14
14
|
items: T[];
|
|
15
15
|
height: number;
|
|
16
16
|
/** ±range: the change, as a fraction, that takes the deepest heat step. Default 0.05 (±5%); a range that is not a positive number uses the default. */
|
|
17
|
-
range?: number;
|
|
17
|
+
range?: number | undefined;
|
|
18
18
|
/**
|
|
19
19
|
* Gets the item under a mouse, and null when it moves onto a group's name or leaves the map. A tap fires no hover:
|
|
20
20
|
* on a touch screen it selects, so the page shows the tile in place rather than in a card at the finger.
|
|
21
21
|
*/
|
|
22
|
-
onHover?: (item: T | null) => void;
|
|
22
|
+
onHover?: ((item: T | null) => void) | undefined;
|
|
23
23
|
/** The selected item, matched by key, whose tile carries a ring. Pass back what onSelect gave. */
|
|
24
|
-
selected?: T | null;
|
|
24
|
+
selected?: T | null | undefined;
|
|
25
25
|
/**
|
|
26
26
|
* Gets the item whose tile is tapped or clicked, and null when the selected
|
|
27
27
|
* tile is tapped again or a tap lands anywhere else. On a touch screen, which
|
|
28
28
|
* has no hover, this is how a reader gets a tile's figures.
|
|
29
29
|
*/
|
|
30
|
-
onSelect?: (item: T | null) => void;
|
|
30
|
+
onSelect?: ((item: T | null) => void) | undefined;
|
|
31
31
|
}
|
|
32
32
|
/** Heat map of parts of a whole: area by weight, colour by signed change, optionally grouped; hand-drawn SVG. */
|
|
33
33
|
export declare function Treemap<T extends TreemapItem>({ items, height, range, onHover, selected, onSelect }: TreemapProps<T>): import("react").JSX.Element;
|
|
34
34
|
export interface TreemapLegendProps {
|
|
35
35
|
/** The Treemap's own range, so each swatch matches its tiles. */
|
|
36
|
-
range?: number;
|
|
37
|
-
className?: string;
|
|
36
|
+
range?: number | undefined;
|
|
37
|
+
className?: string | undefined;
|
|
38
38
|
}
|
|
39
39
|
/** The Treemap's colour scale under the map: five steps of loss, no change, five steps of gain, deepest at the ends. */
|
|
40
40
|
export declare function TreemapLegend({ range, className }: TreemapLegendProps): import("react").JSX.Element;
|
|
@@ -108,7 +108,6 @@ function Treemap({ items, height, range, onHover, selected, onSelect }) {
|
|
|
108
108
|
/* @__PURE__ */ jsx("rect", {
|
|
109
109
|
width: "100%",
|
|
110
110
|
height: "100%",
|
|
111
|
-
rx: 4,
|
|
112
111
|
style: { fill: heat(item.change, range) }
|
|
113
112
|
}),
|
|
114
113
|
key === selectedKey && /* @__PURE__ */ jsx("rect", {
|
|
@@ -116,7 +115,6 @@ function Treemap({ items, height, range, onHover, selected, onSelect }) {
|
|
|
116
115
|
y: 1,
|
|
117
116
|
width: box.width - 2,
|
|
118
117
|
height: box.height - 2,
|
|
119
|
-
rx: 3,
|
|
120
118
|
fill: "none",
|
|
121
119
|
strokeWidth: 2,
|
|
122
120
|
className: "stroke-foreground"
|
|
@@ -150,7 +148,6 @@ function Swatch({ label, fill }) {
|
|
|
150
148
|
children: [/* @__PURE__ */ jsx("title", { children: label }), /* @__PURE__ */ jsx("rect", {
|
|
151
149
|
width: "100%",
|
|
152
150
|
height: "100%",
|
|
153
|
-
rx: 2,
|
|
154
151
|
style: { fill }
|
|
155
152
|
})]
|
|
156
153
|
});
|
|
@@ -12,7 +12,7 @@ export type WaterfallStep = {
|
|
|
12
12
|
} | {
|
|
13
13
|
kind: "total";
|
|
14
14
|
label: string;
|
|
15
|
-
value?: number;
|
|
15
|
+
value?: number | undefined;
|
|
16
16
|
};
|
|
17
17
|
/** A step as drawn: the running total after it, and the span its bar covers. */
|
|
18
18
|
export interface WaterfallBar {
|
|
@@ -35,13 +35,13 @@ export interface WaterfallChartCardProps extends Pick<SeriesChartProps<Waterfall
|
|
|
35
35
|
/** The bars in order: usually a total to start from, the changes, and a total to end on. */
|
|
36
36
|
steps: readonly WaterfallStep[];
|
|
37
37
|
/** Bars run sideways with the labels down the left, for long names such as product categories. */
|
|
38
|
-
horizontal?: boolean;
|
|
38
|
+
horizontal?: boolean | undefined;
|
|
39
39
|
/** What the legend calls each kind of bar. */
|
|
40
40
|
labels?: {
|
|
41
41
|
rise: string;
|
|
42
42
|
fall: string;
|
|
43
43
|
total: string;
|
|
44
|
-
};
|
|
44
|
+
} | undefined;
|
|
45
45
|
}
|
|
46
46
|
/**
|
|
47
47
|
* A running total bridged step by step: where it starts, each change that moved it, and where it ends, such as a
|
package/dist/index.d.ts
CHANGED
|
@@ -64,7 +64,7 @@ import { DrawdownChartCard, DrawdownChartCardProps, DrawdownPoint, drawdowns } f
|
|
|
64
64
|
import { HistogramBin, HistogramChartCard, HistogramChartCardProps, HistogramMark, bucketOf, histogram, markLines, percentile } from "./components/siyahi/histogram-chart.js";
|
|
65
65
|
import { InlineCode } from "./components/siyahi/inline-code.js";
|
|
66
66
|
import { LocalTime, LocalTimeProps } from "./components/siyahi/local-time.js";
|
|
67
|
-
import {
|
|
67
|
+
import { PageHeader, PageHeaderProps } from "./components/siyahi/page-header.js";
|
|
68
68
|
import { PageSection, PageSectionProps, PageSubheading } from "./components/siyahi/page-section.js";
|
|
69
69
|
import { PageToc, PageTocItem, PageTocProps } from "./components/siyahi/page-toc.js";
|
|
70
70
|
import { PanelGrid, PanelGridProps } from "./components/siyahi/panel-grid.js";
|
|
@@ -112,4 +112,4 @@ import { Textarea } from "./components/ui/textarea.js";
|
|
|
112
112
|
import { Toggle, toggleVariants } from "./components/ui/toggle.js";
|
|
113
113
|
import { ToggleGroup, ToggleGroupItem } from "./components/ui/toggle-group.js";
|
|
114
114
|
import { Formatters, TimeOptions, count, money, moneyCompact, pct, time, useFormat } from "./lib/format.js";
|
|
115
|
-
export { Accordion, AccordionContent, AccordionItem, AccordionTrigger, ActiveCell, ActiveSelection, Activity, Alert, AlertAction, AlertDescription, AlertTitle, AppSidebar, AppSidebarProps, AreaChartCard, AreaChartCardProps, Avatar, AvatarBadge, AvatarFallback, AvatarGroup, AvatarGroupCount, AvatarImage, AxisScaleOptions, Badge, BarChartCard, BarChartCardProps, BarList, BarListItem, BarListProps, Breadcrumb, BreadcrumbEllipsis, BreadcrumbItem, BreadcrumbLink, BreadcrumbList, BreadcrumbPage, BreadcrumbSeparator, Button, Calendar, CalendarDayButton, CalendarHeatmap, CalendarHeatmapBlock, CalendarHeatmapBlockProps, CalendarHeatmapBody, CalendarHeatmapBodyProps, CalendarHeatmapFooter, CalendarHeatmapFooterProps, CalendarHeatmapLegend, CalendarHeatmapLegendProps, CalendarHeatmapProps, CalendarHeatmapStat, CalendarHeatmapStatProps, Callout, CalloutProps, Card, CardAction, CardContent, CardDescription, CardFooter, CardHeader, CardTitle, ChangeBar, ChangeBarProps, ChangeGrid, ChangeGridProps, ChangeGridRow, ChartColor, ChartConfig, ChartContainer, ChartCurve, ChartLegend, ChartLegendContent, ChartReferenceLine, ChartSeries, ChartSeriesItem, ChartStyle, ChartTooltip, ChartTooltipContent, CodeBlock, CodeBlockActions, CodeBlockContent, CodeBlockCopyButton, CodeBlockFooter, CodeBlockHeader, CodeBlockLine, CodeBlockTitle, Collapsible, CollapsibleContent, CollapsibleTrigger, ColorConfig, ColumnResizeInfo, Command, CommandDialog, CommandEmpty, CommandGroup, CommandInput, CommandItem, CommandList, CommandSeparator, CommandShortcut, CompactColumns, ContextMenu, ContextMenuCheckboxItem, ContextMenuContent, ContextMenuGroup, ContextMenuItem, ContextMenuLabel, ContextMenuPortal, ContextMenuRadioGroup, ContextMenuRadioItem, ContextMenuSeparator, ContextMenuShortcut, ContextMenuSub, ContextMenuSubContent, ContextMenuSubTrigger, ContextMenuTrigger, CopyButton, DataBar, DataBarProps, DataList, DataListItem, DataListItemProps, DataTable, DataTableActions, DataTableBody, DataTableBodyProps, type DataTableCell, type DataTableColumn, DataTableColumnActions, type DataTableColumnDef, DataTableColumnFilter, DataTableColumnHeader, DataTableColumnHeaderProps, DataTableColumnHeaderRoot, DataTableColumnSortMenu, DataTableColumnSortOptions, DataTableColumnTitle, type DataTableColumns, DataTableCompactColumnsToggle, DataTableConfig, DataTableContainerProps, DataTableContext, DataTableContextState, DataTableEmptyActions, DataTableEmptyActionsProps, DataTableEmptyBody, DataTableEmptyBodyProps, DataTableEmptyDescription, DataTableEmptyDescriptionProps, DataTableEmptyFilteredMessage, DataTableEmptyFilteredMessageProps, DataTableEmptyIcon, DataTableEmptyIconProps, DataTableEmptyMessage, DataTableEmptyMessageProps, DataTableEmptyState, DataTableEmptyStateProps, DataTableEmptyTitle, DataTableEmptyTitleProps, DataTableErrorBoundary, DataTableErrorBoundaryProps, DataTableFacetedFilter, DataTableFacetedFilterContent, DataTableFootnote, DataTableFootnoteProps, DataTableGroupRowContextValue, DataTableGroupRowProvider, DataTableGroupedRowCells, DataTableGroupedRows, DataTableGroupedRowsProps, DataTableHeader, type DataTableHeader$1 as DataTableHeaderCell, DataTableHeaderProps, type DataTableInstance, DataTableLoading, DataTableLoadingMore, DataTableLoadingMoreProps, DataTableLoadingProps, DataTableProvider, DataTableRoot, type DataTableRow, DataTableRowContextMenu, DataTableRowContextMenuProps, DataTableRowContextMenuSlot, DataTableRowContextMenuSlotProps, DataTableRowCount, DataTableRowCountProps, DataTableRowMenuScope, DataTableSearchFilter, DataTableSkeleton, DataTableSkeletonProps, DataTableSortHeader, DataTableToolbarSection, DataTableToolbarSectionProps, Delta, DeltaProps, Dialog, DialogClose, DialogContent, DialogDescription, DialogFooter, DialogHeader, DialogOverlay, DialogPortal, DialogTitle, DialogTrigger, DistributionBar, DistributionBarProps, DistributionMarker, DistributionSegment, DrawdownChartCard, DrawdownChartCardProps, DrawdownPoint, DropdownMenu, DropdownMenuCheckboxItem, DropdownMenuContent, DropdownMenuGroup, DropdownMenuItem, DropdownMenuLabel, DropdownMenuPortal, DropdownMenuRadioGroup, DropdownMenuRadioItem, DropdownMenuSeparator, DropdownMenuShortcut, DropdownMenuSub, DropdownMenuSubContent, DropdownMenuSubTrigger, DropdownMenuTrigger, type ExtendedColumnFilter, type ExtendedColumnSort, Field, FieldContent, FieldDescription, FieldError, FieldGroup, FieldLabel, FieldLegend, FieldSeparator, FieldSet, FieldTitle, type FilterOperator, type FilterOperatorValues, type FilterVariant, type FilterVariantValues, FlashCellRef, FlashCells, FlashRows, FlashRowsOptions, Formatters, type GlobalFilter, GroupedBodyRow, GroupedBodyRowProps, HistogramBin, HistogramChartCard, HistogramChartCardProps, HistogramMark, InlineCode, Input, InputGroup, InputGroupAddon, InputGroupButton, InputGroupInput, InputGroupText, InputGroupTextarea, type JoinOperator, type JoinOperatorValues, LOG_BLOCKED, Label, Labels, LineChartCard, LineChartCardProps, LineMarksProps, LocalTime, LocalTimeProps, MetricStrip, MetricStripItem, MetricStripProps, NavMain, NavProjects, NavUser, NumericKey, NumericXProps, type Option,
|
|
115
|
+
export { Accordion, AccordionContent, AccordionItem, AccordionTrigger, ActiveCell, ActiveSelection, Activity, Alert, AlertAction, AlertDescription, AlertTitle, AppSidebar, AppSidebarProps, AreaChartCard, AreaChartCardProps, Avatar, AvatarBadge, AvatarFallback, AvatarGroup, AvatarGroupCount, AvatarImage, AxisScaleOptions, Badge, BarChartCard, BarChartCardProps, BarList, BarListItem, BarListProps, Breadcrumb, BreadcrumbEllipsis, BreadcrumbItem, BreadcrumbLink, BreadcrumbList, BreadcrumbPage, BreadcrumbSeparator, Button, Calendar, CalendarDayButton, CalendarHeatmap, CalendarHeatmapBlock, CalendarHeatmapBlockProps, CalendarHeatmapBody, CalendarHeatmapBodyProps, CalendarHeatmapFooter, CalendarHeatmapFooterProps, CalendarHeatmapLegend, CalendarHeatmapLegendProps, CalendarHeatmapProps, CalendarHeatmapStat, CalendarHeatmapStatProps, Callout, CalloutProps, Card, CardAction, CardContent, CardDescription, CardFooter, CardHeader, CardTitle, ChangeBar, ChangeBarProps, ChangeGrid, ChangeGridProps, ChangeGridRow, ChartColor, ChartConfig, ChartContainer, ChartCurve, ChartLegend, ChartLegendContent, ChartReferenceLine, ChartSeries, ChartSeriesItem, ChartStyle, ChartTooltip, ChartTooltipContent, CodeBlock, CodeBlockActions, CodeBlockContent, CodeBlockCopyButton, CodeBlockFooter, CodeBlockHeader, CodeBlockLine, CodeBlockTitle, Collapsible, CollapsibleContent, CollapsibleTrigger, ColorConfig, ColumnResizeInfo, Command, CommandDialog, CommandEmpty, CommandGroup, CommandInput, CommandItem, CommandList, CommandSeparator, CommandShortcut, CompactColumns, ContextMenu, ContextMenuCheckboxItem, ContextMenuContent, ContextMenuGroup, ContextMenuItem, ContextMenuLabel, ContextMenuPortal, ContextMenuRadioGroup, ContextMenuRadioItem, ContextMenuSeparator, ContextMenuShortcut, ContextMenuSub, ContextMenuSubContent, ContextMenuSubTrigger, ContextMenuTrigger, CopyButton, DataBar, DataBarProps, DataList, DataListItem, DataListItemProps, DataTable, DataTableActions, DataTableBody, DataTableBodyProps, type DataTableCell, type DataTableColumn, DataTableColumnActions, type DataTableColumnDef, DataTableColumnFilter, DataTableColumnHeader, DataTableColumnHeaderProps, DataTableColumnHeaderRoot, DataTableColumnSortMenu, DataTableColumnSortOptions, DataTableColumnTitle, type DataTableColumns, DataTableCompactColumnsToggle, DataTableConfig, DataTableContainerProps, DataTableContext, DataTableContextState, DataTableEmptyActions, DataTableEmptyActionsProps, DataTableEmptyBody, DataTableEmptyBodyProps, DataTableEmptyDescription, DataTableEmptyDescriptionProps, DataTableEmptyFilteredMessage, DataTableEmptyFilteredMessageProps, DataTableEmptyIcon, DataTableEmptyIconProps, DataTableEmptyMessage, DataTableEmptyMessageProps, DataTableEmptyState, DataTableEmptyStateProps, DataTableEmptyTitle, DataTableEmptyTitleProps, DataTableErrorBoundary, DataTableErrorBoundaryProps, DataTableFacetedFilter, DataTableFacetedFilterContent, DataTableFootnote, DataTableFootnoteProps, DataTableGroupRowContextValue, DataTableGroupRowProvider, DataTableGroupedRowCells, DataTableGroupedRows, DataTableGroupedRowsProps, DataTableHeader, type DataTableHeader$1 as DataTableHeaderCell, DataTableHeaderProps, type DataTableInstance, DataTableLoading, DataTableLoadingMore, DataTableLoadingMoreProps, DataTableLoadingProps, DataTableProvider, DataTableRoot, type DataTableRow, DataTableRowContextMenu, DataTableRowContextMenuProps, DataTableRowContextMenuSlot, DataTableRowContextMenuSlotProps, DataTableRowCount, DataTableRowCountProps, DataTableRowMenuScope, DataTableSearchFilter, DataTableSkeleton, DataTableSkeletonProps, DataTableSortHeader, DataTableToolbarSection, DataTableToolbarSectionProps, Delta, DeltaProps, Dialog, DialogClose, DialogContent, DialogDescription, DialogFooter, DialogHeader, DialogOverlay, DialogPortal, DialogTitle, DialogTrigger, DistributionBar, DistributionBarProps, DistributionMarker, DistributionSegment, DrawdownChartCard, DrawdownChartCardProps, DrawdownPoint, DropdownMenu, DropdownMenuCheckboxItem, DropdownMenuContent, DropdownMenuGroup, DropdownMenuItem, DropdownMenuLabel, DropdownMenuPortal, DropdownMenuRadioGroup, DropdownMenuRadioItem, DropdownMenuSeparator, DropdownMenuShortcut, DropdownMenuSub, DropdownMenuSubContent, DropdownMenuSubTrigger, DropdownMenuTrigger, type ExtendedColumnFilter, type ExtendedColumnSort, Field, FieldContent, FieldDescription, FieldError, FieldGroup, FieldLabel, FieldLegend, FieldSeparator, FieldSet, FieldTitle, type FilterOperator, type FilterOperatorValues, type FilterVariant, type FilterVariantValues, FlashCellRef, FlashCells, FlashRows, FlashRowsOptions, Formatters, type GlobalFilter, GroupedBodyRow, GroupedBodyRowProps, HistogramBin, HistogramChartCard, HistogramChartCardProps, HistogramMark, InlineCode, Input, InputGroup, InputGroupAddon, InputGroupButton, InputGroupInput, InputGroupText, InputGroupTextarea, type JoinOperator, type JoinOperatorValues, LOG_BLOCKED, Label, Labels, LineChartCard, LineChartCardProps, LineMarksProps, LocalTime, LocalTimeProps, MetricStrip, MetricStripItem, MetricStripProps, NavMain, NavProjects, NavUser, NumericKey, NumericXProps, type Option, PageHeader, PageHeaderProps, PageSection, PageSectionProps, PageSubheading, PageToc, PageTocItem, PageTocProps, PanelGrid, PanelGridProps, Popover, PopoverContent, PopoverDescription, PopoverHeader, PopoverTitle, PopoverTrigger, PriceChart, PriceChartProps, Progress, ProgressIndicator, ProgressLabel, ProgressTrack, ProgressValue, type QueryKeys, Quote, QuoteProps, RangePosition, RangePositionProps, RowMenuGroup, RowMenuItem, RowMenuLabel, RowMenuSeparator, RowMenuSub, RowMenuSubContent, RowMenuSubTrigger, ScaleToggle, ScaleToggleProps, ScatterChartCard, ScatterChartCardProps, ScatterDetail, ScatterPoint, type ScatterQuadrants, ScrollAlign, ScrollArea, ScrollBar, type ScrollEvent, ScrollRowIntoView, SectionCard, SectionCards, SectionCardsProps, Select, SelectContent, SelectGroup, SelectItem, SelectLabel, SelectScrollDownButton, SelectScrollUpButton, SelectSeparator, SelectTrigger, SelectValue, Separator, SeriesChartProps, Sheet, SheetClose, SheetContent, SheetDescription, SheetFooter, SheetHeader, 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, SiyahiLocale, SiyahiProvider, SiyahiProviderProps, Skeleton, Slider, SlopeChart, SlopeChartProps, SlopeItem, Sparkline, SparklineProps, StaleNote, StaleNoteProps, StatusActivity, StatusAlert, StatusAlertProps, StatusBadge, StatusBadgeProps, StatusColorConfig, StatusHeatmap, StatusHeatmapBlock, StatusHeatmapBlockProps, StatusHeatmapBody, StatusHeatmapBodyProps, StatusHeatmapFooter, StatusHeatmapFooterProps, StatusHeatmapLabels, StatusHeatmapLegend, StatusHeatmapLegendProps, StatusHeatmapProps, StatusHeatmapStat, StatusHeatmapStatProps, StatusValue, Surface, Table, TableBody, TableCaption, TableCell, TableColumnActions, TableColumnActionsProps, TableColumnSortMenu, TableColumnSortOptions, TableColumnTitle, TableFacetedFilter, TableFacetedFilterContent, TableFacetedFilterProps, TableFooter, TableHead, TableHeader, TableRow, TableSearchFilter, TableSearchFilterProps, Tabs, TabsContent, TabsList, TabsTrigger, TargetRow, TargetRows, TargetRowsProps, TargetStatus, TeamSwitcher, Textarea, TimeOptions, Toggle, ToggleGroup, ToggleGroupItem, ToneProgress, ToneProgressProps, Tooltip, TooltipContent, TooltipProvider, TooltipTrigger, Treemap, TreemapItem, TreemapLegend, TreemapLegendProps, TreemapProps, type ValueOf, ValueScaleProps, WaterfallBar, WaterfallChartCard, WaterfallChartCardProps, WaterfallStep, type ColorConfig$1 as WeekdayColorConfig, type WeekdayExtraColumnSpec, type WeekdayExtraRowSpec, WeekdayHeatmap, WeekdayHeatmapBlock, type WeekdayHeatmapBlockProps, WeekdayHeatmapBody, type WeekdayHeatmapBodyProps, WeekdayHeatmapFooter, type WeekdayHeatmapFooterProps, type WeekdayHeatmapLabels, WeekdayHeatmapLegend, type WeekdayHeatmapLegendProps, type WeekdayHeatmapProps, WeekdayHeatmapStat, type WeekdayHeatmapStatProps, type WeekdayHour, type WeekdayHourlyActivity, type WeekdayIndex, badgeVariants, bucketOf, buttonVariants, count, defaultLocale, defaultSidebarOpen, drawdowns, flashCellKey, histogram, markLines, money, moneyCompact, pct, percentile, resolveGroupedRowsSlot, resolveRowContextMenuRenderer, spread, tabsListVariants, time, toggleVariants, useAxisScale, useColumnHeaderContext, useColumnResizeInfo, useDataTable, useDataTableActiveCell, useDataTableActiveCellSetter, useDataTableGroupRow, useDataTableRow, useFormat, useLocale, useResolvedRowContextMenuRenderer, useSidebar, useSurface, useTableFacetedFilter, waterfallBars };
|
package/dist/index.js
CHANGED
|
@@ -93,7 +93,7 @@ import { DrawdownChartCard, drawdowns } from "./components/siyahi/drawdown-chart
|
|
|
93
93
|
import { HistogramChartCard, bucketOf, histogram, markLines, percentile } from "./components/siyahi/histogram-chart.js";
|
|
94
94
|
import { InlineCode } from "./components/siyahi/inline-code.js";
|
|
95
95
|
import { LocalTime } from "./components/siyahi/local-time.js";
|
|
96
|
-
import {
|
|
96
|
+
import { PageHeader } from "./components/siyahi/page-header.js";
|
|
97
97
|
import { PageSection, PageSubheading } from "./components/siyahi/page-section.js";
|
|
98
98
|
import { PageToc } from "./components/siyahi/page-toc.js";
|
|
99
99
|
import { PanelGrid } from "./components/siyahi/panel-grid.js";
|
|
@@ -108,4 +108,4 @@ import { TargetRows } from "./components/siyahi/target-rows.js";
|
|
|
108
108
|
import { ToneProgress } from "./components/siyahi/tone-progress.js";
|
|
109
109
|
import { Treemap, TreemapLegend } from "./components/siyahi/treemap.js";
|
|
110
110
|
import { WaterfallChartCard, waterfallBars } from "./components/siyahi/waterfall-chart.js";
|
|
111
|
-
export { Accordion, AccordionContent, AccordionItem, AccordionTrigger, Alert, AlertAction, AlertDescription, AlertTitle, AppSidebar, AreaChartCard, Avatar, AvatarBadge, AvatarFallback, AvatarGroup, AvatarGroupCount, AvatarImage, Badge, BarChartCard, BarList, Breadcrumb, BreadcrumbEllipsis, BreadcrumbItem, BreadcrumbLink, BreadcrumbList, BreadcrumbPage, BreadcrumbSeparator, Button, Calendar, CalendarDayButton, CalendarHeatmap, CalendarHeatmapBlock, CalendarHeatmapBody, CalendarHeatmapFooter, CalendarHeatmapLegend, CalendarHeatmapStat, Callout, Card, CardAction, CardContent, CardDescription, CardFooter, CardHeader, CardTitle, ChangeBar, ChangeGrid, ChartContainer, ChartLegend, ChartLegendContent, ChartStyle, ChartTooltip, ChartTooltipContent, CodeBlock, CodeBlockActions, CodeBlockContent, CodeBlockCopyButton, CodeBlockFooter, CodeBlockHeader, CodeBlockLine, CodeBlockTitle, Collapsible, CollapsibleContent, CollapsibleTrigger, Command, CommandDialog, CommandEmpty, CommandGroup, CommandInput, CommandItem, CommandList, CommandSeparator, CommandShortcut, ContextMenu, ContextMenuCheckboxItem, ContextMenuContent, ContextMenuGroup, ContextMenuItem, ContextMenuLabel, ContextMenuPortal, ContextMenuRadioGroup, ContextMenuRadioItem, ContextMenuSeparator, ContextMenuShortcut, ContextMenuSub, ContextMenuSubContent, ContextMenuSubTrigger, ContextMenuTrigger, CopyButton, DataBar, DataList, DataListItem, DataTable, DataTableActions, DataTableBody, DataTableColumnActions, DataTableColumnFilter, DataTableColumnHeader, DataTableColumnHeaderRoot, DataTableColumnSortMenu, DataTableColumnSortOptions, DataTableColumnTitle, DataTableCompactColumnsToggle, DataTableContext, DataTableEmptyActions, DataTableEmptyBody, DataTableEmptyDescription, DataTableEmptyFilteredMessage, DataTableEmptyIcon, DataTableEmptyMessage, DataTableEmptyState, DataTableEmptyTitle, DataTableErrorBoundary, DataTableFacetedFilter, DataTableFacetedFilterContent, DataTableFootnote, DataTableGroupRowProvider, DataTableGroupedRowCells, DataTableGroupedRows, DataTableHeader, DataTableLoading, DataTableLoadingMore, DataTableProvider, DataTableRoot, DataTableRowContextMenu, DataTableRowContextMenuSlot, DataTableRowCount, DataTableRowMenuScope, DataTableSearchFilter, DataTableSkeleton, DataTableSortHeader, DataTableToolbarSection, Delta, Dialog, DialogClose, DialogContent, DialogDescription, DialogFooter, DialogHeader, DialogOverlay, DialogPortal, DialogTitle, DialogTrigger, DistributionBar, DrawdownChartCard, DropdownMenu, DropdownMenuCheckboxItem, DropdownMenuContent, DropdownMenuGroup, DropdownMenuItem, DropdownMenuLabel, DropdownMenuPortal, DropdownMenuRadioGroup, DropdownMenuRadioItem, DropdownMenuSeparator, DropdownMenuShortcut, DropdownMenuSub, DropdownMenuSubContent, DropdownMenuSubTrigger, DropdownMenuTrigger, Field, FieldContent, FieldDescription, FieldError, FieldGroup, FieldLabel, FieldLegend, FieldSeparator, FieldSet, FieldTitle, GroupedBodyRow, HistogramChartCard, InlineCode, Input, InputGroup, InputGroupAddon, InputGroupButton, InputGroupInput, InputGroupText, InputGroupTextarea, LOG_BLOCKED, Label, LineChartCard, LocalTime, MetricStrip, NavMain, NavProjects, NavUser,
|
|
111
|
+
export { Accordion, AccordionContent, AccordionItem, AccordionTrigger, Alert, AlertAction, AlertDescription, AlertTitle, AppSidebar, AreaChartCard, Avatar, AvatarBadge, AvatarFallback, AvatarGroup, AvatarGroupCount, AvatarImage, Badge, BarChartCard, BarList, Breadcrumb, BreadcrumbEllipsis, BreadcrumbItem, BreadcrumbLink, BreadcrumbList, BreadcrumbPage, BreadcrumbSeparator, Button, Calendar, CalendarDayButton, CalendarHeatmap, CalendarHeatmapBlock, CalendarHeatmapBody, CalendarHeatmapFooter, CalendarHeatmapLegend, CalendarHeatmapStat, Callout, Card, CardAction, CardContent, CardDescription, CardFooter, CardHeader, CardTitle, ChangeBar, ChangeGrid, ChartContainer, ChartLegend, ChartLegendContent, ChartStyle, ChartTooltip, ChartTooltipContent, CodeBlock, CodeBlockActions, CodeBlockContent, CodeBlockCopyButton, CodeBlockFooter, CodeBlockHeader, CodeBlockLine, CodeBlockTitle, Collapsible, CollapsibleContent, CollapsibleTrigger, Command, CommandDialog, CommandEmpty, CommandGroup, CommandInput, CommandItem, CommandList, CommandSeparator, CommandShortcut, ContextMenu, ContextMenuCheckboxItem, ContextMenuContent, ContextMenuGroup, ContextMenuItem, ContextMenuLabel, ContextMenuPortal, ContextMenuRadioGroup, ContextMenuRadioItem, ContextMenuSeparator, ContextMenuShortcut, ContextMenuSub, ContextMenuSubContent, ContextMenuSubTrigger, ContextMenuTrigger, CopyButton, DataBar, DataList, DataListItem, DataTable, DataTableActions, DataTableBody, DataTableColumnActions, DataTableColumnFilter, DataTableColumnHeader, DataTableColumnHeaderRoot, DataTableColumnSortMenu, DataTableColumnSortOptions, DataTableColumnTitle, DataTableCompactColumnsToggle, DataTableContext, DataTableEmptyActions, DataTableEmptyBody, DataTableEmptyDescription, DataTableEmptyFilteredMessage, DataTableEmptyIcon, DataTableEmptyMessage, DataTableEmptyState, DataTableEmptyTitle, DataTableErrorBoundary, DataTableFacetedFilter, DataTableFacetedFilterContent, DataTableFootnote, DataTableGroupRowProvider, DataTableGroupedRowCells, DataTableGroupedRows, DataTableHeader, DataTableLoading, DataTableLoadingMore, DataTableProvider, DataTableRoot, DataTableRowContextMenu, DataTableRowContextMenuSlot, DataTableRowCount, DataTableRowMenuScope, DataTableSearchFilter, DataTableSkeleton, DataTableSortHeader, DataTableToolbarSection, Delta, Dialog, DialogClose, DialogContent, DialogDescription, DialogFooter, DialogHeader, DialogOverlay, DialogPortal, DialogTitle, DialogTrigger, DistributionBar, DrawdownChartCard, DropdownMenu, DropdownMenuCheckboxItem, DropdownMenuContent, DropdownMenuGroup, DropdownMenuItem, DropdownMenuLabel, DropdownMenuPortal, DropdownMenuRadioGroup, DropdownMenuRadioItem, DropdownMenuSeparator, DropdownMenuShortcut, DropdownMenuSub, DropdownMenuSubContent, DropdownMenuSubTrigger, DropdownMenuTrigger, Field, FieldContent, FieldDescription, FieldError, FieldGroup, FieldLabel, FieldLegend, FieldSeparator, FieldSet, FieldTitle, GroupedBodyRow, HistogramChartCard, InlineCode, Input, InputGroup, InputGroupAddon, InputGroupButton, InputGroupInput, InputGroupText, InputGroupTextarea, LOG_BLOCKED, Label, LineChartCard, LocalTime, MetricStrip, NavMain, NavProjects, NavUser, PageHeader, PageSection, PageSubheading, PageToc, PanelGrid, Popover, PopoverContent, PopoverDescription, PopoverHeader, PopoverTitle, PopoverTrigger, PriceChart, Progress, ProgressIndicator, ProgressLabel, ProgressTrack, ProgressValue, Quote, RangePosition, RowMenuGroup, RowMenuItem, RowMenuLabel, RowMenuSeparator, RowMenuSub, RowMenuSubContent, RowMenuSubTrigger, ScaleToggle, ScatterChartCard, ScrollArea, ScrollBar, SectionCards, Select, SelectContent, SelectGroup, SelectItem, SelectLabel, SelectScrollDownButton, SelectScrollUpButton, SelectSeparator, SelectTrigger, SelectValue, Separator, Sheet, SheetClose, SheetContent, SheetDescription, SheetFooter, SheetHeader, 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, SiyahiProvider, Skeleton, Slider, SlopeChart, Sparkline, StaleNote, StatusAlert, StatusBadge, StatusHeatmap, StatusHeatmapBlock, StatusHeatmapBody, StatusHeatmapFooter, StatusHeatmapLegend, StatusHeatmapStat, Table, TableBody, TableCaption, TableCell, TableColumnActions, TableColumnSortMenu, TableColumnSortOptions, TableColumnTitle, TableFacetedFilter, TableFacetedFilterContent, TableFooter, TableHead, TableHeader, TableRow, TableSearchFilter, Tabs, TabsContent, TabsList, TabsTrigger, TargetRows, TeamSwitcher, Textarea, Toggle, ToggleGroup, ToggleGroupItem, ToneProgress, Tooltip, TooltipContent, TooltipProvider, TooltipTrigger, Treemap, TreemapLegend, WaterfallChartCard, WeekdayHeatmap, WeekdayHeatmapBlock, WeekdayHeatmapBody, WeekdayHeatmapFooter, WeekdayHeatmapLegend, WeekdayHeatmapStat, badgeVariants, bucketOf, buttonVariants, count, defaultLocale, defaultSidebarOpen, drawdowns, flashCellKey, histogram, markLines, money, moneyCompact, pct, percentile, resolveGroupedRowsSlot, resolveRowContextMenuRenderer, spread, tabsListVariants, time, toggleVariants, useAxisScale, useColumnHeaderContext, useColumnResizeInfo, useDataTable, useDataTableActiveCell, useDataTableActiveCellSetter, useDataTableGroupRow, useDataTableRow, useFormat, useLocale, useResolvedRowContextMenuRenderer, useSidebar, useSurface, useTableFacetedFilter, waterfallBars };
|
|
@@ -1,11 +1,11 @@
|
|
|
1
|
-
import { ChartColor, ChartCurve, ChartSeries, ChartSeriesItem, LineMarksProps, NumericXProps, SeriesChartProps, ValueScaleProps } from "./chart-series.js";
|
|
1
|
+
import { ChartColor, ChartCurve, ChartReferenceLine, ChartSeries, ChartSeriesItem, LineMarksProps, NumericXProps, SeriesChartProps, ValueScaleProps } from "./chart-series.js";
|
|
2
2
|
import { ChartTooltipContent } from "../components/ui/chart.js";
|
|
3
3
|
import { ComponentProps, ReactElement, ReactNode } from "react";
|
|
4
|
-
import { AreaChart, BarChart, LineChart
|
|
4
|
+
import { AreaChart, BarChart, LineChart } from "recharts";
|
|
5
5
|
//#region src/lib/chart-frame.d.ts
|
|
6
6
|
/**
|
|
7
|
-
* A bar's fill:
|
|
8
|
-
* the bars it leaves out to a fainter tint; their edges stay, so they keep 3:1 against the card.
|
|
7
|
+
* A bar's fill: the theme's --bar-tint of its colour, inside a 1px edge of the full colour the bar is drawn with. A
|
|
8
|
+
* selection dims the bars it leaves out to a fainter tint; their edges stay, so they keep 3:1 against the card.
|
|
9
9
|
*/
|
|
10
10
|
export declare function barFill(color: string, dim?: boolean): string;
|
|
11
11
|
interface QuietLegendProps<T> {
|
|
@@ -21,10 +21,35 @@ interface QuietLegendProps<T> {
|
|
|
21
21
|
* the rest. A stack's grey bands sit in the legend's order, bottom to top.
|
|
22
22
|
*/
|
|
23
23
|
export declare function QuietLegend<T>({ series, raisable, raised, onRaise }: QuietLegendProps<T>): import("react").JSX.Element;
|
|
24
|
-
|
|
24
|
+
type StackOffset = "none" | "sign";
|
|
25
|
+
/**
|
|
26
|
+
* The values a value axis must reach: each one drawn, or a stack's running totals, where its segments end. A "sign"
|
|
27
|
+
* stack runs a row's losses down from zero and its gains up, so the row reaches its two sums.
|
|
28
|
+
*/
|
|
29
|
+
export declare function axisValues<T>(data: readonly T[], series: ChartSeries<T>, stackOffset?: StackOffset): number[];
|
|
30
|
+
/**
|
|
31
|
+
* A log value axis over the values and the page's levels above zero: a level at or under zero has no place on it, and
|
|
32
|
+
* must not turn Log off.
|
|
33
|
+
*/
|
|
34
|
+
export declare function logValueAxis(values: readonly number[], referenceLines: readonly ChartReferenceLine[], range?: readonly [number, number]): {
|
|
35
|
+
domain: [number, number];
|
|
36
|
+
ticks: number[];
|
|
37
|
+
};
|
|
38
|
+
/**
|
|
39
|
+
* A linear value axis that just covers what is drawn: the values (a stack's totals), the page's levels and ticks, and
|
|
40
|
+
* zero under bars, so no bar hangs from its smallest loss and no level falls off the plot.
|
|
41
|
+
*/
|
|
42
|
+
export declare function linearValueAxis<T>(data: readonly T[], series: ChartSeries<T>, { stackOffset, referenceLines, yTicks, bars }: {
|
|
43
|
+
stackOffset?: StackOffset | undefined;
|
|
44
|
+
referenceLines?: readonly ChartReferenceLine[] | undefined;
|
|
45
|
+
yTicks?: readonly number[] | undefined;
|
|
46
|
+
bars?: boolean | undefined;
|
|
47
|
+
}): {
|
|
48
|
+
domain: [number, number];
|
|
49
|
+
ticks: number[];
|
|
50
|
+
} | undefined;
|
|
51
|
+
interface ChartFrameProps<T extends object, K extends keyof T> extends SeriesChartProps<T, K>, NumericXProps, ValueScaleProps, LineMarksProps<T, K> {
|
|
25
52
|
chart: typeof AreaChart | typeof BarChart | typeof LineChart;
|
|
26
|
-
/** The value axis' range: a page's fixed one, or a card's rule such as bars reaching zero. */
|
|
27
|
-
yDomain?: YAxisProps["domain"];
|
|
28
53
|
/** One Bar, Area or Line per series. */
|
|
29
54
|
children: ReactNode;
|
|
30
55
|
/**
|
|
@@ -32,22 +57,25 @@ interface ChartFrameProps<T extends object, K extends keyof T> extends Omit<Seri
|
|
|
32
57
|
* chart-bar-horizontal. The value axis runs along the bottom when yTickFormatter is given, and is hidden
|
|
33
58
|
* otherwise. x and y keep their meaning: x is the category, y the value.
|
|
34
59
|
*/
|
|
35
|
-
horizontal?: boolean;
|
|
36
|
-
/**
|
|
37
|
-
|
|
38
|
-
|
|
60
|
+
horizontal?: boolean | undefined;
|
|
61
|
+
/**
|
|
62
|
+
* The series stack: "none" adds each onto the running total, as a stacked area does; "sign" stacks negative values
|
|
63
|
+
* below zero and positive ones above.
|
|
64
|
+
*/
|
|
65
|
+
stackOffset?: StackOffset | undefined;
|
|
66
|
+
onClick?: ComponentProps<typeof BarChart>["onClick"] | undefined;
|
|
39
67
|
/** A tooltip row per hovered mark; by default each series' colour, label and formatted value (seriesRow). */
|
|
40
|
-
tooltipRow?: ComponentProps<typeof ChartTooltipContent>["formatter"];
|
|
68
|
+
tooltipRow?: ComponentProps<typeof ChartTooltipContent>["formatter"] | undefined;
|
|
41
69
|
/** The legend under the plot; by default one chip per series. */
|
|
42
|
-
legend?: ReactElement;
|
|
70
|
+
legend?: ReactElement | undefined;
|
|
43
71
|
/** Why this chart cannot go on a log scale whatever its values, such as stacked areas adding up from zero. */
|
|
44
|
-
logBlocked?: string;
|
|
72
|
+
logBlocked?: string | undefined;
|
|
45
73
|
/** The marks are lines (a line chart, unstacked areas): name each series at its line's end, where there is room. */
|
|
46
|
-
endLabels?: boolean;
|
|
74
|
+
endLabels?: boolean | undefined;
|
|
47
75
|
/** Hatch a forecast stretch, behind lines that sit on card halos; a stack's fills cover it already. */
|
|
48
|
-
forecastHatch?: boolean;
|
|
76
|
+
forecastHatch?: boolean | undefined;
|
|
49
77
|
/** The lines' curve, which a grey line raised from the legend is drawn with too. */
|
|
50
|
-
curve?: ChartCurve;
|
|
78
|
+
curve?: ChartCurve | undefined;
|
|
51
79
|
}
|
|
52
80
|
/**
|
|
53
81
|
* The colour a series' Bar takes, which its legend chip shows: the negative colour when every value drawn is below
|
|
@@ -59,9 +87,9 @@ export declare function seriesFill<T>(item: ChartSeriesItem<T>, data: readonly T
|
|
|
59
87
|
* grid, and none elsewhere. The eye lands on now, where a reader starts.
|
|
60
88
|
*/
|
|
61
89
|
export declare function endDot(color: ChartColor, count: number, hollow?: boolean): ({ cx, cy, index }: {
|
|
62
|
-
cx?: number;
|
|
63
|
-
cy?: number;
|
|
64
|
-
index?: number;
|
|
90
|
+
cx?: number | undefined;
|
|
91
|
+
cy?: number | undefined;
|
|
92
|
+
index?: number | undefined;
|
|
65
93
|
}) => import("react").JSX.Element;
|
|
66
94
|
/** A tooltip row: the series' colour and label, then its value as the page formats it, or — when the row has none. */
|
|
67
95
|
export declare function seriesRow<T>(series: ChartSeries<T>, formatValue: (value: number) => string): (value: unknown, _name: unknown, item: {
|
package/dist/lib/chart-frame.js
CHANGED
|
@@ -5,34 +5,23 @@ import { useAxisScale } from "../components/siyahi/scale-toggle.js";
|
|
|
5
5
|
import { StaleNote } from "../components/siyahi/stale-note.js";
|
|
6
6
|
import { useLocale } from "../components/siyahi/siyahi-provider.js";
|
|
7
7
|
import { EndLabels, QUIET, TimeMarks, endLabelRoom, endLabelsFit, linesEndAtEdge } from "./chart-marks.js";
|
|
8
|
-
import { fitsLog, logAxis } from "./ticks.js";
|
|
8
|
+
import { fitsLog, linearAxis, logAxis } from "./ticks.js";
|
|
9
9
|
import { useElementWidth } from "./use-element-width.js";
|
|
10
|
+
import { useRenderWhenFontsLoad } from "./use-render-when-fonts-load.js";
|
|
10
11
|
import { Fragment, jsx, jsxs } from "react/jsx-runtime";
|
|
11
|
-
import {
|
|
12
|
-
import { CartesianGrid, Line, ReferenceLine, Text, XAxis, YAxis, useChartWidth, useXAxisTicks, useYAxisTicks } from "recharts";
|
|
12
|
+
import { useId, useMemo, useState } from "react";
|
|
13
|
+
import { BarChart, CartesianGrid, Line, ReferenceLine, Text, XAxis, YAxis, useChartWidth, useXAxisTicks, useYAxisTicks } from "recharts";
|
|
13
14
|
//#region src/lib/chart-frame.tsx
|
|
14
15
|
const AXIS_TITLE = "fill-muted-foreground text-xs";
|
|
15
16
|
const TICK = { className: "fill-muted-foreground font-mono" };
|
|
16
17
|
const NO_LINES = [];
|
|
17
18
|
const SERIES_LEGEND = /* @__PURE__ */ jsx(ChartLegendContent, { className: "flex-wrap gap-y-1" });
|
|
18
19
|
/**
|
|
19
|
-
* A bar's fill:
|
|
20
|
-
* the bars it leaves out to a fainter tint; their edges stay, so they keep 3:1 against the card.
|
|
20
|
+
* A bar's fill: the theme's --bar-tint of its colour, inside a 1px edge of the full colour the bar is drawn with. A
|
|
21
|
+
* selection dims the bars it leaves out to a fainter tint; their edges stay, so they keep 3:1 against the card.
|
|
21
22
|
*/
|
|
22
23
|
function barFill(color, dim = false) {
|
|
23
|
-
return `color-mix(in oklab, ${color} ${dim ? 10 :
|
|
24
|
-
}
|
|
25
|
-
/** Renders the component again once the page's fonts load, so text measured on a canvas is measured in Geist. */
|
|
26
|
-
function useRenderWhenFontsLoad() {
|
|
27
|
-
const [loaded, setLoaded] = useState(() => typeof document === "undefined" || document.fonts?.status === "loaded");
|
|
28
|
-
useEffect(() => {
|
|
29
|
-
if (loaded || !document.fonts) return;
|
|
30
|
-
let live = true;
|
|
31
|
-
document.fonts.ready.then(() => live && setLoaded(true));
|
|
32
|
-
return () => {
|
|
33
|
-
live = false;
|
|
34
|
-
};
|
|
35
|
-
}, [loaded]);
|
|
24
|
+
return `color-mix(in oklab, ${color} ${dim ? "10%" : "var(--bar-tint)"}, var(--card))`;
|
|
36
25
|
}
|
|
37
26
|
/**
|
|
38
27
|
* The legend when some series are quiet: every series by name. The grey ones share a colour, so a legend square
|
|
@@ -83,6 +72,43 @@ function haloLine({ x1, y1, x2, y2, stroke, strokeDasharray }) {
|
|
|
83
72
|
strokeWidth: 1
|
|
84
73
|
})] });
|
|
85
74
|
}
|
|
75
|
+
const sum = (values) => values.reduce((total, value) => total + value, 0);
|
|
76
|
+
/**
|
|
77
|
+
* The values a value axis must reach: each one drawn, or a stack's running totals, where its segments end. A "sign"
|
|
78
|
+
* stack runs a row's losses down from zero and its gains up, so the row reaches its two sums.
|
|
79
|
+
*/
|
|
80
|
+
function axisValues(data, series, stackOffset) {
|
|
81
|
+
return data.flatMap((row) => {
|
|
82
|
+
const values = series.map(({ key }) => row[key]).filter((value) => typeof value === "number" && Number.isFinite(value));
|
|
83
|
+
if (stackOffset === "none") {
|
|
84
|
+
let total = 0;
|
|
85
|
+
return [0, ...values.map((value) => total += value)];
|
|
86
|
+
}
|
|
87
|
+
if (stackOffset === "sign") return [sum(values.filter((value) => value < 0)), sum(values.filter((value) => value > 0))];
|
|
88
|
+
return values;
|
|
89
|
+
});
|
|
90
|
+
}
|
|
91
|
+
/** The value levels a page marks with reference lines. */
|
|
92
|
+
const levelsOf = (lines) => lines.flatMap(({ y }) => y === void 0 ? [] : [y]);
|
|
93
|
+
/**
|
|
94
|
+
* A log value axis over the values and the page's levels above zero: a level at or under zero has no place on it, and
|
|
95
|
+
* must not turn Log off.
|
|
96
|
+
*/
|
|
97
|
+
function logValueAxis(values, referenceLines, range) {
|
|
98
|
+
return logAxis([...values, ...levelsOf(referenceLines).filter((level) => level > 0)], range);
|
|
99
|
+
}
|
|
100
|
+
/**
|
|
101
|
+
* A linear value axis that just covers what is drawn: the values (a stack's totals), the page's levels and ticks, and
|
|
102
|
+
* zero under bars, so no bar hangs from its smallest loss and no level falls off the plot.
|
|
103
|
+
*/
|
|
104
|
+
function linearValueAxis(data, series, { stackOffset, referenceLines = NO_LINES, yTicks = [], bars = false }) {
|
|
105
|
+
return linearAxis([
|
|
106
|
+
...axisValues(data, series, stackOffset),
|
|
107
|
+
...levelsOf(referenceLines),
|
|
108
|
+
...yTicks,
|
|
109
|
+
...bars ? [0] : []
|
|
110
|
+
]);
|
|
111
|
+
}
|
|
86
112
|
/**
|
|
87
113
|
* The colour a series' Bar takes, which its legend chip shows: the negative colour when every value drawn is below
|
|
88
114
|
* zero, since each bar's own Cell follows its sign but the chip follows the Bar.
|
|
@@ -246,10 +272,10 @@ function ChartFrame({ chart: Chart, children, horizontal = false, stackOffset, o
|
|
|
246
272
|
const { numberLocale } = useLocale();
|
|
247
273
|
const clipId = useId();
|
|
248
274
|
const [contentRef, contentWidth] = useElementWidth();
|
|
249
|
-
useRenderWhenFontsLoad();
|
|
250
275
|
const [raisedKey, setRaisedKey] = useState();
|
|
251
276
|
const names = endLabels ? series.map(({ label }) => label) : [];
|
|
252
277
|
const labelRoom = endLabels ? endLabelRoom(names) : 0;
|
|
278
|
+
useRenderWhenFontsLoad(() => endLabels ? endLabelRoom(names) : 0);
|
|
253
279
|
const plotHeight = height - 12 - (xTickDetail ? 40 : 30) - (xLabel ? 18 : 0);
|
|
254
280
|
const ends = endLabels && linesEndAtEdge(data, xKey, series, xDomain) && endLabelsFit(names, contentWidth, plotHeight);
|
|
255
281
|
const quiet = series.some(({ color }) => color === QUIET);
|
|
@@ -260,16 +286,20 @@ function ChartFrame({ chart: Chart, children, horizontal = false, stackOffset, o
|
|
|
260
286
|
color
|
|
261
287
|
}]));
|
|
262
288
|
const crossesZero = data.some((row) => series.some(({ key }) => Number(row[key]) < 0));
|
|
263
|
-
const
|
|
264
|
-
const range = typeof low === "number" && typeof high === "number" ? [low, high] : void 0;
|
|
265
|
-
const values = [...data.flatMap((row) => series.map(({ key }) => row[key])), ...range ?? []].filter((value) => typeof value === "number" && Number.isFinite(value));
|
|
289
|
+
const values = [...data.flatMap((row) => series.map(({ key }) => row[key])), ...yDomain ?? []].filter((value) => typeof value === "number" && Number.isFinite(value));
|
|
266
290
|
const valueAxis = useAxisScale({
|
|
267
291
|
initial: yScale,
|
|
268
292
|
toggle: yScaleToggle,
|
|
269
293
|
label: yLabel ? `${yLabel} scale` : "Value axis scale",
|
|
270
294
|
logBlocked: logBlocked ?? (fitsLog(values) ? void 0 : "Log needs every value above zero")
|
|
271
295
|
});
|
|
272
|
-
const log = valueAxis.scale === "log" ?
|
|
296
|
+
const log = valueAxis.scale === "log" ? logValueAxis(values, referenceLines, yDomain) : void 0;
|
|
297
|
+
const linear = log || yDomain !== void 0 ? void 0 : linearValueAxis(data, series, {
|
|
298
|
+
stackOffset,
|
|
299
|
+
referenceLines,
|
|
300
|
+
yTicks,
|
|
301
|
+
bars: Chart === BarChart
|
|
302
|
+
});
|
|
273
303
|
const detailedRows = horizontal && xTickDetail !== void 0;
|
|
274
304
|
const rowCount = (xTicks ?? data).length;
|
|
275
305
|
const plotClass = detailedRows ? "min-h-(--wrapped-chart-height) @min-[24rem]/chart:min-h-0" : void 0;
|
|
@@ -336,10 +366,10 @@ function ChartFrame({ chart: Chart, children, horizontal = false, stackOffset, o
|
|
|
336
366
|
}),
|
|
337
367
|
horizontal ? /* @__PURE__ */ jsxs(Fragment, { children: [/* @__PURE__ */ jsx(XAxis, {
|
|
338
368
|
type: "number",
|
|
339
|
-
niceTicks: "snap125",
|
|
369
|
+
niceTicks: linear ? void 0 : "snap125",
|
|
340
370
|
hide: !yTickFormatter,
|
|
341
|
-
domain: yDomain,
|
|
342
|
-
ticks: yTicks,
|
|
371
|
+
domain: linear?.domain ?? yDomain,
|
|
372
|
+
ticks: yTicks ?? linear?.ticks,
|
|
343
373
|
tickLine: false,
|
|
344
374
|
axisLine: false,
|
|
345
375
|
tickMargin: 8,
|
|
@@ -373,12 +403,12 @@ function ChartFrame({ chart: Chart, children, horizontal = false, stackOffset, o
|
|
|
373
403
|
interval: xTickDetail || xTicks ? 0 : void 0
|
|
374
404
|
}), /* @__PURE__ */ jsx(YAxis, {
|
|
375
405
|
scale: valueAxis.scale,
|
|
376
|
-
niceTicks: log ? void 0 : "snap125",
|
|
406
|
+
niceTicks: log || linear ? void 0 : "snap125",
|
|
377
407
|
tickLine: false,
|
|
378
408
|
axisLine: false,
|
|
379
409
|
width: "auto",
|
|
380
|
-
domain: log?.domain ?? yDomain,
|
|
381
|
-
ticks: log?.ticks ?? yTicks,
|
|
410
|
+
domain: log?.domain ?? linear?.domain ?? yDomain,
|
|
411
|
+
ticks: log?.ticks ?? yTicks ?? linear?.ticks,
|
|
382
412
|
label: yLabel ? {
|
|
383
413
|
value: yLabel,
|
|
384
414
|
angle: -90,
|
|
@@ -477,4 +507,4 @@ function ChartFrame({ chart: Chart, children, horizontal = false, stackOffset, o
|
|
|
477
507
|
});
|
|
478
508
|
}
|
|
479
509
|
//#endregion
|
|
480
|
-
export { ChartFrame, QuietLegend, barFill, endDot, seriesFill, seriesRow };
|
|
510
|
+
export { ChartFrame, QuietLegend, axisValues, barFill, endDot, linearValueAxis, logValueAxis, seriesFill, seriesRow };
|
|
@@ -65,9 +65,9 @@ interface TimeMarksProps<T extends object, K extends keyof T> {
|
|
|
65
65
|
data: readonly T[];
|
|
66
66
|
xKey: K;
|
|
67
67
|
/** The x value from which the data is a forecast. */
|
|
68
|
-
forecastFrom?: T[K];
|
|
68
|
+
forecastFrom?: T[K] | undefined;
|
|
69
69
|
/** The x value of today. */
|
|
70
|
-
today?: T[K];
|
|
70
|
+
today?: T[K] | undefined;
|
|
71
71
|
/** Prefix of the clip paths the series' actual and forecast copies use (`<id>-actual`, `<id>-forecast`). */
|
|
72
72
|
clipId: string;
|
|
73
73
|
/** Hatch the forecast stretch; a stack's fills already cover it, so a stacked chart only labels it. */
|