@northstar-js/react 0.0.0-stage → 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 (182) hide show
  1. package/LICENSE +21 -0
  2. package/dist/actions.d.ts +99 -0
  3. package/dist/actions.d.ts.map +1 -0
  4. package/dist/actions.js +61 -0
  5. package/dist/actions.js.map +1 -0
  6. package/dist/backdrops/StarBackdrop.d.ts +31 -0
  7. package/dist/backdrops/StarBackdrop.d.ts.map +1 -0
  8. package/dist/backdrops/StarBackdrop.js +84 -0
  9. package/dist/backdrops/StarBackdrop.js.map +1 -0
  10. package/dist/backdrops/index.d.ts +7 -0
  11. package/dist/backdrops/index.d.ts.map +1 -0
  12. package/dist/backdrops/index.js +8 -0
  13. package/dist/backdrops/index.js.map +1 -0
  14. package/dist/backdrops/math.d.ts +39 -0
  15. package/dist/backdrops/math.d.ts.map +1 -0
  16. package/dist/backdrops/math.js +44 -0
  17. package/dist/backdrops/math.js.map +1 -0
  18. package/dist/backdrops/scenes.d.ts +20 -0
  19. package/dist/backdrops/scenes.d.ts.map +1 -0
  20. package/dist/backdrops/scenes.js +417 -0
  21. package/dist/backdrops/scenes.js.map +1 -0
  22. package/dist/backdrops.css +141 -0
  23. package/dist/data.d.ts +91 -0
  24. package/dist/data.d.ts.map +1 -0
  25. package/dist/data.js +69 -0
  26. package/dist/data.js.map +1 -0
  27. package/dist/effects/actions.d.ts +48 -0
  28. package/dist/effects/actions.d.ts.map +1 -0
  29. package/dist/effects/actions.js +80 -0
  30. package/dist/effects/actions.js.map +1 -0
  31. package/dist/effects/controls.d.ts +84 -0
  32. package/dist/effects/controls.d.ts.map +1 -0
  33. package/dist/effects/controls.js +121 -0
  34. package/dist/effects/controls.js.map +1 -0
  35. package/dist/effects/display.d.ts +92 -0
  36. package/dist/effects/display.d.ts.map +1 -0
  37. package/dist/effects/display.js +138 -0
  38. package/dist/effects/display.js.map +1 -0
  39. package/dist/effects/hooks.d.ts +13 -0
  40. package/dist/effects/hooks.d.ts.map +1 -0
  41. package/dist/effects/hooks.js +68 -0
  42. package/dist/effects/hooks.js.map +1 -0
  43. package/dist/effects/index.d.ts +14 -0
  44. package/dist/effects/index.d.ts.map +1 -0
  45. package/dist/effects/index.js +12 -0
  46. package/dist/effects/index.js.map +1 -0
  47. package/dist/effects/loaders.d.ts +67 -0
  48. package/dist/effects/loaders.d.ts.map +1 -0
  49. package/dist/effects/loaders.js +73 -0
  50. package/dist/effects/loaders.js.map +1 -0
  51. package/dist/effects/math.d.ts +23 -0
  52. package/dist/effects/math.d.ts.map +1 -0
  53. package/dist/effects/math.js +56 -0
  54. package/dist/effects/math.js.map +1 -0
  55. package/dist/effects/navigation.d.ts +55 -0
  56. package/dist/effects/navigation.d.ts.map +1 -0
  57. package/dist/effects/navigation.js +103 -0
  58. package/dist/effects/navigation.js.map +1 -0
  59. package/dist/effects/overlays.d.ts +34 -0
  60. package/dist/effects/overlays.d.ts.map +1 -0
  61. package/dist/effects/overlays.js +56 -0
  62. package/dist/effects/overlays.js.map +1 -0
  63. package/dist/effects.css +1659 -0
  64. package/dist/feedback.d.ts +55 -0
  65. package/dist/feedback.d.ts.map +1 -0
  66. package/dist/feedback.js +60 -0
  67. package/dist/feedback.js.map +1 -0
  68. package/dist/flow.d.ts +70 -0
  69. package/dist/flow.d.ts.map +1 -0
  70. package/dist/flow.js +118 -0
  71. package/dist/flow.js.map +1 -0
  72. package/dist/forms.d.ts +130 -0
  73. package/dist/forms.d.ts.map +1 -0
  74. package/dist/forms.js +241 -0
  75. package/dist/forms.js.map +1 -0
  76. package/dist/glass.d.ts +74 -0
  77. package/dist/glass.d.ts.map +1 -0
  78. package/dist/glass.js +139 -0
  79. package/dist/glass.js.map +1 -0
  80. package/dist/illustrations/data.d.ts +103 -0
  81. package/dist/illustrations/data.d.ts.map +1 -0
  82. package/dist/illustrations/data.js +3 -0
  83. package/dist/illustrations/data.js.map +1 -0
  84. package/dist/illustrations/index.d.ts +110 -0
  85. package/dist/illustrations/index.d.ts.map +1 -0
  86. package/dist/illustrations/index.js +54 -0
  87. package/dist/illustrations/index.js.map +1 -0
  88. package/dist/illustrations/types.d.ts +30 -0
  89. package/dist/illustrations/types.d.ts.map +1 -0
  90. package/dist/illustrations/types.js +2 -0
  91. package/dist/illustrations/types.js.map +1 -0
  92. package/dist/index.d.ts +27 -0
  93. package/dist/index.d.ts.map +1 -0
  94. package/dist/index.js +13 -0
  95. package/dist/index.js.map +1 -0
  96. package/dist/internal/expand.d.ts +17 -0
  97. package/dist/internal/expand.d.ts.map +1 -0
  98. package/dist/internal/expand.js +23 -0
  99. package/dist/internal/expand.js.map +1 -0
  100. package/dist/internal/icons.d.ts +9 -0
  101. package/dist/internal/icons.d.ts.map +1 -0
  102. package/dist/internal/icons.js +12 -0
  103. package/dist/internal/icons.js.map +1 -0
  104. package/dist/internal/interaction.d.ts +21 -0
  105. package/dist/internal/interaction.d.ts.map +1 -0
  106. package/dist/internal/interaction.js +129 -0
  107. package/dist/internal/interaction.js.map +1 -0
  108. package/dist/internal/layers.d.ts +12 -0
  109. package/dist/internal/layers.d.ts.map +1 -0
  110. package/dist/internal/layers.js +108 -0
  111. package/dist/internal/layers.js.map +1 -0
  112. package/dist/internal/util.d.ts +9 -0
  113. package/dist/internal/util.d.ts.map +1 -0
  114. package/dist/internal/util.js +33 -0
  115. package/dist/internal/util.js.map +1 -0
  116. package/dist/layout.d.ts +34 -0
  117. package/dist/layout.d.ts.map +1 -0
  118. package/dist/layout.js +27 -0
  119. package/dist/layout.js.map +1 -0
  120. package/dist/motion.d.ts +36 -0
  121. package/dist/motion.d.ts.map +1 -0
  122. package/dist/motion.js +80 -0
  123. package/dist/motion.js.map +1 -0
  124. package/dist/navigation.d.ts +100 -0
  125. package/dist/navigation.d.ts.map +1 -0
  126. package/dist/navigation.js +154 -0
  127. package/dist/navigation.js.map +1 -0
  128. package/dist/northstar/BriefForm.d.ts +23 -0
  129. package/dist/northstar/BriefForm.d.ts.map +1 -0
  130. package/dist/northstar/BriefForm.js +40 -0
  131. package/dist/northstar/BriefForm.js.map +1 -0
  132. package/dist/northstar/ExportMenu.d.ts +16 -0
  133. package/dist/northstar/ExportMenu.d.ts.map +1 -0
  134. package/dist/northstar/ExportMenu.js +11 -0
  135. package/dist/northstar/ExportMenu.js.map +1 -0
  136. package/dist/northstar/PopulationPanel.d.ts +30 -0
  137. package/dist/northstar/PopulationPanel.d.ts.map +1 -0
  138. package/dist/northstar/PopulationPanel.js +18 -0
  139. package/dist/northstar/PopulationPanel.js.map +1 -0
  140. package/dist/northstar/ResearchBuilder.d.ts +26 -0
  141. package/dist/northstar/ResearchBuilder.d.ts.map +1 -0
  142. package/dist/northstar/ResearchBuilder.js +81 -0
  143. package/dist/northstar/ResearchBuilder.js.map +1 -0
  144. package/dist/northstar/ResponsesView.d.ts +20 -0
  145. package/dist/northstar/ResponsesView.d.ts.map +1 -0
  146. package/dist/northstar/ResponsesView.js +42 -0
  147. package/dist/northstar/ResponsesView.js.map +1 -0
  148. package/dist/northstar/Run.d.ts +37 -0
  149. package/dist/northstar/Run.d.ts.map +1 -0
  150. package/dist/northstar/Run.js +32 -0
  151. package/dist/northstar/Run.js.map +1 -0
  152. package/dist/northstar/StudyShell.d.ts +50 -0
  153. package/dist/northstar/StudyShell.d.ts.map +1 -0
  154. package/dist/northstar/StudyShell.js +18 -0
  155. package/dist/northstar/StudyShell.js.map +1 -0
  156. package/dist/northstar/StudyStatus.d.ts +17 -0
  157. package/dist/northstar/StudyStatus.d.ts.map +1 -0
  158. package/dist/northstar/StudyStatus.js +26 -0
  159. package/dist/northstar/StudyStatus.js.map +1 -0
  160. package/dist/northstar/index.d.ts +10 -0
  161. package/dist/northstar/index.d.ts.map +1 -0
  162. package/dist/northstar/index.js +10 -0
  163. package/dist/northstar/index.js.map +1 -0
  164. package/dist/northstar/messages.d.ts +84 -0
  165. package/dist/northstar/messages.d.ts.map +1 -0
  166. package/dist/northstar/messages.js +107 -0
  167. package/dist/northstar/messages.js.map +1 -0
  168. package/dist/overlays.d.ts +136 -0
  169. package/dist/overlays.d.ts.map +1 -0
  170. package/dist/overlays.js +447 -0
  171. package/dist/overlays.js.map +1 -0
  172. package/dist/provider.d.ts +82 -0
  173. package/dist/provider.d.ts.map +1 -0
  174. package/dist/provider.js +128 -0
  175. package/dist/provider.js.map +1 -0
  176. package/dist/styles.css +2033 -0
  177. package/dist/surface.d.ts +58 -0
  178. package/dist/surface.d.ts.map +1 -0
  179. package/dist/surface.js +39 -0
  180. package/dist/surface.js.map +1 -0
  181. package/package.json +81 -3
  182. package/README.md +0 -3
package/dist/data.d.ts ADDED
@@ -0,0 +1,91 @@
1
+ import { type Tone } from './internal/util.js';
2
+ import { type Expand } from './internal/expand.js';
3
+ export interface TableProps extends React.TableHTMLAttributes<HTMLTableElement> {
4
+ density?: 'compact' | 'default' | 'comfortable';
5
+ /** Sticky header row. */
6
+ stickyHeader?: boolean;
7
+ caption?: React.ReactNode;
8
+ /** Body rows lift on hover and on keyboard focus within, for tables whose rows open something. */
9
+ interactive?: boolean;
10
+ }
11
+ export declare function Table({ density, stickyHeader, caption, interactive, className, children, ...rest }: TableProps): import("react/jsx-runtime").JSX.Element;
12
+ export declare const TableHead: (p: React.HTMLAttributes<HTMLTableSectionElement>) => import("react/jsx-runtime").JSX.Element;
13
+ export declare const TableBody: (p: React.HTMLAttributes<HTMLTableSectionElement>) => import("react/jsx-runtime").JSX.Element;
14
+ export declare function TableRow({ selected, className, ...rest }: React.HTMLAttributes<HTMLTableRowElement> & {
15
+ selected?: boolean;
16
+ }): import("react/jsx-runtime").JSX.Element;
17
+ export type SortDirection = 'ascending' | 'descending' | 'none';
18
+ export interface TableHeaderCellProps extends React.ThHTMLAttributes<HTMLTableCellElement> {
19
+ numeric?: boolean;
20
+ /** Makes the header a sort button. */
21
+ sort?: SortDirection;
22
+ onSort?: () => void;
23
+ }
24
+ export declare function TableHeaderCell({ numeric, sort, onSort, className, children, scope, ...rest }: TableHeaderCellProps): import("react/jsx-runtime").JSX.Element;
25
+ export declare function TableCell({ numeric, className, ...rest }: React.TdHTMLAttributes<HTMLTableCellElement> & {
26
+ numeric?: boolean;
27
+ }): import("react/jsx-runtime").JSX.Element;
28
+ export interface ListProps extends React.HTMLAttributes<HTMLUListElement> {
29
+ divided?: boolean;
30
+ ordered?: boolean;
31
+ }
32
+ export declare function List({ divided, ordered, className, ...rest }: ListProps): import("react/jsx-runtime").JSX.Element;
33
+ export interface ListItemProps extends Omit<React.LiHTMLAttributes<HTMLLIElement>, 'title'> {
34
+ title?: React.ReactNode;
35
+ description?: React.ReactNode;
36
+ start?: React.ReactNode;
37
+ end?: React.ReactNode;
38
+ }
39
+ export declare function ListItem({ title, description, start, end, className, children, ...rest }: ListItemProps): import("react/jsx-runtime").JSX.Element;
40
+ export interface TagProps extends React.HTMLAttributes<HTMLSpanElement> {
41
+ tone?: Tone;
42
+ /** Shows a remove button with this accessible label. */
43
+ onRemove?: () => void;
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;
49
+ }
50
+ export declare function Tag({ tone, onRemove, removeLabel, icon, expand, className, children, ...rest }: TagProps): import("react/jsx-runtime").JSX.Element;
51
+ export interface BadgeProps extends React.HTMLAttributes<HTMLSpanElement> {
52
+ tone?: Tone;
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;
58
+ }
59
+ /** A short count or status word. */
60
+ export declare function Badge({ tone, variant, icon, expand, className, children, ...rest }: BadgeProps): import("react/jsx-runtime").JSX.Element;
61
+ export declare function initials(name: string): string;
62
+ export interface AvatarProps extends React.HTMLAttributes<HTMLSpanElement> {
63
+ /** A workspace person. Rendered as initials; stars are reserved for agents. */
64
+ name: string;
65
+ size?: 'sm' | 'md' | 'lg';
66
+ }
67
+ export declare function Avatar({ name, size, className, ...rest }: AvatarProps): import("react/jsx-runtime").JSX.Element;
68
+ export declare function Kbd({ className, ...rest }: React.HTMLAttributes<HTMLElement>): import("react/jsx-runtime").JSX.Element;
69
+ export interface EmptyStateProps extends Omit<React.HTMLAttributes<HTMLDivElement>, 'title'> {
70
+ title: React.ReactNode;
71
+ description?: React.ReactNode;
72
+ icon?: React.ReactNode;
73
+ action?: React.ReactNode;
74
+ }
75
+ export declare function EmptyState({ title, description, icon, action, className, ...rest }: EmptyStateProps): import("react/jsx-runtime").JSX.Element;
76
+ export interface SkeletonProps extends React.HTMLAttributes<HTMLSpanElement> {
77
+ width?: number | string;
78
+ height?: number | string;
79
+ shape?: 'line' | 'block' | 'circle';
80
+ }
81
+ /** Loading placeholder. Hidden from assistive tech; pair it with a busy region. */
82
+ export declare function Skeleton({ width, height, shape, className, style, ...rest }: SkeletonProps): import("react/jsx-runtime").JSX.Element;
83
+ export interface StaleProps extends React.HTMLAttributes<HTMLDivElement> {
84
+ /** Visible label. Default "Stale". */
85
+ label?: React.ReactNode;
86
+ /** Optional detail, e.g. when the data was last refreshed. */
87
+ detail?: React.ReactNode;
88
+ }
89
+ /** Marks out-of-date content with a label and a dashed edge — never opacity alone. */
90
+ export declare function Stale({ label, detail, className, children, ...rest }: StaleProps): import("react/jsx-runtime").JSX.Element;
91
+ //# sourceMappingURL=data.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"data.d.ts","sourceRoot":"","sources":["../src/data.tsx"],"names":[],"mappings":"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"}
package/dist/data.js ADDED
@@ -0,0 +1,69 @@
1
+ import { jsx as _jsx, jsxs as _jsxs, Fragment as _Fragment } from "react/jsx-runtime";
2
+ // Server-component safe: no state, no context.
3
+ import { cx } from './internal/util.js';
4
+ import { Close } from './internal/icons.js';
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] }) }));
8
+ }
9
+ export const TableHead = (p) => _jsx("thead", { ...p });
10
+ export const TableBody = (p) => _jsx("tbody", { ...p });
11
+ export function TableRow({ selected, className, ...rest }) {
12
+ return _jsx("tr", { "aria-selected": selected, ...rest, className: cx('ns-table__row', className) });
13
+ }
14
+ export function TableHeaderCell({ numeric, sort, onSort, className, children, scope = 'col', ...rest }) {
15
+ return (_jsx("th", { scope: scope, "aria-sort": sort, ...rest, className: cx('ns-table__th', numeric && 'ns-numeric', className), children: onSort ? (_jsxs("button", { type: "button", className: "ns-table__sort", onClick: onSort, children: [children, _jsx("span", { "aria-hidden": "true", className: "ns-table__sort-mark", children: sort === 'ascending' ? '↑' : sort === 'descending' ? '↓' : '↕' })] })) : (children) }));
16
+ }
17
+ export function TableCell({ numeric, className, ...rest }) {
18
+ return _jsx("td", { ...rest, className: cx('ns-table__td', numeric && 'ns-numeric', className) });
19
+ }
20
+ export function List({ divided = true, ordered = false, className, ...rest }) {
21
+ const Tag = ordered ? 'ol' : 'ul';
22
+ return _jsx(Tag, { ...rest, className: cx('ns-list', divided && 'ns-list--divided', className) });
23
+ }
24
+ export function ListItem({ title, description, start, end, className, children, ...rest }) {
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 })] }));
26
+ }
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, {}) }))] }));
36
+ }
37
+ /** A short count or status word. */
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 }));
41
+ }
42
+ /* ----------------------------------------------------------------- Avatar */
43
+ export function initials(name) {
44
+ const parts = name.trim().split(/[\s\-_.@]+/).filter(Boolean);
45
+ if (parts.length === 0)
46
+ return '?';
47
+ const first = parts[0] ?? '';
48
+ const last = parts.length > 1 ? (parts[parts.length - 1] ?? '') : '';
49
+ return ((first[0] ?? '') + (last[0] ?? first[1] ?? '')).toUpperCase();
50
+ }
51
+ export function Avatar({ name, size = 'md', className, ...rest }) {
52
+ return (_jsx("span", { role: "img", "aria-label": name, title: name, ...rest, className: cx('ns-avatar', `ns-avatar--${size}`, className), children: _jsx("span", { "aria-hidden": "true", children: initials(name) }) }));
53
+ }
54
+ /* -------------------------------------------------------------------- Kbd */
55
+ export function Kbd({ className, ...rest }) {
56
+ return _jsx("kbd", { ...rest, className: cx('ns-kbd', className) });
57
+ }
58
+ export function EmptyState({ title, description, icon, action, className, ...rest }) {
59
+ return (_jsxs("div", { ...rest, className: cx('ns-empty', className), children: [icon && (_jsx("div", { className: "ns-empty__icon", "aria-hidden": "true", children: icon })), _jsx("p", { className: "ns-empty__title", children: title }), description && _jsx("p", { className: "ns-empty__description", children: description }), action && _jsx("div", { className: "ns-empty__action", children: action })] }));
60
+ }
61
+ /** Loading placeholder. Hidden from assistive tech; pair it with a busy region. */
62
+ export function Skeleton({ width, height, shape = 'line', className, style, ...rest }) {
63
+ return _jsx("span", { "aria-hidden": "true", ...rest, className: cx('ns-skeleton', `ns-skeleton--${shape}`, className), style: { width, height, ...style } });
64
+ }
65
+ /** Marks out-of-date content with a label and a dashed edge — never opacity alone. */
66
+ export function Stale({ label = 'Stale', detail, className, children, ...rest }) {
67
+ return (_jsxs("div", { ...rest, className: cx('ns-stale', className), "data-stale": "", children: [_jsxs("span", { className: "ns-stale__label", children: [label, detail && _jsxs("span", { className: "ns-stale__detail", children: [" \u00B7 ", detail] })] }), children] }));
68
+ }
69
+ //# sourceMappingURL=data.js.map
@@ -0,0 +1 @@
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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"}