@polyxd/react 0.1.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 (63) hide show
  1. package/LICENSE +202 -0
  2. package/NOTICE +177 -0
  3. package/README.md +39 -0
  4. package/dist/components/avatar.d.ts +10 -0
  5. package/dist/components/avatar.js +47 -0
  6. package/dist/components/avatar.js.map +1 -0
  7. package/dist/components/chart.d.ts +5 -0
  8. package/dist/components/chart.js +98 -0
  9. package/dist/components/chart.js.map +1 -0
  10. package/dist/components/content.d.ts +23 -0
  11. package/dist/components/content.js +108 -0
  12. package/dist/components/content.js.map +1 -0
  13. package/dist/components/filter.d.ts +9 -0
  14. package/dist/components/filter.js +97 -0
  15. package/dist/components/filter.js.map +1 -0
  16. package/dist/components/flow.d.ts +22 -0
  17. package/dist/components/flow.js +143 -0
  18. package/dist/components/flow.js.map +1 -0
  19. package/dist/components/index.d.ts +10 -0
  20. package/dist/components/index.js +19 -0
  21. package/dist/components/index.js.map +1 -0
  22. package/dist/components/inputs.d.ts +38 -0
  23. package/dist/components/inputs.js +230 -0
  24. package/dist/components/inputs.js.map +1 -0
  25. package/dist/components/navigation.d.ts +8 -0
  26. package/dist/components/navigation.js +51 -0
  27. package/dist/components/navigation.js.map +1 -0
  28. package/dist/components/structure.d.ts +25 -0
  29. package/dist/components/structure.js +58 -0
  30. package/dist/components/structure.js.map +1 -0
  31. package/dist/components/table.d.ts +9 -0
  32. package/dist/components/table.js +144 -0
  33. package/dist/components/table.js.map +1 -0
  34. package/dist/context.d.ts +93 -0
  35. package/dist/context.js +42 -0
  36. package/dist/context.js.map +1 -0
  37. package/dist/data.d.ts +26 -0
  38. package/dist/data.js +52 -0
  39. package/dist/data.js.map +1 -0
  40. package/dist/format.d.ts +12 -0
  41. package/dist/format.js +51 -0
  42. package/dist/format.js.map +1 -0
  43. package/dist/index.d.ts +5 -0
  44. package/dist/index.js +6 -0
  45. package/dist/index.js.map +1 -0
  46. package/dist/surface.d.ts +37 -0
  47. package/dist/surface.js +80 -0
  48. package/dist/surface.js.map +1 -0
  49. package/package.json +53 -0
  50. package/src/styles.css +2182 -0
  51. package/themes/antd.css +300 -0
  52. package/themes/bootstrap.css +300 -0
  53. package/themes/carbon.css +310 -0
  54. package/themes/chakra.css +300 -0
  55. package/themes/fluent.css +300 -0
  56. package/themes/govuk.css +150 -0
  57. package/themes/mantine.css +300 -0
  58. package/themes/material3.css +300 -0
  59. package/themes/polaris.css +300 -0
  60. package/themes/primer.css +300 -0
  61. package/themes/radix.css +300 -0
  62. package/themes/shadcn.css +300 -0
  63. package/themes/spectrum.css +300 -0
@@ -0,0 +1,230 @@
1
+ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
+ import { useId, useState } from "react";
3
+ import { Checkbox, RadioGroup, Slider, Switch } from "radix-ui";
4
+ import { resolveFormat, useBindings, useSurface } from "../context.js";
5
+ import { asList, absolute, childPointer, get } from "../data.js";
6
+ import { currencySymbol, formatValue } from "../format.js";
7
+ import { Render, useA11y } from "../surface.js";
8
+ import { Children } from "./structure.js";
9
+ import { Avatar, Icon } from "./avatar.js";
10
+ /**
11
+ * The required mark. It is aria-hidden on purpose: every control it appears on also carries the
12
+ * native `required` / `aria-required`, which is what a screen reader announces. The asterisk is
13
+ * for the eye, and a form that has one explains it once (see RequiredLegend).
14
+ */
15
+ const RequiredMark = () => (_jsx("span", { className: "pxd-required", "aria-hidden": "true", children: "*" }));
16
+ /** Label + help + control, with help associated to the control. */
17
+ function Field({ label, help, required, children, id, helpId }) {
18
+ return (_jsxs("div", { className: "pxd-field", children: [_jsxs("label", { className: "pxd-field-label", htmlFor: id, children: [label, required && _jsx(RequiredMark, {})] }), help && (_jsx("p", { className: "pxd-field-help", id: helpId, children: help })), children] }));
19
+ }
20
+ const INPUT_TYPE = { email: "email", phone: "tel", url: "url", search: "search", number: "text", currency: "text", text: "text" };
21
+ export function TextInput({ node }) {
22
+ const b = useBindings();
23
+ const s = useSurface();
24
+ const id = useId();
25
+ const helpId = useId();
26
+ const kind = node.kind ?? "text";
27
+ const raw = b.value(node.value);
28
+ const numeric = kind === "number" || kind === "currency";
29
+ const [draft, setDraft] = useState(null);
30
+ // While typing, show exactly what was typed; otherwise show the stored value (currency to 2 places).
31
+ const stored = raw === null || raw === undefined ? "" : kind === "currency" && typeof raw === "number" ? raw.toFixed(2) : String(raw);
32
+ const shown = draft ?? stored;
33
+ const v = node.validation ?? {};
34
+ const help = node.help !== undefined ? b.text(node.help) : undefined;
35
+ const common = {
36
+ id,
37
+ className: "pxd-input",
38
+ "aria-describedby": help ? helpId : undefined,
39
+ required: node.required,
40
+ autoComplete: node.autocomplete,
41
+ ...useA11y(node),
42
+ };
43
+ const onChange = (text) => {
44
+ if (!numeric)
45
+ return b.write(node.value, text);
46
+ setDraft(text);
47
+ const n = Number(text.replace(/[^\d.-]/g, ""));
48
+ b.write(node.value, text.trim() === "" || Number.isNaN(n) ? null : n);
49
+ };
50
+ const invalid = (e) => {
51
+ if (v.message)
52
+ e.currentTarget.setCustomValidity(b.text(v.message));
53
+ };
54
+ const clear = (e) => e.currentTarget.setCustomValidity("");
55
+ if (kind === "search") {
56
+ // A search field: icon and placeholder inside a pill; the label remains its accessible name.
57
+ const placeholder = node.placeholder !== undefined ? b.text(node.placeholder) : undefined;
58
+ return (_jsxs("div", { className: "pxd-search", children: [_jsx("label", { className: "pxd-sr-only", htmlFor: id, children: b.text(node.label) }), _jsx(Icon, { name: "search" }), _jsx("input", { ...common, className: "pxd-search-input", type: "search", placeholder: placeholder, value: shown, onChange: (e) => onChange(e.target.value) })] }));
59
+ }
60
+ if (node.size === "hero" && numeric) {
61
+ // The one number this surface is about: large, centred, currency symbol dimmed.
62
+ return (_jsxs("div", { className: "pxd-hero-field", children: [_jsx("label", { className: "pxd-hero-label", htmlFor: id, children: b.text(node.label) }), _jsxs("div", { className: "pxd-hero-input", children: [kind === "currency" && (_jsx("span", { className: "pxd-hero-symbol", "aria-hidden": "true", children: currencySymbol(b.text(node.currency) || "USD", s.locale) })), _jsx("input", { ...common, className: "pxd-hero-value", type: "text", inputMode: kind === "currency" ? "decimal" : "numeric", pattern: "-?[0-9]*[.,]?[0-9]*", placeholder: "0", size: Math.max(1, shown.length || 1), value: shown, onChange: (e) => onChange(e.target.value), onBlur: () => setDraft(null), onInvalid: invalid, onInput: clear })] }), help && (_jsx("p", { className: "pxd-field-help pxd-hero-help", id: helpId, children: help }))] }));
63
+ }
64
+ const control = kind === "multiline" ? (_jsx("textarea", { ...common, rows: 3, value: shown, maxLength: v.maxLength, minLength: v.minLength, onChange: (e) => onChange(e.target.value), onInvalid: invalid, onInput: clear })) : (_jsxs("div", { className: kind === "currency" ? "pxd-input-adorned" : undefined, children: [kind === "currency" && (_jsx("span", { className: "pxd-input-prefix", "aria-hidden": "true", children: currencySymbol(b.text(node.currency) || "USD", s.locale) })), _jsx("input", { ...common, type: INPUT_TYPE[kind] ?? "text", inputMode: kind === "currency" ? "decimal" : kind === "number" ? "numeric" : undefined, pattern: numeric ? "-?[0-9]*[.,]?[0-9]*" : undefined, value: shown, maxLength: v.maxLength, minLength: v.minLength, onChange: (e) => onChange(e.target.value), onBlur: () => setDraft(null), onInvalid: invalid, onInput: clear })] }));
65
+ return (_jsx(Field, { label: b.text(node.label), help: help, required: node.required, id: id, helpId: helpId, children: control }));
66
+ }
67
+ /** A Choice's options, from literal options or host data. */
68
+ export function optionsOf(node, data, scope, text) {
69
+ const o = node.options;
70
+ if (Array.isArray(o))
71
+ return o.map((x) => ({ value: x.value, label: text(x.label), description: x.description !== undefined ? text(x.description) : undefined }));
72
+ const pointer = absolute(o.path, scope);
73
+ const items = asList(get(data, pointer));
74
+ return items.map((_, i) => {
75
+ const p = { pointer: childPointer(pointer, i) };
76
+ const at = (path) => (path ? get(data, absolute(path, p)) : undefined);
77
+ return {
78
+ value: at(o.valuePath),
79
+ label: String(at(o.labelPath) ?? ""),
80
+ description: o.descriptionPath ? String(at(o.descriptionPath) ?? "") || undefined : undefined,
81
+ avatar: o.avatarPath || o.imagePath ? at(o.avatarPath ?? o.imagePath) ?? "" : undefined,
82
+ recent: o.recentPath ? Boolean(at(o.recentPath)) : false,
83
+ };
84
+ });
85
+ }
86
+ function useOptions(node) {
87
+ const b = useBindings();
88
+ const s = useSurface();
89
+ return optionsOf(node, s.data, b.scope, b.text);
90
+ }
91
+ /** An option's visible label (its accessible name) and optional description (its accessible description). */
92
+ function OptionText({ id, label, description }) {
93
+ return (_jsxs("div", { className: "pxd-option-text", children: [_jsx("label", { htmlFor: id, children: label }), description && (_jsx("span", { className: "pxd-option-description", id: `${id}-desc`, children: description }))] }));
94
+ }
95
+ /**
96
+ * Choice picks its control from the options' number and shape (see the Choice rendering rules):
97
+ * people or things with faces → a picker (recent row, then a list); ≤ 6 short options → chips;
98
+ * otherwise radios or checkboxes, searchable past 10.
99
+ */
100
+ export function Choice({ node }) {
101
+ const b = useBindings();
102
+ const labelId = useId();
103
+ const helpId = useId();
104
+ const options = useOptions(node);
105
+ const [query, setQuery] = useState("");
106
+ const multiple = node.mode === "multiple";
107
+ const value = b.value(node.value);
108
+ const key = (v) => JSON.stringify(v);
109
+ const help = node.help !== undefined ? b.text(node.help) : undefined;
110
+ const withFaces = options.some((o) => o.avatar !== undefined);
111
+ const searchable = options.length > 10 || (withFaces && options.length > 6);
112
+ const matches = (o) => !query || `${o.label} ${o.description ?? ""}`.toLowerCase().includes(query.toLowerCase());
113
+ const chips = !withFaces && options.length <= 6 && options.every((o) => o.label.length <= 24 && !o.description);
114
+ const a11y = useA11y(node);
115
+ const label = b.text(node.label);
116
+ const heading = (_jsxs("div", { className: "pxd-field-label", id: labelId, children: [label, node.required && _jsx(RequiredMark, {})] }));
117
+ const search = searchable && (_jsxs("div", { className: "pxd-search pxd-search-compact", children: [_jsx(Icon, { name: "search" }), _jsx("input", { type: "search", className: "pxd-search-input", placeholder: withFaces ? "Search by name" : "Filter options", "aria-label": `Search ${label}`, value: query, onChange: (e) => setQuery(e.target.value) })] }));
118
+ if (multiple) {
119
+ const selected = Array.isArray(value) ? value : [];
120
+ const isOn = (v) => selected.some((x) => key(x) === key(v));
121
+ const toggle = (v) => b.write(node.value, isOn(v) ? selected.filter((x) => key(x) !== key(v)) : [...selected, v]);
122
+ if (chips) {
123
+ return (_jsxs("div", { className: "pxd-field pxd-choice", role: "group", "aria-labelledby": labelId, "aria-describedby": help ? helpId : undefined, ...a11y, children: [heading, help && _jsx("p", { className: "pxd-field-help", id: helpId, children: help }), _jsx("div", { className: "pxd-chips", children: options.map((o) => (_jsxs(Checkbox.Root, { className: "pxd-chip", checked: isOn(o.value), onCheckedChange: () => toggle(o.value), children: [_jsx(Checkbox.Indicator, { className: "pxd-chip-check", children: _jsx(Icon, { name: "check", size: 18 }) }), o.label] }, key(o.value)))) })] }));
124
+ }
125
+ if (withFaces) {
126
+ // People are recognised by face and name, whether you pick one or several.
127
+ const recent = query ? [] : options.filter((o) => o.recent);
128
+ const rest = options.filter((o) => (query ? matches(o) : !o.recent));
129
+ return (_jsxs("fieldset", { className: "pxd-field pxd-choice pxd-people", "aria-describedby": help ? helpId : undefined, ...a11y, children: [_jsx("legend", { className: "pxd-field-label", id: labelId, children: label }), help && _jsx("p", { className: "pxd-field-help", id: helpId, children: help }), search, _jsxs("div", { className: "pxd-people-group", children: [recent.length > 0 && (_jsx("div", { className: "pxd-people-recent", children: recent.map((o) => (_jsxs(Checkbox.Root, { className: "pxd-person-tile", checked: isOn(o.value), onCheckedChange: () => toggle(o.value), "aria-label": o.label, children: [_jsxs("span", { className: "pxd-person-face", children: [_jsx(Avatar, { value: o.avatar, name: o.label, size: 56 }), _jsx(Checkbox.Indicator, { className: "pxd-person-tick", children: _jsx(Icon, { name: "check", size: 14 }) })] }), _jsx("span", { className: "pxd-person-name", "aria-hidden": "true", children: o.label.split(" ")[0] })] }, key(o.value)))) })), _jsx("div", { className: "pxd-people-list", children: rest.map((o) => {
130
+ const cid = `${labelId}-${key(o.value)}`;
131
+ return (_jsxs(Checkbox.Root, { id: cid, className: "pxd-person-row", checked: isOn(o.value), onCheckedChange: () => toggle(o.value), "aria-labelledby": `${cid}-name`, "aria-describedby": o.description ? `${cid}-desc` : undefined, children: [_jsx(Avatar, { value: o.avatar, name: o.label }), _jsxs("span", { className: "pxd-person-text", children: [_jsx("span", { id: `${cid}-name`, children: o.label }), o.description && (_jsx("span", { className: "pxd-option-description", id: `${cid}-desc`, children: o.description }))] }), _jsx(Checkbox.Indicator, { className: "pxd-person-check", children: _jsx(Icon, { name: "check" }) })] }, key(o.value)));
132
+ }) })] })] }));
133
+ }
134
+ return (_jsxs("fieldset", { className: "pxd-field pxd-choice", "aria-describedby": help ? helpId : undefined, ...a11y, children: [_jsx("legend", { className: "pxd-field-label", id: labelId, children: label }), help && _jsx("p", { className: "pxd-field-help", id: helpId, children: help }), search, _jsx("div", { className: `pxd-choice-list${searchable ? " pxd-choice-scroll" : ""}`, children: options.filter(matches).map((o) => {
135
+ const cid = `${labelId}-${key(o.value)}`;
136
+ return (_jsxs("div", { className: "pxd-choice-option", children: [o.avatar !== undefined && _jsx(Avatar, { value: o.avatar, name: o.label, size: 32 }), _jsx(Checkbox.Root, { id: cid, className: "pxd-checkbox", checked: isOn(o.value), onCheckedChange: () => toggle(o.value), "aria-describedby": o.description ? `${cid}-desc` : undefined, children: _jsx(Checkbox.Indicator, { className: "pxd-checkbox-indicator", children: "\u2713" }) }), _jsx(OptionText, { id: cid, label: o.label, description: o.description })] }, key(o.value)));
137
+ }) })] }));
138
+ }
139
+ const current = value === null || value === undefined ? "" : key(value);
140
+ const onValueChange = (k) => b.write(node.value, options.find((o) => key(o.value) === k)?.value);
141
+ if (chips) {
142
+ return (_jsxs("div", { className: "pxd-field pxd-choice", ...a11y, children: [heading, help && _jsx("p", { className: "pxd-field-help", id: helpId, children: help }), _jsx(RadioGroup.Root, { className: "pxd-chips", "aria-labelledby": labelId, "aria-describedby": help ? helpId : undefined, "aria-required": node.required || undefined, value: current, onValueChange: onValueChange, orientation: "horizontal", children: options.map((o) => (_jsxs(RadioGroup.Item, { value: key(o.value), className: "pxd-chip", children: [_jsx(RadioGroup.Indicator, { className: "pxd-chip-check", children: _jsx(Icon, { name: "check", size: 18 }) }), o.label] }, key(o.value)))) })] }));
143
+ }
144
+ if (withFaces) {
145
+ // People or places: recent ones as a row of faces, everyone else as a list. Each appears once,
146
+ // so no two controls share a name.
147
+ const recent = query ? [] : options.filter((o) => o.recent);
148
+ const rest = options.filter((o) => (query ? matches(o) : !o.recent));
149
+ return (_jsxs("div", { className: "pxd-field pxd-choice pxd-people", ...a11y, children: [heading, help && _jsx("p", { className: "pxd-field-help", id: helpId, children: help }), search, _jsxs(RadioGroup.Root, { "aria-labelledby": labelId, "aria-describedby": help ? helpId : undefined, "aria-required": node.required || undefined, value: current, onValueChange: onValueChange, className: "pxd-people-group", children: [recent.length > 0 && (_jsx("div", { className: "pxd-people-recent", role: "presentation", children: recent.map((o) => (_jsxs(RadioGroup.Item, { value: key(o.value), className: "pxd-person-tile", "aria-label": o.label, children: [_jsx(Avatar, { value: o.avatar, name: o.label, size: 56 }), _jsx("span", { className: "pxd-person-name", "aria-hidden": "true", children: o.label.split(" ")[0] })] }, key(o.value)))) })), _jsx("div", { className: "pxd-people-list", role: "presentation", children: rest.map((o) => {
150
+ const cid = `${labelId}-${key(o.value)}`;
151
+ return (_jsxs(RadioGroup.Item, { id: cid, value: key(o.value), className: "pxd-person-row", "aria-labelledby": `${cid}-name`, "aria-describedby": o.description ? `${cid}-desc` : undefined, children: [_jsx(Avatar, { value: o.avatar, name: o.label }), _jsxs("span", { className: "pxd-person-text", children: [_jsx("span", { id: `${cid}-name`, children: o.label }), o.description && (_jsx("span", { className: "pxd-option-description", id: `${cid}-desc`, children: o.description }))] }), _jsx(RadioGroup.Indicator, { className: "pxd-person-check", children: _jsx(Icon, { name: "check" }) })] }, key(o.value)));
152
+ }) })] })] }));
153
+ }
154
+ return (_jsxs("div", { className: "pxd-field pxd-choice", ...a11y, children: [heading, help && _jsx("p", { className: "pxd-field-help", id: helpId, children: help }), search, _jsx(RadioGroup.Root, { className: `pxd-choice-list${searchable ? " pxd-choice-scroll" : ""}`, "aria-labelledby": labelId, "aria-describedby": help ? helpId : undefined, "aria-required": node.required || undefined, value: current, onValueChange: onValueChange, orientation: "vertical", children: options.filter(matches).map((o) => {
155
+ const cid = `${labelId}-${key(o.value)}`;
156
+ return (_jsxs("div", { className: "pxd-choice-option", children: [_jsx(RadioGroup.Item, { id: cid, value: key(o.value), className: "pxd-radio", "aria-describedby": o.description ? `${cid}-desc` : undefined, children: _jsx(RadioGroup.Indicator, { className: "pxd-radio-indicator" }) }), _jsx(OptionText, { id: cid, label: o.label, description: o.description })] }, key(o.value)));
157
+ }) })] }));
158
+ }
159
+ /** With an action it's a switch that applies immediately; inside a form it's a checkbox. */
160
+ export function Toggle({ node }) {
161
+ const b = useBindings();
162
+ const s = useSurface();
163
+ const id = useId();
164
+ const descId = useId();
165
+ const checked = Boolean(b.value(node.value));
166
+ const description = node.description !== undefined ? b.text(node.description) : undefined;
167
+ const change = (next) => {
168
+ b.write(node.value, next);
169
+ if (node.action) {
170
+ // Dispatch with the new value applied, so context bound to it carries the change.
171
+ const ptr = b.pointer(node.value);
172
+ const context = Object.fromEntries(Object.entries(node.action.event.context ?? {}).map(([k, v]) => [k, v && typeof v === "object" && "path" in v && absolute(v.path, b.scope) === ptr ? next : b.value(v)]));
173
+ s.dispatch({ event: { name: node.action.event.name, context } }, { pointer: "" }, node.id);
174
+ }
175
+ };
176
+ const a11y = useA11y(node);
177
+ return (_jsxs("div", { className: "pxd-toggle", children: [node.action ? (_jsx(Switch.Root, { id: id, className: "pxd-switch", checked: checked, onCheckedChange: change, "aria-describedby": description ? descId : undefined, ...a11y, children: _jsx(Switch.Thumb, { className: "pxd-switch-thumb" }) })) : (_jsx(Checkbox.Root, { id: id, className: "pxd-checkbox", checked: checked, onCheckedChange: (c) => change(c === true), "aria-describedby": description ? descId : undefined, ...a11y, children: _jsx(Checkbox.Indicator, { className: "pxd-checkbox-indicator", children: "\u2713" }) })), _jsxs("div", { className: "pxd-toggle-text", children: [_jsx("label", { htmlFor: id, className: "pxd-toggle-label", children: b.text(node.label) }), description && (_jsx("p", { className: "pxd-field-help", id: descId, children: description }))] })] }));
178
+ }
179
+ const DATE_TYPE = { date: "date", time: "time", datetime: "datetime-local" };
180
+ /** Native date/time inputs: typing is always possible, and pickers are platform-native. */
181
+ export function DateInput({ node }) {
182
+ const b = useBindings();
183
+ const id = useId();
184
+ const helpId = useId();
185
+ const kind = node.kind ?? "date";
186
+ const help = node.help !== undefined ? b.text(node.help) : undefined;
187
+ const value = b.value(node.value);
188
+ const min = node.min !== undefined ? b.text(node.min) : undefined;
189
+ const max = node.max !== undefined ? b.text(node.max) : undefined;
190
+ const a11y = useA11y(node);
191
+ if (kind === "dateRange") {
192
+ const [start, end] = Array.isArray(value) ? value : [];
193
+ const setAt = (i, v) => {
194
+ const next = [start ?? null, end ?? null];
195
+ next[i] = v || null;
196
+ b.write(node.value, next);
197
+ };
198
+ return (_jsxs("fieldset", { className: "pxd-field", ...a11y, children: [_jsx("legend", { className: "pxd-field-label", children: b.text(node.label) }), help && _jsx("p", { className: "pxd-field-help", children: help }), _jsxs("div", { className: "pxd-date-range", children: [_jsxs("label", { children: ["From", _jsx("input", { className: "pxd-input", type: "date", value: start ?? "", min: min, max: max, required: node.required, onChange: (e) => setAt(0, e.target.value) })] }), _jsxs("label", { children: ["To", _jsx("input", { className: "pxd-input", type: "date", value: end ?? "", min: start ?? min, max: max, required: node.required, onChange: (e) => setAt(1, e.target.value) })] })] })] }));
199
+ }
200
+ return (_jsx(Field, { label: b.text(node.label), help: help, required: node.required, id: id, helpId: helpId, children: _jsx("input", { id: id, className: "pxd-input pxd-input-date", type: DATE_TYPE[kind], value: value ?? "", min: min, max: max, required: node.required, "aria-describedby": help ? helpId : undefined, onChange: (e) => b.write(node.value, e.target.value || null), ...a11y }) }));
201
+ }
202
+ export function RangeInput({ node }) {
203
+ const b = useBindings();
204
+ const s = useSurface();
205
+ const labelId = useId();
206
+ const minId = useId();
207
+ const maxId = useId();
208
+ const fmt = (n) => formatValue(n, resolveFormat(node.format ?? { type: "number" }, s.data, b.scope), s.locale);
209
+ const a11y = useA11y(node);
210
+ if (node.mode === "range") {
211
+ const raw = b.value(node.value);
212
+ const [lo, hi] = Array.isArray(raw) ? raw.map(Number) : [node.min, node.max];
213
+ const set = (a, c) => b.write(node.value, [Math.max(node.min, Math.min(a, c)), Math.min(node.max, Math.max(a, c))]);
214
+ return (_jsxs("div", { className: "pxd-field pxd-range", role: "group", "aria-labelledby": labelId, ...a11y, children: [_jsxs("div", { className: "pxd-range-header", children: [_jsx("span", { className: "pxd-field-label", id: labelId, children: b.text(node.label) }), _jsxs("output", { className: "pxd-range-value", "aria-live": "polite", children: [fmt(lo), " \u2013 ", fmt(hi)] })] }), _jsxs(Slider.Root, { className: "pxd-slider", min: node.min, max: node.max, step: node.step ?? 1, value: [lo, hi], minStepsBetweenThumbs: 1, onValueChange: ([a, c]) => set(a, c), children: [_jsx(Slider.Track, { className: "pxd-slider-track", children: _jsx(Slider.Range, { className: "pxd-slider-range" }) }), _jsx(Slider.Thumb, { className: "pxd-slider-thumb", "aria-label": "Minimum", "aria-valuetext": fmt(lo) }), _jsx(Slider.Thumb, { className: "pxd-slider-thumb", "aria-label": "Maximum", "aria-valuetext": fmt(hi) })] }), _jsxs("div", { className: "pxd-range-fields", children: [_jsxs("label", { htmlFor: minId, children: [_jsx("span", { children: "Minimum" }), _jsx("input", { id: minId, className: "pxd-input", inputMode: "numeric", value: lo, onChange: (e) => set(Number(e.target.value) || node.min, hi) })] }), _jsx("span", { "aria-hidden": "true", children: "\u2013" }), _jsxs("label", { htmlFor: maxId, children: [_jsx("span", { children: "Maximum" }), _jsx("input", { id: maxId, className: "pxd-input", inputMode: "numeric", value: hi, onChange: (e) => set(lo, Number(e.target.value) || node.max) })] })] })] }));
215
+ }
216
+ const value = Number(b.value(node.value) ?? node.min);
217
+ return (_jsxs("div", { className: "pxd-field pxd-range", ...a11y, children: [_jsxs("div", { className: "pxd-range-header", children: [_jsx("span", { className: "pxd-field-label", id: labelId, children: b.text(node.label) }), _jsx("output", { className: "pxd-range-value", "aria-live": "polite", children: fmt(value) })] }), _jsxs(Slider.Root, { className: "pxd-slider", min: node.min, max: node.max, step: node.step ?? 1, value: [value], onValueChange: ([v]) => b.write(node.value, v), children: [_jsx(Slider.Track, { className: "pxd-slider-track", children: _jsx(Slider.Range, { className: "pxd-slider-range" }) }), _jsx(Slider.Thumb, { className: "pxd-slider-thumb", "aria-labelledby": labelId, "aria-valuetext": fmt(value) })] }), _jsxs("div", { className: "pxd-range-bounds", "aria-hidden": "true", children: [_jsx("span", { children: fmt(node.min) }), _jsx("span", { children: fmt(node.max) })] })] }));
218
+ }
219
+ export function Form({ node }) {
220
+ const b = useBindings();
221
+ const s = useSurface();
222
+ // An asterisk has to say what it means, once, before the fields it marks.
223
+ const anyRequired = (node.children ?? []).some((id) => s.byId.get(id)?.required);
224
+ return (_jsxs("form", { className: `pxd-form${node.aside ? " pxd-form-with-aside" : ""}${node.layout === "horizontal" ? " pxd-form-horizontal" : ""}`, onSubmit: (e) => {
225
+ e.preventDefault();
226
+ s.dispatch(node.submit.action, b.scope, node.id);
227
+ }, ...useA11y(node), children: [node.aside && (_jsx("aside", { className: "pxd-form-aside", children: _jsx(Render, { id: node.aside }) })), _jsxs("div", { className: "pxd-stack pxd-form-fields", children: [anyRequired && (_jsxs("p", { className: "pxd-required-legend", children: [_jsx("span", { className: "pxd-required", "aria-hidden": "true", children: "*" }), " ", "Required"] })), _jsx(Children, { ids: node.children })] }), _jsxs("div", { className: "pxd-action-bar", children: [_jsx("button", { type: "submit", className: "pxd-button pxd-button-primary", children: b.text(node.submit.label) }), node.cancel && (_jsx("button", { type: "button", className: "pxd-button pxd-button-secondary", onClick: () => s.dispatch(node.cancel.action, b.scope, node.id), children: b.text(node.cancel.label) }))] })] }));
228
+ }
229
+ export { Render };
230
+ //# sourceMappingURL=inputs.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"inputs.js","sourceRoot":"","sources":["../../src/components/inputs.tsx"],"names":[],"mappings":";AAAA,OAAO,EAAE,KAAK,EAAE,QAAQ,EAAkB,MAAM,OAAO,CAAC;AACxD,OAAO,EAAE,QAAQ,EAAE,UAAU,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,UAAU,CAAC;AAChE,OAAO,EAAE,aAAa,EAAE,WAAW,EAAE,UAAU,EAAa,MAAM,eAAgB,CAAC;AACnF,OAAO,EAAE,MAAM,EAAE,QAAQ,EAAE,YAAY,EAAE,GAAG,EAAc,MAAM,YAAY,CAAC;AAC7E,OAAO,EAAE,cAAc,EAAE,WAAW,EAAE,MAAM,cAAc,CAAC;AAC3D,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,eAAgB,CAAC;AACjD,OAAO,EAAE,QAAQ,EAAE,MAAM,gBAAiB,CAAC;AAC3C,OAAO,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,aAAc,CAAC;AAE5C;;;;GAIG;AACH,MAAM,YAAY,GAAG,GAAG,EAAE,CAAC,CACzB,eAAM,SAAS,EAAC,cAAc,iBAAa,MAAM,kBAE1C,CACR,CAAC;AAEF,mEAAmE;AACnE,SAAS,KAAK,CAAC,EAAE,KAAK,EAAE,IAAI,EAAE,QAAQ,EAAE,QAAQ,EAAE,EAAE,EAAE,MAAM,EAA+G;IACzK,OAAO,CACL,eAAK,SAAS,EAAC,WAAW,aACxB,iBAAO,SAAS,EAAC,iBAAiB,EAAC,OAAO,EAAE,EAAE,aAC3C,KAAK,EACL,QAAQ,IAAI,KAAC,YAAY,KAAG,IACvB,EACP,IAAI,IAAI,CACP,YAAG,SAAS,EAAC,gBAAgB,EAAC,EAAE,EAAE,MAAM,YACrC,IAAI,GACH,CACL,EACA,QAAQ,IACL,CACP,CAAC;AACJ,CAAC;AAED,MAAM,UAAU,GAA2B,EAAE,KAAK,EAAE,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,GAAG,EAAE,KAAK,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC;AAE1J,MAAM,UAAU,SAAS,CAAC,EAAE,IAAI,EAAkB;IAChD,MAAM,CAAC,GAAG,WAAW,EAAE,CAAC;IACxB,MAAM,CAAC,GAAG,UAAU,EAAE,CAAC;IACvB,MAAM,EAAE,GAAG,KAAK,EAAE,CAAC;IACnB,MAAM,MAAM,GAAG,KAAK,EAAE,CAAC;IACvB,MAAM,IAAI,GAAG,IAAI,CAAC,IAAI,IAAI,MAAM,CAAC;IACjC,MAAM,GAAG,GAAG,CAAC,CAAC,KAAK,CAAU,IAAI,CAAC,KAAK,CAAC,CAAC;IACzC,MAAM,OAAO,GAAG,IAAI,KAAK,QAAQ,IAAI,IAAI,KAAK,UAAU,CAAC;IACzD,MAAM,CAAC,KAAK,EAAE,QAAQ,CAAC,GAAG,QAAQ,CAAgB,IAAI,CAAC,CAAC;IACxD,qGAAqG;IACrG,MAAM,MAAM,GAAG,GAAG,KAAK,IAAI,IAAI,GAAG,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,UAAU,IAAI,OAAO,GAAG,KAAK,QAAQ,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;IACtI,MAAM,KAAK,GAAG,KAAK,IAAI,MAAM,CAAC;IAC9B,MAAM,CAAC,GAAG,IAAI,CAAC,UAAU,IAAI,EAAE,CAAC;IAChC,MAAM,IAAI,GAAG,IAAI,CAAC,IAAI,KAAK,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;IACrE,MAAM,MAAM,GAAG;QACb,EAAE;QACF,SAAS,EAAE,WAAW;QACtB,kBAAkB,EAAE,IAAI,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,SAAS;QAC7C,QAAQ,EAAE,IAAI,CAAC,QAAQ;QACvB,YAAY,EAAE,IAAI,CAAC,YAAY;QAC/B,GAAG,OAAO,CAAC,IAAI,CAAC;KACjB,CAAC;IACF,MAAM,QAAQ,GAAG,CAAC,IAAY,EAAE,EAAE;QAChC,IAAI,CAAC,OAAO;YAAE,OAAO,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC;QAC/C,QAAQ,CAAC,IAAI,CAAC,CAAC;QACf,MAAM,CAAC,GAAG,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,UAAU,EAAE,EAAE,CAAC,CAAC,CAAC;QAC/C,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,EAAE,IAAI,CAAC,IAAI,EAAE,KAAK,EAAE,IAAI,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;IACxE,CAAC,CAAC;IACF,MAAM,OAAO,GAAG,CAAC,CAAoD,EAAE,EAAE;QACvE,IAAI,CAAC,CAAC,OAAO;YAAG,CAAC,CAAC,aAAkC,CAAC,iBAAiB,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC;IAC5F,CAAC,CAAC;IACF,MAAM,KAAK,GAAG,CAAC,CAAoD,EAAE,EAAE,CAAE,CAAC,CAAC,aAAkC,CAAC,iBAAiB,CAAC,EAAE,CAAC,CAAC;IAEpI,IAAI,IAAI,KAAK,QAAQ,EAAE,CAAC;QACtB,6FAA6F;QAC7F,MAAM,WAAW,GAAG,IAAI,CAAC,WAAW,KAAK,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;QAC1F,OAAO,CACL,eAAK,SAAS,EAAC,YAAY,aACzB,gBAAO,SAAS,EAAC,aAAa,EAAC,OAAO,EAAE,EAAE,YACvC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,GACb,EACR,KAAC,IAAI,IAAC,IAAI,EAAC,QAAQ,GAAG,EACtB,mBAAW,MAAM,EAAE,SAAS,EAAC,kBAAkB,EAAC,IAAI,EAAC,QAAQ,EAAC,WAAW,EAAE,WAAW,EAAE,KAAK,EAAE,KAAK,EAAE,QAAQ,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,QAAQ,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,GAAI,IAC/I,CACP,CAAC;IACJ,CAAC;IAED,IAAI,IAAI,CAAC,IAAI,KAAK,MAAM,IAAI,OAAO,EAAE,CAAC;QACpC,gFAAgF;QAChF,OAAO,CACL,eAAK,SAAS,EAAC,gBAAgB,aAC7B,gBAAO,SAAS,EAAC,gBAAgB,EAAC,OAAO,EAAE,EAAE,YAC1C,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,GACb,EACR,eAAK,SAAS,EAAC,gBAAgB,aAC5B,IAAI,KAAK,UAAU,IAAI,CACtB,eAAM,SAAS,EAAC,iBAAiB,iBAAa,MAAM,YACjD,cAAc,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,IAAI,KAAK,EAAE,CAAC,CAAC,MAAM,CAAC,GACpD,CACR,EACD,mBACM,MAAM,EACV,SAAS,EAAC,gBAAgB,EAC1B,IAAI,EAAC,MAAM,EACX,SAAS,EAAE,IAAI,KAAK,UAAU,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,SAAS,EACtD,OAAO,EAAC,qBAAqB,EAC7B,WAAW,EAAC,GAAG,EACf,IAAI,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,KAAK,CAAC,MAAM,IAAI,CAAC,CAAC,EACpC,KAAK,EAAE,KAAK,EACZ,QAAQ,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,QAAQ,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,EACzC,MAAM,EAAE,GAAG,EAAE,CAAC,QAAQ,CAAC,IAAI,CAAC,EAC5B,SAAS,EAAE,OAAO,EAClB,OAAO,EAAE,KAAK,GACd,IACE,EACL,IAAI,IAAI,CACP,YAAG,SAAS,EAAC,8BAA8B,EAAC,EAAE,EAAE,MAAM,YACnD,IAAI,GACH,CACL,IACG,CACP,CAAC;IACJ,CAAC;IAED,MAAM,OAAO,GACX,IAAI,KAAK,WAAW,CAAC,CAAC,CAAC,CACrB,sBAAc,MAAM,EAAE,IAAI,EAAE,CAAC,EAAE,KAAK,EAAE,KAAK,EAAE,SAAS,EAAE,CAAC,CAAC,SAAS,EAAE,SAAS,EAAE,CAAC,CAAC,SAAS,EAAE,QAAQ,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,QAAQ,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,SAAS,EAAE,OAAO,EAAE,OAAO,EAAE,KAAK,GAAI,CAC/K,CAAC,CAAC,CAAC,CACF,eAAK,SAAS,EAAE,IAAI,KAAK,UAAU,CAAC,CAAC,CAAC,mBAAmB,CAAC,CAAC,CAAC,SAAS,aAClE,IAAI,KAAK,UAAU,IAAI,CACtB,eAAM,SAAS,EAAC,kBAAkB,iBAAa,MAAM,YAClD,cAAc,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,IAAI,KAAK,EAAE,CAAC,CAAC,MAAM,CAAC,GACpD,CACR,EACD,mBACM,MAAM,EACV,IAAI,EAAE,UAAU,CAAC,IAAI,CAAC,IAAI,MAAM,EAChC,SAAS,EAAE,IAAI,KAAK,UAAU,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,IAAI,KAAK,QAAQ,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,SAAS,EACtF,OAAO,EAAE,OAAO,CAAC,CAAC,CAAC,qBAAqB,CAAC,CAAC,CAAC,SAAS,EACpD,KAAK,EAAE,KAAK,EACZ,SAAS,EAAE,CAAC,CAAC,SAAS,EACtB,SAAS,EAAE,CAAC,CAAC,SAAS,EACtB,QAAQ,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,QAAQ,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,EACzC,MAAM,EAAE,GAAG,EAAE,CAAC,QAAQ,CAAC,IAAI,CAAC,EAC5B,SAAS,EAAE,OAAO,EAClB,OAAO,EAAE,KAAK,GACd,IACE,CACP,CAAC;IACJ,OAAO,CACL,KAAC,KAAK,IAAC,KAAK,EAAE,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,IAAI,EAAE,IAAI,EAAE,QAAQ,EAAE,IAAI,CAAC,QAAQ,EAAE,EAAE,EAAE,EAAE,EAAE,MAAM,EAAE,MAAM,YAC1F,OAAO,GACF,CACT,CAAC;AACJ,CAAC;AAUD,6DAA6D;AAC7D,MAAM,UAAU,SAAS,CAAC,IAAU,EAAE,IAAa,EAAE,KAAY,EAAE,IAA4B;IAC7F,MAAM,CAAC,GAAG,IAAI,CAAC,OAAO,CAAC;IACvB,IAAI,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC;QAAE,OAAO,CAAC,CAAC,GAAG,CAAC,CAAC,CAAM,EAAE,EAAE,CAAC,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,KAAK,EAAE,KAAK,EAAE,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,EAAE,WAAW,EAAE,CAAC,CAAC,WAAW,KAAK,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,SAAS,EAAE,CAAC,CAAC,CAAC;IACvK,MAAM,OAAO,GAAG,QAAQ,CAAC,CAAC,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;IACxC,MAAM,KAAK,GAAG,MAAM,CAAC,GAAG,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC,CAAC;IACzC,OAAO,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE;QACxB,MAAM,CAAC,GAAG,EAAE,OAAO,EAAE,YAAY,CAAC,OAAO,EAAE,CAAC,CAAC,EAAE,CAAC;QAChD,MAAM,EAAE,GAAG,CAAC,IAAa,EAAE,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,GAAG,CAAC,IAAI,EAAE,QAAQ,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC;QAChF,OAAO;YACL,KAAK,EAAE,EAAE,CAAC,CAAC,CAAC,SAAS,CAAW;YAChC,KAAK,EAAE,MAAM,CAAC,EAAE,CAAC,CAAC,CAAC,SAAS,CAAC,IAAI,EAAE,CAAC;YACpC,WAAW,EAAE,CAAC,CAAC,eAAe,CAAC,CAAC,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,CAAC,eAAe,CAAC,IAAI,EAAE,CAAC,IAAI,SAAS,CAAC,CAAC,CAAC,SAAS;YAC7F,MAAM,EAAE,CAAC,CAAC,UAAU,IAAI,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,UAAU,IAAI,CAAC,CAAC,SAAS,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,SAAS;YACvF,MAAM,EAAE,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK;SACzD,CAAC;IACJ,CAAC,CAAC,CAAC;AACL,CAAC;AAED,SAAS,UAAU,CAAC,IAAU;IAC5B,MAAM,CAAC,GAAG,WAAW,EAAE,CAAC;IACxB,MAAM,CAAC,GAAG,UAAU,EAAE,CAAC;IACvB,OAAO,SAAS,CAAC,IAAI,EAAE,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,KAAK,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC;AAClD,CAAC;AAED,6GAA6G;AAC7G,SAAS,UAAU,CAAC,EAAE,EAAE,EAAE,KAAK,EAAE,WAAW,EAAuD;IACjG,OAAO,CACL,eAAK,SAAS,EAAC,iBAAiB,aAC9B,gBAAO,OAAO,EAAE,EAAE,YAAG,KAAK,GAAS,EAClC,WAAW,IAAI,CACd,eAAM,SAAS,EAAC,wBAAwB,EAAC,EAAE,EAAE,GAAG,EAAE,OAAO,YACtD,WAAW,GACP,CACR,IACG,CACP,CAAC;AACJ,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,MAAM,CAAC,EAAE,IAAI,EAAkB;IAC7C,MAAM,CAAC,GAAG,WAAW,EAAE,CAAC;IACxB,MAAM,OAAO,GAAG,KAAK,EAAE,CAAC;IACxB,MAAM,MAAM,GAAG,KAAK,EAAE,CAAC;IACvB,MAAM,OAAO,GAAG,UAAU,CAAC,IAAI,CAAC,CAAC;IACjC,MAAM,CAAC,KAAK,EAAE,QAAQ,CAAC,GAAG,QAAQ,CAAC,EAAE,CAAC,CAAC;IACvC,MAAM,QAAQ,GAAG,IAAI,CAAC,IAAI,KAAK,UAAU,CAAC;IAC1C,MAAM,KAAK,GAAG,CAAC,CAAC,KAAK,CAAU,IAAI,CAAC,KAAK,CAAC,CAAC;IAC3C,MAAM,GAAG,GAAG,CAAC,CAAU,EAAE,EAAE,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC;IAC9C,MAAM,IAAI,GAAG,IAAI,CAAC,IAAI,KAAK,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;IACrE,MAAM,SAAS,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,MAAM,KAAK,SAAS,CAAC,CAAC;IAC9D,MAAM,UAAU,GAAG,OAAO,CAAC,MAAM,GAAG,EAAE,IAAI,CAAC,SAAS,IAAI,OAAO,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;IAC5E,MAAM,OAAO,GAAG,CAAC,CAAS,EAAE,EAAE,CAAC,CAAC,KAAK,IAAI,GAAG,CAAC,CAAC,KAAK,IAAI,CAAC,CAAC,WAAW,IAAI,EAAE,EAAE,CAAC,WAAW,EAAE,CAAC,QAAQ,CAAC,KAAK,CAAC,WAAW,EAAE,CAAC,CAAC;IACzH,MAAM,KAAK,GAAG,CAAC,SAAS,IAAI,OAAO,CAAC,MAAM,IAAI,CAAC,IAAI,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC,MAAM,IAAI,EAAE,IAAI,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC;IAChH,MAAM,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAC3B,MAAM,KAAK,GAAG,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;IACjC,MAAM,OAAO,GAAG,CACd,eAAK,SAAS,EAAC,iBAAiB,EAAC,EAAE,EAAE,OAAO,aACzC,KAAK,EACL,IAAI,CAAC,QAAQ,IAAI,KAAC,YAAY,KAAG,IAC9B,CACP,CAAC;IACF,MAAM,MAAM,GAAG,UAAU,IAAI,CAC3B,eAAK,SAAS,EAAC,+BAA+B,aAC5C,KAAC,IAAI,IAAC,IAAI,EAAC,QAAQ,GAAG,EACtB,gBAAO,IAAI,EAAC,QAAQ,EAAC,SAAS,EAAC,kBAAkB,EAAC,WAAW,EAAE,SAAS,CAAC,CAAC,CAAC,gBAAgB,CAAC,CAAC,CAAC,gBAAgB,gBAAc,UAAU,KAAK,EAAE,EAAE,KAAK,EAAE,KAAK,EAAE,QAAQ,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,QAAQ,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,GAAI,IACtM,CACP,CAAC;IAEF,IAAI,QAAQ,EAAE,CAAC;QACb,MAAM,QAAQ,GAAG,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,CAAC;QACnD,MAAM,IAAI,GAAG,CAAC,CAAU,EAAE,EAAE,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,KAAK,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;QACrE,MAAM,MAAM,GAAG,CAAC,CAAU,EAAE,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,KAAK,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,QAAQ,EAAE,CAAC,CAAC,CAAC,CAAC;QAC3H,IAAI,KAAK,EAAE,CAAC;YACV,OAAO,CACL,eAAK,SAAS,EAAC,sBAAsB,EAAC,IAAI,EAAC,OAAO,qBAAkB,OAAO,sBAAoB,IAAI,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,SAAS,KAAM,IAAI,aAC/H,OAAO,EACP,IAAI,IAAI,YAAG,SAAS,EAAC,gBAAgB,EAAC,EAAE,EAAE,MAAM,YAAG,IAAI,GAAK,EAC7D,cAAK,SAAS,EAAC,WAAW,YACvB,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAClB,MAAC,QAAQ,CAAC,IAAI,IAAoB,SAAS,EAAC,UAAU,EAAC,OAAO,EAAE,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,EAAE,eAAe,EAAE,GAAG,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,CAAC,aACnH,KAAC,QAAQ,CAAC,SAAS,IAAC,SAAS,EAAC,gBAAgB,YAC5C,KAAC,IAAI,IAAC,IAAI,EAAC,OAAO,EAAC,IAAI,EAAE,EAAE,GAAI,GACZ,EACpB,CAAC,CAAC,KAAK,KAJU,GAAG,CAAC,CAAC,CAAC,KAAK,CAAC,CAKhB,CACjB,CAAC,GACE,IACF,CACP,CAAC;QACJ,CAAC;QACD,IAAI,SAAS,EAAE,CAAC;YACd,2EAA2E;YAC3E,MAAM,MAAM,GAAG,KAAK,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC;YAC5D,MAAM,IAAI,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC;YACrE,OAAO,CACL,oBAAU,SAAS,EAAC,iCAAiC,sBAAmB,IAAI,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,SAAS,KAAM,IAAI,aACzG,iBAAQ,SAAS,EAAC,iBAAiB,EAAC,EAAE,EAAE,OAAO,YAC5C,KAAK,GACC,EACR,IAAI,IAAI,YAAG,SAAS,EAAC,gBAAgB,EAAC,EAAE,EAAE,MAAM,YAAG,IAAI,GAAK,EAC5D,MAAM,EACP,eAAK,SAAS,EAAC,kBAAkB,aAC9B,MAAM,CAAC,MAAM,GAAG,CAAC,IAAI,CACpB,cAAK,SAAS,EAAC,mBAAmB,YAC/B,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CACjB,MAAC,QAAQ,CAAC,IAAI,IAAoB,SAAS,EAAC,iBAAiB,EAAC,OAAO,EAAE,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,EAAE,eAAe,EAAE,GAAG,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,CAAC,gBAAc,CAAC,CAAC,KAAK,aAC/I,gBAAM,SAAS,EAAC,iBAAiB,aAC/B,KAAC,MAAM,IAAC,KAAK,EAAE,CAAC,CAAC,MAAM,EAAE,IAAI,EAAE,CAAC,CAAC,KAAK,EAAE,IAAI,EAAE,EAAE,GAAI,EACpD,KAAC,QAAQ,CAAC,SAAS,IAAC,SAAS,EAAC,iBAAiB,YAC7C,KAAC,IAAI,IAAC,IAAI,EAAC,OAAO,EAAC,IAAI,EAAE,EAAE,GAAI,GACZ,IAChB,EACP,eAAM,SAAS,EAAC,iBAAiB,iBAAa,MAAM,YACjD,CAAC,CAAC,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GACjB,KATW,GAAG,CAAC,CAAC,CAAC,KAAK,CAAC,CAUhB,CACjB,CAAC,GACE,CACP,EACD,cAAK,SAAS,EAAC,iBAAiB,YAC7B,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE;oCACd,MAAM,GAAG,GAAG,GAAG,OAAO,IAAI,GAAG,CAAC,CAAC,CAAC,KAAK,CAAC,EAAE,CAAC;oCACzC,OAAO,CACL,MAAC,QAAQ,CAAC,IAAI,IAEZ,EAAE,EAAE,GAAG,EACP,SAAS,EAAC,gBAAgB,EAC1B,OAAO,EAAE,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,EACtB,eAAe,EAAE,GAAG,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,CAAC,qBACrB,GAAG,GAAG,OAAO,sBACZ,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,GAAG,GAAG,OAAO,CAAC,CAAC,CAAC,SAAS,aAE3D,KAAC,MAAM,IAAC,KAAK,EAAE,CAAC,CAAC,MAAM,EAAE,IAAI,EAAE,CAAC,CAAC,KAAK,GAAI,EAC1C,gBAAM,SAAS,EAAC,iBAAiB,aAC/B,eAAM,EAAE,EAAE,GAAG,GAAG,OAAO,YAAG,CAAC,CAAC,KAAK,GAAQ,EACxC,CAAC,CAAC,WAAW,IAAI,CAChB,eAAM,SAAS,EAAC,wBAAwB,EAAC,EAAE,EAAE,GAAG,GAAG,OAAO,YACvD,CAAC,CAAC,WAAW,GACT,CACR,IACI,EACP,KAAC,QAAQ,CAAC,SAAS,IAAC,SAAS,EAAC,kBAAkB,YAC9C,KAAC,IAAI,IAAC,IAAI,EAAC,OAAO,GAAG,GACF,KAnBhB,GAAG,CAAC,CAAC,CAAC,KAAK,CAAC,CAoBH,CACjB,CAAC;gCACJ,CAAC,CAAC,GACE,IACF,IACG,CACZ,CAAC;QACJ,CAAC;QACD,OAAO,CACL,oBAAU,SAAS,EAAC,sBAAsB,sBAAmB,IAAI,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,SAAS,KAAM,IAAI,aAC9F,iBAAQ,SAAS,EAAC,iBAAiB,EAAC,EAAE,EAAE,OAAO,YAC5C,KAAK,GACC,EACR,IAAI,IAAI,YAAG,SAAS,EAAC,gBAAgB,EAAC,EAAE,EAAE,MAAM,YAAG,IAAI,GAAK,EAC5D,MAAM,EACP,cAAK,SAAS,EAAE,kBAAkB,UAAU,CAAC,CAAC,CAAC,oBAAoB,CAAC,CAAC,CAAC,EAAE,EAAE,YACvE,OAAO,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE;wBACjC,MAAM,GAAG,GAAG,GAAG,OAAO,IAAI,GAAG,CAAC,CAAC,CAAC,KAAK,CAAC,EAAE,CAAC;wBACzC,OAAO,CACL,eAAK,SAAS,EAAC,mBAAmB,aAC/B,CAAC,CAAC,MAAM,KAAK,SAAS,IAAI,KAAC,MAAM,IAAC,KAAK,EAAE,CAAC,CAAC,MAAM,EAAE,IAAI,EAAE,CAAC,CAAC,KAAK,EAAE,IAAI,EAAE,EAAE,GAAI,EAC/E,KAAC,QAAQ,CAAC,IAAI,IACZ,EAAE,EAAE,GAAG,EACP,SAAS,EAAC,cAAc,EACxB,OAAO,EAAE,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,EACtB,eAAe,EAAE,GAAG,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,CAAC,sBACpB,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,GAAG,GAAG,OAAO,CAAC,CAAC,CAAC,SAAS,YAE3D,KAAC,QAAQ,CAAC,SAAS,IAAC,SAAS,EAAC,wBAAwB,uBAAuB,GAC/D,EAChB,KAAC,UAAU,IAAC,EAAE,EAAE,GAAG,EAAE,KAAK,EAAE,CAAC,CAAC,KAAK,EAAE,WAAW,EAAE,CAAC,CAAC,WAAW,GAAI,KAX7B,GAAG,CAAC,CAAC,CAAC,KAAK,CAAC,CAY9C,CACP,CAAC;oBACJ,CAAC,CAAC,GACE,IACG,CACZ,CAAC;IACJ,CAAC;IAED,MAAM,OAAO,GAAG,KAAK,KAAK,IAAI,IAAI,KAAK,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;IACxE,MAAM,aAAa,GAAG,CAAC,CAAS,EAAE,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,EAAE,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC;IAEzG,IAAI,KAAK,EAAE,CAAC;QACV,OAAO,CACL,eAAK,SAAS,EAAC,sBAAsB,KAAK,IAAI,aAC3C,OAAO,EACP,IAAI,IAAI,YAAG,SAAS,EAAC,gBAAgB,EAAC,EAAE,EAAE,MAAM,YAAG,IAAI,GAAK,EAC7D,KAAC,UAAU,CAAC,IAAI,IAAC,SAAS,EAAC,WAAW,qBAAkB,OAAO,sBAAoB,IAAI,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,SAAS,mBAAiB,IAAI,CAAC,QAAQ,IAAI,SAAS,EAAE,KAAK,EAAE,OAAO,EAAE,aAAa,EAAE,aAAa,EAAE,WAAW,EAAC,YAAY,YAC5N,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAClB,MAAC,UAAU,CAAC,IAAI,IAAoB,KAAK,EAAE,GAAG,CAAC,CAAC,CAAC,KAAK,CAAC,EAAE,SAAS,EAAC,UAAU,aAC3E,KAAC,UAAU,CAAC,SAAS,IAAC,SAAS,EAAC,gBAAgB,YAC9C,KAAC,IAAI,IAAC,IAAI,EAAC,OAAO,EAAC,IAAI,EAAE,EAAE,GAAI,GACV,EACtB,CAAC,CAAC,KAAK,KAJY,GAAG,CAAC,CAAC,CAAC,KAAK,CAAC,CAKhB,CACnB,CAAC,GACc,IACd,CACP,CAAC;IACJ,CAAC;IAED,IAAI,SAAS,EAAE,CAAC;QACd,+FAA+F;QAC/F,mCAAmC;QACnC,MAAM,MAAM,GAAG,KAAK,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC;QAC5D,MAAM,IAAI,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC;QACrE,OAAO,CACL,eAAK,SAAS,EAAC,iCAAiC,KAAK,IAAI,aACtD,OAAO,EACP,IAAI,IAAI,YAAG,SAAS,EAAC,gBAAgB,EAAC,EAAE,EAAE,MAAM,YAAG,IAAI,GAAK,EAC5D,MAAM,EACP,MAAC,UAAU,CAAC,IAAI,uBAAkB,OAAO,sBAAoB,IAAI,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,SAAS,mBAAiB,IAAI,CAAC,QAAQ,IAAI,SAAS,EAAE,KAAK,EAAE,OAAO,EAAE,aAAa,EAAE,aAAa,EAAE,SAAS,EAAC,kBAAkB,aAC1M,MAAM,CAAC,MAAM,GAAG,CAAC,IAAI,CACpB,cAAK,SAAS,EAAC,mBAAmB,EAAC,IAAI,EAAC,cAAc,YACnD,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CACjB,MAAC,UAAU,CAAC,IAAI,IAAoB,KAAK,EAAE,GAAG,CAAC,CAAC,CAAC,KAAK,CAAC,EAAE,SAAS,EAAC,iBAAiB,gBAAa,CAAC,CAAC,KAAK,aACtG,KAAC,MAAM,IAAC,KAAK,EAAE,CAAC,CAAC,MAAM,EAAE,IAAI,EAAE,CAAC,CAAC,KAAK,EAAE,IAAI,EAAE,EAAE,GAAI,EACpD,eAAM,SAAS,EAAC,iBAAiB,iBAAa,MAAM,YACjD,CAAC,CAAC,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GACjB,KAJa,GAAG,CAAC,CAAC,CAAC,KAAK,CAAC,CAKhB,CACnB,CAAC,GACE,CACP,EACD,cAAK,SAAS,EAAC,iBAAiB,EAAC,IAAI,EAAC,cAAc,YACjD,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE;gCACd,MAAM,GAAG,GAAG,GAAG,OAAO,IAAI,GAAG,CAAC,CAAC,CAAC,KAAK,CAAC,EAAE,CAAC;gCACzC,OAAO,CACL,MAAC,UAAU,CAAC,IAAI,IAAoB,EAAE,EAAE,GAAG,EAAE,KAAK,EAAE,GAAG,CAAC,CAAC,CAAC,KAAK,CAAC,EAAE,SAAS,EAAC,gBAAgB,qBAAkB,GAAG,GAAG,OAAO,sBAAoB,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,GAAG,GAAG,OAAO,CAAC,CAAC,CAAC,SAAS,aACtL,KAAC,MAAM,IAAC,KAAK,EAAE,CAAC,CAAC,MAAM,EAAE,IAAI,EAAE,CAAC,CAAC,KAAK,GAAI,EAC1C,gBAAM,SAAS,EAAC,iBAAiB,aAC/B,eAAM,EAAE,EAAE,GAAG,GAAG,OAAO,YAAG,CAAC,CAAC,KAAK,GAAQ,EACxC,CAAC,CAAC,WAAW,IAAI,CAChB,eAAM,SAAS,EAAC,wBAAwB,EAAC,EAAE,EAAE,GAAG,GAAG,OAAO,YACvD,CAAC,CAAC,WAAW,GACT,CACR,IACI,EACP,KAAC,UAAU,CAAC,SAAS,IAAC,SAAS,EAAC,kBAAkB,YAChD,KAAC,IAAI,IAAC,IAAI,EAAC,OAAO,GAAG,GACA,KAZH,GAAG,CAAC,CAAC,CAAC,KAAK,CAAC,CAahB,CACnB,CAAC;4BACJ,CAAC,CAAC,GACE,IACU,IACd,CACP,CAAC;IACJ,CAAC;IAED,OAAO,CACL,eAAK,SAAS,EAAC,sBAAsB,KAAK,IAAI,aAC3C,OAAO,EACP,IAAI,IAAI,YAAG,SAAS,EAAC,gBAAgB,EAAC,EAAE,EAAE,MAAM,YAAG,IAAI,GAAK,EAC5D,MAAM,EACP,KAAC,UAAU,CAAC,IAAI,IACd,SAAS,EAAE,kBAAkB,UAAU,CAAC,CAAC,CAAC,oBAAoB,CAAC,CAAC,CAAC,EAAE,EAAE,qBACpD,OAAO,sBACN,IAAI,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,SAAS,mBAC5B,IAAI,CAAC,QAAQ,IAAI,SAAS,EACzC,KAAK,EAAE,OAAO,EACd,aAAa,EAAE,aAAa,EAC5B,WAAW,EAAC,UAAU,YAErB,OAAO,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE;oBACjC,MAAM,GAAG,GAAG,GAAG,OAAO,IAAI,GAAG,CAAC,CAAC,CAAC,KAAK,CAAC,EAAE,CAAC;oBACzC,OAAO,CACL,eAAK,SAAS,EAAC,mBAAmB,aAChC,KAAC,UAAU,CAAC,IAAI,IAAC,EAAE,EAAE,GAAG,EAAE,KAAK,EAAE,GAAG,CAAC,CAAC,CAAC,KAAK,CAAC,EAAE,SAAS,EAAC,WAAW,sBAAmB,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,GAAG,GAAG,OAAO,CAAC,CAAC,CAAC,SAAS,YAC9H,KAAC,UAAU,CAAC,SAAS,IAAC,SAAS,EAAC,qBAAqB,GAAG,GACxC,EAClB,KAAC,UAAU,IAAC,EAAE,EAAE,GAAG,EAAE,KAAK,EAAE,CAAC,CAAC,KAAK,EAAE,WAAW,EAAE,CAAC,CAAC,WAAW,GAAI,KAJ7B,GAAG,CAAC,CAAC,CAAC,KAAK,CAAC,CAK9C,CACP,CAAC;gBACJ,CAAC,CAAC,GACc,IACd,CACP,CAAC;AACJ,CAAC;AAED,4FAA4F;AAC5F,MAAM,UAAU,MAAM,CAAC,EAAE,IAAI,EAAkB;IAC7C,MAAM,CAAC,GAAG,WAAW,EAAE,CAAC;IACxB,MAAM,CAAC,GAAG,UAAU,EAAE,CAAC;IACvB,MAAM,EAAE,GAAG,KAAK,EAAE,CAAC;IACnB,MAAM,MAAM,GAAG,KAAK,EAAE,CAAC;IACvB,MAAM,OAAO,GAAG,OAAO,CAAC,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC;IAC7C,MAAM,WAAW,GAAG,IAAI,CAAC,WAAW,KAAK,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;IAC1F,MAAM,MAAM,GAAG,CAAC,IAAa,EAAE,EAAE;QAC/B,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC;QAC1B,IAAI,IAAI,CAAC,MAAM,EAAE,CAAC;YAChB,kFAAkF;YAClF,MAAM,GAAG,GAAG,CAAC,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;YAClC,MAAM,OAAO,GAAG,MAAM,CAAC,WAAW,CAChC,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,OAAO,IAAI,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAgB,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,OAAO,CAAC,KAAK,QAAQ,IAAI,MAAM,IAAI,CAAC,IAAI,QAAQ,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,KAAK,CAAC,KAAK,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CACxL,CAAC;YACF,CAAC,CAAC,QAAQ,CAAC,EAAE,KAAK,EAAE,EAAE,IAAI,EAAE,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,IAAI,EAAE,OAAO,EAAE,EAAE,EAAE,EAAE,OAAO,EAAE,EAAE,EAAE,EAAE,IAAI,CAAC,EAAE,CAAC,CAAC;QAC7F,CAAC;IACH,CAAC,CAAC;IACF,MAAM,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAC3B,OAAO,CACL,eAAK,SAAS,EAAC,YAAY,aACxB,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,CACb,KAAC,MAAM,CAAC,IAAI,IAAC,EAAE,EAAE,EAAE,EAAE,SAAS,EAAC,YAAY,EAAC,OAAO,EAAE,OAAO,EAAE,eAAe,EAAE,MAAM,sBAAoB,WAAW,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,SAAS,KAAM,IAAI,YACjJ,KAAC,MAAM,CAAC,KAAK,IAAC,SAAS,EAAC,kBAAkB,GAAG,GACjC,CACf,CAAC,CAAC,CAAC,CACF,KAAC,QAAQ,CAAC,IAAI,IAAC,EAAE,EAAE,EAAE,EAAE,SAAS,EAAC,cAAc,EAAC,OAAO,EAAE,OAAO,EAAE,eAAe,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,MAAM,CAAC,CAAC,KAAK,IAAI,CAAC,sBAAoB,WAAW,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,SAAS,KAAM,IAAI,YACxK,KAAC,QAAQ,CAAC,SAAS,IAAC,SAAS,EAAC,wBAAwB,uBAAuB,GAC/D,CACjB,EACD,eAAK,SAAS,EAAC,iBAAiB,aAC9B,gBAAO,OAAO,EAAE,EAAE,EAAE,SAAS,EAAC,kBAAkB,YAC7C,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,GACb,EACP,WAAW,IAAI,CACd,YAAG,SAAS,EAAC,gBAAgB,EAAC,EAAE,EAAE,MAAM,YACrC,WAAW,GACV,CACL,IACG,IACF,CACP,CAAC;AACJ,CAAC;AAED,MAAM,SAAS,GAA2B,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,QAAQ,EAAE,gBAAgB,EAAE,CAAC;AAErG,2FAA2F;AAC3F,MAAM,UAAU,SAAS,CAAC,EAAE,IAAI,EAAkB;IAChD,MAAM,CAAC,GAAG,WAAW,EAAE,CAAC;IACxB,MAAM,EAAE,GAAG,KAAK,EAAE,CAAC;IACnB,MAAM,MAAM,GAAG,KAAK,EAAE,CAAC;IACvB,MAAM,IAAI,GAAG,IAAI,CAAC,IAAI,IAAI,MAAM,CAAC;IACjC,MAAM,IAAI,GAAG,IAAI,CAAC,IAAI,KAAK,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;IACrE,MAAM,KAAK,GAAG,CAAC,CAAC,KAAK,CAAU,IAAI,CAAC,KAAK,CAAC,CAAC;IAC3C,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,KAAK,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;IAClE,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,KAAK,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;IAClE,MAAM,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAC3B,IAAI,IAAI,KAAK,WAAW,EAAE,CAAC;QACzB,MAAM,CAAC,KAAK,EAAE,GAAG,CAAC,GAAG,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,CAAC;QACvD,MAAM,KAAK,GAAG,CAAC,CAAS,EAAE,CAAS,EAAE,EAAE;YACrC,MAAM,IAAI,GAAG,CAAC,KAAK,IAAI,IAAI,EAAE,GAAG,IAAI,IAAI,CAAC,CAAC;YAC1C,IAAI,CAAC,CAAC,CAAC,GAAG,CAAC,IAAI,IAAI,CAAC;YACpB,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC;QAC5B,CAAC,CAAC;QACF,OAAO,CACL,oBAAU,SAAS,EAAC,WAAW,KAAK,IAAI,aACtC,iBAAQ,SAAS,EAAC,iBAAiB,YAAE,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,GAAU,EAChE,IAAI,IAAI,YAAG,SAAS,EAAC,gBAAgB,YAAE,IAAI,GAAK,EACjD,eAAK,SAAS,EAAC,gBAAgB,aAC7B,oCAEE,gBAAO,SAAS,EAAC,WAAW,EAAC,IAAI,EAAC,MAAM,EAAC,KAAK,EAAE,KAAK,IAAI,EAAE,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,QAAQ,EAAE,IAAI,CAAC,QAAQ,EAAE,QAAQ,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,GAAI,IACjJ,EACR,kCAEE,gBAAO,SAAS,EAAC,WAAW,EAAC,IAAI,EAAC,MAAM,EAAC,KAAK,EAAE,GAAG,IAAI,EAAE,EAAE,GAAG,EAAE,KAAK,IAAI,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,QAAQ,EAAE,IAAI,CAAC,QAAQ,EAAE,QAAQ,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,GAAI,IACxJ,IACJ,IACG,CACZ,CAAC;IACJ,CAAC;IACD,OAAO,CACL,KAAC,KAAK,IAAC,KAAK,EAAE,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,IAAI,EAAE,IAAI,EAAE,QAAQ,EAAE,IAAI,CAAC,QAAQ,EAAE,EAAE,EAAE,EAAE,EAAE,MAAM,EAAE,MAAM,YAC3F,gBACE,EAAE,EAAE,EAAE,EACN,SAAS,EAAC,0BAA0B,EACpC,IAAI,EAAE,SAAS,CAAC,IAAI,CAAC,EACrB,KAAK,EAAG,KAAgB,IAAI,EAAE,EAC9B,GAAG,EAAE,GAAG,EACR,GAAG,EAAE,GAAG,EACR,QAAQ,EAAE,IAAI,CAAC,QAAQ,sBACL,IAAI,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,SAAS,EAC3C,QAAQ,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,EAAE,CAAC,CAAC,MAAM,CAAC,KAAK,IAAI,IAAI,CAAC,KACxD,IAAI,GACR,GACI,CACT,CAAC;AACJ,CAAC;AAED,MAAM,UAAU,UAAU,CAAC,EAAE,IAAI,EAAkB;IACjD,MAAM,CAAC,GAAG,WAAW,EAAE,CAAC;IACxB,MAAM,CAAC,GAAG,UAAU,EAAE,CAAC;IACvB,MAAM,OAAO,GAAG,KAAK,EAAE,CAAC;IACxB,MAAM,KAAK,GAAG,KAAK,EAAE,CAAC;IACtB,MAAM,KAAK,GAAG,KAAK,EAAE,CAAC;IACtB,MAAM,GAAG,GAAG,CAAC,CAAS,EAAE,EAAE,CAAC,WAAW,CAAC,CAAC,EAAE,aAAa,CAAC,IAAI,CAAC,MAAM,IAAI,EAAE,IAAI,EAAE,QAAQ,EAAE,EAAE,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC;IACvH,MAAM,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAC3B,IAAI,IAAI,CAAC,IAAI,KAAK,OAAO,EAAE,CAAC;QAC1B,MAAM,GAAG,GAAG,CAAC,CAAC,KAAK,CAAU,IAAI,CAAC,KAAK,CAAC,CAAC;QACzC,MAAM,CAAC,EAAE,EAAE,EAAE,CAAC,GAAG,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC;QAC7E,MAAM,GAAG,GAAG,CAAC,CAAS,EAAE,CAAS,EAAE,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,EAAE,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;QACpI,OAAO,CACL,eAAK,SAAS,EAAC,qBAAqB,EAAC,IAAI,EAAC,OAAO,qBAAkB,OAAO,KAAM,IAAI,aAClF,eAAK,SAAS,EAAC,kBAAkB,aAC/B,eAAM,SAAS,EAAC,iBAAiB,EAAC,EAAE,EAAE,OAAO,YAC1C,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,GACd,EACP,kBAAQ,SAAS,EAAC,iBAAiB,eAAW,QAAQ,aACnD,GAAG,CAAC,EAAE,CAAC,cAAK,GAAG,CAAC,EAAE,CAAC,IACb,IACL,EACN,MAAC,MAAM,CAAC,IAAI,IAAC,SAAS,EAAC,YAAY,EAAC,GAAG,EAAE,IAAI,CAAC,GAAG,EAAE,GAAG,EAAE,IAAI,CAAC,GAAG,EAAE,IAAI,EAAE,IAAI,CAAC,IAAI,IAAI,CAAC,EAAE,KAAK,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,qBAAqB,EAAE,CAAC,EAAE,aAAa,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,aACrK,KAAC,MAAM,CAAC,KAAK,IAAC,SAAS,EAAC,kBAAkB,YACxC,KAAC,MAAM,CAAC,KAAK,IAAC,SAAS,EAAC,kBAAkB,GAAG,GAChC,EACf,KAAC,MAAM,CAAC,KAAK,IAAC,SAAS,EAAC,kBAAkB,gBAAY,SAAS,oBAAiB,GAAG,CAAC,EAAE,CAAC,GAAI,EAC3F,KAAC,MAAM,CAAC,KAAK,IAAC,SAAS,EAAC,kBAAkB,gBAAY,SAAS,oBAAiB,GAAG,CAAC,EAAE,CAAC,GAAI,IAC/E,EACd,eAAK,SAAS,EAAC,kBAAkB,aAC/B,iBAAO,OAAO,EAAE,KAAK,aACnB,qCAAoB,EACpB,gBAAO,EAAE,EAAE,KAAK,EAAE,SAAS,EAAC,WAAW,EAAC,SAAS,EAAC,SAAS,EAAC,KAAK,EAAE,EAAE,EAAE,QAAQ,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,IAAI,IAAI,CAAC,GAAG,EAAE,EAAE,CAAC,GAAI,IACjI,EACR,8BAAkB,MAAM,uBAAS,EACjC,iBAAO,OAAO,EAAE,KAAK,aACnB,qCAAoB,EACpB,gBAAO,EAAE,EAAE,KAAK,EAAE,SAAS,EAAC,WAAW,EAAC,SAAS,EAAC,SAAS,EAAC,KAAK,EAAE,EAAE,EAAE,QAAQ,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,GAAG,CAAC,EAAE,EAAE,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,IAAI,IAAI,CAAC,GAAG,CAAC,GAAI,IACjI,IACJ,IACF,CACP,CAAC;IACJ,CAAC;IACD,MAAM,KAAK,GAAG,MAAM,CAAC,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,IAAI,CAAC,GAAG,CAAC,CAAC;IACtD,OAAO,CACL,eAAK,SAAS,EAAC,qBAAqB,KAAK,IAAI,aAC3C,eAAK,SAAS,EAAC,kBAAkB,aAC/B,eAAM,SAAS,EAAC,iBAAiB,EAAC,EAAE,EAAE,OAAO,YAC1C,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,GACd,EACP,iBAAQ,SAAS,EAAC,iBAAiB,eAAW,QAAQ,YACnD,GAAG,CAAC,KAAK,CAAC,GACJ,IACL,EACN,MAAC,MAAM,CAAC,IAAI,IAAC,SAAS,EAAC,YAAY,EAAC,GAAG,EAAE,IAAI,CAAC,GAAG,EAAE,GAAG,EAAE,IAAI,CAAC,GAAG,EAAE,IAAI,EAAE,IAAI,CAAC,IAAI,IAAI,CAAC,EAAE,KAAK,EAAE,CAAC,KAAK,CAAC,EAAE,aAAa,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,EAAE,CAAC,CAAC,aACpJ,KAAC,MAAM,CAAC,KAAK,IAAC,SAAS,EAAC,kBAAkB,YACxC,KAAC,MAAM,CAAC,KAAK,IAAC,SAAS,EAAC,kBAAkB,GAAG,GAChC,EACf,KAAC,MAAM,CAAC,KAAK,IAAC,SAAS,EAAC,kBAAkB,qBAAkB,OAAO,oBAAkB,GAAG,CAAC,KAAK,CAAC,GAAI,IACvF,EACd,eAAK,SAAS,EAAC,kBAAkB,iBAAa,MAAM,aAClD,yBAAO,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,GAAQ,EAC5B,yBAAO,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,GAAQ,IACxB,IACF,CACP,CAAC;AACJ,CAAC;AAED,MAAM,UAAU,IAAI,CAAC,EAAE,IAAI,EAAkB;IAC3C,MAAM,CAAC,GAAG,WAAW,EAAE,CAAC;IACxB,MAAM,CAAC,GAAG,UAAU,EAAE,CAAC;IACvB,0EAA0E;IAC1E,MAAM,WAAW,GAAG,CAAC,IAAI,CAAC,QAAQ,IAAI,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,EAAU,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,QAAQ,CAAC,CAAC;IACzF,OAAO,CACL,gBACE,SAAS,EAAE,WAAW,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,sBAAsB,CAAC,CAAC,CAAC,EAAE,GAAG,IAAI,CAAC,MAAM,KAAK,YAAY,CAAC,CAAC,CAAC,sBAAsB,CAAC,CAAC,CAAC,EAAE,EAAE,EAC7H,QAAQ,EAAE,CAAC,CAAC,EAAE,EAAE;YACd,CAAC,CAAC,cAAc,EAAE,CAAC;YACnB,CAAC,CAAC,QAAQ,CAAC,IAAI,CAAC,MAAM,CAAC,MAAM,EAAE,CAAC,CAAC,KAAK,EAAE,IAAI,CAAC,EAAE,CAAC,CAAC;QACnD,CAAC,KACG,OAAO,CAAC,IAAI,CAAC,aAEhB,IAAI,CAAC,KAAK,IAAI,CACb,gBAAO,SAAS,EAAC,gBAAgB,YAC/B,KAAC,MAAM,IAAC,EAAE,EAAE,IAAI,CAAC,KAAK,GAAI,GACpB,CACT,EACD,eAAK,SAAS,EAAC,2BAA2B,aACvC,WAAW,IAAI,CACd,aAAG,SAAS,EAAC,qBAAqB,aAChC,eAAM,SAAS,EAAC,cAAc,iBAAa,MAAM,kBAE1C,EAAC,GAAG,gBAET,CACL,EACD,KAAC,QAAQ,IAAC,GAAG,EAAE,IAAI,CAAC,QAAQ,GAAI,IAC5B,EACN,eAAK,SAAS,EAAC,gBAAgB,aAC7B,iBAAQ,IAAI,EAAC,QAAQ,EAAC,SAAS,EAAC,+BAA+B,YAC5D,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,GACnB,EACR,IAAI,CAAC,MAAM,IAAI,CACd,iBAAQ,IAAI,EAAC,QAAQ,EAAC,SAAS,EAAC,iCAAiC,EAAC,OAAO,EAAE,GAAG,EAAE,CAAC,CAAC,CAAC,QAAQ,CAAC,IAAI,CAAC,MAAM,CAAC,MAAM,EAAE,CAAC,CAAC,KAAK,EAAE,IAAI,CAAC,EAAE,CAAC,YAC9H,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,GACnB,CACV,IACG,IACD,CACR,CAAC;AACJ,CAAC;AAED,OAAO,EAAE,MAAM,EAAE,CAAC"}
@@ -0,0 +1,8 @@
1
+ import { type Node } from "../context.tsx";
2
+ /**
3
+ * Navigation: the product's sections. A side navigation on wide surfaces (grouped, with the
4
+ * current item marked), a menu button that opens them on compact ones.
5
+ */
6
+ export declare function Navigation({ node }: {
7
+ node: Node;
8
+ }): import("react").JSX.Element;
@@ -0,0 +1,51 @@
1
+ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
+ import { useLayoutEffect, useRef, useState } from "react";
3
+ import { Dialog } from "radix-ui";
4
+ import { useBindings, useSurface } from "../context.js";
5
+ import { useA11y } from "../surface.js";
6
+ import { Icon } from "./avatar.js";
7
+ /** Below this width the navigation moves behind a menu button. */
8
+ const COMPACT_PX = 900;
9
+ /**
10
+ * Navigation: the product's sections. A side navigation on wide surfaces (grouped, with the
11
+ * current item marked), a menu button that opens them on compact ones.
12
+ */
13
+ export function Navigation({ node }) {
14
+ const b = useBindings();
15
+ const s = useSurface();
16
+ const ref = useRef(null);
17
+ const [compact, setCompact] = useState(false);
18
+ const [open, setOpen] = useState(false);
19
+ const current = b.value(node.current);
20
+ const label = node.label !== undefined ? b.text(node.label) : "Main";
21
+ useLayoutEffect(() => {
22
+ const el = ref.current?.closest(".pxd-surface") ?? ref.current;
23
+ if (!el || typeof ResizeObserver === "undefined")
24
+ return;
25
+ const measure = () => setCompact(el.getBoundingClientRect().width < COMPACT_PX);
26
+ measure();
27
+ const ro = new ResizeObserver(measure);
28
+ ro.observe(el);
29
+ return () => ro.disconnect();
30
+ }, []);
31
+ // Items under their group headings, in first-seen order.
32
+ const groups = [];
33
+ for (const item of node.items) {
34
+ const g = item.group !== undefined ? b.text(item.group) : undefined;
35
+ const found = groups.find((x) => x.label === g);
36
+ if (found)
37
+ found.items.push(item);
38
+ else
39
+ groups.push({ label: g, items: [item] });
40
+ }
41
+ const list = (_jsx("nav", { className: "pxd-nav", "aria-label": label, children: groups.map((g, gi) => (_jsxs("div", { className: "pxd-nav-group", children: [g.label && _jsx("p", { className: "pxd-nav-group-label", children: g.label }), _jsx("ul", { children: g.items.map((item) => {
42
+ const badge = item.badge !== undefined ? b.value(item.badge) : undefined;
43
+ const on = item.key === current;
44
+ return (_jsx("li", { children: _jsxs("button", { type: "button", className: `pxd-nav-item${on ? " pxd-nav-current" : ""}`, "aria-current": on ? "page" : undefined, onClick: () => {
45
+ setOpen(false);
46
+ s.dispatch(item.action, b.scope, node.id);
47
+ }, children: [item.icon && _jsx(Icon, { name: item.icon, size: 18 }), _jsx("span", { className: "pxd-nav-label", children: b.text(item.label) }), badge ? (_jsxs("span", { className: "pxd-nav-badge", children: [badge, _jsx("span", { className: "pxd-sr-only", children: " needing attention" })] })) : null] }) }, item.key));
48
+ }) })] }, gi))) }));
49
+ return (_jsx("div", { ref: ref, className: "pxd-nav-wrap", ...useA11y(node), children: compact ? (_jsxs(Dialog.Root, { open: open, onOpenChange: setOpen, children: [_jsx(Dialog.Trigger, { className: "pxd-icon-button pxd-nav-menu", "aria-label": `${label} menu`, children: _jsx(Icon, { name: "menu" }) }), _jsxs(Dialog.Portal, { container: s.portal, children: [_jsx(Dialog.Overlay, { className: "pxd-overlay" }), _jsxs(Dialog.Content, { className: "pxd-nav-drawer", "aria-describedby": undefined, children: [_jsxs("div", { className: "pxd-sheet-header", children: [_jsx(Dialog.Title, { className: "pxd-sheet-title", children: label }), _jsx(Dialog.Close, { className: "pxd-icon-button", "aria-label": "Close", children: _jsx(Icon, { name: "close" }) })] }), list] })] })] })) : (list) }));
50
+ }
51
+ //# sourceMappingURL=navigation.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"navigation.js","sourceRoot":"","sources":["../../src/components/navigation.tsx"],"names":[],"mappings":"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"}
@@ -0,0 +1,25 @@
1
+ import { type Node } from "../context.tsx";
2
+ export declare function Children({ ids }: {
3
+ ids?: string[];
4
+ }): import("react").JSX.Element;
5
+ export declare function Heading({ children, className }: {
6
+ children: React.ReactNode;
7
+ className?: string;
8
+ }): import("react").ReactElement<{
9
+ className: string | undefined;
10
+ }, string | import("react").JSXElementConstructor<any>>;
11
+ export declare function Section({ node }: {
12
+ node: Node;
13
+ }): import("react").JSX.Element;
14
+ export declare function Group({ node }: {
15
+ node: Node;
16
+ }): import("react").JSX.Element;
17
+ export declare function Card({ node }: {
18
+ node: Node;
19
+ }): import("react").JSX.Element;
20
+ export declare function Disclosure({ node }: {
21
+ node: Node;
22
+ }): import("react").JSX.Element;
23
+ export declare function Views({ node }: {
24
+ node: Node;
25
+ }): import("react").JSX.Element;
@@ -0,0 +1,58 @@
1
+ import { Fragment as _Fragment, jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
+ import { createElement, useContext, useId, useState } from "react";
3
+ import { Collapsible, Tabs } from "radix-ui";
4
+ import { HeadingContext, useBindings, useSurface } from "../context.js";
5
+ import { Render, useA11y } from "../surface.js";
6
+ export function Children({ ids }) {
7
+ return _jsx(_Fragment, { children: ids?.map((id) => _jsx(Render, { id: id }, id)) });
8
+ }
9
+ export function Heading({ children, className }) {
10
+ const level = Math.min(useContext(HeadingContext), 6);
11
+ return createElement(`h${level}`, { className }, children);
12
+ }
13
+ export function Section({ node }) {
14
+ const b = useBindings();
15
+ const level = useContext(HeadingContext);
16
+ const headingId = useId();
17
+ return (_jsxs("section", { className: "pxd-section", "aria-labelledby": headingId, ...useA11y(node), children: [_jsxs("div", { className: "pxd-section-header", children: [createElement(`h${Math.min(level, 6)}`, { id: headingId, className: "pxd-section-title" }, b.text(node.title)), node.description !== undefined && _jsx("p", { className: "pxd-section-description", children: b.text(node.description) })] }), _jsx(HeadingContext.Provider, { value: level + 1, children: _jsx("div", { className: "pxd-stack", children: _jsx(Children, { ids: node.children }) }) })] }));
18
+ }
19
+ export function Group({ node }) {
20
+ const s = useSurface();
21
+ // A group of numbers reads as one strip of tiles, not a stack of blocks.
22
+ const children = (node.children ?? []).map((id) => s.byId.get(id));
23
+ const metrics = children.length > 1 && children.every((c) => c?.component === "Metric");
24
+ return (_jsx("div", { className: `pxd-group pxd-stack${metrics ? " pxd-metric-row" : ""}`, ...useA11y(node), children: _jsx(Children, { ids: node.children }) }));
25
+ }
26
+ export function Card({ node }) {
27
+ const b = useBindings();
28
+ const s = useSurface();
29
+ const title = b.text(node.title);
30
+ const badgeTone = node.badge?.tone ?? "neutral";
31
+ return (_jsxs("article", { className: `pxd-card${node.action ? " pxd-card-actionable" : ""}`, ...useA11y(node), children: [node.media && (_jsx("div", { className: "pxd-card-media", children: _jsx(Render, { id: node.media }) })), _jsxs("div", { className: "pxd-card-body", children: [_jsxs("div", { className: "pxd-card-header", children: [_jsx(Heading, { className: "pxd-card-title", children: node.action ? (_jsx("button", { type: "button", className: "pxd-card-link", onClick: () => s.dispatch(node.action, b.scope, node.id), children: title })) : (title) }), node.badge && _jsx("span", { className: `pxd-badge pxd-tone-${badgeTone}`, children: b.text(node.badge.text) })] }), node.subtitle !== undefined && _jsx("p", { className: "pxd-card-subtitle", children: b.text(node.subtitle) }), node.progress && _jsx(Progress, { value: b.value(node.progress.value), label: (node.progress.label !== undefined && b.text(node.progress.label)) || undefined, name: title, locale: s.locale }), node.children && (_jsx("div", { className: "pxd-stack pxd-stack-tight pxd-card-children", children: _jsx(Children, { ids: node.children }) }))] })] }));
32
+ }
33
+ /** Progress through an entity: a bar with its label, or the percentage. */
34
+ function Progress({ value, label, name, locale }) {
35
+ const v = Math.max(0, Math.min(1, Number(value) || 0));
36
+ const pct = new Intl.NumberFormat(locale, { style: "percent", maximumFractionDigits: 0 }).format(v);
37
+ return (_jsxs("div", { className: "pxd-progress", children: [_jsx("div", { className: "pxd-progress-track", role: "progressbar", "aria-label": `Progress: ${name}`, "aria-valuemin": 0, "aria-valuemax": 100, "aria-valuenow": Math.round(v * 100), "aria-valuetext": label ?? pct, children: _jsx("div", { className: "pxd-progress-fill", style: { width: `${v * 100}%` } }) }), _jsx("span", { className: "pxd-progress-label", children: label ?? pct })] }));
38
+ }
39
+ export function Disclosure({ node }) {
40
+ const b = useBindings();
41
+ const s = useSurface();
42
+ // Design Direction can say a product shows everything rather than tucking detail away.
43
+ const [open, setOpen] = useState(node.open ?? s.disclosure === "show-everything");
44
+ return (_jsxs(Collapsible.Root, { className: "pxd-disclosure", open: open, onOpenChange: setOpen, ...useA11y(node), children: [_jsxs(Collapsible.Trigger, { className: "pxd-disclosure-trigger", children: [_jsx("span", { className: "pxd-disclosure-icon", "aria-hidden": "true", children: open ? "▾" : "▸" }), b.text(node.summary)] }), _jsx(Collapsible.Content, { className: "pxd-disclosure-content", children: _jsx("div", { className: "pxd-stack", children: _jsx(Children, { ids: node.children }) }) })] }));
45
+ }
46
+ export function Views({ node }) {
47
+ const b = useBindings();
48
+ const s = useSurface();
49
+ const bound = node.selected ? b.value(node.selected) : undefined;
50
+ const [local, setLocal] = useState(bound ?? node.views[0].key);
51
+ const selected = bound ?? local;
52
+ const change = (key) => (node.selected ? b.write(node.selected, key) : setLocal(key));
53
+ return (_jsxs(Tabs.Root, { className: `pxd-views pxd-views-${node.variant ?? "tabs"}`, value: selected, onValueChange: change, ...useA11y(node), children: [_jsx(Tabs.List, { className: "pxd-views-list", children: node.views.map((v) => {
54
+ const count = v.count !== undefined ? b.value(v.count) : undefined;
55
+ return (_jsxs(Tabs.Trigger, { value: v.key, className: "pxd-views-tab", children: [b.text(v.label), count !== undefined && _jsx("span", { className: "pxd-views-count", children: new Intl.NumberFormat(s.locale).format(count) })] }, v.key));
56
+ }) }), node.views.map((v) => (_jsx(Tabs.Content, { value: v.key, className: "pxd-views-panel", children: _jsx(Render, { id: v.content }) }, v.key)))] }));
57
+ }
58
+ //# sourceMappingURL=structure.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"structure.js","sourceRoot":"","sources":["../../src/components/structure.tsx"],"names":[],"mappings":"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"}
@@ -0,0 +1,9 @@
1
+ import { type Node } from "../context.tsx";
2
+ /**
3
+ * Table: the dense list B2B software is made of. Saved views, a toolbar with search and filters,
4
+ * sortable columns, selection with bulk actions, a menu per row, and paging. On compact surfaces
5
+ * it becomes a list of rows, because 7 columns don't fit a phone.
6
+ */
7
+ export declare function Table({ node }: {
8
+ node: Node;
9
+ }): import("react").JSX.Element;