@schemavaults/ui 0.99.3 → 0.101.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (26) hide show
  1. package/dist/components/layout/dashboard-layout/DashboardLayoutProps.d.ts +13 -0
  2. package/dist/components/layout/dashboard-layout/dashboard-layout.d.ts +1 -1
  3. package/dist/components/layout/dashboard-layout/dashboard-layout.js +13 -4
  4. package/dist/components/layout/dashboard-layout/dashboard-layout.js.map +1 -1
  5. package/dist/components/layout/dashboard-layout/dashboard-sidebar/dashboard-sidebar-context-provider.d.ts +10 -1
  6. package/dist/components/layout/dashboard-layout/dashboard-sidebar/dashboard-sidebar-context-provider.js +7 -1
  7. package/dist/components/layout/dashboard-layout/dashboard-sidebar/dashboard-sidebar-context-provider.js.map +1 -1
  8. package/dist/components/layout/dashboard-layout/dashboard-sidebar/dashboard-sidebar-sizing.d.ts +16 -3
  9. package/dist/components/layout/dashboard-layout/dashboard-sidebar/dashboard-sidebar-sizing.js +22 -4
  10. package/dist/components/layout/dashboard-layout/dashboard-sidebar/dashboard-sidebar-sizing.js.map +1 -1
  11. package/dist/components/layout/dashboard-layout/dashboard-sidebar/index.d.ts +1 -0
  12. package/dist/components/layout/dashboard-layout/dashboard-sidebar/index.js +1 -0
  13. package/dist/components/layout/dashboard-layout/dashboard-sidebar/index.js.map +1 -1
  14. package/dist/components/layout/dashboard-layout/index.d.ts +1 -0
  15. package/dist/components/layout/dashboard-layout/index.js +1 -0
  16. package/dist/components/layout/dashboard-layout/index.js.map +1 -1
  17. package/dist/components/ui/index.d.ts +2 -0
  18. package/dist/components/ui/index.js +1 -0
  19. package/dist/components/ui/index.js.map +1 -1
  20. package/dist/components/ui/scatter-plot/index.d.ts +3 -0
  21. package/dist/components/ui/scatter-plot/index.js +3 -0
  22. package/dist/components/ui/scatter-plot/index.js.map +1 -0
  23. package/dist/components/ui/scatter-plot/scatter-plot.d.ts +169 -0
  24. package/dist/components/ui/scatter-plot/scatter-plot.js +385 -0
  25. package/dist/components/ui/scatter-plot/scatter-plot.js.map +1 -0
  26. package/package.json +1 -1
@@ -12,6 +12,19 @@ export interface DashboardLayoutProps extends PropsWithChildren {
12
12
  sidebarFooterContent?: CustomizableDashboardLayoutComponent;
13
13
  sidebarItems: DashboardSidebarItemsAndGroupsDefinitions;
14
14
  sizing?: DashboardLayoutSidebarSizing;
15
+ /**
16
+ * Width of the sidebar while it is open (expanded) on desktop viewports, as
17
+ * any CSS length (e.g. `"18rem"`, `"260px"`, `"20vw"`). Defaults to
18
+ * `14rem`. Use a wider value to fit long link titles on one line, or a
19
+ * narrower one for compact menus.
20
+ *
21
+ * The value is applied through the `--dashboard-sidebar-open-width` CSS
22
+ * custom property, so any length works without a matching Tailwind class
23
+ * having to exist. The main content area shifts to match. The collapsed
24
+ * (icon-only) desktop width and the mobile Sheet width are unaffected; use
25
+ * `sizing` to change those.
26
+ */
27
+ sidebarOpenWidth?: string;
15
28
  onOpenSidebar?: () => void;
16
29
  onCloseSidebar?: () => void;
17
30
  /**
@@ -1,5 +1,5 @@
1
1
  import type { ReactElement } from "react";
2
2
  import type { DashboardLayoutProps } from "./DashboardLayoutProps";
3
3
  export type { DashboardLayoutProps };
4
- export declare function DashboardLayout({ children, wordmark, logo, Link, brandHref, topBarTitle, usePathname, printHidden, ...props }: DashboardLayoutProps): ReactElement;
4
+ export declare function DashboardLayout({ children, wordmark, logo, Link, brandHref, topBarTitle, usePathname, printHidden, sidebarOpenWidth, ...props }: DashboardLayoutProps): ReactElement;
5
5
  export default DashboardLayout;
@@ -1,6 +1,6 @@
1
1
  "use client";
2
2
  import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
3
- import DashboardSidebar, { DashboardLayoutSidebarTrigger, DashboardSidebarContextProvider, useCloseDashboardSidebarOnRouteChange, useDashboardSidebarOpenState, useDashboardSidebarSizing, } from "./dashboard-sidebar";
3
+ import DashboardSidebar, { DashboardLayoutSidebarTrigger, DashboardSidebarContextProvider, useCloseDashboardSidebarOnRouteChange, useDashboardSidebarOpenState, useDashboardSidebarSizing, DASHBOARD_SIDEBAR_OPEN_WIDTH_CSS_VARIABLE, } from "./dashboard-sidebar";
4
4
  import { Separator } from "../../ui/separator";
5
5
  import DashboardLayoutMainContentContainer from "./dashboard-layout-main-content-container";
6
6
  import { cn } from "../../../lib/utils";
@@ -18,8 +18,17 @@ function AutoCloseSidebarOnNavigation({ usePathname, }) {
18
18
  useCloseDashboardSidebarOnRouteChange(usePathname);
19
19
  return null;
20
20
  }
21
- export function DashboardLayout({ children, wordmark, logo, Link, brandHref, topBarTitle, usePathname, printHidden = false, ...props }) {
21
+ export function DashboardLayout({ children, wordmark, logo, Link, brandHref, topBarTitle, usePathname, printHidden = false, sidebarOpenWidth, ...props }) {
22
22
  const size = useDashboardSidebarSizing();
23
+ // The open-width override travels as a CSS custom property on the root
24
+ // container. The default sizing classnames for the expanded sidebar and the
25
+ // content container's open-state width/offset read it with a 14rem
26
+ // fallback, so an unset prop leaves the layout exactly as before.
27
+ const containerStyle = typeof sidebarOpenWidth === "string" && sidebarOpenWidth.length > 0
28
+ ? {
29
+ [DASHBOARD_SIDEBAR_OPEN_WIDTH_CSS_VARIABLE]: sidebarOpenWidth,
30
+ }
31
+ : undefined;
23
32
  function HeaderBarPageIdentifierComponent() {
24
33
  if (typeof topBarTitle === "string") {
25
34
  return _jsx("h2", { className: "font-bold text-lg", children: topBarTitle });
@@ -30,11 +39,11 @@ export function DashboardLayout({ children, wordmark, logo, Link, brandHref, top
30
39
  }
31
40
  }
32
41
  const TopBarButtonsComponent = props.topBarButtons;
33
- return (_jsxs(DashboardSidebarContextProvider, { sidebarItems: props.sidebarItems, sizing: props.sizing, onOpenSidebar: props.onOpenSidebar, onCloseSidebar: props.onCloseSidebar, children: [typeof usePathname === "function" && (_jsx(AutoCloseSidebarOnNavigation, { usePathname: usePathname })), _jsxs("div", { id: "dashboard-layout-container", className: cn("w-full h-dvh min-h-dvh",
42
+ return (_jsxs(DashboardSidebarContextProvider, { sidebarItems: props.sidebarItems, sizing: props.sizing, sidebarOpenWidth: sidebarOpenWidth, onOpenSidebar: props.onOpenSidebar, onCloseSidebar: props.onCloseSidebar, children: [typeof usePathname === "function" && (_jsx(AutoCloseSidebarOnNavigation, { usePathname: usePathname })), _jsxs("div", { id: "dashboard-layout-container", className: cn("w-full h-dvh min-h-dvh",
34
43
  // When hiding chrome for print, let the container grow to fit all
35
44
  // page content across printed pages instead of clamping to the
36
45
  // on-screen viewport height.
37
- printHidden && "print:h-auto print:min-h-0"), children: [_jsx(DashboardSidebar, { wordmark: wordmark, Link: Link, brandHref: brandHref, logo: logo, sidebarFooterContent: props.sidebarFooterContent, className: cn(printHidden && "print:hidden") }), _jsxs(DashboardLayoutMainContentContainer, { printHidden: printHidden, children: [_jsx("header", { id: "dashboard-layout-main-content-header", className: cn("sticky top-0", "flex shrink-0 items-center gap-2", "transition-[width,height] ease-linear", "bg-background", "border-b border-border", size.sidebar_and_header_z_index_classname, printHidden && "print:hidden"), style: {
46
+ printHidden && "print:h-auto print:min-h-0"), style: containerStyle, children: [_jsx(DashboardSidebar, { wordmark: wordmark, Link: Link, brandHref: brandHref, logo: logo, sidebarFooterContent: props.sidebarFooterContent, className: cn(printHidden && "print:hidden") }), _jsxs(DashboardLayoutMainContentContainer, { printHidden: printHidden, children: [_jsx("header", { id: "dashboard-layout-main-content-header", className: cn("sticky top-0", "flex shrink-0 items-center gap-2", "transition-[width,height] ease-linear", "bg-background", "border-b border-border", size.sidebar_and_header_z_index_classname, printHidden && "print:hidden"), style: {
38
47
  height: size.header_height,
39
48
  }, children: _jsxs("div", { className: "flex flex-row justify-between items-center gap-2 px-4 w-full", children: [_jsx(DashboardLayoutSidebarTrigger, {}), _jsx(Separator, { orientation: "vertical", className: "mr-2 data-[orientation=vertical]:h-4" }), _jsx(HeaderBarPageIdentifierComponent, {}), _jsx("div", { role: "none", className: "grow" }), typeof TopBarButtonsComponent === "function" && (_jsx(TopBarButtonsComponent, { useDashboardSidebarSizing: useDashboardSidebarSizing, useDashboardSidebarOpenState: useDashboardSidebarOpenState, Link: Link }))] }) }), children] })] })] }));
40
49
  }
@@ -1 +1 @@
1
- {"version":3,"file":"dashboard-layout.js","sourceRoot":"","sources":["../../../../src/components/layout/dashboard-layout/dashboard-layout.tsx"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"dashboard-layout.js","sourceRoot":"","sources":["../../../../src/components/layout/dashboard-layout/dashboard-layout.tsx"],"names":[],"mappings":"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"}
@@ -1,9 +1,18 @@
1
- import type { PropsWithChildren, ReactElement } from "react";
1
+ import { type PropsWithChildren, type ReactElement } from "react";
2
2
  import { type DashboardSidebarItemsAndGroupsDefinitions } from "./dashboard-sidebar-items-and-groups-context";
3
3
  import { type DashboardLayoutSidebarSizing } from "./dashboard-sidebar-sizing";
4
4
  interface DashboardLayoutContextProviderProps extends PropsWithChildren {
5
5
  sidebarItems: DashboardSidebarItemsAndGroupsDefinitions;
6
6
  sizing?: DashboardLayoutSidebarSizing;
7
+ /**
8
+ * Desktop open (expanded) sidebar width, as any CSS length. When provided,
9
+ * it is reflected into the sizing context's `desktop_expanded_width` so
10
+ * that consumer components reading `useDashboardSidebarSizing()` see the
11
+ * effective value. The actual layout width is driven by the
12
+ * `--dashboard-sidebar-open-width` custom property, which `DashboardLayout`
13
+ * sets on its root container.
14
+ */
15
+ sidebarOpenWidth?: string;
7
16
  onOpenSidebar?: () => void;
8
17
  onCloseSidebar?: () => void;
9
18
  }
@@ -1,10 +1,16 @@
1
1
  "use client";
2
2
  import { jsx as _jsx } from "react/jsx-runtime";
3
+ import { useMemo } from "react";
3
4
  import { DashboardSidebarItemsAndGroupsContext, } from "./dashboard-sidebar-items-and-groups-context";
4
5
  import DashboardSidebarOpenStateProvider from "./dashboard-sidebar-open-state-provider";
5
6
  import { DashboardLayoutSidebarSizeContext, DEFAULT_DASHBOARD_SIDEBAR_SIZE, } from "./dashboard-sidebar-sizing";
6
7
  export function DashboardSidebarContextProvider({ children, sidebarItems, ...props }) {
7
- return (_jsx(DashboardSidebarOpenStateProvider, { onOpenSidebar: props.onOpenSidebar, onCloseSidebar: props.onCloseSidebar, children: _jsx(DashboardSidebarItemsAndGroupsContext.Provider, { value: sidebarItems, children: _jsx(DashboardLayoutSidebarSizeContext.Provider, { value: props.sizing ?? DEFAULT_DASHBOARD_SIDEBAR_SIZE, children: children }) }) }));
8
+ const baseSizing = props.sizing ?? DEFAULT_DASHBOARD_SIDEBAR_SIZE;
9
+ const sidebarOpenWidth = props.sidebarOpenWidth;
10
+ const sizing = useMemo(() => typeof sidebarOpenWidth === "string" && sidebarOpenWidth.length > 0
11
+ ? { ...baseSizing, desktop_expanded_width: sidebarOpenWidth }
12
+ : baseSizing, [baseSizing, sidebarOpenWidth]);
13
+ return (_jsx(DashboardSidebarOpenStateProvider, { onOpenSidebar: props.onOpenSidebar, onCloseSidebar: props.onCloseSidebar, children: _jsx(DashboardSidebarItemsAndGroupsContext.Provider, { value: sidebarItems, children: _jsx(DashboardLayoutSidebarSizeContext.Provider, { value: sizing, children: children }) }) }));
8
14
  }
9
15
  export default DashboardSidebarContextProvider;
10
16
  //# sourceMappingURL=dashboard-sidebar-context-provider.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"dashboard-sidebar-context-provider.js","sourceRoot":"","sources":["../../../../../src/components/layout/dashboard-layout/dashboard-sidebar/dashboard-sidebar-context-provider.tsx"],"names":[],"mappings":"AAAA,YAAY,CAAC;;AAGb,OAAO,EACL,qCAAqC,GAEtC,MAAM,8CAA8C,CAAC;AACtD,OAAO,iCAAiC,MAAM,yCAAyC,CAAC;AACxF,OAAO,EACL,iCAAiC,EACjC,8BAA8B,GAE/B,MAAM,4BAA4B,CAAC;AASpC,MAAM,UAAU,+BAA+B,CAAC,EAC9C,QAAQ,EACR,YAAY,EACZ,GAAG,KAAK,EAC4B;IACpC,OAAO,CACL,KAAC,iCAAiC,IAChC,aAAa,EAAE,KAAK,CAAC,aAAa,EAClC,cAAc,EAAE,KAAK,CAAC,cAAc,YAEpC,KAAC,qCAAqC,CAAC,QAAQ,IAAC,KAAK,EAAE,YAAY,YACjE,KAAC,iCAAiC,CAAC,QAAQ,IACzC,KAAK,EAAE,KAAK,CAAC,MAAM,IAAI,8BAA8B,YAEpD,QAAQ,GACkC,GACE,GACf,CACrC,CAAC;AACJ,CAAC;AAED,eAAe,+BAA+B,CAAC"}
1
+ {"version":3,"file":"dashboard-sidebar-context-provider.js","sourceRoot":"","sources":["../../../../../src/components/layout/dashboard-layout/dashboard-sidebar/dashboard-sidebar-context-provider.tsx"],"names":[],"mappings":"AAAA,YAAY,CAAC;;AAEb,OAAO,EAAE,OAAO,EAA6C,MAAM,OAAO,CAAC;AAC3E,OAAO,EACL,qCAAqC,GAEtC,MAAM,8CAA8C,CAAC;AACtD,OAAO,iCAAiC,MAAM,yCAAyC,CAAC;AACxF,OAAO,EACL,iCAAiC,EACjC,8BAA8B,GAE/B,MAAM,4BAA4B,CAAC;AAkBpC,MAAM,UAAU,+BAA+B,CAAC,EAC9C,QAAQ,EACR,YAAY,EACZ,GAAG,KAAK,EAC4B;IACpC,MAAM,UAAU,GACd,KAAK,CAAC,MAAM,IAAI,8BAA8B,CAAC;IACjD,MAAM,gBAAgB,GAAuB,KAAK,CAAC,gBAAgB,CAAC;IACpE,MAAM,MAAM,GAAiC,OAAO,CAClD,GAAiC,EAAE,CACjC,OAAO,gBAAgB,KAAK,QAAQ,IAAI,gBAAgB,CAAC,MAAM,GAAG,CAAC;QACjE,CAAC,CAAC,EAAE,GAAG,UAAU,EAAE,sBAAsB,EAAE,gBAAgB,EAAE;QAC7D,CAAC,CAAC,UAAU,EAChB,CAAC,UAAU,EAAE,gBAAgB,CAAC,CAC/B,CAAC;IACF,OAAO,CACL,KAAC,iCAAiC,IAChC,aAAa,EAAE,KAAK,CAAC,aAAa,EAClC,cAAc,EAAE,KAAK,CAAC,cAAc,YAEpC,KAAC,qCAAqC,CAAC,QAAQ,IAAC,KAAK,EAAE,YAAY,YACjE,KAAC,iCAAiC,CAAC,QAAQ,IAAC,KAAK,EAAE,MAAM,YACtD,QAAQ,GACkC,GACE,GACf,CACrC,CAAC;AACJ,CAAC;AAED,eAAe,+BAA+B,CAAC"}
@@ -1,3 +1,16 @@
1
+ /**
2
+ * CSS custom property that carries the desktop *open* (expanded) sidebar
3
+ * width. `DashboardLayout` sets it on its root container from the
4
+ * `sidebarOpenWidth` prop, and the default sizing classnames below read it
5
+ * with a `14rem` fallback — so a consumer can pick any width without needing
6
+ * Tailwind to have generated a matching arbitrary-value class for it.
7
+ */
8
+ export declare const DASHBOARD_SIDEBAR_OPEN_WIDTH_CSS_VARIABLE = "--dashboard-sidebar-open-width";
9
+ /**
10
+ * The desktop open (expanded) sidebar width used when `sidebarOpenWidth` is
11
+ * not supplied to `DashboardLayout`.
12
+ */
13
+ export declare const DEFAULT_DASHBOARD_SIDEBAR_OPEN_WIDTH = "14rem";
1
14
  export interface DashboardLayoutSidebarSizing {
2
15
  desktop_collapsed_width: string;
3
16
  desktop_collapsed_width_classname: string;
@@ -45,13 +58,13 @@ export declare const DEFAULT_DASHBOARD_SIDEBAR_SIZE: {
45
58
  readonly desktop_collapsed_width: "4rem";
46
59
  readonly desktop_collapsed_width_classname: "w-[4rem]";
47
60
  readonly desktop_expanded_width: "14rem";
48
- readonly desktop_expanded_width_classname: "w-[14rem]";
61
+ readonly desktop_expanded_width_classname: "w-[var(--dashboard-sidebar-open-width,14rem)]";
49
62
  readonly mobile_expanded_width: "16rem";
50
63
  readonly mobile_expanded_width_classname: "w-[16rem]";
51
64
  readonly header_height: "4rem";
52
65
  readonly header_height_classname: "h-[4rem]";
53
- readonly content_container_desktop_sidebar_open_width_classname: "md:w-[calc(100%-14rem)]";
54
- readonly content_container_desktop_sidebar_open_left_classname: "md:left-[14rem]";
66
+ readonly content_container_desktop_sidebar_open_width_classname: "md:w-[calc(100%-var(--dashboard-sidebar-open-width,14rem))]";
67
+ readonly content_container_desktop_sidebar_open_left_classname: "md:left-[var(--dashboard-sidebar-open-width,14rem)]";
55
68
  readonly content_container_desktop_sidebar_closed_width_classname: "md:w-[calc(100%-4rem)]";
56
69
  readonly content_container_desktop_sidebar_closed_left_classname: "md:left-[4rem]";
57
70
  readonly sidebar_menu_item_height: "2.5rem";
@@ -1,15 +1,33 @@
1
1
  import { createContext } from "react";
2
+ /**
3
+ * CSS custom property that carries the desktop *open* (expanded) sidebar
4
+ * width. `DashboardLayout` sets it on its root container from the
5
+ * `sidebarOpenWidth` prop, and the default sizing classnames below read it
6
+ * with a `14rem` fallback — so a consumer can pick any width without needing
7
+ * Tailwind to have generated a matching arbitrary-value class for it.
8
+ */
9
+ export const DASHBOARD_SIDEBAR_OPEN_WIDTH_CSS_VARIABLE = "--dashboard-sidebar-open-width";
10
+ /**
11
+ * The desktop open (expanded) sidebar width used when `sidebarOpenWidth` is
12
+ * not supplied to `DashboardLayout`.
13
+ */
14
+ export const DEFAULT_DASHBOARD_SIDEBAR_OPEN_WIDTH = "14rem";
2
15
  export const DEFAULT_DASHBOARD_SIDEBAR_SIZE = {
3
16
  desktop_collapsed_width: `4rem`,
4
17
  desktop_collapsed_width_classname: `w-[4rem]`,
5
- desktop_expanded_width: `14rem`,
6
- desktop_expanded_width_classname: `w-[14rem]`,
18
+ desktop_expanded_width: DEFAULT_DASHBOARD_SIDEBAR_OPEN_WIDTH,
19
+ // Reads the `--dashboard-sidebar-open-width` custom property (falling back
20
+ // to 14rem) so `DashboardLayout`'s `sidebarOpenWidth` prop can override the
21
+ // expanded width with an inline CSS variable. Keep this, the two
22
+ // `content_container_desktop_sidebar_open_*` classnames below, and
23
+ // `DEFAULT_DASHBOARD_SIDEBAR_OPEN_WIDTH` in sync.
24
+ desktop_expanded_width_classname: `w-[var(--dashboard-sidebar-open-width,14rem)]`,
7
25
  mobile_expanded_width: `16rem`,
8
26
  mobile_expanded_width_classname: `w-[16rem]`,
9
27
  header_height: `4rem`,
10
28
  header_height_classname: `h-[4rem]`,
11
- content_container_desktop_sidebar_open_width_classname: "md:w-[calc(100%-14rem)]",
12
- content_container_desktop_sidebar_open_left_classname: "md:left-[14rem]",
29
+ content_container_desktop_sidebar_open_width_classname: "md:w-[calc(100%-var(--dashboard-sidebar-open-width,14rem))]",
30
+ content_container_desktop_sidebar_open_left_classname: "md:left-[var(--dashboard-sidebar-open-width,14rem)]",
13
31
  content_container_desktop_sidebar_closed_width_classname: "md:w-[calc(100%-4rem)]",
14
32
  content_container_desktop_sidebar_closed_left_classname: "md:left-[4rem]",
15
33
  sidebar_menu_item_height: "2.5rem",
@@ -1 +1 @@
1
- {"version":3,"file":"dashboard-sidebar-sizing.js","sourceRoot":"","sources":["../../../../../src/components/layout/dashboard-layout/dashboard-sidebar/dashboard-sidebar-sizing.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,OAAO,CAAC;AA8CtC,MAAM,CAAC,MAAM,8BAA8B,GAAG;IAC5C,uBAAuB,EAAE,MAAM;IAC/B,iCAAiC,EAAE,UAAU;IAC7C,sBAAsB,EAAE,OAAO;IAC/B,gCAAgC,EAAE,WAAW;IAC7C,qBAAqB,EAAE,OAAO;IAC9B,+BAA+B,EAAE,WAAW;IAC5C,aAAa,EAAE,MAAM;IACrB,uBAAuB,EAAE,UAAU;IACnC,sDAAsD,EACpD,yBAAyB;IAC3B,qDAAqD,EAAE,iBAAiB;IACxE,wDAAwD,EACtD,wBAAwB;IAC1B,uDAAuD,EAAE,gBAAgB;IACzE,wBAAwB,EAAE,QAAQ;IAClC,kCAAkC,EAAE,YAAY;IAChD,4EAA4E;IAC5E,4CAA4C;IAC5C,gDAAgD,EAAE,CAAC;IACnD,oCAAoC,EAAE,MAAM;IAC5C,+BAA+B,EAAE,OAAO;IACxC,oCAAoC,EAAE,MAAM;CACG,CAAC;AAElD,MAAM,CAAC,MAAM,iCAAiC,GAC5C,aAAa,CAA+B,8BAA8B,CAAC,CAAC"}
1
+ {"version":3,"file":"dashboard-sidebar-sizing.js","sourceRoot":"","sources":["../../../../../src/components/layout/dashboard-layout/dashboard-sidebar/dashboard-sidebar-sizing.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,OAAO,CAAC;AAEtC;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,yCAAyC,GACpD,gCAAgC,CAAC;AAEnC;;;GAGG;AACH,MAAM,CAAC,MAAM,oCAAoC,GAAG,OAAO,CAAC;AA8C5D,MAAM,CAAC,MAAM,8BAA8B,GAAG;IAC5C,uBAAuB,EAAE,MAAM;IAC/B,iCAAiC,EAAE,UAAU;IAC7C,sBAAsB,EAAE,oCAAoC;IAC5D,2EAA2E;IAC3E,4EAA4E;IAC5E,iEAAiE;IACjE,mEAAmE;IACnE,kDAAkD;IAClD,gCAAgC,EAAE,+CAA+C;IACjF,qBAAqB,EAAE,OAAO;IAC9B,+BAA+B,EAAE,WAAW;IAC5C,aAAa,EAAE,MAAM;IACrB,uBAAuB,EAAE,UAAU;IACnC,sDAAsD,EACpD,6DAA6D;IAC/D,qDAAqD,EACnD,qDAAqD;IACvD,wDAAwD,EACtD,wBAAwB;IAC1B,uDAAuD,EAAE,gBAAgB;IACzE,wBAAwB,EAAE,QAAQ;IAClC,kCAAkC,EAAE,YAAY;IAChD,4EAA4E;IAC5E,4CAA4C;IAC5C,gDAAgD,EAAE,CAAC;IACnD,oCAAoC,EAAE,MAAM;IAC5C,+BAA+B,EAAE,OAAO;IACxC,oCAAoC,EAAE,MAAM;CACG,CAAC;AAElD,MAAM,CAAC,MAAM,iCAAiC,GAC5C,aAAa,CAA+B,8BAA8B,CAAC,CAAC"}
@@ -9,4 +9,5 @@ export type { DashboardSidebarItemDefinition } from "./dashboard-sidebar-item-de
9
9
  export type { DashboardSidebarItemGroupDefinition } from "./dashboard-sidebar-item-group";
10
10
  export type { DashboardSidebarItemsAndGroupsDefinitions } from "./dashboard-sidebar-items-and-groups-context";
11
11
  export type { DashboardLayoutSidebarSizing } from "./dashboard-sidebar-sizing";
12
+ export { DASHBOARD_SIDEBAR_OPEN_WIDTH_CSS_VARIABLE, DEFAULT_DASHBOARD_SIDEBAR_OPEN_WIDTH, } from "./dashboard-sidebar-sizing";
12
13
  export type { IDashboardSidebarOpenStateContextType } from "./dashboard-sidebar-open-state";
@@ -5,4 +5,5 @@ export { useDashboardSidebarSizing } from "./useDashboardSidebarSizing";
5
5
  export { useDashboardSidebarOpenStateDispatch } from "./useDashboardSidebarOpenStateDispatch";
6
6
  export { useCloseDashboardSidebarOnRouteChange } from "./useCloseDashboardSidebarOnRouteChange";
7
7
  export { DashboardSidebarContextProvider } from "./dashboard-sidebar-context-provider";
8
+ export { DASHBOARD_SIDEBAR_OPEN_WIDTH_CSS_VARIABLE, DEFAULT_DASHBOARD_SIDEBAR_OPEN_WIDTH, } from "./dashboard-sidebar-sizing";
8
9
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../../src/components/layout/dashboard-layout/dashboard-sidebar/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,gBAAgB,EAChB,gBAAgB,IAAI,OAAO,GAC5B,MAAM,qBAAqB,CAAC;AAE7B,OAAO,EAAE,6BAA6B,EAAE,MAAM,oCAAoC,CAAC;AAEnF,OAAO,EAAE,4BAA4B,EAAE,MAAM,gCAAgC,CAAC;AAC9E,OAAO,EAAE,yBAAyB,EAAE,MAAM,6BAA6B,CAAC;AACxE,OAAO,EAAE,oCAAoC,EAAE,MAAM,wCAAwC,CAAC;AAC9F,OAAO,EAAE,qCAAqC,EAAE,MAAM,yCAAyC,CAAC;AAEhG,OAAO,EAAE,+BAA+B,EAAE,MAAM,sCAAsC,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../../src/components/layout/dashboard-layout/dashboard-sidebar/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,gBAAgB,EAChB,gBAAgB,IAAI,OAAO,GAC5B,MAAM,qBAAqB,CAAC;AAE7B,OAAO,EAAE,6BAA6B,EAAE,MAAM,oCAAoC,CAAC;AAEnF,OAAO,EAAE,4BAA4B,EAAE,MAAM,gCAAgC,CAAC;AAC9E,OAAO,EAAE,yBAAyB,EAAE,MAAM,6BAA6B,CAAC;AACxE,OAAO,EAAE,oCAAoC,EAAE,MAAM,wCAAwC,CAAC;AAC9F,OAAO,EAAE,qCAAqC,EAAE,MAAM,yCAAyC,CAAC;AAEhG,OAAO,EAAE,+BAA+B,EAAE,MAAM,sCAAsC,CAAC;AAMvF,OAAO,EACL,yCAAyC,EACzC,oCAAoC,GACrC,MAAM,4BAA4B,CAAC"}
@@ -4,3 +4,4 @@ export { DashboardLayout as default } from "./dashboard-layout";
4
4
  export type * from "./customizable-dashboard-component-type";
5
5
  export { useDashboardSidebarOpenState, useDashboardSidebarOpenStateDispatch, useCloseDashboardSidebarOnRouteChange, } from "./dashboard-sidebar";
6
6
  export type { DashboardSidebarItemDefinition, DashboardSidebarItemGroupDefinition, DashboardSidebarItemsAndGroupsDefinitions, } from "./dashboard-sidebar";
7
+ export { DASHBOARD_SIDEBAR_OPEN_WIDTH_CSS_VARIABLE, DEFAULT_DASHBOARD_SIDEBAR_OPEN_WIDTH, } from "./dashboard-sidebar";
@@ -1,4 +1,5 @@
1
1
  export * from "./dashboard-layout";
2
2
  export { DashboardLayout as default } from "./dashboard-layout";
3
3
  export { useDashboardSidebarOpenState, useDashboardSidebarOpenStateDispatch, useCloseDashboardSidebarOnRouteChange, } from "./dashboard-sidebar";
4
+ export { DASHBOARD_SIDEBAR_OPEN_WIDTH_CSS_VARIABLE, DEFAULT_DASHBOARD_SIDEBAR_OPEN_WIDTH, } from "./dashboard-sidebar";
4
5
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/components/layout/dashboard-layout/index.ts"],"names":[],"mappings":"AAAA,cAAc,oBAAoB,CAAC;AAEnC,OAAO,EAAE,eAAe,IAAI,OAAO,EAAE,MAAM,oBAAoB,CAAC;AAIhE,OAAO,EACL,4BAA4B,EAC5B,oCAAoC,EACpC,qCAAqC,GACtC,MAAM,qBAAqB,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/components/layout/dashboard-layout/index.ts"],"names":[],"mappings":"AAAA,cAAc,oBAAoB,CAAC;AAEnC,OAAO,EAAE,eAAe,IAAI,OAAO,EAAE,MAAM,oBAAoB,CAAC;AAIhE,OAAO,EACL,4BAA4B,EAC5B,oCAAoC,EACpC,qCAAqC,GACtC,MAAM,qBAAqB,CAAC;AAM7B,OAAO,EACL,yCAAyC,EACzC,oCAAoC,GACrC,MAAM,qBAAqB,CAAC"}
@@ -196,6 +196,8 @@ export * from "./line-chart";
196
196
  export type * from "./line-chart";
197
197
  export * from "./radar-chart";
198
198
  export type * from "./radar-chart";
199
+ export * from "./scatter-plot";
200
+ export type * from "./scatter-plot";
199
201
  export * from "./comparison-slider";
200
202
  export type * from "./comparison-slider";
201
203
  export * from "./theme-selector";
@@ -97,6 +97,7 @@ export * from "./pie-chart";
97
97
  export * from "./bar-chart";
98
98
  export * from "./line-chart";
99
99
  export * from "./radar-chart";
100
+ export * from "./scatter-plot";
100
101
  export * from "./comparison-slider";
101
102
  export * from "./theme-selector";
102
103
  export * from "./tree-view";
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/components/ui/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/components/ui/index.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,3 @@
1
+ export { ScatterPlot, scatterPlotVariants, scatterPlotSizeIds, scatterPlotColorIds, scatterPlotShapeIds, } from "./scatter-plot";
2
+ export type * from "./scatter-plot";
3
+ export { ScatterPlot as default } from "./scatter-plot";
@@ -0,0 +1,3 @@
1
+ export { ScatterPlot, scatterPlotVariants, scatterPlotSizeIds, scatterPlotColorIds, scatterPlotShapeIds, } from "./scatter-plot";
2
+ export { ScatterPlot as default } from "./scatter-plot";
3
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/components/ui/scatter-plot/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,WAAW,EACX,mBAAmB,EACnB,kBAAkB,EAClB,mBAAmB,EACnB,mBAAmB,GACpB,MAAM,gBAAgB,CAAC;AAExB,OAAO,EAAE,WAAW,IAAI,OAAO,EAAE,MAAM,gBAAgB,CAAC"}
@@ -0,0 +1,169 @@
1
+ import { type VariantProps } from "class-variance-authority";
2
+ import type { HTMLAttributes, KeyboardEvent, MouseEvent, ReactElement, ReactNode, Ref } from "react";
3
+ export declare const scatterPlotSizeIds: ["sm", "md", "lg", "xl"];
4
+ export type ScatterPlotSizeId = (typeof scatterPlotSizeIds)[number];
5
+ export declare const scatterPlotColorIds: ["default", "primary", "positive", "warning", "destructive", "muted"];
6
+ export type ScatterPlotColorId = (typeof scatterPlotColorIds)[number];
7
+ export declare const scatterPlotShapeIds: ["circle", "square", "triangle", "diamond"];
8
+ export type ScatterPlotShapeId = (typeof scatterPlotShapeIds)[number];
9
+ export declare const scatterPlotVariants: (props?: ({
10
+ size?: "sm" | "lg" | "xl" | "md" | null | undefined;
11
+ } & import("class-variance-authority/types").ClassProp) | undefined) => string;
12
+ export interface ScatterPlotPoint {
13
+ /** X value in domain units. Non-finite values are skipped. */
14
+ x: number;
15
+ /** Y value in domain units. Non-finite values are skipped. */
16
+ y: number;
17
+ /**
18
+ * Optional magnitude used to scale the marker (bubble chart mode). Values
19
+ * are mapped through a square-root scale onto `sizeRange` so that marker
20
+ * *area* -- not radius -- is proportional to the value. Ignored when the
21
+ * chart has no `sizeRange`-eligible data.
22
+ */
23
+ size?: number;
24
+ /** Human-readable label for the point (used in aria-labels and tooltips). */
25
+ label?: string;
26
+ /** Stable identifier for the point. Defaults to the index. */
27
+ id?: string;
28
+ }
29
+ export interface ScatterPlotSeries {
30
+ /** Stable identifier for the series. Used as React key and click payload. */
31
+ id: string;
32
+ /** Display name for the series. */
33
+ label?: string;
34
+ /** Points to plot. Order is irrelevant except for paint order. */
35
+ points: ReadonlyArray<ScatterPlotPoint>;
36
+ /** Preset color id from the chart palette. Ignored if `color` is provided. */
37
+ colorId?: ScatterPlotColorId;
38
+ /**
39
+ * Override the marker color with a raw CSS color (e.g. `"#ff0080"` or
40
+ * `"hsl(var(--chart-1))"`). Takes precedence over `colorId`.
41
+ */
42
+ color?: string;
43
+ /** Marker shape. Defaults to a rotation based on the series index. */
44
+ shape?: ScatterPlotShapeId;
45
+ /** Override the chart-level `pointRadius` for this series. */
46
+ pointRadius?: number;
47
+ /** Override the chart-level `pointOpacity` for this series. */
48
+ pointOpacity?: number;
49
+ /** Render a least-squares trend line for this series. Defaults to `false`. */
50
+ trendLine?: boolean;
51
+ /** Extra classes applied to this series' markers. */
52
+ className?: string;
53
+ /** Fired when a point in this series is clicked or activated via keyboard. */
54
+ onPointClick?: (point: ScatterPlotPoint, series: ScatterPlotSeries, event: MouseEvent<SVGPathElement> | KeyboardEvent<SVGPathElement>) => void;
55
+ }
56
+ export interface ScatterPlotValueLabelContext {
57
+ series: ScatterPlotSeries;
58
+ point: ScatterPlotPoint;
59
+ index: number;
60
+ }
61
+ export interface ScatterPlotReferenceLine {
62
+ /** Position of the line in domain units. */
63
+ value: number;
64
+ /** Optional label rendered next to the line. */
65
+ label?: string;
66
+ /** Extra classes applied to the line element. */
67
+ className?: string;
68
+ }
69
+ export interface ScatterPlotProps extends Omit<HTMLAttributes<HTMLDivElement>, "onClick">, VariantProps<typeof scatterPlotVariants> {
70
+ /** Series to render, in order (later series are drawn on top). */
71
+ series: ReadonlyArray<ScatterPlotSeries>;
72
+ /** Accessible label describing what the chart represents. */
73
+ label: string;
74
+ /** Override the rendered canvas width in pixels (defaults are size-aware). */
75
+ width?: number;
76
+ /** Override the rendered canvas height in pixels (defaults are size-aware). */
77
+ height?: number;
78
+ /** Lower bound of the x-axis. Defaults to the smallest x across series. */
79
+ xMin?: number;
80
+ /** Upper bound of the x-axis. Defaults to the largest x across series. */
81
+ xMax?: number;
82
+ /** Lower bound of the y-axis. Defaults to the smallest y across series. */
83
+ yMin?: number;
84
+ /** Upper bound of the y-axis. Defaults to the largest y across series. */
85
+ yMax?: number;
86
+ /** Marker radius in pixels when points carry no `size`. Defaults to `4`. */
87
+ pointRadius?: number;
88
+ /**
89
+ * Min/max marker radius in pixels for points that carry a `size`. Defaults
90
+ * to `[4, 14]`.
91
+ */
92
+ sizeRange?: readonly [number, number];
93
+ /** Marker fill opacity, useful for dense/overlapping data. Defaults to `0.8`. */
94
+ pointOpacity?: number;
95
+ /** Render the x/y axis lines. Defaults to `true`. */
96
+ showAxis?: boolean;
97
+ /**
98
+ * Number of evenly-spaced horizontal gridlines drawn across the y-axis. `0`
99
+ * disables them. Defaults to `0`.
100
+ */
101
+ gridLineCount?: number;
102
+ /**
103
+ * Number of evenly-spaced vertical gridlines drawn across the x-axis. `0`
104
+ * disables them. Defaults to `0`.
105
+ */
106
+ verticalGridLineCount?: number;
107
+ /**
108
+ * Format an x-axis tick label. Return `null` to skip the tick. When omitted,
109
+ * ticks render only if `showXAxisLabels` is `true` (raw values).
110
+ */
111
+ xTickFormatter?: (x: number, index: number) => string | null;
112
+ /** Number of evenly-spaced x-axis ticks, endpoints included. Defaults to `5`. */
113
+ xTickCount?: number;
114
+ /** Render raw-value x-axis ticks. Ignored when `xTickFormatter` is set. */
115
+ showXAxisLabels?: boolean;
116
+ /**
117
+ * Format a y-axis tick label. Return `null` to skip the tick. When omitted,
118
+ * ticks render only if `showYAxisLabels` is `true` (raw values).
119
+ */
120
+ yTickFormatter?: (y: number, index: number) => string | null;
121
+ /** Number of evenly-spaced y-axis ticks, endpoints included. Defaults to `5`. */
122
+ yTickCount?: number;
123
+ /** Render raw-value y-axis ticks. Ignored when `yTickFormatter` is set. */
124
+ showYAxisLabels?: boolean;
125
+ /**
126
+ * Width in pixels reserved for y-axis tick labels (the left gutter).
127
+ * Defaults to `36`. Only applied when y-axis labels are visible.
128
+ */
129
+ yTickLabelWidth?: number;
130
+ /** Axis title rendered under the x-axis. */
131
+ xAxisTitle?: string;
132
+ /** Axis title rendered (rotated) alongside the y-axis. */
133
+ yAxisTitle?: string;
134
+ /** Vertical reference line(s) at fixed x positions. */
135
+ xReferenceLines?: ReadonlyArray<ScatterPlotReferenceLine>;
136
+ /** Horizontal reference line(s) at fixed y positions. */
137
+ yReferenceLines?: ReadonlyArray<ScatterPlotReferenceLine>;
138
+ /** Render a text label next to every point. Defaults to `false`. */
139
+ showValueLabels?: boolean;
140
+ /**
141
+ * Customize the point-label text. Return `null` to skip a point. Defaults to
142
+ * the point's `label`, falling back to `(x, y)`.
143
+ */
144
+ valueLabelFormatter?: (context: ScatterPlotValueLabelContext) => string | null;
145
+ /**
146
+ * Fallback handler invoked for any point that doesn't have its own
147
+ * series-level `onPointClick`.
148
+ */
149
+ onPointClick?: (point: ScatterPlotPoint, series: ScatterPlotSeries, event: MouseEvent<SVGPathElement> | KeyboardEvent<SVGPathElement>) => void;
150
+ /** Text rendered when no finite data points are supplied. */
151
+ emptyMessage?: string;
152
+ /** Optional content overlaid on top of the plot area. */
153
+ children?: ReactNode;
154
+ /** Extra classes for the overlay content wrapper. */
155
+ overlayClassName?: string;
156
+ /** Extra classes applied to every point-label `<text>` element. */
157
+ valueLabelClassName?: string;
158
+ /** Extra classes applied to every axis tick `<text>` element. */
159
+ tickLabelClassName?: string;
160
+ /** Extra classes applied to the axis / gridline `<line>` elements. */
161
+ axisClassName?: string;
162
+ /** Optional ref forwarded to the wrapper element. */
163
+ ref?: Ref<HTMLDivElement>;
164
+ }
165
+ declare function ScatterPlot({ series, label, size, width, height, xMin, xMax, yMin, yMax, pointRadius, sizeRange, pointOpacity, showAxis, gridLineCount, verticalGridLineCount, xTickFormatter, xTickCount, showXAxisLabels, yTickFormatter, yTickCount, showYAxisLabels, yTickLabelWidth, xAxisTitle, yAxisTitle, xReferenceLines, yReferenceLines, showValueLabels, valueLabelFormatter, onPointClick, emptyMessage, children, className, overlayClassName, valueLabelClassName, tickLabelClassName, axisClassName, ref, ...props }: ScatterPlotProps): ReactElement;
166
+ declare namespace ScatterPlot {
167
+ var displayName: string;
168
+ }
169
+ export { ScatterPlot };
@@ -0,0 +1,385 @@
1
+ "use client";
2
+ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
3
+ import { cva } from "class-variance-authority";
4
+ import { useId } from "react";
5
+ import { cn } from "../../../lib/utils";
6
+ export const scatterPlotSizeIds = [
7
+ "sm",
8
+ "md",
9
+ "lg",
10
+ "xl",
11
+ ];
12
+ export const scatterPlotColorIds = [
13
+ "default",
14
+ "primary",
15
+ "positive",
16
+ "warning",
17
+ "destructive",
18
+ "muted",
19
+ ];
20
+ export const scatterPlotShapeIds = [
21
+ "circle",
22
+ "square",
23
+ "triangle",
24
+ "diamond",
25
+ ];
26
+ /** Default canvas dimensions per size. Either axis can be overridden via the
27
+ * `width` / `height` props. */
28
+ const SIZE_TO_CANVAS = {
29
+ sm: { width: 240, height: 180 },
30
+ md: { width: 360, height: 260 },
31
+ lg: { width: 480, height: 340 },
32
+ xl: { width: 640, height: 440 },
33
+ };
34
+ const FILL_CLASSES = {
35
+ default: "fill-schemavaults-brand-blue",
36
+ primary: "fill-primary",
37
+ positive: "fill-emerald-500 dark:fill-emerald-400",
38
+ warning: "fill-warning",
39
+ destructive: "fill-destructive",
40
+ muted: "fill-muted-foreground",
41
+ };
42
+ const STROKE_CLASSES = {
43
+ default: "stroke-schemavaults-brand-blue",
44
+ primary: "stroke-primary",
45
+ positive: "stroke-emerald-500 dark:stroke-emerald-400",
46
+ warning: "stroke-warning",
47
+ destructive: "stroke-destructive",
48
+ muted: "stroke-muted-foreground",
49
+ };
50
+ /**
51
+ * Fallback color/shape rotation when a series doesn't specify its own. Index
52
+ * is the series position in the input array, modulo the palette length. Shapes
53
+ * rotate alongside colors so overlapping series stay distinguishable without
54
+ * relying on color alone.
55
+ */
56
+ const DEFAULT_COLOR_ROTATION = [
57
+ "default",
58
+ "positive",
59
+ "warning",
60
+ "destructive",
61
+ "primary",
62
+ "muted",
63
+ ];
64
+ const DEFAULT_SHAPE_ROTATION = [
65
+ "circle",
66
+ "triangle",
67
+ "square",
68
+ "diamond",
69
+ ];
70
+ export const scatterPlotVariants = cva("relative inline-flex shrink-0 items-center justify-center", {
71
+ variants: {
72
+ size: {
73
+ sm: "text-[10px]",
74
+ md: "text-[11px]",
75
+ lg: "text-xs",
76
+ xl: "text-sm",
77
+ },
78
+ },
79
+ defaultVariants: {
80
+ size: "md",
81
+ },
82
+ });
83
+ function isFiniteNumber(value) {
84
+ return typeof value === "number" && Number.isFinite(value);
85
+ }
86
+ function round(value) {
87
+ return value.toFixed(2);
88
+ }
89
+ /**
90
+ * Build the `d` attribute for a marker centered at (cx, cy). Every shape is
91
+ * drawn as a path so markers share one element type (and therefore one set of
92
+ * event handlers and focus semantics).
93
+ */
94
+ function buildMarkerPath(shape, cx, cy, r) {
95
+ switch (shape) {
96
+ case "square": {
97
+ // Half-side chosen so the square's area approximates the circle's.
98
+ const h = r * 0.886;
99
+ return `M ${round(cx - h)} ${round(cy - h)} H ${round(cx + h)} V ${round(cy + h)} H ${round(cx - h)} Z`;
100
+ }
101
+ case "triangle": {
102
+ // Equilateral triangle with circumradius scaled for equal visual weight.
103
+ const R = r * 1.2;
104
+ const points = [-90, 30, 150]
105
+ .map((deg) => {
106
+ const rad = (deg * Math.PI) / 180;
107
+ return `${round(cx + R * Math.cos(rad))} ${round(cy + R * Math.sin(rad))}`;
108
+ })
109
+ .join(" L ");
110
+ return `M ${points} Z`;
111
+ }
112
+ case "diamond": {
113
+ const R = r * 1.25;
114
+ return `M ${round(cx)} ${round(cy - R)} L ${round(cx + R)} ${round(cy)} L ${round(cx)} ${round(cy + R)} L ${round(cx - R)} ${round(cy)} Z`;
115
+ }
116
+ case "circle":
117
+ default:
118
+ return `M ${round(cx - r)} ${round(cy)} a ${round(r)} ${round(r)} 0 1 0 ${round(r * 2)} 0 a ${round(r)} ${round(r)} 0 1 0 ${round(-r * 2)} 0 Z`;
119
+ }
120
+ }
121
+ /**
122
+ * Ordinary least-squares fit over the supplied domain points. Returns `null`
123
+ * when a line can't be determined (fewer than two points, or all x identical).
124
+ */
125
+ function computeTrendLine(points) {
126
+ if (points.length < 2)
127
+ return null;
128
+ let sumX = 0;
129
+ let sumY = 0;
130
+ let sumXY = 0;
131
+ let sumXX = 0;
132
+ for (const p of points) {
133
+ sumX += p.x;
134
+ sumY += p.y;
135
+ sumXY += p.x * p.y;
136
+ sumXX += p.x * p.x;
137
+ }
138
+ const n = points.length;
139
+ const denominator = n * sumXX - sumX * sumX;
140
+ if (denominator === 0)
141
+ return null;
142
+ const slope = (n * sumXY - sumX * sumY) / denominator;
143
+ const intercept = (sumY - slope * sumX) / n;
144
+ if (!Number.isFinite(slope) || !Number.isFinite(intercept))
145
+ return null;
146
+ return { slope, intercept };
147
+ }
148
+ function ScatterPlot({ series, label, size, width, height, xMin, xMax, yMin, yMax, pointRadius = 4, sizeRange = [4, 14], pointOpacity = 0.8, showAxis = true, gridLineCount = 0, verticalGridLineCount = 0, xTickFormatter, xTickCount = 5, showXAxisLabels = false, yTickFormatter, yTickCount = 5, showYAxisLabels = false, yTickLabelWidth = 36, xAxisTitle, yAxisTitle, xReferenceLines, yReferenceLines, showValueLabels = false, valueLabelFormatter, onPointClick, emptyMessage = "No data", children, className, overlayClassName, valueLabelClassName, tickLabelClassName, axisClassName, ref, ...props }) {
149
+ const resolvedSize = size ?? "md";
150
+ const canvas = SIZE_TO_CANVAS[resolvedSize];
151
+ const W = width ?? canvas.width;
152
+ const H = height ?? canvas.height;
153
+ const titleId = useId();
154
+ const hasXAxisLabels = typeof xTickFormatter === "function" || showXAxisLabels;
155
+ const hasYAxisLabels = typeof yTickFormatter === "function" || showYAxisLabels;
156
+ // Reserve gutters for axis labels / titles.
157
+ const padTop = showValueLabels ? 16 : 8;
158
+ const padBottom = (hasXAxisLabels ? 20 : 8) + (xAxisTitle ? 16 : 0);
159
+ const padLeft = (hasYAxisLabels ? Math.max(8, yTickLabelWidth) : 8) +
160
+ (yAxisTitle ? 16 : 0);
161
+ const padRight = 10;
162
+ const plotX0 = padLeft;
163
+ const plotY0 = padTop;
164
+ const plotW = Math.max(0, W - padLeft - padRight);
165
+ const plotH = Math.max(0, H - padTop - padBottom);
166
+ // Determine the domain across all series, ignoring non-finite coordinates.
167
+ let domainXMin = Number.POSITIVE_INFINITY;
168
+ let domainXMax = Number.NEGATIVE_INFINITY;
169
+ let domainYMin = Number.POSITIVE_INFINITY;
170
+ let domainYMax = Number.NEGATIVE_INFINITY;
171
+ let domainSizeMin = Number.POSITIVE_INFINITY;
172
+ let domainSizeMax = Number.NEGATIVE_INFINITY;
173
+ let totalFinitePoints = 0;
174
+ for (const s of series) {
175
+ for (const p of s.points) {
176
+ if (!isFiniteNumber(p.x) || !isFiniteNumber(p.y))
177
+ continue;
178
+ totalFinitePoints += 1;
179
+ if (p.x < domainXMin)
180
+ domainXMin = p.x;
181
+ if (p.x > domainXMax)
182
+ domainXMax = p.x;
183
+ if (p.y < domainYMin)
184
+ domainYMin = p.y;
185
+ if (p.y > domainYMax)
186
+ domainYMax = p.y;
187
+ if (isFiniteNumber(p.size)) {
188
+ if (p.size < domainSizeMin)
189
+ domainSizeMin = p.size;
190
+ if (p.size > domainSizeMax)
191
+ domainSizeMax = p.size;
192
+ }
193
+ }
194
+ }
195
+ const hasData = totalFinitePoints > 0;
196
+ const hasSizedPoints = Number.isFinite(domainSizeMin) && Number.isFinite(domainSizeMax);
197
+ const effectiveXMin = isFiniteNumber(xMin)
198
+ ? xMin
199
+ : hasData
200
+ ? domainXMin
201
+ : 0;
202
+ const effectiveXMax = isFiniteNumber(xMax)
203
+ ? xMax
204
+ : hasData
205
+ ? domainXMax
206
+ : 1;
207
+ const effectiveYMin = isFiniteNumber(yMin)
208
+ ? yMin
209
+ : hasData
210
+ ? domainYMin
211
+ : 0;
212
+ const effectiveYMax = isFiniteNumber(yMax)
213
+ ? yMax
214
+ : hasData
215
+ ? domainYMax
216
+ : 1;
217
+ const xSpan = effectiveXMax > effectiveXMin ? effectiveXMax - effectiveXMin : 1;
218
+ const ySpan = effectiveYMax > effectiveYMin ? effectiveYMax - effectiveYMin : 1;
219
+ const [minRadius, maxRadius] = sizeRange;
220
+ // Inset the data area so markers sitting on the domain edges aren't clipped.
221
+ const markerPad = hasSizedPoints
222
+ ? Math.max(minRadius, maxRadius) + 2
223
+ : pointRadius + 2;
224
+ const innerW = Math.max(0, plotW - markerPad * 2);
225
+ const innerH = Math.max(0, plotH - markerPad * 2);
226
+ const projectX = (x) => plotX0 + markerPad + ((x - effectiveXMin) / xSpan) * innerW;
227
+ const projectY = (y) => plotY0 + markerPad + innerH - ((y - effectiveYMin) / ySpan) * innerH;
228
+ const sizeSpan = hasSizedPoints
229
+ ? domainSizeMax - domainSizeMin
230
+ : 0;
231
+ const resolveRadius = (point, seriesRadius) => {
232
+ if (!hasSizedPoints || !isFiniteNumber(point.size))
233
+ return seriesRadius;
234
+ if (sizeSpan <= 0)
235
+ return maxRadius;
236
+ // Square-root scale: marker *area* tracks the value, not the radius.
237
+ const t = (point.size - domainSizeMin) / sizeSpan;
238
+ return minRadius + (maxRadius - minRadius) * Math.sqrt(t);
239
+ };
240
+ const resolved = series.map((s, seriesIndex) => {
241
+ const colorId = s.colorId ??
242
+ DEFAULT_COLOR_ROTATION[seriesIndex % DEFAULT_COLOR_ROTATION.length];
243
+ const shape = s.shape ??
244
+ DEFAULT_SHAPE_ROTATION[seriesIndex % DEFAULT_SHAPE_ROTATION.length];
245
+ const seriesRadius = s.pointRadius ?? pointRadius;
246
+ const points = [];
247
+ s.points.forEach((p, index) => {
248
+ if (!isFiniteNumber(p.x) || !isFiniteNumber(p.y))
249
+ return;
250
+ points.push({
251
+ point: p,
252
+ x: projectX(p.x),
253
+ y: projectY(p.y),
254
+ r: resolveRadius(p, seriesRadius),
255
+ index,
256
+ });
257
+ });
258
+ return {
259
+ series: s,
260
+ points,
261
+ colorId,
262
+ shape,
263
+ opacity: s.pointOpacity ?? pointOpacity,
264
+ };
265
+ });
266
+ const horizontalGridLines = (() => {
267
+ if (gridLineCount <= 0)
268
+ return [];
269
+ const lines = [];
270
+ for (let i = 1; i <= gridLineCount; i += 1) {
271
+ lines.push(i / (gridLineCount + 1));
272
+ }
273
+ return lines;
274
+ })();
275
+ const verticalGridLines = (() => {
276
+ if (verticalGridLineCount <= 0)
277
+ return [];
278
+ const lines = [];
279
+ for (let i = 1; i <= verticalGridLineCount; i += 1) {
280
+ lines.push(i / (verticalGridLineCount + 1));
281
+ }
282
+ return lines;
283
+ })();
284
+ const xTicks = (() => {
285
+ if (!hasXAxisLabels || !hasData)
286
+ return [];
287
+ const count = Math.max(2, xTickCount);
288
+ const ticks = [];
289
+ for (let i = 0; i < count; i += 1) {
290
+ const t = i / (count - 1);
291
+ const value = effectiveXMin + t * xSpan;
292
+ const text = typeof xTickFormatter === "function"
293
+ ? xTickFormatter(value, i)
294
+ : String(value);
295
+ if (text === null || text === "")
296
+ continue;
297
+ ticks.push({ x: projectX(value), text });
298
+ }
299
+ return ticks;
300
+ })();
301
+ const yTicks = (() => {
302
+ if (!hasYAxisLabels || !hasData)
303
+ return [];
304
+ const count = Math.max(2, yTickCount);
305
+ const ticks = [];
306
+ for (let i = 0; i < count; i += 1) {
307
+ // Iterate top-down (i = 0 -> yMax) so the first call to a custom
308
+ // formatter receives the largest value -- the order most consumers
309
+ // expect.
310
+ const t = i / (count - 1);
311
+ const value = effectiveYMax - t * ySpan;
312
+ const text = typeof yTickFormatter === "function"
313
+ ? yTickFormatter(value, i)
314
+ : String(value);
315
+ if (text === null || text === "")
316
+ continue;
317
+ ticks.push({ y: projectY(value), text });
318
+ }
319
+ return ticks;
320
+ })();
321
+ return (_jsxs("div", { ref: ref, role: "img", "aria-labelledby": titleId, "data-slot": "scatter-plot", className: cn(scatterPlotVariants({ size }), className), style: { width: W, height: H }, ...props, children: [_jsxs("svg", { width: W, height: H, viewBox: `0 0 ${W} ${H}`, "aria-hidden": children ? "true" : undefined, className: "h-full w-full overflow-visible", children: [_jsx("title", { id: titleId, children: label }), horizontalGridLines.length > 0 || verticalGridLines.length > 0 ? (_jsxs("g", { "aria-hidden": "true", "data-slot": "scatter-plot-gridlines", className: "pointer-events-none", children: [horizontalGridLines.map((t) => {
322
+ const y = plotY0 + plotH - t * plotH;
323
+ return (_jsx("line", { x1: plotX0, y1: y, x2: plotX0 + plotW, y2: y, strokeWidth: 1, className: cn("stroke-border/60", axisClassName) }, `h-grid-${t}`));
324
+ }), verticalGridLines.map((t) => {
325
+ const x = plotX0 + t * plotW;
326
+ return (_jsx("line", { x1: x, y1: plotY0, x2: x, y2: plotY0 + plotH, strokeWidth: 1, className: cn("stroke-border/60", axisClassName) }, `v-grid-${t}`));
327
+ })] })) : null, showAxis ? (_jsxs("g", { "aria-hidden": "true", "data-slot": "scatter-plot-axis", className: "pointer-events-none", children: [_jsx("line", { x1: plotX0, y1: plotY0, x2: plotX0, y2: plotY0 + plotH, strokeWidth: 1, className: cn("stroke-border", axisClassName) }), _jsx("line", { x1: plotX0, y1: plotY0 + plotH, x2: plotX0 + plotW, y2: plotY0 + plotH, strokeWidth: 1, className: cn("stroke-border", axisClassName) })] })) : null, hasData && xReferenceLines && xReferenceLines.length > 0 ? (_jsx("g", { "aria-hidden": "true", "data-slot": "scatter-plot-x-reference-lines", className: "pointer-events-none select-none", children: xReferenceLines.map((line, index) => {
328
+ const x = projectX(line.value);
329
+ return (_jsxs("g", { children: [_jsx("line", { x1: x, y1: plotY0, x2: x, y2: plotY0 + plotH, strokeWidth: 1, strokeDasharray: "4 3", className: cn("stroke-muted-foreground/70", line.className) }), line.label ? (_jsx("text", { x: x + 4, y: plotY0 + 8, className: "fill-muted-foreground", children: line.label })) : null] }, `x-ref-${index}-${line.value}`));
330
+ }) })) : null, hasData && yReferenceLines && yReferenceLines.length > 0 ? (_jsx("g", { "aria-hidden": "true", "data-slot": "scatter-plot-y-reference-lines", className: "pointer-events-none select-none", children: yReferenceLines.map((line, index) => {
331
+ const y = projectY(line.value);
332
+ return (_jsxs("g", { children: [_jsx("line", { x1: plotX0, y1: y, x2: plotX0 + plotW, y2: y, strokeWidth: 1, strokeDasharray: "4 3", className: cn("stroke-muted-foreground/70", line.className) }), line.label ? (_jsx("text", { x: plotX0 + plotW - 4, y: y - 4, textAnchor: "end", className: "fill-muted-foreground", children: line.label })) : null] }, `y-ref-${index}-${line.value}`));
333
+ }) })) : null, !hasData ? (_jsx("text", { x: W / 2, y: H / 2, textAnchor: "middle", dominantBaseline: "central", className: "fill-muted-foreground", children: emptyMessage })) : (resolved.map((rs) => {
334
+ const rawColor = rs.series.color;
335
+ const fillClass = rawColor
336
+ ? undefined
337
+ : FILL_CLASSES[rs.colorId];
338
+ const strokeClass = rawColor
339
+ ? undefined
340
+ : STROKE_CLASSES[rs.colorId];
341
+ const handler = rs.series.onPointClick ?? onPointClick;
342
+ const isInteractive = typeof handler === "function";
343
+ const trend = rs.series.trendLine
344
+ ? computeTrendLine(rs.series.points.filter((p) => isFiniteNumber(p.x) && isFiniteNumber(p.y)))
345
+ : null;
346
+ return (_jsxs("g", { "data-slot": "scatter-plot-series", "data-series-id": rs.series.id, children: [trend ? (_jsx("line", { "aria-hidden": "true", "data-slot": "scatter-plot-trend-line", x1: projectX(effectiveXMin), y1: projectY(trend.slope * effectiveXMin + trend.intercept), x2: projectX(effectiveXMax), y2: projectY(trend.slope * effectiveXMax + trend.intercept), stroke: rawColor, strokeWidth: 1.5, strokeDasharray: "5 4", strokeLinecap: "round", className: cn("pointer-events-none", strokeClass) })) : null, rs.points.map((rp) => {
347
+ const pointKey = rp.point.id ?? `${rs.series.id}-${rp.index}`;
348
+ const seriesName = rs.series.label ?? rs.series.id;
349
+ const ariaLabel = rp.point.label
350
+ ? `${seriesName} – ${rp.point.label}: (${rp.point.x}, ${rp.point.y})`
351
+ : `${seriesName}: (${rp.point.x}, ${rp.point.y})`;
352
+ return (_jsx("path", { d: buildMarkerPath(rs.shape, rp.x, rp.y, rp.r), fill: rawColor ?? "currentColor", fillOpacity: rs.opacity, stroke: "hsl(var(--background))", strokeWidth: 1, "data-point-index": rp.index, "data-testid": `scatter-plot-point-${pointKey}`, role: isInteractive ? "button" : undefined, tabIndex: isInteractive ? 0 : undefined, "aria-label": ariaLabel, onClick: isInteractive
353
+ ? (event) => {
354
+ handler(rp.point, rs.series, event);
355
+ }
356
+ : undefined, onKeyDown: isInteractive
357
+ ? (event) => {
358
+ if (event.key === "Enter" || event.key === " ") {
359
+ event.preventDefault();
360
+ handler(rp.point, rs.series, event);
361
+ }
362
+ }
363
+ : undefined, className: cn("transition-opacity", fillClass, isInteractive &&
364
+ "cursor-pointer hover:opacity-80 focus:outline-none focus-visible:opacity-60", rs.series.className), children: _jsx("title", { children: ariaLabel }) }, pointKey));
365
+ }), showValueLabels
366
+ ? rs.points.map((rp) => {
367
+ const text = valueLabelFormatter
368
+ ? valueLabelFormatter({
369
+ series: rs.series,
370
+ point: rp.point,
371
+ index: rp.index,
372
+ })
373
+ : (rp.point.label ??
374
+ `(${rp.point.x}, ${rp.point.y})`);
375
+ if (text === null || text === "")
376
+ return null;
377
+ const labelKey = (rp.point.id ?? `${rs.series.id}-${rp.index}`) + "-val";
378
+ return (_jsx("text", { x: rp.x, y: rp.y - rp.r - 4, textAnchor: "middle", className: cn("pointer-events-none select-none fill-foreground font-medium", valueLabelClassName), children: text }, labelKey));
379
+ })
380
+ : null] }, rs.series.id));
381
+ })), xTicks.length > 0 ? (_jsx("g", { "aria-hidden": "true", "data-slot": "scatter-plot-x-ticks", className: "pointer-events-none select-none", children: xTicks.map((tick, index) => (_jsxs("g", { children: [_jsx("line", { x1: tick.x, x2: tick.x, y1: plotY0 + plotH, y2: plotY0 + plotH + 3, strokeWidth: 1, className: cn("stroke-border", axisClassName) }), _jsx("text", { x: tick.x, y: plotY0 + plotH + 14, textAnchor: "middle", className: cn("fill-muted-foreground", tickLabelClassName), children: tick.text })] }, `xtick-${index}-${tick.text}`))) })) : null, yTicks.length > 0 ? (_jsx("g", { "aria-hidden": "true", "data-slot": "scatter-plot-y-ticks", className: "pointer-events-none select-none", children: yTicks.map((tick, index) => (_jsxs("g", { children: [_jsx("line", { x1: plotX0 - 3, x2: plotX0, y1: tick.y, y2: tick.y, strokeWidth: 1, className: cn("stroke-border", axisClassName) }), _jsx("text", { x: plotX0 - 6, y: tick.y, textAnchor: "end", dominantBaseline: "central", className: cn("fill-muted-foreground", tickLabelClassName), children: tick.text })] }, `ytick-${index}-${tick.text}`))) })) : null, xAxisTitle ? (_jsx("text", { "aria-hidden": "true", "data-slot": "scatter-plot-x-axis-title", x: plotX0 + plotW / 2, y: H - 2, textAnchor: "middle", className: "pointer-events-none select-none fill-muted-foreground font-medium", children: xAxisTitle })) : null, yAxisTitle ? (_jsx("text", { "aria-hidden": "true", "data-slot": "scatter-plot-y-axis-title", x: 10, y: plotY0 + plotH / 2, textAnchor: "middle", transform: `rotate(-90 10 ${plotY0 + plotH / 2})`, className: "pointer-events-none select-none fill-muted-foreground font-medium", children: yAxisTitle })) : null] }), children ? (_jsx("div", { className: cn("pointer-events-none absolute inset-0 flex items-center justify-center text-center", overlayClassName), children: children })) : null] }));
382
+ }
383
+ ScatterPlot.displayName = "ScatterPlot";
384
+ export { ScatterPlot };
385
+ //# sourceMappingURL=scatter-plot.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"scatter-plot.js","sourceRoot":"","sources":["../../../../src/components/ui/scatter-plot/scatter-plot.tsx"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@schemavaults/ui",
3
- "version": "0.99.3",
3
+ "version": "0.101.0",
4
4
  "private": false,
5
5
  "license": "MIT",
6
6
  "description": "React.js UI components for SchemaVaults frontend applications",