@northstar-js/react 0.1.0 → 0.2.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 (127) hide show
  1. package/dist/actions.d.ts +71 -4
  2. package/dist/actions.d.ts.map +1 -1
  3. package/dist/actions.js +50 -4
  4. package/dist/actions.js.map +1 -1
  5. package/dist/backdrops/StarBackdrop.d.ts +31 -0
  6. package/dist/backdrops/StarBackdrop.d.ts.map +1 -0
  7. package/dist/backdrops/StarBackdrop.js +84 -0
  8. package/dist/backdrops/StarBackdrop.js.map +1 -0
  9. package/dist/backdrops/index.d.ts +7 -0
  10. package/dist/backdrops/index.d.ts.map +1 -0
  11. package/dist/backdrops/index.js +8 -0
  12. package/dist/backdrops/index.js.map +1 -0
  13. package/dist/backdrops/math.d.ts +39 -0
  14. package/dist/backdrops/math.d.ts.map +1 -0
  15. package/dist/backdrops/math.js +44 -0
  16. package/dist/backdrops/math.js.map +1 -0
  17. package/dist/backdrops/scenes.d.ts +20 -0
  18. package/dist/backdrops/scenes.d.ts.map +1 -0
  19. package/dist/backdrops/scenes.js +417 -0
  20. package/dist/backdrops/scenes.js.map +1 -0
  21. package/dist/backdrops.css +141 -0
  22. package/dist/data.d.ts +14 -3
  23. package/dist/data.d.ts.map +1 -1
  24. package/dist/data.js +16 -7
  25. package/dist/data.js.map +1 -1
  26. package/dist/effects/actions.d.ts +48 -0
  27. package/dist/effects/actions.d.ts.map +1 -0
  28. package/dist/effects/actions.js +80 -0
  29. package/dist/effects/actions.js.map +1 -0
  30. package/dist/effects/controls.d.ts +84 -0
  31. package/dist/effects/controls.d.ts.map +1 -0
  32. package/dist/effects/controls.js +121 -0
  33. package/dist/effects/controls.js.map +1 -0
  34. package/dist/effects/display.d.ts +92 -0
  35. package/dist/effects/display.d.ts.map +1 -0
  36. package/dist/effects/display.js +138 -0
  37. package/dist/effects/display.js.map +1 -0
  38. package/dist/effects/hooks.d.ts +13 -0
  39. package/dist/effects/hooks.d.ts.map +1 -0
  40. package/dist/effects/hooks.js +68 -0
  41. package/dist/effects/hooks.js.map +1 -0
  42. package/dist/effects/index.d.ts +14 -0
  43. package/dist/effects/index.d.ts.map +1 -0
  44. package/dist/effects/index.js +12 -0
  45. package/dist/effects/index.js.map +1 -0
  46. package/dist/effects/loaders.d.ts +67 -0
  47. package/dist/effects/loaders.d.ts.map +1 -0
  48. package/dist/effects/loaders.js +73 -0
  49. package/dist/effects/loaders.js.map +1 -0
  50. package/dist/effects/math.d.ts +23 -0
  51. package/dist/effects/math.d.ts.map +1 -0
  52. package/dist/effects/math.js +56 -0
  53. package/dist/effects/math.js.map +1 -0
  54. package/dist/effects/navigation.d.ts +55 -0
  55. package/dist/effects/navigation.d.ts.map +1 -0
  56. package/dist/effects/navigation.js +103 -0
  57. package/dist/effects/navigation.js.map +1 -0
  58. package/dist/effects/overlays.d.ts +34 -0
  59. package/dist/effects/overlays.d.ts.map +1 -0
  60. package/dist/effects/overlays.js +56 -0
  61. package/dist/effects/overlays.js.map +1 -0
  62. package/dist/effects.css +1659 -0
  63. package/dist/feedback.d.ts +6 -1
  64. package/dist/feedback.d.ts.map +1 -1
  65. package/dist/feedback.js +3 -3
  66. package/dist/feedback.js.map +1 -1
  67. package/dist/flow.d.ts +70 -0
  68. package/dist/flow.d.ts.map +1 -0
  69. package/dist/flow.js +118 -0
  70. package/dist/flow.js.map +1 -0
  71. package/dist/glass.d.ts +74 -0
  72. package/dist/glass.d.ts.map +1 -0
  73. package/dist/glass.js +139 -0
  74. package/dist/glass.js.map +1 -0
  75. package/dist/index.d.ts +14 -5
  76. package/dist/index.d.ts.map +1 -1
  77. package/dist/index.js +5 -1
  78. package/dist/index.js.map +1 -1
  79. package/dist/internal/expand.d.ts +17 -0
  80. package/dist/internal/expand.d.ts.map +1 -0
  81. package/dist/internal/expand.js +23 -0
  82. package/dist/internal/expand.js.map +1 -0
  83. package/dist/internal/interaction.d.ts +21 -0
  84. package/dist/internal/interaction.d.ts.map +1 -0
  85. package/dist/internal/interaction.js +129 -0
  86. package/dist/internal/interaction.js.map +1 -0
  87. package/dist/motion.d.ts +36 -0
  88. package/dist/motion.d.ts.map +1 -0
  89. package/dist/motion.js +80 -0
  90. package/dist/motion.js.map +1 -0
  91. package/dist/navigation.d.ts +43 -6
  92. package/dist/navigation.d.ts.map +1 -1
  93. package/dist/navigation.js +86 -19
  94. package/dist/navigation.js.map +1 -1
  95. package/dist/northstar/ExportMenu.d.ts +3 -1
  96. package/dist/northstar/ExportMenu.d.ts.map +1 -1
  97. package/dist/northstar/ExportMenu.js +2 -2
  98. package/dist/northstar/ExportMenu.js.map +1 -1
  99. package/dist/northstar/ResearchBuilder.d.ts.map +1 -1
  100. package/dist/northstar/ResearchBuilder.js +3 -3
  101. package/dist/northstar/ResearchBuilder.js.map +1 -1
  102. package/dist/northstar/Run.d.ts +3 -1
  103. package/dist/northstar/Run.d.ts.map +1 -1
  104. package/dist/northstar/Run.js +4 -3
  105. package/dist/northstar/Run.js.map +1 -1
  106. package/dist/northstar/StudyShell.d.ts +23 -1
  107. package/dist/northstar/StudyShell.d.ts.map +1 -1
  108. package/dist/northstar/StudyShell.js +6 -2
  109. package/dist/northstar/StudyShell.js.map +1 -1
  110. package/dist/northstar/StudyStatus.d.ts +3 -1
  111. package/dist/northstar/StudyStatus.d.ts.map +1 -1
  112. package/dist/northstar/StudyStatus.js +4 -2
  113. package/dist/northstar/StudyStatus.js.map +1 -1
  114. package/dist/overlays.d.ts +29 -4
  115. package/dist/overlays.d.ts.map +1 -1
  116. package/dist/overlays.js +38 -12
  117. package/dist/overlays.js.map +1 -1
  118. package/dist/provider.d.ts +31 -2
  119. package/dist/provider.d.ts.map +1 -1
  120. package/dist/provider.js +20 -6
  121. package/dist/provider.js.map +1 -1
  122. package/dist/styles.css +1069 -7
  123. package/dist/surface.d.ts +58 -0
  124. package/dist/surface.d.ts.map +1 -0
  125. package/dist/surface.js +39 -0
  126. package/dist/surface.js.map +1 -0
  127. package/package.json +18 -8
package/dist/data.d.ts CHANGED
@@ -1,11 +1,14 @@
1
1
  import { type Tone } from './internal/util.js';
2
+ import { type Expand } from './internal/expand.js';
2
3
  export interface TableProps extends React.TableHTMLAttributes<HTMLTableElement> {
3
4
  density?: 'compact' | 'default' | 'comfortable';
4
5
  /** Sticky header row. */
5
6
  stickyHeader?: boolean;
6
7
  caption?: React.ReactNode;
8
+ /** Body rows lift on hover and on keyboard focus within, for tables whose rows open something. */
9
+ interactive?: boolean;
7
10
  }
8
- export declare function Table({ density, stickyHeader, caption, className, children, ...rest }: TableProps): import("react/jsx-runtime").JSX.Element;
11
+ export declare function Table({ density, stickyHeader, caption, interactive, className, children, ...rest }: TableProps): import("react/jsx-runtime").JSX.Element;
9
12
  export declare const TableHead: (p: React.HTMLAttributes<HTMLTableSectionElement>) => import("react/jsx-runtime").JSX.Element;
10
13
  export declare const TableBody: (p: React.HTMLAttributes<HTMLTableSectionElement>) => import("react/jsx-runtime").JSX.Element;
11
14
  export declare function TableRow({ selected, className, ...rest }: React.HTMLAttributes<HTMLTableRowElement> & {
@@ -39,14 +42,22 @@ export interface TagProps extends React.HTMLAttributes<HTMLSpanElement> {
39
42
  /** Shows a remove button with this accessible label. */
40
43
  onRemove?: () => void;
41
44
  removeLabel?: string;
45
+ /** Leading icon (decorative). */
46
+ icon?: React.ReactNode;
47
+ /** With `icon`: the icon shows and the text eases open on hover and focus within (always on touch). `always` keeps it open. */
48
+ expand?: Expand;
42
49
  }
43
- export declare function Tag({ tone, onRemove, removeLabel, className, children, ...rest }: TagProps): import("react/jsx-runtime").JSX.Element;
50
+ export declare function Tag({ tone, onRemove, removeLabel, icon, expand, className, children, ...rest }: TagProps): import("react/jsx-runtime").JSX.Element;
44
51
  export interface BadgeProps extends React.HTMLAttributes<HTMLSpanElement> {
45
52
  tone?: Tone;
46
53
  variant?: 'solid' | 'outline';
54
+ /** Leading icon (decorative). */
55
+ icon?: React.ReactNode;
56
+ /** With `icon`: the icon shows and the word eases open on hover (always on touch). `always` keeps it open. */
57
+ expand?: Expand;
47
58
  }
48
59
  /** A short count or status word. */
49
- export declare function Badge({ tone, variant, className, ...rest }: BadgeProps): import("react/jsx-runtime").JSX.Element;
60
+ export declare function Badge({ tone, variant, icon, expand, className, children, ...rest }: BadgeProps): import("react/jsx-runtime").JSX.Element;
50
61
  export declare function initials(name: string): string;
51
62
  export interface AvatarProps extends React.HTMLAttributes<HTMLSpanElement> {
52
63
  /** A workspace person. Rendered as initials; stars are reserved for agents. */
@@ -1 +1 @@
1
- {"version":3,"file":"data.d.ts","sourceRoot":"","sources":["../src/data.tsx"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"data.d.ts","sourceRoot":"","sources":["../src/data.tsx"],"names":[],"mappings":"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"}
package/dist/data.js CHANGED
@@ -1,9 +1,10 @@
1
- import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
1
+ import { jsx as _jsx, jsxs as _jsxs, Fragment as _Fragment } from "react/jsx-runtime";
2
2
  // Server-component safe: no state, no context.
3
3
  import { cx } from './internal/util.js';
4
4
  import { Close } from './internal/icons.js';
5
- export function Table({ density, stickyHeader = false, caption, className, children, ...rest }) {
6
- return (_jsx("div", { className: "ns-table-wrap", children: _jsxs("table", { ...rest, className: cx('ns-table', stickyHeader && 'ns-table--sticky', className), "data-density": density, children: [caption && _jsx("caption", { className: "ns-table__caption", children: caption }), children] }) }));
5
+ import { ExpandIcon, ExpandLabel, expandHost } from './internal/expand.js';
6
+ export function Table({ density, stickyHeader = false, caption, interactive = false, className, children, ...rest }) {
7
+ return (_jsx("div", { className: "ns-table-wrap", children: _jsxs("table", { ...rest, className: cx('ns-table', stickyHeader && 'ns-table--sticky', interactive && 'ns-table--interactive', className), "data-density": density, children: [caption && _jsx("caption", { className: "ns-table__caption", children: caption }), children] }) }));
7
8
  }
8
9
  export const TableHead = (p) => _jsx("thead", { ...p });
9
10
  export const TableBody = (p) => _jsx("tbody", { ...p });
@@ -23,12 +24,20 @@ export function List({ divided = true, ordered = false, className, ...rest }) {
23
24
  export function ListItem({ title, description, start, end, className, children, ...rest }) {
24
25
  return (_jsxs("li", { ...rest, className: cx('ns-list__item', className), children: [start && _jsx("span", { className: "ns-list__start", children: start }), _jsxs("span", { className: "ns-list__text", children: [title && _jsx("span", { className: "ns-list__title", children: title }), description && _jsx("span", { className: "ns-list__description", children: description }), children] }), end && _jsx("span", { className: "ns-list__end", children: end })] }));
25
26
  }
26
- export function Tag({ tone = 'neutral', onRemove, removeLabel, className, children, ...rest }) {
27
- return (_jsxs("span", { ...rest, className: cx('ns-tag', tone === 'signal' && 'ns-tone-signal', className), children: [children, onRemove && (_jsx("button", { type: "button", className: "ns-tag__remove", "aria-label": removeLabel ?? `Remove ${typeof children === 'string' ? children : ''}`.trim(), onClick: onRemove, children: _jsx(Close, {}) }))] }));
27
+ function iconLed(icon, expand, children, cls) {
28
+ const has = icon !== undefined && icon !== null && icon !== false;
29
+ const host = has ? expandHost(expand) : {};
30
+ const body = has ? (_jsxs(_Fragment, { children: [_jsx(ExpandIcon, { className: `${cls}__icon`, children: icon }), host.className ? _jsx(ExpandLabel, { children: children }) : children] })) : (children);
31
+ return { host, body };
32
+ }
33
+ export function Tag({ tone = 'neutral', onRemove, removeLabel, icon, expand, className, children, ...rest }) {
34
+ const { host, body } = iconLed(icon, expand, children, 'ns-tag');
35
+ return (_jsxs("span", { ...rest, "data-expand": host['data-expand'], className: cx('ns-tag', tone === 'signal' && 'ns-tone-signal', host.className, className), children: [body, onRemove && (_jsx("button", { type: "button", className: "ns-tag__remove", "aria-label": removeLabel ?? `Remove ${typeof children === 'string' ? children : ''}`.trim(), onClick: onRemove, children: _jsx(Close, {}) }))] }));
28
36
  }
29
37
  /** A short count or status word. */
30
- export function Badge({ tone = 'neutral', variant = 'outline', className, ...rest }) {
31
- return _jsx("span", { ...rest, className: cx('ns-badge', `ns-badge--${variant}`, tone === 'signal' && 'ns-tone-signal', className) });
38
+ export function Badge({ tone = 'neutral', variant = 'outline', icon, expand, className, children, ...rest }) {
39
+ const { host, body } = iconLed(icon, expand, children, 'ns-badge');
40
+ return (_jsx("span", { ...rest, "data-expand": host['data-expand'], className: cx('ns-badge', `ns-badge--${variant}`, tone === 'signal' && 'ns-tone-signal', host.className, className), children: body }));
32
41
  }
33
42
  /* ----------------------------------------------------------------- Avatar */
34
43
  export function initials(name) {
package/dist/data.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"data.js","sourceRoot":"","sources":["../src/data.tsx"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"data.js","sourceRoot":"","sources":["../src/data.tsx"],"names":[],"mappings":"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"}
@@ -0,0 +1,48 @@
1
+ export interface StarLinkProps extends React.AnchorHTMLAttributes<HTMLAnchorElement> {
2
+ /** `signal` (default) uses the Glacier role; `neutral` keeps text colour and lets only the star carry the signal. */
3
+ tone?: 'signal' | 'neutral';
4
+ /** Opens in a new tab with `rel="noreferrer noopener"` and says so to screen readers. */
5
+ external?: boolean;
6
+ /** Text read after the link when `external`. Default "(opens in a new tab)". */
7
+ externalLabel?: string;
8
+ ref?: React.Ref<HTMLAnchorElement>;
9
+ }
10
+ /**
11
+ * A link whose underline is traced like a meridian (a hairline drawn from the
12
+ * left with a travelling point) while a north star twinkles into place beside
13
+ * it on hover and keyboard focus.
14
+ */
15
+ export declare function StarLink({ tone, external, externalLabel, className, children, ...rest }: StarLinkProps): import("react/jsx-runtime").JSX.Element;
16
+ export interface ConstellationButtonProps extends React.ButtonHTMLAttributes<HTMLButtonElement> {
17
+ variant?: 'primary' | 'secondary';
18
+ size?: 'sm' | 'md' | 'lg';
19
+ /** Default `pill` like every button; `rounded` opts out. */
20
+ shape?: 'pill' | 'rounded';
21
+ /**
22
+ * `spin` (machined metal, the default like every button) or `soft` (tonal
23
+ * fill and tactile texture). Unset, it follows the nearest
24
+ * NorthstarProvider's `buttonFinish` through CSS.
25
+ */
26
+ finish?: 'spin' | 'soft';
27
+ /** Seed for the star scatter. Each press advances it, so presses differ but every run repeats. */
28
+ seed?: number;
29
+ /** Number of stars per press (3–8). Default 5. */
30
+ stars?: number;
31
+ ref?: React.Ref<HTMLButtonElement>;
32
+ }
33
+ /**
34
+ * A button that, when pressed, lets a few star points out round the press
35
+ * point, joins them with lines into a small constellation, then fades. The
36
+ * scatter is golden-angle spaced and seeded. No burst under reduced motion.
37
+ */
38
+ export declare function ConstellationButton({ variant, size, shape, finish, seed, stars, className, children, onClick, type, ref, ...rest }: ConstellationButtonProps): import("react/jsx-runtime").JSX.Element;
39
+ export interface KbdKeycapProps extends React.HTMLAttributes<HTMLElement> {
40
+ /** Shows the key held down. */
41
+ pressed?: boolean;
42
+ /** A `KeyboardEvent.key` value (case-insensitive); the cap presses while that key is held anywhere on the page. */
43
+ listen?: string;
44
+ ref?: React.Ref<HTMLElement>;
45
+ }
46
+ /** A keycap with physical depth: it sits on a ledge and sinks when pressed. */
47
+ export declare function KbdKeycap({ pressed, listen, className, children, ...rest }: KbdKeycapProps): import("react/jsx-runtime").JSX.Element;
48
+ //# sourceMappingURL=actions.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"actions.d.ts","sourceRoot":"","sources":["../../src/effects/actions.tsx"],"names":[],"mappings":"AASA,MAAM,WAAW,aAAc,SAAQ,KAAK,CAAC,oBAAoB,CAAC,iBAAiB,CAAC;IAClF,qHAAqH;IACrH,IAAI,CAAC,EAAE,QAAQ,GAAG,SAAS,CAAC;IAC5B,yFAAyF;IACzF,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,gFAAgF;IAChF,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,GAAG,CAAC,EAAE,KAAK,CAAC,GAAG,CAAC,iBAAiB,CAAC,CAAC;CACpC;AAED;;;;GAIG;AACH,wBAAgB,QAAQ,CAAC,EAAE,IAAe,EAAE,QAAQ,EAAE,aAAsC,EAAE,SAAS,EAAE,QAAQ,EAAE,GAAG,IAAI,EAAE,EAAE,aAAa,2CAiB1I;AAWD,MAAM,WAAW,wBAAyB,SAAQ,KAAK,CAAC,oBAAoB,CAAC,iBAAiB,CAAC;IAC7F,OAAO,CAAC,EAAE,SAAS,GAAG,WAAW,CAAC;IAClC,IAAI,CAAC,EAAE,IAAI,GAAG,IAAI,GAAG,IAAI,CAAC;IAC1B,4DAA4D;IAC5D,KAAK,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IAC3B;;;;OAIG;IACH,MAAM,CAAC,EAAE,MAAM,GAAG,MAAM,CAAC;IACzB,kGAAkG;IAClG,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,kDAAkD;IAClD,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,GAAG,CAAC,EAAE,KAAK,CAAC,GAAG,CAAC,iBAAiB,CAAC,CAAC;CACpC;AAED;;;;GAIG;AACH,wBAAgB,mBAAmB,CAAC,EAClC,OAAqB,EACrB,IAAW,EACX,KAAc,EACd,MAAM,EACN,IAAQ,EACR,KAAS,EACT,SAAS,EACT,QAAQ,EACR,OAAO,EACP,IAAe,EACf,GAAG,EACH,GAAG,IAAI,EACR,EAAE,wBAAwB,2CAkE1B;AAID,MAAM,WAAW,cAAe,SAAQ,KAAK,CAAC,cAAc,CAAC,WAAW,CAAC;IACvE,+BAA+B;IAC/B,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,mHAAmH;IACnH,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,GAAG,CAAC,EAAE,KAAK,CAAC,GAAG,CAAC,WAAW,CAAC,CAAC;CAC9B;AAED,+EAA+E;AAC/E,wBAAgB,SAAS,CAAC,EAAE,OAAO,EAAE,MAAM,EAAE,SAAS,EAAE,QAAQ,EAAE,GAAG,IAAI,EAAE,EAAE,cAAc,2CAuB1F"}
@@ -0,0 +1,80 @@
1
+ 'use client';
2
+ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
3
+ import { useEffect, useRef, useState } from 'react';
4
+ import { cx, reducedMotionNow, useTimers } from './hooks.js';
5
+ import { GOLDEN_ANGLE, r2, seeded, starPath } from './math.js';
6
+ const STAR_D = starPath(6, 6, 5.5, 1.15);
7
+ /**
8
+ * A link whose underline is traced like a meridian (a hairline drawn from the
9
+ * left with a travelling point) while a north star twinkles into place beside
10
+ * it on hover and keyboard focus.
11
+ */
12
+ export function StarLink({ tone = 'signal', external, externalLabel = '(opens in a new tab)', className, children, ...rest }) {
13
+ return (_jsxs("a", { ...(external ? { target: '_blank', rel: 'noreferrer noopener' } : null), ...rest, className: cx('ns-fx-starlink', tone === 'neutral' && 'ns-fx-starlink--neutral', className), children: [_jsxs("span", { className: "ns-fx-starlink__text", children: [children, _jsx("span", { className: "ns-fx-starlink__point", "aria-hidden": "true" })] }), _jsx("svg", { className: "ns-fx-starlink__star", viewBox: "0 0 12 12", width: "10", height: "10", "aria-hidden": "true", focusable: "false", children: _jsx("path", { d: STAR_D, fill: "currentColor" }) }), external ? _jsx("span", { className: "ns-fx-sr", children: ` ${externalLabel}` }) : null] }));
14
+ }
15
+ /**
16
+ * A button that, when pressed, lets a few star points out round the press
17
+ * point, joins them with lines into a small constellation, then fades. The
18
+ * scatter is golden-angle spaced and seeded. No burst under reduced motion.
19
+ */
20
+ export function ConstellationButton({ variant = 'secondary', size = 'md', shape = 'pill', finish, seed = 7, stars = 5, className, children, onClick, type = 'button', ref, ...rest }) {
21
+ const [bursts, setBursts] = useState([]);
22
+ const count = useRef(0);
23
+ const after = useTimers();
24
+ const n = Math.min(8, Math.max(3, Math.round(stars)));
25
+ function handleClick(e) {
26
+ onClick?.(e);
27
+ if (e.defaultPrevented || reducedMotionNow())
28
+ return;
29
+ const el = e.currentTarget;
30
+ const box = el.getBoundingClientRect();
31
+ // Keyboard clicks report (0, 0): start from the centre instead.
32
+ const fromPointer = e.detail > 0 && (e.clientX !== 0 || e.clientY !== 0);
33
+ const x = fromPointer ? e.clientX - box.left : box.width / 2;
34
+ const y = fromPointer ? e.clientY - box.top : box.height / 2;
35
+ const rnd = seeded(seed * 7919 + count.current++);
36
+ const turn = rnd() * 360;
37
+ const pts = Array.from({ length: n }, (_, i) => {
38
+ // Normalised to one turn so sorting by angle joins the stars round the press point without crossings.
39
+ const a = (((turn + i * GOLDEN_ANGLE) % 360) * Math.PI) / 180;
40
+ const d = 28 + rnd() * 26;
41
+ return { a, x: r2(Math.cos(a) * d), y: r2(Math.sin(a) * d * 0.72) };
42
+ }).sort((p, q) => p.a - q.a);
43
+ const id = count.current;
44
+ setBursts((b) => [...b.slice(-2), { id, x: r2(x), y: r2(y), pts }]);
45
+ after(() => setBursts((b) => b.filter((k) => k.id !== id)), 1100);
46
+ }
47
+ return (_jsxs("button", { ...rest, ref: ref, type: type, onClick: handleClick, "data-finish": finish, className: cx('ns-fx-cbutton', `ns-fx-cbutton--${variant}`, `ns-fx-size-${size}`, shape === 'rounded' && 'ns-fx-cbutton--rounded', className), children: [_jsx("span", { className: "ns-fx-cbutton__label", children: children }), bursts.map((b) => (_jsx("span", { className: "ns-fx-burst", "aria-hidden": "true", style: { '--ns-fx-x': `${b.x}px`, '--ns-fx-y': `${b.y}px` }, children: b.pts.map((p, i) => {
48
+ const q = b.pts[i + 1];
49
+ return (_jsxs("span", { children: [_jsx("i", { className: "ns-fx-burst__pt", style: { '--ns-fx-px': `${p.x}px`, '--ns-fx-py': `${p.y}px`, '--ns-fx-i': i } }), q ? (_jsx("i", { className: "ns-fx-burst__ln", style: {
50
+ '--ns-fx-px': `${p.x}px`,
51
+ '--ns-fx-py': `${p.y}px`,
52
+ '--ns-fx-len': `${r2(Math.hypot(q.x - p.x, q.y - p.y))}px`,
53
+ '--ns-fx-ang': `${r2(Math.atan2(q.y - p.y, q.x - p.x))}rad`,
54
+ '--ns-fx-i': i,
55
+ } })) : null] }, i));
56
+ }) }, b.id)))] }));
57
+ }
58
+ /** A keycap with physical depth: it sits on a ledge and sinks when pressed. */
59
+ export function KbdKeycap({ pressed, listen, className, children, ...rest }) {
60
+ const [held, setHeld] = useState(false);
61
+ useEffect(() => {
62
+ if (!listen)
63
+ return;
64
+ const key = listen.toLowerCase();
65
+ const down = (e) => e.key.toLowerCase() === key && setHeld(true);
66
+ const up = (e) => e.key.toLowerCase() === key && setHeld(false);
67
+ const blur = () => setHeld(false);
68
+ window.addEventListener('keydown', down);
69
+ window.addEventListener('keyup', up);
70
+ window.addEventListener('blur', blur);
71
+ return () => {
72
+ window.removeEventListener('keydown', down);
73
+ window.removeEventListener('keyup', up);
74
+ window.removeEventListener('blur', blur);
75
+ };
76
+ }, [listen]);
77
+ const on = pressed ?? held;
78
+ return (_jsx("kbd", { ...rest, className: cx('ns-fx-keycap', className), "data-pressed": on || undefined, children: _jsx("span", { className: "ns-fx-keycap__top", children: children }) }));
79
+ }
80
+ //# sourceMappingURL=actions.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"actions.js","sourceRoot":"","sources":["../../src/effects/actions.tsx"],"names":[],"mappings":"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"}
@@ -0,0 +1,84 @@
1
+ export interface CompassSwitchProps extends Omit<React.ButtonHTMLAttributes<HTMLButtonElement>, 'onChange' | 'value' | 'defaultValue'> {
2
+ checked?: boolean;
3
+ defaultChecked?: boolean;
4
+ onCheckedChange?: (checked: boolean) => void;
5
+ ref?: React.Ref<HTMLButtonElement>;
6
+ }
7
+ /**
8
+ * A switch whose thumb is a compass. Off, the needle rests at west; on, the
9
+ * thumb travels across and the needle swings to north with a small overshoot,
10
+ * the way a damped needle settles. The state also reads from the needle's
11
+ * direction and the track fill, not colour alone.
12
+ */
13
+ export declare function CompassSwitch({ checked, defaultChecked, onCheckedChange, className, children, onClick, ...rest }: CompassSwitchProps): import("react/jsx-runtime").JSX.Element;
14
+ export interface SextantSliderProps extends Omit<React.InputHTMLAttributes<HTMLInputElement>, 'value' | 'defaultValue' | 'type' | 'min' | 'max' | 'step' | 'onChange'> {
15
+ label: React.ReactNode;
16
+ value?: number;
17
+ defaultValue?: number;
18
+ onValueChange?: (value: number) => void;
19
+ min?: number;
20
+ max?: number;
21
+ step?: number;
22
+ /** Values the thumb catches on while dragged (keyboard steps pass straight through). */
23
+ detents?: number[];
24
+ /** Catch distance for detents, in value units. Default 2 % of the range. */
25
+ detentRange?: number;
26
+ /** Formats the readout and `aria-valuetext`. */
27
+ format?: (value: number) => string;
28
+ ref?: React.Ref<HTMLInputElement>;
29
+ }
30
+ /**
31
+ * A slider read like a sextant's vernier: a graduated scale whose ticks rise
32
+ * as the index passes over them, a Plex Mono readout riding on the index and
33
+ * optional detents marked with a star that the thumb catches on while
34
+ * dragged. Built on a native range input, so keyboard, touch and assistive
35
+ * technology work unchanged.
36
+ */
37
+ export declare function SextantSlider({ label, value, defaultValue, onValueChange, min, max, step, detents, detentRange, format, className, id, disabled, ref, ...rest }: SextantSliderProps): import("react/jsx-runtime").JSX.Element;
38
+ export interface ConstellationCheckboxProps extends Omit<React.InputHTMLAttributes<HTMLInputElement>, 'type' | 'checked' | 'defaultChecked'> {
39
+ checked?: boolean;
40
+ defaultChecked?: boolean;
41
+ onCheckedChange?: (checked: boolean) => void;
42
+ /** Shows the mixed state (a single star-to-star line). */
43
+ indeterminate?: boolean;
44
+ ref?: React.Ref<HTMLInputElement>;
45
+ }
46
+ /**
47
+ * A checkbox whose tick is drawn as a constellation: three stars appear in
48
+ * turn and lines join them star to star. A native input underneath keeps
49
+ * Space, labels, forms and the mixed state working.
50
+ */
51
+ export declare function ConstellationCheckbox({ checked, defaultChecked, onCheckedChange, indeterminate, className, children, onChange, ref, ...rest }: ConstellationCheckboxProps): import("react/jsx-runtime").JSX.Element;
52
+ export interface RadioOrbitGroupProps extends Omit<React.FieldsetHTMLAttributes<HTMLFieldSetElement>, 'onChange' | 'defaultValue'> {
53
+ legend: React.ReactNode;
54
+ value?: string;
55
+ defaultValue?: string;
56
+ onValueChange?: (value: string) => void;
57
+ name?: string;
58
+ orientation?: 'vertical' | 'horizontal';
59
+ ref?: React.Ref<HTMLFieldSetElement>;
60
+ }
61
+ /** A radio group whose options are planets: the chosen one gains a body and a moon that makes one orbit and settles at north. */
62
+ export declare function RadioOrbitGroup({ legend, value, defaultValue, onValueChange, name, orientation, disabled, className, children, ...rest }: RadioOrbitGroupProps): import("react/jsx-runtime").JSX.Element;
63
+ export interface RadioOrbitProps extends Omit<React.InputHTMLAttributes<HTMLInputElement>, 'type' | 'name' | 'value' | 'checked'> {
64
+ value: string;
65
+ /** Secondary line under the label. */
66
+ description?: React.ReactNode;
67
+ ref?: React.Ref<HTMLInputElement>;
68
+ }
69
+ export declare function RadioOrbit({ value, description, className, children, disabled, onChange, ...rest }: RadioOrbitProps): import("react/jsx-runtime").JSX.Element;
70
+ export interface GraticuleInputProps extends Omit<React.InputHTMLAttributes<HTMLInputElement>, 'size'> {
71
+ label: React.ReactNode;
72
+ /** Help text under the field. */
73
+ hint?: React.ReactNode;
74
+ /** Message shown, and announced, when the value is invalid. The rule turns dashed (no colour change alone). */
75
+ error?: React.ReactNode;
76
+ ref?: React.Ref<HTMLInputElement>;
77
+ }
78
+ /**
79
+ * A text field that, on focus, draws a fine graduated rule beneath itself
80
+ * from the left, like the scale engraved under a sight. Invalid state is a
81
+ * dashed rule plus the message.
82
+ */
83
+ export declare function GraticuleInput({ label, hint, error, id, className, ref, ...rest }: GraticuleInputProps): import("react/jsx-runtime").JSX.Element;
84
+ //# sourceMappingURL=controls.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"controls.d.ts","sourceRoot":"","sources":["../../src/effects/controls.tsx"],"names":[],"mappings":"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"}
@@ -0,0 +1,121 @@
1
+ 'use client';
2
+ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
3
+ import { createContext, useContext, useEffect, useId, useRef } from 'react';
4
+ import { cx, mergeRefs, useControllable } from './hooks.js';
5
+ import { clamp, r2, starPath } from './math.js';
6
+ const ROSE_TICKS = Array.from({ length: 8 }, (_, i) => i * 45);
7
+ /**
8
+ * A switch whose thumb is a compass. Off, the needle rests at west; on, the
9
+ * thumb travels across and the needle swings to north with a small overshoot,
10
+ * the way a damped needle settles. The state also reads from the needle's
11
+ * direction and the track fill, not colour alone.
12
+ */
13
+ export function CompassSwitch({ checked, defaultChecked = false, onCheckedChange, className, children, onClick, ...rest }) {
14
+ const [on, setOn] = useControllable(checked, defaultChecked, onCheckedChange);
15
+ return (_jsxs("button", { type: "button", role: "switch", "aria-checked": on, ...rest, onClick: (e) => {
16
+ onClick?.(e);
17
+ if (!e.defaultPrevented)
18
+ setOn(!on);
19
+ }, className: cx('ns-fx-compass', className), "data-state": on ? 'on' : 'off', children: [_jsx("span", { className: "ns-fx-compass__track", "aria-hidden": "true", children: _jsx("span", { className: "ns-fx-compass__thumb", children: _jsxs("svg", { viewBox: "0 0 20 20", focusable: "false", children: [ROSE_TICKS.map((deg) => (_jsx("line", { className: cx('ns-fx-compass__tick', deg % 90 === 0 && 'ns-fx-compass__tick--card'), x1: "10", y1: "1.6", x2: "10", y2: deg % 90 === 0 ? 3.6 : 2.8, transform: `rotate(${deg} 10 10)` }, deg))), _jsxs("g", { className: "ns-fx-compass__needle", children: [_jsx("path", { className: "ns-fx-compass__north", d: "M10 3.6 11.6 10H8.4Z" }), _jsx("path", { className: "ns-fx-compass__south", d: "M10 16.4 8.4 10H11.6Z" })] }), _jsx("circle", { cx: "10", cy: "10", r: "1", className: "ns-fx-compass__hub" })] }) }) }), children ? _jsx("span", { className: "ns-fx-compass__label", children: children }) : null] }));
20
+ }
21
+ /**
22
+ * A slider read like a sextant's vernier: a graduated scale whose ticks rise
23
+ * as the index passes over them, a Plex Mono readout riding on the index and
24
+ * optional detents marked with a star that the thumb catches on while
25
+ * dragged. Built on a native range input, so keyboard, touch and assistive
26
+ * technology work unchanged.
27
+ */
28
+ export function SextantSlider({ label, value, defaultValue, onValueChange, min = 0, max = 100, step = 1, detents = [], detentRange, format = (v) => String(v), className, id, disabled, ref, ...rest }) {
29
+ const auto = useId();
30
+ const inputId = id ?? `ns-fx-slider-${auto}`;
31
+ const [v, setV] = useControllable(value, defaultValue ?? min, onValueChange);
32
+ const dragging = useRef(false);
33
+ useEffect(() => {
34
+ const up = () => (dragging.current = false);
35
+ window.addEventListener('pointerup', up);
36
+ window.addEventListener('pointercancel', up);
37
+ return () => {
38
+ window.removeEventListener('pointerup', up);
39
+ window.removeEventListener('pointercancel', up);
40
+ };
41
+ }, []);
42
+ const span = max - min || 1;
43
+ const p = clamp((v - min) / span, 0, 1);
44
+ const catchAt = detentRange ?? span * 0.02;
45
+ const steps = Math.round(span / step);
46
+ const every = Math.max(1, Math.ceil(steps / 40));
47
+ const ticks = [];
48
+ for (let s = 0; s <= steps; s += every)
49
+ ticks.push(min + s * step);
50
+ if (ticks[ticks.length - 1] !== max)
51
+ ticks.push(max);
52
+ const onDetent = detents.includes(v);
53
+ const text = format(v);
54
+ return (_jsxs("div", { className: cx('ns-fx-sslider', disabled && 'ns-fx-is-disabled', className), style: { '--ns-fx-p': r2(p * 100) }, children: [_jsx("div", { className: "ns-fx-sslider__head", children: _jsx("label", { htmlFor: inputId, className: "ns-fx-sslider__label", children: label }) }), _jsxs("div", { className: "ns-fx-sslider__scale", children: [_jsx("input", { ...rest, ref: ref, id: inputId, type: "range", className: "ns-fx-sslider__input", min: min, max: max, step: step, value: v, disabled: disabled, "aria-valuetext": text, onPointerDown: (e) => {
55
+ dragging.current = true;
56
+ rest.onPointerDown?.(e);
57
+ }, onChange: (e) => {
58
+ let next = Number(e.currentTarget.value);
59
+ if (dragging.current) {
60
+ const near = detents.find((d) => Math.abs(d - next) <= catchAt);
61
+ if (near !== undefined)
62
+ next = near;
63
+ }
64
+ setV(next);
65
+ } }), _jsxs("span", { className: "ns-fx-sslider__ticks", "aria-hidden": "true", children: [ticks.map((t, i) => {
66
+ const at = (t - min) / span;
67
+ const dist = Math.abs(at - p) * ticks.length;
68
+ const lift = r2(1 + 1.4 * Math.max(0, 1 - dist / 3));
69
+ const major = i % 5 === 0;
70
+ return (_jsx("i", { className: cx('ns-fx-sslider__tick', major && 'ns-fx-sslider__tick--major', at <= p && 'ns-fx-sslider__tick--past'), style: { left: `${r2(at * 100)}%`, '--ns-fx-lift': lift } }, t));
71
+ }), detents.map((d) => (_jsx("svg", { className: "ns-fx-sslider__detent", viewBox: "0 0 8 8", style: { left: `${r2(((d - min) / span) * 100)}%` }, "data-on": d === v || undefined, children: _jsx("path", { d: starPath(4, 4, 3.6, 0.8) }) }, `d${d}`)))] }), _jsx("span", { className: "ns-fx-sslider__rail", "aria-hidden": "true", children: _jsxs("span", { className: "ns-fx-sslider__index", children: [_jsx("span", { className: cx('ns-fx-sslider__thumb', onDetent && 'ns-fx-sslider__thumb--detent') }, onDetent ? `d${v}` : 'free'), _jsx("output", { htmlFor: inputId, className: "ns-fx-sslider__readout", children: text })] }) })] })] }));
72
+ }
73
+ /**
74
+ * A checkbox whose tick is drawn as a constellation: three stars appear in
75
+ * turn and lines join them star to star. A native input underneath keeps
76
+ * Space, labels, forms and the mixed state working.
77
+ */
78
+ export function ConstellationCheckbox({ checked, defaultChecked = false, onCheckedChange, indeterminate = false, className, children, onChange, ref, ...rest }) {
79
+ const [on, setOn] = useControllable(checked, defaultChecked, onCheckedChange);
80
+ const inner = useRef(null);
81
+ useEffect(() => {
82
+ if (inner.current)
83
+ inner.current.indeterminate = indeterminate;
84
+ }, [indeterminate]);
85
+ return (_jsxs("label", { className: cx('ns-fx-ccheck', rest.disabled && 'ns-fx-is-disabled', className), "data-state": indeterminate ? 'mixed' : on ? 'on' : 'off', children: [_jsx("input", { ...rest, ref: mergeRefs(ref, inner), type: "checkbox", className: "ns-fx-ccheck__input", checked: on, onChange: (e) => {
86
+ onChange?.(e);
87
+ setOn(e.currentTarget.checked);
88
+ } }), _jsx("span", { className: "ns-fx-ccheck__box", "aria-hidden": "true", children: _jsx("svg", { viewBox: "0 0 16 16", focusable: "false", children: indeterminate ? (_jsxs("g", { className: "ns-fx-ccheck__mixed", children: [_jsx("line", { className: "ns-fx-ccheck__ln ns-fx-ccheck__ln--a", x1: "4", y1: "8", x2: "12", y2: "8" }), _jsx("circle", { className: "ns-fx-ccheck__st", cx: "4", cy: "8", r: "1.35" }), _jsx("circle", { className: "ns-fx-ccheck__st ns-fx-ccheck__st--c", cx: "12", cy: "8", r: "1.35" })] })) : (_jsxs("g", { className: "ns-fx-ccheck__mark", children: [_jsx("line", { className: "ns-fx-ccheck__ln ns-fx-ccheck__ln--a", x1: "3.6", y1: "8.4", x2: "6.6", y2: "11.4" }), _jsx("line", { className: "ns-fx-ccheck__ln ns-fx-ccheck__ln--b", x1: "6.6", y1: "11.4", x2: "12.4", y2: "4.6" }), _jsx("circle", { className: "ns-fx-ccheck__st ns-fx-ccheck__st--a", cx: "3.6", cy: "8.4", r: "1.25" }), _jsx("circle", { className: "ns-fx-ccheck__st ns-fx-ccheck__st--b", cx: "6.6", cy: "11.4", r: "1.35" }), _jsx("path", { className: "ns-fx-ccheck__st ns-fx-ccheck__st--c", d: starPath(12.4, 4.6, 2.4, 0.6) })] })) }) }), children ? _jsx("span", { className: "ns-fx-ccheck__label", children: children }) : null] }));
89
+ }
90
+ const RadioOrbitContext = createContext(null);
91
+ /** A radio group whose options are planets: the chosen one gains a body and a moon that makes one orbit and settles at north. */
92
+ export function RadioOrbitGroup({ legend, value, defaultValue = '', onValueChange, name, orientation = 'vertical', disabled = false, className, children, ...rest }) {
93
+ const auto = useId();
94
+ const [v, setV] = useControllable(value, defaultValue, onValueChange);
95
+ return (_jsxs("fieldset", { ...rest, disabled: disabled, className: cx('ns-fx-rorbit', `ns-fx-rorbit--${orientation}`, className), children: [_jsx("legend", { className: "ns-fx-rorbit__legend", children: legend }), _jsx(RadioOrbitContext.Provider, { value: { name: name ?? `ns-fx-orbit-${auto}`, value: v, set: setV, disabled }, children: _jsx("div", { className: "ns-fx-rorbit__options", children: children }) })] }));
96
+ }
97
+ export function RadioOrbit({ value, description, className, children, disabled, onChange, ...rest }) {
98
+ const ctx = useContext(RadioOrbitContext);
99
+ if (!ctx)
100
+ throw new Error('RadioOrbit must be used inside RadioOrbitGroup');
101
+ const checked = ctx.value === value;
102
+ return (_jsxs("label", { className: cx('ns-fx-rorbit__option', (disabled || ctx.disabled) && 'ns-fx-is-disabled', className), "data-state": checked ? 'on' : 'off', children: [_jsx("input", { ...rest, type: "radio", className: "ns-fx-rorbit__input", name: ctx.name, value: value, checked: checked, disabled: disabled, onChange: (e) => {
103
+ onChange?.(e);
104
+ if (e.currentTarget.checked)
105
+ ctx.set(value);
106
+ } }), _jsx("span", { className: "ns-fx-rorbit__mark", "aria-hidden": "true", children: _jsxs("svg", { viewBox: "0 0 20 20", focusable: "false", children: [_jsx("circle", { className: "ns-fx-rorbit__ring", cx: "10", cy: "10", r: "7.5" }), _jsx("circle", { className: "ns-fx-rorbit__planet", cx: "10", cy: "10", r: "3.4" }), _jsx("g", { className: "ns-fx-rorbit__arm", children: _jsx("circle", { className: "ns-fx-rorbit__moon", cx: "10", cy: "2.5", r: "1.6" }) })] }) }), _jsxs("span", { className: "ns-fx-rorbit__text", children: [_jsx("span", { className: "ns-fx-rorbit__label", children: children }), description ? _jsx("span", { className: "ns-fx-rorbit__desc", children: description }) : null] })] }));
107
+ }
108
+ /**
109
+ * A text field that, on focus, draws a fine graduated rule beneath itself
110
+ * from the left, like the scale engraved under a sight. Invalid state is a
111
+ * dashed rule plus the message.
112
+ */
113
+ export function GraticuleInput({ label, hint, error, id, className, ref, ...rest }) {
114
+ const auto = useId();
115
+ const inputId = id ?? `ns-fx-input-${auto}`;
116
+ const hintId = hint ? `${inputId}-hint` : undefined;
117
+ const errId = error ? `${inputId}-error` : undefined;
118
+ const describedBy = [rest['aria-describedby'], hintId, errId].filter(Boolean).join(' ') || undefined;
119
+ return (_jsxs("div", { className: cx('ns-fx-ginput', error ? 'ns-fx-ginput--invalid' : null, rest.disabled && 'ns-fx-is-disabled', className), children: [_jsx("label", { htmlFor: inputId, className: "ns-fx-ginput__label", children: label }), _jsxs("span", { className: "ns-fx-ginput__field", children: [_jsx("input", { ...rest, ref: ref, id: inputId, className: "ns-fx-ginput__input", "aria-invalid": error ? true : rest['aria-invalid'], "aria-describedby": describedBy }), _jsx("span", { className: "ns-fx-ginput__rule", "aria-hidden": "true" })] }), hint ? _jsx("span", { id: hintId, className: "ns-fx-ginput__hint", children: hint }) : null, error ? _jsx("span", { id: errId, className: "ns-fx-ginput__error", children: error }) : null] }));
120
+ }
121
+ //# sourceMappingURL=controls.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"controls.js","sourceRoot":"","sources":["../../src/effects/controls.tsx"],"names":[],"mappings":"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"}