@xeonr/platform-ui 1.3.0 → 1.4.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 (87) hide show
  1. package/dist/index.d.ts +12 -0
  2. package/dist/index.d.ts.map +1 -1
  3. package/dist/index.js +22 -0
  4. package/dist/index.js.map +1 -1
  5. package/dist/kit/Anchored.d.ts +13 -2
  6. package/dist/kit/Anchored.d.ts.map +1 -1
  7. package/dist/kit/Anchored.js +47 -18
  8. package/dist/kit/Anchored.js.map +1 -1
  9. package/dist/kit/Badge.d.ts +1 -0
  10. package/dist/kit/Badge.d.ts.map +1 -1
  11. package/dist/kit/Badge.js +14 -0
  12. package/dist/kit/Badge.js.map +1 -1
  13. package/dist/kit/Blocks.d.ts.map +1 -1
  14. package/dist/kit/Blocks.js +4 -2
  15. package/dist/kit/Blocks.js.map +1 -1
  16. package/dist/kit/Button.d.ts +8 -2
  17. package/dist/kit/Button.d.ts.map +1 -1
  18. package/dist/kit/Button.js +17 -3
  19. package/dist/kit/Button.js.map +1 -1
  20. package/dist/kit/Chip.d.ts +6 -0
  21. package/dist/kit/Chip.d.ts.map +1 -1
  22. package/dist/kit/Chip.js +2 -1
  23. package/dist/kit/Chip.js.map +1 -1
  24. package/dist/kit/Color.d.ts +69 -0
  25. package/dist/kit/Color.d.ts.map +1 -0
  26. package/dist/kit/Color.js +150 -0
  27. package/dist/kit/Color.js.map +1 -0
  28. package/dist/kit/Combobox.d.ts +5 -1
  29. package/dist/kit/Combobox.d.ts.map +1 -1
  30. package/dist/kit/Combobox.js +39 -28
  31. package/dist/kit/Combobox.js.map +1 -1
  32. package/dist/kit/Controls.d.ts +184 -0
  33. package/dist/kit/Controls.d.ts.map +1 -0
  34. package/dist/kit/Controls.js +344 -0
  35. package/dist/kit/Controls.js.map +1 -0
  36. package/dist/kit/DatePicker.d.ts +125 -0
  37. package/dist/kit/DatePicker.d.ts.map +1 -0
  38. package/dist/kit/DatePicker.js +438 -0
  39. package/dist/kit/DatePicker.js.map +1 -0
  40. package/dist/kit/Dropzone.d.ts +41 -0
  41. package/dist/kit/Dropzone.d.ts.map +1 -0
  42. package/dist/kit/Dropzone.js +118 -0
  43. package/dist/kit/Dropzone.js.map +1 -0
  44. package/dist/kit/Form.d.ts +86 -13
  45. package/dist/kit/Form.d.ts.map +1 -1
  46. package/dist/kit/Form.js +124 -13
  47. package/dist/kit/Form.js.map +1 -1
  48. package/dist/kit/Icon.d.ts +4 -0
  49. package/dist/kit/Icon.d.ts.map +1 -1
  50. package/dist/kit/Icon.js +5 -1
  51. package/dist/kit/Icon.js.map +1 -1
  52. package/dist/kit/List.d.ts +55 -8
  53. package/dist/kit/List.d.ts.map +1 -1
  54. package/dist/kit/List.js +43 -6
  55. package/dist/kit/List.js.map +1 -1
  56. package/dist/kit/Menu.d.ts +71 -9
  57. package/dist/kit/Menu.d.ts.map +1 -1
  58. package/dist/kit/Menu.js +119 -21
  59. package/dist/kit/Menu.js.map +1 -1
  60. package/dist/kit/Modal.d.ts +37 -4
  61. package/dist/kit/Modal.d.ts.map +1 -1
  62. package/dist/kit/Modal.js +42 -14
  63. package/dist/kit/Modal.js.map +1 -1
  64. package/dist/kit/MultiCombobox.d.ts +48 -1
  65. package/dist/kit/MultiCombobox.d.ts.map +1 -1
  66. package/dist/kit/MultiCombobox.js +100 -27
  67. package/dist/kit/MultiCombobox.js.map +1 -1
  68. package/dist/kit/Picker.d.ts +6 -1
  69. package/dist/kit/Picker.d.ts.map +1 -1
  70. package/dist/kit/Picker.js +10 -5
  71. package/dist/kit/Picker.js.map +1 -1
  72. package/dist/kit/Popover.d.ts +13 -1
  73. package/dist/kit/Popover.d.ts.map +1 -1
  74. package/dist/kit/Popover.js +31 -9
  75. package/dist/kit/Popover.js.map +1 -1
  76. package/dist/kit/Skeleton.d.ts +44 -3
  77. package/dist/kit/Skeleton.d.ts.map +1 -1
  78. package/dist/kit/Skeleton.js +39 -1
  79. package/dist/kit/Skeleton.js.map +1 -1
  80. package/dist/kit/Stepper.d.ts +33 -0
  81. package/dist/kit/Stepper.d.ts.map +1 -0
  82. package/dist/kit/Stepper.js +97 -0
  83. package/dist/kit/Stepper.js.map +1 -0
  84. package/dist/kit/TabStrip.d.ts.map +1 -1
  85. package/dist/kit/TabStrip.js +7 -2
  86. package/dist/kit/TabStrip.js.map +1 -1
  87. package/package.json +1 -1
@@ -0,0 +1,184 @@
1
+ import { type ChangeEvent, type CSSProperties, type HTMLAttributes, type MouseEvent, type ReactNode } from "react";
2
+ import { type IconName } from "./Icon.tsx";
3
+ import { type SegmentedTone } from "./Form.tsx";
4
+ export interface InputGroupProps {
5
+ /** a leading glyph — a magnifier on a search box, a globe on a hostname */
6
+ icon?: IconName | (string & {}) | undefined;
7
+ /** fixed text before the value, inside the box (`https://`) */
8
+ prefix?: ReactNode | undefined;
9
+ /** fixed text after the value, inside the box (`.example.com`, `MB`, `%`) */
10
+ suffix?: ReactNode | undefined;
11
+ /** controls at the trailing edge — a clear button, a reveal toggle */
12
+ end?: ReactNode | undefined;
13
+ /** mono value and affixes, for hostnames, ids and paths */
14
+ mono?: boolean | undefined;
15
+ /** draw the group in error; inside a Field with `error` this is automatic */
16
+ invalid?: boolean | undefined;
17
+ /**
18
+ * The group is off: drawn dimmed, and the input inside is disabled too — a
19
+ * direct child element that does not set `disabled` itself gets
20
+ * `disabled` (1.4). An input nested deeper must be disabled by the caller.
21
+ */
22
+ disabled?: boolean | undefined;
23
+ /** the group's width in px (default: its container's) */
24
+ width?: number | undefined;
25
+ style?: CSSProperties | undefined;
26
+ className?: string | undefined;
27
+ /** the input: a kit `Input`, `MonoInput`, or a plain <input> */
28
+ children: ReactNode;
29
+ }
30
+ /**
31
+ * InputGroup: an input with a glyph, fixed text or controls inside its box.
32
+ * The affixes are part of the field — a subdomain box reads `luke` `.upl.im`
33
+ * as one value — and a click anywhere on the box focuses the input. Unlike
34
+ * SearchBox it holds no state of its own, so it does not debounce: the input
35
+ * inside is the caller's, controlled as they like.
36
+ */
37
+ export declare function InputGroup({ icon, prefix, suffix, end, mono, invalid, disabled, width, style, className, children }: InputGroupProps): import("react").JSX.Element;
38
+ export interface NumberInputProps {
39
+ /** the number, or null for an empty box */
40
+ value: number | null;
41
+ /** a parsed number while typing (unclamped), null for an empty box; clamped to min/max on blur */
42
+ onChange: (value: number | null) => void;
43
+ min?: number | undefined;
44
+ max?: number | undefined;
45
+ /** what ArrowUp/ArrowDown and the stepper add (default 1; Shift ×10) */
46
+ step?: number | undefined;
47
+ /** the unit after the value, inside the box (`MB`, `days`, `%`) */
48
+ unit?: ReactNode | undefined;
49
+ /** fixed text before the value (`$`) */
50
+ prefix?: ReactNode | undefined;
51
+ /** − / + buttons at the trailing edge */
52
+ stepper?: boolean | undefined;
53
+ placeholder?: string | undefined;
54
+ disabled?: boolean | undefined;
55
+ /** width of the whole control in px (default: its container's) */
56
+ width?: number | undefined;
57
+ /** accessible name, when no Field label names it */
58
+ label?: string | undefined;
59
+ id?: string | undefined;
60
+ name?: string | undefined;
61
+ autoFocus?: boolean | undefined;
62
+ /** accept a decimal point (default: only when `step` is fractional) */
63
+ decimal?: boolean | undefined;
64
+ }
65
+ /**
66
+ * NumberInput: a number with its unit, its bounds and a keyboard step. Typed
67
+ * text is held as typed ("1." stays "1.") and handed up parsed; the bounds are
68
+ * applied when the field is left, not while a person is half-way through
69
+ * typing "150" into a box whose minimum is 100. A text input with
70
+ * `role="spinbutton"`, not `type="number"`, so a scroll wheel passing over it
71
+ * never changes the value and "e" is not a digit.
72
+ */
73
+ export declare function NumberInput({ value, onChange, min, max, step, unit, prefix, stepper, placeholder, disabled, width, label, id, name, autoFocus, decimal, }: NumberInputProps): import("react").JSX.Element;
74
+ export interface SliderProps {
75
+ /** controlled value; omit it (and pass `defaultValue`) to let the slider hold it */
76
+ value?: number | undefined;
77
+ defaultValue?: number | undefined;
78
+ /** every movement */
79
+ onChange?: ((value: number) => void) | undefined;
80
+ /** once the pointer or key is released — for a value that costs a request to apply */
81
+ onCommit?: ((value: number) => void) | undefined;
82
+ min?: number | undefined;
83
+ max?: number | undefined;
84
+ step?: number | undefined;
85
+ /** accessible name */
86
+ label: string;
87
+ disabled?: boolean | undefined;
88
+ /** show the value beside the track (default true); a function formats it (`(n) => \`${n}px\``) */
89
+ showValue?: boolean | ((value: number) => ReactNode) | undefined;
90
+ /** width of the whole control in px (default: its container's) */
91
+ width?: number | undefined;
92
+ id?: string | undefined;
93
+ }
94
+ /**
95
+ * Slider: a number picked by feel rather than typed — a stroke width, a blur
96
+ * strength, an opacity. A native range input drawn on the tokens, so the
97
+ * keyboard (arrows, Page Up/Down, Home/End) and the slider role come free.
98
+ * Its value is shown beside it, because a slider whose number you cannot see
99
+ * is a slider people overshoot. Reach for NumberInput when the exact value
100
+ * matters more than the gesture.
101
+ */
102
+ export declare function Slider({ value, defaultValue, onChange, onCommit, min, max, step, label, disabled, showValue, width, id }: SliderProps): import("react").JSX.Element;
103
+ export interface CheckboxProps {
104
+ checked: boolean;
105
+ /**
106
+ * Optional (1.4): a box whose row handles the click itself (`onClick`, or a
107
+ * click on the row) needs none; it stays controlled by `checked` either way.
108
+ */
109
+ onChange?: ((checked: boolean, event: ChangeEvent<HTMLInputElement>) => void) | undefined;
110
+ /** some but not all of what it stands for — a select-all over a partial selection */
111
+ indeterminate?: boolean | undefined;
112
+ disabled?: boolean | undefined;
113
+ /** accessible name — the row it selects ("Select report.pdf") */
114
+ label?: string | undefined;
115
+ /** px (default 16) */
116
+ size?: number | undefined;
117
+ id?: string | undefined;
118
+ name?: string | undefined;
119
+ value?: string | undefined;
120
+ title?: string | undefined;
121
+ /** the click, before onChange — stop it here when the row it sits on is itself a link or a button */
122
+ onClick?: ((e: MouseEvent<HTMLInputElement>) => void) | undefined;
123
+ /** on the box (the outer element), for placing it — absolutely over a card's corner, say */
124
+ className?: string | undefined;
125
+ style?: CSSProperties | undefined;
126
+ }
127
+ /**
128
+ * Checkbox: the box alone, with no label around it — for selecting a table
129
+ * row, a list item or a card, where the row is the label. Toggle and CheckRow
130
+ * wrap their input in a <label>, which inside a row that is itself a link
131
+ * changes what a click activates; this is a real checkbox input the row can
132
+ * stop. `indeterminate` is the select-all over a partial selection.
133
+ */
134
+ export declare function Checkbox({ checked, onChange, indeterminate, disabled, label, size, id, name, value, title, onClick, className, style }: CheckboxProps): import("react").JSX.Element;
135
+ /**
136
+ * TriToggle: On / Off / Inherit — a setting that is either set here or left
137
+ * to whatever the level above says (a bucket inheriting its account's
138
+ * default, a folder its bucket's). `undefined` is Inherit. The chosen segment
139
+ * wears the answer's colour — on is ok, off is crit, inherit neutral — so a
140
+ * column of them reads at a glance. `inherit={false}` drops the third option
141
+ * where there is nothing to inherit from; there, `undefined` means not yet
142
+ * chosen and neither On nor Off is shown selected — showing Off would read as
143
+ * a decision nobody made. The first segment keeps the tab stop.
144
+ */
145
+ export declare function TriToggle({ value, onChange, inherit, labels, inheritHint, tones, disabled, label, size }: {
146
+ value: boolean | undefined;
147
+ onChange: (value: boolean | undefined) => void;
148
+ /** offer Inherit (default true); without it, `undefined` shows nothing selected */
149
+ inherit?: boolean | undefined;
150
+ /** the three captions (default On / Off / Inherit) */
151
+ labels?: {
152
+ on?: ReactNode;
153
+ off?: ReactNode;
154
+ inherit?: ReactNode;
155
+ } | undefined;
156
+ /** what Inherit currently resolves to, as its tooltip ("Inherits: on, from the account") */
157
+ inheritHint?: ReactNode | undefined;
158
+ /** the colour each answer wears when chosen (default on: ok, off: crit, inherit: mut) */
159
+ tones?: {
160
+ on?: SegmentedTone;
161
+ off?: SegmentedTone;
162
+ inherit?: SegmentedTone;
163
+ } | undefined;
164
+ disabled?: boolean | undefined;
165
+ /** accessible name of the group */
166
+ label?: string | undefined;
167
+ size?: "sm" | "md" | undefined;
168
+ }): import("react").JSX.Element;
169
+ /**
170
+ * SettingRow: one setting on one line — its name and what it means on the
171
+ * left, its control on the right. The shape of a settings card that is a list
172
+ * of switches (TriToggle, Toggle, Segmented, a NumberInput) rather than a
173
+ * form of fields; stacks under 640px.
174
+ */
175
+ export declare function SettingRow({ label, hint, dim, children, ...rest }: {
176
+ label: ReactNode;
177
+ /** what the setting does, or why it has no effect right now */
178
+ hint?: ReactNode | undefined;
179
+ /** the setting has no effect right now (its name is muted) */
180
+ dim?: boolean | undefined;
181
+ /** the control */
182
+ children?: ReactNode | undefined;
183
+ } & Omit<HTMLAttributes<HTMLDivElement>, "children">): import("react").JSX.Element;
184
+ //# sourceMappingURL=Controls.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Controls.d.ts","sourceRoot":"","sources":["../../src/kit/Controls.tsx"],"names":[],"mappings":"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"}
@@ -0,0 +1,344 @@
1
+ import { jsx as _jsx, jsxs as _jsxs, Fragment as _Fragment } from "react/jsx-runtime";
2
+ import { Children, Fragment, cloneElement, isValidElement, useEffect, useRef, useState } from "react";
3
+ import styled, { css } from "styled-components";
4
+ import { v } from "../theme/tokens.js";
5
+ import { Icon } from "./Icon.js";
6
+ import { Segmented, useField, useFieldAttrs } from "./Form.js";
7
+ // The form controls the upl.im dashboard had each drawn for itself: a field
8
+ // with a glyph or a unit inside its box, a number field, a slider, a bare
9
+ // checkbox for selecting rows, the on/off/inherit switch, and the
10
+ // name-left-control-right settings row. Added for the upl.im dashboard (1.4).
11
+ /* ------------------------------------------------------------------ InputGroup */
12
+ const GroupBox = styled.div `
13
+ display: flex;
14
+ align-items: center;
15
+ gap: 8px;
16
+ width: 100%;
17
+ min-width: 0;
18
+ height: 32px;
19
+ padding: 0 10px;
20
+ border-radius: ${v.rCtl};
21
+ background: ${v.field};
22
+ border: 1px solid ${(p) => (p.$invalid ? v.danger : v.fieldLine)};
23
+ color: ${v.text};
24
+ font-size: 12.5px;
25
+ cursor: text;
26
+ transition: border-color 0.14s ease, box-shadow 0.14s ease;
27
+ ${(p) => p.$disabled && css `opacity: 0.55; cursor: not-allowed;`}
28
+ &:focus-within {
29
+ border-color: ${(p) => (p.$invalid ? v.danger : v.brand55)};
30
+ box-shadow: 0 0 0 3px ${(p) => (p.$invalid ? v.dangerBg : v.brand08)};
31
+ }
32
+ &:has(input[aria-invalid="true"]) { border-color: ${v.danger}; }
33
+
34
+ /* the input inside gives up its own box: the group is the box */
35
+ > input, > .x-group-input {
36
+ flex: 1 1 auto;
37
+ min-width: 0;
38
+ width: auto;
39
+ height: 100%;
40
+ padding: 0;
41
+ border: none;
42
+ border-radius: 0;
43
+ background: transparent;
44
+ box-shadow: none;
45
+ ${(p) => p.$mono && css `font-family: ${v.mono}; font-size: 11.5px;`}
46
+ &:focus, &:focus-visible { outline: none; box-shadow: none; border: none; }
47
+ &:disabled { opacity: 1; cursor: not-allowed; }
48
+ }
49
+ > .glyph { flex: none; color: ${v.faint}; font-size: 12px; display: inline-flex; }
50
+ > .affix {
51
+ flex: none;
52
+ font-size: 12px;
53
+ color: ${v.muted};
54
+ white-space: nowrap;
55
+ ${(p) => p.$mono && css `font-family: ${v.mono}; font-size: 11.5px;`}
56
+ }
57
+ > .end { flex: none; display: inline-flex; align-items: center; gap: 2px; margin-right: -6px; }
58
+ `;
59
+ /**
60
+ * InputGroup: an input with a glyph, fixed text or controls inside its box.
61
+ * The affixes are part of the field — a subdomain box reads `luke` `.upl.im`
62
+ * as one value — and a click anywhere on the box focuses the input. Unlike
63
+ * SearchBox it holds no state of its own, so it does not debounce: the input
64
+ * inside is the caller's, controlled as they like.
65
+ */
66
+ export function InputGroup({ icon, prefix, suffix, end, mono, invalid, disabled, width, style, className, children }) {
67
+ const field = useField();
68
+ const ref = useRef(null);
69
+ return (_jsxs(GroupBox, { ref: ref, className: className, style: width ? { width, ...style } : style, "$invalid": !!invalid || !!field?.invalid, "$disabled": !!disabled, "$mono": !!mono, onMouseDown: (e) => {
70
+ // the box is the field: a press on its padding or an affix focuses the input
71
+ const t = e.target;
72
+ if (t.closest("input, button, a, [tabindex]"))
73
+ return;
74
+ const input = ref.current?.querySelector("input");
75
+ if (input && !input.disabled) {
76
+ e.preventDefault();
77
+ input.focus();
78
+ }
79
+ }, children: [icon ? _jsx("span", { className: "glyph", "aria-hidden": true, children: _jsx(Icon, { name: icon }) }) : null, prefix ? _jsx("span", { className: "affix", "aria-hidden": true, children: prefix }) : null, disabled ? disableChildren(children) : children, suffix ? _jsx("span", { className: "affix", "aria-hidden": true, children: suffix }) : null, end ? _jsx("span", { className: "end", children: end }) : null] }));
80
+ }
81
+ // The input inside goes off with the group, unless it says otherwise itself.
82
+ function disableChildren(children) {
83
+ return Children.map(children, (c) => {
84
+ if (!isValidElement(c) || c.type === Fragment || c.props.disabled !== undefined)
85
+ return c;
86
+ return cloneElement(c, { disabled: true });
87
+ });
88
+ }
89
+ /* ------------------------------------------------------------------ NumberInput */
90
+ const Step = styled.button `
91
+ width: 20px;
92
+ height: 22px;
93
+ display: inline-grid;
94
+ place-items: center;
95
+ border-radius: 5px;
96
+ color: ${v.faint};
97
+ font-size: 9px;
98
+ &:hover:not(:disabled) { background: ${v.hover}; color: ${v.text}; }
99
+ &:disabled { opacity: 0.4; cursor: not-allowed; }
100
+ `;
101
+ const NumInput = styled.input.attrs(useFieldAttrs) `
102
+ font-variant-numeric: tabular-nums;
103
+ color: ${v.text};
104
+ &::placeholder { color: ${v.faint}; }
105
+ `;
106
+ const clamp = (n, min, max) => Math.min(max ?? Infinity, Math.max(min ?? -Infinity, n));
107
+ // Steps of 0.1 should land on 0.3, not 0.30000000000000004.
108
+ const roundTo = (n, step) => {
109
+ const dp = (String(step).split(".")[1] ?? "").length;
110
+ return dp ? Number(n.toFixed(dp)) : n;
111
+ };
112
+ /**
113
+ * NumberInput: a number with its unit, its bounds and a keyboard step. Typed
114
+ * text is held as typed ("1." stays "1.") and handed up parsed; the bounds are
115
+ * applied when the field is left, not while a person is half-way through
116
+ * typing "150" into a box whose minimum is 100. A text input with
117
+ * `role="spinbutton"`, not `type="number"`, so a scroll wheel passing over it
118
+ * never changes the value and "e" is not a digit.
119
+ */
120
+ export function NumberInput({ value, onChange, min, max, step = 1, unit, prefix, stepper, placeholder, disabled, width, label, id, name, autoFocus, decimal, }) {
121
+ const show = (n) => (n === null || Number.isNaN(n) ? "" : String(n));
122
+ const [draft, setDraft] = useState(show(value));
123
+ // Follow the value when it changes from outside, without clobbering a draft
124
+ // that already means it ("1." while the value is 1). Adjusted during render.
125
+ const [seen, setSeen] = useState(value);
126
+ if (seen !== value) {
127
+ setSeen(value);
128
+ const parsed = draft.trim() === "" ? null : Number(draft);
129
+ if (parsed !== value)
130
+ setDraft(show(value));
131
+ }
132
+ const allowDot = decimal ?? !Number.isInteger(step);
133
+ const pattern = allowDot ? /^-?\d*\.?\d*$/ : /^-?\d*$/;
134
+ const commit = (n) => {
135
+ setDraft(show(n));
136
+ if (n !== value)
137
+ onChange(n);
138
+ };
139
+ const bump = (dir, times = 1) => {
140
+ const base = value ?? (dir > 0 ? (min ?? 0) - step : (max ?? 0) + step);
141
+ commit(clamp(roundTo(base + dir * step * times, step), min, max));
142
+ };
143
+ return (_jsx(InputGroup, { suffix: unit, prefix: prefix, disabled: disabled, width: width, end: stepper ? (_jsxs(_Fragment, { children: [_jsx(Step, { type: "button", tabIndex: -1, "aria-label": "Decrease", disabled: disabled || (value !== null && min !== undefined && value <= min), onClick: () => bump(-1), children: _jsx(Icon, { name: "minus" }) }), _jsx(Step, { type: "button", tabIndex: -1, "aria-label": "Increase", disabled: disabled || (value !== null && max !== undefined && value >= max), onClick: () => bump(1), children: _jsx(Icon, { name: "add" }) })] })) : undefined, children: _jsx(NumInput, { type: "text", inputMode: allowDot ? "decimal" : "numeric", role: "spinbutton", "aria-label": label, "aria-valuenow": value ?? undefined, "aria-valuemin": min, "aria-valuemax": max, id: id, name: name, autoFocus: autoFocus, autoComplete: "off", value: draft, placeholder: placeholder, disabled: disabled, onChange: (e) => {
144
+ const t = e.target.value.trim();
145
+ if (!pattern.test(t))
146
+ return;
147
+ setDraft(e.target.value);
148
+ if (t === "") {
149
+ if (value !== null)
150
+ onChange(null);
151
+ return;
152
+ }
153
+ const n = Number(t);
154
+ if (Number.isFinite(n) && t !== "-" && n !== value)
155
+ onChange(n);
156
+ }, onBlur: () => {
157
+ if (value === null) {
158
+ setDraft("");
159
+ return;
160
+ }
161
+ commit(clamp(value, min, max));
162
+ }, onKeyDown: (e) => {
163
+ if (e.key === "ArrowUp") {
164
+ e.preventDefault();
165
+ bump(1, e.shiftKey ? 10 : 1);
166
+ }
167
+ else if (e.key === "ArrowDown") {
168
+ e.preventDefault();
169
+ bump(-1, e.shiftKey ? 10 : 1);
170
+ }
171
+ else if (e.key === "Home" && min !== undefined) {
172
+ e.preventDefault();
173
+ commit(min);
174
+ }
175
+ else if (e.key === "End" && max !== undefined) {
176
+ e.preventDefault();
177
+ commit(max);
178
+ }
179
+ } }) }));
180
+ }
181
+ /* ------------------------------------------------------------------ Slider */
182
+ const thumb = css `
183
+ width: 14px;
184
+ height: 14px;
185
+ border-radius: 50%;
186
+ background: ${v.surface};
187
+ border: 2px solid ${v.brand};
188
+ box-shadow: 0 1px 3px ${v.scrim};
189
+ `;
190
+ const SliderWrap = styled.div `
191
+ display: inline-flex;
192
+ align-items: center;
193
+ gap: 10px;
194
+ width: ${(p) => (p.$width ? `${p.$width}px` : "100%")};
195
+ min-width: 0;
196
+ ${(p) => p.$disabled && css `opacity: 0.55;`}
197
+ > .val {
198
+ flex: none;
199
+ min-width: 3ch;
200
+ text-align: right;
201
+ font-family: ${v.mono};
202
+ font-size: 11px;
203
+ color: ${v.text};
204
+ font-variant-numeric: tabular-nums;
205
+ }
206
+ `;
207
+ const Range = styled.input `
208
+ flex: 1 1 auto;
209
+ min-width: 60px;
210
+ height: 18px;
211
+ margin: 0;
212
+ background: transparent;
213
+ appearance: none;
214
+ -webkit-appearance: none;
215
+ cursor: pointer;
216
+ &:disabled { cursor: not-allowed; }
217
+ &:focus-visible { outline: none; box-shadow: none; }
218
+
219
+ &::-webkit-slider-runnable-track {
220
+ height: 4px;
221
+ border-radius: 999px;
222
+ background: linear-gradient(to right, ${v.brand} var(--x-fill), ${v.line2} var(--x-fill));
223
+ }
224
+ &::-webkit-slider-thumb { -webkit-appearance: none; appearance: none; margin-top: -5px; ${thumb} }
225
+ &:focus-visible::-webkit-slider-thumb { box-shadow: ${v.ring}; }
226
+
227
+ &::-moz-range-track { height: 4px; border-radius: 999px; background: ${v.line2}; }
228
+ &::-moz-range-progress { height: 4px; border-radius: 999px; background: ${v.brand}; }
229
+ &::-moz-range-thumb { ${thumb} width: 10px; height: 10px; }
230
+ &:focus-visible::-moz-range-thumb { box-shadow: ${v.ring}; }
231
+ `;
232
+ /**
233
+ * Slider: a number picked by feel rather than typed — a stroke width, a blur
234
+ * strength, an opacity. A native range input drawn on the tokens, so the
235
+ * keyboard (arrows, Page Up/Down, Home/End) and the slider role come free.
236
+ * Its value is shown beside it, because a slider whose number you cannot see
237
+ * is a slider people overshoot. Reach for NumberInput when the exact value
238
+ * matters more than the gesture.
239
+ */
240
+ export function Slider({ value, defaultValue, onChange, onCommit, min = 0, max = 100, step = 1, label, disabled, showValue = true, width, id }) {
241
+ const [own, setOwn] = useState(defaultValue ?? min);
242
+ const current = value ?? own;
243
+ const pct = max > min ? ((clamp(current, min, max) - min) / (max - min)) * 100 : 0;
244
+ const latest = useRef(current);
245
+ useEffect(() => { latest.current = current; });
246
+ return (_jsxs(SliderWrap, { "$width": width, "$disabled": !!disabled, children: [_jsx(Range, { type: "range", id: id, min: min, max: max, step: step, value: current, disabled: disabled, "aria-label": label, style: { "--x-fill": `${pct}%` }, onChange: (e) => {
247
+ const n = Number(e.target.value);
248
+ if (value === undefined)
249
+ setOwn(n);
250
+ onChange?.(n);
251
+ }, onPointerUp: () => onCommit?.(latest.current), onKeyUp: () => onCommit?.(latest.current) }), showValue ? _jsx("span", { className: "val", "aria-hidden": true, children: typeof showValue === "function" ? showValue(current) : current }) : null] }));
252
+ }
253
+ /* ------------------------------------------------------------------ Checkbox */
254
+ const CheckBox = styled.span `
255
+ position: relative;
256
+ display: inline-grid;
257
+ place-items: center;
258
+ flex: none;
259
+ width: ${(p) => p.$size}px;
260
+ height: ${(p) => p.$size}px;
261
+ border-radius: ${(p) => Math.round(p.$size / 3.2)}px;
262
+ border: 1.5px solid ${(p) => (p.$on ? "transparent" : v.line2)};
263
+ background: ${(p) => (p.$on ? v.grad : v.field)};
264
+ color: ${v.onBrand};
265
+ font-size: ${(p) => Math.round(p.$size * 0.6)}px;
266
+ transition: background 0.14s ease, border-color 0.14s ease;
267
+ ${(p) => p.$disabled && css `opacity: 0.5;`}
268
+ ${(p) => !p.$on && !p.$disabled && css `&:hover { border-color: ${v.brand55}; }`}
269
+ > input {
270
+ position: absolute;
271
+ inset: -4px;
272
+ width: calc(100% + 8px);
273
+ height: calc(100% + 8px);
274
+ margin: 0;
275
+ opacity: 0;
276
+ cursor: ${(p) => (p.$disabled ? "not-allowed" : "pointer")};
277
+ }
278
+ &:has(> input:focus-visible) { box-shadow: ${v.ring}; }
279
+ > svg { pointer-events: none; }
280
+ `;
281
+ /**
282
+ * Checkbox: the box alone, with no label around it — for selecting a table
283
+ * row, a list item or a card, where the row is the label. Toggle and CheckRow
284
+ * wrap their input in a <label>, which inside a row that is itself a link
285
+ * changes what a click activates; this is a real checkbox input the row can
286
+ * stop. `indeterminate` is the select-all over a partial selection.
287
+ */
288
+ export function Checkbox({ checked, onChange, indeterminate, disabled, label, size = 16, id, name, value, title, onClick, className, style }) {
289
+ const ref = useRef(null);
290
+ useEffect(() => {
291
+ if (ref.current)
292
+ ref.current.indeterminate = !!indeterminate;
293
+ }, [indeterminate]);
294
+ const on = checked || !!indeterminate;
295
+ return (_jsxs(CheckBox, { "$size": size, "$on": on, "$disabled": !!disabled, title: title, className: className, style: style, children: [_jsx("input", { ref: ref, type: "checkbox", id: id, name: name, value: value, checked: checked, disabled: disabled, "aria-label": label, onClick: onClick, onChange: (e) => { if (!disabled)
296
+ onChange?.(e.target.checked, e); } }), indeterminate ? _jsx(Icon, { name: "minus" }) : checked ? _jsx(Icon, { name: "check" }) : null] }));
297
+ }
298
+ /* ------------------------------------------------------------------ TriToggle */
299
+ /**
300
+ * TriToggle: On / Off / Inherit — a setting that is either set here or left
301
+ * to whatever the level above says (a bucket inheriting its account's
302
+ * default, a folder its bucket's). `undefined` is Inherit. The chosen segment
303
+ * wears the answer's colour — on is ok, off is crit, inherit neutral — so a
304
+ * column of them reads at a glance. `inherit={false}` drops the third option
305
+ * where there is nothing to inherit from; there, `undefined` means not yet
306
+ * chosen and neither On nor Off is shown selected — showing Off would read as
307
+ * a decision nobody made. The first segment keeps the tab stop.
308
+ */
309
+ export function TriToggle({ value, onChange, inherit = true, labels, inheritHint, tones, disabled, label, size }) {
310
+ const current = value === undefined ? (inherit ? "inherit" : "unset") : value ? "on" : "off";
311
+ return (_jsx(Segmented, { label: label, disabled: disabled, size: size, value: current, onChange: (k) => onChange(k === "inherit" ? undefined : k === "on"), options: [
312
+ { value: "on", label: labels?.on ?? "On", icon: "check", tone: tones?.on ?? "ok" },
313
+ { value: "off", label: labels?.off ?? "Off", icon: "close", tone: tones?.off ?? "crit" },
314
+ ...(inherit
315
+ ? [{ value: "inherit", label: labels?.inherit ?? "Inherit", icon: "minus", tone: tones?.inherit ?? "mut", tooltip: inheritHint }]
316
+ : []),
317
+ ] }));
318
+ }
319
+ /* ------------------------------------------------------------------ SettingRow */
320
+ const RowWrap = styled.div `
321
+ display: flex;
322
+ align-items: center;
323
+ justify-content: space-between;
324
+ gap: 16px;
325
+ min-width: 0;
326
+ @media (max-width: 640px) { flex-wrap: wrap; }
327
+ > .ctl { flex: none; display: flex; align-items: center; gap: 8px; }
328
+ `;
329
+ const RowText = styled.div `
330
+ min-width: 0;
331
+ flex: 1 1 260px;
332
+ > .name { display: block; font-size: 13px; font-weight: 600; color: ${(p) => (p.$dim ? v.muted : v.text)}; }
333
+ > .desc { display: block; margin-top: 2px; font-size: 11.5px; line-height: 1.5; color: ${v.faint}; }
334
+ `;
335
+ /**
336
+ * SettingRow: one setting on one line — its name and what it means on the
337
+ * left, its control on the right. The shape of a settings card that is a list
338
+ * of switches (TriToggle, Toggle, Segmented, a NumberInput) rather than a
339
+ * form of fields; stacks under 640px.
340
+ */
341
+ export function SettingRow({ label, hint, dim, children, ...rest }) {
342
+ return (_jsxs(RowWrap, { ...rest, children: [_jsxs(RowText, { "$dim": !!dim, children: [_jsx("span", { className: "name", children: label }), hint ? _jsx("span", { className: "desc", children: hint }) : null] }), children ? _jsx("div", { className: "ctl", children: children }) : null] }));
343
+ }
344
+ //# sourceMappingURL=Controls.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Controls.js","sourceRoot":"","sources":["../../src/kit/Controls.tsx"],"names":[],"mappings":"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"}