@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.
- package/LICENSE +21 -0
- package/dist/actions.d.ts +99 -0
- package/dist/actions.d.ts.map +1 -0
- package/dist/actions.js +61 -0
- package/dist/actions.js.map +1 -0
- package/dist/backdrops/StarBackdrop.d.ts +31 -0
- package/dist/backdrops/StarBackdrop.d.ts.map +1 -0
- package/dist/backdrops/StarBackdrop.js +84 -0
- package/dist/backdrops/StarBackdrop.js.map +1 -0
- package/dist/backdrops/index.d.ts +7 -0
- package/dist/backdrops/index.d.ts.map +1 -0
- package/dist/backdrops/index.js +8 -0
- package/dist/backdrops/index.js.map +1 -0
- package/dist/backdrops/math.d.ts +39 -0
- package/dist/backdrops/math.d.ts.map +1 -0
- package/dist/backdrops/math.js +44 -0
- package/dist/backdrops/math.js.map +1 -0
- package/dist/backdrops/scenes.d.ts +20 -0
- package/dist/backdrops/scenes.d.ts.map +1 -0
- package/dist/backdrops/scenes.js +417 -0
- package/dist/backdrops/scenes.js.map +1 -0
- package/dist/backdrops.css +141 -0
- package/dist/data.d.ts +91 -0
- package/dist/data.d.ts.map +1 -0
- package/dist/data.js +69 -0
- package/dist/data.js.map +1 -0
- package/dist/effects/actions.d.ts +48 -0
- package/dist/effects/actions.d.ts.map +1 -0
- package/dist/effects/actions.js +80 -0
- package/dist/effects/actions.js.map +1 -0
- package/dist/effects/controls.d.ts +84 -0
- package/dist/effects/controls.d.ts.map +1 -0
- package/dist/effects/controls.js +121 -0
- package/dist/effects/controls.js.map +1 -0
- package/dist/effects/display.d.ts +92 -0
- package/dist/effects/display.d.ts.map +1 -0
- package/dist/effects/display.js +138 -0
- package/dist/effects/display.js.map +1 -0
- package/dist/effects/hooks.d.ts +13 -0
- package/dist/effects/hooks.d.ts.map +1 -0
- package/dist/effects/hooks.js +68 -0
- package/dist/effects/hooks.js.map +1 -0
- package/dist/effects/index.d.ts +14 -0
- package/dist/effects/index.d.ts.map +1 -0
- package/dist/effects/index.js +12 -0
- package/dist/effects/index.js.map +1 -0
- package/dist/effects/loaders.d.ts +67 -0
- package/dist/effects/loaders.d.ts.map +1 -0
- package/dist/effects/loaders.js +73 -0
- package/dist/effects/loaders.js.map +1 -0
- package/dist/effects/math.d.ts +23 -0
- package/dist/effects/math.d.ts.map +1 -0
- package/dist/effects/math.js +56 -0
- package/dist/effects/math.js.map +1 -0
- package/dist/effects/navigation.d.ts +55 -0
- package/dist/effects/navigation.d.ts.map +1 -0
- package/dist/effects/navigation.js +103 -0
- package/dist/effects/navigation.js.map +1 -0
- package/dist/effects/overlays.d.ts +34 -0
- package/dist/effects/overlays.d.ts.map +1 -0
- package/dist/effects/overlays.js +56 -0
- package/dist/effects/overlays.js.map +1 -0
- package/dist/effects.css +1659 -0
- package/dist/feedback.d.ts +55 -0
- package/dist/feedback.d.ts.map +1 -0
- package/dist/feedback.js +60 -0
- package/dist/feedback.js.map +1 -0
- package/dist/flow.d.ts +70 -0
- package/dist/flow.d.ts.map +1 -0
- package/dist/flow.js +118 -0
- package/dist/flow.js.map +1 -0
- package/dist/forms.d.ts +130 -0
- package/dist/forms.d.ts.map +1 -0
- package/dist/forms.js +241 -0
- package/dist/forms.js.map +1 -0
- package/dist/glass.d.ts +74 -0
- package/dist/glass.d.ts.map +1 -0
- package/dist/glass.js +139 -0
- package/dist/glass.js.map +1 -0
- package/dist/illustrations/data.d.ts +103 -0
- package/dist/illustrations/data.d.ts.map +1 -0
- package/dist/illustrations/data.js +3 -0
- package/dist/illustrations/data.js.map +1 -0
- package/dist/illustrations/index.d.ts +110 -0
- package/dist/illustrations/index.d.ts.map +1 -0
- package/dist/illustrations/index.js +54 -0
- package/dist/illustrations/index.js.map +1 -0
- package/dist/illustrations/types.d.ts +30 -0
- package/dist/illustrations/types.d.ts.map +1 -0
- package/dist/illustrations/types.js +2 -0
- package/dist/illustrations/types.js.map +1 -0
- package/dist/index.d.ts +27 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +13 -0
- package/dist/index.js.map +1 -0
- package/dist/internal/expand.d.ts +17 -0
- package/dist/internal/expand.d.ts.map +1 -0
- package/dist/internal/expand.js +23 -0
- package/dist/internal/expand.js.map +1 -0
- package/dist/internal/icons.d.ts +9 -0
- package/dist/internal/icons.d.ts.map +1 -0
- package/dist/internal/icons.js +12 -0
- package/dist/internal/icons.js.map +1 -0
- package/dist/internal/interaction.d.ts +21 -0
- package/dist/internal/interaction.d.ts.map +1 -0
- package/dist/internal/interaction.js +129 -0
- package/dist/internal/interaction.js.map +1 -0
- package/dist/internal/layers.d.ts +12 -0
- package/dist/internal/layers.d.ts.map +1 -0
- package/dist/internal/layers.js +108 -0
- package/dist/internal/layers.js.map +1 -0
- package/dist/internal/util.d.ts +9 -0
- package/dist/internal/util.d.ts.map +1 -0
- package/dist/internal/util.js +33 -0
- package/dist/internal/util.js.map +1 -0
- package/dist/layout.d.ts +34 -0
- package/dist/layout.d.ts.map +1 -0
- package/dist/layout.js +27 -0
- package/dist/layout.js.map +1 -0
- package/dist/motion.d.ts +36 -0
- package/dist/motion.d.ts.map +1 -0
- package/dist/motion.js +80 -0
- package/dist/motion.js.map +1 -0
- package/dist/navigation.d.ts +100 -0
- package/dist/navigation.d.ts.map +1 -0
- package/dist/navigation.js +154 -0
- package/dist/navigation.js.map +1 -0
- package/dist/northstar/BriefForm.d.ts +23 -0
- package/dist/northstar/BriefForm.d.ts.map +1 -0
- package/dist/northstar/BriefForm.js +40 -0
- package/dist/northstar/BriefForm.js.map +1 -0
- package/dist/northstar/ExportMenu.d.ts +16 -0
- package/dist/northstar/ExportMenu.d.ts.map +1 -0
- package/dist/northstar/ExportMenu.js +11 -0
- package/dist/northstar/ExportMenu.js.map +1 -0
- package/dist/northstar/PopulationPanel.d.ts +30 -0
- package/dist/northstar/PopulationPanel.d.ts.map +1 -0
- package/dist/northstar/PopulationPanel.js +18 -0
- package/dist/northstar/PopulationPanel.js.map +1 -0
- package/dist/northstar/ResearchBuilder.d.ts +26 -0
- package/dist/northstar/ResearchBuilder.d.ts.map +1 -0
- package/dist/northstar/ResearchBuilder.js +81 -0
- package/dist/northstar/ResearchBuilder.js.map +1 -0
- package/dist/northstar/ResponsesView.d.ts +20 -0
- package/dist/northstar/ResponsesView.d.ts.map +1 -0
- package/dist/northstar/ResponsesView.js +42 -0
- package/dist/northstar/ResponsesView.js.map +1 -0
- package/dist/northstar/Run.d.ts +37 -0
- package/dist/northstar/Run.d.ts.map +1 -0
- package/dist/northstar/Run.js +32 -0
- package/dist/northstar/Run.js.map +1 -0
- package/dist/northstar/StudyShell.d.ts +50 -0
- package/dist/northstar/StudyShell.d.ts.map +1 -0
- package/dist/northstar/StudyShell.js +18 -0
- package/dist/northstar/StudyShell.js.map +1 -0
- package/dist/northstar/StudyStatus.d.ts +17 -0
- package/dist/northstar/StudyStatus.d.ts.map +1 -0
- package/dist/northstar/StudyStatus.js +26 -0
- package/dist/northstar/StudyStatus.js.map +1 -0
- package/dist/northstar/index.d.ts +10 -0
- package/dist/northstar/index.d.ts.map +1 -0
- package/dist/northstar/index.js +10 -0
- package/dist/northstar/index.js.map +1 -0
- package/dist/northstar/messages.d.ts +84 -0
- package/dist/northstar/messages.d.ts.map +1 -0
- package/dist/northstar/messages.js +107 -0
- package/dist/northstar/messages.js.map +1 -0
- package/dist/overlays.d.ts +136 -0
- package/dist/overlays.d.ts.map +1 -0
- package/dist/overlays.js +447 -0
- package/dist/overlays.js.map +1 -0
- package/dist/provider.d.ts +82 -0
- package/dist/provider.d.ts.map +1 -0
- package/dist/provider.js +128 -0
- package/dist/provider.js.map +1 -0
- package/dist/styles.css +2033 -0
- package/dist/surface.d.ts +58 -0
- package/dist/surface.d.ts.map +1 -0
- package/dist/surface.js +39 -0
- package/dist/surface.js.map +1 -0
- package/package.json +81 -3
- package/README.md +0 -3
package/dist/forms.js
ADDED
|
@@ -0,0 +1,241 @@
|
|
|
1
|
+
'use client';
|
|
2
|
+
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
3
|
+
import { createContext, useContext, useEffect, useId, useMemo, useRef, useState } from 'react';
|
|
4
|
+
import { useNorthstar } from './provider.js';
|
|
5
|
+
import { cx, mergeRefs, useControllable } from './internal/util.js';
|
|
6
|
+
import { Check, ChevronDown, Close, Minus, Plus, Search } from './internal/icons.js';
|
|
7
|
+
const FieldContext = createContext(null);
|
|
8
|
+
/** Label, description and error for one control; wires ids and aria-* to the control inside. */
|
|
9
|
+
export function Field({ label, description, error, required = false, disabled = false, id, className, children, ...rest }) {
|
|
10
|
+
const auto = useId();
|
|
11
|
+
const controlId = id ?? `ns-field-${auto}`;
|
|
12
|
+
const descId = description ? `${controlId}-desc` : undefined;
|
|
13
|
+
const errId = error ? `${controlId}-err` : undefined;
|
|
14
|
+
const describedBy = [descId, errId].filter(Boolean).join(' ') || undefined;
|
|
15
|
+
const value = useMemo(() => ({ id: controlId, describedBy, invalid: Boolean(error), required, disabled }), [controlId, describedBy, error, required, disabled]);
|
|
16
|
+
return (_jsxs("div", { ...rest, className: cx('ns-field', className), "data-invalid": error ? true : undefined, children: [_jsxs("label", { className: "ns-field__label", htmlFor: controlId, children: [label, required && (_jsx("span", { className: "ns-field__required", "aria-hidden": "true", children: ' *' }))] }), _jsx(FieldContext.Provider, { value: value, children: children }), description && (_jsx("p", { id: descId, className: "ns-field__description", children: description })), error && (_jsxs("p", { id: errId, className: "ns-field__error", children: [_jsx("span", { "aria-hidden": "true", children: '! ' }), error] }))] }));
|
|
17
|
+
}
|
|
18
|
+
/** Field wiring for a control: id, aria-describedby, aria-invalid, required, disabled. */
|
|
19
|
+
export function useFieldProps(props) {
|
|
20
|
+
const field = useContext(FieldContext);
|
|
21
|
+
const invalid = props.invalid ?? field?.invalid ?? false;
|
|
22
|
+
return {
|
|
23
|
+
aria: {
|
|
24
|
+
id: props.id ?? field?.id,
|
|
25
|
+
disabled: props.disabled ?? field?.disabled,
|
|
26
|
+
required: props.required ?? field?.required,
|
|
27
|
+
'aria-describedby': [props['aria-describedby'], field?.describedBy].filter(Boolean).join(' ') || undefined,
|
|
28
|
+
'aria-invalid': invalid || undefined,
|
|
29
|
+
},
|
|
30
|
+
invalid,
|
|
31
|
+
};
|
|
32
|
+
}
|
|
33
|
+
export function Input({ size = 'md', invalid, start, end, className, value, defaultValue, onValueChange, onChange, style, ...rest }) {
|
|
34
|
+
const { aria, invalid: isInvalid } = useFieldProps({ ...rest, invalid });
|
|
35
|
+
const [v, setV] = useControllable(value, defaultValue ?? '', onValueChange);
|
|
36
|
+
return (_jsxs("div", { className: cx('ns-input', `ns-size-${size}`, isInvalid && 'ns-invalid', aria.disabled && 'ns-disabled', className), style: style, children: [start && _jsx("span", { className: "ns-input__adornment", children: start }), _jsx("input", { ...rest, ...aria, className: "ns-input__control", value: v, onChange: (e) => {
|
|
37
|
+
onChange?.(e);
|
|
38
|
+
setV(e.target.value);
|
|
39
|
+
} }), end && _jsx("span", { className: "ns-input__adornment", children: end })] }));
|
|
40
|
+
}
|
|
41
|
+
export function Textarea({ invalid, className, value, defaultValue, onValueChange, onChange, ...rest }) {
|
|
42
|
+
const { aria, invalid: isInvalid } = useFieldProps({ ...rest, invalid });
|
|
43
|
+
const [v, setV] = useControllable(value, defaultValue ?? '', onValueChange);
|
|
44
|
+
return (_jsx("textarea", { ...rest, ...aria, className: cx('ns-textarea', isInvalid && 'ns-invalid', className), value: v, onChange: (e) => {
|
|
45
|
+
onChange?.(e);
|
|
46
|
+
setV(e.target.value);
|
|
47
|
+
} }));
|
|
48
|
+
}
|
|
49
|
+
/** A styled native select: platform keyboard and screen-reader behaviour for free. */
|
|
50
|
+
export function Select({ options, placeholder, size = 'md', invalid, className, value, defaultValue, onValueChange, onChange, style, ...rest }) {
|
|
51
|
+
const { aria, invalid: isInvalid } = useFieldProps({ ...rest, invalid });
|
|
52
|
+
const [v, setV] = useControllable(value, defaultValue ?? '', onValueChange);
|
|
53
|
+
return (_jsxs("div", { className: cx('ns-select', `ns-size-${size}`, isInvalid && 'ns-invalid', className), style: style, children: [_jsxs("select", { ...rest, ...aria, className: "ns-select__control", value: v, onChange: (e) => {
|
|
54
|
+
onChange?.(e);
|
|
55
|
+
setV(e.target.value);
|
|
56
|
+
}, children: [placeholder !== undefined && (_jsx("option", { value: "", disabled: true, children: placeholder })), options.map((o) => (_jsx("option", { value: o.value, disabled: o.disabled, children: o.label }, o.value)))] }), _jsx("span", { className: "ns-select__chevron", "aria-hidden": "true", children: _jsx(ChevronDown, {}) })] }));
|
|
57
|
+
}
|
|
58
|
+
export function Combobox({ options, placeholder, size = 'md', invalid, className, value, defaultValue, onValueChange, filter, ...rest }) {
|
|
59
|
+
const { messages } = useNorthstar();
|
|
60
|
+
const { aria, invalid: isInvalid } = useFieldProps({ ...rest, invalid });
|
|
61
|
+
const [selected, setSelected] = useControllable(value, defaultValue ?? null, onValueChange);
|
|
62
|
+
const selectedLabel = options.find((o) => o.value === selected)?.label ?? '';
|
|
63
|
+
const [query, setQuery] = useState(selectedLabel);
|
|
64
|
+
const [open, setOpen] = useState(false);
|
|
65
|
+
const [active, setActive] = useState(-1);
|
|
66
|
+
const listId = `ns-combobox-${useId().replace(/:/g, '')}`;
|
|
67
|
+
const rootRef = useRef(null);
|
|
68
|
+
useEffect(() => setQuery(selectedLabel), [selectedLabel]);
|
|
69
|
+
const match = filter ?? ((o, q) => o.label.toLowerCase().includes(q.toLowerCase()));
|
|
70
|
+
const visible = query === selectedLabel ? options : options.filter((o) => match(o, query));
|
|
71
|
+
const commit = (o) => {
|
|
72
|
+
if (!o || o.disabled)
|
|
73
|
+
return;
|
|
74
|
+
setSelected(o.value);
|
|
75
|
+
setQuery(o.label);
|
|
76
|
+
setOpen(false);
|
|
77
|
+
setActive(-1);
|
|
78
|
+
};
|
|
79
|
+
const move = (delta) => {
|
|
80
|
+
if (!open)
|
|
81
|
+
setOpen(true);
|
|
82
|
+
if (visible.length === 0)
|
|
83
|
+
return;
|
|
84
|
+
let i = active;
|
|
85
|
+
for (let n = 0; n < visible.length; n++) {
|
|
86
|
+
i = (i + delta + visible.length) % visible.length;
|
|
87
|
+
if (!visible[i]?.disabled)
|
|
88
|
+
break;
|
|
89
|
+
}
|
|
90
|
+
setActive(i);
|
|
91
|
+
};
|
|
92
|
+
return (_jsxs("div", { ref: rootRef, className: cx('ns-combobox', className), onBlur: (e) => {
|
|
93
|
+
if (!rootRef.current?.contains(e.relatedTarget)) {
|
|
94
|
+
setOpen(false);
|
|
95
|
+
setQuery(selectedLabel);
|
|
96
|
+
}
|
|
97
|
+
}, children: [_jsxs("div", { className: cx('ns-input', `ns-size-${size}`, isInvalid && 'ns-invalid', aria.disabled && 'ns-disabled'), children: [_jsx("input", { ...aria, "aria-label": rest['aria-label'], className: "ns-input__control", role: "combobox", "aria-expanded": open, "aria-controls": listId, "aria-autocomplete": "list", "aria-activedescendant": open && active >= 0 ? `${listId}-${active}` : undefined, autoComplete: "off", placeholder: placeholder, value: query, onChange: (e) => {
|
|
98
|
+
setQuery(e.target.value);
|
|
99
|
+
setOpen(true);
|
|
100
|
+
setActive(-1);
|
|
101
|
+
}, onClick: () => setOpen(true), onKeyDown: (e) => {
|
|
102
|
+
if (e.key === 'ArrowDown') {
|
|
103
|
+
e.preventDefault();
|
|
104
|
+
move(1);
|
|
105
|
+
}
|
|
106
|
+
else if (e.key === 'ArrowUp') {
|
|
107
|
+
e.preventDefault();
|
|
108
|
+
move(-1);
|
|
109
|
+
}
|
|
110
|
+
else if (e.key === 'Enter' && open && active >= 0) {
|
|
111
|
+
e.preventDefault();
|
|
112
|
+
commit(visible[active]);
|
|
113
|
+
}
|
|
114
|
+
else if (e.key === 'Escape' && open) {
|
|
115
|
+
e.preventDefault();
|
|
116
|
+
e.stopPropagation();
|
|
117
|
+
setOpen(false);
|
|
118
|
+
setQuery(selectedLabel);
|
|
119
|
+
}
|
|
120
|
+
} }), _jsx("span", { className: "ns-select__chevron", "aria-hidden": "true", children: _jsx(ChevronDown, {}) })] }), _jsx("ul", { id: listId, role: "listbox", className: "ns-combobox__list ns-pop", hidden: !open, "aria-label": rest['aria-label'], children: visible.map((o, i) => (_jsxs("li", { id: `${listId}-${i}`, role: "option", "aria-selected": o.value === selected, "aria-disabled": o.disabled || undefined, "data-active": i === active || undefined, className: "ns-option", onMouseDown: (e) => e.preventDefault(), onClick: () => commit(o), children: [_jsx("span", { children: o.label }), o.value === selected && _jsx(Check, {})] }, o.value))) }), open && visible.length === 0 && (_jsx("div", { className: "ns-combobox__empty ns-pop", role: "status", children: messages.noResults }))] }));
|
|
121
|
+
}
|
|
122
|
+
/** Native checkbox with rounded corners. */
|
|
123
|
+
export function Checkbox({ checked, defaultChecked, indeterminate = false, onCheckedChange, onChange, className, children, ref, style, ...rest }) {
|
|
124
|
+
const [on, setOn] = useControllable(checked, defaultChecked ?? false, onCheckedChange);
|
|
125
|
+
const inner = useRef(null);
|
|
126
|
+
useEffect(() => {
|
|
127
|
+
if (inner.current)
|
|
128
|
+
inner.current.indeterminate = indeterminate;
|
|
129
|
+
}, [indeterminate]);
|
|
130
|
+
return (_jsxs("label", { className: cx('ns-check', rest.disabled && 'ns-disabled', className), style: style, children: [_jsx("input", { ...rest, ref: mergeRefs(ref, inner), type: "checkbox", className: "ns-check__input", checked: on, onChange: (e) => {
|
|
131
|
+
onChange?.(e);
|
|
132
|
+
setOn(e.target.checked);
|
|
133
|
+
} }), _jsx("span", { className: "ns-check__box", "aria-hidden": "true", children: indeterminate ? _jsx(Minus, {}) : _jsx(Check, {}) }), children && _jsx("span", { className: "ns-check__label", children: children })] }));
|
|
134
|
+
}
|
|
135
|
+
const RadioContext = createContext(null);
|
|
136
|
+
export function RadioGroup({ name, value, defaultValue, onValueChange, disabled = false, orientation = 'vertical', label, className, children, ...rest }) {
|
|
137
|
+
const auto = useId();
|
|
138
|
+
const [v, setV] = useControllable(value, defaultValue ?? '', onValueChange);
|
|
139
|
+
return (_jsx("div", { role: "radiogroup", "aria-label": label, "aria-orientation": orientation, ...rest, className: cx('ns-radio-group', `ns-radio-group--${orientation}`, className), children: _jsx(RadioContext.Provider, { value: { name: name ?? `ns-radio-${auto}`, value: v, set: setV, disabled }, children: children }) }));
|
|
140
|
+
}
|
|
141
|
+
export function Radio({ value, children, className, disabled, style, onChange, ...rest }) {
|
|
142
|
+
const group = useContext(RadioContext);
|
|
143
|
+
const isDisabled = disabled ?? group?.disabled;
|
|
144
|
+
return (_jsxs("label", { className: cx('ns-check ns-radio', isDisabled && 'ns-disabled', className), style: style, children: [_jsx("input", { ...rest, type: "radio", className: "ns-check__input", name: group?.name ?? rest.name, value: value, disabled: isDisabled, checked: group ? group.value === value : rest.checked, onChange: (e) => {
|
|
145
|
+
onChange?.(e);
|
|
146
|
+
if (e.target.checked)
|
|
147
|
+
group?.set(value);
|
|
148
|
+
} }), _jsx("span", { className: "ns-check__box", "aria-hidden": "true" }), children && _jsx("span", { className: "ns-check__label", children: children })] }));
|
|
149
|
+
}
|
|
150
|
+
export function Switch({ checked, defaultChecked, onCheckedChange, className, children, onClick, ...rest }) {
|
|
151
|
+
const { aria } = useFieldProps(rest);
|
|
152
|
+
const ariaNoRequired = { ...aria, required: undefined };
|
|
153
|
+
const [on, setOn] = useControllable(checked, defaultChecked ?? false, onCheckedChange);
|
|
154
|
+
const button = (_jsx("button", { type: "button", ...rest, ...ariaNoRequired, role: "switch", "aria-checked": on, className: cx('ns-switch', !children && className), onClick: (e) => {
|
|
155
|
+
onClick?.(e);
|
|
156
|
+
if (!e.defaultPrevented)
|
|
157
|
+
setOn(!on);
|
|
158
|
+
}, children: _jsx("span", { className: "ns-switch__thumb", "aria-hidden": "true" }) }));
|
|
159
|
+
if (!children)
|
|
160
|
+
return button;
|
|
161
|
+
return (_jsxs("label", { className: cx('ns-switch-label', className), children: [button, _jsx("span", { children: children })] }));
|
|
162
|
+
}
|
|
163
|
+
/** Native range input: arrow keys, Page Up/Down, Home and End work as on the platform. */
|
|
164
|
+
export function Slider({ min = 0, max = 100, step = 1, value, defaultValue, onValueChange, onChange, className, style, ...rest }) {
|
|
165
|
+
const { aria } = useFieldProps(rest);
|
|
166
|
+
const [v, setV] = useControllable(value, defaultValue ?? min, onValueChange);
|
|
167
|
+
const pct = max > min ? ((v - min) / (max - min)) * 100 : 0;
|
|
168
|
+
return (_jsx("input", { ...rest, ...aria, type: "range", min: min, max: max, step: step, value: v, className: cx('ns-slider', className), style: { ...style, ['--ns-slider-fill']: `${pct}%` }, onChange: (e) => {
|
|
169
|
+
onChange?.(e);
|
|
170
|
+
setV(Number(e.target.value));
|
|
171
|
+
} }));
|
|
172
|
+
}
|
|
173
|
+
function clamp(n, min, max) {
|
|
174
|
+
if (min !== undefined && n < min)
|
|
175
|
+
return min;
|
|
176
|
+
if (max !== undefined && n > max)
|
|
177
|
+
return max;
|
|
178
|
+
return n;
|
|
179
|
+
}
|
|
180
|
+
export function NumberInput({ min, max, step = 1, size = 'md', invalid, value, defaultValue, onValueChange, className, style, onKeyDown, onBlur, ...rest }) {
|
|
181
|
+
const { messages } = useNorthstar();
|
|
182
|
+
const { aria, invalid: isInvalid } = useFieldProps({ ...rest, invalid });
|
|
183
|
+
const [v, setV] = useControllable(value, defaultValue ?? null, onValueChange);
|
|
184
|
+
const [draft, setDraft] = useState(v === null ? '' : String(v));
|
|
185
|
+
useEffect(() => setDraft(v === null ? '' : String(v)), [v]);
|
|
186
|
+
const bump = (dir) => setV(clamp((v ?? min ?? 0) + dir * step, min, max));
|
|
187
|
+
const commitDraft = () => {
|
|
188
|
+
if (draft.trim() === '')
|
|
189
|
+
return setV(null);
|
|
190
|
+
const n = Number(draft.replace(',', '.'));
|
|
191
|
+
if (Number.isFinite(n))
|
|
192
|
+
setV(clamp(n, min, max));
|
|
193
|
+
else
|
|
194
|
+
setDraft(v === null ? '' : String(v));
|
|
195
|
+
};
|
|
196
|
+
return (_jsxs("div", { className: cx('ns-input ns-number', `ns-size-${size}`, isInvalid && 'ns-invalid', aria.disabled && 'ns-disabled', className), style: style, children: [_jsx("input", { ...rest, ...aria, className: "ns-input__control", type: "text", inputMode: "decimal", role: "spinbutton", "aria-valuenow": v ?? undefined, "aria-valuemin": min, "aria-valuemax": max, value: draft, onChange: (e) => setDraft(e.target.value), onBlur: (e) => {
|
|
197
|
+
commitDraft();
|
|
198
|
+
onBlur?.(e);
|
|
199
|
+
}, onKeyDown: (e) => {
|
|
200
|
+
onKeyDown?.(e);
|
|
201
|
+
if (e.key === 'ArrowUp') {
|
|
202
|
+
e.preventDefault();
|
|
203
|
+
bump(1);
|
|
204
|
+
}
|
|
205
|
+
else if (e.key === 'ArrowDown') {
|
|
206
|
+
e.preventDefault();
|
|
207
|
+
bump(-1);
|
|
208
|
+
}
|
|
209
|
+
else if (e.key === 'Home' && min !== undefined) {
|
|
210
|
+
e.preventDefault();
|
|
211
|
+
setV(min);
|
|
212
|
+
}
|
|
213
|
+
else if (e.key === 'End' && max !== undefined) {
|
|
214
|
+
e.preventDefault();
|
|
215
|
+
setV(max);
|
|
216
|
+
}
|
|
217
|
+
else if (e.key === 'Enter')
|
|
218
|
+
commitDraft();
|
|
219
|
+
} }), _jsxs("span", { className: "ns-number__steppers", children: [_jsx("button", { type: "button", tabIndex: -1, "aria-label": messages.decrement, disabled: aria.disabled || (min !== undefined && v !== null && v <= min), onClick: () => bump(-1), children: _jsx(Minus, {}) }), _jsx("button", { type: "button", tabIndex: -1, "aria-label": messages.increment, disabled: aria.disabled || (max !== undefined && v !== null && v >= max), onClick: () => bump(1), children: _jsx(Plus, {}) })] })] }));
|
|
220
|
+
}
|
|
221
|
+
export function SearchInput({ value, defaultValue, onValueChange, onClear, placeholder, ref, onKeyDown, ...rest }) {
|
|
222
|
+
const { messages } = useNorthstar();
|
|
223
|
+
const [v, setV] = useControllable(value, defaultValue ?? '', onValueChange);
|
|
224
|
+
const inner = useRef(null);
|
|
225
|
+
const clear = () => {
|
|
226
|
+
setV('');
|
|
227
|
+
onClear?.();
|
|
228
|
+
};
|
|
229
|
+
return (_jsx(Input, { "aria-label": rest['aria-label'] ?? messages.search, placeholder: placeholder ?? messages.search, ...rest, ref: mergeRefs(ref, inner), type: "search", value: v, onValueChange: setV, onKeyDown: (e) => {
|
|
230
|
+
onKeyDown?.(e);
|
|
231
|
+
if (e.key === 'Escape' && v) {
|
|
232
|
+
e.preventDefault();
|
|
233
|
+
e.stopPropagation();
|
|
234
|
+
clear();
|
|
235
|
+
}
|
|
236
|
+
}, start: _jsx(Search, {}), end: v ? (_jsx("button", { type: "button", className: "ns-input__clear", "aria-label": messages.clear, onClick: () => {
|
|
237
|
+
clear();
|
|
238
|
+
inner.current?.focus();
|
|
239
|
+
}, children: _jsx(Close, {}) })) : undefined }));
|
|
240
|
+
}
|
|
241
|
+
//# sourceMappingURL=forms.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"forms.js","sourceRoot":"","sources":["../src/forms.tsx"],"names":[],"mappings":"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"}
|
package/dist/glass.d.ts
ADDED
|
@@ -0,0 +1,74 @@
|
|
|
1
|
+
/** Mirrors `material.liquid.*` in @northstar-js/tokens (checked by a test). */
|
|
2
|
+
export declare const LIQUID: {
|
|
3
|
+
readonly scale: {
|
|
4
|
+
readonly sm: 14;
|
|
5
|
+
readonly md: 28;
|
|
6
|
+
readonly lg: 44;
|
|
7
|
+
};
|
|
8
|
+
readonly bevel: 0.16;
|
|
9
|
+
readonly aberration: 2;
|
|
10
|
+
readonly frost: 0.6;
|
|
11
|
+
/** Mirrors `radius.glass.*`: tight corners for precision, never fully round. */
|
|
12
|
+
readonly radius: {
|
|
13
|
+
readonly panel: 10;
|
|
14
|
+
readonly bar: 10;
|
|
15
|
+
readonly control: 7;
|
|
16
|
+
readonly inner: 6;
|
|
17
|
+
};
|
|
18
|
+
};
|
|
19
|
+
export type LiquidSize = keyof typeof LIQUID.scale;
|
|
20
|
+
/** A `radius.glass.*` step, `pill` (now the bar radius, not fully round) or `full` (a true circle or capsule). */
|
|
21
|
+
export type LiquidRadius = number | keyof typeof LIQUID.radius | 'pill' | 'full';
|
|
22
|
+
/**
|
|
23
|
+
* The displacement map as an SVG data URI. Red carries x, green carries y;
|
|
24
|
+
* each ramps from 1 to 0.5 across the rim and stays at 0.5 (no movement) in
|
|
25
|
+
* the body. With `w`/`h` the rim is in true pixels; without, it is a fraction
|
|
26
|
+
* of a stretched 100 × 100 box, which is close enough for small controls.
|
|
27
|
+
*/
|
|
28
|
+
export declare function displacementMap(w?: number, h?: number, bevel?: number, radius?: number): string;
|
|
29
|
+
interface FilterProps {
|
|
30
|
+
id: string;
|
|
31
|
+
scale: number;
|
|
32
|
+
map: string;
|
|
33
|
+
aberration?: number;
|
|
34
|
+
frost?: number;
|
|
35
|
+
width?: number;
|
|
36
|
+
height?: number;
|
|
37
|
+
}
|
|
38
|
+
/** One refraction filter. Shared presets use a stretched map; LiquidGlass with a numeric scale renders its own, measured. */
|
|
39
|
+
export declare function LiquidFilter({ id, scale, map, aberration, frost, width, height }: FilterProps): import("react/jsx-runtime").JSX.Element;
|
|
40
|
+
/**
|
|
41
|
+
* The shared filter defs (`#ns-liquid-sm|md|lg`), inserted once into
|
|
42
|
+
* document.body however many providers mount, and removed with the last one.
|
|
43
|
+
* Also marks <html data-ns-liquid="refract"> where refraction is supported.
|
|
44
|
+
*/
|
|
45
|
+
export declare function useLiquidDefs(enabled?: boolean): void;
|
|
46
|
+
type GlassTag = 'div' | 'section' | 'article' | 'aside' | 'header' | 'footer' | 'nav' | 'span' | 'li';
|
|
47
|
+
export interface LiquidGlassProps extends React.HTMLAttributes<HTMLElement> {
|
|
48
|
+
/**
|
|
49
|
+
* Refraction strength. A preset (`sm` for controls, `md` for cards and bars,
|
|
50
|
+
* `lg` for sheets and dialogs) uses the shared filter; a number (px of
|
|
51
|
+
* displacement) renders a filter measured to this element.
|
|
52
|
+
*/
|
|
53
|
+
scale?: LiquidSize | number;
|
|
54
|
+
/**
|
|
55
|
+
* Corner radius: px, or a `radius.glass.*` step (`panel`, `bar`, `control`,
|
|
56
|
+
* `inner`). `pill` is the bar radius (glass is no longer fully round);
|
|
57
|
+
* `full` is a true capsule. Default `panel` (10px).
|
|
58
|
+
*/
|
|
59
|
+
radius?: LiquidRadius;
|
|
60
|
+
/** Lift with a soft drop shadow. Default true. */
|
|
61
|
+
floating?: boolean;
|
|
62
|
+
/** Glacier tint strength. `none` keeps only the neutral body. */
|
|
63
|
+
tint?: 'none' | 'subtle' | 'signal';
|
|
64
|
+
as?: GlassTag;
|
|
65
|
+
ref?: React.Ref<HTMLElement>;
|
|
66
|
+
}
|
|
67
|
+
/**
|
|
68
|
+
* Thin, refractive glass in the iOS 26 manner: the backdrop bends at the rim,
|
|
69
|
+
* a specular highlight sits on the top-left, a rim of light runs round the
|
|
70
|
+
* edge with an inner glow under it, and the body carries a faint glacier tint.
|
|
71
|
+
*/
|
|
72
|
+
export declare function LiquidGlass({ scale, radius, floating, tint, as: Tag, className, style, ref, children, ...rest }: LiquidGlassProps): import("react/jsx-runtime").JSX.Element;
|
|
73
|
+
export {};
|
|
74
|
+
//# sourceMappingURL=glass.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"glass.d.ts","sourceRoot":"","sources":["../src/glass.tsx"],"names":[],"mappings":"AAaA,+EAA+E;AAC/E,eAAO,MAAM,MAAM;;;;;;;;;IAKjB,gFAAgF;;;;;;;CAExE,CAAC;AACX,MAAM,MAAM,UAAU,GAAG,MAAM,OAAO,MAAM,CAAC,KAAK,CAAC;AACnD,kHAAkH;AAClH,MAAM,MAAM,YAAY,GAAG,MAAM,GAAG,MAAM,OAAO,MAAM,CAAC,MAAM,GAAG,MAAM,GAAG,MAAM,CAAC;AAEjF;;;;;GAKG;AACH,wBAAgB,eAAe,CAAC,CAAC,SAAM,EAAE,CAAC,SAAM,EAAE,KAAK,GAAE,MAAqB,EAAE,MAAM,SAAI,GAAG,MAAM,CAalG;AAOD,UAAU,WAAW;IACnB,EAAE,EAAE,MAAM,CAAC;IACX,KAAK,EAAE,MAAM,CAAC;IACd,GAAG,EAAE,MAAM,CAAC;IACZ,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB;AAED,6HAA6H;AAC7H,wBAAgB,YAAY,CAAC,EAAE,EAAE,EAAE,KAAK,EAAE,GAAG,EAAE,UAA8B,EAAE,KAAoB,EAAE,KAAK,EAAE,MAAM,EAAE,EAAE,WAAW,2CAkBhI;AAYD;;;;GAIG;AACH,wBAAgB,aAAa,CAAC,OAAO,UAAO,QAoC3C;AAED,KAAK,QAAQ,GAAG,KAAK,GAAG,SAAS,GAAG,SAAS,GAAG,OAAO,GAAG,QAAQ,GAAG,QAAQ,GAAG,KAAK,GAAG,MAAM,GAAG,IAAI,CAAC;AAEtG,MAAM,WAAW,gBAAiB,SAAQ,KAAK,CAAC,cAAc,CAAC,WAAW,CAAC;IACzE;;;;OAIG;IACH,KAAK,CAAC,EAAE,UAAU,GAAG,MAAM,CAAC;IAC5B;;;;OAIG;IACH,MAAM,CAAC,EAAE,YAAY,CAAC;IACtB,kDAAkD;IAClD,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,iEAAiE;IACjE,IAAI,CAAC,EAAE,MAAM,GAAG,QAAQ,GAAG,QAAQ,CAAC;IACpC,EAAE,CAAC,EAAE,QAAQ,CAAC;IACd,GAAG,CAAC,EAAE,KAAK,CAAC,GAAG,CAAC,WAAW,CAAC,CAAC;CAC9B;AAED;;;;GAIG;AACH,wBAAgB,WAAW,CAAC,EAAE,KAAY,EAAE,MAAgB,EAAE,QAAe,EAAE,IAAe,EAAE,EAAE,EAAE,GAAW,EAAE,SAAS,EAAE,KAAK,EAAE,GAAG,EAAE,QAAQ,EAAE,GAAG,IAAI,EAAE,EAAE,gBAAgB,2CAuC5K"}
|
package/dist/glass.js
ADDED
|
@@ -0,0 +1,139 @@
|
|
|
1
|
+
'use client';
|
|
2
|
+
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
3
|
+
// Liquid glass. The refraction is an SVG filter used as a backdrop-filter:
|
|
4
|
+
// a displacement map that is neutral (50 % grey) in the body and ramps at the
|
|
5
|
+
// rim, so the backdrop bends inward at the edges like light through a thick
|
|
6
|
+
// lens; three displacements at slightly different scales split the colour at
|
|
7
|
+
// the rim (chromatic aberration), then a little frost and saturation.
|
|
8
|
+
// Only Chromium applies url() filters in backdrop-filter, so the root gets
|
|
9
|
+
// data-ns-liquid="refract" there; everywhere else the CSS falls back to blur
|
|
10
|
+
// plus the specular layers, and to the opaque solid under reduced
|
|
11
|
+
// transparency, in forced colours, and without backdrop-filter.
|
|
12
|
+
import { useEffect, useId, useRef, useState } from 'react';
|
|
13
|
+
import { cx, mergeRefs } from './internal/util.js';
|
|
14
|
+
/** Mirrors `material.liquid.*` in @northstar-js/tokens (checked by a test). */
|
|
15
|
+
export const LIQUID = {
|
|
16
|
+
scale: { sm: 14, md: 28, lg: 44 },
|
|
17
|
+
bevel: 0.16,
|
|
18
|
+
aberration: 2,
|
|
19
|
+
frost: 0.6,
|
|
20
|
+
/** Mirrors `radius.glass.*`: tight corners for precision, never fully round. */
|
|
21
|
+
radius: { panel: 10, bar: 10, control: 7, inner: 6 },
|
|
22
|
+
};
|
|
23
|
+
/**
|
|
24
|
+
* The displacement map as an SVG data URI. Red carries x, green carries y;
|
|
25
|
+
* each ramps from 1 to 0.5 across the rim and stays at 0.5 (no movement) in
|
|
26
|
+
* the body. With `w`/`h` the rim is in true pixels; without, it is a fraction
|
|
27
|
+
* of a stretched 100 × 100 box, which is close enough for small controls.
|
|
28
|
+
*/
|
|
29
|
+
export function displacementMap(w = 100, h = 100, bevel = LIQUID.bevel, radius = 0) {
|
|
30
|
+
const b = Math.max(1, Math.min(w, h) * bevel);
|
|
31
|
+
const fx = Math.min(0.5, b / w);
|
|
32
|
+
const fy = Math.min(0.5, b / h);
|
|
33
|
+
const r = Math.min(radius, Math.min(w, h) / 2);
|
|
34
|
+
const svg = `<svg xmlns="http://www.w3.org/2000/svg" width="${w}" height="${h}" viewBox="0 0 ${w} ${h}" preserveAspectRatio="none">` +
|
|
35
|
+
`<defs><linearGradient id="x" x2="1"><stop offset="0" stop-color="#f00"/><stop offset="${fx}" stop-color="#800000"/><stop offset="${1 - fx}" stop-color="#800000"/><stop offset="1" stop-color="#000"/></linearGradient>` +
|
|
36
|
+
`<linearGradient id="y" x2="0" y2="1"><stop offset="0" stop-color="#0f0"/><stop offset="${fy}" stop-color="#008000"/><stop offset="${1 - fy}" stop-color="#008000"/><stop offset="1" stop-color="#000"/></linearGradient>` +
|
|
37
|
+
`<filter id="s"><feGaussianBlur stdDeviation="${(b / 3).toFixed(1)}"/></filter></defs>` +
|
|
38
|
+
`<rect width="${w}" height="${h}" fill="url(#x)"/><rect width="${w}" height="${h}" fill="url(#y)" style="mix-blend-mode:screen"/>` +
|
|
39
|
+
`<rect x="${b}" y="${b}" width="${Math.max(0, w - 2 * b)}" height="${Math.max(0, h - 2 * b)}" rx="${Math.max(0, r - b)}" fill="#808000" filter="url(#s)"/></svg>`;
|
|
40
|
+
return `data:image/svg+xml;utf8,${encodeURIComponent(svg)}`;
|
|
41
|
+
}
|
|
42
|
+
function channel(name) {
|
|
43
|
+
const m = { R: '1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0', G: '0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 1 0', B: '0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 1 0' };
|
|
44
|
+
return m[name];
|
|
45
|
+
}
|
|
46
|
+
/** One refraction filter. Shared presets use a stretched map; LiquidGlass with a numeric scale renders its own, measured. */
|
|
47
|
+
export function LiquidFilter({ id, scale, map, aberration = LIQUID.aberration, frost = LIQUID.frost, width, height }) {
|
|
48
|
+
const box = width && height ? { x: 0, y: 0, width, height, filterUnits: 'userSpaceOnUse' } : { x: '0%', y: '0%', width: '100%', height: '100%' };
|
|
49
|
+
const img = width && height ? { width, height } : { width: '100%', height: '100%' };
|
|
50
|
+
return (_jsxs("filter", { id: id, ...box, colorInterpolationFilters: "sRGB", children: [_jsx("feImage", { href: map, x: "0", y: "0", ...img, preserveAspectRatio: "none", result: "map" }), ['R', 'G', 'B'].map((c, i) => (_jsx("feDisplacementMap", { in: "SourceGraphic", in2: "map", scale: scale + (i - 1) * aberration * -1, xChannelSelector: "R", yChannelSelector: "G", result: `d${c}` }, c))), ['R', 'G', 'B'].map((c) => (_jsx("feColorMatrix", { in: `d${c}`, type: "matrix", values: channel(c), result: `c${c}` }, c))), _jsx("feBlend", { in: "cR", in2: "cG", mode: "screen", result: "rg" }), _jsx("feBlend", { in: "rg", in2: "cB", mode: "screen", result: "rgb" }), _jsx("feGaussianBlur", { in: "rgb", stdDeviation: frost, result: "frost" }), _jsx("feColorMatrix", { in: "frost", type: "saturate", values: "1.5" })] }));
|
|
51
|
+
}
|
|
52
|
+
let defsUsers = 0;
|
|
53
|
+
let defsHost = null;
|
|
54
|
+
function supportsRefraction() {
|
|
55
|
+
if (typeof navigator === 'undefined' || typeof CSS === 'undefined' || !CSS.supports?.('backdrop-filter', 'url(#a)'))
|
|
56
|
+
return false;
|
|
57
|
+
const brands = navigator.userAgentData?.brands;
|
|
58
|
+
if (brands)
|
|
59
|
+
return brands.some((b) => /Chromium|Chrome|Edge/.test(b.brand));
|
|
60
|
+
return /Chrome\/|Chromium\/|Edg\//.test(navigator.userAgent) && !/Firefox\//.test(navigator.userAgent);
|
|
61
|
+
}
|
|
62
|
+
/**
|
|
63
|
+
* The shared filter defs (`#ns-liquid-sm|md|lg`), inserted once into
|
|
64
|
+
* document.body however many providers mount, and removed with the last one.
|
|
65
|
+
* Also marks <html data-ns-liquid="refract"> where refraction is supported.
|
|
66
|
+
*/
|
|
67
|
+
export function useLiquidDefs(enabled = true) {
|
|
68
|
+
useEffect(() => {
|
|
69
|
+
if (!enabled || typeof document === 'undefined')
|
|
70
|
+
return;
|
|
71
|
+
defsUsers++;
|
|
72
|
+
if (!defsHost) {
|
|
73
|
+
const ns = 'http://www.w3.org/2000/svg';
|
|
74
|
+
const svg = document.createElementNS(ns, 'svg');
|
|
75
|
+
svg.setAttribute('aria-hidden', 'true');
|
|
76
|
+
svg.setAttribute('focusable', 'false');
|
|
77
|
+
svg.setAttribute('width', '0');
|
|
78
|
+
svg.setAttribute('height', '0');
|
|
79
|
+
svg.setAttribute('style', 'position:absolute;width:0;height:0;overflow:hidden;pointer-events:none');
|
|
80
|
+
svg.setAttribute('data-ns-liquid-defs', '');
|
|
81
|
+
const map = displacementMap();
|
|
82
|
+
const parts = Object.keys(LIQUID.scale).map((size) => {
|
|
83
|
+
const s = LIQUID.scale[size];
|
|
84
|
+
const ch = ['R', 'G', 'B']
|
|
85
|
+
.map((c, i) => `<feDisplacementMap in="SourceGraphic" in2="map" scale="${s - (i - 1) * LIQUID.aberration}" xChannelSelector="R" yChannelSelector="G" result="d${c}"/><feColorMatrix in="d${c}" type="matrix" values="${channel(c)}" result="c${c}"/>`)
|
|
86
|
+
.join('');
|
|
87
|
+
return `<filter id="ns-liquid-${size}" x="0%" y="0%" width="100%" height="100%" color-interpolation-filters="sRGB"><feImage href="${map}" x="0" y="0" width="100%" height="100%" preserveAspectRatio="none" result="map"/>${ch}<feBlend in="cR" in2="cG" mode="screen" result="rg"/><feBlend in="rg" in2="cB" mode="screen" result="rgb"/><feGaussianBlur in="rgb" stdDeviation="${LIQUID.frost}" result="f"/><feColorMatrix in="f" type="saturate" values="1.5"/></filter>`;
|
|
88
|
+
});
|
|
89
|
+
svg.innerHTML = `<defs>${parts.join('')}</defs>`;
|
|
90
|
+
document.body.appendChild(svg);
|
|
91
|
+
defsHost = svg;
|
|
92
|
+
if (supportsRefraction())
|
|
93
|
+
document.documentElement.setAttribute('data-ns-liquid', 'refract');
|
|
94
|
+
}
|
|
95
|
+
return () => {
|
|
96
|
+
defsUsers--;
|
|
97
|
+
if (defsUsers <= 0 && defsHost) {
|
|
98
|
+
defsHost.remove();
|
|
99
|
+
defsHost = null;
|
|
100
|
+
defsUsers = 0;
|
|
101
|
+
document.documentElement.removeAttribute('data-ns-liquid');
|
|
102
|
+
}
|
|
103
|
+
};
|
|
104
|
+
}, [enabled]);
|
|
105
|
+
}
|
|
106
|
+
/**
|
|
107
|
+
* Thin, refractive glass in the iOS 26 manner: the backdrop bends at the rim,
|
|
108
|
+
* a specular highlight sits on the top-left, a rim of light runs round the
|
|
109
|
+
* edge with an inner glow under it, and the body carries a faint glacier tint.
|
|
110
|
+
*/
|
|
111
|
+
export function LiquidGlass({ scale = 'md', radius = 'panel', floating = true, tint = 'subtle', as: Tag = 'div', className, style, ref, children, ...rest }) {
|
|
112
|
+
const custom = typeof scale === 'number';
|
|
113
|
+
const fid = `ns-lg-${useId().replace(/:/g, '')}`;
|
|
114
|
+
const node = useRef(null);
|
|
115
|
+
const [box, setBox] = useState(null);
|
|
116
|
+
useEffect(() => {
|
|
117
|
+
const el = node.current;
|
|
118
|
+
if (!custom || !el || typeof ResizeObserver === 'undefined')
|
|
119
|
+
return;
|
|
120
|
+
const ro = new ResizeObserver(() => {
|
|
121
|
+
const w = Math.round(el.offsetWidth);
|
|
122
|
+
const h = Math.round(el.offsetHeight);
|
|
123
|
+
setBox((b) => (b && b.w === w && b.h === h ? b : w > 0 && h > 0 ? { w, h } : b));
|
|
124
|
+
});
|
|
125
|
+
ro.observe(el);
|
|
126
|
+
return () => ro.disconnect();
|
|
127
|
+
}, [custom]);
|
|
128
|
+
const step = radius === 'pill' ? 'bar' : radius;
|
|
129
|
+
const r = typeof step === 'number' ? step : step === 'full' ? 9999 : LIQUID.radius[step];
|
|
130
|
+
const vars = {
|
|
131
|
+
'--ns-liquid-radius': typeof step === 'number' ? `${step}px` : step === 'full' ? '9999px' : `var(--ns-radius-glass-${step})`,
|
|
132
|
+
};
|
|
133
|
+
if (custom && box)
|
|
134
|
+
vars['--ns-liquid-filter'] = `url(#${fid})`;
|
|
135
|
+
return (_jsxs(Tag, { ...rest, ref: mergeRefs(ref, (el) => {
|
|
136
|
+
node.current = el;
|
|
137
|
+
}), className: cx('ns-liquid', !custom && `ns-liquid--${scale}`, floating && 'ns-liquid--floating', `ns-liquid--tint-${tint}`, className), style: { ...vars, ...style }, children: [custom && box && (_jsx("svg", { className: "ns-liquid__defs", "aria-hidden": "true", focusable: "false", width: "0", height: "0", children: _jsx(LiquidFilter, { id: fid, scale: scale, map: displacementMap(box.w, box.h, LIQUID.bevel, r), width: box.w, height: box.h }) })), children] }));
|
|
138
|
+
}
|
|
139
|
+
//# sourceMappingURL=glass.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"glass.js","sourceRoot":"","sources":["../src/glass.tsx"],"names":[],"mappings":"AAAA,YAAY,CAAC;;AACb,2EAA2E;AAC3E,8EAA8E;AAC9E,4EAA4E;AAC5E,6EAA6E;AAC7E,sEAAsE;AACtE,2EAA2E;AAC3E,6EAA6E;AAC7E,kEAAkE;AAClE,gEAAgE;AAChE,OAAO,EAAE,SAAS,EAAE,KAAK,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,OAAO,CAAC;AAC3D,OAAO,EAAE,EAAE,EAAE,SAAS,EAAE,MAAM,oBAAoB,CAAC;AAEnD,+EAA+E;AAC/E,MAAM,CAAC,MAAM,MAAM,GAAG;IACpB,KAAK,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE;IACjC,KAAK,EAAE,IAAI;IACX,UAAU,EAAE,CAAC;IACb,KAAK,EAAE,GAAG;IACV,gFAAgF;IAChF,MAAM,EAAE,EAAE,KAAK,EAAE,EAAE,EAAE,GAAG,EAAE,EAAE,EAAE,OAAO,EAAE,CAAC,EAAE,KAAK,EAAE,CAAC,EAAE;CAC5C,CAAC;AAKX;;;;;GAKG;AACH,MAAM,UAAU,eAAe,CAAC,CAAC,GAAG,GAAG,EAAE,CAAC,GAAG,GAAG,EAAE,QAAgB,MAAM,CAAC,KAAK,EAAE,MAAM,GAAG,CAAC;IACxF,MAAM,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,KAAK,CAAC,CAAC;IAC9C,MAAM,EAAE,GAAG,IAAI,CAAC,GAAG,CAAC,GAAG,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC;IAChC,MAAM,EAAE,GAAG,IAAI,CAAC,GAAG,CAAC,GAAG,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC;IAChC,MAAM,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,MAAM,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;IAC/C,MAAM,GAAG,GACP,kDAAkD,CAAC,aAAa,CAAC,kBAAkB,CAAC,IAAI,CAAC,+BAA+B;QACxH,yFAAyF,EAAE,yCAAyC,CAAC,GAAG,EAAE,+EAA+E;QACzN,0FAA0F,EAAE,yCAAyC,CAAC,GAAG,EAAE,+EAA+E;QAC1N,gDAAgD,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,qBAAqB;QACvF,gBAAgB,CAAC,aAAa,CAAC,kCAAkC,CAAC,aAAa,CAAC,kDAAkD;QAClI,YAAY,CAAC,QAAQ,CAAC,YAAY,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,aAAa,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,SAAS,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,2CAA2C,CAAC;IACpK,OAAO,2BAA2B,kBAAkB,CAAC,GAAG,CAAC,EAAE,CAAC;AAC9D,CAAC;AAED,SAAS,OAAO,CAAC,IAAqB;IACpC,MAAM,CAAC,GAAG,EAAE,CAAC,EAAE,4CAA4C,EAAE,CAAC,EAAE,4CAA4C,EAAE,CAAC,EAAE,4CAA4C,EAAE,CAAC;IAChK,OAAO,CAAC,CAAC,IAAI,CAAC,CAAC;AACjB,CAAC;AAYD,6HAA6H;AAC7H,MAAM,UAAU,YAAY,CAAC,EAAE,EAAE,EAAE,KAAK,EAAE,GAAG,EAAE,UAAU,GAAG,MAAM,CAAC,UAAU,EAAE,KAAK,GAAG,MAAM,CAAC,KAAK,EAAE,KAAK,EAAE,MAAM,EAAe;IAC/H,MAAM,GAAG,GAAG,KAAK,IAAI,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,KAAK,EAAE,MAAM,EAAE,WAAW,EAAE,gBAAyB,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,IAAI,EAAE,CAAC,EAAE,IAAI,EAAE,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,CAAC;IAC1J,MAAM,GAAG,GAAG,KAAK,IAAI,MAAM,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,MAAM,EAAE,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,CAAC;IACpF,OAAO,CACL,kBAAQ,EAAE,EAAE,EAAE,KAAM,GAAG,EAAE,yBAAyB,EAAC,MAAM,aACvD,kBAAS,IAAI,EAAE,GAAG,EAAE,CAAC,EAAC,GAAG,EAAC,CAAC,EAAC,GAAG,KAAK,GAAG,EAAE,mBAAmB,EAAC,MAAM,EAAC,MAAM,EAAC,KAAK,GAAG,EACjF,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,CAAW,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CACxC,4BAA2B,EAAE,EAAC,eAAe,EAAC,GAAG,EAAC,KAAK,EAAC,KAAK,EAAE,KAAK,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,UAAU,GAAG,CAAC,CAAC,EAAE,gBAAgB,EAAC,GAAG,EAAC,gBAAgB,EAAC,GAAG,EAAC,MAAM,EAAE,IAAI,CAAC,EAAE,IAAnI,CAAC,CAAsI,CAChK,CAAC,EACA,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,CAAW,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CACrC,wBAAuB,EAAE,EAAE,IAAI,CAAC,EAAE,EAAE,IAAI,EAAC,QAAQ,EAAC,MAAM,EAAE,OAAO,CAAC,CAAC,CAAC,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,IAAjE,CAAC,CAAoE,CAC1F,CAAC,EACF,kBAAS,EAAE,EAAC,IAAI,EAAC,GAAG,EAAC,IAAI,EAAC,IAAI,EAAC,QAAQ,EAAC,MAAM,EAAC,IAAI,GAAG,EACtD,kBAAS,EAAE,EAAC,IAAI,EAAC,GAAG,EAAC,IAAI,EAAC,IAAI,EAAC,QAAQ,EAAC,MAAM,EAAC,KAAK,GAAG,EACvD,yBAAgB,EAAE,EAAC,KAAK,EAAC,YAAY,EAAE,KAAK,EAAE,MAAM,EAAC,OAAO,GAAG,EAC/D,wBAAe,EAAE,EAAC,OAAO,EAAC,IAAI,EAAC,UAAU,EAAC,MAAM,EAAC,KAAK,GAAG,IAClD,CACV,CAAC;AACJ,CAAC;AAED,IAAI,SAAS,GAAG,CAAC,CAAC;AAClB,IAAI,QAAQ,GAAuB,IAAI,CAAC;AAExC,SAAS,kBAAkB;IACzB,IAAI,OAAO,SAAS,KAAK,WAAW,IAAI,OAAO,GAAG,KAAK,WAAW,IAAI,CAAC,GAAG,CAAC,QAAQ,EAAE,CAAC,iBAAiB,EAAE,SAAS,CAAC;QAAE,OAAO,KAAK,CAAC;IAClI,MAAM,MAAM,GAAI,SAAmF,CAAC,aAAa,EAAE,MAAM,CAAC;IAC1H,IAAI,MAAM;QAAE,OAAO,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,sBAAsB,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC;IAC5E,OAAO,2BAA2B,CAAC,IAAI,CAAC,SAAS,CAAC,SAAS,CAAC,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,SAAS,CAAC,SAAS,CAAC,CAAC;AACzG,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,aAAa,CAAC,OAAO,GAAG,IAAI;IAC1C,SAAS,CAAC,GAAG,EAAE;QACb,IAAI,CAAC,OAAO,IAAI,OAAO,QAAQ,KAAK,WAAW;YAAE,OAAO;QACxD,SAAS,EAAE,CAAC;QACZ,IAAI,CAAC,QAAQ,EAAE,CAAC;YACd,MAAM,EAAE,GAAG,4BAA4B,CAAC;YACxC,MAAM,GAAG,GAAG,QAAQ,CAAC,eAAe,CAAC,EAAE,EAAE,KAAK,CAAC,CAAC;YAChD,GAAG,CAAC,YAAY,CAAC,aAAa,EAAE,MAAM,CAAC,CAAC;YACxC,GAAG,CAAC,YAAY,CAAC,WAAW,EAAE,OAAO,CAAC,CAAC;YACvC,GAAG,CAAC,YAAY,CAAC,OAAO,EAAE,GAAG,CAAC,CAAC;YAC/B,GAAG,CAAC,YAAY,CAAC,QAAQ,EAAE,GAAG,CAAC,CAAC;YAChC,GAAG,CAAC,YAAY,CAAC,OAAO,EAAE,wEAAwE,CAAC,CAAC;YACpG,GAAG,CAAC,YAAY,CAAC,qBAAqB,EAAE,EAAE,CAAC,CAAC;YAC5C,MAAM,GAAG,GAAG,eAAe,EAAE,CAAC;YAC9B,MAAM,KAAK,GAAI,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,KAAK,CAAkB,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE;gBACrE,MAAM,CAAC,GAAG,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;gBAC7B,MAAM,EAAE,GAAI,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,CAAW;qBAClC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,0DAA0D,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,MAAM,CAAC,UAAU,wDAAwD,CAAC,0BAA0B,CAAC,2BAA2B,OAAO,CAAC,CAAC,CAAC,cAAc,CAAC,KAAK,CAAC;qBACrP,IAAI,CAAC,EAAE,CAAC,CAAC;gBACZ,OAAO,yBAAyB,IAAI,gGAAgG,GAAG,qFAAqF,EAAE,qJAAqJ,MAAM,CAAC,KAAK,6EAA6E,CAAC;YAC/c,CAAC,CAAC,CAAC;YACH,GAAG,CAAC,SAAS,GAAG,SAAS,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,SAAS,CAAC;YACjD,QAAQ,CAAC,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC;YAC/B,QAAQ,GAAG,GAA6B,CAAC;YACzC,IAAI,kBAAkB,EAAE;gBAAE,QAAQ,CAAC,eAAe,CAAC,YAAY,CAAC,gBAAgB,EAAE,SAAS,CAAC,CAAC;QAC/F,CAAC;QACD,OAAO,GAAG,EAAE;YACV,SAAS,EAAE,CAAC;YACZ,IAAI,SAAS,IAAI,CAAC,IAAI,QAAQ,EAAE,CAAC;gBAC/B,QAAQ,CAAC,MAAM,EAAE,CAAC;gBAClB,QAAQ,GAAG,IAAI,CAAC;gBAChB,SAAS,GAAG,CAAC,CAAC;gBACd,QAAQ,CAAC,eAAe,CAAC,eAAe,CAAC,gBAAgB,CAAC,CAAC;YAC7D,CAAC;QACH,CAAC,CAAC;IACJ,CAAC,EAAE,CAAC,OAAO,CAAC,CAAC,CAAC;AAChB,CAAC;AAyBD;;;;GAIG;AACH,MAAM,UAAU,WAAW,CAAC,EAAE,KAAK,GAAG,IAAI,EAAE,MAAM,GAAG,OAAO,EAAE,QAAQ,GAAG,IAAI,EAAE,IAAI,GAAG,QAAQ,EAAE,EAAE,EAAE,GAAG,GAAG,KAAK,EAAE,SAAS,EAAE,KAAK,EAAE,GAAG,EAAE,QAAQ,EAAE,GAAG,IAAI,EAAoB;IAC3K,MAAM,MAAM,GAAG,OAAO,KAAK,KAAK,QAAQ,CAAC;IACzC,MAAM,GAAG,GAAG,SAAS,KAAK,EAAE,CAAC,OAAO,CAAC,IAAI,EAAE,EAAE,CAAC,EAAE,CAAC;IACjD,MAAM,IAAI,GAAG,MAAM,CAAqB,IAAI,CAAC,CAAC;IAC9C,MAAM,CAAC,GAAG,EAAE,MAAM,CAAC,GAAG,QAAQ,CAAkC,IAAI,CAAC,CAAC;IACtE,SAAS,CAAC,GAAG,EAAE;QACb,MAAM,EAAE,GAAG,IAAI,CAAC,OAAO,CAAC;QACxB,IAAI,CAAC,MAAM,IAAI,CAAC,EAAE,IAAI,OAAO,cAAc,KAAK,WAAW;YAAE,OAAO;QACpE,MAAM,EAAE,GAAG,IAAI,cAAc,CAAC,GAAG,EAAE;YACjC,MAAM,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,WAAW,CAAC,CAAC;YACrC,MAAM,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,YAAY,CAAC,CAAC;YACtC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;QACnF,CAAC,CAAC,CAAC;QACH,EAAE,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC;QACf,OAAO,GAAG,EAAE,CAAC,EAAE,CAAC,UAAU,EAAE,CAAC;IAC/B,CAAC,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC;IACb,MAAM,IAAI,GAAG,MAAM,KAAK,MAAM,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,CAAC;IAChD,MAAM,CAAC,GAAG,OAAO,IAAI,KAAK,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,KAAK,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;IACzF,MAAM,IAAI,GAA2B;QACnC,oBAAoB,EAAE,OAAO,IAAI,KAAK,QAAQ,CAAC,CAAC,CAAC,GAAG,IAAI,IAAI,CAAC,CAAC,CAAC,IAAI,KAAK,MAAM,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,yBAAyB,IAAI,GAAG;KAC7H,CAAC;IACF,IAAI,MAAM,IAAI,GAAG;QAAE,IAAI,CAAC,oBAAoB,CAAC,GAAG,QAAQ,GAAG,GAAG,CAAC;IAC/D,OAAO,CACL,MAAC,GAAG,OACG,IAA0C,EAC/C,GAAG,EAAE,SAAS,CAAC,GAAG,EAAE,CAAC,EAAsB,EAAE,EAAE;YAC7C,IAAI,CAAC,OAAO,GAAG,EAAE,CAAC;QACpB,CAAC,CAAqB,EACtB,SAAS,EAAE,EAAE,CAAC,WAAW,EAAE,CAAC,MAAM,IAAI,cAAc,KAAK,EAAE,EAAE,QAAQ,IAAI,qBAAqB,EAAE,mBAAmB,IAAI,EAAE,EAAE,SAAS,CAAC,EACrI,KAAK,EAAE,EAAE,GAAG,IAAI,EAAE,GAAG,KAAK,EAAyB,aAElD,MAAM,IAAI,GAAG,IAAI,CAChB,cAAK,SAAS,EAAC,iBAAiB,iBAAa,MAAM,EAAC,SAAS,EAAC,OAAO,EAAC,KAAK,EAAC,GAAG,EAAC,MAAM,EAAC,GAAG,YACxF,KAAC,YAAY,IAAC,EAAE,EAAE,GAAG,EAAE,KAAK,EAAE,KAAK,EAAE,GAAG,EAAE,eAAe,CAAC,GAAG,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,EAAE,MAAM,CAAC,KAAK,EAAE,CAAC,CAAC,EAAE,KAAK,EAAE,GAAG,CAAC,CAAC,EAAE,MAAM,EAAE,GAAG,CAAC,CAAC,GAAI,GACrH,CACP,EACA,QAAQ,IACL,CACP,CAAC;AACJ,CAAC"}
|