@polyxd/web 0.3.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 (103) hide show
  1. package/LICENSE +202 -0
  2. package/NOTICE +190 -0
  3. package/README.md +79 -0
  4. package/adapters/PolyxdSurface.svelte +65 -0
  5. package/adapters/PolyxdSurface.vue +61 -0
  6. package/dist/components/action-bar.d.ts +14 -0
  7. package/dist/components/action-bar.js +69 -0
  8. package/dist/components/action-bar.js.map +1 -0
  9. package/dist/components/avatar.d.ts +9 -0
  10. package/dist/components/avatar.js +16 -0
  11. package/dist/components/avatar.js.map +1 -0
  12. package/dist/components/chart.d.ts +5 -0
  13. package/dist/components/chart.js +132 -0
  14. package/dist/components/chart.js.map +1 -0
  15. package/dist/components/content.d.ts +20 -0
  16. package/dist/components/content.js +286 -0
  17. package/dist/components/content.js.map +1 -0
  18. package/dist/components/filter.d.ts +9 -0
  19. package/dist/components/filter.js +43 -0
  20. package/dist/components/filter.js.map +1 -0
  21. package/dist/components/flow.d.ts +12 -0
  22. package/dist/components/flow.js +188 -0
  23. package/dist/components/flow.js.map +1 -0
  24. package/dist/components/index.d.ts +10 -0
  25. package/dist/components/index.js +30 -0
  26. package/dist/components/index.js.map +1 -0
  27. package/dist/components/inputs.d.ts +28 -0
  28. package/dist/components/inputs.js +530 -0
  29. package/dist/components/inputs.js.map +1 -0
  30. package/dist/components/marks.d.ts +32 -0
  31. package/dist/components/marks.js +164 -0
  32. package/dist/components/marks.js.map +1 -0
  33. package/dist/components/navigation.d.ts +11 -0
  34. package/dist/components/navigation.js +99 -0
  35. package/dist/components/navigation.js.map +1 -0
  36. package/dist/components/overlays.d.ts +16 -0
  37. package/dist/components/overlays.js +146 -0
  38. package/dist/components/overlays.js.map +1 -0
  39. package/dist/components/pickers.d.ts +6 -0
  40. package/dist/components/pickers.js +272 -0
  41. package/dist/components/pickers.js.map +1 -0
  42. package/dist/components/shell.d.ts +30 -0
  43. package/dist/components/shell.js +167 -0
  44. package/dist/components/shell.js.map +1 -0
  45. package/dist/components/split.d.ts +8 -0
  46. package/dist/components/split.js +76 -0
  47. package/dist/components/split.js.map +1 -0
  48. package/dist/components/structure.d.ts +12 -0
  49. package/dist/components/structure.js +69 -0
  50. package/dist/components/structure.js.map +1 -0
  51. package/dist/components/table.d.ts +11 -0
  52. package/dist/components/table.js +142 -0
  53. package/dist/components/table.js.map +1 -0
  54. package/dist/components/tree.d.ts +10 -0
  55. package/dist/components/tree.js +177 -0
  56. package/dist/components/tree.js.map +1 -0
  57. package/dist/dom.d.ts +25 -0
  58. package/dist/dom.js +211 -0
  59. package/dist/dom.js.map +1 -0
  60. package/dist/elements.d.ts +87 -0
  61. package/dist/elements.js +244 -0
  62. package/dist/elements.js.map +1 -0
  63. package/dist/index.d.ts +6 -0
  64. package/dist/index.js +7 -0
  65. package/dist/index.js.map +1 -0
  66. package/dist/primitives.d.ts +111 -0
  67. package/dist/primitives.js +361 -0
  68. package/dist/primitives.js.map +1 -0
  69. package/dist/renderer.d.ts +145 -0
  70. package/dist/renderer.js +244 -0
  71. package/dist/renderer.js.map +1 -0
  72. package/dist/skeleton.d.ts +14 -0
  73. package/dist/skeleton.js +13 -0
  74. package/dist/skeleton.js.map +1 -0
  75. package/package.json +52 -0
  76. package/preview/polyxd-web.css +2 -0
  77. package/preview/polyxd-web.js +15 -0
  78. package/styles.css +5012 -0
  79. package/themes/antd.css +300 -0
  80. package/themes/bootstrap.css +300 -0
  81. package/themes/brutalist.css +300 -0
  82. package/themes/carbon.css +310 -0
  83. package/themes/chakra.css +300 -0
  84. package/themes/civic.css +300 -0
  85. package/themes/editorial.css +300 -0
  86. package/themes/finance.css +300 -0
  87. package/themes/fluent.css +300 -0
  88. package/themes/glass.css +300 -0
  89. package/themes/govuk.css +150 -0
  90. package/themes/health.css +300 -0
  91. package/themes/mantine.css +300 -0
  92. package/themes/material3.css +300 -0
  93. package/themes/mono.css +300 -0
  94. package/themes/neon.css +300 -0
  95. package/themes/pastel.css +300 -0
  96. package/themes/polaris.css +300 -0
  97. package/themes/primer.css +300 -0
  98. package/themes/radix.css +300 -0
  99. package/themes/shadcn.css +300 -0
  100. package/themes/sketch.css +356 -0
  101. package/themes/spectrum.css +300 -0
  102. package/themes/terminal.css +300 -0
  103. package/themes/wireframe.css +328 -0
@@ -0,0 +1,286 @@
1
+ import { STATUS_ICON, absolute, asList, calendarMonth, childPointer, collectionItemValue as itemValue, collectionLayout, dateParts, formatValue, get, metricChange, monthToShow, moveItem, nearestSlide, orderedIndices, qrEncode, resolveFormat, richText, rowChangeAction, safeColor, shiftMonth, } from "@polyxd/core";
2
+ import { h } from "../dom.js";
3
+ import { Dialog, dialogClose } from "../primitives.js";
4
+ import { Icon } from "./avatar.js";
5
+ import { Heading } from "./structure.js";
6
+ import { Paging } from "./table.js";
7
+ /** A colour value shown as itself: a swatch beside the text. */
8
+ export function Swatch(value) {
9
+ const color = safeColor(value);
10
+ return h("span", { class: `pxd-swatch${color ? "" : " pxd-swatch-unknown"}`, style: color ? { background: color } : undefined, "aria-hidden": "true" });
11
+ }
12
+ /** The rich-text tokens core parses, as elements; never injected as HTML. */
13
+ function richNodes(tokens) {
14
+ return tokens.map((t) => {
15
+ if (typeof t === "string")
16
+ return t;
17
+ if (t.kind === "code")
18
+ return h("code", null, t.text);
19
+ if (t.kind === "strong")
20
+ return h("strong", null, ...richNodes(t.children));
21
+ if (t.kind === "em")
22
+ return h("em", null, ...richNodes(t.children));
23
+ if (t.kind !== "link")
24
+ return null;
25
+ return t.href ? h("a", { href: t.href, rel: "noopener noreferrer" }, ...richNodes(t.children)) : h("span", null, ...richNodes(t.children));
26
+ });
27
+ }
28
+ export function Text(node, ctx) {
29
+ const b = ctx.b;
30
+ const a11y = ctx.a11y(node);
31
+ const variant = node.variant ?? "body";
32
+ const color = node.format?.type === "color";
33
+ const content = (v, format = node.format) => {
34
+ const text = b.text(v, format);
35
+ return format?.type === "color" ? [Swatch(text), text] : [text];
36
+ };
37
+ if (variant === "rich")
38
+ return h("p", { class: "pxd-text pxd-text-body pxd-text-rich", ...a11y }, ...richNodes(richText(b.text(node.text))));
39
+ if (variant === "quote") {
40
+ return h("figure", { class: "pxd-text-quote", ...a11y }, h("blockquote", null, h("p", { class: "pxd-text pxd-text-body" }, ...content(node.text))), node.cite !== undefined && h("figcaption", { class: "pxd-text-cite" }, b.text(node.cite)));
41
+ }
42
+ if (variant === "list") {
43
+ const pointer = node.items ? absolute(node.items.path, b.scope) : undefined;
44
+ const entries = pointer ? asList(get(ctx.r.data, pointer)) : [];
45
+ const intro = b.text(node.text);
46
+ return h("div", { class: "pxd-text-list", ...a11y }, intro && h("p", { class: "pxd-text pxd-text-body" }, intro), h(node.ordered ? "ol" : "ul", { class: `pxd-text-list-items${node.ordered ? " pxd-text-list-ordered" : ""}` }, ...entries.map((entry, i) => {
47
+ const raw = node.itemPath && pointer ? get(ctx.r.data, absolute(node.itemPath, { pointer: childPointer(pointer, i) })) : entry;
48
+ return h("li", { key: i }, ...content(raw));
49
+ })));
50
+ }
51
+ return h("p", { class: `pxd-text pxd-text-${variant}${color ? " pxd-text-color" : ""}`, ...a11y }, ...content(node.text));
52
+ }
53
+ export function Metric(node, ctx) {
54
+ const b = ctx.b;
55
+ const label = b.text(node.label);
56
+ const value = b.text(node.value, node.format);
57
+ const change = node.change ? metricChange(b.value(node.change.value), node.change.favorable, resolveFormat(node.change.format, ctx.r.data, b.scope), ctx.r.locale) : undefined;
58
+ const caption = node.caption !== undefined ? b.text(node.caption) : undefined;
59
+ return h("div", { class: "pxd-metric", role: "group", "aria-label": label, ...ctx.a11y(node) }, h("div", { class: "pxd-metric-label" }, label), h("div", { class: "pxd-metric-value" }, value), change && h("div", { class: `pxd-metric-change pxd-data-${change.tone}` }, h("span", { "aria-hidden": "true" }, change.text), h("span", { class: "pxd-sr-only" }, change.spoken)), caption && h("div", { class: "pxd-metric-caption" }, caption));
60
+ }
61
+ export function DetailList(node, ctx) {
62
+ const b = ctx.b;
63
+ const receipt = node.variant === "receipt";
64
+ const value = (item) => {
65
+ const raw = b.value(item.value);
66
+ // In a receipt, a zero charge reads as "Free".
67
+ if (receipt && item.format?.type === "currency" && raw === 0 && !item.total)
68
+ return { text: "Free", free: true, color: false };
69
+ return { text: b.text(item.value, item.format), free: false, color: item.format?.type === "color" };
70
+ };
71
+ // The 'Change' link per row (GOV.UK summary list). The row's key travels with the context.
72
+ const change = (item, label) => node.rowAction ? h("button", { type: "button", class: "pxd-link pxd-detail-change", onClick: () => ctx.r.dispatch(rowChangeAction(node.rowAction, item.key ?? label), b.scope, node.id) }, "Change", h("span", { class: "pxd-sr-only" }, ` ${label}`)) : null;
73
+ const rows = node.items.filter((i) => !i.total);
74
+ const totals = node.items.filter((i) => i.total);
75
+ return h("div", { class: `pxd-detail-list${receipt ? " pxd-receipt" : ""}${node.layout === "grid" ? " pxd-detail-grid" : ""}${node.rowAction ? " pxd-detail-actions" : ""}`, ...ctx.a11y(node) }, node.title !== undefined && Heading(ctx, "pxd-detail-title", b.text(node.title)), h("dl", null, ...rows.map((item, i) => {
76
+ const v = value(item);
77
+ const label = b.text(item.label);
78
+ return h("div", { class: "pxd-detail-row", key: item.key ?? i }, h("dt", null, label), h("dd", { class: v.free ? "pxd-free" : undefined }, v.color && Swatch(v.text), v.text), node.rowAction && h("dd", { class: "pxd-detail-row-action" }, change(item, label)));
79
+ }), ...totals.map((item, i) => h("div", { class: "pxd-detail-row pxd-total", key: item.key ?? `t${i}` }, h("dt", null, b.text(item.label)), h("dd", null, value(item).text), node.rowAction && h("dd", { class: "pxd-detail-row-action" })))));
80
+ }
81
+ export function Collection(node, ctx) {
82
+ const b = ctx.b;
83
+ const r = ctx.r;
84
+ const labelId = ctx.id(node, "label");
85
+ const pointer = absolute(node.items.path, b.scope);
86
+ const items = asList(get(r.data, pointer));
87
+ const selection = node.selection ?? "none";
88
+ const selected = selection !== "none" && node.selected ? b.value(node.selected) : undefined;
89
+ const isSelected = (v) => (Array.isArray(selected) ? selected.includes(v) : selected === v);
90
+ const toggle = (v) => {
91
+ if (!node.selected)
92
+ return;
93
+ if (selection === "single")
94
+ return b.write(node.selected, v);
95
+ const cur = Array.isArray(selected) ? selected : [];
96
+ b.write(node.selected, cur.includes(v) ? cur.filter((x) => x !== v) : [...cur, v]);
97
+ };
98
+ const selectedCount = Array.isArray(selected) ? selected.length : 0;
99
+ const label = b.text(node.label);
100
+ const template = r.byId.get(node.items.componentId);
101
+ const { grid, timeline, carousel, calendar } = collectionLayout(node, template);
102
+ const reorderable = node.reorderable === true;
103
+ const order = reorderable && node.order ? b.value(node.order) : undefined;
104
+ const values = items.map((item, i) => itemValue(item, i));
105
+ const indices = orderedIndices(values, order);
106
+ const move = (from, to) => {
107
+ const next = node.order ? moveItem(indices, values, from, to) : undefined;
108
+ if (next)
109
+ b.write(node.order, next);
110
+ };
111
+ const [dragging, setDragging] = ctx.state(node, "dragging", null);
112
+ // Carousel: which item is in view, for the readout and the buttons.
113
+ const [position, setPosition] = ctx.state(node, "position", 0);
114
+ const trackOf = () => r.root?.querySelector(`[data-pxd-id="${CSS.escape(node.id)}"] .pxd-carousel-track`);
115
+ const slides = (el) => Array.from(el.children);
116
+ const measure = (e) => {
117
+ const el = e.currentTarget;
118
+ setPosition(nearestSlide(slides(el).map((c) => c.offsetLeft - el.offsetLeft), el.scrollLeft));
119
+ };
120
+ const goTo = (i) => {
121
+ const el = trackOf();
122
+ const target = el && slides(el)[Math.max(0, Math.min(items.length - 1, i))];
123
+ if (el && target)
124
+ el.scrollTo({ left: target.offsetLeft - el.offsetLeft, behavior: "smooth" });
125
+ };
126
+ // Calendar: the month shown starts at the first dated item (or today) and moves a month at a time.
127
+ const dated = calendar ? items.map((_, i) => dateParts(node.datePath ? get(r.data, absolute(node.datePath, { pointer: childPointer(pointer, i) })) : undefined)) : [];
128
+ const [month, setMonth] = ctx.state(node, "month", null);
129
+ const shown = monthToShow(month, dated.find(Boolean));
130
+ if (!items.length && node.empty)
131
+ return ctx.render(node.empty);
132
+ const selectInput = (v, name) => h("input", { type: selection === "single" ? "radio" : "checkbox", class: "pxd-collection-select", name: selection === "single" ? `${node.id}-selection` : undefined, checked: isSelected(v), onChange: () => toggle(v), "aria-label": name });
133
+ const itemEl = (i, pos) => {
134
+ const v = values[i];
135
+ const scope = { pointer: childPointer(pointer, i) };
136
+ return h("li", {
137
+ key: String(v),
138
+ class: `pxd-collection-item${dragging === pos ? " pxd-collection-dragging" : ""}`,
139
+ draggable: reorderable || undefined,
140
+ onDragstart: reorderable ? () => setDragging(pos) : undefined,
141
+ onDragover: reorderable ? (e) => e.preventDefault() : undefined,
142
+ onDrop: reorderable
143
+ ? () => {
144
+ if (dragging !== null)
145
+ move(dragging, pos);
146
+ setDragging(null);
147
+ }
148
+ : undefined,
149
+ onDragend: reorderable ? () => setDragging(null) : undefined,
150
+ }, reorderable &&
151
+ h("div", { class: "pxd-collection-reorder" }, h("span", { class: "pxd-collection-handle", "aria-hidden": "true" }, Icon("menu", 16)), h("button", { type: "button", class: "pxd-icon-button pxd-collection-move", "aria-label": `Move item ${pos + 1} up`, disabled: pos === 0, onClick: () => move(pos, pos - 1) }, Icon("sortUp", 16)), h("button", { type: "button", class: "pxd-icon-button pxd-collection-move", "aria-label": `Move item ${pos + 1} down`, disabled: pos === items.length - 1, onClick: () => move(pos, pos + 1) }, Icon("sortDown", 16))), selection !== "none" && selectInput(v, `Select item ${pos + 1} of ${items.length}`), h("div", { class: "pxd-collection-content" }, ctx.render(node.items.componentId, scope)));
152
+ };
153
+ const bulk = selection === "multiple" &&
154
+ selectedCount > 0 &&
155
+ h("div", { class: "pxd-table-toolbar pxd-table-bulk", role: "toolbar", "aria-label": `Actions for ${selectedCount} selected` }, h("p", { class: "pxd-bulk-count", "aria-live": "polite" }, `${selectedCount} selected`), node.bulkActions && ctx.render(node.bulkActions), h("button", { type: "button", class: "pxd-button pxd-button-tertiary", onClick: () => b.write(node.selected, []) }, "Cancel"));
156
+ let body;
157
+ if (carousel) {
158
+ body = h("div", { class: "pxd-carousel", role: "group", "aria-roledescription": "carousel", "aria-labelledby": labelId }, h("ul", { class: "pxd-collection-list pxd-carousel-track", "aria-labelledby": labelId, onScroll: measure }, ...indices.map((i, pos) => itemEl(i, pos))), h("div", { class: "pxd-carousel-controls" }, h("button", { type: "button", class: "pxd-icon-button", "aria-label": "Previous item", disabled: position <= 0, onClick: () => goTo(position - 1) }, Icon("chevronLeft", 18)), h("p", { class: "pxd-carousel-position", "aria-live": "polite" }, `${position + 1} of ${items.length}`), h("button", { type: "button", class: "pxd-icon-button", "aria-label": "Next item", disabled: position >= items.length - 1, onClick: () => goTo(position + 1) }, Icon("chevronRight", 18))));
159
+ }
160
+ else if (calendar) {
161
+ const { monthName, weekdays, weeks } = calendarMonth(shown, r.locale);
162
+ const onDay = (d) => indices.filter((i) => dated[i] && dated[i].y === shown.y && dated[i].m === shown.m && dated[i].d === d);
163
+ body = h("div", { class: "pxd-calendar" }, h("div", { class: "pxd-calendar-header" }, h("button", { type: "button", class: "pxd-icon-button", "aria-label": "Previous month", onClick: () => setMonth(shiftMonth(shown, -1)) }, Icon("chevronLeft", 18)), h("p", { class: "pxd-calendar-month", "aria-live": "polite" }, monthName), h("button", { type: "button", class: "pxd-icon-button", "aria-label": "Next month", onClick: () => setMonth(shiftMonth(shown, 1)) }, Icon("chevronRight", 18))), h("table", { class: "pxd-calendar-grid" }, h("caption", { class: "pxd-sr-only" }, `${label}, ${monthName}`), h("thead", null, h("tr", null, ...weekdays.map((w) => h("th", { key: w, scope: "col" }, w)))), h("tbody", null, ...weeks.map((week, wi) => h("tr", { key: wi }, ...week.map((d, di) => d === null
164
+ ? h("td", { key: di, class: "pxd-calendar-empty" })
165
+ : h("td", { key: di, class: `pxd-calendar-day${onDay(d).length ? " pxd-calendar-has-items" : ""}` }, h("span", { class: "pxd-calendar-date" }, d), onDay(d).length > 0 &&
166
+ h("ul", { class: "pxd-calendar-items" }, ...onDay(d).map((i) => h("li", { key: String(values[i]), class: "pxd-collection-item" }, selection !== "none" && selectInput(values[i], `Select item on ${d}`), h("div", { class: "pxd-collection-content" }, ctx.render(node.items.componentId, { pointer: childPointer(pointer, i) }))))))))))));
167
+ }
168
+ else {
169
+ body = h("ul", { class: `pxd-collection-list${grid ? " pxd-collection-grid" : ""}${timeline ? " pxd-timeline" : ""}${reorderable ? " pxd-collection-reorderable" : ""}`, "aria-labelledby": labelId }, ...indices.map((i, pos) => itemEl(i, pos)));
170
+ }
171
+ return h("div", { class: "pxd-collection", ...ctx.a11y(node) }, h("div", { class: "pxd-collection-label", id: labelId }, `${label} `, h("span", { class: "pxd-count" }, `(${items.length})`)), bulk, body, node.page && Paging(node, ctx, items.length));
172
+ }
173
+ /**
174
+ * Media: an image by default; a video or audio player with native controls and a transcript; a
175
+ * gallery of the host's images; or a QR code of a value, drawn here so no URL leaves the surface.
176
+ */
177
+ export function Media(node, ctx) {
178
+ const b = ctx.b;
179
+ const r = ctx.r;
180
+ const a11y = ctx.a11y(node);
181
+ // Which gallery picture the viewer shows (null when closed).
182
+ const [open, setOpen] = ctx.state(node, "open", null);
183
+ const kind = node.kind ?? "image";
184
+ const ref = node.src ? b.value(node.src) : undefined;
185
+ const url = ref ? r.props.resolveMedia?.(ref) : undefined;
186
+ const alt = node.decorative ? "" : b.text(node.alt);
187
+ const cls = `pxd-media pxd-media-${node.aspect ?? "auto"}`;
188
+ if (kind === "qr")
189
+ return QRCode(ctx, node, b.text(node.value), alt, a11y);
190
+ if (kind === "gallery") {
191
+ const pointer = node.items ? absolute(node.items.path, b.scope) : undefined;
192
+ const entries = pointer ? asList(get(r.data, pointer)) : [];
193
+ const items = entries.map((_, i) => {
194
+ const scope = { pointer: childPointer(pointer, i) };
195
+ const imageRef = node.imagePath ? get(r.data, absolute(node.imagePath, scope)) : undefined;
196
+ const src = imageRef ? r.props.resolveMedia?.(String(imageRef)) : undefined;
197
+ const itemAlt = node.altPath ? String(get(r.data, absolute(node.altPath, scope)) ?? "") : "";
198
+ return { src, alt: itemAlt };
199
+ });
200
+ // Only pictures that resolved can be opened; the viewer counts and moves among those.
201
+ const pictures = items.filter((it) => Boolean(it.src));
202
+ if (open !== null && pictures[open])
203
+ GalleryViewer(ctx, node, alt, pictures, open, setOpen);
204
+ return h("ul", { class: "pxd-gallery", "aria-label": alt || undefined, ...a11y }, ...items.map((it, i) => {
205
+ const at = pictures.indexOf(it);
206
+ return h("li", { key: i }, at >= 0
207
+ ? h("button", { type: "button", class: "pxd-gallery-item", "aria-label": it.alt ? `Open ${it.alt}` : `Open image ${at + 1} of ${pictures.length}`, onClick: () => setOpen(at) }, h("img", { class: `${cls} pxd-gallery-image`, src: it.src, alt: it.alt }))
208
+ : h("div", { class: `${cls} pxd-media-placeholder pxd-gallery-image`, role: "img", "aria-label": it.alt || undefined }));
209
+ }));
210
+ }
211
+ if (kind === "video" || kind === "audio") {
212
+ const transcript = node.transcript !== undefined ? b.text(node.transcript) : undefined;
213
+ const posterRef = node.poster !== undefined ? b.text(node.poster) : undefined;
214
+ const poster = posterRef ? r.props.resolveMedia?.(posterRef) : undefined;
215
+ return h("figure", { class: `pxd-media-player pxd-media-${kind}`, ...a11y }, kind === "video"
216
+ ? url
217
+ ? h("video", { class: cls, controls: true, src: url, poster, "aria-label": alt || undefined })
218
+ : h("div", { class: `${cls} pxd-media-placeholder`, role: "img", "aria-label": alt || undefined })
219
+ : url
220
+ ? h("audio", { class: "pxd-media-audio-player", controls: true, src: url, "aria-label": alt || undefined })
221
+ : h("div", { class: "pxd-media-placeholder pxd-media-audio-placeholder", role: "img", "aria-label": alt || undefined }), alt && h("figcaption", { class: "pxd-media-caption" }, alt), transcript && h("details", { class: "pxd-media-transcript" }, h("summary", null, "Transcript"), h("p", { class: "pxd-text pxd-text-body" }, transcript)));
222
+ }
223
+ if (!url)
224
+ return h("div", { class: `${cls} pxd-media-placeholder`, role: node.decorative ? "presentation" : "img", "aria-label": alt || undefined });
225
+ return h("img", { class: cls, src: url, alt, ...a11y });
226
+ }
227
+ /** A left or right chevron. */
228
+ const Arrow = (dir) => h("svg", { width: 20, height: 20, viewBox: "0 0 24 24", fill: "none", stroke: "currentColor", "stroke-width": 2, "stroke-linecap": "round", "stroke-linejoin": "round", "aria-hidden": "true" }, h("path", { d: dir === "left" ? "m15 6-6 6 6 6" : "m9 6 6 6-6 6" }));
229
+ /** One gallery picture at a time, large, with previous/next and a counter. Arrow keys move; Escape closes. */
230
+ function GalleryViewer(ctx, node, name, pictures, index, onIndex) {
231
+ const n = pictures.length;
232
+ const { src, alt } = pictures[index];
233
+ const go = (i) => onIndex(Math.max(0, Math.min(n - 1, i)));
234
+ const titleId = ctx.id(node, "viewer-title");
235
+ const close = () => onIndex(null);
236
+ // At either end the button just used goes disabled; focus moves to the other one rather than dying.
237
+ ctx.after(() => {
238
+ const active = document.activeElement;
239
+ if (active?.disabled && active.classList.contains("pxd-viewer-step"))
240
+ (active.nextElementSibling ?? active.previousElementSibling)?.dispatchEvent(new Event("noop")), (active.nextElementSibling ?? active.previousElementSibling)?.focus();
241
+ });
242
+ ctx.portal(Dialog({ ctx, id: ctx.id(node, "viewer"), class: "pxd-viewer", onClose: close, props: { "aria-labelledby": titleId, onKeydown: (e) => (e.key === "ArrowLeft" ? go(index - 1) : e.key === "ArrowRight" ? go(index + 1) : undefined) } }, h("h2", { id: titleId, class: "pxd-sr-only" }, name || "Pictures"), h("div", { class: "pxd-viewer-bar" }, h("span", { class: "pxd-viewer-counter", "aria-live": "polite" }, `${index + 1} of ${n}`), dialogClose(close, { class: "pxd-icon-button pxd-viewer-close", "aria-label": "Close" }, Icon("close"))), h("figure", { class: "pxd-viewer-figure" }, h("img", { class: "pxd-viewer-image", src, alt }), alt && h("figcaption", { class: "pxd-viewer-caption" }, alt)), h("div", { class: "pxd-viewer-bar pxd-viewer-nav" }, h("button", { type: "button", class: "pxd-icon-button pxd-viewer-step", "aria-label": "Previous picture", disabled: index === 0, onClick: () => go(index - 1) }, Arrow("left")), h("button", { type: "button", class: "pxd-icon-button pxd-viewer-step", "aria-label": "Next picture", disabled: index === n - 1, onClick: () => go(index + 1) }, Arrow("right")))));
243
+ }
244
+ /** A QR code on a canvas, in the surface's text and surface colours; too long a value falls back to text. */
245
+ function QRCode(ctx, node, text, alt, a11y) {
246
+ const grid = text ? qrEncode(text) : undefined;
247
+ if (!grid)
248
+ return h("div", { class: "pxd-qr pxd-qr-placeholder", role: "img", "aria-label": alt || `QR code: ${text}`, ...a11y }, h("span", { class: "pxd-qr-mark", "aria-hidden": "true" }, "QR"), h("span", { class: "pxd-qr-text" }, text));
249
+ const draw = (el) => {
250
+ const canvas = el;
251
+ if (!canvas || canvas.dataset.text === text)
252
+ return;
253
+ canvas.dataset.text = text;
254
+ const scale = 4;
255
+ const quiet = 4;
256
+ const size = grid.length;
257
+ canvas.width = canvas.height = (size + quiet * 2) * scale;
258
+ const c = canvas.getContext("2d");
259
+ if (!c)
260
+ return;
261
+ const style = getComputedStyle(canvas);
262
+ const dark = style.getPropertyValue("--pxd-color-text-default").trim() || "#000";
263
+ const light = style.getPropertyValue("--pxd-color-surface-default").trim() || "#fff";
264
+ c.fillStyle = light;
265
+ c.fillRect(0, 0, canvas.width, canvas.height);
266
+ c.fillStyle = dark;
267
+ grid.forEach((row, y) => row.forEach((on, x) => on && c.fillRect((x + quiet) * scale, (y + quiet) * scale, scale, scale)));
268
+ };
269
+ ctx.after(() => draw(ctx.r.root?.querySelector(`canvas[data-pxd-id="${CSS.escape(node.id)}"]`) ?? null));
270
+ return h("canvas", { class: "pxd-qr", role: "img", "aria-label": alt || `QR code: ${text}`, ...a11y, ref: draw });
271
+ }
272
+ /**
273
+ * Status. 'undo' is a snackbar after a reversible action ran (announced politely, with Undo);
274
+ * 'empty' gets an icon tile and may carry an ActionBar (one primary, one secondary).
275
+ */
276
+ export function Status(node, ctx) {
277
+ const b = ctx.b;
278
+ const urgent = node.kind === "error";
279
+ const a11y = ctx.a11y(node);
280
+ if (node.kind === "undo") {
281
+ return h("div", { class: "pxd-snackbar", role: "status", ...a11y }, h("p", { class: "pxd-snackbar-text" }, b.text(node.title), node.message !== undefined && h("span", { class: "pxd-snackbar-message" }, ` ${b.text(node.message)}`)), node.action && ctx.render(node.action));
282
+ }
283
+ return h("div", { class: `pxd-status pxd-status-${node.kind}${node.variant === "inline" ? " pxd-status-notice" : ""}`, role: urgent ? "alert" : "status", ...a11y }, node.kind === "loading" ? h("span", { class: "pxd-spinner", "aria-hidden": "true" }) : h("span", { class: "pxd-status-icon", "aria-hidden": "true" }, Icon(node.icon ?? STATUS_ICON[node.kind], node.kind === "empty" ? 28 : 16)), h("div", { class: "pxd-status-body" }, h("p", { class: "pxd-status-title" }, b.text(node.title)), node.message !== undefined && h("p", { class: "pxd-status-message" }, b.text(node.message)), node.action && node.variant !== "inline" && h("div", { class: "pxd-status-action" }, ctx.render(node.action))), node.action && node.variant === "inline" && h("div", { class: "pxd-status-action" }, ctx.render(node.action)));
284
+ }
285
+ export { formatValue };
286
+ //# sourceMappingURL=content.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"content.js","sourceRoot":"","sources":["../../src/components/content.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,9 @@
1
+ import { type Node } from "@polyxd/core";
2
+ import { type VNode } from "../dom.ts";
3
+ import type { Ctx } from "../renderer.ts";
4
+ /**
5
+ * FilterPanel: filters beside their results on wide surfaces; on compact ones a "Filters · n"
6
+ * button opens a bottom sheet that ends in "Show n results". Search fields stay above the results
7
+ * everywhere. Active filters show as removable chips; the result count is announced politely.
8
+ */
9
+ export declare function FilterPanel(node: Node, ctx: Ctx): VNode;
@@ -0,0 +1,43 @@
1
+ import { FILTER_COMPACT_PX, activeFilters, resultCountText } from "@polyxd/core";
2
+ import { h } from "../dom.js";
3
+ import { Dialog, dialogClose } from "../primitives.js";
4
+ import { Icon } from "./avatar.js";
5
+ import { Heading } from "./structure.js";
6
+ /**
7
+ * FilterPanel: filters beside their results on wide surfaces; on compact ones a "Filters · n"
8
+ * button opens a bottom sheet that ends in "Show n results". Search fields stay above the results
9
+ * everywhere. Active filters show as removable chips; the result count is announced politely.
10
+ */
11
+ export function FilterPanel(node, ctx) {
12
+ const b = ctx.b;
13
+ const r = ctx.r;
14
+ const [compact, setCompact] = ctx.state(node, "compact", false);
15
+ const [open, setOpen] = ctx.state(node, "open", false);
16
+ const a11y = ctx.a11y(node);
17
+ const sheetId = ctx.id(node, "sheet");
18
+ const label = node.label !== undefined ? b.text(node.label) : "Filters";
19
+ const children = (node.children ?? []).map((id) => r.byId.get(id)).filter(Boolean);
20
+ const searches = children.filter((c) => c.component === "TextInput" && c.kind === "search");
21
+ const filters = children.filter((c) => !searches.includes(c));
22
+ const active = activeFilters(filters, r.data, b.scope, r.locale, b.text);
23
+ const remove = (f) => r.surface.write(f.binding, f.cleared, b.scope);
24
+ const count = node.resultCount !== undefined ? b.value(node.resultCount) : undefined;
25
+ const countText = resultCountText(count, r.locale);
26
+ const clearAll = () => {
27
+ for (const f of active)
28
+ remove(f);
29
+ if (node.clear)
30
+ r.dispatch(node.clear, b.scope, node.id);
31
+ };
32
+ const close = () => setOpen(false);
33
+ const filterFields = () => filters.map((c) => ctx.render(c.id));
34
+ const results = h("div", { class: "pxd-filter-results" }, ...searches.map((c) => ctx.render(c.id)), h("div", { class: "pxd-filter-status" }, compact &&
35
+ h("button", { type: "button", class: "pxd-chip pxd-filter-trigger", "aria-haspopup": "dialog", "aria-expanded": open, "aria-controls": open ? sheetId : undefined, "data-state": open ? "open" : "closed", onClick: () => setOpen(true) }, Icon("filter", 18), label, active.length > 0 && h("span", { "aria-hidden": "true" }, ` · ${active.length}`), active.length > 0 && h("span", { class: "pxd-sr-only" }, `, ${active.length} active`)), countText && h("p", { class: "pxd-filter-count", "aria-live": "polite" }, countText)), active.length > 0 &&
36
+ h("ul", { class: "pxd-filter-chips", "aria-label": "Active filters" }, ...active.map((f) => h("li", { key: f.key }, h("button", { type: "button", class: "pxd-chip pxd-filter-chip", onClick: () => remove(f), "aria-label": `Remove filter: ${f.label}` }, f.label, Icon("close", 16)))), h("li", null, h("button", { type: "button", class: "pxd-button pxd-button-tertiary pxd-filter-clear", onClick: clearAll }, "Clear all"))), ctx.render(node.results));
37
+ if (compact && open) {
38
+ const titleId = ctx.id(node, "sheet-title");
39
+ ctx.portal(Dialog({ ctx, id: sheetId, class: "pxd-sheet", onClose: close, props: { id: sheetId, "aria-labelledby": titleId } }, h("div", { class: "pxd-sheet-header" }, h("h2", { id: titleId, class: "pxd-sheet-title" }, label), dialogClose(close, { class: "pxd-icon-button", "aria-label": "Close" }, Icon("close"))), h("div", { class: "pxd-sheet-body pxd-stack" }, ...filterFields()), h("div", { class: "pxd-sheet-footer" }, active.length > 0 && h("button", { type: "button", class: "pxd-button pxd-button-secondary", onClick: clearAll }, "Clear all"), dialogClose(close, { class: "pxd-button pxd-button-primary" }, countText ? `Show ${countText}` : "Show results"))));
40
+ }
41
+ return h("div", { class: `pxd-filter-panel${compact ? " pxd-filter-compact" : ""}`, ...a11y, ref: (el) => el && r.observeWidth(el, `${node.id}:filter`, (w) => setCompact(w < FILTER_COMPACT_PX)) }, compact ? results : h("div", { class: "pxd-filter-layout" }, h("section", { class: "pxd-filter-sidebar", "aria-label": label }, Heading(ctx, "pxd-filter-title", label), h("div", { class: "pxd-stack" }, ...filterFields())), results));
42
+ }
43
+ //# sourceMappingURL=filter.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"filter.js","sourceRoot":"","sources":["../../src/components/filter.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,12 @@
1
+ import { type Node } from "@polyxd/core";
2
+ import { type VChild, type VNode } from "../dom.ts";
3
+ import type { Ctx } from "../renderer.ts";
4
+ export declare function Action(node: Node, ctx: Ctx): VNode;
5
+ export declare function Steps(node: Node, ctx: Ctx): VNode;
6
+ /**
7
+ * Confirmation. When it is the surface root, the surface *is* the dialog: it renders inline as an
8
+ * alertdialog scoped to the surface. When it opens on top of other surface content, it is a modal
9
+ * alert dialog inside the surface's portal.
10
+ */
11
+ export declare function Confirm(node: Node, ctx: Ctx): VChild;
12
+ export declare function Comparison(node: Node, ctx: Ctx): VNode;