@tensor_1/react 2.38.0 → 2.39.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 (38) hide show
  1. package/README.md +47 -0
  2. package/dist/{chart-theme-Cl0IrkKQ.d.cts → ChartCore-BKK2HEfi.d.cts} +77 -50
  3. package/dist/chart-analytic-guide.d.ts +6 -0
  4. package/dist/chart-analytic-guide.js +10 -0
  5. package/dist/chart-analytic-model.d.ts +141 -0
  6. package/dist/chart-analytic-model.js +252 -0
  7. package/dist/chart-analytic.cjs +1372 -0
  8. package/dist/chart-analytic.d.cts +335 -0
  9. package/dist/chart-analytic.d.ts +19 -0
  10. package/dist/chart-analytic.js +95 -0
  11. package/dist/chart-panels-model.d.ts +92 -0
  12. package/dist/chart-panels-model.js +284 -0
  13. package/dist/chart-preset.cjs +41 -4
  14. package/dist/chart-preset.d.cts +2 -2
  15. package/dist/chart-preset.d.ts +1 -1
  16. package/dist/chart-stats-o4zDhpVm.d.cts +46 -0
  17. package/dist/chart-stats.d.ts +46 -0
  18. package/dist/chart-stats.js +89 -0
  19. package/dist/chart-theme.d.ts +3 -0
  20. package/dist/chart-theme.js +2 -0
  21. package/dist/chart.cjs +41 -4
  22. package/dist/chart.d.cts +2 -2
  23. package/dist/chart.d.ts +1 -1
  24. package/dist/components/Chart.d.ts +1 -1
  25. package/dist/components/ChartCore.d.ts +23 -3
  26. package/dist/components/ChartCore.js +40 -5
  27. package/dist/components/ChartPanels.d.ts +52 -0
  28. package/dist/components/ChartPanels.js +170 -0
  29. package/dist/components/InsightCard.d.ts +86 -0
  30. package/dist/components/InsightCard.js +118 -0
  31. package/dist/correlation-scatter-model.d.ts +68 -0
  32. package/dist/correlation-scatter-model.js +179 -0
  33. package/dist/icons/Icon.d.ts +23 -23
  34. package/dist/index.cjs +1179 -958
  35. package/dist/index.d.cts +84 -1
  36. package/dist/index.d.ts +2 -0
  37. package/dist/index.js +10 -0
  38. package/package.json +6 -1
package/dist/index.cjs CHANGED
@@ -32,6 +32,7 @@ __export(src_exports, {
32
32
  Breadcrumbs: () => Breadcrumbs,
33
33
  BuilderCanvas: () => BuilderCanvas,
34
34
  BulkBar: () => BulkBar,
35
+ Bullet: () => Bullet,
35
36
  Button: () => Button,
36
37
  ButtonGroup: () => ButtonGroup,
37
38
  ButtonLink: () => ButtonLink,
@@ -70,6 +71,7 @@ __export(src_exports, {
70
71
  DEFAULT_FILTER_EDITOR_LABELS: () => DEFAULT_FILTER_EDITOR_LABELS,
71
72
  DEFAULT_FILTER_SUMMARY_LABELS: () => DEFAULT_FILTER_SUMMARY_LABELS,
72
73
  DEFAULT_INLINE_EDIT_LABELS: () => DEFAULT_INLINE_EDIT_LABELS,
74
+ DEFAULT_INSIGHT_CARD_LABELS: () => DEFAULT_INSIGHT_CARD_LABELS,
73
75
  DEFAULT_LIGHTBOX_LABELS: () => DEFAULT_LIGHTBOX_LABELS,
74
76
  DEFAULT_MATCH_REVIEW_LABELS: () => DEFAULT_MATCH_REVIEW_LABELS,
75
77
  DEFAULT_PAGINATION_LABELS: () => DEFAULT_PAGINATION_LABELS,
@@ -122,6 +124,7 @@ __export(src_exports, {
122
124
  InlineEdit: () => InlineEdit,
123
125
  Input: () => Input,
124
126
  InputGroup: () => InputGroup,
127
+ InsightCard: () => InsightCard,
125
128
  Kanban: () => Kanban,
126
129
  KanbanCard: () => KanbanCard,
127
130
  KanbanColumn: () => KanbanColumn,
@@ -276,6 +279,7 @@ __export(src_exports, {
276
279
  layoutMonthSpans: () => layoutMonthSpans,
277
280
  layoutRelationshipGraph: () => layoutRelationshipGraph,
278
281
  layoutTimeGridDay: () => layoutTimeGridDay,
282
+ linearFit: () => linearFit,
279
283
  mapRuleGroup: () => mapRuleGroup,
280
284
  matchFilter: () => matchFilter,
281
285
  matchFilterPreset: () => matchFilterPreset,
@@ -284,6 +288,7 @@ __export(src_exports, {
284
288
  moveRuleNode: () => moveRuleNode,
285
289
  multiSort: () => multiSort,
286
290
  nextSortDir: () => nextSortDir,
291
+ normalQuantile: () => normalQuantile,
287
292
  normalizeHex: () => normalizeHex,
288
293
  packLanes: () => packLanes,
289
294
  parseDateInput: () => parseDateInput,
@@ -294,7 +299,9 @@ __export(src_exports, {
294
299
  pixelsToMs: () => pixelsToMs,
295
300
  placeSpan: () => placeSpan,
296
301
  placesInTopLane: () => placesInTopLane,
302
+ predictionBand: () => predictionBand,
297
303
  proposeMove: () => proposeMove,
304
+ quantiles: () => quantiles,
298
305
  rankOverflow: () => rankOverflow,
299
306
  relationshipNeighbors: () => relationshipNeighbors,
300
307
  relativeTimeValue: () => relativeTimeValue,
@@ -318,6 +325,7 @@ __export(src_exports, {
318
325
  splitDateTime: () => splitDateTime,
319
326
  startOfMonth: () => startOfMonth,
320
327
  stepMetricValue: () => stepMetricValue,
328
+ studentTQuantile: () => studentTQuantile,
321
329
  summarizeDiff: () => summarizeDiff,
322
330
  summarizeFilter: () => summarizeFilter,
323
331
  summarizeRule: () => summarizeRule,
@@ -1983,7 +1991,11 @@ var glyphCheck = [["path", { "d": "M20 6 9 17l-5-5" }]];
1983
1991
  var glyphChevronDown = [["path", { "d": "m6 9 6 6 6-6" }]];
1984
1992
  var glyphChevronLeft = [["path", { "d": "m15 18-6-6 6-6" }]];
1985
1993
  var glyphChevronRight = [["path", { "d": "m9 18 6-6-6-6" }]];
1994
+ var glyphCircleCheck = [["circle", { "cx": "12", "cy": "12", "r": "10" }], ["path", { "d": "m16 9-5.5 5.5L8 12" }]];
1995
+ var glyphCircleQuestionMark = [["circle", { "cx": "12", "cy": "12", "r": "10" }], ["path", { "d": "M9.09 9a3 3 0 0 1 5.83 1c0 2-3 3-3 3" }], ["path", { "d": "M12 17h.01" }]];
1996
+ var glyphOctagonAlert = [["path", { "d": "M12 16h.01" }], ["path", { "d": "M12 8v4" }], ["path", { "d": "M15.312 2a2 2 0 0 1 1.414.586l4.688 4.688A2 2 0 0 1 22 8.688v6.624a2 2 0 0 1-.586 1.414l-4.688 4.688a2 2 0 0 1-1.414.586H8.688a2 2 0 0 1-1.414-.586l-4.688-4.688A2 2 0 0 1 2 15.312V8.688a2 2 0 0 1 .586-1.414l4.688-4.688A2 2 0 0 1 8.688 2z" }]];
1986
1997
  var glyphPencil = [["path", { "d": "M21.174 6.812a1 1 0 0 0-3.986-3.987L3.842 16.174a2 2 0 0 0-.5.83l-1.321 4.352a.5.5 0 0 0 .623.622l4.353-1.32a2 2 0 0 0 .83-.497z" }], ["path", { "d": "m15 5 4 4" }]];
1998
+ var glyphTriangleAlert = [["path", { "d": "m21.73 18-8-14a2 2 0 0 0-3.48 0l-8 14A2 2 0 0 0 4 21h16a2 2 0 0 0 1.73-3" }], ["path", { "d": "M12 9v4" }], ["path", { "d": "M12 17h.01" }]];
1987
1999
  var glyphX = [["path", { "d": "M18 6 6 18" }], ["path", { "d": "m6 6 12 12" }]];
1988
2000
 
1989
2001
  // src/icons/components.ts
@@ -1992,7 +2004,11 @@ var CheckIcon = /* @__PURE__ */ createIcon("CheckIcon", glyphCheck);
1992
2004
  var ChevronDownIcon = /* @__PURE__ */ createIcon("ChevronDownIcon", glyphChevronDown);
1993
2005
  var ChevronLeftIcon = /* @__PURE__ */ createIcon("ChevronLeftIcon", glyphChevronLeft);
1994
2006
  var ChevronRightIcon = /* @__PURE__ */ createIcon("ChevronRightIcon", glyphChevronRight);
2007
+ var CircleCheckIcon = /* @__PURE__ */ createIcon("CircleCheckIcon", glyphCircleCheck);
2008
+ var CircleQuestionMarkIcon = /* @__PURE__ */ createIcon("CircleQuestionMarkIcon", glyphCircleQuestionMark);
2009
+ var OctagonAlertIcon = /* @__PURE__ */ createIcon("OctagonAlertIcon", glyphOctagonAlert);
1995
2010
  var PencilIcon = /* @__PURE__ */ createIcon("PencilIcon", glyphPencil);
2011
+ var TriangleAlertIcon = /* @__PURE__ */ createIcon("TriangleAlertIcon", glyphTriangleAlert);
1996
2012
  var XIcon = /* @__PURE__ */ createIcon("XIcon", glyphX);
1997
2013
 
1998
2014
  // src/components/InlineEdit.tsx
@@ -6076,19 +6092,216 @@ var Stat = (0, import_react43.forwardRef)(function Stat2({ label, value, icon, m
6076
6092
  );
6077
6093
  });
6078
6094
 
6095
+ // src/components/InsightCard.tsx
6096
+ var import_jsx_runtime57 = require("react/jsx-runtime");
6097
+ var defaultNumber = new Intl.NumberFormat("en", { maximumFractionDigits: 1 });
6098
+ var DEFAULT_INSIGHT_CARD_LABELS = {
6099
+ coverage: (covered, total, percent, note) => /* @__PURE__ */ (0, import_jsx_runtime57.jsxs)(import_jsx_runtime57.Fragment, { children: [
6100
+ covered,
6101
+ " of ",
6102
+ total,
6103
+ " ",
6104
+ note,
6105
+ " (",
6106
+ percent,
6107
+ "%)"
6108
+ ] }),
6109
+ bullet: (actual, target) => `${actual} against a target of ${target}`,
6110
+ source: "Source",
6111
+ updated: "Updated",
6112
+ kpis: "Key figures",
6113
+ formatNumber: (value) => defaultNumber.format(value)
6114
+ };
6115
+ var STATUS_ICON = {
6116
+ ok: CircleCheckIcon,
6117
+ warning: TriangleAlertIcon,
6118
+ critical: OctagonAlertIcon,
6119
+ unknown: CircleQuestionMarkIcon
6120
+ };
6121
+ function InsightCard({
6122
+ eyebrow,
6123
+ headline,
6124
+ sowhat,
6125
+ status,
6126
+ kpis,
6127
+ coverage,
6128
+ actions,
6129
+ source,
6130
+ updated,
6131
+ layout = "stack",
6132
+ variant = "card",
6133
+ aside,
6134
+ headingLevel = 3,
6135
+ labels: labelOverrides,
6136
+ className,
6137
+ children,
6138
+ ...props
6139
+ }) {
6140
+ const labels = { ...DEFAULT_INSIGHT_CARD_LABELS, ...labelOverrides };
6141
+ const Heading = `h${headingLevel}`;
6142
+ const StatusIcon = status ? STATUS_ICON[status.tone] : null;
6143
+ const percent = coverage && coverage.total > 0 ? Math.round(coverage.covered / coverage.total * 100) : null;
6144
+ const hasFooter = coverage != null || source != null || updated != null || actions != null;
6145
+ return /* @__PURE__ */ (0, import_jsx_runtime57.jsxs)("article", { className: cx("uix-insight", variant === "plain" && "uix-insight--plain", className), "data-layout": layout, ...props, children: [
6146
+ /* @__PURE__ */ (0, import_jsx_runtime57.jsxs)("header", { className: "uix-insight__header", children: [
6147
+ /* @__PURE__ */ (0, import_jsx_runtime57.jsxs)("div", { className: "uix-insight__heading", children: [
6148
+ eyebrow != null ? /* @__PURE__ */ (0, import_jsx_runtime57.jsx)("div", { className: "uix-insight__eyebrow", children: eyebrow }) : null,
6149
+ /* @__PURE__ */ (0, import_jsx_runtime57.jsx)(Heading, { className: "uix-insight__headline", children: headline }),
6150
+ sowhat != null ? /* @__PURE__ */ (0, import_jsx_runtime57.jsx)("p", { className: "uix-insight__sowhat", children: sowhat }) : null
6151
+ ] }),
6152
+ status && StatusIcon ? /* @__PURE__ */ (0, import_jsx_runtime57.jsxs)("span", { className: "uix-insight__status", "data-tone": status.tone, children: [
6153
+ /* @__PURE__ */ (0, import_jsx_runtime57.jsx)(StatusIcon, { size: "sm", "aria-hidden": "true" }),
6154
+ /* @__PURE__ */ (0, import_jsx_runtime57.jsx)("span", { children: status.label })
6155
+ ] }) : null
6156
+ ] }),
6157
+ kpis?.length ? /* @__PURE__ */ (0, import_jsx_runtime57.jsx)("dl", { className: "uix-insight__kpis", "aria-label": labels.kpis, children: kpis.map((kpi, index) => /* @__PURE__ */ (0, import_jsx_runtime57.jsxs)("div", { className: "uix-insight__kpi", children: [
6158
+ /* @__PURE__ */ (0, import_jsx_runtime57.jsx)("dt", { className: "uix-insight__kpi-label", children: kpi.label }),
6159
+ /* @__PURE__ */ (0, import_jsx_runtime57.jsx)("dd", { className: "uix-insight__kpi-value", children: kpi.value }),
6160
+ kpi.comparison ? /* @__PURE__ */ (0, import_jsx_runtime57.jsx)("dd", { className: "uix-insight__kpi-comparison", "data-tone": kpi.comparison.tone ?? "neutral", children: kpi.comparison.text }) : null,
6161
+ kpi.target ? /* @__PURE__ */ (0, import_jsx_runtime57.jsx)("dd", { className: "uix-insight__kpi-target", children: /* @__PURE__ */ (0, import_jsx_runtime57.jsx)(Bullet, { ...kpi.target, label: labels.bullet(labels.formatNumber(kpi.target.actual), labels.formatNumber(kpi.target.target)) }) }) : null
6162
+ ] }, index)) }) : null,
6163
+ children != null || aside != null ? /* @__PURE__ */ (0, import_jsx_runtime57.jsxs)("div", { className: "uix-insight__body", children: [
6164
+ children != null ? /* @__PURE__ */ (0, import_jsx_runtime57.jsx)("div", { className: "uix-insight__main", children }) : null,
6165
+ aside != null ? /* @__PURE__ */ (0, import_jsx_runtime57.jsx)("div", { className: "uix-insight__aside", children: aside }) : null
6166
+ ] }) : null,
6167
+ hasFooter ? /* @__PURE__ */ (0, import_jsx_runtime57.jsxs)("footer", { className: "uix-insight__footer", children: [
6168
+ /* @__PURE__ */ (0, import_jsx_runtime57.jsxs)("div", { className: "uix-insight__meta", children: [
6169
+ coverage && percent != null ? /* @__PURE__ */ (0, import_jsx_runtime57.jsxs)("p", { className: "uix-insight__coverage", children: [
6170
+ labels.coverage(coverage.covered, coverage.total, percent, coverage.note),
6171
+ coverage.partialPeriod != null ? /* @__PURE__ */ (0, import_jsx_runtime57.jsx)("span", { className: "uix-insight__partial", children: coverage.partialPeriod }) : null
6172
+ ] }) : null,
6173
+ source != null || updated != null ? /* @__PURE__ */ (0, import_jsx_runtime57.jsxs)("p", { className: "uix-insight__source", children: [
6174
+ source != null ? /* @__PURE__ */ (0, import_jsx_runtime57.jsxs)("span", { children: [
6175
+ labels.source,
6176
+ ": ",
6177
+ source
6178
+ ] }) : null,
6179
+ updated != null ? /* @__PURE__ */ (0, import_jsx_runtime57.jsxs)("span", { children: [
6180
+ labels.updated,
6181
+ ": ",
6182
+ updated
6183
+ ] }) : null
6184
+ ] }) : null
6185
+ ] }),
6186
+ actions != null ? /* @__PURE__ */ (0, import_jsx_runtime57.jsx)("div", { className: "uix-insight__actions", children: actions }) : null
6187
+ ] }) : null
6188
+ ] });
6189
+ }
6190
+ function Bullet({ actual, target, ranges, max, label, className, style, ...props }) {
6191
+ const end = Math.max(max ?? 0, ...(ranges ?? []).map((r) => r[1]), actual, target, 0) * (max ? 1 : 1.1) || 1;
6192
+ const pct = (value) => `${Math.max(0, Math.min(100, value / end * 100))}%`;
6193
+ return /* @__PURE__ */ (0, import_jsx_runtime57.jsxs)("div", { className: cx("uix-bullet", className), role: "img", "aria-label": label, style, ...props, children: [
6194
+ (ranges ?? []).map(([from, to], index) => /* @__PURE__ */ (0, import_jsx_runtime57.jsx)(
6195
+ "span",
6196
+ {
6197
+ className: "uix-bullet__range",
6198
+ "data-band": Math.min(index, 2),
6199
+ style: { left: pct(from), width: `calc(${pct(to)} - ${pct(from)})` }
6200
+ },
6201
+ index
6202
+ )),
6203
+ /* @__PURE__ */ (0, import_jsx_runtime57.jsx)("span", { className: "uix-bullet__bar", style: { width: pct(actual) } }),
6204
+ /* @__PURE__ */ (0, import_jsx_runtime57.jsx)("span", { className: "uix-bullet__target", style: { left: pct(target) } })
6205
+ ] });
6206
+ }
6207
+
6208
+ // src/chart-stats.ts
6209
+ var finite = (value) => typeof value === "number" && Number.isFinite(value);
6210
+ function linearFit(points) {
6211
+ const usable = points.filter((p) => finite(p.x) && finite(p.y));
6212
+ const n = usable.length;
6213
+ if (n < 2) return null;
6214
+ let sumX = 0;
6215
+ let sumY = 0;
6216
+ for (const p of usable) {
6217
+ sumX += p.x;
6218
+ sumY += p.y;
6219
+ }
6220
+ const xMean = sumX / n;
6221
+ const yMean = sumY / n;
6222
+ let sxx = 0;
6223
+ let syy = 0;
6224
+ let sxy = 0;
6225
+ for (const p of usable) {
6226
+ const dx = p.x - xMean;
6227
+ const dy = p.y - yMean;
6228
+ sxx += dx * dx;
6229
+ syy += dy * dy;
6230
+ sxy += dx * dy;
6231
+ }
6232
+ if (sxx === 0) return null;
6233
+ const slope = sxy / sxx;
6234
+ const intercept = yMean - slope * xMean;
6235
+ let sse = 0;
6236
+ for (const p of usable) {
6237
+ const residual = p.y - (intercept + slope * p.x);
6238
+ sse += residual * residual;
6239
+ }
6240
+ const r = syy === 0 ? null : Math.max(-1, Math.min(1, sxy / Math.sqrt(sxx * syy)));
6241
+ const residualStdError = n > 2 ? Math.sqrt(sse / (n - 2)) : 0;
6242
+ return { slope, intercept, r, n, xMean, sxx, residualStdError };
6243
+ }
6244
+ function quantiles(values, ps) {
6245
+ const sorted = values.filter(finite).slice().sort((a, b) => a - b);
6246
+ return ps.map((p) => {
6247
+ if (!sorted.length || !finite(p)) return null;
6248
+ const clamped = Math.max(0, Math.min(1, p));
6249
+ const h = (sorted.length - 1) * clamped;
6250
+ const lo = Math.floor(h);
6251
+ const hi = Math.ceil(h);
6252
+ return sorted[lo] + (h - lo) * (sorted[hi] - sorted[lo]);
6253
+ });
6254
+ }
6255
+ function normalQuantile(p) {
6256
+ if (!(p > 0 && p < 1)) return p === 0 ? -Infinity : p === 1 ? Infinity : Number.NaN;
6257
+ const a = [-39.69683028665376, 220.9460984245205, -275.9285104469687, 138.357751867269, -30.66479806614716, 2.506628277459239];
6258
+ const b = [-54.47609879822406, 161.5858368580409, -155.6989798598866, 66.80131188771972, -13.28068155288572];
6259
+ const c = [-0.007784894002430293, -0.3223964580411365, -2.400758277161838, -2.549732539343734, 4.374664141464968, 2.938163982698783];
6260
+ const d = [0.007784695709041462, 0.3224671290700398, 2.445134137142996, 3.754408661907416];
6261
+ const low = 0.02425;
6262
+ if (p < low) {
6263
+ const q2 = Math.sqrt(-2 * Math.log(p));
6264
+ return (((((c[0] * q2 + c[1]) * q2 + c[2]) * q2 + c[3]) * q2 + c[4]) * q2 + c[5]) / ((((d[0] * q2 + d[1]) * q2 + d[2]) * q2 + d[3]) * q2 + 1);
6265
+ }
6266
+ if (p > 1 - low) {
6267
+ const q2 = Math.sqrt(-2 * Math.log(1 - p));
6268
+ return -(((((c[0] * q2 + c[1]) * q2 + c[2]) * q2 + c[3]) * q2 + c[4]) * q2 + c[5]) / ((((d[0] * q2 + d[1]) * q2 + d[2]) * q2 + d[3]) * q2 + 1);
6269
+ }
6270
+ const q = p - 0.5;
6271
+ const r = q * q;
6272
+ return (((((a[0] * r + a[1]) * r + a[2]) * r + a[3]) * r + a[4]) * r + a[5]) * q / (((((b[0] * r + b[1]) * r + b[2]) * r + b[3]) * r + b[4]) * r + 1);
6273
+ }
6274
+ function studentTQuantile(p, df) {
6275
+ const z = normalQuantile(p);
6276
+ if (!Number.isFinite(z) || !(df > 0)) return z;
6277
+ const z3 = z ** 3;
6278
+ const z5 = z ** 5;
6279
+ const z7 = z ** 7;
6280
+ return z + (z3 + z) / (4 * df) + (5 * z5 + 16 * z3 + 3 * z) / (96 * df ** 2) + (3 * z7 + 19 * z5 + 17 * z3 - 15 * z) / (384 * df ** 3);
6281
+ }
6282
+ function predictionBand(fit, xs, level = 0.8) {
6283
+ const coverage = Math.max(0.01, Math.min(0.999, level));
6284
+ const t = fit.n > 2 ? studentTQuantile(1 - (1 - coverage) / 2, fit.n - 2) : 0;
6285
+ return xs.filter(finite).map((x) => {
6286
+ const y = fit.intercept + fit.slope * x;
6287
+ const spread = t * fit.residualStdError * Math.sqrt(1 + 1 / fit.n + (x - fit.xMean) ** 2 / fit.sxx);
6288
+ return { x, y, lower: y - spread, upper: y + spread };
6289
+ });
6290
+ }
6291
+
6079
6292
  // src/components/Chip.tsx
6080
6293
  var import_react44 = require("react");
6081
6294
 
6082
6295
  // src/components/ChipRemove.tsx
6083
- var import_jsx_runtime57 = require("react/jsx-runtime");
6296
+ var import_jsx_runtime58 = require("react/jsx-runtime");
6084
6297
  function ChipRemoveButton({ label, text, disabled, onRemove }) {
6085
6298
  const provided = useUixLabels().chip?.remove;
6086
6299
  const template = label ?? provided ?? "Remove {label}";
6087
- return /* @__PURE__ */ (0, import_jsx_runtime57.jsx)("button", { type: "button", className: "uix-chip__remove", "aria-label": fillLabel(template, { label: text }).trim(), disabled, onClick: onRemove, children: /* @__PURE__ */ (0, import_jsx_runtime57.jsx)(XIcon, {}) });
6300
+ return /* @__PURE__ */ (0, import_jsx_runtime58.jsx)("button", { type: "button", className: "uix-chip__remove", "aria-label": fillLabel(template, { label: text }).trim(), disabled, onClick: onRemove, children: /* @__PURE__ */ (0, import_jsx_runtime58.jsx)(XIcon, {}) });
6088
6301
  }
6089
6302
 
6090
6303
  // src/components/Chip.tsx
6091
- var import_jsx_runtime58 = require("react/jsx-runtime");
6304
+ var import_jsx_runtime59 = require("react/jsx-runtime");
6092
6305
  var Chip = (0, import_react44.forwardRef)(function Chip2({
6093
6306
  children,
6094
6307
  icon,
@@ -6111,10 +6324,10 @@ var Chip = (0, import_react44.forwardRef)(function Chip2({
6111
6324
  const interactive = toggle || onClick != null || href != null;
6112
6325
  const link = href != null && !disabled;
6113
6326
  const on = pressed || link && current || void 0;
6114
- const body = /* @__PURE__ */ (0, import_jsx_runtime58.jsxs)(import_jsx_runtime58.Fragment, { children: [
6115
- icon != null && /* @__PURE__ */ (0, import_jsx_runtime58.jsx)("span", { className: "uix-chip__icon", "aria-hidden": "true", children: icon }),
6116
- /* @__PURE__ */ (0, import_jsx_runtime58.jsx)("span", { className: "uix-chip__label", children }),
6117
- count2 != null && /* @__PURE__ */ (0, import_jsx_runtime58.jsx)("span", { className: "uix-chip__count", children: count2 })
6327
+ const body = /* @__PURE__ */ (0, import_jsx_runtime59.jsxs)(import_jsx_runtime59.Fragment, { children: [
6328
+ icon != null && /* @__PURE__ */ (0, import_jsx_runtime59.jsx)("span", { className: "uix-chip__icon", "aria-hidden": "true", children: icon }),
6329
+ /* @__PURE__ */ (0, import_jsx_runtime59.jsx)("span", { className: "uix-chip__label", children }),
6330
+ count2 != null && /* @__PURE__ */ (0, import_jsx_runtime59.jsx)("span", { className: "uix-chip__count", children: count2 })
6118
6331
  ] });
6119
6332
  const handleClick = () => {
6120
6333
  if (disabled) return;
@@ -6141,7 +6354,7 @@ var Chip = (0, import_react44.forwardRef)(function Chip2({
6141
6354
  });
6142
6355
  }
6143
6356
  if (interactive) {
6144
- return /* @__PURE__ */ (0, import_jsx_runtime58.jsx)(
6357
+ return /* @__PURE__ */ (0, import_jsx_runtime59.jsx)(
6145
6358
  "button",
6146
6359
  {
6147
6360
  type: "button",
@@ -6156,14 +6369,14 @@ var Chip = (0, import_react44.forwardRef)(function Chip2({
6156
6369
  }
6157
6370
  );
6158
6371
  }
6159
- return /* @__PURE__ */ (0, import_jsx_runtime58.jsx)("span", { className: classes, ...extra, ...bodyProps, ref, children: body });
6372
+ return /* @__PURE__ */ (0, import_jsx_runtime59.jsx)("span", { className: classes, ...extra, ...bodyProps, ref, children: body });
6160
6373
  };
6161
6374
  if (!onRemove) {
6162
- return /* @__PURE__ */ (0, import_jsx_runtime58.jsx)(import_jsx_runtime58.Fragment, { children: main(outer, { ...props, "data-on": on }) });
6375
+ return /* @__PURE__ */ (0, import_jsx_runtime59.jsx)(import_jsx_runtime59.Fragment, { children: main(outer, { ...props, "data-on": on }) });
6163
6376
  }
6164
- return /* @__PURE__ */ (0, import_jsx_runtime58.jsxs)("span", { className: outer, "data-on": on, ...props, children: [
6377
+ return /* @__PURE__ */ (0, import_jsx_runtime59.jsxs)("span", { className: outer, "data-on": on, ...props, children: [
6165
6378
  main("uix-chip__main"),
6166
- /* @__PURE__ */ (0, import_jsx_runtime58.jsx)(
6379
+ /* @__PURE__ */ (0, import_jsx_runtime59.jsx)(
6167
6380
  ChipRemoveButton,
6168
6381
  {
6169
6382
  label: removeLabel,
@@ -6175,14 +6388,14 @@ var Chip = (0, import_react44.forwardRef)(function Chip2({
6175
6388
  ] });
6176
6389
  });
6177
6390
  function ChipGroup({ label, children, className, ...props }) {
6178
- return /* @__PURE__ */ (0, import_jsx_runtime58.jsx)("div", { role: "group", "aria-label": label, className: cx("uix-chip-group", className), ...props, children });
6391
+ return /* @__PURE__ */ (0, import_jsx_runtime59.jsx)("div", { role: "group", "aria-label": label, className: cx("uix-chip-group", className), ...props, children });
6179
6392
  }
6180
6393
 
6181
6394
  // src/components/Kbd.tsx
6182
6395
  var import_react45 = require("react");
6183
- var import_jsx_runtime59 = require("react/jsx-runtime");
6396
+ var import_jsx_runtime60 = require("react/jsx-runtime");
6184
6397
  function Kbd({ className, children, ...props }) {
6185
- return /* @__PURE__ */ (0, import_jsx_runtime59.jsx)("kbd", { className: cx("uix-kbd", className), ...props, children });
6398
+ return /* @__PURE__ */ (0, import_jsx_runtime60.jsx)("kbd", { className: cx("uix-kbd", className), ...props, children });
6186
6399
  }
6187
6400
  var KEYS = {
6188
6401
  Mod: { mac: ["\u2318", "Command"], other: ["Ctrl", "Control"] },
@@ -6213,15 +6426,15 @@ function KbdCombo({ keys, platform, keyLabels, className, ...props }) {
6213
6426
  const known = KEYS[key]?.[active];
6214
6427
  return { glyph: known?.[0] ?? key, spoken: keyLabels?.[key] ?? known?.[1] ?? key };
6215
6428
  });
6216
- return /* @__PURE__ */ (0, import_jsx_runtime59.jsxs)("span", { className: cx("uix-kbd-combo", className), ...props, children: [
6217
- /* @__PURE__ */ (0, import_jsx_runtime59.jsx)("span", { className: "uix-visually-hidden", children: parts.map((p) => p.spoken).join("+") }),
6218
- /* @__PURE__ */ (0, import_jsx_runtime59.jsx)("span", { className: "uix-kbd-combo__keys", "aria-hidden": "true", children: parts.map((p, i) => /* @__PURE__ */ (0, import_jsx_runtime59.jsx)("kbd", { className: "uix-kbd", children: p.glyph }, `${keys[i]}-${i}`)) })
6429
+ return /* @__PURE__ */ (0, import_jsx_runtime60.jsxs)("span", { className: cx("uix-kbd-combo", className), ...props, children: [
6430
+ /* @__PURE__ */ (0, import_jsx_runtime60.jsx)("span", { className: "uix-visually-hidden", children: parts.map((p) => p.spoken).join("+") }),
6431
+ /* @__PURE__ */ (0, import_jsx_runtime60.jsx)("span", { className: "uix-kbd-combo__keys", "aria-hidden": "true", children: parts.map((p, i) => /* @__PURE__ */ (0, import_jsx_runtime60.jsx)("kbd", { className: "uix-kbd", children: p.glyph }, `${keys[i]}-${i}`)) })
6219
6432
  ] });
6220
6433
  }
6221
6434
 
6222
6435
  // src/components/Steps.tsx
6223
6436
  var import_react46 = require("react");
6224
- var import_jsx_runtime60 = require("react/jsx-runtime");
6437
+ var import_jsx_runtime61 = require("react/jsx-runtime");
6225
6438
  var DEFAULT_STEP_STATE_LABELS = {
6226
6439
  complete: "Completed",
6227
6440
  current: "Current step",
@@ -6230,12 +6443,12 @@ var DEFAULT_STEP_STATE_LABELS = {
6230
6443
  error: "Needs attention"
6231
6444
  };
6232
6445
  var CSS_STATE = { complete: "done", current: "active", upcoming: void 0, waiting: "waiting", error: "error" };
6233
- var Check = () => /* @__PURE__ */ (0, import_jsx_runtime60.jsx)("svg", { viewBox: "0 0 16 16", width: "12", height: "12", fill: "none", stroke: "currentColor", strokeWidth: 2.25, strokeLinecap: "round", strokeLinejoin: "round", "aria-hidden": "true", children: /* @__PURE__ */ (0, import_jsx_runtime60.jsx)("path", { d: "M3.5 8.5l3 3 6-7" }) });
6446
+ var Check = () => /* @__PURE__ */ (0, import_jsx_runtime61.jsx)("svg", { viewBox: "0 0 16 16", width: "12", height: "12", fill: "none", stroke: "currentColor", strokeWidth: 2.25, strokeLinecap: "round", strokeLinejoin: "round", "aria-hidden": "true", children: /* @__PURE__ */ (0, import_jsx_runtime61.jsx)("path", { d: "M3.5 8.5l3 3 6-7" }) });
6234
6447
  function Steps({ orientation = "horizontal", progress = true, headingLevel, label, stateLabels, className, children, ...props }) {
6235
6448
  const labels = { ...DEFAULT_STEP_STATE_LABELS, ...stateLabels };
6236
6449
  const steps = import_react46.Children.toArray(children).filter(import_react46.isValidElement);
6237
6450
  const direction = progress ? orientation : "vertical";
6238
- return /* @__PURE__ */ (0, import_jsx_runtime60.jsx)("ol", { "aria-label": label, className: cx("uix-steps", "uix-steps--list", `uix-steps--${direction}`, !progress && "uix-steps--sections", className), ...props, children: steps.map((step, index) => (0, import_react46.cloneElement)(step, { index, last: index === steps.length - 1, stateLabels: labels, progress, headingLevel })) });
6451
+ return /* @__PURE__ */ (0, import_jsx_runtime61.jsx)("ol", { "aria-label": label, className: cx("uix-steps", "uix-steps--list", `uix-steps--${direction}`, !progress && "uix-steps--sections", className), ...props, children: steps.map((step, index) => (0, import_react46.cloneElement)(step, { index, last: index === steps.length - 1, stateLabels: labels, progress, headingLevel })) });
6239
6452
  }
6240
6453
  function Step({
6241
6454
  title,
@@ -6255,18 +6468,18 @@ function Step({
6255
6468
  ...props
6256
6469
  }) {
6257
6470
  const titleId = (0, import_react46.useId)();
6258
- const glyph = marker ?? (!progress ? index + 1 : state === "complete" ? /* @__PURE__ */ (0, import_jsx_runtime60.jsx)(Check, {}) : state === "error" ? "!" : index + 1);
6471
+ const glyph = marker ?? (!progress ? index + 1 : state === "complete" ? /* @__PURE__ */ (0, import_jsx_runtime61.jsx)(Check, {}) : state === "error" ? "!" : index + 1);
6259
6472
  const Title = headingLevel ? `h${headingLevel}` : "span";
6260
- const name = /* @__PURE__ */ (0, import_jsx_runtime60.jsxs)(import_jsx_runtime60.Fragment, { children: [
6261
- /* @__PURE__ */ (0, import_jsx_runtime60.jsx)(Title, { id: children != null ? titleId : void 0, className: "uix-step__title", children: title }),
6262
- progress && /* @__PURE__ */ (0, import_jsx_runtime60.jsxs)("span", { className: "uix-visually-hidden", children: [
6473
+ const name = /* @__PURE__ */ (0, import_jsx_runtime61.jsxs)(import_jsx_runtime61.Fragment, { children: [
6474
+ /* @__PURE__ */ (0, import_jsx_runtime61.jsx)(Title, { id: children != null ? titleId : void 0, className: "uix-step__title", children: title }),
6475
+ progress && /* @__PURE__ */ (0, import_jsx_runtime61.jsxs)("span", { className: "uix-visually-hidden", children: [
6263
6476
  ", ",
6264
6477
  stateLabels[state]
6265
6478
  ] })
6266
6479
  ] });
6267
- const titled = headingLevel ? name : href != null ? renderUixLink(renderLink, { href, className: "uix-step__action", children: name }) : onSelect ? /* @__PURE__ */ (0, import_jsx_runtime60.jsx)("button", { type: "button", className: "uix-step__action", onClick: onSelect, children: name }) : /* @__PURE__ */ (0, import_jsx_runtime60.jsx)("span", { className: "uix-step__action", children: name });
6480
+ const titled = headingLevel ? name : href != null ? renderUixLink(renderLink, { href, className: "uix-step__action", children: name }) : onSelect ? /* @__PURE__ */ (0, import_jsx_runtime61.jsx)("button", { type: "button", className: "uix-step__action", onClick: onSelect, children: name }) : /* @__PURE__ */ (0, import_jsx_runtime61.jsx)("span", { className: "uix-step__action", children: name });
6268
6481
  const Text = headingLevel || children != null ? "div" : "span";
6269
- return /* @__PURE__ */ (0, import_jsx_runtime60.jsxs)(
6482
+ return /* @__PURE__ */ (0, import_jsx_runtime61.jsxs)(
6270
6483
  "li",
6271
6484
  {
6272
6485
  className: cx("uix-step", className),
@@ -6274,13 +6487,13 @@ function Step({
6274
6487
  "aria-current": progress && state === "current" ? "step" : void 0,
6275
6488
  ...props,
6276
6489
  children: [
6277
- /* @__PURE__ */ (0, import_jsx_runtime60.jsx)("span", { className: "uix-step__marker", "aria-hidden": "true", children: glyph }),
6278
- /* @__PURE__ */ (0, import_jsx_runtime60.jsxs)(Text, { className: "uix-step__text", children: [
6490
+ /* @__PURE__ */ (0, import_jsx_runtime61.jsx)("span", { className: "uix-step__marker", "aria-hidden": "true", children: glyph }),
6491
+ /* @__PURE__ */ (0, import_jsx_runtime61.jsxs)(Text, { className: "uix-step__text", children: [
6279
6492
  titled,
6280
- description != null && /* @__PURE__ */ (0, import_jsx_runtime60.jsx)("span", { className: "uix-step__desc", children: description }),
6281
- children != null && /* @__PURE__ */ (0, import_jsx_runtime60.jsx)("div", { className: "uix-step__content", role: "group", "aria-labelledby": titleId, children })
6493
+ description != null && /* @__PURE__ */ (0, import_jsx_runtime61.jsx)("span", { className: "uix-step__desc", children: description }),
6494
+ children != null && /* @__PURE__ */ (0, import_jsx_runtime61.jsx)("div", { className: "uix-step__content", role: "group", "aria-labelledby": titleId, children })
6282
6495
  ] }),
6283
- !last && /* @__PURE__ */ (0, import_jsx_runtime60.jsx)("span", { className: "uix-step__connector", "aria-hidden": "true", "data-done": progress && state === "complete" || void 0 })
6496
+ !last && /* @__PURE__ */ (0, import_jsx_runtime61.jsx)("span", { className: "uix-step__connector", "aria-hidden": "true", "data-done": progress && state === "complete" || void 0 })
6284
6497
  ]
6285
6498
  }
6286
6499
  );
@@ -6288,7 +6501,7 @@ function Step({
6288
6501
 
6289
6502
  // src/components/Tooltip.tsx
6290
6503
  var import_react47 = require("react");
6291
- var import_jsx_runtime61 = require("react/jsx-runtime");
6504
+ var import_jsx_runtime62 = require("react/jsx-runtime");
6292
6505
  function Tooltip({ label, content, placement = "top", className, children, ...props }) {
6293
6506
  const triggerRef = (0, import_react47.useRef)(null);
6294
6507
  const bubbleRef = (0, import_react47.useRef)(null);
@@ -6351,7 +6564,7 @@ function Tooltip({ label, content, placement = "top", className, children, ...pr
6351
6564
  const child = single ? (0, import_react47.cloneElement)(children, {
6352
6565
  "aria-describedby": [children.props["aria-describedby"], id].filter(Boolean).join(" ")
6353
6566
  }) : children;
6354
- return /* @__PURE__ */ (0, import_jsx_runtime61.jsxs)(
6567
+ return /* @__PURE__ */ (0, import_jsx_runtime62.jsxs)(
6355
6568
  "span",
6356
6569
  {
6357
6570
  ref: triggerRef,
@@ -6368,7 +6581,7 @@ function Tooltip({ label, content, placement = "top", className, children, ...pr
6368
6581
  ...props,
6369
6582
  children: [
6370
6583
  child,
6371
- /* @__PURE__ */ (0, import_jsx_runtime61.jsx)(
6584
+ /* @__PURE__ */ (0, import_jsx_runtime62.jsx)(
6372
6585
  "span",
6373
6586
  {
6374
6587
  ref: bubbleRef,
@@ -6387,45 +6600,45 @@ function Tooltip({ label, content, placement = "top", className, children, ...pr
6387
6600
  }
6388
6601
 
6389
6602
  // src/components/States.tsx
6390
- var import_jsx_runtime62 = require("react/jsx-runtime");
6603
+ var import_jsx_runtime63 = require("react/jsx-runtime");
6391
6604
  function EmptyState({ icon, title, children, action, variant = "section", className, ...props }) {
6392
- return /* @__PURE__ */ (0, import_jsx_runtime62.jsxs)("div", { className: cx("uix-empty", `uix-empty--${variant}`, className), ...props, children: [
6393
- icon != null && /* @__PURE__ */ (0, import_jsx_runtime62.jsx)("div", { className: "uix-empty__icon", children: icon }),
6394
- title != null && /* @__PURE__ */ (0, import_jsx_runtime62.jsx)("div", { className: "uix-empty__title", children: title }),
6605
+ return /* @__PURE__ */ (0, import_jsx_runtime63.jsxs)("div", { className: cx("uix-empty", `uix-empty--${variant}`, className), ...props, children: [
6606
+ icon != null && /* @__PURE__ */ (0, import_jsx_runtime63.jsx)("div", { className: "uix-empty__icon", children: icon }),
6607
+ title != null && /* @__PURE__ */ (0, import_jsx_runtime63.jsx)("div", { className: "uix-empty__title", children: title }),
6395
6608
  children,
6396
6609
  action
6397
6610
  ] });
6398
6611
  }
6399
6612
  function ErrorState({ icon, title, detail, action, variant = "section", className, ...props }) {
6400
- return /* @__PURE__ */ (0, import_jsx_runtime62.jsxs)("div", { className: cx("uix-empty", "uix-empty--danger", `uix-empty--${variant}`, className), role: "alert", ...props, children: [
6401
- icon != null && /* @__PURE__ */ (0, import_jsx_runtime62.jsx)("div", { className: "uix-empty__icon uix-empty__icon--danger", children: icon }),
6402
- title != null && /* @__PURE__ */ (0, import_jsx_runtime62.jsx)("div", { className: "uix-empty__title", children: title }),
6403
- detail != null && /* @__PURE__ */ (0, import_jsx_runtime62.jsx)("p", { children: detail }),
6613
+ return /* @__PURE__ */ (0, import_jsx_runtime63.jsxs)("div", { className: cx("uix-empty", "uix-empty--danger", `uix-empty--${variant}`, className), role: "alert", ...props, children: [
6614
+ icon != null && /* @__PURE__ */ (0, import_jsx_runtime63.jsx)("div", { className: "uix-empty__icon uix-empty__icon--danger", children: icon }),
6615
+ title != null && /* @__PURE__ */ (0, import_jsx_runtime63.jsx)("div", { className: "uix-empty__title", children: title }),
6616
+ detail != null && /* @__PURE__ */ (0, import_jsx_runtime63.jsx)("p", { children: detail }),
6404
6617
  action
6405
6618
  ] });
6406
6619
  }
6407
6620
  function ForbiddenState({ icon, title, detail, action, variant = "section", className, ...props }) {
6408
- return /* @__PURE__ */ (0, import_jsx_runtime62.jsxs)("div", { className: cx("uix-empty", "uix-empty--warning", `uix-empty--${variant}`, className), ...props, children: [
6409
- icon != null && /* @__PURE__ */ (0, import_jsx_runtime62.jsx)("div", { className: "uix-empty__icon uix-empty__icon--warning", children: icon }),
6410
- title != null && /* @__PURE__ */ (0, import_jsx_runtime62.jsx)("div", { className: "uix-empty__title", children: title }),
6411
- detail != null && /* @__PURE__ */ (0, import_jsx_runtime62.jsx)("p", { children: detail }),
6621
+ return /* @__PURE__ */ (0, import_jsx_runtime63.jsxs)("div", { className: cx("uix-empty", "uix-empty--warning", `uix-empty--${variant}`, className), ...props, children: [
6622
+ icon != null && /* @__PURE__ */ (0, import_jsx_runtime63.jsx)("div", { className: "uix-empty__icon uix-empty__icon--warning", children: icon }),
6623
+ title != null && /* @__PURE__ */ (0, import_jsx_runtime63.jsx)("div", { className: "uix-empty__title", children: title }),
6624
+ detail != null && /* @__PURE__ */ (0, import_jsx_runtime63.jsx)("p", { children: detail }),
6412
6625
  action
6413
6626
  ] });
6414
6627
  }
6415
6628
  function NotFoundState({ icon, title, detail, action, variant = "section", className, ...props }) {
6416
- return /* @__PURE__ */ (0, import_jsx_runtime62.jsxs)("div", { className: cx("uix-empty", `uix-empty--${variant}`, className), ...props, children: [
6417
- icon != null && /* @__PURE__ */ (0, import_jsx_runtime62.jsx)("div", { className: "uix-empty__icon", children: icon }),
6418
- title != null && /* @__PURE__ */ (0, import_jsx_runtime62.jsx)("div", { className: "uix-empty__title", children: title }),
6419
- detail != null && /* @__PURE__ */ (0, import_jsx_runtime62.jsx)("p", { children: detail }),
6629
+ return /* @__PURE__ */ (0, import_jsx_runtime63.jsxs)("div", { className: cx("uix-empty", `uix-empty--${variant}`, className), ...props, children: [
6630
+ icon != null && /* @__PURE__ */ (0, import_jsx_runtime63.jsx)("div", { className: "uix-empty__icon", children: icon }),
6631
+ title != null && /* @__PURE__ */ (0, import_jsx_runtime63.jsx)("div", { className: "uix-empty__title", children: title }),
6632
+ detail != null && /* @__PURE__ */ (0, import_jsx_runtime63.jsx)("p", { children: detail }),
6420
6633
  action
6421
6634
  ] });
6422
6635
  }
6423
6636
  function FilteredEmptyState(props) {
6424
- return /* @__PURE__ */ (0, import_jsx_runtime62.jsx)(EmptyState, { "data-filtered": "true", ...props });
6637
+ return /* @__PURE__ */ (0, import_jsx_runtime63.jsx)(EmptyState, { "data-filtered": "true", ...props });
6425
6638
  }
6426
6639
  function Skeleton({ variant = "block", width, height, className, style, ...props }) {
6427
6640
  const dims = { width, height, ...style };
6428
- return /* @__PURE__ */ (0, import_jsx_runtime62.jsx)(
6641
+ return /* @__PURE__ */ (0, import_jsx_runtime63.jsx)(
6429
6642
  "div",
6430
6643
  {
6431
6644
  className: cx(
@@ -6442,9 +6655,9 @@ function Skeleton({ variant = "block", width, height, className, style, ...props
6442
6655
  function LoadingState({ rows = 3, density = "comfortable", label, className, ...props }) {
6443
6656
  return (
6444
6657
  // no aria-busy: busy=true tells AT the region isn't ready and suppresses the announcement (UIX-A11Y-4)
6445
- /* @__PURE__ */ (0, import_jsx_runtime62.jsxs)("div", { className: cx("uix-stack", density === "compact" && "uix-stack--compact", className), role: "status", ...props, children: [
6446
- /* @__PURE__ */ (0, import_jsx_runtime62.jsx)("span", { className: "uix-visually-hidden", children: label ?? "Loading" }),
6447
- Array.from({ length: rows }, (_, i) => /* @__PURE__ */ (0, import_jsx_runtime62.jsx)(Skeleton, { variant: "text", width: `${92 - i % 3 * 14}%` }, i))
6658
+ /* @__PURE__ */ (0, import_jsx_runtime63.jsxs)("div", { className: cx("uix-stack", density === "compact" && "uix-stack--compact", className), role: "status", ...props, children: [
6659
+ /* @__PURE__ */ (0, import_jsx_runtime63.jsx)("span", { className: "uix-visually-hidden", children: label ?? "Loading" }),
6660
+ Array.from({ length: rows }, (_, i) => /* @__PURE__ */ (0, import_jsx_runtime63.jsx)(Skeleton, { variant: "text", width: `${92 - i % 3 * 14}%` }, i))
6448
6661
  ] })
6449
6662
  );
6450
6663
  }
@@ -6498,7 +6711,7 @@ function subscribeRelativeClock(interval, listener) {
6498
6711
  }
6499
6712
 
6500
6713
  // src/components/RelativeTime.tsx
6501
- var import_jsx_runtime63 = require("react/jsx-runtime");
6714
+ var import_jsx_runtime64 = require("react/jsx-runtime");
6502
6715
  function RelativeTime({
6503
6716
  value,
6504
6717
  now,
@@ -6519,7 +6732,7 @@ function RelativeTime({
6519
6732
  const getServerSnapshot = (0, import_react48.useCallback)(() => fixedNow ?? Date.now(), [fixedNow]);
6520
6733
  const clock = (0, import_react48.useSyncExternalStore)(subscribe, getSnapshot, getServerSnapshot);
6521
6734
  const date = (0, import_react48.useMemo)(() => parseDateValue(value), [value]);
6522
- if (!date) return /* @__PURE__ */ (0, import_jsx_runtime63.jsx)("time", { "data-invalid": "true", suppressHydrationWarning: true, ...props, children: invalidLabel });
6735
+ if (!date) return /* @__PURE__ */ (0, import_jsx_runtime64.jsx)("time", { "data-invalid": "true", suppressHydrationWarning: true, ...props, children: invalidLabel });
6523
6736
  const current = new Date(clock);
6524
6737
  const content = formatter ? formatter({ date, now: current, locale, timeZone }) : (() => {
6525
6738
  const relative = relativeTimeValue(date, current);
@@ -6529,11 +6742,11 @@ function RelativeTime({
6529
6742
  return new Intl.RelativeTimeFormat(locale, { numeric }).format(relative.value, relative.unit);
6530
6743
  })();
6531
6744
  const absolute = new Intl.DateTimeFormat(locale, { dateStyle: "medium", timeStyle: "short", timeZone }).format(date);
6532
- return /* @__PURE__ */ (0, import_jsx_runtime63.jsx)("time", { dateTime: date.toISOString(), title: title ?? absolute, suppressHydrationWarning: true, ...props, children: content });
6745
+ return /* @__PURE__ */ (0, import_jsx_runtime64.jsx)("time", { dateTime: date.toISOString(), title: title ?? absolute, suppressHydrationWarning: true, ...props, children: content });
6533
6746
  }
6534
6747
 
6535
6748
  // src/components/AsyncOperationStatus.tsx
6536
- var import_jsx_runtime64 = require("react/jsx-runtime");
6749
+ var import_jsx_runtime65 = require("react/jsx-runtime");
6537
6750
  var tones = {
6538
6751
  queued: "neutral",
6539
6752
  running: "info",
@@ -6541,29 +6754,29 @@ var tones = {
6541
6754
  failed: "danger"
6542
6755
  };
6543
6756
  function AsyncOperationStatus({ state, title, statusLabel, description, progress, progressLabel, action, className, ...props }) {
6544
- return /* @__PURE__ */ (0, import_jsx_runtime64.jsxs)("div", { className: cx("uix-operation", className), role: state === "failed" ? "alert" : "status", "aria-live": "polite", ...props, children: [
6545
- /* @__PURE__ */ (0, import_jsx_runtime64.jsxs)("div", { className: "uix-operation__head", children: [
6546
- /* @__PURE__ */ (0, import_jsx_runtime64.jsx)("strong", { children: title }),
6547
- /* @__PURE__ */ (0, import_jsx_runtime64.jsx)(StatusPill, { tone: tones[state], children: statusLabel })
6757
+ return /* @__PURE__ */ (0, import_jsx_runtime65.jsxs)("div", { className: cx("uix-operation", className), role: state === "failed" ? "alert" : "status", "aria-live": "polite", ...props, children: [
6758
+ /* @__PURE__ */ (0, import_jsx_runtime65.jsxs)("div", { className: "uix-operation__head", children: [
6759
+ /* @__PURE__ */ (0, import_jsx_runtime65.jsx)("strong", { children: title }),
6760
+ /* @__PURE__ */ (0, import_jsx_runtime65.jsx)(StatusPill, { tone: tones[state], children: statusLabel })
6548
6761
  ] }),
6549
- description != null && /* @__PURE__ */ (0, import_jsx_runtime64.jsx)("div", { className: "uix-operation__description", children: description }),
6550
- progress != null && /* @__PURE__ */ (0, import_jsx_runtime64.jsx)(Progress, { value: progress, "aria-label": progressLabel }),
6551
- action != null && /* @__PURE__ */ (0, import_jsx_runtime64.jsx)("div", { className: "uix-operation__action", children: action })
6762
+ description != null && /* @__PURE__ */ (0, import_jsx_runtime65.jsx)("div", { className: "uix-operation__description", children: description }),
6763
+ progress != null && /* @__PURE__ */ (0, import_jsx_runtime65.jsx)(Progress, { value: progress, "aria-label": progressLabel }),
6764
+ action != null && /* @__PURE__ */ (0, import_jsx_runtime65.jsx)("div", { className: "uix-operation__action", children: action })
6552
6765
  ] });
6553
6766
  }
6554
6767
 
6555
6768
  // src/components/Label.tsx
6556
- var import_jsx_runtime65 = require("react/jsx-runtime");
6769
+ var import_jsx_runtime66 = require("react/jsx-runtime");
6557
6770
  function Label({ color, dot, children, className, style, ...props }) {
6558
6771
  const merged = color ? { "--label-color": color, ...style } : style;
6559
- return /* @__PURE__ */ (0, import_jsx_runtime65.jsxs)("span", { className: cx("uix-label", className), style: merged, ...props, children: [
6560
- dot && /* @__PURE__ */ (0, import_jsx_runtime65.jsx)("span", { className: "uix-label__dot", "aria-hidden": "true" }),
6772
+ return /* @__PURE__ */ (0, import_jsx_runtime66.jsxs)("span", { className: cx("uix-label", className), style: merged, ...props, children: [
6773
+ dot && /* @__PURE__ */ (0, import_jsx_runtime66.jsx)("span", { className: "uix-label__dot", "aria-hidden": "true" }),
6561
6774
  children
6562
6775
  ] });
6563
6776
  }
6564
6777
 
6565
6778
  // src/components/Avatar.tsx
6566
- var import_jsx_runtime66 = require("react/jsx-runtime");
6779
+ var import_jsx_runtime67 = require("react/jsx-runtime");
6567
6780
  var DEFAULT_PRESENCE_LABELS = {
6568
6781
  online: "online",
6569
6782
  busy: "busy",
@@ -6573,15 +6786,15 @@ var DEFAULT_PRESENCE_LABELS = {
6573
6786
  function Avatar({ size = "md", src, alt, children, status, presence, presenceLabels, onlineLabel, className, ...props }) {
6574
6787
  const state = presence ?? (status ? "online" : void 0);
6575
6788
  const word = state && (presenceLabels?.[state] ?? (state === "online" ? onlineLabel : void 0) ?? DEFAULT_PRESENCE_LABELS[state]);
6576
- return /* @__PURE__ */ (0, import_jsx_runtime66.jsxs)("span", { className: cx("uix-avatar", size !== "md" && `uix-avatar--${size}`, className), ...props, children: [
6577
- src ? /* @__PURE__ */ (0, import_jsx_runtime66.jsx)("img", { src, alt: alt ?? "" }) : children,
6578
- state && /* @__PURE__ */ (0, import_jsx_runtime66.jsx)("span", { className: "uix-avatar__status", "data-presence": state === "online" ? void 0 : state, "aria-hidden": "true" }),
6579
- state && /* @__PURE__ */ (0, import_jsx_runtime66.jsx)("span", { className: "uix-visually-hidden", children: word })
6789
+ return /* @__PURE__ */ (0, import_jsx_runtime67.jsxs)("span", { className: cx("uix-avatar", size !== "md" && `uix-avatar--${size}`, className), ...props, children: [
6790
+ src ? /* @__PURE__ */ (0, import_jsx_runtime67.jsx)("img", { src, alt: alt ?? "" }) : children,
6791
+ state && /* @__PURE__ */ (0, import_jsx_runtime67.jsx)("span", { className: "uix-avatar__status", "data-presence": state === "online" ? void 0 : state, "aria-hidden": "true" }),
6792
+ state && /* @__PURE__ */ (0, import_jsx_runtime67.jsx)("span", { className: "uix-visually-hidden", children: word })
6580
6793
  ] });
6581
6794
  }
6582
6795
  function PresenceDot({ presence, label, className, ...props }) {
6583
6796
  const decorative = label === null;
6584
- return /* @__PURE__ */ (0, import_jsx_runtime66.jsx)(
6797
+ return /* @__PURE__ */ (0, import_jsx_runtime67.jsx)(
6585
6798
  "span",
6586
6799
  {
6587
6800
  className: cx("uix-presence", `uix-presence--${presence}`, className),
@@ -6593,23 +6806,23 @@ function PresenceDot({ presence, label, className, ...props }) {
6593
6806
  );
6594
6807
  }
6595
6808
  function AvatarGroup({ children, className, ...props }) {
6596
- return /* @__PURE__ */ (0, import_jsx_runtime66.jsx)("span", { className: cx("uix-avatar-group", className), ...props, children });
6809
+ return /* @__PURE__ */ (0, import_jsx_runtime67.jsx)("span", { className: cx("uix-avatar-group", className), ...props, children });
6597
6810
  }
6598
6811
  function UserChip({ avatar, name, sub, className, children, ...props }) {
6599
- return /* @__PURE__ */ (0, import_jsx_runtime66.jsxs)("span", { className: cx("uix-user-chip", className), ...props, children: [
6812
+ return /* @__PURE__ */ (0, import_jsx_runtime67.jsxs)("span", { className: cx("uix-user-chip", className), ...props, children: [
6600
6813
  avatar,
6601
- /* @__PURE__ */ (0, import_jsx_runtime66.jsxs)("span", { children: [
6602
- name != null && /* @__PURE__ */ (0, import_jsx_runtime66.jsx)("span", { className: "uix-user-chip__name", children: name }),
6603
- sub != null && /* @__PURE__ */ (0, import_jsx_runtime66.jsx)("span", { className: "uix-user-chip__sub", style: { display: "block" }, children: sub })
6814
+ /* @__PURE__ */ (0, import_jsx_runtime67.jsxs)("span", { children: [
6815
+ name != null && /* @__PURE__ */ (0, import_jsx_runtime67.jsx)("span", { className: "uix-user-chip__name", children: name }),
6816
+ sub != null && /* @__PURE__ */ (0, import_jsx_runtime67.jsx)("span", { className: "uix-user-chip__sub", style: { display: "block" }, children: sub })
6604
6817
  ] }),
6605
6818
  children
6606
6819
  ] });
6607
6820
  }
6608
6821
 
6609
6822
  // src/components/Comments.tsx
6610
- var import_jsx_runtime67 = require("react/jsx-runtime");
6823
+ var import_jsx_runtime68 = require("react/jsx-runtime");
6611
6824
  function Comments({ children, className, ...props }) {
6612
- return /* @__PURE__ */ (0, import_jsx_runtime67.jsx)("div", { role: "log", className: cx("uix-comments", className), ...props, children });
6825
+ return /* @__PURE__ */ (0, import_jsx_runtime68.jsx)("div", { role: "log", className: cx("uix-comments", className), ...props, children });
6613
6826
  }
6614
6827
  function Comment({
6615
6828
  avatar,
@@ -6625,23 +6838,23 @@ function Comment({
6625
6838
  }) {
6626
6839
  const system = variant === "system";
6627
6840
  const byline = author ?? (system ? systemLabel : void 0);
6628
- return /* @__PURE__ */ (0, import_jsx_runtime67.jsxs)(
6841
+ return /* @__PURE__ */ (0, import_jsx_runtime68.jsxs)(
6629
6842
  "div",
6630
6843
  {
6631
6844
  className: cx("uix-comment", system && "uix-comment--system", className),
6632
6845
  "data-variant": system ? "system" : void 0,
6633
6846
  ...props,
6634
6847
  children: [
6635
- avatar ?? /* @__PURE__ */ (0, import_jsx_runtime67.jsx)("span", { "aria-hidden": "true" }),
6636
- /* @__PURE__ */ (0, import_jsx_runtime67.jsxs)("div", { className: "uix-comment__body", children: [
6637
- (byline != null || meta != null) && /* @__PURE__ */ (0, import_jsx_runtime67.jsxs)("div", { className: "uix-comment__meta", children: [
6638
- byline != null && /* @__PURE__ */ (0, import_jsx_runtime67.jsx)("span", { className: "uix-comment__author", children: byline }),
6848
+ avatar ?? /* @__PURE__ */ (0, import_jsx_runtime68.jsx)("span", { "aria-hidden": "true" }),
6849
+ /* @__PURE__ */ (0, import_jsx_runtime68.jsxs)("div", { className: "uix-comment__body", children: [
6850
+ (byline != null || meta != null) && /* @__PURE__ */ (0, import_jsx_runtime68.jsxs)("div", { className: "uix-comment__meta", children: [
6851
+ byline != null && /* @__PURE__ */ (0, import_jsx_runtime68.jsx)("span", { className: "uix-comment__author", children: byline }),
6639
6852
  byline != null && meta != null ? " \xB7 " : null,
6640
6853
  meta
6641
6854
  ] }),
6642
- replyTo != null && /* @__PURE__ */ (0, import_jsx_runtime67.jsxs)("blockquote", { className: "uix-comment__reply", children: [
6643
- /* @__PURE__ */ (0, import_jsx_runtime67.jsx)("span", { className: "uix-comment__reply-label", children: replyToLabel }),
6644
- /* @__PURE__ */ (0, import_jsx_runtime67.jsx)("span", { className: "uix-comment__reply-body", children: replyTo })
6855
+ replyTo != null && /* @__PURE__ */ (0, import_jsx_runtime68.jsxs)("blockquote", { className: "uix-comment__reply", children: [
6856
+ /* @__PURE__ */ (0, import_jsx_runtime68.jsx)("span", { className: "uix-comment__reply-label", children: replyToLabel }),
6857
+ /* @__PURE__ */ (0, import_jsx_runtime68.jsx)("span", { className: "uix-comment__reply-body", children: replyTo })
6645
6858
  ] }),
6646
6859
  children
6647
6860
  ] })
@@ -6651,7 +6864,7 @@ function Comment({
6651
6864
  }
6652
6865
 
6653
6866
  // src/components/SaveStatus.tsx
6654
- var import_jsx_runtime68 = require("react/jsx-runtime");
6867
+ var import_jsx_runtime69 = require("react/jsx-runtime");
6655
6868
  var DEFAULT_SAVE_STATUS_LABELS = {
6656
6869
  saving: "Saving\u2026",
6657
6870
  saved: "Saved",
@@ -6661,30 +6874,30 @@ var DEFAULT_SAVE_STATUS_LABELS = {
6661
6874
  function SaveStatus({ state, labels, onRetry, className, ...props }) {
6662
6875
  const text = { ...DEFAULT_SAVE_STATUS_LABELS, ...labels };
6663
6876
  const message = state === "idle" ? "" : text[state];
6664
- return /* @__PURE__ */ (0, import_jsx_runtime68.jsxs)("div", { className: cx("uix-save-status", className), "data-state": state, ...props, children: [
6665
- /* @__PURE__ */ (0, import_jsx_runtime68.jsx)("span", { className: "uix-save-status__icon", "aria-hidden": "true" }),
6666
- /* @__PURE__ */ (0, import_jsx_runtime68.jsx)("span", { className: "uix-save-status__text", role: "status", "aria-live": "polite", children: message }),
6667
- state === "failed" && onRetry && /* @__PURE__ */ (0, import_jsx_runtime68.jsx)("button", { type: "button", className: "uix-btn uix-btn--link uix-btn--sm uix-save-status__retry", onClick: onRetry, children: text.retry })
6877
+ return /* @__PURE__ */ (0, import_jsx_runtime69.jsxs)("div", { className: cx("uix-save-status", className), "data-state": state, ...props, children: [
6878
+ /* @__PURE__ */ (0, import_jsx_runtime69.jsx)("span", { className: "uix-save-status__icon", "aria-hidden": "true" }),
6879
+ /* @__PURE__ */ (0, import_jsx_runtime69.jsx)("span", { className: "uix-save-status__text", role: "status", "aria-live": "polite", children: message }),
6880
+ state === "failed" && onRetry && /* @__PURE__ */ (0, import_jsx_runtime69.jsx)("button", { type: "button", className: "uix-btn uix-btn--link uix-btn--sm uix-save-status__retry", onClick: onRetry, children: text.retry })
6668
6881
  ] });
6669
6882
  }
6670
6883
 
6671
6884
  // src/components/Composer.tsx
6672
6885
  var import_react49 = require("react");
6673
- var import_jsx_runtime69 = require("react/jsx-runtime");
6886
+ var import_jsx_runtime70 = require("react/jsx-runtime");
6674
6887
  function Composer({ children, className, label = "Add a comment", ...props }) {
6675
- return /* @__PURE__ */ (0, import_jsx_runtime69.jsx)("div", { className: cx("uix-composer", className), ...props, children: import_react49.Children.map(children, (child) => {
6888
+ return /* @__PURE__ */ (0, import_jsx_runtime70.jsx)("div", { className: cx("uix-composer", className), ...props, children: import_react49.Children.map(children, (child) => {
6676
6889
  if (!(0, import_react49.isValidElement)(child) || child.type !== "textarea") return child;
6677
6890
  const p = child.props;
6678
6891
  return p["aria-label"] || p["aria-labelledby"] || p.id ? child : (0, import_react49.cloneElement)(child, { "aria-label": label });
6679
6892
  }) });
6680
6893
  }
6681
6894
  function ComposerBar({ children, className, ...props }) {
6682
- return /* @__PURE__ */ (0, import_jsx_runtime69.jsx)("div", { className: cx("uix-composer__bar", className), ...props, children });
6895
+ return /* @__PURE__ */ (0, import_jsx_runtime70.jsx)("div", { className: cx("uix-composer__bar", className), ...props, children });
6683
6896
  }
6684
6897
 
6685
6898
  // src/components/Segmented.tsx
6686
6899
  var import_react50 = require("react");
6687
- var import_jsx_runtime70 = require("react/jsx-runtime");
6900
+ var import_jsx_runtime71 = require("react/jsx-runtime");
6688
6901
  var SegmentedCtx = (0, import_react50.createContext)({});
6689
6902
  var OPTION = ".uix-segmented__option";
6690
6903
  function Segmented({ value, onChange, selection = "toggle", children, className, onKeyDown, ...props }) {
@@ -6738,7 +6951,7 @@ function Segmented({ value, onChange, selection = "toggle", children, className,
6738
6951
  target.focus();
6739
6952
  target.click();
6740
6953
  };
6741
- return /* @__PURE__ */ (0, import_jsx_runtime70.jsx)(SegmentedCtx.Provider, { value: contextValue, children: /* @__PURE__ */ (0, import_jsx_runtime70.jsx)("div", { ref, role: selection === "radio" ? "radiogroup" : "group", className: cx("uix-segmented", className), onKeyDown: handleKeyDown, ...props, children }) });
6954
+ return /* @__PURE__ */ (0, import_jsx_runtime71.jsx)(SegmentedCtx.Provider, { value: contextValue, children: /* @__PURE__ */ (0, import_jsx_runtime71.jsx)("div", { ref, role: selection === "radio" ? "radiogroup" : "group", className: cx("uix-segmented", className), onKeyDown: handleKeyDown, ...props, children }) });
6742
6955
  }
6743
6956
  function SegmentedOption({
6744
6957
  value,
@@ -6750,7 +6963,7 @@ function SegmentedOption({
6750
6963
  const ctx = (0, import_react50.useContext)(SegmentedCtx);
6751
6964
  const selected = ctx.value === value;
6752
6965
  const radio = ctx.selection === "radio";
6753
- return /* @__PURE__ */ (0, import_jsx_runtime70.jsx)(
6966
+ return /* @__PURE__ */ (0, import_jsx_runtime71.jsx)(
6754
6967
  "button",
6755
6968
  {
6756
6969
  type: "button",
@@ -6773,7 +6986,7 @@ function SegmentedOption({
6773
6986
  var import_react51 = require("react");
6774
6987
 
6775
6988
  // src/components/EditorIcons.tsx
6776
- var import_jsx_runtime71 = require("react/jsx-runtime");
6989
+ var import_jsx_runtime72 = require("react/jsx-runtime");
6777
6990
  var PATHS2 = {
6778
6991
  heading1: "M4 12h8M4 18V6M12 18V6M17 12l3-2v8",
6779
6992
  heading2: "M4 12h8M4 18V6M12 18V6M21 18h-4c0-4 4-3 4-6 0-1.5-2-2.5-4-1",
@@ -6807,7 +7020,7 @@ var PATHS2 = {
6807
7020
  more: "M5 12h.01M12 12h.01M19 12h.01"
6808
7021
  };
6809
7022
  function EditorIcon({ name, ...props }) {
6810
- return /* @__PURE__ */ (0, import_jsx_runtime71.jsx)(
7023
+ return /* @__PURE__ */ (0, import_jsx_runtime72.jsx)(
6811
7024
  "svg",
6812
7025
  {
6813
7026
  viewBox: "0 0 24 24",
@@ -6819,13 +7032,13 @@ function EditorIcon({ name, ...props }) {
6819
7032
  "aria-hidden": "true",
6820
7033
  focusable: "false",
6821
7034
  ...props,
6822
- children: /* @__PURE__ */ (0, import_jsx_runtime71.jsx)("path", { d: PATHS2[name] })
7035
+ children: /* @__PURE__ */ (0, import_jsx_runtime72.jsx)("path", { d: PATHS2[name] })
6823
7036
  }
6824
7037
  );
6825
7038
  }
6826
7039
 
6827
7040
  // src/components/TableControls.tsx
6828
- var import_jsx_runtime72 = require("react/jsx-runtime");
7041
+ var import_jsx_runtime73 = require("react/jsx-runtime");
6829
7042
  var VIEW_MENU_COLUMN_LABELS = {
6830
7043
  rowActions: "Column actions: {label}",
6831
7044
  reorder: "Drag to reorder: {label}",
@@ -6897,8 +7110,8 @@ function ColumnRowMenu({ label, actions, triggerRef }) {
6897
7110
  else if (event.key === "End") focus(list.length - 1);
6898
7111
  else if (event.key === "Tab") close(false);
6899
7112
  };
6900
- return /* @__PURE__ */ (0, import_jsx_runtime72.jsxs)("span", { className: "uix-view-menu__actions", children: [
6901
- /* @__PURE__ */ (0, import_jsx_runtime72.jsx)(
7113
+ return /* @__PURE__ */ (0, import_jsx_runtime73.jsxs)("span", { className: "uix-view-menu__actions", children: [
7114
+ /* @__PURE__ */ (0, import_jsx_runtime73.jsx)(
6902
7115
  "button",
6903
7116
  {
6904
7117
  ref: (el) => {
@@ -6921,10 +7134,10 @@ function ColumnRowMenu({ label, actions, triggerRef }) {
6921
7134
  if (open) close(false);
6922
7135
  else setOpen(true);
6923
7136
  },
6924
- children: /* @__PURE__ */ (0, import_jsx_runtime72.jsx)(EditorIcon, { name: "more" })
7137
+ children: /* @__PURE__ */ (0, import_jsx_runtime73.jsx)(EditorIcon, { name: "more" })
6925
7138
  }
6926
7139
  ),
6927
- open && /* @__PURE__ */ (0, import_jsx_runtime72.jsx)(Popover, { id: menuId, anchor: button, placement: "bottom-end", offset: 4, role: "menu", "aria-label": label, className: "uix-view-menu__row-menu", onKeyDown: onMenuKeyDown, children: actions.map((action, index) => /* @__PURE__ */ (0, import_jsx_runtime72.jsx)(
7140
+ open && /* @__PURE__ */ (0, import_jsx_runtime73.jsx)(Popover, { id: menuId, anchor: button, placement: "bottom-end", offset: 4, role: "menu", "aria-label": label, className: "uix-view-menu__row-menu", onKeyDown: onMenuKeyDown, children: actions.map((action, index) => /* @__PURE__ */ (0, import_jsx_runtime73.jsx)(
6928
7141
  "button",
6929
7142
  {
6930
7143
  ref: (el) => {
@@ -7015,27 +7228,27 @@ function ViewMenu({
7015
7228
  ...column.required || column.disabled ? [] : [column.visible ? { id: "hide", label: labels.hide, onSelect: () => onColumnVisibilityChange?.(column.id, false) } : { id: "show", label: labels.show, onSelect: () => onColumnVisibilityChange?.(column.id, true) }]
7016
7229
  ];
7017
7230
  const showDensity = !!densityOptions?.length && !!onDensityChange;
7018
- return /* @__PURE__ */ (0, import_jsx_runtime72.jsxs)("div", { className: cx("uix-view-menu", className), "data-dragging": dragging ? "" : void 0, children: [
7019
- showDensity && /* @__PURE__ */ (0, import_jsx_runtime72.jsxs)("div", { className: "uix-view-menu__group", children: [
7020
- /* @__PURE__ */ (0, import_jsx_runtime72.jsx)("div", { id: densityLabelId, className: "uix-view-menu__label", children: densityLabel }),
7021
- /* @__PURE__ */ (0, import_jsx_runtime72.jsx)(Segmented, { value: density ?? "", onChange: onDensityChange, "aria-labelledby": densityLabelId, children: densityOptions.map((option) => /* @__PURE__ */ (0, import_jsx_runtime72.jsx)(SegmentedOption, { value: option.value, children: option.label }, option.value)) })
7231
+ return /* @__PURE__ */ (0, import_jsx_runtime73.jsxs)("div", { className: cx("uix-view-menu", className), "data-dragging": dragging ? "" : void 0, children: [
7232
+ showDensity && /* @__PURE__ */ (0, import_jsx_runtime73.jsxs)("div", { className: "uix-view-menu__group", children: [
7233
+ /* @__PURE__ */ (0, import_jsx_runtime73.jsx)("div", { id: densityLabelId, className: "uix-view-menu__label", children: densityLabel }),
7234
+ /* @__PURE__ */ (0, import_jsx_runtime73.jsx)(Segmented, { value: density ?? "", onChange: onDensityChange, "aria-labelledby": densityLabelId, children: densityOptions.map((option) => /* @__PURE__ */ (0, import_jsx_runtime73.jsx)(SegmentedOption, { value: option.value, children: option.label }, option.value)) })
7022
7235
  ] }),
7023
- (zebra || freeze) && /* @__PURE__ */ (0, import_jsx_runtime72.jsxs)("div", { className: "uix-view-menu__group", children: [
7024
- displayLabel != null && /* @__PURE__ */ (0, import_jsx_runtime72.jsx)("div", { className: "uix-view-menu__label", children: displayLabel }),
7025
- zebra && /* @__PURE__ */ (0, import_jsx_runtime72.jsxs)("div", { className: "uix-view-menu__row", children: [
7026
- /* @__PURE__ */ (0, import_jsx_runtime72.jsx)("span", { id: zebraLabelId, children: zebra.label }),
7027
- /* @__PURE__ */ (0, import_jsx_runtime72.jsx)(Switch, { checked: zebra.checked, "aria-labelledby": zebraLabelId, onChange: (event) => zebra.onChange(event.currentTarget.checked) })
7236
+ (zebra || freeze) && /* @__PURE__ */ (0, import_jsx_runtime73.jsxs)("div", { className: "uix-view-menu__group", children: [
7237
+ displayLabel != null && /* @__PURE__ */ (0, import_jsx_runtime73.jsx)("div", { className: "uix-view-menu__label", children: displayLabel }),
7238
+ zebra && /* @__PURE__ */ (0, import_jsx_runtime73.jsxs)("div", { className: "uix-view-menu__row", children: [
7239
+ /* @__PURE__ */ (0, import_jsx_runtime73.jsx)("span", { id: zebraLabelId, children: zebra.label }),
7240
+ /* @__PURE__ */ (0, import_jsx_runtime73.jsx)(Switch, { checked: zebra.checked, "aria-labelledby": zebraLabelId, onChange: (event) => zebra.onChange(event.currentTarget.checked) })
7028
7241
  ] }),
7029
- freeze && /* @__PURE__ */ (0, import_jsx_runtime72.jsxs)("div", { className: "uix-view-menu__row", children: [
7030
- /* @__PURE__ */ (0, import_jsx_runtime72.jsx)("span", { id: freezeLabelId, children: freeze.label }),
7031
- /* @__PURE__ */ (0, import_jsx_runtime72.jsx)(Switch, { checked: freeze.checked, "aria-labelledby": freezeLabelId, onChange: (event) => freeze.onChange(event.currentTarget.checked) })
7242
+ freeze && /* @__PURE__ */ (0, import_jsx_runtime73.jsxs)("div", { className: "uix-view-menu__row", children: [
7243
+ /* @__PURE__ */ (0, import_jsx_runtime73.jsx)("span", { id: freezeLabelId, children: freeze.label }),
7244
+ /* @__PURE__ */ (0, import_jsx_runtime73.jsx)(Switch, { checked: freeze.checked, "aria-labelledby": freezeLabelId, onChange: (event) => freeze.onChange(event.currentTarget.checked) })
7032
7245
  ] })
7033
7246
  ] }),
7034
- ordered.length > 0 && /* @__PURE__ */ (0, import_jsx_runtime72.jsxs)("div", { className: "uix-view-menu__group", children: [
7035
- columnsLabel != null && /* @__PURE__ */ (0, import_jsx_runtime72.jsx)("div", { id: columnsLabelId, className: "uix-view-menu__label", children: columnsLabel }),
7036
- /* @__PURE__ */ (0, import_jsx_runtime72.jsx)("ul", { ref: listRef, className: "uix-view-menu__cols", "aria-labelledby": columnsLabel != null ? columnsLabelId : void 0, children: ordered.map((column, index) => {
7247
+ ordered.length > 0 && /* @__PURE__ */ (0, import_jsx_runtime73.jsxs)("div", { className: "uix-view-menu__group", children: [
7248
+ columnsLabel != null && /* @__PURE__ */ (0, import_jsx_runtime73.jsx)("div", { id: columnsLabelId, className: "uix-view-menu__label", children: columnsLabel }),
7249
+ /* @__PURE__ */ (0, import_jsx_runtime73.jsx)("ul", { ref: listRef, className: "uix-view-menu__cols", "aria-labelledby": columnsLabel != null ? columnsLabelId : void 0, children: ordered.map((column, index) => {
7037
7250
  const text = columnText(column);
7038
- return /* @__PURE__ */ (0, import_jsx_runtime72.jsxs)(
7251
+ return /* @__PURE__ */ (0, import_jsx_runtime73.jsxs)(
7039
7252
  "li",
7040
7253
  {
7041
7254
  className: "uix-view-menu__col",
@@ -7044,7 +7257,7 @@ function ViewMenu({
7044
7257
  "data-required": column.required ? "true" : void 0,
7045
7258
  "data-dragging": dragging === column.id || void 0,
7046
7259
  children: [
7047
- onReorder && /* @__PURE__ */ (0, import_jsx_runtime72.jsx)(
7260
+ onReorder && /* @__PURE__ */ (0, import_jsx_runtime73.jsx)(
7048
7261
  "button",
7049
7262
  {
7050
7263
  type: "button",
@@ -7063,23 +7276,23 @@ function ViewMenu({
7063
7276
  event.preventDefault();
7064
7277
  move(column.id, event.key === "ArrowUp" ? -1 : 1, "grip");
7065
7278
  },
7066
- children: /* @__PURE__ */ (0, import_jsx_runtime72.jsx)(EditorIcon, { name: "grip" })
7279
+ children: /* @__PURE__ */ (0, import_jsx_runtime73.jsx)(EditorIcon, { name: "grip" })
7067
7280
  }
7068
7281
  ),
7069
- column.required ? /* @__PURE__ */ (0, import_jsx_runtime72.jsxs)("span", { className: "uix-view-menu__col-toggle", title: labels.required, children: [
7070
- /* @__PURE__ */ (0, import_jsx_runtime72.jsx)("span", { className: "uix-view-menu__col-box", "aria-hidden": "true" }),
7071
- /* @__PURE__ */ (0, import_jsx_runtime72.jsx)("span", { className: "uix-view-menu__col-name", children: column.label })
7072
- ] }) : /* @__PURE__ */ (0, import_jsx_runtime72.jsx)(
7282
+ column.required ? /* @__PURE__ */ (0, import_jsx_runtime73.jsxs)("span", { className: "uix-view-menu__col-toggle", title: labels.required, children: [
7283
+ /* @__PURE__ */ (0, import_jsx_runtime73.jsx)("span", { className: "uix-view-menu__col-box", "aria-hidden": "true" }),
7284
+ /* @__PURE__ */ (0, import_jsx_runtime73.jsx)("span", { className: "uix-view-menu__col-name", children: column.label })
7285
+ ] }) : /* @__PURE__ */ (0, import_jsx_runtime73.jsx)(
7073
7286
  Checkbox,
7074
7287
  {
7075
7288
  className: "uix-view-menu__col-toggle",
7076
- label: /* @__PURE__ */ (0, import_jsx_runtime72.jsx)("span", { className: "uix-view-menu__col-name", children: column.label }),
7289
+ label: /* @__PURE__ */ (0, import_jsx_runtime73.jsx)("span", { className: "uix-view-menu__col-name", children: column.label }),
7077
7290
  checked: column.visible,
7078
7291
  disabled: column.disabled,
7079
7292
  onChange: (event) => onColumnVisibilityChange?.(column.id, event.currentTarget.checked)
7080
7293
  }
7081
7294
  ),
7082
- onReorder && /* @__PURE__ */ (0, import_jsx_runtime72.jsx)(
7295
+ onReorder && /* @__PURE__ */ (0, import_jsx_runtime73.jsx)(
7083
7296
  ColumnRowMenu,
7084
7297
  {
7085
7298
  label: fill2(labels.rowActions, { label: text }),
@@ -7096,20 +7309,20 @@ function ViewMenu({
7096
7309
  );
7097
7310
  }) })
7098
7311
  ] }),
7099
- footer != null && /* @__PURE__ */ (0, import_jsx_runtime72.jsx)("div", { className: "uix-view-menu__footer", children: footer }),
7100
- onReorder && /* @__PURE__ */ (0, import_jsx_runtime72.jsx)("div", { role: "status", className: "uix-visually-hidden", children: announcement })
7312
+ footer != null && /* @__PURE__ */ (0, import_jsx_runtime73.jsx)("div", { className: "uix-view-menu__footer", children: footer }),
7313
+ onReorder && /* @__PURE__ */ (0, import_jsx_runtime73.jsx)("div", { role: "status", className: "uix-visually-hidden", children: announcement })
7101
7314
  ] });
7102
7315
  }
7103
7316
  function FilterPopover({ label, type = "text", value, onValueChange, options, applyLabel, clearLabel, onApply, onClear, placeholder }) {
7104
7317
  const controlId = (0, import_react51.useId)();
7105
- return /* @__PURE__ */ (0, import_jsx_runtime72.jsxs)("div", { className: "uix-filter-popover", children: [
7106
- /* @__PURE__ */ (0, import_jsx_runtime72.jsxs)("div", { className: "uix-field", children: [
7107
- /* @__PURE__ */ (0, import_jsx_runtime72.jsx)("label", { className: "uix-field__label", htmlFor: controlId, children: label }),
7108
- type === "select" || type === "enum" || type === "boolean" ? /* @__PURE__ */ (0, import_jsx_runtime72.jsx)("select", { id: controlId, className: "uix-select", value, onChange: (event) => onValueChange(event.currentTarget.value), children: options?.map((option) => /* @__PURE__ */ (0, import_jsx_runtime72.jsx)("option", { value: option.value, children: option.label }, option.value)) }) : /* @__PURE__ */ (0, import_jsx_runtime72.jsx)(Input, { id: controlId, type, value, placeholder, onChange: (event) => onValueChange(event.currentTarget.value) })
7318
+ return /* @__PURE__ */ (0, import_jsx_runtime73.jsxs)("div", { className: "uix-filter-popover", children: [
7319
+ /* @__PURE__ */ (0, import_jsx_runtime73.jsxs)("div", { className: "uix-field", children: [
7320
+ /* @__PURE__ */ (0, import_jsx_runtime73.jsx)("label", { className: "uix-field__label", htmlFor: controlId, children: label }),
7321
+ type === "select" || type === "enum" || type === "boolean" ? /* @__PURE__ */ (0, import_jsx_runtime73.jsx)("select", { id: controlId, className: "uix-select", value, onChange: (event) => onValueChange(event.currentTarget.value), children: options?.map((option) => /* @__PURE__ */ (0, import_jsx_runtime73.jsx)("option", { value: option.value, children: option.label }, option.value)) }) : /* @__PURE__ */ (0, import_jsx_runtime73.jsx)(Input, { id: controlId, type, value, placeholder, onChange: (event) => onValueChange(event.currentTarget.value) })
7109
7322
  ] }),
7110
- /* @__PURE__ */ (0, import_jsx_runtime72.jsxs)("div", { className: "uix-filter-popover__actions", children: [
7111
- /* @__PURE__ */ (0, import_jsx_runtime72.jsx)(Button, { type: "button", onClick: onClear, children: clearLabel }),
7112
- /* @__PURE__ */ (0, import_jsx_runtime72.jsx)(Button, { type: "button", variant: "primary", onClick: onApply, children: applyLabel })
7323
+ /* @__PURE__ */ (0, import_jsx_runtime73.jsxs)("div", { className: "uix-filter-popover__actions", children: [
7324
+ /* @__PURE__ */ (0, import_jsx_runtime73.jsx)(Button, { type: "button", onClick: onClear, children: clearLabel }),
7325
+ /* @__PURE__ */ (0, import_jsx_runtime73.jsx)(Button, { type: "button", variant: "primary", onClick: onApply, children: applyLabel })
7113
7326
  ] })
7114
7327
  ] });
7115
7328
  }
@@ -7208,8 +7421,8 @@ function SavedViewMenu({ items, sections, onSelect, onPinChange, pinLabel, unpin
7208
7421
  if (!item) return null;
7209
7422
  const nameId = `${baseId}-${groupIndex}-${index}`;
7210
7423
  const extra = actions?.(item);
7211
- return /* @__PURE__ */ (0, import_jsx_runtime72.jsxs)("li", { className: "uix-saved-views__row", "data-active": item.active || void 0, "data-dragging": dragging === item.id || void 0, children: [
7212
- onReorder && /* @__PURE__ */ (0, import_jsx_runtime72.jsx)(
7424
+ return /* @__PURE__ */ (0, import_jsx_runtime73.jsxs)("li", { className: "uix-saved-views__row", "data-active": item.active || void 0, "data-dragging": dragging === item.id || void 0, children: [
7425
+ onReorder && /* @__PURE__ */ (0, import_jsx_runtime73.jsx)(
7213
7426
  "button",
7214
7427
  {
7215
7428
  type: "button",
@@ -7228,25 +7441,25 @@ function SavedViewMenu({ items, sections, onSelect, onPinChange, pinLabel, unpin
7228
7441
  event.preventDefault();
7229
7442
  move(group, item.id, event.key === "ArrowUp" ? -1 : 1);
7230
7443
  },
7231
- children: /* @__PURE__ */ (0, import_jsx_runtime72.jsx)(EditorIcon, { name: "grip" })
7444
+ children: /* @__PURE__ */ (0, import_jsx_runtime73.jsx)(EditorIcon, { name: "grip" })
7232
7445
  }
7233
7446
  ),
7234
- /* @__PURE__ */ (0, import_jsx_runtime72.jsx)("button", { type: "button", id: nameId, className: "uix-menu__item", "data-active": item.active || void 0, "aria-current": item.active || void 0, title: typeof item.label === "string" ? item.label : void 0, onClick: () => onSelect(item.id), children: /* @__PURE__ */ (0, import_jsx_runtime72.jsx)("span", { className: "uix-saved-views__name", children: item.label }) }),
7235
- onPinChange && /* @__PURE__ */ (0, import_jsx_runtime72.jsx)("button", { type: "button", className: "uix-saved-views__pin", "aria-label": item.pinned ? unpinLabel : pinLabel, "data-on": item.pinned || void 0, onClick: () => onPinChange(item.id, !item.pinned), children: "\u2605" }),
7236
- extra != null && extra !== false && /* @__PURE__ */ (0, import_jsx_runtime72.jsx)("span", { className: "uix-saved-views__actions", children: extra })
7447
+ /* @__PURE__ */ (0, import_jsx_runtime73.jsx)("button", { type: "button", id: nameId, className: "uix-menu__item", "data-active": item.active || void 0, "aria-current": item.active || void 0, title: typeof item.label === "string" ? item.label : void 0, onClick: () => onSelect(item.id), children: /* @__PURE__ */ (0, import_jsx_runtime73.jsx)("span", { className: "uix-saved-views__name", children: item.label }) }),
7448
+ onPinChange && /* @__PURE__ */ (0, import_jsx_runtime73.jsx)("button", { type: "button", className: "uix-saved-views__pin", "aria-label": item.pinned ? unpinLabel : pinLabel, "data-on": item.pinned || void 0, onClick: () => onPinChange(item.id, !item.pinned), children: "\u2605" }),
7449
+ extra != null && extra !== false && /* @__PURE__ */ (0, import_jsx_runtime73.jsx)("span", { className: "uix-saved-views__actions", children: extra })
7237
7450
  ] }, item.id);
7238
7451
  });
7239
7452
  };
7240
- return /* @__PURE__ */ (0, import_jsx_runtime72.jsxs)("ul", { className: "uix-menu uix-saved-views", "data-dragging": dragging ? "" : void 0, children: [
7241
- visible.length === 0 && emptyLabel != null && /* @__PURE__ */ (0, import_jsx_runtime72.jsx)("li", { className: "uix-menu__label", children: emptyLabel }),
7453
+ return /* @__PURE__ */ (0, import_jsx_runtime73.jsxs)("ul", { className: "uix-menu uix-saved-views", "data-dragging": dragging ? "" : void 0, children: [
7454
+ visible.length === 0 && emptyLabel != null && /* @__PURE__ */ (0, import_jsx_runtime73.jsx)("li", { className: "uix-menu__label", children: emptyLabel }),
7242
7455
  sections ? visible.map((group, groupIndex) => {
7243
7456
  const labelId = `${baseId}-section-${groupIndex}`;
7244
- return /* @__PURE__ */ (0, import_jsx_runtime72.jsxs)("li", { className: "uix-saved-views__section", children: [
7245
- /* @__PURE__ */ (0, import_jsx_runtime72.jsx)("div", { id: labelId, className: "uix-menu__label uix-saved-views__section-label", children: group.label }),
7246
- /* @__PURE__ */ (0, import_jsx_runtime72.jsx)("ul", { className: "uix-saved-views__group", "aria-labelledby": labelId, children: renderRows(group, groupIndex) })
7457
+ return /* @__PURE__ */ (0, import_jsx_runtime73.jsxs)("li", { className: "uix-saved-views__section", children: [
7458
+ /* @__PURE__ */ (0, import_jsx_runtime73.jsx)("div", { id: labelId, className: "uix-menu__label uix-saved-views__section-label", children: group.label }),
7459
+ /* @__PURE__ */ (0, import_jsx_runtime73.jsx)("ul", { className: "uix-saved-views__group", "aria-labelledby": labelId, children: renderRows(group, groupIndex) })
7247
7460
  ] }, group.id);
7248
7461
  }) : visible[0] && renderRows(visible[0], 0),
7249
- footer != null && /* @__PURE__ */ (0, import_jsx_runtime72.jsx)("li", { className: "uix-saved-views__footer", children: footer })
7462
+ footer != null && /* @__PURE__ */ (0, import_jsx_runtime73.jsx)("li", { className: "uix-saved-views__footer", children: footer })
7250
7463
  ] });
7251
7464
  }
7252
7465
 
@@ -7350,7 +7563,7 @@ function summarizeFilter(field, value, options = {}) {
7350
7563
  }
7351
7564
 
7352
7565
  // src/components/FilterEditor.tsx
7353
- var import_jsx_runtime73 = require("react/jsx-runtime");
7566
+ var import_jsx_runtime74 = require("react/jsx-runtime");
7354
7567
  var DEFAULT_FILTER_EDITOR_LABELS = {
7355
7568
  apply: "Apply",
7356
7569
  clear: "Clear",
@@ -7400,16 +7613,16 @@ function FilterEditor({ field, value: valueProp, onValueChange, onApply, onClear
7400
7613
  let body = null;
7401
7614
  switch (value.kind) {
7402
7615
  case "enum":
7403
- body = /* @__PURE__ */ (0, import_jsx_runtime73.jsx)(EnumBody, { field, value, onChange: onValueChange, labels, threshold: searchThreshold });
7616
+ body = /* @__PURE__ */ (0, import_jsx_runtime74.jsx)(EnumBody, { field, value, onChange: onValueChange, labels, threshold: searchThreshold });
7404
7617
  break;
7405
7618
  case "reference":
7406
- body = /* @__PURE__ */ (0, import_jsx_runtime73.jsx)(ReferenceBody, { field, value, onChange: onValueChange, labels, delay: searchDelay });
7619
+ body = /* @__PURE__ */ (0, import_jsx_runtime74.jsx)(ReferenceBody, { field, value, onChange: onValueChange, labels, delay: searchDelay });
7407
7620
  break;
7408
7621
  case "text": {
7409
7622
  const ops = field.operators ?? TEXT_FILTER_OPERATORS;
7410
- body = /* @__PURE__ */ (0, import_jsx_runtime73.jsxs)("div", { className: "uix-filter-editor__row", children: [
7411
- ops.length > 1 && /* @__PURE__ */ (0, import_jsx_runtime73.jsx)(Select, { size: "sm", "aria-label": labels.operator, value: value.operator, onChange: (e) => onValueChange({ ...value, operator: e.currentTarget.value }), children: ops.map((op) => /* @__PURE__ */ (0, import_jsx_runtime73.jsx)("option", { value: op, children: labels.operators[op] }, op)) }),
7412
- /* @__PURE__ */ (0, import_jsx_runtime73.jsx)(Input, { "aria-label": labels.value, value: value.text, onChange: (e) => onValueChange({ ...value, text: e.currentTarget.value }), onKeyDown: (e) => {
7623
+ body = /* @__PURE__ */ (0, import_jsx_runtime74.jsxs)("div", { className: "uix-filter-editor__row", children: [
7624
+ ops.length > 1 && /* @__PURE__ */ (0, import_jsx_runtime74.jsx)(Select, { size: "sm", "aria-label": labels.operator, value: value.operator, onChange: (e) => onValueChange({ ...value, operator: e.currentTarget.value }), children: ops.map((op) => /* @__PURE__ */ (0, import_jsx_runtime74.jsx)("option", { value: op, children: labels.operators[op] }, op)) }),
7625
+ /* @__PURE__ */ (0, import_jsx_runtime74.jsx)(Input, { "aria-label": labels.value, value: value.text, onChange: (e) => onValueChange({ ...value, text: e.currentTarget.value }), onKeyDown: (e) => {
7413
7626
  if (e.key === "Enter") onApply();
7414
7627
  }, autoFocus: true })
7415
7628
  ] });
@@ -7418,45 +7631,45 @@ function FilterEditor({ field, value: valueProp, onValueChange, onApply, onClear
7418
7631
  case "number": {
7419
7632
  const ops = field.operators ?? NUMBER_FILTER_OPERATORS;
7420
7633
  const toNumber = (raw) => raw.trim() === "" ? void 0 : Number(raw);
7421
- body = /* @__PURE__ */ (0, import_jsx_runtime73.jsxs)("div", { className: "uix-filter-editor__row", children: [
7422
- ops.length > 1 && /* @__PURE__ */ (0, import_jsx_runtime73.jsx)(Select, { size: "sm", "aria-label": labels.operator, value: value.operator, onChange: (e) => onValueChange({ ...value, operator: e.currentTarget.value }), children: ops.map((op) => /* @__PURE__ */ (0, import_jsx_runtime73.jsx)("option", { value: op, children: labels.operators[op] }, op)) }),
7423
- /* @__PURE__ */ (0, import_jsx_runtime73.jsx)(Input, { type: "number", inputMode: "decimal", "aria-label": value.operator === "between" ? labels.from : labels.value, value: value.value ?? "", onChange: (e) => onValueChange({ ...value, value: toNumber(e.currentTarget.value) }), autoFocus: true }),
7424
- value.operator === "between" && /* @__PURE__ */ (0, import_jsx_runtime73.jsxs)(import_jsx_runtime73.Fragment, { children: [
7425
- /* @__PURE__ */ (0, import_jsx_runtime73.jsx)("span", { className: "uix-filter-editor__and", children: labels.and }),
7426
- /* @__PURE__ */ (0, import_jsx_runtime73.jsx)(Input, { type: "number", inputMode: "decimal", "aria-label": labels.to, value: value.to ?? "", onChange: (e) => onValueChange({ ...value, to: toNumber(e.currentTarget.value) }) })
7634
+ body = /* @__PURE__ */ (0, import_jsx_runtime74.jsxs)("div", { className: "uix-filter-editor__row", children: [
7635
+ ops.length > 1 && /* @__PURE__ */ (0, import_jsx_runtime74.jsx)(Select, { size: "sm", "aria-label": labels.operator, value: value.operator, onChange: (e) => onValueChange({ ...value, operator: e.currentTarget.value }), children: ops.map((op) => /* @__PURE__ */ (0, import_jsx_runtime74.jsx)("option", { value: op, children: labels.operators[op] }, op)) }),
7636
+ /* @__PURE__ */ (0, import_jsx_runtime74.jsx)(Input, { type: "number", inputMode: "decimal", "aria-label": value.operator === "between" ? labels.from : labels.value, value: value.value ?? "", onChange: (e) => onValueChange({ ...value, value: toNumber(e.currentTarget.value) }), autoFocus: true }),
7637
+ value.operator === "between" && /* @__PURE__ */ (0, import_jsx_runtime74.jsxs)(import_jsx_runtime74.Fragment, { children: [
7638
+ /* @__PURE__ */ (0, import_jsx_runtime74.jsx)("span", { className: "uix-filter-editor__and", children: labels.and }),
7639
+ /* @__PURE__ */ (0, import_jsx_runtime74.jsx)(Input, { type: "number", inputMode: "decimal", "aria-label": labels.to, value: value.to ?? "", onChange: (e) => onValueChange({ ...value, to: toNumber(e.currentTarget.value) }) })
7427
7640
  ] }),
7428
- field.unit && /* @__PURE__ */ (0, import_jsx_runtime73.jsx)("span", { className: "uix-filter-editor__unit", children: field.unit })
7641
+ field.unit && /* @__PURE__ */ (0, import_jsx_runtime74.jsx)("span", { className: "uix-filter-editor__unit", children: field.unit })
7429
7642
  ] });
7430
7643
  break;
7431
7644
  }
7432
7645
  case "date-range":
7433
- body = /* @__PURE__ */ (0, import_jsx_runtime73.jsxs)("div", { className: "uix-filter-editor__row", children: [
7434
- /* @__PURE__ */ (0, import_jsx_runtime73.jsxs)("label", { className: "uix-filter-editor__date", children: [
7435
- /* @__PURE__ */ (0, import_jsx_runtime73.jsx)("span", { children: labels.from }),
7436
- /* @__PURE__ */ (0, import_jsx_runtime73.jsx)(Input, { type: "date", value: value.from ?? "", max: value.to, onChange: (e) => onValueChange({ ...value, from: e.currentTarget.value || void 0 }) })
7646
+ body = /* @__PURE__ */ (0, import_jsx_runtime74.jsxs)("div", { className: "uix-filter-editor__row", children: [
7647
+ /* @__PURE__ */ (0, import_jsx_runtime74.jsxs)("label", { className: "uix-filter-editor__date", children: [
7648
+ /* @__PURE__ */ (0, import_jsx_runtime74.jsx)("span", { children: labels.from }),
7649
+ /* @__PURE__ */ (0, import_jsx_runtime74.jsx)(Input, { type: "date", value: value.from ?? "", max: value.to, onChange: (e) => onValueChange({ ...value, from: e.currentTarget.value || void 0 }) })
7437
7650
  ] }),
7438
- /* @__PURE__ */ (0, import_jsx_runtime73.jsxs)("label", { className: "uix-filter-editor__date", children: [
7439
- /* @__PURE__ */ (0, import_jsx_runtime73.jsx)("span", { children: labels.to }),
7440
- /* @__PURE__ */ (0, import_jsx_runtime73.jsx)(Input, { type: "date", value: value.to ?? "", min: value.from, onChange: (e) => onValueChange({ ...value, to: e.currentTarget.value || void 0 }) })
7651
+ /* @__PURE__ */ (0, import_jsx_runtime74.jsxs)("label", { className: "uix-filter-editor__date", children: [
7652
+ /* @__PURE__ */ (0, import_jsx_runtime74.jsx)("span", { children: labels.to }),
7653
+ /* @__PURE__ */ (0, import_jsx_runtime74.jsx)(Input, { type: "date", value: value.to ?? "", min: value.from, onChange: (e) => onValueChange({ ...value, to: e.currentTarget.value || void 0 }) })
7441
7654
  ] })
7442
7655
  ] });
7443
7656
  break;
7444
7657
  case "boolean": {
7445
7658
  const pick = (v) => onValueChange({ kind: "boolean", value: v });
7446
- body = /* @__PURE__ */ (0, import_jsx_runtime73.jsxs)(RadioGroup, { className: "uix-filter-editor__choices", children: [
7447
- /* @__PURE__ */ (0, import_jsx_runtime73.jsx)(Radio, { name: `${id}-bool`, label: labels.any, checked: value.value === void 0, onChange: () => pick(void 0) }),
7448
- /* @__PURE__ */ (0, import_jsx_runtime73.jsx)(Radio, { name: `${id}-bool`, label: field.trueLabel ?? labels.yes, checked: value.value === true, onChange: () => pick(true) }),
7449
- /* @__PURE__ */ (0, import_jsx_runtime73.jsx)(Radio, { name: `${id}-bool`, label: field.falseLabel ?? labels.no, checked: value.value === false, onChange: () => pick(false) })
7659
+ body = /* @__PURE__ */ (0, import_jsx_runtime74.jsxs)(RadioGroup, { className: "uix-filter-editor__choices", children: [
7660
+ /* @__PURE__ */ (0, import_jsx_runtime74.jsx)(Radio, { name: `${id}-bool`, label: labels.any, checked: value.value === void 0, onChange: () => pick(void 0) }),
7661
+ /* @__PURE__ */ (0, import_jsx_runtime74.jsx)(Radio, { name: `${id}-bool`, label: field.trueLabel ?? labels.yes, checked: value.value === true, onChange: () => pick(true) }),
7662
+ /* @__PURE__ */ (0, import_jsx_runtime74.jsx)(Radio, { name: `${id}-bool`, label: field.falseLabel ?? labels.no, checked: value.value === false, onChange: () => pick(false) })
7450
7663
  ] });
7451
7664
  break;
7452
7665
  }
7453
7666
  }
7454
- return /* @__PURE__ */ (0, import_jsx_runtime73.jsxs)("div", { className: "uix-filter-popover uix-filter-editor", role: "group", "aria-labelledby": `${id}-label`, "data-kind": field.kind, children: [
7455
- /* @__PURE__ */ (0, import_jsx_runtime73.jsx)("div", { id: `${id}-label`, className: "uix-filter-editor__label", children: field.label }),
7667
+ return /* @__PURE__ */ (0, import_jsx_runtime74.jsxs)("div", { className: "uix-filter-popover uix-filter-editor", role: "group", "aria-labelledby": `${id}-label`, "data-kind": field.kind, children: [
7668
+ /* @__PURE__ */ (0, import_jsx_runtime74.jsx)("div", { id: `${id}-label`, className: "uix-filter-editor__label", children: field.label }),
7456
7669
  body,
7457
- /* @__PURE__ */ (0, import_jsx_runtime73.jsxs)("div", { className: "uix-filter-popover__actions", children: [
7458
- /* @__PURE__ */ (0, import_jsx_runtime73.jsx)(Button, { type: "button", size: "sm", onClick: onClear, children: labels.clear }),
7459
- /* @__PURE__ */ (0, import_jsx_runtime73.jsx)(Button, { type: "button", size: "sm", variant: "primary", onClick: onApply, children: labels.apply })
7670
+ /* @__PURE__ */ (0, import_jsx_runtime74.jsxs)("div", { className: "uix-filter-popover__actions", children: [
7671
+ /* @__PURE__ */ (0, import_jsx_runtime74.jsx)(Button, { type: "button", size: "sm", onClick: onClear, children: labels.clear }),
7672
+ /* @__PURE__ */ (0, import_jsx_runtime74.jsx)(Button, { type: "button", size: "sm", variant: "primary", onClick: onApply, children: labels.apply })
7460
7673
  ] })
7461
7674
  ] });
7462
7675
  }
@@ -7471,15 +7684,15 @@ function EnumBody({ field, value, onChange, labels, threshold }) {
7471
7684
  const toggle = (v, on) => onChange({ kind: "enum", values: on ? [...value.values, v] : value.values.filter((x) => x !== v) });
7472
7685
  const presets = field.presets ?? [];
7473
7686
  const active = matchFilterPreset(field, value);
7474
- return /* @__PURE__ */ (0, import_jsx_runtime73.jsxs)(import_jsx_runtime73.Fragment, { children: [
7475
- presets.length > 0 && /* @__PURE__ */ (0, import_jsx_runtime73.jsx)("div", { className: "uix-chip-group uix-filter-editor__presets", role: "group", "aria-label": labels.presets ?? DEFAULT_FILTER_EDITOR_LABELS.presets, children: presets.map((p) => /* @__PURE__ */ (0, import_jsx_runtime73.jsx)(Chip, { pressed: p === active, onPressedChange: () => onChange({ kind: "enum", values: [...p.values] }), children: p.label }, p.id)) }),
7476
- options.length > threshold && /* @__PURE__ */ (0, import_jsx_runtime73.jsx)(Input, { type: "search", size: "sm", "aria-label": labels.search, placeholder: labels.search, value: query, onChange: (e) => setQuery(e.currentTarget.value), autoFocus: true }),
7477
- /* @__PURE__ */ (0, import_jsx_runtime73.jsxs)("div", { className: "uix-filter-editor__bulk", children: [
7478
- /* @__PURE__ */ (0, import_jsx_runtime73.jsx)("span", { className: "uix-filter-editor__count", "aria-live": "polite", children: fillLabel(labels.selected, { count: value.values.length }) }),
7479
- /* @__PURE__ */ (0, import_jsx_runtime73.jsx)(Button, { type: "button", variant: "link", size: "sm", onClick: () => onChange({ kind: "enum", values: [.../* @__PURE__ */ new Set([...value.values, ...shown.map((o) => o.value)])] }), children: labels.selectAll }),
7480
- /* @__PURE__ */ (0, import_jsx_runtime73.jsx)(Button, { type: "button", variant: "link", size: "sm", onClick: () => onChange({ kind: "enum", values: [] }), children: labels.selectNone })
7687
+ return /* @__PURE__ */ (0, import_jsx_runtime74.jsxs)(import_jsx_runtime74.Fragment, { children: [
7688
+ presets.length > 0 && /* @__PURE__ */ (0, import_jsx_runtime74.jsx)("div", { className: "uix-chip-group uix-filter-editor__presets", role: "group", "aria-label": labels.presets ?? DEFAULT_FILTER_EDITOR_LABELS.presets, children: presets.map((p) => /* @__PURE__ */ (0, import_jsx_runtime74.jsx)(Chip, { pressed: p === active, onPressedChange: () => onChange({ kind: "enum", values: [...p.values] }), children: p.label }, p.id)) }),
7689
+ options.length > threshold && /* @__PURE__ */ (0, import_jsx_runtime74.jsx)(Input, { type: "search", size: "sm", "aria-label": labels.search, placeholder: labels.search, value: query, onChange: (e) => setQuery(e.currentTarget.value), autoFocus: true }),
7690
+ /* @__PURE__ */ (0, import_jsx_runtime74.jsxs)("div", { className: "uix-filter-editor__bulk", children: [
7691
+ /* @__PURE__ */ (0, import_jsx_runtime74.jsx)("span", { className: "uix-filter-editor__count", "aria-live": "polite", children: fillLabel(labels.selected, { count: value.values.length }) }),
7692
+ /* @__PURE__ */ (0, import_jsx_runtime74.jsx)(Button, { type: "button", variant: "link", size: "sm", onClick: () => onChange({ kind: "enum", values: [.../* @__PURE__ */ new Set([...value.values, ...shown.map((o) => o.value)])] }), children: labels.selectAll }),
7693
+ /* @__PURE__ */ (0, import_jsx_runtime74.jsx)(Button, { type: "button", variant: "link", size: "sm", onClick: () => onChange({ kind: "enum", values: [] }), children: labels.selectNone })
7481
7694
  ] }),
7482
- /* @__PURE__ */ (0, import_jsx_runtime73.jsx)("div", { className: "uix-filter-editor__list", children: shown.length === 0 ? /* @__PURE__ */ (0, import_jsx_runtime73.jsx)("p", { className: "uix-filter-editor__note", children: labels.noMatches }) : shown.map((o) => /* @__PURE__ */ (0, import_jsx_runtime73.jsx)(Checkbox, { label: o.label, checked: selected.has(o.value), onChange: (e) => toggle(o.value, e.currentTarget.checked) }, o.value)) })
7695
+ /* @__PURE__ */ (0, import_jsx_runtime74.jsx)("div", { className: "uix-filter-editor__list", children: shown.length === 0 ? /* @__PURE__ */ (0, import_jsx_runtime74.jsx)("p", { className: "uix-filter-editor__note", children: labels.noMatches }) : shown.map((o) => /* @__PURE__ */ (0, import_jsx_runtime74.jsx)(Checkbox, { label: o.label, checked: selected.has(o.value), onChange: (e) => toggle(o.value, e.currentTarget.checked) }, o.value)) })
7483
7696
  ] });
7484
7697
  }
7485
7698
  function ReferenceBody({ field, value, onChange, labels, delay }) {
@@ -7505,35 +7718,35 @@ function ReferenceBody({ field, value, onChange, labels, delay }) {
7505
7718
  }, [query, attempt, field, delay]);
7506
7719
  const chosen = new Map(value.values.map((v) => [v.value, v]));
7507
7720
  const toggle = (choice, on) => onChange({ kind: "reference", values: on ? [...value.values, choice] : value.values.filter((v) => v.value !== choice.value) });
7508
- return /* @__PURE__ */ (0, import_jsx_runtime73.jsxs)(import_jsx_runtime73.Fragment, { children: [
7509
- value.values.length > 0 && /* @__PURE__ */ (0, import_jsx_runtime73.jsx)("div", { className: "uix-chip-group", role: "group", "aria-label": fillLabel(labels.selected, { count: value.values.length }), children: value.values.map((v) => /* @__PURE__ */ (0, import_jsx_runtime73.jsx)(Chip, { removeLabel: fillLabel(labels.remove, { label: v.label }), onRemove: () => toggle(v, false), children: v.label }, v.value)) }),
7510
- /* @__PURE__ */ (0, import_jsx_runtime73.jsx)(Input, { type: "search", size: "sm", "aria-label": labels.search, placeholder: labels.search, value: query, onChange: (e) => setQuery(e.currentTarget.value), autoFocus: true }),
7511
- /* @__PURE__ */ (0, import_jsx_runtime73.jsxs)("div", { className: "uix-filter-editor__list", "aria-busy": state.status === "loading" || void 0, children: [
7512
- state.status === "loading" && /* @__PURE__ */ (0, import_jsx_runtime73.jsx)("p", { className: "uix-filter-editor__note", role: "status", children: labels.searching }),
7513
- state.status === "error" && /* @__PURE__ */ (0, import_jsx_runtime73.jsxs)("p", { className: "uix-filter-editor__note", role: "alert", children: [
7721
+ return /* @__PURE__ */ (0, import_jsx_runtime74.jsxs)(import_jsx_runtime74.Fragment, { children: [
7722
+ value.values.length > 0 && /* @__PURE__ */ (0, import_jsx_runtime74.jsx)("div", { className: "uix-chip-group", role: "group", "aria-label": fillLabel(labels.selected, { count: value.values.length }), children: value.values.map((v) => /* @__PURE__ */ (0, import_jsx_runtime74.jsx)(Chip, { removeLabel: fillLabel(labels.remove, { label: v.label }), onRemove: () => toggle(v, false), children: v.label }, v.value)) }),
7723
+ /* @__PURE__ */ (0, import_jsx_runtime74.jsx)(Input, { type: "search", size: "sm", "aria-label": labels.search, placeholder: labels.search, value: query, onChange: (e) => setQuery(e.currentTarget.value), autoFocus: true }),
7724
+ /* @__PURE__ */ (0, import_jsx_runtime74.jsxs)("div", { className: "uix-filter-editor__list", "aria-busy": state.status === "loading" || void 0, children: [
7725
+ state.status === "loading" && /* @__PURE__ */ (0, import_jsx_runtime74.jsx)("p", { className: "uix-filter-editor__note", role: "status", children: labels.searching }),
7726
+ state.status === "error" && /* @__PURE__ */ (0, import_jsx_runtime74.jsxs)("p", { className: "uix-filter-editor__note", role: "alert", children: [
7514
7727
  labels.searchFailed,
7515
7728
  " ",
7516
- /* @__PURE__ */ (0, import_jsx_runtime73.jsx)(Button, { type: "button", variant: "link", size: "sm", onClick: () => setAttempt((n) => n + 1), children: labels.retry })
7729
+ /* @__PURE__ */ (0, import_jsx_runtime74.jsx)(Button, { type: "button", variant: "link", size: "sm", onClick: () => setAttempt((n) => n + 1), children: labels.retry })
7517
7730
  ] }),
7518
- state.status === "done" && state.results.length === 0 && /* @__PURE__ */ (0, import_jsx_runtime73.jsx)("p", { className: "uix-filter-editor__note", children: labels.noMatches }),
7519
- state.status === "done" && state.results.map((r) => /* @__PURE__ */ (0, import_jsx_runtime73.jsx)(Checkbox, { label: r.label, checked: chosen.has(r.value), onChange: (e) => toggle(r, e.currentTarget.checked) }, r.value))
7731
+ state.status === "done" && state.results.length === 0 && /* @__PURE__ */ (0, import_jsx_runtime74.jsx)("p", { className: "uix-filter-editor__note", children: labels.noMatches }),
7732
+ state.status === "done" && state.results.map((r) => /* @__PURE__ */ (0, import_jsx_runtime74.jsx)(Checkbox, { label: r.label, checked: chosen.has(r.value), onChange: (e) => toggle(r, e.currentTarget.checked) }, r.value))
7520
7733
  ] })
7521
7734
  ] });
7522
7735
  }
7523
7736
 
7524
7737
  // src/components/Timeline.tsx
7525
- var import_jsx_runtime74 = require("react/jsx-runtime");
7738
+ var import_jsx_runtime75 = require("react/jsx-runtime");
7526
7739
  function Timeline({ children, className, ...props }) {
7527
- return /* @__PURE__ */ (0, import_jsx_runtime74.jsx)("ol", { className: cx("uix-timeline", className), ...props, children });
7740
+ return /* @__PURE__ */ (0, import_jsx_runtime75.jsx)("ol", { className: cx("uix-timeline", className), ...props, children });
7528
7741
  }
7529
7742
  function TimelineItem({ node, meta, children, className, ...props }) {
7530
- return /* @__PURE__ */ (0, import_jsx_runtime74.jsxs)("li", { className: cx("uix-timeline__item", className), ...props, children: [
7531
- /* @__PURE__ */ (0, import_jsx_runtime74.jsxs)("div", { className: "uix-timeline__rail", "aria-hidden": "true", children: [
7532
- node ?? /* @__PURE__ */ (0, import_jsx_runtime74.jsx)("span", { className: "uix-timeline__node" }),
7533
- /* @__PURE__ */ (0, import_jsx_runtime74.jsx)("span", { className: "uix-timeline__line" })
7743
+ return /* @__PURE__ */ (0, import_jsx_runtime75.jsxs)("li", { className: cx("uix-timeline__item", className), ...props, children: [
7744
+ /* @__PURE__ */ (0, import_jsx_runtime75.jsxs)("div", { className: "uix-timeline__rail", "aria-hidden": "true", children: [
7745
+ node ?? /* @__PURE__ */ (0, import_jsx_runtime75.jsx)("span", { className: "uix-timeline__node" }),
7746
+ /* @__PURE__ */ (0, import_jsx_runtime75.jsx)("span", { className: "uix-timeline__line" })
7534
7747
  ] }),
7535
- /* @__PURE__ */ (0, import_jsx_runtime74.jsxs)("div", { className: "uix-timeline__body", children: [
7536
- meta != null && /* @__PURE__ */ (0, import_jsx_runtime74.jsx)("div", { className: "uix-timeline__meta", children: meta }),
7748
+ /* @__PURE__ */ (0, import_jsx_runtime75.jsxs)("div", { className: "uix-timeline__body", children: [
7749
+ meta != null && /* @__PURE__ */ (0, import_jsx_runtime75.jsx)("div", { className: "uix-timeline__meta", children: meta }),
7537
7750
  children
7538
7751
  ] })
7539
7752
  ] });
@@ -7541,10 +7754,10 @@ function TimelineItem({ node, meta, children, className, ...props }) {
7541
7754
 
7542
7755
  // src/components/Pipeline.tsx
7543
7756
  var import_react53 = require("react");
7544
- var import_jsx_runtime75 = require("react/jsx-runtime");
7757
+ var import_jsx_runtime76 = require("react/jsx-runtime");
7545
7758
  function Pipeline({ detailed = false, children, className, tabIndex, ...props }) {
7546
7759
  const stages = detailed ? import_react53.Children.map(children, (child) => (0, import_react53.isValidElement)(child) && child.type === PipelineStage ? (0, import_react53.cloneElement)(child, { detailed: child.props.detailed ?? true }) : child) : children;
7547
- return /* @__PURE__ */ (0, import_jsx_runtime75.jsx)(
7760
+ return /* @__PURE__ */ (0, import_jsx_runtime76.jsx)(
7548
7761
  "ol",
7549
7762
  {
7550
7763
  className: cx("uix-pipeline", detailed && "uix-pipeline--detailed", className),
@@ -7581,20 +7794,20 @@ function PipelineStage({
7581
7794
  const current = currentProp ?? (state === "active" || state === "current" || state === "running");
7582
7795
  const resolvedStateLabel = stateLabel ?? DEFAULT_STATE_LABELS[state];
7583
7796
  const showDetails = detailed || description != null || meta != null || marker != null;
7584
- return /* @__PURE__ */ (0, import_jsx_runtime75.jsx)(
7797
+ return /* @__PURE__ */ (0, import_jsx_runtime76.jsx)(
7585
7798
  "li",
7586
7799
  {
7587
7800
  className: cx("uix-pipeline__stage", className),
7588
7801
  "data-state": state,
7589
7802
  "aria-current": current ? "step" : void 0,
7590
7803
  ...props,
7591
- children: showDetails ? /* @__PURE__ */ (0, import_jsx_runtime75.jsxs)(import_jsx_runtime75.Fragment, { children: [
7592
- /* @__PURE__ */ (0, import_jsx_runtime75.jsx)("span", { className: "uix-pipeline__marker", "aria-hidden": "true", children: marker }),
7593
- /* @__PURE__ */ (0, import_jsx_runtime75.jsxs)("div", { className: "uix-pipeline__content", children: [
7594
- /* @__PURE__ */ (0, import_jsx_runtime75.jsx)("div", { className: "uix-pipeline__eyebrow", children: /* @__PURE__ */ (0, import_jsx_runtime75.jsx)("span", { className: "uix-pipeline__state", children: resolvedStateLabel }) }),
7595
- /* @__PURE__ */ (0, import_jsx_runtime75.jsx)("div", { className: "uix-pipeline__title", children: label }),
7596
- description != null && /* @__PURE__ */ (0, import_jsx_runtime75.jsx)("div", { className: "uix-pipeline__description", children: description }),
7597
- meta != null && /* @__PURE__ */ (0, import_jsx_runtime75.jsx)("div", { className: "uix-pipeline__meta", children: meta })
7804
+ children: showDetails ? /* @__PURE__ */ (0, import_jsx_runtime76.jsxs)(import_jsx_runtime76.Fragment, { children: [
7805
+ /* @__PURE__ */ (0, import_jsx_runtime76.jsx)("span", { className: "uix-pipeline__marker", "aria-hidden": "true", children: marker }),
7806
+ /* @__PURE__ */ (0, import_jsx_runtime76.jsxs)("div", { className: "uix-pipeline__content", children: [
7807
+ /* @__PURE__ */ (0, import_jsx_runtime76.jsx)("div", { className: "uix-pipeline__eyebrow", children: /* @__PURE__ */ (0, import_jsx_runtime76.jsx)("span", { className: "uix-pipeline__state", children: resolvedStateLabel }) }),
7808
+ /* @__PURE__ */ (0, import_jsx_runtime76.jsx)("div", { className: "uix-pipeline__title", children: label }),
7809
+ description != null && /* @__PURE__ */ (0, import_jsx_runtime76.jsx)("div", { className: "uix-pipeline__description", children: description }),
7810
+ meta != null && /* @__PURE__ */ (0, import_jsx_runtime76.jsx)("div", { className: "uix-pipeline__meta", children: meta })
7598
7811
  ] })
7599
7812
  ] }) : label
7600
7813
  }
@@ -7602,9 +7815,9 @@ function PipelineStage({
7602
7815
  }
7603
7816
 
7604
7817
  // src/components/Flow.tsx
7605
- var import_jsx_runtime76 = require("react/jsx-runtime");
7818
+ var import_jsx_runtime77 = require("react/jsx-runtime");
7606
7819
  function Flow({ variant = "linear", panel = false, children, className, role = "group", ...props }) {
7607
- return /* @__PURE__ */ (0, import_jsx_runtime76.jsx)(
7820
+ return /* @__PURE__ */ (0, import_jsx_runtime77.jsx)(
7608
7821
  "div",
7609
7822
  {
7610
7823
  className: cx("uix-flow", `uix-flow--${variant}`, panel && "uix-flow--panel", className),
@@ -7634,33 +7847,33 @@ function FlowNode({
7634
7847
  ...props
7635
7848
  }) {
7636
7849
  const resolvedStateLabel = stateLabel ?? FLOW_STATE_LABELS[state];
7637
- return /* @__PURE__ */ (0, import_jsx_runtime76.jsxs)("div", { className: cx("uix-node", `uix-node--${state}`, icon == null && "uix-node--no-icon", wide && "uix-node--wide", className), ...props, children: [
7638
- icon != null && /* @__PURE__ */ (0, import_jsx_runtime76.jsx)("span", { className: "uix-node__icon", "aria-hidden": "true", children: icon }),
7639
- /* @__PURE__ */ (0, import_jsx_runtime76.jsxs)("div", { className: "uix-node__body", children: [
7640
- eyebrow != null && /* @__PURE__ */ (0, import_jsx_runtime76.jsx)("div", { className: "uix-node__eyebrow", children: eyebrow }),
7641
- /* @__PURE__ */ (0, import_jsx_runtime76.jsx)("div", { className: "uix-node__title", children: title }),
7642
- meta != null && /* @__PURE__ */ (0, import_jsx_runtime76.jsx)("div", { className: "uix-node__meta", children: meta }),
7643
- /* @__PURE__ */ (0, import_jsx_runtime76.jsx)("div", { className: "uix-node__status", children: resolvedStateLabel })
7850
+ return /* @__PURE__ */ (0, import_jsx_runtime77.jsxs)("div", { className: cx("uix-node", `uix-node--${state}`, icon == null && "uix-node--no-icon", wide && "uix-node--wide", className), ...props, children: [
7851
+ icon != null && /* @__PURE__ */ (0, import_jsx_runtime77.jsx)("span", { className: "uix-node__icon", "aria-hidden": "true", children: icon }),
7852
+ /* @__PURE__ */ (0, import_jsx_runtime77.jsxs)("div", { className: "uix-node__body", children: [
7853
+ eyebrow != null && /* @__PURE__ */ (0, import_jsx_runtime77.jsx)("div", { className: "uix-node__eyebrow", children: eyebrow }),
7854
+ /* @__PURE__ */ (0, import_jsx_runtime77.jsx)("div", { className: "uix-node__title", children: title }),
7855
+ meta != null && /* @__PURE__ */ (0, import_jsx_runtime77.jsx)("div", { className: "uix-node__meta", children: meta }),
7856
+ /* @__PURE__ */ (0, import_jsx_runtime77.jsx)("div", { className: "uix-node__status", children: resolvedStateLabel })
7644
7857
  ] }),
7645
- footer != null && /* @__PURE__ */ (0, import_jsx_runtime76.jsx)("div", { className: "uix-node__footer", children: footer })
7858
+ footer != null && /* @__PURE__ */ (0, import_jsx_runtime77.jsx)("div", { className: "uix-node__footer", children: footer })
7646
7859
  ] });
7647
7860
  }
7648
7861
 
7649
7862
  // src/components/Prose.tsx
7650
- var import_jsx_runtime77 = require("react/jsx-runtime");
7863
+ var import_jsx_runtime78 = require("react/jsx-runtime");
7651
7864
  function Prose({ children, className, ...props }) {
7652
- return /* @__PURE__ */ (0, import_jsx_runtime77.jsx)("div", { className: cx("uix-prose", className), ...props, children });
7865
+ return /* @__PURE__ */ (0, import_jsx_runtime78.jsx)("div", { className: cx("uix-prose", className), ...props, children });
7653
7866
  }
7654
7867
  function Note({ tone, icon, children, className, ...props }) {
7655
- return /* @__PURE__ */ (0, import_jsx_runtime77.jsxs)("div", { className: cx("uix-note", tone && tone !== "neutral" && `uix-note--${tone}`, className), ...props, children: [
7656
- icon != null && /* @__PURE__ */ (0, import_jsx_runtime77.jsx)("div", { className: "uix-note__icon", children: icon }),
7657
- /* @__PURE__ */ (0, import_jsx_runtime77.jsx)("div", { className: "uix-note__body", children })
7868
+ return /* @__PURE__ */ (0, import_jsx_runtime78.jsxs)("div", { className: cx("uix-note", tone && tone !== "neutral" && `uix-note--${tone}`, className), ...props, children: [
7869
+ icon != null && /* @__PURE__ */ (0, import_jsx_runtime78.jsx)("div", { className: "uix-note__icon", children: icon }),
7870
+ /* @__PURE__ */ (0, import_jsx_runtime78.jsx)("div", { className: "uix-note__body", children })
7658
7871
  ] });
7659
7872
  }
7660
7873
 
7661
7874
  // src/components/Menu.tsx
7662
7875
  var import_react54 = require("react");
7663
- var import_jsx_runtime78 = require("react/jsx-runtime");
7876
+ var import_jsx_runtime79 = require("react/jsx-runtime");
7664
7877
  var MenuContext = (0, import_react54.createContext)(null);
7665
7878
  var MenuRadioContext = (0, import_react54.createContext)(null);
7666
7879
  var ITEM = '[role^="menuitem"]:not([aria-disabled="true"])';
@@ -7782,9 +7995,9 @@ function Menu({ trigger, children, open: controlledOpen, defaultOpen = false, on
7782
7995
  }
7783
7996
  }
7784
7997
  }) : trigger;
7785
- return /* @__PURE__ */ (0, import_jsx_runtime78.jsxs)(MenuContext.Provider, { value: { close }, children: [
7998
+ return /* @__PURE__ */ (0, import_jsx_runtime79.jsxs)(MenuContext.Provider, { value: { close }, children: [
7786
7999
  triggerElement,
7787
- /* @__PURE__ */ (0, import_jsx_runtime78.jsx)(
8000
+ /* @__PURE__ */ (0, import_jsx_runtime79.jsx)(
7788
8001
  Popover,
7789
8002
  {
7790
8003
  id: menuId,
@@ -7806,15 +8019,15 @@ function MenuItem({ children, onSelect, href, renderLink, icon, shortcut, tone =
7806
8019
  const menu = (0, import_react54.useContext)(MenuContext);
7807
8020
  const classes = cx("uix-menu__item", tone === "danger" && "uix-menu__item--danger", className);
7808
8021
  const attributes = itemAttributes(rest);
7809
- const body = /* @__PURE__ */ (0, import_jsx_runtime78.jsxs)(import_jsx_runtime78.Fragment, { children: [
7810
- icon != null && /* @__PURE__ */ (0, import_jsx_runtime78.jsx)("span", { className: "uix-menu__icon", "aria-hidden": "true", children: icon }),
7811
- /* @__PURE__ */ (0, import_jsx_runtime78.jsx)("span", { className: "uix-menu__text", children }),
7812
- shortcut != null && /* @__PURE__ */ (0, import_jsx_runtime78.jsx)("span", { className: "uix-menu__shortcut", children: shortcut })
8022
+ const body = /* @__PURE__ */ (0, import_jsx_runtime79.jsxs)(import_jsx_runtime79.Fragment, { children: [
8023
+ icon != null && /* @__PURE__ */ (0, import_jsx_runtime79.jsx)("span", { className: "uix-menu__icon", "aria-hidden": "true", children: icon }),
8024
+ /* @__PURE__ */ (0, import_jsx_runtime79.jsx)("span", { className: "uix-menu__text", children }),
8025
+ shortcut != null && /* @__PURE__ */ (0, import_jsx_runtime79.jsx)("span", { className: "uix-menu__shortcut", children: shortcut })
7813
8026
  ] });
7814
8027
  if (href != null && !disabled) {
7815
- return /* @__PURE__ */ (0, import_jsx_runtime78.jsx)(import_jsx_runtime78.Fragment, { children: renderUixLink(renderLink, { ...attributes, href, role: "menuitem", tabIndex: -1, className: classes, onClick: () => menu?.close(false), children: body }) });
8028
+ return /* @__PURE__ */ (0, import_jsx_runtime79.jsx)(import_jsx_runtime79.Fragment, { children: renderUixLink(renderLink, { ...attributes, href, role: "menuitem", tabIndex: -1, className: classes, onClick: () => menu?.close(false), children: body }) });
7816
8029
  }
7817
- return /* @__PURE__ */ (0, import_jsx_runtime78.jsx)(
8030
+ return /* @__PURE__ */ (0, import_jsx_runtime79.jsx)(
7818
8031
  "button",
7819
8032
  {
7820
8033
  ...attributes,
@@ -7845,7 +8058,7 @@ function CheckableItem({
7845
8058
  ...rest
7846
8059
  }) {
7847
8060
  const menu = (0, import_react54.useContext)(MenuContext);
7848
- return /* @__PURE__ */ (0, import_jsx_runtime78.jsxs)(
8061
+ return /* @__PURE__ */ (0, import_jsx_runtime79.jsxs)(
7849
8062
  "button",
7850
8063
  {
7851
8064
  ...itemAttributes(rest),
@@ -7869,24 +8082,24 @@ function CheckableItem({
7869
8082
  if (closeOnSelect) menu?.close(true);
7870
8083
  },
7871
8084
  children: [
7872
- /* @__PURE__ */ (0, import_jsx_runtime78.jsx)("span", { className: "uix-menu__check", "aria-hidden": "true", children: checked && /* @__PURE__ */ (0, import_jsx_runtime78.jsx)(CheckIcon, {}) }),
7873
- icon != null && /* @__PURE__ */ (0, import_jsx_runtime78.jsx)("span", { className: "uix-menu__icon", "aria-hidden": "true", children: icon }),
7874
- /* @__PURE__ */ (0, import_jsx_runtime78.jsx)("span", { className: "uix-menu__text", children }),
7875
- shortcut != null && /* @__PURE__ */ (0, import_jsx_runtime78.jsx)("span", { className: "uix-menu__shortcut", children: shortcut })
8085
+ /* @__PURE__ */ (0, import_jsx_runtime79.jsx)("span", { className: "uix-menu__check", "aria-hidden": "true", children: checked && /* @__PURE__ */ (0, import_jsx_runtime79.jsx)(CheckIcon, {}) }),
8086
+ icon != null && /* @__PURE__ */ (0, import_jsx_runtime79.jsx)("span", { className: "uix-menu__icon", "aria-hidden": "true", children: icon }),
8087
+ /* @__PURE__ */ (0, import_jsx_runtime79.jsx)("span", { className: "uix-menu__text", children }),
8088
+ shortcut != null && /* @__PURE__ */ (0, import_jsx_runtime79.jsx)("span", { className: "uix-menu__shortcut", children: shortcut })
7876
8089
  ]
7877
8090
  }
7878
8091
  );
7879
8092
  }
7880
8093
  function MenuRadioGroup({ value, onValueChange, label, "aria-label": ariaLabel, children }) {
7881
8094
  const id = (0, import_react54.useId)();
7882
- return /* @__PURE__ */ (0, import_jsx_runtime78.jsx)(MenuRadioContext.Provider, { value: { value, onValueChange }, children: /* @__PURE__ */ (0, import_jsx_runtime78.jsxs)("div", { role: "group", "aria-labelledby": label != null ? id : void 0, "aria-label": label != null ? void 0 : ariaLabel, children: [
7883
- label != null && /* @__PURE__ */ (0, import_jsx_runtime78.jsx)("div", { id, className: "uix-menu__label", children: label }),
8095
+ return /* @__PURE__ */ (0, import_jsx_runtime79.jsx)(MenuRadioContext.Provider, { value: { value, onValueChange }, children: /* @__PURE__ */ (0, import_jsx_runtime79.jsxs)("div", { role: "group", "aria-labelledby": label != null ? id : void 0, "aria-label": label != null ? void 0 : ariaLabel, children: [
8096
+ label != null && /* @__PURE__ */ (0, import_jsx_runtime79.jsx)("div", { id, className: "uix-menu__label", children: label }),
7884
8097
  children
7885
8098
  ] }) });
7886
8099
  }
7887
8100
  function MenuItemRadio({ value, checked, onSelect, closeOnSelect = true, ...rest }) {
7888
8101
  const group = (0, import_react54.useContext)(MenuRadioContext);
7889
- return /* @__PURE__ */ (0, import_jsx_runtime78.jsx)(
8102
+ return /* @__PURE__ */ (0, import_jsx_runtime79.jsx)(
7890
8103
  CheckableItem,
7891
8104
  {
7892
8105
  ...rest,
@@ -7901,7 +8114,7 @@ function MenuItemRadio({ value, checked, onSelect, closeOnSelect = true, ...rest
7901
8114
  );
7902
8115
  }
7903
8116
  function MenuItemCheckbox({ checked, onCheckedChange, closeOnSelect = false, ...rest }) {
7904
- return /* @__PURE__ */ (0, import_jsx_runtime78.jsx)(
8117
+ return /* @__PURE__ */ (0, import_jsx_runtime79.jsx)(
7905
8118
  CheckableItem,
7906
8119
  {
7907
8120
  ...rest,
@@ -7914,18 +8127,18 @@ function MenuItemCheckbox({ checked, onCheckedChange, closeOnSelect = false, ...
7914
8127
  }
7915
8128
  function MenuGroup({ label, children }) {
7916
8129
  const id = (0, import_react54.useId)();
7917
- return /* @__PURE__ */ (0, import_jsx_runtime78.jsxs)("div", { role: "group", "aria-labelledby": id, children: [
7918
- /* @__PURE__ */ (0, import_jsx_runtime78.jsx)("div", { id, className: "uix-menu__label", children: label }),
8130
+ return /* @__PURE__ */ (0, import_jsx_runtime79.jsxs)("div", { role: "group", "aria-labelledby": id, children: [
8131
+ /* @__PURE__ */ (0, import_jsx_runtime79.jsx)("div", { id, className: "uix-menu__label", children: label }),
7919
8132
  children
7920
8133
  ] });
7921
8134
  }
7922
8135
  function MenuSeparator() {
7923
- return /* @__PURE__ */ (0, import_jsx_runtime78.jsx)("div", { role: "separator", className: "uix-menu__sep" });
8136
+ return /* @__PURE__ */ (0, import_jsx_runtime79.jsx)("div", { role: "separator", className: "uix-menu__sep" });
7924
8137
  }
7925
8138
 
7926
8139
  // src/components/CommandPalette.tsx
7927
8140
  var import_react55 = require("react");
7928
- var import_jsx_runtime79 = require("react/jsx-runtime");
8141
+ var import_jsx_runtime80 = require("react/jsx-runtime");
7929
8142
  var CmdkContext = (0, import_react55.createContext)(null);
7930
8143
  function CommandPalette({ inputProps, children, inputLabel: inputLabelProp, resultsLabel, className, ...props }) {
7931
8144
  const uixLabels = useUixLabels();
@@ -7951,8 +8164,8 @@ function CommandPalette({ inputProps, children, inputLabel: inputLabelProp, resu
7951
8164
  return () => clearTimeout(t);
7952
8165
  }, [count2]);
7953
8166
  const ctx = (0, import_react55.useMemo)(() => ({ listId, setActive, registerItem }), [listId, setActive, registerItem]);
7954
- return /* @__PURE__ */ (0, import_jsx_runtime79.jsx)(CmdkContext.Provider, { value: ctx, children: /* @__PURE__ */ (0, import_jsx_runtime79.jsxs)("div", { className: cx("uix-cmdk", className), ...props, children: [
7955
- /* @__PURE__ */ (0, import_jsx_runtime79.jsx)(
8167
+ return /* @__PURE__ */ (0, import_jsx_runtime80.jsx)(CmdkContext.Provider, { value: ctx, children: /* @__PURE__ */ (0, import_jsx_runtime80.jsxs)("div", { className: cx("uix-cmdk", className), ...props, children: [
8168
+ /* @__PURE__ */ (0, import_jsx_runtime80.jsx)(
7956
8169
  "input",
7957
8170
  {
7958
8171
  className: "uix-cmdk__input",
@@ -7965,14 +8178,14 @@ function CommandPalette({ inputProps, children, inputLabel: inputLabelProp, resu
7965
8178
  ...inputProps
7966
8179
  }
7967
8180
  ),
7968
- /* @__PURE__ */ (0, import_jsx_runtime79.jsx)("div", { className: "uix-cmdk__list", role: "listbox", id: listId, children }),
7969
- /* @__PURE__ */ (0, import_jsx_runtime79.jsx)("span", { className: "uix-visually-hidden", role: "status", children: announced })
8181
+ /* @__PURE__ */ (0, import_jsx_runtime80.jsx)("div", { className: "uix-cmdk__list", role: "listbox", id: listId, children }),
8182
+ /* @__PURE__ */ (0, import_jsx_runtime80.jsx)("span", { className: "uix-visually-hidden", role: "status", children: announced })
7970
8183
  ] }) });
7971
8184
  }
7972
8185
  function CommandGroup({ label, children }) {
7973
8186
  const labelId = (0, import_react55.useId)();
7974
- return /* @__PURE__ */ (0, import_jsx_runtime79.jsxs)("div", { role: "group", "aria-labelledby": label != null ? labelId : void 0, children: [
7975
- label != null && /* @__PURE__ */ (0, import_jsx_runtime79.jsx)("div", { className: "uix-cmdk__group", id: labelId, children: label }),
8187
+ return /* @__PURE__ */ (0, import_jsx_runtime80.jsxs)("div", { role: "group", "aria-labelledby": label != null ? labelId : void 0, children: [
8188
+ label != null && /* @__PURE__ */ (0, import_jsx_runtime80.jsx)("div", { className: "uix-cmdk__group", id: labelId, children: label }),
7976
8189
  children
7977
8190
  ] });
7978
8191
  }
@@ -7986,7 +8199,7 @@ function CommandItem({ icon, shortcut, active, children, className, id, ...props
7986
8199
  ctx.setActive(itemId, true);
7987
8200
  return () => ctx.setActive(itemId, false);
7988
8201
  }, [ctx, itemId, active]);
7989
- return /* @__PURE__ */ (0, import_jsx_runtime79.jsxs)(
8202
+ return /* @__PURE__ */ (0, import_jsx_runtime80.jsxs)(
7990
8203
  "div",
7991
8204
  {
7992
8205
  className: cx("uix-cmdk__item", className),
@@ -7997,7 +8210,7 @@ function CommandItem({ icon, shortcut, active, children, className, id, ...props
7997
8210
  ...props,
7998
8211
  children: [
7999
8212
  icon,
8000
- /* @__PURE__ */ (0, import_jsx_runtime79.jsx)("span", { children }),
8213
+ /* @__PURE__ */ (0, import_jsx_runtime80.jsx)("span", { children }),
8001
8214
  shortcut
8002
8215
  ]
8003
8216
  }
@@ -8006,9 +8219,9 @@ function CommandItem({ icon, shortcut, active, children, className, id, ...props
8006
8219
 
8007
8220
  // src/components/Inbox.tsx
8008
8221
  var import_react56 = require("react");
8009
- var import_jsx_runtime80 = require("react/jsx-runtime");
8222
+ var import_jsx_runtime81 = require("react/jsx-runtime");
8010
8223
  function Inbox({ view, children, className, ...props }) {
8011
- return /* @__PURE__ */ (0, import_jsx_runtime80.jsx)("div", { className: cx("uix-inbox", className), "data-view": view, ...props, children });
8224
+ return /* @__PURE__ */ (0, import_jsx_runtime81.jsx)("div", { className: cx("uix-inbox", className), "data-view": view, ...props, children });
8012
8225
  }
8013
8226
  var InboxListCtx = (0, import_react56.createContext)({});
8014
8227
  function InboxList({ children, listLabel = "Inbox", className, ...props }) {
@@ -8049,7 +8262,7 @@ function InboxList({ children, listLabel = "Inbox", className, ...props }) {
8049
8262
  setActiveId(el.id);
8050
8263
  el.scrollIntoView({ block: "nearest" });
8051
8264
  };
8052
- return /* @__PURE__ */ (0, import_jsx_runtime80.jsx)(InboxListCtx.Provider, { value: ctx, children: /* @__PURE__ */ (0, import_jsx_runtime80.jsx)(
8265
+ return /* @__PURE__ */ (0, import_jsx_runtime81.jsx)(InboxListCtx.Provider, { value: ctx, children: /* @__PURE__ */ (0, import_jsx_runtime81.jsx)(
8053
8266
  "div",
8054
8267
  {
8055
8268
  ref: listRef,
@@ -8078,7 +8291,7 @@ function InboxItem({
8078
8291
  const autoId = (0, import_react56.useId)();
8079
8292
  const itemId = id ?? autoId;
8080
8293
  const { activeId } = (0, import_react56.useContext)(InboxListCtx);
8081
- return /* @__PURE__ */ (0, import_jsx_runtime80.jsxs)(
8294
+ return /* @__PURE__ */ (0, import_jsx_runtime81.jsxs)(
8082
8295
  "div",
8083
8296
  {
8084
8297
  role: "option",
@@ -8090,35 +8303,35 @@ function InboxItem({
8090
8303
  ...props,
8091
8304
  children: [
8092
8305
  leading,
8093
- subject != null && /* @__PURE__ */ (0, import_jsx_runtime80.jsx)("div", { className: "uix-inbox__subject", children: subject }),
8094
- preview != null && /* @__PURE__ */ (0, import_jsx_runtime80.jsx)("div", { className: "uix-inbox__preview", children: preview }),
8306
+ subject != null && /* @__PURE__ */ (0, import_jsx_runtime81.jsx)("div", { className: "uix-inbox__subject", children: subject }),
8307
+ preview != null && /* @__PURE__ */ (0, import_jsx_runtime81.jsx)("div", { className: "uix-inbox__preview", children: preview }),
8095
8308
  children
8096
8309
  ]
8097
8310
  }
8098
8311
  );
8099
8312
  }
8100
8313
  function InboxDetail({ children, className, ...props }) {
8101
- return /* @__PURE__ */ (0, import_jsx_runtime80.jsx)("div", { className: cx("uix-inbox__detail", className), ...props, children });
8314
+ return /* @__PURE__ */ (0, import_jsx_runtime81.jsx)("div", { className: cx("uix-inbox__detail", className), ...props, children });
8102
8315
  }
8103
8316
 
8104
8317
  // src/components/Kanban.tsx
8105
8318
  var import_react57 = require("react");
8106
- var import_jsx_runtime81 = require("react/jsx-runtime");
8319
+ var import_jsx_runtime82 = require("react/jsx-runtime");
8107
8320
  function Kanban({ announcement, children, className, ...props }) {
8108
- return /* @__PURE__ */ (0, import_jsx_runtime81.jsxs)("div", { className: cx("uix-kanban", className), ...props, children: [
8109
- announcement != null && /* @__PURE__ */ (0, import_jsx_runtime81.jsx)("div", { role: "status", className: "uix-visually-hidden", children: announcement }),
8321
+ return /* @__PURE__ */ (0, import_jsx_runtime82.jsxs)("div", { className: cx("uix-kanban", className), ...props, children: [
8322
+ announcement != null && /* @__PURE__ */ (0, import_jsx_runtime82.jsx)("div", { role: "status", className: "uix-visually-hidden", children: announcement }),
8110
8323
  children
8111
8324
  ] });
8112
8325
  }
8113
8326
  function KanbanColumn({ title, count: count2, children, className, ...props }) {
8114
8327
  const headId = (0, import_react57.useId)();
8115
8328
  const hasHead = title != null || count2 != null;
8116
- return /* @__PURE__ */ (0, import_jsx_runtime81.jsxs)("div", { className: cx("uix-kanban__col", className), ...props, children: [
8117
- hasHead && /* @__PURE__ */ (0, import_jsx_runtime81.jsxs)("div", { className: "uix-kanban__head", id: headId, children: [
8329
+ return /* @__PURE__ */ (0, import_jsx_runtime82.jsxs)("div", { className: cx("uix-kanban__col", className), ...props, children: [
8330
+ hasHead && /* @__PURE__ */ (0, import_jsx_runtime82.jsxs)("div", { className: "uix-kanban__head", id: headId, children: [
8118
8331
  title,
8119
- count2 != null && /* @__PURE__ */ (0, import_jsx_runtime81.jsx)("span", { className: "uix-kanban__count", children: count2 })
8332
+ count2 != null && /* @__PURE__ */ (0, import_jsx_runtime82.jsx)("span", { className: "uix-kanban__count", children: count2 })
8120
8333
  ] }),
8121
- /* @__PURE__ */ (0, import_jsx_runtime81.jsx)("div", { className: "uix-kanban__body", role: "list", "aria-labelledby": hasHead ? headId : void 0, children })
8334
+ /* @__PURE__ */ (0, import_jsx_runtime82.jsx)("div", { className: "uix-kanban__body", role: "list", "aria-labelledby": hasHead ? headId : void 0, children })
8122
8335
  ] });
8123
8336
  }
8124
8337
  var MOVE_KEYS = {
@@ -8137,7 +8350,7 @@ function KanbanCard({ title, meta, children, className, onMove, onKeyDown, ...pr
8137
8350
  onMove(dir);
8138
8351
  }
8139
8352
  };
8140
- return /* @__PURE__ */ (0, import_jsx_runtime81.jsxs)(
8353
+ return /* @__PURE__ */ (0, import_jsx_runtime82.jsxs)(
8141
8354
  "div",
8142
8355
  {
8143
8356
  role: "listitem",
@@ -8146,8 +8359,8 @@ function KanbanCard({ title, meta, children, className, onMove, onKeyDown, ...pr
8146
8359
  onKeyDown: handleKeyDown,
8147
8360
  ...props,
8148
8361
  children: [
8149
- title && /* @__PURE__ */ (0, import_jsx_runtime81.jsx)("div", { className: "uix-kanban__card-title", children: title }),
8150
- meta && /* @__PURE__ */ (0, import_jsx_runtime81.jsx)("div", { className: "uix-kanban__card-meta", children: meta }),
8362
+ title && /* @__PURE__ */ (0, import_jsx_runtime82.jsx)("div", { className: "uix-kanban__card-title", children: title }),
8363
+ meta && /* @__PURE__ */ (0, import_jsx_runtime82.jsx)("div", { className: "uix-kanban__card-meta", children: meta }),
8151
8364
  children
8152
8365
  ]
8153
8366
  }
@@ -8213,8 +8426,8 @@ function treeNav(flat, currentId, key) {
8213
8426
  }
8214
8427
 
8215
8428
  // src/components/Tree.tsx
8216
- var import_jsx_runtime82 = require("react/jsx-runtime");
8217
- var ChevronIcon2 = () => /* @__PURE__ */ (0, import_jsx_runtime82.jsx)("svg", { viewBox: "0 0 12 12", fill: "none", stroke: "currentColor", strokeWidth: 1.5, strokeLinecap: "round", strokeLinejoin: "round", "aria-hidden": "true", children: /* @__PURE__ */ (0, import_jsx_runtime82.jsx)("path", { d: "M2 4l4 4 4-4" }) });
8429
+ var import_jsx_runtime83 = require("react/jsx-runtime");
8430
+ var ChevronIcon2 = () => /* @__PURE__ */ (0, import_jsx_runtime83.jsx)("svg", { viewBox: "0 0 12 12", fill: "none", stroke: "currentColor", strokeWidth: 1.5, strokeLinecap: "round", strokeLinejoin: "round", "aria-hidden": "true", children: /* @__PURE__ */ (0, import_jsx_runtime83.jsx)("path", { d: "M2 4l4 4 4-4" }) });
8218
8431
  var DEFAULT_TREE_LABELS = {
8219
8432
  loading: "Loading\u2026",
8220
8433
  error: "Could not load.",
@@ -8223,11 +8436,11 @@ var DEFAULT_TREE_LABELS = {
8223
8436
  var LOADING = "::uix-loading";
8224
8437
  var FAILED = "::uix-error";
8225
8438
  var syntheticOf = (id) => id.endsWith(LOADING) ? { parent: id.slice(0, -LOADING.length), kind: "loading" } : id.endsWith(FAILED) ? { parent: id.slice(0, -FAILED.length), kind: "error" } : null;
8226
- var Ring = () => /* @__PURE__ */ (0, import_jsx_runtime82.jsx)("span", { className: "uix-spinner uix-spinner--sm", "aria-hidden": "true" });
8439
+ var Ring = () => /* @__PURE__ */ (0, import_jsx_runtime83.jsx)("span", { className: "uix-spinner uix-spinner--sm", "aria-hidden": "true" });
8227
8440
  function TreeNode({ node, expanded, selected, selectable, tabbableId, onToggle, onSelect, onFocusNode, level = 1, rowToggles = true, busy }) {
8228
8441
  const hasChildren = Array.isArray(node.children) && node.children.length > 0;
8229
8442
  const isExpanded = expanded.has(node.id);
8230
- return /* @__PURE__ */ (0, import_jsx_runtime82.jsxs)(
8443
+ return /* @__PURE__ */ (0, import_jsx_runtime83.jsxs)(
8231
8444
  "li",
8232
8445
  {
8233
8446
  role: "treeitem",
@@ -8248,12 +8461,12 @@ function TreeNode({ node, expanded, selected, selectable, tabbableId, onToggle,
8248
8461
  onFocusNode(node.id);
8249
8462
  },
8250
8463
  children: [
8251
- /* @__PURE__ */ (0, import_jsx_runtime82.jsxs)("span", { className: "uix-tree__row", children: [
8464
+ /* @__PURE__ */ (0, import_jsx_runtime83.jsxs)("span", { className: "uix-tree__row", children: [
8252
8465
  hasChildren ? (
8253
8466
  // TENSOR RX-125 (UIX-09): the chevron is its own pointer target, so a
8254
8467
  // branch can be expanded without selecting it. Keyboard users toggle with
8255
8468
  // the arrow keys on the treeitem, so it stays out of the tab order.
8256
- /* @__PURE__ */ (0, import_jsx_runtime82.jsx)(
8469
+ /* @__PURE__ */ (0, import_jsx_runtime83.jsx)(
8257
8470
  "button",
8258
8471
  {
8259
8472
  type: "button",
@@ -8265,14 +8478,14 @@ function TreeNode({ node, expanded, selected, selectable, tabbableId, onToggle,
8265
8478
  onToggle(node.id);
8266
8479
  onFocusNode(node.id);
8267
8480
  },
8268
- children: /* @__PURE__ */ (0, import_jsx_runtime82.jsx)(ChevronIcon2, {})
8481
+ children: /* @__PURE__ */ (0, import_jsx_runtime83.jsx)(ChevronIcon2, {})
8269
8482
  }
8270
8483
  )
8271
- ) : /* @__PURE__ */ (0, import_jsx_runtime82.jsx)("span", { className: "uix-tree__toggle" }),
8272
- node.icon && /* @__PURE__ */ (0, import_jsx_runtime82.jsx)("span", { "aria-hidden": "true", children: node.icon }),
8273
- /* @__PURE__ */ (0, import_jsx_runtime82.jsx)("span", { className: "uix-tree__label", children: node.label })
8484
+ ) : /* @__PURE__ */ (0, import_jsx_runtime83.jsx)("span", { className: "uix-tree__toggle" }),
8485
+ node.icon && /* @__PURE__ */ (0, import_jsx_runtime83.jsx)("span", { "aria-hidden": "true", children: node.icon }),
8486
+ /* @__PURE__ */ (0, import_jsx_runtime83.jsx)("span", { className: "uix-tree__label", children: node.label })
8274
8487
  ] }),
8275
- hasChildren && isExpanded && /* @__PURE__ */ (0, import_jsx_runtime82.jsx)("ul", { role: "group", className: "uix-tree__group", children: node.children.map((child) => /* @__PURE__ */ (0, import_jsx_runtime82.jsx)(
8488
+ hasChildren && isExpanded && /* @__PURE__ */ (0, import_jsx_runtime83.jsx)("ul", { role: "group", className: "uix-tree__group", children: node.children.map((child) => /* @__PURE__ */ (0, import_jsx_runtime83.jsx)(
8276
8489
  TreeNode,
8277
8490
  {
8278
8491
  node: child,
@@ -8328,12 +8541,12 @@ function Tree({
8328
8541
  const row = (parent, kind) => ({
8329
8542
  id: parent.id + (kind === "error" ? FAILED : LOADING),
8330
8543
  typeaheadLabel: "",
8331
- label: kind === "error" ? /* @__PURE__ */ (0, import_jsx_runtime82.jsxs)("span", { className: "uix-tree__status uix-tree__status--error", children: [
8544
+ label: kind === "error" ? /* @__PURE__ */ (0, import_jsx_runtime83.jsxs)("span", { className: "uix-tree__status uix-tree__status--error", children: [
8332
8545
  labels.error,
8333
8546
  " ",
8334
- /* @__PURE__ */ (0, import_jsx_runtime82.jsx)("span", { className: "uix-tree__retry", children: labels.retry })
8335
- ] }) : /* @__PURE__ */ (0, import_jsx_runtime82.jsxs)("span", { className: "uix-tree__status", children: [
8336
- /* @__PURE__ */ (0, import_jsx_runtime82.jsx)(Ring, {}),
8547
+ /* @__PURE__ */ (0, import_jsx_runtime83.jsx)("span", { className: "uix-tree__retry", children: labels.retry })
8548
+ ] }) : /* @__PURE__ */ (0, import_jsx_runtime83.jsxs)("span", { className: "uix-tree__status", children: [
8549
+ /* @__PURE__ */ (0, import_jsx_runtime83.jsx)(Ring, {}),
8337
8550
  labels.loading
8338
8551
  ] })
8339
8552
  });
@@ -8433,7 +8646,7 @@ function Tree({
8433
8646
  const useVirtual = virtualize ?? shouldVirtualize(flat.length);
8434
8647
  const tabbableId = focusedId ?? selected ?? nodes[0]?.id;
8435
8648
  if (useVirtual) {
8436
- return /* @__PURE__ */ (0, import_jsx_runtime82.jsx)(
8649
+ return /* @__PURE__ */ (0, import_jsx_runtime83.jsx)(
8437
8650
  VirtualTreeView,
8438
8651
  {
8439
8652
  flat,
@@ -8513,7 +8726,7 @@ function Tree({
8513
8726
  break;
8514
8727
  }
8515
8728
  };
8516
- return /* @__PURE__ */ (0, import_jsx_runtime82.jsx)("ul", { ref: rootRef, className: cx("uix-tree", className), role: "tree", "data-uix-tree": treeId, onKeyDown, ...props, children: nodes.map((node) => /* @__PURE__ */ (0, import_jsx_runtime82.jsx)(
8729
+ return /* @__PURE__ */ (0, import_jsx_runtime83.jsx)("ul", { ref: rootRef, className: cx("uix-tree", className), role: "tree", "data-uix-tree": treeId, onKeyDown, ...props, children: nodes.map((node) => /* @__PURE__ */ (0, import_jsx_runtime83.jsx)(
8517
8730
  TreeNode,
8518
8731
  {
8519
8732
  node,
@@ -8598,7 +8811,7 @@ function VirtualTreeView({
8598
8811
  }
8599
8812
  if (act.focusId !== void 0) moveTo(act.focusId);
8600
8813
  };
8601
- return /* @__PURE__ */ (0, import_jsx_runtime82.jsxs)(
8814
+ return /* @__PURE__ */ (0, import_jsx_runtime83.jsxs)(
8602
8815
  "ul",
8603
8816
  {
8604
8817
  ref: scrollRef,
@@ -8617,13 +8830,13 @@ function VirtualTreeView({
8617
8830
  },
8618
8831
  ...props,
8619
8832
  children: [
8620
- win.padTop > 0 && /* @__PURE__ */ (0, import_jsx_runtime82.jsx)("li", { role: "presentation", "aria-hidden": "true", style: { height: win.padTop } }),
8833
+ win.padTop > 0 && /* @__PURE__ */ (0, import_jsx_runtime83.jsx)("li", { role: "presentation", "aria-hidden": "true", style: { height: win.padTop } }),
8621
8834
  rows.map((f, i) => {
8622
8835
  const rowStyle = {
8623
8836
  height: rowHeight,
8624
8837
  paddingLeft: `calc(${Math.min(f.level - 1, 4)} * var(--uix-space-5) + ${Math.max(0, f.level - 5)} * var(--uix-space-1))`
8625
8838
  };
8626
- return /* @__PURE__ */ (0, import_jsx_runtime82.jsx)(
8839
+ return /* @__PURE__ */ (0, import_jsx_runtime83.jsx)(
8627
8840
  "li",
8628
8841
  {
8629
8842
  role: "treeitem",
@@ -8645,12 +8858,12 @@ function VirtualTreeView({
8645
8858
  onSelect?.(f.node.id);
8646
8859
  setFocusedId(f.node.id);
8647
8860
  },
8648
- children: /* @__PURE__ */ (0, import_jsx_runtime82.jsxs)("span", { className: "uix-tree__row", style: rowStyle, children: [
8861
+ children: /* @__PURE__ */ (0, import_jsx_runtime83.jsxs)("span", { className: "uix-tree__row", style: rowStyle, children: [
8649
8862
  f.hasChildren ? (
8650
8863
  // TENSOR RX-125 (UIX-09): the chevron is its own pointer target, so a
8651
8864
  // branch can be expanded without selecting it. Keyboard users toggle with
8652
8865
  // the arrow keys on the treeitem, so it stays out of the tab order.
8653
- /* @__PURE__ */ (0, import_jsx_runtime82.jsx)(
8866
+ /* @__PURE__ */ (0, import_jsx_runtime83.jsx)(
8654
8867
  "button",
8655
8868
  {
8656
8869
  type: "button",
@@ -8662,25 +8875,25 @@ function VirtualTreeView({
8662
8875
  onToggle(f.node.id);
8663
8876
  setFocusedId(f.node.id);
8664
8877
  },
8665
- children: /* @__PURE__ */ (0, import_jsx_runtime82.jsx)(ChevronIcon2, {})
8878
+ children: /* @__PURE__ */ (0, import_jsx_runtime83.jsx)(ChevronIcon2, {})
8666
8879
  }
8667
8880
  )
8668
- ) : /* @__PURE__ */ (0, import_jsx_runtime82.jsx)("span", { className: "uix-tree__toggle" }),
8669
- f.node.icon && /* @__PURE__ */ (0, import_jsx_runtime82.jsx)("span", { "aria-hidden": "true", children: f.node.icon }),
8670
- /* @__PURE__ */ (0, import_jsx_runtime82.jsx)("span", { className: "uix-tree__label", children: f.node.label })
8881
+ ) : /* @__PURE__ */ (0, import_jsx_runtime83.jsx)("span", { className: "uix-tree__toggle" }),
8882
+ f.node.icon && /* @__PURE__ */ (0, import_jsx_runtime83.jsx)("span", { "aria-hidden": "true", children: f.node.icon }),
8883
+ /* @__PURE__ */ (0, import_jsx_runtime83.jsx)("span", { className: "uix-tree__label", children: f.node.label })
8671
8884
  ] })
8672
8885
  },
8673
8886
  f.node.id
8674
8887
  );
8675
8888
  }),
8676
- win.padBottom > 0 && /* @__PURE__ */ (0, import_jsx_runtime82.jsx)("li", { role: "presentation", "aria-hidden": "true", style: { height: win.padBottom } })
8889
+ win.padBottom > 0 && /* @__PURE__ */ (0, import_jsx_runtime83.jsx)("li", { role: "presentation", "aria-hidden": "true", style: { height: win.padBottom } })
8677
8890
  ]
8678
8891
  }
8679
8892
  );
8680
8893
  }
8681
8894
 
8682
8895
  // src/components/EditorialHome.tsx
8683
- var import_jsx_runtime83 = require("react/jsx-runtime");
8896
+ var import_jsx_runtime84 = require("react/jsx-runtime");
8684
8897
  function PageIntro({
8685
8898
  kicker,
8686
8899
  title,
@@ -8693,43 +8906,43 @@ function PageIntro({
8693
8906
  children,
8694
8907
  ...props
8695
8908
  }) {
8696
- return /* @__PURE__ */ (0, import_jsx_runtime83.jsxs)("section", { className: cx("uix-page-intro", className), ...props, children: [
8697
- /* @__PURE__ */ (0, import_jsx_runtime83.jsxs)("div", { children: [
8698
- kicker != null && /* @__PURE__ */ (0, import_jsx_runtime83.jsx)("p", { className: "uix-page-kicker", children: kicker }),
8699
- /* @__PURE__ */ (0, import_jsx_runtime83.jsx)("h1", { className: "uix-page-title", children: title }),
8700
- lede != null && /* @__PURE__ */ (0, import_jsx_runtime83.jsx)("p", { className: "uix-page-lede", children: lede })
8909
+ return /* @__PURE__ */ (0, import_jsx_runtime84.jsxs)("section", { className: cx("uix-page-intro", className), ...props, children: [
8910
+ /* @__PURE__ */ (0, import_jsx_runtime84.jsxs)("div", { children: [
8911
+ kicker != null && /* @__PURE__ */ (0, import_jsx_runtime84.jsx)("p", { className: "uix-page-kicker", children: kicker }),
8912
+ /* @__PURE__ */ (0, import_jsx_runtime84.jsx)("h1", { className: "uix-page-title", children: title }),
8913
+ lede != null && /* @__PURE__ */ (0, import_jsx_runtime84.jsx)("p", { className: "uix-page-lede", children: lede })
8701
8914
  ] }),
8702
- search != null && /* @__PURE__ */ (0, import_jsx_runtime83.jsxs)("div", { children: [
8703
- searchLabel != null && /* @__PURE__ */ (0, import_jsx_runtime83.jsx)("p", { className: "uix-intro-search__label", children: searchLabel }),
8915
+ search != null && /* @__PURE__ */ (0, import_jsx_runtime84.jsxs)("div", { children: [
8916
+ searchLabel != null && /* @__PURE__ */ (0, import_jsx_runtime84.jsx)("p", { className: "uix-intro-search__label", children: searchLabel }),
8704
8917
  search
8705
8918
  ] }),
8706
- shortcuts != null && /* @__PURE__ */ (0, import_jsx_runtime83.jsx)("div", { className: "uix-shortcut-grid", "aria-label": shortcutsLabel, children: shortcuts }),
8919
+ shortcuts != null && /* @__PURE__ */ (0, import_jsx_runtime84.jsx)("div", { className: "uix-shortcut-grid", "aria-label": shortcutsLabel, children: shortcuts }),
8707
8920
  children
8708
8921
  ] });
8709
8922
  }
8710
8923
  function SectionHead({ title, titleId, help, helpLabel, action, className, ...props }) {
8711
- const heading = /* @__PURE__ */ (0, import_jsx_runtime83.jsx)("h2", { className: "uix-section-title", id: titleId, children: title });
8712
- return /* @__PURE__ */ (0, import_jsx_runtime83.jsxs)("div", { className: cx("uix-section-head", className), ...props, children: [
8713
- hasHelp(help) ? /* @__PURE__ */ (0, import_jsx_runtime83.jsxs)("div", { className: "uix-section-head__title-row", children: [
8924
+ const heading = /* @__PURE__ */ (0, import_jsx_runtime84.jsx)("h2", { className: "uix-section-title", id: titleId, children: title });
8925
+ return /* @__PURE__ */ (0, import_jsx_runtime84.jsxs)("div", { className: cx("uix-section-head", className), ...props, children: [
8926
+ hasHelp(help) ? /* @__PURE__ */ (0, import_jsx_runtime84.jsxs)("div", { className: "uix-section-head__title-row", children: [
8714
8927
  heading,
8715
- /* @__PURE__ */ (0, import_jsx_runtime83.jsx)(InfoTip, { content: help, label: helpLabel ?? helpLabelFor(title) })
8928
+ /* @__PURE__ */ (0, import_jsx_runtime84.jsx)(InfoTip, { content: help, label: helpLabel ?? helpLabelFor(title) })
8716
8929
  ] }) : heading,
8717
8930
  action
8718
8931
  ] });
8719
8932
  }
8720
8933
  function NoticeQueue({ icon, title, summary, meta, position, actions, className, ...props }) {
8721
- return /* @__PURE__ */ (0, import_jsx_runtime83.jsxs)("section", { className: cx("uix-notice", className), ...props, children: [
8934
+ return /* @__PURE__ */ (0, import_jsx_runtime84.jsxs)("section", { className: cx("uix-notice", className), ...props, children: [
8722
8935
  icon,
8723
- /* @__PURE__ */ (0, import_jsx_runtime83.jsxs)("div", { className: "uix-notice__content", "aria-live": "polite", children: [
8724
- /* @__PURE__ */ (0, import_jsx_runtime83.jsxs)("p", { className: "uix-notice__copy", children: [
8725
- title != null && /* @__PURE__ */ (0, import_jsx_runtime83.jsx)("strong", { children: title }),
8936
+ /* @__PURE__ */ (0, import_jsx_runtime84.jsxs)("div", { className: "uix-notice__content", "aria-live": "polite", children: [
8937
+ /* @__PURE__ */ (0, import_jsx_runtime84.jsxs)("p", { className: "uix-notice__copy", children: [
8938
+ title != null && /* @__PURE__ */ (0, import_jsx_runtime84.jsx)("strong", { children: title }),
8726
8939
  title != null && summary != null && " ",
8727
8940
  summary
8728
8941
  ] }),
8729
- meta != null && /* @__PURE__ */ (0, import_jsx_runtime83.jsx)("p", { className: "uix-notice__meta", children: meta })
8942
+ meta != null && /* @__PURE__ */ (0, import_jsx_runtime84.jsx)("p", { className: "uix-notice__meta", children: meta })
8730
8943
  ] }),
8731
- (position != null || actions != null) && /* @__PURE__ */ (0, import_jsx_runtime83.jsxs)("div", { className: "uix-notice__actions", children: [
8732
- position != null && /* @__PURE__ */ (0, import_jsx_runtime83.jsx)("span", { className: "uix-notice__position", children: position }),
8944
+ (position != null || actions != null) && /* @__PURE__ */ (0, import_jsx_runtime84.jsxs)("div", { className: "uix-notice__actions", children: [
8945
+ position != null && /* @__PURE__ */ (0, import_jsx_runtime84.jsx)("span", { className: "uix-notice__position", children: position }),
8733
8946
  actions
8734
8947
  ] })
8735
8948
  ] });
@@ -8747,8 +8960,8 @@ function FeaturedStage({
8747
8960
  className,
8748
8961
  ...props
8749
8962
  }) {
8750
- return /* @__PURE__ */ (0, import_jsx_runtime83.jsxs)("article", { className: cx("uix-featured__stage", className), ...props, children: [
8751
- /* @__PURE__ */ (0, import_jsx_runtime83.jsx)(
8963
+ return /* @__PURE__ */ (0, import_jsx_runtime84.jsxs)("article", { className: cx("uix-featured__stage", className), ...props, children: [
8964
+ /* @__PURE__ */ (0, import_jsx_runtime84.jsx)(
8752
8965
  "div",
8753
8966
  {
8754
8967
  className: "uix-featured__visual",
@@ -8758,32 +8971,32 @@ function FeaturedStage({
8758
8971
  children: visual
8759
8972
  }
8760
8973
  ),
8761
- /* @__PURE__ */ (0, import_jsx_runtime83.jsxs)("div", { className: "uix-featured__content", "aria-live": "polite", children: [
8762
- (eyebrow != null || ordinal != null) && /* @__PURE__ */ (0, import_jsx_runtime83.jsxs)("p", { className: "uix-featured__eyebrow", children: [
8763
- ordinal != null && /* @__PURE__ */ (0, import_jsx_runtime83.jsx)("span", { className: "uix-featured__now", children: ordinal }),
8974
+ /* @__PURE__ */ (0, import_jsx_runtime84.jsxs)("div", { className: "uix-featured__content", "aria-live": "polite", children: [
8975
+ (eyebrow != null || ordinal != null) && /* @__PURE__ */ (0, import_jsx_runtime84.jsxs)("p", { className: "uix-featured__eyebrow", children: [
8976
+ ordinal != null && /* @__PURE__ */ (0, import_jsx_runtime84.jsx)("span", { className: "uix-featured__now", children: ordinal }),
8764
8977
  eyebrow
8765
8978
  ] }),
8766
- /* @__PURE__ */ (0, import_jsx_runtime83.jsx)("h2", { className: "uix-featured__title", id: titleId, children: title }),
8767
- description != null && /* @__PURE__ */ (0, import_jsx_runtime83.jsx)("p", { className: "uix-featured__description", children: description }),
8768
- meta != null && /* @__PURE__ */ (0, import_jsx_runtime83.jsx)("p", { className: "uix-featured__meta", children: meta }),
8979
+ /* @__PURE__ */ (0, import_jsx_runtime84.jsx)("h2", { className: "uix-featured__title", id: titleId, children: title }),
8980
+ description != null && /* @__PURE__ */ (0, import_jsx_runtime84.jsx)("p", { className: "uix-featured__description", children: description }),
8981
+ meta != null && /* @__PURE__ */ (0, import_jsx_runtime84.jsx)("p", { className: "uix-featured__meta", children: meta }),
8769
8982
  action
8770
8983
  ] })
8771
8984
  ] });
8772
8985
  }
8773
8986
  function FeaturedRundown({ eyebrow, title, titleId, meta, children, className, ...props }) {
8774
- return /* @__PURE__ */ (0, import_jsx_runtime83.jsxs)("aside", { className: cx("uix-rundown", className), ...props, children: [
8775
- /* @__PURE__ */ (0, import_jsx_runtime83.jsxs)("div", { className: "uix-rundown__head", children: [
8776
- /* @__PURE__ */ (0, import_jsx_runtime83.jsxs)("div", { children: [
8777
- eyebrow != null && /* @__PURE__ */ (0, import_jsx_runtime83.jsx)("p", { className: "uix-rundown__eyebrow", children: eyebrow }),
8778
- /* @__PURE__ */ (0, import_jsx_runtime83.jsx)("h2", { className: "uix-rundown__title", id: titleId, children: title })
8987
+ return /* @__PURE__ */ (0, import_jsx_runtime84.jsxs)("aside", { className: cx("uix-rundown", className), ...props, children: [
8988
+ /* @__PURE__ */ (0, import_jsx_runtime84.jsxs)("div", { className: "uix-rundown__head", children: [
8989
+ /* @__PURE__ */ (0, import_jsx_runtime84.jsxs)("div", { children: [
8990
+ eyebrow != null && /* @__PURE__ */ (0, import_jsx_runtime84.jsx)("p", { className: "uix-rundown__eyebrow", children: eyebrow }),
8991
+ /* @__PURE__ */ (0, import_jsx_runtime84.jsx)("h2", { className: "uix-rundown__title", id: titleId, children: title })
8779
8992
  ] }),
8780
8993
  meta
8781
8994
  ] }),
8782
- /* @__PURE__ */ (0, import_jsx_runtime83.jsx)("div", { className: "uix-rundown__items", children })
8995
+ /* @__PURE__ */ (0, import_jsx_runtime84.jsx)("div", { className: "uix-rundown__items", children })
8783
8996
  ] });
8784
8997
  }
8785
8998
  function FeaturedRundownItem({ number, topic, title, selected = false, className, ...props }) {
8786
- return /* @__PURE__ */ (0, import_jsx_runtime83.jsxs)(
8999
+ return /* @__PURE__ */ (0, import_jsx_runtime84.jsxs)(
8787
9000
  "button",
8788
9001
  {
8789
9002
  type: "button",
@@ -8792,63 +9005,63 @@ function FeaturedRundownItem({ number, topic, title, selected = false, className
8792
9005
  "data-selected": selected ? "true" : "false",
8793
9006
  ...props,
8794
9007
  children: [
8795
- number != null && /* @__PURE__ */ (0, import_jsx_runtime83.jsx)("span", { className: "uix-rundown__number", children: number }),
8796
- /* @__PURE__ */ (0, import_jsx_runtime83.jsxs)("span", { children: [
8797
- topic != null && /* @__PURE__ */ (0, import_jsx_runtime83.jsx)("span", { className: "uix-rundown__topic", children: topic }),
8798
- /* @__PURE__ */ (0, import_jsx_runtime83.jsx)("span", { className: "uix-rundown__item-title", children: title })
9008
+ number != null && /* @__PURE__ */ (0, import_jsx_runtime84.jsx)("span", { className: "uix-rundown__number", children: number }),
9009
+ /* @__PURE__ */ (0, import_jsx_runtime84.jsxs)("span", { children: [
9010
+ topic != null && /* @__PURE__ */ (0, import_jsx_runtime84.jsx)("span", { className: "uix-rundown__topic", children: topic }),
9011
+ /* @__PURE__ */ (0, import_jsx_runtime84.jsx)("span", { className: "uix-rundown__item-title", children: title })
8799
9012
  ] })
8800
9013
  ]
8801
9014
  }
8802
9015
  );
8803
9016
  }
8804
9017
  function NewsLead({ meta, title, summary, className, ...props }) {
8805
- return /* @__PURE__ */ (0, import_jsx_runtime83.jsxs)("article", { className: cx("uix-news-lead", className), ...props, children: [
8806
- meta != null && /* @__PURE__ */ (0, import_jsx_runtime83.jsx)("p", { className: "uix-news-lead__meta", children: meta }),
8807
- /* @__PURE__ */ (0, import_jsx_runtime83.jsx)("h3", { className: "uix-news-lead__title", children: title }),
8808
- summary != null && /* @__PURE__ */ (0, import_jsx_runtime83.jsx)("p", { className: "uix-news-lead__summary", children: summary })
9018
+ return /* @__PURE__ */ (0, import_jsx_runtime84.jsxs)("article", { className: cx("uix-news-lead", className), ...props, children: [
9019
+ meta != null && /* @__PURE__ */ (0, import_jsx_runtime84.jsx)("p", { className: "uix-news-lead__meta", children: meta }),
9020
+ /* @__PURE__ */ (0, import_jsx_runtime84.jsx)("h3", { className: "uix-news-lead__title", children: title }),
9021
+ summary != null && /* @__PURE__ */ (0, import_jsx_runtime84.jsx)("p", { className: "uix-news-lead__summary", children: summary })
8809
9022
  ] });
8810
9023
  }
8811
9024
  function ContentList({ children, className, ...props }) {
8812
- return /* @__PURE__ */ (0, import_jsx_runtime83.jsx)("ul", { className: cx("uix-content-list", className), ...props, children });
9025
+ return /* @__PURE__ */ (0, import_jsx_runtime84.jsx)("ul", { className: cx("uix-content-list", className), ...props, children });
8813
9026
  }
8814
9027
  function ContentListItem({ title, meta, trailing, className, ...props }) {
8815
- return /* @__PURE__ */ (0, import_jsx_runtime83.jsxs)("li", { className: cx("uix-content-list__item", className), ...props, children: [
8816
- /* @__PURE__ */ (0, import_jsx_runtime83.jsxs)("div", { children: [
8817
- /* @__PURE__ */ (0, import_jsx_runtime83.jsx)("p", { className: "uix-content-list__title", children: title }),
8818
- meta != null && /* @__PURE__ */ (0, import_jsx_runtime83.jsx)("p", { className: "uix-content-list__meta", children: meta })
9028
+ return /* @__PURE__ */ (0, import_jsx_runtime84.jsxs)("li", { className: cx("uix-content-list__item", className), ...props, children: [
9029
+ /* @__PURE__ */ (0, import_jsx_runtime84.jsxs)("div", { children: [
9030
+ /* @__PURE__ */ (0, import_jsx_runtime84.jsx)("p", { className: "uix-content-list__title", children: title }),
9031
+ meta != null && /* @__PURE__ */ (0, import_jsx_runtime84.jsx)("p", { className: "uix-content-list__meta", children: meta })
8819
9032
  ] }),
8820
9033
  trailing
8821
9034
  ] });
8822
9035
  }
8823
9036
  function ResourceGrid({ children, className, ...props }) {
8824
- return /* @__PURE__ */ (0, import_jsx_runtime83.jsx)("div", { className: cx("uix-resource-grid", className), ...props, children });
9037
+ return /* @__PURE__ */ (0, import_jsx_runtime84.jsx)("div", { className: cx("uix-resource-grid", className), ...props, children });
8825
9038
  }
8826
9039
  function StatLine({ items, children, className, ...props }) {
8827
- return /* @__PURE__ */ (0, import_jsx_runtime83.jsxs)("div", { className: cx("uix-stat-line", className), ...props, children: [
8828
- items?.map((item, i) => /* @__PURE__ */ (0, import_jsx_runtime83.jsxs)("div", { className: "uix-stat-line__item", children: [
8829
- /* @__PURE__ */ (0, import_jsx_runtime83.jsx)("span", { className: "uix-stat-line__value", children: item.value }),
8830
- /* @__PURE__ */ (0, import_jsx_runtime83.jsx)("span", { className: "uix-stat-line__label", children: item.label })
9040
+ return /* @__PURE__ */ (0, import_jsx_runtime84.jsxs)("div", { className: cx("uix-stat-line", className), ...props, children: [
9041
+ items?.map((item, i) => /* @__PURE__ */ (0, import_jsx_runtime84.jsxs)("div", { className: "uix-stat-line__item", children: [
9042
+ /* @__PURE__ */ (0, import_jsx_runtime84.jsx)("span", { className: "uix-stat-line__value", children: item.value }),
9043
+ /* @__PURE__ */ (0, import_jsx_runtime84.jsx)("span", { className: "uix-stat-line__label", children: item.label })
8831
9044
  ] }, item.id ?? i)),
8832
9045
  children
8833
9046
  ] });
8834
9047
  }
8835
9048
  function EventRow({ month, day, title, meta, className, ...props }) {
8836
- return /* @__PURE__ */ (0, import_jsx_runtime83.jsxs)("div", { className: cx("uix-event-row", className), ...props, children: [
8837
- /* @__PURE__ */ (0, import_jsx_runtime83.jsxs)("div", { className: "uix-event-date", children: [
8838
- /* @__PURE__ */ (0, import_jsx_runtime83.jsx)("span", { className: "uix-event-date__month", children: month }),
8839
- /* @__PURE__ */ (0, import_jsx_runtime83.jsx)("span", { className: "uix-event-date__day", children: day })
9049
+ return /* @__PURE__ */ (0, import_jsx_runtime84.jsxs)("div", { className: cx("uix-event-row", className), ...props, children: [
9050
+ /* @__PURE__ */ (0, import_jsx_runtime84.jsxs)("div", { className: "uix-event-date", children: [
9051
+ /* @__PURE__ */ (0, import_jsx_runtime84.jsx)("span", { className: "uix-event-date__month", children: month }),
9052
+ /* @__PURE__ */ (0, import_jsx_runtime84.jsx)("span", { className: "uix-event-date__day", children: day })
8840
9053
  ] }),
8841
- /* @__PURE__ */ (0, import_jsx_runtime83.jsxs)("div", { children: [
8842
- /* @__PURE__ */ (0, import_jsx_runtime83.jsx)("p", { className: "uix-event-row__title", children: title }),
8843
- meta != null && /* @__PURE__ */ (0, import_jsx_runtime83.jsx)("p", { className: "uix-event-row__meta", children: meta })
9054
+ /* @__PURE__ */ (0, import_jsx_runtime84.jsxs)("div", { children: [
9055
+ /* @__PURE__ */ (0, import_jsx_runtime84.jsx)("p", { className: "uix-event-row__title", children: title }),
9056
+ meta != null && /* @__PURE__ */ (0, import_jsx_runtime84.jsx)("p", { className: "uix-event-row__meta", children: meta })
8844
9057
  ] })
8845
9058
  ] });
8846
9059
  }
8847
9060
  function StatusRow({ indicator, name, meta, className, ...props }) {
8848
- return /* @__PURE__ */ (0, import_jsx_runtime83.jsxs)("div", { className: cx("uix-status-row", className), ...props, children: [
9061
+ return /* @__PURE__ */ (0, import_jsx_runtime84.jsxs)("div", { className: cx("uix-status-row", className), ...props, children: [
8849
9062
  indicator,
8850
- /* @__PURE__ */ (0, import_jsx_runtime83.jsx)("span", { className: "uix-status-row__name", children: name }),
8851
- meta != null && /* @__PURE__ */ (0, import_jsx_runtime83.jsx)("span", { className: "uix-list-meta", children: meta })
9063
+ /* @__PURE__ */ (0, import_jsx_runtime84.jsx)("span", { className: "uix-status-row__name", children: name }),
9064
+ meta != null && /* @__PURE__ */ (0, import_jsx_runtime84.jsx)("span", { className: "uix-list-meta", children: meta })
8852
9065
  ] });
8853
9066
  }
8854
9067
 
@@ -8978,7 +9191,7 @@ function summarizeRule(value, labels = {}) {
8978
9191
  }
8979
9192
 
8980
9193
  // src/components/RuleBuilder.tsx
8981
- var import_jsx_runtime84 = require("react/jsx-runtime");
9194
+ var import_jsx_runtime85 = require("react/jsx-runtime");
8982
9195
  var DEFAULT_RULE_BUILDER_LABELS = {
8983
9196
  region: "Rule builder",
8984
9197
  summary: "Rule summary",
@@ -9038,7 +9251,7 @@ function RuleGroupEditor({ group, depth, root, fields, operators, maxDepth, disa
9038
9251
  combinator: combinator ?? "and",
9039
9252
  conditions: [defaultCondition(fields, operators)]
9040
9253
  }, maxDepth));
9041
- const rowControls = (node, index, label) => disabled ? null : /* @__PURE__ */ (0, import_jsx_runtime84.jsx)(
9254
+ const rowControls = (node, index, label) => disabled ? null : /* @__PURE__ */ (0, import_jsx_runtime85.jsx)(
9042
9255
  RowControls,
9043
9256
  {
9044
9257
  labels,
@@ -9051,25 +9264,25 @@ function RuleGroupEditor({ group, depth, root, fields, operators, maxDepth, disa
9051
9264
  onRemove: () => onRootChange(removeRuleNode(root, node.id))
9052
9265
  }
9053
9266
  );
9054
- return /* @__PURE__ */ (0, import_jsx_runtime84.jsxs)("fieldset", { className: "uix-rule-builder__group", "data-depth": depth, children: [
9055
- /* @__PURE__ */ (0, import_jsx_runtime84.jsxs)("legend", { className: "uix-rule-builder__group-heading", children: [
9056
- /* @__PURE__ */ (0, import_jsx_runtime84.jsx)("span", { children: depth === 1 ? labels.when : labels.group }),
9057
- !hideCombinator && (combinator ? /* @__PURE__ */ (0, import_jsx_runtime84.jsxs)("span", { className: "uix-rule-builder__match", children: [
9267
+ return /* @__PURE__ */ (0, import_jsx_runtime85.jsxs)("fieldset", { className: "uix-rule-builder__group", "data-depth": depth, children: [
9268
+ /* @__PURE__ */ (0, import_jsx_runtime85.jsxs)("legend", { className: "uix-rule-builder__group-heading", children: [
9269
+ /* @__PURE__ */ (0, import_jsx_runtime85.jsx)("span", { children: depth === 1 ? labels.when : labels.group }),
9270
+ !hideCombinator && (combinator ? /* @__PURE__ */ (0, import_jsx_runtime85.jsxs)("span", { className: "uix-rule-builder__match", children: [
9058
9271
  labels.match,
9059
9272
  " ",
9060
9273
  combinator === "or" ? labels.any : labels.all
9061
- ] }) : /* @__PURE__ */ (0, import_jsx_runtime84.jsxs)("label", { children: [
9274
+ ] }) : /* @__PURE__ */ (0, import_jsx_runtime85.jsxs)("label", { children: [
9062
9275
  labels.match,
9063
- /* @__PURE__ */ (0, import_jsx_runtime84.jsxs)("select", { className: "uix-select uix-select--sm", value: group.combinator, disabled, onChange: (event) => updateNode(group.id, (node) => ({ ...node, combinator: event.currentTarget.value })), children: [
9064
- /* @__PURE__ */ (0, import_jsx_runtime84.jsx)("option", { value: "and", children: labels.all }),
9065
- /* @__PURE__ */ (0, import_jsx_runtime84.jsx)("option", { value: "or", children: labels.any })
9276
+ /* @__PURE__ */ (0, import_jsx_runtime85.jsxs)("select", { className: "uix-select uix-select--sm", value: group.combinator, disabled, onChange: (event) => updateNode(group.id, (node) => ({ ...node, combinator: event.currentTarget.value })), children: [
9277
+ /* @__PURE__ */ (0, import_jsx_runtime85.jsx)("option", { value: "and", children: labels.all }),
9278
+ /* @__PURE__ */ (0, import_jsx_runtime85.jsx)("option", { value: "or", children: labels.any })
9066
9279
  ] })
9067
9280
  ] }))
9068
9281
  ] }),
9069
- /* @__PURE__ */ (0, import_jsx_runtime84.jsx)("div", { className: "uix-rule-builder__rows", children: group.conditions.map((node, index) => isRuleGroup(node) ? /* @__PURE__ */ (0, import_jsx_runtime84.jsxs)("div", { className: "uix-rule-builder__nested", children: [
9070
- /* @__PURE__ */ (0, import_jsx_runtime84.jsx)(RuleGroupEditor, { ...{ group: node, depth: depth + 1, root, fields, operators, maxDepth, disabled, onRootChange, labels, combinator, hideCombinator, allowGroups } }),
9282
+ /* @__PURE__ */ (0, import_jsx_runtime85.jsx)("div", { className: "uix-rule-builder__rows", children: group.conditions.map((node, index) => isRuleGroup(node) ? /* @__PURE__ */ (0, import_jsx_runtime85.jsxs)("div", { className: "uix-rule-builder__nested", children: [
9283
+ /* @__PURE__ */ (0, import_jsx_runtime85.jsx)(RuleGroupEditor, { ...{ group: node, depth: depth + 1, root, fields, operators, maxDepth, disabled, onRootChange, labels, combinator, hideCombinator, allowGroups } }),
9071
9284
  rowControls(node, index, labels.itemGroup)
9072
- ] }, node.id) : /* @__PURE__ */ (0, import_jsx_runtime84.jsx)(
9285
+ ] }, node.id) : /* @__PURE__ */ (0, import_jsx_runtime85.jsx)(
9073
9286
  ConditionRow,
9074
9287
  {
9075
9288
  labels,
@@ -9082,9 +9295,9 @@ function RuleGroupEditor({ group, depth, root, fields, operators, maxDepth, disa
9082
9295
  },
9083
9296
  node.id
9084
9297
  )) }),
9085
- !disabled && /* @__PURE__ */ (0, import_jsx_runtime84.jsxs)("div", { className: "uix-rule-builder__add", children: [
9086
- /* @__PURE__ */ (0, import_jsx_runtime84.jsx)("button", { type: "button", className: "uix-btn uix-btn--secondary uix-btn--sm", onClick: addCondition, disabled: fields.length === 0 || operators.length === 0, children: labels.addCondition }),
9087
- allowGroups && /* @__PURE__ */ (0, import_jsx_runtime84.jsx)("button", { type: "button", className: "uix-btn uix-btn--ghost uix-btn--sm", onClick: addGroup, disabled: depth >= maxDepth, children: labels.addGroup })
9298
+ !disabled && /* @__PURE__ */ (0, import_jsx_runtime85.jsxs)("div", { className: "uix-rule-builder__add", children: [
9299
+ /* @__PURE__ */ (0, import_jsx_runtime85.jsx)("button", { type: "button", className: "uix-btn uix-btn--secondary uix-btn--sm", onClick: addCondition, disabled: fields.length === 0 || operators.length === 0, children: labels.addCondition }),
9300
+ allowGroups && /* @__PURE__ */ (0, import_jsx_runtime85.jsx)("button", { type: "button", className: "uix-btn uix-btn--ghost uix-btn--sm", onClick: addGroup, disabled: depth >= maxDepth, children: labels.addGroup })
9088
9301
  ] })
9089
9302
  ] });
9090
9303
  }
@@ -9097,24 +9310,24 @@ function ConditionRow({ labels, condition, fields, operators, disabled, onChange
9097
9310
  const nextOperator = operators.find((item) => nextField?.operators?.includes(item.id)) ?? availableOperators[0] ?? operators[0];
9098
9311
  onChange({ ...condition, field: id, operator: nextOperator?.id ?? "" });
9099
9312
  };
9100
- return /* @__PURE__ */ (0, import_jsx_runtime84.jsxs)("div", { className: "uix-rule-builder__condition", children: [
9101
- /* @__PURE__ */ (0, import_jsx_runtime84.jsxs)("label", { children: [
9102
- /* @__PURE__ */ (0, import_jsx_runtime84.jsx)("span", { className: "uix-visually-hidden", children: labels.field }),
9103
- /* @__PURE__ */ (0, import_jsx_runtime84.jsx)("select", { className: "uix-select", value: condition.field, onChange: (event) => setField(event.currentTarget.value), disabled, children: fields.map((item) => /* @__PURE__ */ (0, import_jsx_runtime84.jsx)("option", { value: item.id, children: item.label }, item.id)) })
9313
+ return /* @__PURE__ */ (0, import_jsx_runtime85.jsxs)("div", { className: "uix-rule-builder__condition", children: [
9314
+ /* @__PURE__ */ (0, import_jsx_runtime85.jsxs)("label", { children: [
9315
+ /* @__PURE__ */ (0, import_jsx_runtime85.jsx)("span", { className: "uix-visually-hidden", children: labels.field }),
9316
+ /* @__PURE__ */ (0, import_jsx_runtime85.jsx)("select", { className: "uix-select", value: condition.field, onChange: (event) => setField(event.currentTarget.value), disabled, children: fields.map((item) => /* @__PURE__ */ (0, import_jsx_runtime85.jsx)("option", { value: item.id, children: item.label }, item.id)) })
9104
9317
  ] }),
9105
- /* @__PURE__ */ (0, import_jsx_runtime84.jsxs)("label", { children: [
9106
- /* @__PURE__ */ (0, import_jsx_runtime84.jsx)("span", { className: "uix-visually-hidden", children: labels.operator }),
9107
- /* @__PURE__ */ (0, import_jsx_runtime84.jsx)("select", { className: "uix-select", value: condition.operator, onChange: (event) => onChange({ ...condition, operator: event.currentTarget.value }), disabled, children: availableOperators.map((item) => /* @__PURE__ */ (0, import_jsx_runtime84.jsx)("option", { value: item.id, children: item.label }, item.id)) })
9318
+ /* @__PURE__ */ (0, import_jsx_runtime85.jsxs)("label", { children: [
9319
+ /* @__PURE__ */ (0, import_jsx_runtime85.jsx)("span", { className: "uix-visually-hidden", children: labels.operator }),
9320
+ /* @__PURE__ */ (0, import_jsx_runtime85.jsx)("select", { className: "uix-select", value: condition.operator, onChange: (event) => onChange({ ...condition, operator: event.currentTarget.value }), disabled, children: availableOperators.map((item) => /* @__PURE__ */ (0, import_jsx_runtime85.jsx)("option", { value: item.id, children: item.label }, item.id)) })
9108
9321
  ] }),
9109
- operator?.requiresValue !== false && /* @__PURE__ */ (0, import_jsx_runtime84.jsx)("div", { className: "uix-rule-builder__value", children: field?.renderValueEditor?.({ condition, onChange: (value) => onChange({ ...condition, value }), disabled }) ?? /* @__PURE__ */ (0, import_jsx_runtime84.jsx)("input", { className: "uix-input", value: typeof condition.value === "string" || typeof condition.value === "number" ? condition.value : condition.value == null ? "" : JSON.stringify(condition.value), onChange: (event) => onChange({ ...condition, value: event.currentTarget.value }), disabled, "aria-label": fillLabel(labels.valueFor, { field: field?.label ?? labels.itemCondition }) }) }),
9322
+ operator?.requiresValue !== false && /* @__PURE__ */ (0, import_jsx_runtime85.jsx)("div", { className: "uix-rule-builder__value", children: field?.renderValueEditor?.({ condition, onChange: (value) => onChange({ ...condition, value }), disabled }) ?? /* @__PURE__ */ (0, import_jsx_runtime85.jsx)("input", { className: "uix-input", value: typeof condition.value === "string" || typeof condition.value === "number" ? condition.value : condition.value == null ? "" : JSON.stringify(condition.value), onChange: (event) => onChange({ ...condition, value: event.currentTarget.value }), disabled, "aria-label": fillLabel(labels.valueFor, { field: field?.label ?? labels.itemCondition }) }) }),
9110
9323
  controls
9111
9324
  ] });
9112
9325
  }
9113
9326
  function RowControls({ labels, label, first, last, disabled, onUp, onDown, onRemove }) {
9114
- return /* @__PURE__ */ (0, import_jsx_runtime84.jsxs)("span", { className: "uix-rule-builder__row-actions", children: [
9115
- /* @__PURE__ */ (0, import_jsx_runtime84.jsx)("button", { type: "button", className: "uix-btn uix-btn--ghost uix-btn--sm", onClick: onUp, disabled: disabled || first, "aria-label": fillLabel(labels.moveUpNamed, { item: label }), children: labels.moveUp }),
9116
- /* @__PURE__ */ (0, import_jsx_runtime84.jsx)("button", { type: "button", className: "uix-btn uix-btn--ghost uix-btn--sm", onClick: onDown, disabled: disabled || last, "aria-label": fillLabel(labels.moveDownNamed, { item: label }), children: labels.moveDown }),
9117
- /* @__PURE__ */ (0, import_jsx_runtime84.jsx)("button", { type: "button", className: "uix-btn uix-btn--ghost uix-btn--sm", onClick: onRemove, disabled, "aria-label": fillLabel(labels.removeNamed, { item: label }), children: labels.remove })
9327
+ return /* @__PURE__ */ (0, import_jsx_runtime85.jsxs)("span", { className: "uix-rule-builder__row-actions", children: [
9328
+ /* @__PURE__ */ (0, import_jsx_runtime85.jsx)("button", { type: "button", className: "uix-btn uix-btn--ghost uix-btn--sm", onClick: onUp, disabled: disabled || first, "aria-label": fillLabel(labels.moveUpNamed, { item: label }), children: labels.moveUp }),
9329
+ /* @__PURE__ */ (0, import_jsx_runtime85.jsx)("button", { type: "button", className: "uix-btn uix-btn--ghost uix-btn--sm", onClick: onDown, disabled: disabled || last, "aria-label": fillLabel(labels.moveDownNamed, { item: label }), children: labels.moveDown }),
9330
+ /* @__PURE__ */ (0, import_jsx_runtime85.jsx)("button", { type: "button", className: "uix-btn uix-btn--ghost uix-btn--sm", onClick: onRemove, disabled, "aria-label": fillLabel(labels.removeNamed, { item: label }), children: labels.remove })
9118
9331
  ] });
9119
9332
  }
9120
9333
  function RuleBuilder({
@@ -9178,16 +9391,16 @@ function RuleBuilder({
9178
9391
  or: labels.or
9179
9392
  }
9180
9393
  });
9181
- return /* @__PURE__ */ (0, import_jsx_runtime84.jsxs)("section", { className: cx("uix-rule-builder uix-rule-builder--summary", className), "aria-label": labels.summary, children: [
9182
- /* @__PURE__ */ (0, import_jsx_runtime84.jsx)("p", { children: sentence }),
9183
- issues.length > 0 && /* @__PURE__ */ (0, import_jsx_runtime84.jsx)("p", { className: "uix-rule-builder__invalid", children: issuesText(labels.summaryIssuesOne, labels.summaryIssuesMany) })
9394
+ return /* @__PURE__ */ (0, import_jsx_runtime85.jsxs)("section", { className: cx("uix-rule-builder uix-rule-builder--summary", className), "aria-label": labels.summary, children: [
9395
+ /* @__PURE__ */ (0, import_jsx_runtime85.jsx)("p", { children: sentence }),
9396
+ issues.length > 0 && /* @__PURE__ */ (0, import_jsx_runtime85.jsx)("p", { className: "uix-rule-builder__invalid", children: issuesText(labels.summaryIssuesOne, labels.summaryIssuesMany) })
9184
9397
  ] });
9185
9398
  }
9186
9399
  const disabled = readOnly === true;
9187
9400
  const emitWhen = (when) => onChange({ ...value, when: combinator ? setRuleCombinator(when, combinator) : when });
9188
9401
  const updateActions = (next) => onChange({ ...value, then: next });
9189
- return /* @__PURE__ */ (0, import_jsx_runtime84.jsxs)("section", { className: cx("uix-rule-builder", disabled && "uix-rule-builder--readonly", className), "aria-label": labels.region, children: [
9190
- /* @__PURE__ */ (0, import_jsx_runtime84.jsx)(
9402
+ return /* @__PURE__ */ (0, import_jsx_runtime85.jsxs)("section", { className: cx("uix-rule-builder", disabled && "uix-rule-builder--readonly", className), "aria-label": labels.region, children: [
9403
+ /* @__PURE__ */ (0, import_jsx_runtime85.jsx)(
9191
9404
  RuleGroupEditor,
9192
9405
  {
9193
9406
  group: value.when,
@@ -9204,14 +9417,14 @@ function RuleBuilder({
9204
9417
  allowGroups: allowGroups && maxDepth > 1
9205
9418
  }
9206
9419
  ),
9207
- !conditionsOnly && /* @__PURE__ */ (0, import_jsx_runtime84.jsxs)("fieldset", { className: "uix-rule-builder__actions", children: [
9208
- /* @__PURE__ */ (0, import_jsx_runtime84.jsx)("legend", { children: labels.then }),
9420
+ !conditionsOnly && /* @__PURE__ */ (0, import_jsx_runtime85.jsxs)("fieldset", { className: "uix-rule-builder__actions", children: [
9421
+ /* @__PURE__ */ (0, import_jsx_runtime85.jsx)("legend", { children: labels.then }),
9209
9422
  value.then.map((action, index) => {
9210
9423
  const definition = actions.find((item) => item.id === action.type);
9211
- return /* @__PURE__ */ (0, import_jsx_runtime84.jsxs)("div", { className: "uix-rule-builder__action", children: [
9212
- /* @__PURE__ */ (0, import_jsx_runtime84.jsx)("select", { className: "uix-select", value: action.type, disabled, onChange: (event) => updateActions(value.then.map((item) => item.id === action.id ? { ...item, type: event.currentTarget.value } : item)), "aria-label": labels.actionType, children: actions.map((item) => /* @__PURE__ */ (0, import_jsx_runtime84.jsx)("option", { value: item.id, children: item.label }, item.id)) }),
9424
+ return /* @__PURE__ */ (0, import_jsx_runtime85.jsxs)("div", { className: "uix-rule-builder__action", children: [
9425
+ /* @__PURE__ */ (0, import_jsx_runtime85.jsx)("select", { className: "uix-select", value: action.type, disabled, onChange: (event) => updateActions(value.then.map((item) => item.id === action.id ? { ...item, type: event.currentTarget.value } : item)), "aria-label": labels.actionType, children: actions.map((item) => /* @__PURE__ */ (0, import_jsx_runtime85.jsx)("option", { value: item.id, children: item.label }, item.id)) }),
9213
9426
  definition?.renderParameters?.(action, (parameters) => updateActions(value.then.map((item) => item.id === action.id ? { ...item, parameters } : item)), disabled),
9214
- !disabled && /* @__PURE__ */ (0, import_jsx_runtime84.jsx)(
9427
+ !disabled && /* @__PURE__ */ (0, import_jsx_runtime85.jsx)(
9215
9428
  RowControls,
9216
9429
  {
9217
9430
  labels,
@@ -9234,18 +9447,18 @@ function RuleBuilder({
9234
9447
  )
9235
9448
  ] }, action.id);
9236
9449
  }),
9237
- !disabled && /* @__PURE__ */ (0, import_jsx_runtime84.jsx)("button", { type: "button", className: "uix-btn uix-btn--secondary uix-btn--sm", disabled: actions.length === 0, onClick: () => updateActions([...value.then, { id: nextId("action"), type: actions[0]?.id ?? "", parameters: {} }]), children: labels.addAction })
9450
+ !disabled && /* @__PURE__ */ (0, import_jsx_runtime85.jsx)("button", { type: "button", className: "uix-btn uix-btn--secondary uix-btn--sm", disabled: actions.length === 0, onClick: () => updateActions([...value.then, { id: nextId("action"), type: actions[0]?.id ?? "", parameters: {} }]), children: labels.addAction })
9238
9451
  ] }),
9239
- /* @__PURE__ */ (0, import_jsx_runtime84.jsx)("div", { className: "uix-rule-builder__validation", "aria-live": "polite", children: issues.length === 0 ? /* @__PURE__ */ (0, import_jsx_runtime84.jsx)("span", { children: labels.valid }) : /* @__PURE__ */ (0, import_jsx_runtime84.jsxs)(import_jsx_runtime84.Fragment, { children: [
9240
- /* @__PURE__ */ (0, import_jsx_runtime84.jsx)("strong", { children: issuesText(labels.issuesOne, labels.issuesMany) }),
9241
- /* @__PURE__ */ (0, import_jsx_runtime84.jsx)("ul", { children: issues.map((issue, index) => /* @__PURE__ */ (0, import_jsx_runtime84.jsx)("li", { children: issue.message }, `${issue.path}-${index}`)) })
9452
+ /* @__PURE__ */ (0, import_jsx_runtime85.jsx)("div", { className: "uix-rule-builder__validation", "aria-live": "polite", children: issues.length === 0 ? /* @__PURE__ */ (0, import_jsx_runtime85.jsx)("span", { children: labels.valid }) : /* @__PURE__ */ (0, import_jsx_runtime85.jsxs)(import_jsx_runtime85.Fragment, { children: [
9453
+ /* @__PURE__ */ (0, import_jsx_runtime85.jsx)("strong", { children: issuesText(labels.issuesOne, labels.issuesMany) }),
9454
+ /* @__PURE__ */ (0, import_jsx_runtime85.jsx)("ul", { children: issues.map((issue, index) => /* @__PURE__ */ (0, import_jsx_runtime85.jsx)("li", { children: issue.message }, `${issue.path}-${index}`)) })
9242
9455
  ] }) })
9243
9456
  ] });
9244
9457
  }
9245
9458
 
9246
9459
  // src/components/BuilderCanvas.tsx
9247
9460
  var import_react59 = require("react");
9248
- var import_jsx_runtime85 = require("react/jsx-runtime");
9461
+ var import_jsx_runtime86 = require("react/jsx-runtime");
9249
9462
  var DEFAULT_BUILDER_CANVAS_LABELS = {
9250
9463
  region: "Builder canvas",
9251
9464
  palette: "Item palette",
@@ -9324,24 +9537,24 @@ function BuilderCanvas({
9324
9537
  if (from >= 0 && to >= 0) onItemsChange(reorder(items, from, to));
9325
9538
  setDraggedId(void 0);
9326
9539
  };
9327
- return /* @__PURE__ */ (0, import_jsx_runtime85.jsxs)("section", { className: cx("uix-builder-canvas", className), "aria-label": labels.region, children: [
9328
- /* @__PURE__ */ (0, import_jsx_runtime85.jsxs)("aside", { className: "uix-builder-canvas__palette", "aria-label": labels.palette, children: [
9329
- /* @__PURE__ */ (0, import_jsx_runtime85.jsx)("h3", { children: labels.paletteHeading }),
9330
- palette.length === 0 ? /* @__PURE__ */ (0, import_jsx_runtime85.jsx)("p", { children: labels.paletteEmpty }) : /* @__PURE__ */ (0, import_jsx_runtime85.jsx)("ul", { children: palette.map((item) => /* @__PURE__ */ (0, import_jsx_runtime85.jsx)("li", { children: /* @__PURE__ */ (0, import_jsx_runtime85.jsxs)("button", { type: "button", onClick: () => add(item), children: [
9331
- /* @__PURE__ */ (0, import_jsx_runtime85.jsx)("strong", { children: item.label }),
9332
- item.description && /* @__PURE__ */ (0, import_jsx_runtime85.jsx)("span", { children: item.description }),
9333
- /* @__PURE__ */ (0, import_jsx_runtime85.jsx)("span", { "aria-hidden": "true", children: labels.add })
9540
+ return /* @__PURE__ */ (0, import_jsx_runtime86.jsxs)("section", { className: cx("uix-builder-canvas", className), "aria-label": labels.region, children: [
9541
+ /* @__PURE__ */ (0, import_jsx_runtime86.jsxs)("aside", { className: "uix-builder-canvas__palette", "aria-label": labels.palette, children: [
9542
+ /* @__PURE__ */ (0, import_jsx_runtime86.jsx)("h3", { children: labels.paletteHeading }),
9543
+ palette.length === 0 ? /* @__PURE__ */ (0, import_jsx_runtime86.jsx)("p", { children: labels.paletteEmpty }) : /* @__PURE__ */ (0, import_jsx_runtime86.jsx)("ul", { children: palette.map((item) => /* @__PURE__ */ (0, import_jsx_runtime86.jsx)("li", { children: /* @__PURE__ */ (0, import_jsx_runtime86.jsxs)("button", { type: "button", onClick: () => add(item), children: [
9544
+ /* @__PURE__ */ (0, import_jsx_runtime86.jsx)("strong", { children: item.label }),
9545
+ item.description && /* @__PURE__ */ (0, import_jsx_runtime86.jsx)("span", { children: item.description }),
9546
+ /* @__PURE__ */ (0, import_jsx_runtime86.jsx)("span", { "aria-hidden": "true", children: labels.add })
9334
9547
  ] }) }, item.id)) })
9335
9548
  ] }),
9336
- /* @__PURE__ */ (0, import_jsx_runtime85.jsxs)("div", { className: "uix-builder-canvas__workspace", children: [
9337
- /* @__PURE__ */ (0, import_jsx_runtime85.jsx)("h3", { children: labels.canvasHeading }),
9338
- loading ? /* @__PURE__ */ (0, import_jsx_runtime85.jsx)("div", { className: "uix-builder-canvas__state", role: "status", children: labels.loading }) : error ? /* @__PURE__ */ (0, import_jsx_runtime85.jsxs)("div", { className: "uix-builder-canvas__state", role: "alert", children: [
9339
- /* @__PURE__ */ (0, import_jsx_runtime85.jsx)("p", { children: error }),
9340
- onRetry && /* @__PURE__ */ (0, import_jsx_runtime85.jsx)("button", { type: "button", className: "uix-btn uix-btn--secondary", onClick: onRetry, children: labels.retry })
9341
- ] }) : items.length === 0 ? /* @__PURE__ */ (0, import_jsx_runtime85.jsxs)("div", { className: "uix-builder-canvas__state", children: [
9342
- /* @__PURE__ */ (0, import_jsx_runtime85.jsx)("p", { children: emptyMessage }),
9343
- palette[0] && /* @__PURE__ */ (0, import_jsx_runtime85.jsx)("button", { type: "button", className: "uix-btn uix-btn--primary", onClick: () => add(palette[0]), children: fillLabel(labels.addFirst, { label: palette[0].label }) })
9344
- ] }) : /* @__PURE__ */ (0, import_jsx_runtime85.jsx)("ol", { className: "uix-builder-canvas__items", children: items.map((item, index) => /* @__PURE__ */ (0, import_jsx_runtime85.jsxs)(
9549
+ /* @__PURE__ */ (0, import_jsx_runtime86.jsxs)("div", { className: "uix-builder-canvas__workspace", children: [
9550
+ /* @__PURE__ */ (0, import_jsx_runtime86.jsx)("h3", { children: labels.canvasHeading }),
9551
+ loading ? /* @__PURE__ */ (0, import_jsx_runtime86.jsx)("div", { className: "uix-builder-canvas__state", role: "status", children: labels.loading }) : error ? /* @__PURE__ */ (0, import_jsx_runtime86.jsxs)("div", { className: "uix-builder-canvas__state", role: "alert", children: [
9552
+ /* @__PURE__ */ (0, import_jsx_runtime86.jsx)("p", { children: error }),
9553
+ onRetry && /* @__PURE__ */ (0, import_jsx_runtime86.jsx)("button", { type: "button", className: "uix-btn uix-btn--secondary", onClick: onRetry, children: labels.retry })
9554
+ ] }) : items.length === 0 ? /* @__PURE__ */ (0, import_jsx_runtime86.jsxs)("div", { className: "uix-builder-canvas__state", children: [
9555
+ /* @__PURE__ */ (0, import_jsx_runtime86.jsx)("p", { children: emptyMessage }),
9556
+ palette[0] && /* @__PURE__ */ (0, import_jsx_runtime86.jsx)("button", { type: "button", className: "uix-btn uix-btn--primary", onClick: () => add(palette[0]), children: fillLabel(labels.addFirst, { label: palette[0].label }) })
9557
+ ] }) : /* @__PURE__ */ (0, import_jsx_runtime86.jsx)("ol", { className: "uix-builder-canvas__items", children: items.map((item, index) => /* @__PURE__ */ (0, import_jsx_runtime86.jsxs)(
9345
9558
  "li",
9346
9559
  {
9347
9560
  draggable: true,
@@ -9351,27 +9564,27 @@ function BuilderCanvas({
9351
9564
  onDrop: (event) => drop(event, item.id),
9352
9565
  className: cx("uix-builder-canvas__item", selectedId === item.id && "uix-builder-canvas__item--selected"),
9353
9566
  children: [
9354
- /* @__PURE__ */ (0, import_jsx_runtime85.jsx)("button", { type: "button", className: "uix-builder-canvas__item-main", "aria-pressed": selectedId === item.id, onClick: () => select(item.id), children: renderItem?.(item, selectedId === item.id) ?? /* @__PURE__ */ (0, import_jsx_runtime85.jsxs)(import_jsx_runtime85.Fragment, { children: [
9355
- /* @__PURE__ */ (0, import_jsx_runtime85.jsx)("strong", { children: item.label }),
9356
- item.description && /* @__PURE__ */ (0, import_jsx_runtime85.jsx)("span", { children: item.description })
9567
+ /* @__PURE__ */ (0, import_jsx_runtime86.jsx)("button", { type: "button", className: "uix-builder-canvas__item-main", "aria-pressed": selectedId === item.id, onClick: () => select(item.id), children: renderItem?.(item, selectedId === item.id) ?? /* @__PURE__ */ (0, import_jsx_runtime86.jsxs)(import_jsx_runtime86.Fragment, { children: [
9568
+ /* @__PURE__ */ (0, import_jsx_runtime86.jsx)("strong", { children: item.label }),
9569
+ item.description && /* @__PURE__ */ (0, import_jsx_runtime86.jsx)("span", { children: item.description })
9357
9570
  ] }) }),
9358
- /* @__PURE__ */ (0, import_jsx_runtime85.jsxs)("span", { className: "uix-builder-canvas__item-actions", children: [
9359
- /* @__PURE__ */ (0, import_jsx_runtime85.jsx)("button", { type: "button", onClick: () => move(item.id, -1), disabled: index === 0, "aria-label": fillLabel(labels.moveUpNamed, { label: item.label }), children: labels.moveUp }),
9360
- /* @__PURE__ */ (0, import_jsx_runtime85.jsx)("button", { type: "button", onClick: () => move(item.id, 1), disabled: index === items.length - 1, "aria-label": fillLabel(labels.moveDownNamed, { label: item.label }), children: labels.moveDown }),
9361
- /* @__PURE__ */ (0, import_jsx_runtime85.jsx)("button", { type: "button", onClick: () => remove(item.id), "aria-label": fillLabel(labels.removeNamed, { label: item.label }), children: labels.remove })
9571
+ /* @__PURE__ */ (0, import_jsx_runtime86.jsxs)("span", { className: "uix-builder-canvas__item-actions", children: [
9572
+ /* @__PURE__ */ (0, import_jsx_runtime86.jsx)("button", { type: "button", onClick: () => move(item.id, -1), disabled: index === 0, "aria-label": fillLabel(labels.moveUpNamed, { label: item.label }), children: labels.moveUp }),
9573
+ /* @__PURE__ */ (0, import_jsx_runtime86.jsx)("button", { type: "button", onClick: () => move(item.id, 1), disabled: index === items.length - 1, "aria-label": fillLabel(labels.moveDownNamed, { label: item.label }), children: labels.moveDown }),
9574
+ /* @__PURE__ */ (0, import_jsx_runtime86.jsx)("button", { type: "button", onClick: () => remove(item.id), "aria-label": fillLabel(labels.removeNamed, { label: item.label }), children: labels.remove })
9362
9575
  ] })
9363
9576
  ]
9364
9577
  },
9365
9578
  item.id
9366
9579
  )) })
9367
9580
  ] }),
9368
- /* @__PURE__ */ (0, import_jsx_runtime85.jsxs)("aside", { className: "uix-builder-canvas__properties", "aria-label": labels.properties, children: [
9369
- /* @__PURE__ */ (0, import_jsx_runtime85.jsx)("h3", { ref: propertyHeadingRef, tabIndex: -1, children: labels.propertiesHeading }),
9370
- !selected ? /* @__PURE__ */ (0, import_jsx_runtime85.jsx)("p", { children: labels.propertiesEmpty }) : renderProperties?.(selected, (updated) => onItemsChange(items.map((item) => item.id === updated.id ? updated : item))) ?? /* @__PURE__ */ (0, import_jsx_runtime85.jsxs)("dl", { children: [
9371
- /* @__PURE__ */ (0, import_jsx_runtime85.jsx)("dt", { children: labels.type }),
9372
- /* @__PURE__ */ (0, import_jsx_runtime85.jsx)("dd", { children: selected.type }),
9373
- /* @__PURE__ */ (0, import_jsx_runtime85.jsx)("dt", { children: labels.label }),
9374
- /* @__PURE__ */ (0, import_jsx_runtime85.jsx)("dd", { children: selected.label })
9581
+ /* @__PURE__ */ (0, import_jsx_runtime86.jsxs)("aside", { className: "uix-builder-canvas__properties", "aria-label": labels.properties, children: [
9582
+ /* @__PURE__ */ (0, import_jsx_runtime86.jsx)("h3", { ref: propertyHeadingRef, tabIndex: -1, children: labels.propertiesHeading }),
9583
+ !selected ? /* @__PURE__ */ (0, import_jsx_runtime86.jsx)("p", { children: labels.propertiesEmpty }) : renderProperties?.(selected, (updated) => onItemsChange(items.map((item) => item.id === updated.id ? updated : item))) ?? /* @__PURE__ */ (0, import_jsx_runtime86.jsxs)("dl", { children: [
9584
+ /* @__PURE__ */ (0, import_jsx_runtime86.jsx)("dt", { children: labels.type }),
9585
+ /* @__PURE__ */ (0, import_jsx_runtime86.jsx)("dd", { children: selected.type }),
9586
+ /* @__PURE__ */ (0, import_jsx_runtime86.jsx)("dt", { children: labels.label }),
9587
+ /* @__PURE__ */ (0, import_jsx_runtime86.jsx)("dd", { children: selected.label })
9375
9588
  ] })
9376
9589
  ] })
9377
9590
  ] });
@@ -9836,7 +10049,7 @@ function usePrinting(enabled = true) {
9836
10049
  }
9837
10050
 
9838
10051
  // src/components/SchedulingAgenda.tsx
9839
- var import_jsx_runtime86 = require("react/jsx-runtime");
10052
+ var import_jsx_runtime87 = require("react/jsx-runtime");
9840
10053
  var AGENDA_VIRTUAL_ROW = 44;
9841
10054
  var AGENDA_NARROW_WIDTH = 576;
9842
10055
  var AGENDA_NARROW_ROW = 64;
@@ -9853,7 +10066,7 @@ function uniqueKeys(ids) {
9853
10066
  function SchedulingAgenda(props) {
9854
10067
  const rowCount = props.groups.reduce((sum, group) => sum + group.rows.length, 0);
9855
10068
  const flat = rowCount > props.virtualizeAbove;
9856
- return /* @__PURE__ */ (0, import_jsx_runtime86.jsx)(AgendaBody, { ...props, flat }, flat ? "flat" : "grouped");
10069
+ return /* @__PURE__ */ (0, import_jsx_runtime87.jsx)(AgendaBody, { ...props, flat }, flat ? "flat" : "grouped");
9857
10070
  }
9858
10071
  function AgendaBody({
9859
10072
  groups,
@@ -10010,18 +10223,18 @@ function AgendaBody({
10010
10223
  landing.current = { key: flatRows[target].key, index: target };
10011
10224
  scrollToRow(box, target);
10012
10225
  };
10013
- const note = (overlay) => /* @__PURE__ */ (0, import_jsx_runtime86.jsx)("button", { type: "button", className: "uix-scheduling-calendar__window", "data-overlay-id": overlay.id, "data-pattern": overlay.pattern ?? "solid", "data-global": overlay.global || void 0, onClick: () => onSelectOverlay?.(overlay), "aria-label": overlayName(overlay), children: /* @__PURE__ */ (0, import_jsx_runtime86.jsxs)("span", { className: "uix-scheduling-calendar__window-text", children: [
10014
- overlay.kindLabel && /* @__PURE__ */ (0, import_jsx_runtime86.jsx)("span", { className: "uix-scheduling-calendar__window-kind", children: overlay.kindLabel }),
10015
- /* @__PURE__ */ (0, import_jsx_runtime86.jsx)("span", { className: "uix-scheduling-calendar__window-name", children: overlay.label }),
10016
- overlay.scopeLabel && /* @__PURE__ */ (0, import_jsx_runtime86.jsx)("span", { className: "uix-scheduling-calendar__window-scope", children: overlay.scopeLabel })
10226
+ const note = (overlay) => /* @__PURE__ */ (0, import_jsx_runtime87.jsx)("button", { type: "button", className: "uix-scheduling-calendar__window", "data-overlay-id": overlay.id, "data-pattern": overlay.pattern ?? "solid", "data-global": overlay.global || void 0, onClick: () => onSelectOverlay?.(overlay), "aria-label": overlayName(overlay), children: /* @__PURE__ */ (0, import_jsx_runtime87.jsxs)("span", { className: "uix-scheduling-calendar__window-text", children: [
10227
+ overlay.kindLabel && /* @__PURE__ */ (0, import_jsx_runtime87.jsx)("span", { className: "uix-scheduling-calendar__window-kind", children: overlay.kindLabel }),
10228
+ /* @__PURE__ */ (0, import_jsx_runtime87.jsx)("span", { className: "uix-scheduling-calendar__window-name", children: overlay.label }),
10229
+ overlay.scopeLabel && /* @__PURE__ */ (0, import_jsx_runtime87.jsx)("span", { className: "uix-scheduling-calendar__window-scope", children: overlay.scopeLabel })
10017
10230
  ] }) });
10018
- const heading = (group, withNotes) => /* @__PURE__ */ (0, import_jsx_runtime86.jsxs)("div", { className: "uix-scheduling-calendar__agenda-head", children: [
10231
+ const heading = (group, withNotes) => /* @__PURE__ */ (0, import_jsx_runtime87.jsxs)("div", { className: "uix-scheduling-calendar__agenda-head", children: [
10019
10232
  (0, import_react61.createElement)(`h${headingLevel}`, { className: "uix-scheduling-calendar__agenda-heading" }, group.heading ?? dateText(group.date, "day")),
10020
- withNotes && group.annotations && group.annotations.length > 0 && /* @__PURE__ */ (0, import_jsx_runtime86.jsx)("ul", { className: "uix-scheduling-calendar__agenda-notes", children: uniqueKeys(group.annotations.map((overlay) => overlay.id)).map((key, at) => /* @__PURE__ */ (0, import_jsx_runtime86.jsx)("li", { children: note(group.annotations[at]) }, key)) })
10233
+ withNotes && group.annotations && group.annotations.length > 0 && /* @__PURE__ */ (0, import_jsx_runtime87.jsx)("ul", { className: "uix-scheduling-calendar__agenda-notes", children: uniqueKeys(group.annotations.map((overlay) => overlay.id)).map((key, at) => /* @__PURE__ */ (0, import_jsx_runtime87.jsx)("li", { children: note(group.annotations[at]) }, key)) })
10021
10234
  ] });
10022
10235
  const timeText = (entry, date) => {
10023
- const part = (text) => /* @__PURE__ */ (0, import_jsx_runtime86.jsx)("span", { className: "uix-scheduling-calendar__agenda-time-part", children: text });
10024
- const dash = /* @__PURE__ */ (0, import_jsx_runtime86.jsx)("span", { "aria-hidden": "true", children: " \u2013 " });
10236
+ const part = (text) => /* @__PURE__ */ (0, import_jsx_runtime87.jsx)("span", { className: "uix-scheduling-calendar__agenda-time-part", children: text });
10237
+ const dash = /* @__PURE__ */ (0, import_jsx_runtime87.jsx)("span", { "aria-hidden": "true", children: " \u2013 " });
10025
10238
  if (entry.allDay) {
10026
10239
  let span;
10027
10240
  try {
@@ -10031,7 +10244,7 @@ function AgendaBody({
10031
10244
  }
10032
10245
  const last = addCalendarDays(span.end, -1);
10033
10246
  if (span.start === date && last === date) return labels.allDay;
10034
- return span.start === last ? part(dateText(last, "day")) : /* @__PURE__ */ (0, import_jsx_runtime86.jsxs)(import_jsx_runtime86.Fragment, { children: [
10247
+ return span.start === last ? part(dateText(last, "day")) : /* @__PURE__ */ (0, import_jsx_runtime87.jsxs)(import_jsx_runtime87.Fragment, { children: [
10035
10248
  part(dateText(span.start, "day")),
10036
10249
  dash,
10037
10250
  part(dateText(last, "day"))
@@ -10041,11 +10254,11 @@ function AgendaBody({
10041
10254
  const endTime = zonedTimeOfDay(entry.end, timeZone);
10042
10255
  const endDay = zonedDateKey(entry.end, timeZone);
10043
10256
  const underItsDay = zonedDateKey(entry.start, timeZone) === date && (endDay === date || endDay === addCalendarDays(date, 1) && endTime < startTime);
10044
- return underItsDay ? /* @__PURE__ */ (0, import_jsx_runtime86.jsxs)(import_jsx_runtime86.Fragment, { children: [
10257
+ return underItsDay ? /* @__PURE__ */ (0, import_jsx_runtime87.jsxs)(import_jsx_runtime87.Fragment, { children: [
10045
10258
  startTime,
10046
10259
  dash,
10047
10260
  endTime
10048
- ] }) : /* @__PURE__ */ (0, import_jsx_runtime86.jsxs)(import_jsx_runtime86.Fragment, { children: [
10261
+ ] }) : /* @__PURE__ */ (0, import_jsx_runtime87.jsxs)(import_jsx_runtime87.Fragment, { children: [
10049
10262
  part(formatInstant(entry.start)),
10050
10263
  dash,
10051
10264
  part(formatInstant(entry.end))
@@ -10054,31 +10267,31 @@ function AgendaBody({
10054
10267
  const row = (entry, date) => {
10055
10268
  const markers = entryMarkers(entry);
10056
10269
  const name = entry.accessibleName ?? (entry.meta ? `${entryName(entry)}, ${entry.meta}` : entryName(entry));
10057
- return /* @__PURE__ */ (0, import_jsx_runtime86.jsxs)("button", { type: "button", className: "uix-scheduling-calendar__agenda-row", "data-item-id": entry.id, "data-highlight": entry.emphasis === "highlight" || void 0, "data-dim": entry.emphasis === "dim" || void 0, "data-band": entry.band ?? "none", "data-status": entryStatus(entry), "data-state": entry.state, onClick: () => onSelectEntry?.(entry), "aria-label": name, children: [
10058
- /* @__PURE__ */ (0, import_jsx_runtime86.jsx)("span", { className: "uix-scheduling-calendar__swatch", "aria-hidden": "true", "data-band": entry.band ?? "none", "data-status": entryStatus(entry) }),
10059
- /* @__PURE__ */ (0, import_jsx_runtime86.jsx)("span", { className: "uix-scheduling-calendar__agenda-time", children: timeText(entry, date) }),
10060
- /* @__PURE__ */ (0, import_jsx_runtime86.jsxs)("span", { className: "uix-scheduling-calendar__agenda-main", children: [
10061
- renderEntry?.(entry) ?? /* @__PURE__ */ (0, import_jsx_runtime86.jsx)("span", { className: "uix-scheduling-calendar__title", children: entry.title }),
10062
- entry.meta && /* @__PURE__ */ (0, import_jsx_runtime86.jsx)("span", { className: "uix-scheduling-calendar__agenda-meta", children: entry.meta })
10270
+ return /* @__PURE__ */ (0, import_jsx_runtime87.jsxs)("button", { type: "button", className: "uix-scheduling-calendar__agenda-row", "data-item-id": entry.id, "data-highlight": entry.emphasis === "highlight" || void 0, "data-dim": entry.emphasis === "dim" || void 0, "data-band": entry.band ?? "none", "data-status": entryStatus(entry), "data-state": entry.state, onClick: () => onSelectEntry?.(entry), "aria-label": name, children: [
10271
+ /* @__PURE__ */ (0, import_jsx_runtime87.jsx)("span", { className: "uix-scheduling-calendar__swatch", "aria-hidden": "true", "data-band": entry.band ?? "none", "data-status": entryStatus(entry) }),
10272
+ /* @__PURE__ */ (0, import_jsx_runtime87.jsx)("span", { className: "uix-scheduling-calendar__agenda-time", children: timeText(entry, date) }),
10273
+ /* @__PURE__ */ (0, import_jsx_runtime87.jsxs)("span", { className: "uix-scheduling-calendar__agenda-main", children: [
10274
+ renderEntry?.(entry) ?? /* @__PURE__ */ (0, import_jsx_runtime87.jsx)("span", { className: "uix-scheduling-calendar__title", children: entry.title }),
10275
+ entry.meta && /* @__PURE__ */ (0, import_jsx_runtime87.jsx)("span", { className: "uix-scheduling-calendar__agenda-meta", children: entry.meta })
10063
10276
  ] }),
10064
- markers.length > 0 && /* @__PURE__ */ (0, import_jsx_runtime86.jsx)("span", { className: "uix-scheduling-calendar__markers", children: markers.map((marker) => /* @__PURE__ */ (0, import_jsx_runtime86.jsx)("span", { children: renderMarker2(marker, true) }, marker.id)) }),
10065
- /* @__PURE__ */ (0, import_jsx_runtime86.jsx)("span", { className: "uix-scheduling-calendar__status", children: entryStatusText(entry) })
10277
+ markers.length > 0 && /* @__PURE__ */ (0, import_jsx_runtime87.jsx)("span", { className: "uix-scheduling-calendar__markers", children: markers.map((marker) => /* @__PURE__ */ (0, import_jsx_runtime87.jsx)("span", { children: renderMarker2(marker, true) }, marker.id)) }),
10278
+ /* @__PURE__ */ (0, import_jsx_runtime87.jsx)("span", { className: "uix-scheduling-calendar__status", children: entryStatusText(entry) })
10066
10279
  ] });
10067
10280
  };
10068
10281
  const hidden = (group) => {
10069
10282
  const text = fillLabel(labels.hiddenInDay, { count: group.hiddenCount ?? 0 });
10070
- return onShowMore ? /* @__PURE__ */ (0, import_jsx_runtime86.jsx)("button", { type: "button", className: "uix-scheduling-calendar__agenda-more", onClick: () => onShowMore(group.date, group.rows), children: text }) : /* @__PURE__ */ (0, import_jsx_runtime86.jsx)("p", { className: "uix-scheduling-calendar__agenda-more", children: text });
10283
+ return onShowMore ? /* @__PURE__ */ (0, import_jsx_runtime87.jsx)("button", { type: "button", className: "uix-scheduling-calendar__agenda-more", onClick: () => onShowMore(group.date, group.rows), children: text }) : /* @__PURE__ */ (0, import_jsx_runtime87.jsx)("p", { className: "uix-scheduling-calendar__agenda-more", children: text });
10071
10284
  };
10072
- const continues = (group) => /* @__PURE__ */ (0, import_jsx_runtime86.jsx)("p", { className: "uix-scheduling-calendar__agenda-continues", children: fillLabel(labels.continuesInDay, { count: group.continuesCount ?? 0 }) });
10073
- if (groups.length === 0) return /* @__PURE__ */ (0, import_jsx_runtime86.jsx)("div", { className: "uix-scheduling-calendar__agenda", role: "region", "aria-label": labels.agenda, children: /* @__PURE__ */ (0, import_jsx_runtime86.jsx)("p", { children: labels.agendaEmpty }) });
10285
+ const continues = (group) => /* @__PURE__ */ (0, import_jsx_runtime87.jsx)("p", { className: "uix-scheduling-calendar__agenda-continues", children: fillLabel(labels.continuesInDay, { count: group.continuesCount ?? 0 }) });
10286
+ if (groups.length === 0) return /* @__PURE__ */ (0, import_jsx_runtime87.jsx)("div", { className: "uix-scheduling-calendar__agenda", role: "region", "aria-label": labels.agenda, children: /* @__PURE__ */ (0, import_jsx_runtime87.jsx)("p", { children: labels.agendaEmpty }) });
10074
10287
  if (flat) {
10075
- return /* @__PURE__ */ (0, import_jsx_runtime86.jsx)("div", { ref: virtual.containerRef, className: "uix-scheduling-calendar__agenda uix-scheduling-calendar__agenda--virtual", "data-narrow": narrow || void 0, role: "region", "aria-label": labels.agenda, onKeyDown, onFocus, onBlur, onWheel: dropLanding, onPointerDown: dropLanding, children: /* @__PURE__ */ (0, import_jsx_runtime86.jsx)("div", { className: "uix-scheduling-calendar__agenda-window", style: { paddingTop: virtual.padTop, paddingBottom: virtual.padBottom }, children: virtual.rows.map((item, at) => /* @__PURE__ */ (0, import_jsx_runtime86.jsx)("div", { className: "uix-scheduling-calendar__agenda-vrow", "data-kind": item.kind, "data-flat-index": virtual.startIndex + at, children: item.kind === "heading" ? heading(item.group, false) : item.kind === "note" ? note(item.overlay) : item.kind === "entry" ? row(item.entry, item.group.date) : item.kind === "hidden" ? hidden(item.group) : continues(item.group) }, item.key)) }) });
10288
+ return /* @__PURE__ */ (0, import_jsx_runtime87.jsx)("div", { ref: virtual.containerRef, className: "uix-scheduling-calendar__agenda uix-scheduling-calendar__agenda--virtual", "data-narrow": narrow || void 0, role: "region", "aria-label": labels.agenda, onKeyDown, onFocus, onBlur, onWheel: dropLanding, onPointerDown: dropLanding, children: /* @__PURE__ */ (0, import_jsx_runtime87.jsx)("div", { className: "uix-scheduling-calendar__agenda-window", style: { paddingTop: virtual.padTop, paddingBottom: virtual.padBottom }, children: virtual.rows.map((item, at) => /* @__PURE__ */ (0, import_jsx_runtime87.jsx)("div", { className: "uix-scheduling-calendar__agenda-vrow", "data-kind": item.kind, "data-flat-index": virtual.startIndex + at, children: item.kind === "heading" ? heading(item.group, false) : item.kind === "note" ? note(item.overlay) : item.kind === "entry" ? row(item.entry, item.group.date) : item.kind === "hidden" ? hidden(item.group) : continues(item.group) }, item.key)) }) });
10076
10289
  }
10077
- return /* @__PURE__ */ (0, import_jsx_runtime86.jsx)("div", { ref: grouped, className: "uix-scheduling-calendar__agenda", role: "region", "aria-label": labels.agenda, onKeyDown, onFocus, children: groups.map((group, index) => {
10290
+ return /* @__PURE__ */ (0, import_jsx_runtime87.jsx)("div", { ref: grouped, className: "uix-scheduling-calendar__agenda", role: "region", "aria-label": labels.agenda, onKeyDown, onFocus, children: groups.map((group, index) => {
10078
10291
  const rowKeys = uniqueKeys(group.rows.map((entry) => entry.id));
10079
- return /* @__PURE__ */ (0, import_jsx_runtime86.jsxs)("section", { className: "uix-scheduling-calendar__agenda-group", "data-date": group.date, children: [
10292
+ return /* @__PURE__ */ (0, import_jsx_runtime87.jsxs)("section", { className: "uix-scheduling-calendar__agenda-group", "data-date": group.date, children: [
10080
10293
  heading(group, true),
10081
- group.rows.length > 0 && /* @__PURE__ */ (0, import_jsx_runtime86.jsx)("ol", { className: "uix-scheduling-calendar__agenda-rows", children: group.rows.map((entry, at) => /* @__PURE__ */ (0, import_jsx_runtime86.jsx)("li", { children: row(entry, group.date) }, rowKeys[at])) }),
10294
+ group.rows.length > 0 && /* @__PURE__ */ (0, import_jsx_runtime87.jsx)("ol", { className: "uix-scheduling-calendar__agenda-rows", children: group.rows.map((entry, at) => /* @__PURE__ */ (0, import_jsx_runtime87.jsx)("li", { children: row(entry, group.date) }, rowKeys[at])) }),
10082
10295
  (group.hiddenCount ?? 0) > 0 && hidden(group),
10083
10296
  (group.continuesCount ?? 0) > 0 && continues(group)
10084
10297
  ] }, groupKeys[index]);
@@ -10087,7 +10300,7 @@ function AgendaBody({
10087
10300
 
10088
10301
  // src/components/SchedulingTimeGrid.tsx
10089
10302
  var import_react62 = require("react");
10090
- var import_jsx_runtime87 = require("react/jsx-runtime");
10303
+ var import_jsx_runtime88 = require("react/jsx-runtime");
10091
10304
  var HOUR_MS2 = 36e5;
10092
10305
  var MINUTES_PER_HOUR = 60;
10093
10306
  var LINES_PER_HOUR = 3;
@@ -10110,18 +10323,18 @@ var GridItem = (0, import_react62.memo)(function GridItem2({ entry, segment, col
10110
10323
  "--uix-scheduling-calendar-lanes": segment.laneCount
10111
10324
  });
10112
10325
  const custom = renderEntry?.(entry, { availableLines: lines });
10113
- const text = custom ?? /* @__PURE__ */ (0, import_jsx_runtime87.jsxs)(import_jsx_runtime87.Fragment, { children: [
10114
- !continuation && /* @__PURE__ */ (0, import_jsx_runtime87.jsxs)(import_jsx_runtime87.Fragment, { children: [
10115
- /* @__PURE__ */ (0, import_jsx_runtime87.jsx)("span", { className: "uix-scheduling-calendar__time", children: zonedTimeOfDay(entry.start, timeZone) }),
10326
+ const text = custom ?? /* @__PURE__ */ (0, import_jsx_runtime88.jsxs)(import_jsx_runtime88.Fragment, { children: [
10327
+ !continuation && /* @__PURE__ */ (0, import_jsx_runtime88.jsxs)(import_jsx_runtime88.Fragment, { children: [
10328
+ /* @__PURE__ */ (0, import_jsx_runtime88.jsx)("span", { className: "uix-scheduling-calendar__time", children: zonedTimeOfDay(entry.start, timeZone) }),
10116
10329
  " "
10117
10330
  ] }),
10118
- /* @__PURE__ */ (0, import_jsx_runtime87.jsx)("span", { className: "uix-scheduling-calendar__title", children: entry.title })
10331
+ /* @__PURE__ */ (0, import_jsx_runtime88.jsx)("span", { className: "uix-scheduling-calendar__title", children: entry.title })
10119
10332
  ] });
10120
10333
  const noRoom = lines === 0 && (custom === void 0 || custom === null) ? "none" : void 0;
10121
- const body = /* @__PURE__ */ (0, import_jsx_runtime87.jsxs)(import_jsx_runtime87.Fragment, { children: [
10122
- continuation && /* @__PURE__ */ (0, import_jsx_runtime87.jsx)("span", { className: "uix-scheduling-calendar__tg-from", "data-room": lines === 0 ? "none" : void 0, children: continuesFrom }),
10123
- (!continuation || alone) && text != null && text !== false && /* @__PURE__ */ (0, import_jsx_runtime87.jsx)("span", { className: "uix-scheduling-calendar__entry-text", "data-room": noRoom, children: text }),
10124
- markers.length > 0 && /* @__PURE__ */ (0, import_jsx_runtime87.jsx)("span", { className: "uix-scheduling-calendar__markers", children: markers.map((marker) => /* @__PURE__ */ (0, import_jsx_runtime87.jsx)("span", { children: renderMarker2(marker) }, marker.id)) })
10334
+ const body = /* @__PURE__ */ (0, import_jsx_runtime88.jsxs)(import_jsx_runtime88.Fragment, { children: [
10335
+ continuation && /* @__PURE__ */ (0, import_jsx_runtime88.jsx)("span", { className: "uix-scheduling-calendar__tg-from", "data-room": lines === 0 ? "none" : void 0, children: continuesFrom }),
10336
+ (!continuation || alone) && text != null && text !== false && /* @__PURE__ */ (0, import_jsx_runtime88.jsx)("span", { className: "uix-scheduling-calendar__entry-text", "data-room": noRoom, children: text }),
10337
+ markers.length > 0 && /* @__PURE__ */ (0, import_jsx_runtime88.jsx)("span", { className: "uix-scheduling-calendar__markers", children: markers.map((marker) => /* @__PURE__ */ (0, import_jsx_runtime88.jsx)("span", { children: renderMarker2(marker) }, marker.id)) })
10125
10338
  ] });
10126
10339
  const shared = {
10127
10340
  className: "uix-scheduling-calendar__entry uix-scheduling-calendar__tg-item",
@@ -10137,8 +10350,8 @@ var GridItem = (0, import_react62.memo)(function GridItem2({ entry, segment, col
10137
10350
  onClick: () => handlers.click(entry),
10138
10351
  onPointerDown: movable ? (event) => handlers.pointerDown(event, entry, column, false) : void 0
10139
10352
  };
10140
- if (continuation && !alone) return /* @__PURE__ */ (0, import_jsx_runtime87.jsx)("div", { ...shared, "data-continuation-of": entry.id, "aria-hidden": "true", children: body });
10141
- return /* @__PURE__ */ (0, import_jsx_runtime87.jsx)(
10353
+ if (continuation && !alone) return /* @__PURE__ */ (0, import_jsx_runtime88.jsx)("div", { ...shared, "data-continuation-of": entry.id, "aria-hidden": "true", children: body });
10354
+ return /* @__PURE__ */ (0, import_jsx_runtime88.jsx)(
10142
10355
  "button",
10143
10356
  {
10144
10357
  type: "button",
@@ -10244,7 +10457,7 @@ function SchedulingTimeGrid({
10244
10457
  return best;
10245
10458
  }, [slots]);
10246
10459
  const gutterSignature = slotSignature(slots[gutterIndex]);
10247
- const hourLabels = (index, inline) => slots[index].map((slot) => /* @__PURE__ */ (0, import_jsx_runtime87.jsxs)(
10460
+ const hourLabels = (index, inline) => slots[index].map((slot) => /* @__PURE__ */ (0, import_jsx_runtime88.jsxs)(
10248
10461
  "div",
10249
10462
  {
10250
10463
  className: inline ? "uix-scheduling-calendar__tg-hour uix-scheduling-calendar__tg-hour--inline" : "uix-scheduling-calendar__tg-hour",
@@ -10252,7 +10465,7 @@ function SchedulingTimeGrid({
10252
10465
  style: vars({ "--uix-scheduling-calendar-offset": (slot.instant.getTime() - columns[index].dayStart) / HOUR_MS2 }),
10253
10466
  children: [
10254
10467
  slot.label,
10255
- slot.offsetLabel && /* @__PURE__ */ (0, import_jsx_runtime87.jsx)("span", { className: "uix-scheduling-calendar__tg-offset", children: slot.offsetLabel })
10468
+ slot.offsetLabel && /* @__PURE__ */ (0, import_jsx_runtime88.jsx)("span", { className: "uix-scheduling-calendar__tg-offset", children: slot.offsetLabel })
10256
10469
  ]
10257
10470
  },
10258
10471
  slot.instant.getTime()
@@ -10513,7 +10726,7 @@ function SchedulingTimeGrid({
10513
10726
  const ghostParts = ghost && ghostEntry && !ghostTop ? days.map((date) => layoutTimeGridDay([{ id: "ghost", start: ghost.proposal.start, end: ghost.proposal.end }], date, timeZone, { crossMidnightMinutes: Infinity }).segments) : null;
10514
10727
  const ghostSpan = ghost && ghostEntry && ghostTop ? layoutDaySpans([{ id: "ghost", start: ghost.proposal.start, end: ghost.proposal.end }], days, { timeZone }).placed[0] : void 0;
10515
10728
  const ghostLane = ghost ? top.placed.find((span) => span.id === ghost.id)?.lane ?? 0 : 0;
10516
- return /* @__PURE__ */ (0, import_jsx_runtime87.jsxs)(
10729
+ return /* @__PURE__ */ (0, import_jsx_runtime88.jsxs)(
10517
10730
  "div",
10518
10731
  {
10519
10732
  ref: rootRef,
@@ -10532,8 +10745,8 @@ function SchedulingTimeGrid({
10532
10745
  }
10533
10746
  },
10534
10747
  children: [
10535
- /* @__PURE__ */ (0, import_jsx_runtime87.jsxs)("div", { className: "uix-scheduling-calendar__tg-head", children: [
10536
- /* @__PURE__ */ (0, import_jsx_runtime87.jsx)("div", { className: "uix-scheduling-calendar__tg-zone", children: fillLabel(labels.timeZone, { timeZone }) }),
10748
+ /* @__PURE__ */ (0, import_jsx_runtime88.jsxs)("div", { className: "uix-scheduling-calendar__tg-head", children: [
10749
+ /* @__PURE__ */ (0, import_jsx_runtime88.jsx)("div", { className: "uix-scheduling-calendar__tg-zone", children: fillLabel(labels.timeZone, { timeZone }) }),
10537
10750
  days.map((date, index) => {
10538
10751
  const info = dayInfo?.[date];
10539
10752
  const hiddenIds = dayInfo ? [] : [...columns[index].hidden, ...topHiddenOn(date)];
@@ -10541,8 +10754,8 @@ function SchedulingTimeGrid({
10541
10754
  const moreText = fillLabel(labels.moreSpans, { count: more });
10542
10755
  const moreName = fillLabel(labels.moreEntriesLabel, { count: more, date: dateText(date, "day") });
10543
10756
  const headName = !info ? dateText(date, "day") : info.label ? fillLabel(labels.dayName, { date: dateText(date, "day"), label: info.label }) : `${dateText(date, "day")}, ${fillLabel(labels.dayCount, { count: info.count })}`;
10544
- return /* @__PURE__ */ (0, import_jsx_runtime87.jsxs)("div", { className: "uix-scheduling-calendar__tg-dayhead", role: "group", "aria-label": headName, "data-date": date, children: [
10545
- /* @__PURE__ */ (0, import_jsx_runtime87.jsx)(
10757
+ return /* @__PURE__ */ (0, import_jsx_runtime88.jsxs)("div", { className: "uix-scheduling-calendar__tg-dayhead", role: "group", "aria-label": headName, "data-date": date, children: [
10758
+ /* @__PURE__ */ (0, import_jsx_runtime88.jsx)(
10546
10759
  "button",
10547
10760
  {
10548
10761
  type: "button",
@@ -10556,20 +10769,20 @@ function SchedulingTimeGrid({
10556
10769
  children: dateText(date, "column")
10557
10770
  }
10558
10771
  ),
10559
- info && /* @__PURE__ */ (0, import_jsx_runtime87.jsx)("span", { className: "uix-scheduling-calendar__count", "aria-hidden": "true", children: info.count }),
10560
- info?.markers && info.markers.length > 0 && /* @__PURE__ */ (0, import_jsx_runtime87.jsx)("span", { className: "uix-scheduling-calendar__markers", children: info.markers.map((marker) => /* @__PURE__ */ (0, import_jsx_runtime87.jsx)("span", { children: renderMarker2(marker, true) }, marker.id)) }),
10561
- more > 0 && (onShowMore ? /* @__PURE__ */ (0, import_jsx_runtime87.jsx)("button", { type: "button", tabIndex: -1, className: "uix-scheduling-calendar__more", "aria-label": moreName, onClick: () => onShowMore(date, hiddenIds.map((id) => entryById.get(id)).filter(Boolean)), children: moreText }) : /* @__PURE__ */ (0, import_jsx_runtime87.jsxs)("span", { className: "uix-scheduling-calendar__more", children: [
10562
- /* @__PURE__ */ (0, import_jsx_runtime87.jsx)("span", { "aria-hidden": "true", children: moreText }),
10563
- /* @__PURE__ */ (0, import_jsx_runtime87.jsx)("span", { className: "uix-visually-hidden", children: moreName })
10772
+ info && /* @__PURE__ */ (0, import_jsx_runtime88.jsx)("span", { className: "uix-scheduling-calendar__count", "aria-hidden": "true", children: info.count }),
10773
+ info?.markers && info.markers.length > 0 && /* @__PURE__ */ (0, import_jsx_runtime88.jsx)("span", { className: "uix-scheduling-calendar__markers", children: info.markers.map((marker) => /* @__PURE__ */ (0, import_jsx_runtime88.jsx)("span", { children: renderMarker2(marker, true) }, marker.id)) }),
10774
+ more > 0 && (onShowMore ? /* @__PURE__ */ (0, import_jsx_runtime88.jsx)("button", { type: "button", tabIndex: -1, className: "uix-scheduling-calendar__more", "aria-label": moreName, onClick: () => onShowMore(date, hiddenIds.map((id) => entryById.get(id)).filter(Boolean)), children: moreText }) : /* @__PURE__ */ (0, import_jsx_runtime88.jsxs)("span", { className: "uix-scheduling-calendar__more", children: [
10775
+ /* @__PURE__ */ (0, import_jsx_runtime88.jsx)("span", { "aria-hidden": "true", children: moreText }),
10776
+ /* @__PURE__ */ (0, import_jsx_runtime88.jsx)("span", { className: "uix-visually-hidden", children: moreName })
10564
10777
  ] }))
10565
10778
  ] }, date);
10566
10779
  })
10567
10780
  ] }),
10568
- (windowLanes > 0 || moreWindows > 0) && /* @__PURE__ */ (0, import_jsx_runtime87.jsxs)("div", { className: "uix-scheduling-calendar__tg-strip", role: "group", "aria-label": labels.windows, style: vars({ "--uix-scheduling-calendar-lanes": Math.max(windowLanes, 1) }), children: [
10781
+ (windowLanes > 0 || moreWindows > 0) && /* @__PURE__ */ (0, import_jsx_runtime88.jsxs)("div", { className: "uix-scheduling-calendar__tg-strip", role: "group", "aria-label": labels.windows, style: vars({ "--uix-scheduling-calendar-lanes": Math.max(windowLanes, 1) }), children: [
10569
10782
  strip.placed.map((placed) => {
10570
10783
  const overlay = overlayById.get(placed.id);
10571
10784
  if (!overlay) return null;
10572
- return /* @__PURE__ */ (0, import_jsx_runtime87.jsx)(
10785
+ return /* @__PURE__ */ (0, import_jsx_runtime88.jsx)(
10573
10786
  "button",
10574
10787
  {
10575
10788
  type: "button",
@@ -10584,24 +10797,24 @@ function SchedulingTimeGrid({
10584
10797
  style: { gridColumn: gridColumns(placed), ...vars({ "--uix-scheduling-calendar-lane": placed.lane }) },
10585
10798
  onClick: () => onSelectOverlay?.(overlay),
10586
10799
  "aria-label": overlayName(overlay),
10587
- children: /* @__PURE__ */ (0, import_jsx_runtime87.jsxs)("span", { className: "uix-scheduling-calendar__window-text", children: [
10588
- overlay.kindLabel && /* @__PURE__ */ (0, import_jsx_runtime87.jsx)("span", { className: "uix-scheduling-calendar__window-kind", children: overlay.kindLabel }),
10589
- /* @__PURE__ */ (0, import_jsx_runtime87.jsx)("span", { className: "uix-scheduling-calendar__window-name", children: overlay.label }),
10590
- overlay.scopeLabel && /* @__PURE__ */ (0, import_jsx_runtime87.jsx)("span", { className: "uix-scheduling-calendar__window-scope", children: overlay.scopeLabel })
10800
+ children: /* @__PURE__ */ (0, import_jsx_runtime88.jsxs)("span", { className: "uix-scheduling-calendar__window-text", children: [
10801
+ overlay.kindLabel && /* @__PURE__ */ (0, import_jsx_runtime88.jsx)("span", { className: "uix-scheduling-calendar__window-kind", children: overlay.kindLabel }),
10802
+ /* @__PURE__ */ (0, import_jsx_runtime88.jsx)("span", { className: "uix-scheduling-calendar__window-name", children: overlay.label }),
10803
+ overlay.scopeLabel && /* @__PURE__ */ (0, import_jsx_runtime88.jsx)("span", { className: "uix-scheduling-calendar__window-scope", children: overlay.scopeLabel })
10591
10804
  ] })
10592
10805
  },
10593
10806
  placed.id
10594
10807
  );
10595
10808
  }),
10596
- moreWindows > 0 && (onShowMore ? /* @__PURE__ */ (0, import_jsx_runtime87.jsx)("button", { type: "button", tabIndex: -1, className: "uix-scheduling-calendar__rowmore", "data-more-date": firstHiddenWindowDay, "aria-label": fillLabel(labels.moreWindowsLabel, { count: moreWindows, date: dateText(firstHiddenWindowDay, "day") }), onClick: () => onShowMore(firstHiddenWindowDay, []), children: fillLabel(labels.moreWindows, { count: moreWindows }) }) : /* @__PURE__ */ (0, import_jsx_runtime87.jsx)("span", { className: "uix-scheduling-calendar__rowmore", children: fillLabel(labels.moreWindows, { count: moreWindows }) }))
10809
+ moreWindows > 0 && (onShowMore ? /* @__PURE__ */ (0, import_jsx_runtime88.jsx)("button", { type: "button", tabIndex: -1, className: "uix-scheduling-calendar__rowmore", "data-more-date": firstHiddenWindowDay, "aria-label": fillLabel(labels.moreWindowsLabel, { count: moreWindows, date: dateText(firstHiddenWindowDay, "day") }), onClick: () => onShowMore(firstHiddenWindowDay, []), children: fillLabel(labels.moreWindows, { count: moreWindows }) }) : /* @__PURE__ */ (0, import_jsx_runtime88.jsx)("span", { className: "uix-scheduling-calendar__rowmore", children: fillLabel(labels.moreWindows, { count: moreWindows }) }))
10597
10810
  ] }),
10598
- (topLanes > 0 || ghostSpan) && /* @__PURE__ */ (0, import_jsx_runtime87.jsxs)("div", { className: "uix-scheduling-calendar__tg-strip uix-scheduling-calendar__tg-top", role: "group", "aria-label": labels.topLane, style: vars({ "--uix-scheduling-calendar-lanes": Math.max(topLanes, 1) }), children: [
10811
+ (topLanes > 0 || ghostSpan) && /* @__PURE__ */ (0, import_jsx_runtime88.jsxs)("div", { className: "uix-scheduling-calendar__tg-strip uix-scheduling-calendar__tg-top", role: "group", "aria-label": labels.topLane, style: vars({ "--uix-scheduling-calendar-lanes": Math.max(topLanes, 1) }), children: [
10599
10812
  top.placed.map((placed) => {
10600
10813
  const entry = entryById.get(placed.id);
10601
10814
  if (!entry) return null;
10602
10815
  const canDrag = movable(entry);
10603
10816
  const markers = entryMarkers(entry);
10604
- return /* @__PURE__ */ (0, import_jsx_runtime87.jsxs)(
10817
+ return /* @__PURE__ */ (0, import_jsx_runtime88.jsxs)(
10605
10818
  "button",
10606
10819
  {
10607
10820
  type: "button",
@@ -10624,23 +10837,23 @@ function SchedulingTimeGrid({
10624
10837
  onBlur: canDrag ? () => handlers.blur(entry) : void 0,
10625
10838
  onPointerDown: canDrag ? (event) => handlers.pointerDown(event, entry, placed.startCol, true) : void 0,
10626
10839
  children: [
10627
- /* @__PURE__ */ (0, import_jsx_runtime87.jsx)("span", { className: "uix-scheduling-calendar__entry-text", children: renderEntry?.(entry, { availableLines: 1 }) ?? /* @__PURE__ */ (0, import_jsx_runtime87.jsxs)(import_jsx_runtime87.Fragment, { children: [
10628
- !placed.continuesBefore && !entry.allDay && /* @__PURE__ */ (0, import_jsx_runtime87.jsxs)(import_jsx_runtime87.Fragment, { children: [
10629
- /* @__PURE__ */ (0, import_jsx_runtime87.jsx)("span", { className: "uix-scheduling-calendar__time", children: zonedTimeOfDay(entry.start, timeZone) }),
10840
+ /* @__PURE__ */ (0, import_jsx_runtime88.jsx)("span", { className: "uix-scheduling-calendar__entry-text", children: renderEntry?.(entry, { availableLines: 1 }) ?? /* @__PURE__ */ (0, import_jsx_runtime88.jsxs)(import_jsx_runtime88.Fragment, { children: [
10841
+ !placed.continuesBefore && !entry.allDay && /* @__PURE__ */ (0, import_jsx_runtime88.jsxs)(import_jsx_runtime88.Fragment, { children: [
10842
+ /* @__PURE__ */ (0, import_jsx_runtime88.jsx)("span", { className: "uix-scheduling-calendar__time", children: zonedTimeOfDay(entry.start, timeZone) }),
10630
10843
  " "
10631
10844
  ] }),
10632
- /* @__PURE__ */ (0, import_jsx_runtime87.jsx)("span", { className: "uix-scheduling-calendar__title", children: entry.title })
10845
+ /* @__PURE__ */ (0, import_jsx_runtime88.jsx)("span", { className: "uix-scheduling-calendar__title", children: entry.title })
10633
10846
  ] }) }),
10634
- markers.length > 0 && /* @__PURE__ */ (0, import_jsx_runtime87.jsx)("span", { className: "uix-scheduling-calendar__markers", children: markers.map((marker) => /* @__PURE__ */ (0, import_jsx_runtime87.jsx)("span", { children: renderMarker2(marker) }, marker.id)) })
10847
+ markers.length > 0 && /* @__PURE__ */ (0, import_jsx_runtime88.jsx)("span", { className: "uix-scheduling-calendar__markers", children: markers.map((marker) => /* @__PURE__ */ (0, import_jsx_runtime88.jsx)("span", { children: renderMarker2(marker) }, marker.id)) })
10635
10848
  ]
10636
10849
  },
10637
10850
  placed.id
10638
10851
  );
10639
10852
  }),
10640
- ghostSpan && /* @__PURE__ */ (0, import_jsx_runtime87.jsx)("div", { className: "uix-scheduling-calendar__tg-ghost", "aria-hidden": "true", "data-sent": ghost?.source === "sent" || void 0, style: { gridColumn: gridColumns(ghostSpan), ...vars({ "--uix-scheduling-calendar-lane": ghostLane }) } })
10853
+ ghostSpan && /* @__PURE__ */ (0, import_jsx_runtime88.jsx)("div", { className: "uix-scheduling-calendar__tg-ghost", "aria-hidden": "true", "data-sent": ghost?.source === "sent" || void 0, style: { gridColumn: gridColumns(ghostSpan), ...vars({ "--uix-scheduling-calendar-lane": ghostLane }) } })
10641
10854
  ] }),
10642
- /* @__PURE__ */ (0, import_jsx_runtime87.jsxs)("div", { className: "uix-scheduling-calendar__tg-body", children: [
10643
- /* @__PURE__ */ (0, import_jsx_runtime87.jsx)("div", { className: "uix-scheduling-calendar__tg-gutter", "aria-hidden": "true", children: hourLabels(gutterIndex, false) }),
10855
+ /* @__PURE__ */ (0, import_jsx_runtime88.jsxs)("div", { className: "uix-scheduling-calendar__tg-body", children: [
10856
+ /* @__PURE__ */ (0, import_jsx_runtime88.jsx)("div", { className: "uix-scheduling-calendar__tg-gutter", "aria-hidden": "true", children: hourLabels(gutterIndex, false) }),
10644
10857
  shades.map((placed) => {
10645
10858
  const overlay = overlayById.get(placed.id);
10646
10859
  const first = columns[placed.startCol];
@@ -10650,14 +10863,14 @@ function SchedulingTimeGrid({
10650
10863
  const width = 100 / (placed.endCol - placed.startCol + 1);
10651
10864
  const percent = (value) => `${Math.round(value * 1e4) / 100}%`;
10652
10865
  const clipPath = placed.startCol === placed.endCol ? `polygon(0 ${percent(from)}, 100% ${percent(from)}, 100% ${percent(to)}, 0 ${percent(to)})` : `polygon(0 ${percent(from)}, ${width}% ${percent(from)}, ${width}% 0, 100% 0, 100% ${percent(to)}, ${100 - width}% ${percent(to)}, ${100 - width}% 100%, 0 100%)`;
10653
- return /* @__PURE__ */ (0, import_jsx_runtime87.jsx)("div", { className: "uix-scheduling-calendar__tg-shade", "aria-hidden": "true", "data-pattern": overlay.pattern ?? "solid", style: { gridColumn: gridColumns(placed), clipPath } }, `shade-${placed.id}`);
10866
+ return /* @__PURE__ */ (0, import_jsx_runtime88.jsx)("div", { className: "uix-scheduling-calendar__tg-shade", "aria-hidden": "true", "data-pattern": overlay.pattern ?? "solid", style: { gridColumn: gridColumns(placed), clipPath } }, `shade-${placed.id}`);
10654
10867
  }),
10655
- columns.map((column, index) => /* @__PURE__ */ (0, import_jsx_runtime87.jsxs)("div", { className: "uix-scheduling-calendar__tg-column", "data-tg-column": column.date, style: { gridColumn: `${index + 2}`, ...vars({ "--uix-scheduling-calendar-hours": column.dayHours }) }, children: [
10868
+ columns.map((column, index) => /* @__PURE__ */ (0, import_jsx_runtime88.jsxs)("div", { className: "uix-scheduling-calendar__tg-column", "data-tg-column": column.date, style: { gridColumn: `${index + 2}`, ...vars({ "--uix-scheduling-calendar-hours": column.dayHours }) }, children: [
10656
10869
  slotSignature(slots[index]) !== gutterSignature && hourLabels(index, true),
10657
10870
  column.segments.map((segment) => {
10658
10871
  const entry = entryById.get(segment.id);
10659
10872
  const alone = segment.part === "continuation" && index === 0;
10660
- return /* @__PURE__ */ (0, import_jsx_runtime87.jsx)(
10873
+ return /* @__PURE__ */ (0, import_jsx_runtime88.jsx)(
10661
10874
  GridItem,
10662
10875
  {
10663
10876
  entry,
@@ -10678,7 +10891,7 @@ function SchedulingTimeGrid({
10678
10891
  `${segment.id}-${segment.part}`
10679
10892
  );
10680
10893
  }),
10681
- ghostParts?.[index].map((segment) => /* @__PURE__ */ (0, import_jsx_runtime87.jsx)(
10894
+ ghostParts?.[index].map((segment) => /* @__PURE__ */ (0, import_jsx_runtime88.jsx)(
10682
10895
  "div",
10683
10896
  {
10684
10897
  className: "uix-scheduling-calendar__tg-ghost",
@@ -10688,20 +10901,20 @@ function SchedulingTimeGrid({
10688
10901
  },
10689
10902
  `ghost-${segment.part}`
10690
10903
  )),
10691
- index === nowColumn && nowAt !== null && /* @__PURE__ */ (0, import_jsx_runtime87.jsx)("div", { className: "uix-scheduling-calendar__tg-now", "aria-hidden": "true", style: vars({ "--uix-scheduling-calendar-offset": (nowAt - column.dayStart) / HOUR_MS2 }) })
10904
+ index === nowColumn && nowAt !== null && /* @__PURE__ */ (0, import_jsx_runtime88.jsx)("div", { className: "uix-scheduling-calendar__tg-now", "aria-hidden": "true", style: vars({ "--uix-scheduling-calendar-offset": (nowAt - column.dayStart) / HOUR_MS2 }) })
10692
10905
  ] }, column.date))
10693
10906
  ] }),
10694
- emptyNote != null && emptyNote !== false && nothingToShow && /* @__PURE__ */ (0, import_jsx_runtime87.jsx)("div", { className: "uix-scheduling-calendar__empty", children: emptyNote }),
10695
- moving && /* @__PURE__ */ (0, import_jsx_runtime87.jsx)("p", { id: hintId, className: "uix-visually-hidden", children: labels.moveHint }),
10696
- /* @__PURE__ */ (0, import_jsx_runtime87.jsx)("span", { className: "uix-scheduling-calendar__tg-probe", "aria-hidden": "true", children: "00:00 abcdef" }),
10697
- /* @__PURE__ */ (0, import_jsx_runtime87.jsx)("div", { className: "uix-visually-hidden", "aria-live": "polite", children: announcement })
10907
+ emptyNote != null && emptyNote !== false && nothingToShow && /* @__PURE__ */ (0, import_jsx_runtime88.jsx)("div", { className: "uix-scheduling-calendar__empty", children: emptyNote }),
10908
+ moving && /* @__PURE__ */ (0, import_jsx_runtime88.jsx)("p", { id: hintId, className: "uix-visually-hidden", children: labels.moveHint }),
10909
+ /* @__PURE__ */ (0, import_jsx_runtime88.jsx)("span", { className: "uix-scheduling-calendar__tg-probe", "aria-hidden": "true", children: "00:00 abcdef" }),
10910
+ /* @__PURE__ */ (0, import_jsx_runtime88.jsx)("div", { className: "uix-visually-hidden", "aria-live": "polite", children: announcement })
10698
10911
  ]
10699
10912
  }
10700
10913
  );
10701
10914
  }
10702
10915
 
10703
10916
  // src/components/SchedulingCalendar.tsx
10704
- var import_jsx_runtime88 = require("react/jsx-runtime");
10917
+ var import_jsx_runtime89 = require("react/jsx-runtime");
10705
10918
  var DEFAULT_SCHEDULING_CALENDAR_LABELS = {
10706
10919
  region: "Scheduling calendar in {timeZone}",
10707
10920
  previous: "Previous",
@@ -10770,12 +10983,12 @@ function coveredDays(start, end, timeZone) {
10770
10983
  }
10771
10984
  function Marker({ marker, showLabel }) {
10772
10985
  const emphasis = marker.emphasis ?? "neutral";
10773
- return /* @__PURE__ */ (0, import_jsx_runtime88.jsxs)("span", { className: "uix-scheduling-calendar__marker", "data-emphasis": emphasis, "data-glyph": marker.icon == null ? emphasis : void 0, children: [
10774
- marker.icon != null && /* @__PURE__ */ (0, import_jsx_runtime88.jsx)("span", { className: "uix-scheduling-calendar__marker-icon", "aria-hidden": "true", children: marker.icon }),
10775
- /* @__PURE__ */ (0, import_jsx_runtime88.jsx)("span", { className: showLabel ? "uix-scheduling-calendar__marker-label" : "uix-visually-hidden", children: marker.label })
10986
+ return /* @__PURE__ */ (0, import_jsx_runtime89.jsxs)("span", { className: "uix-scheduling-calendar__marker", "data-emphasis": emphasis, "data-glyph": marker.icon == null ? emphasis : void 0, children: [
10987
+ marker.icon != null && /* @__PURE__ */ (0, import_jsx_runtime89.jsx)("span", { className: "uix-scheduling-calendar__marker-icon", "aria-hidden": "true", children: marker.icon }),
10988
+ /* @__PURE__ */ (0, import_jsx_runtime89.jsx)("span", { className: showLabel ? "uix-scheduling-calendar__marker-label" : "uix-visually-hidden", children: marker.label })
10776
10989
  ] });
10777
10990
  }
10778
- var renderMarker = (marker, showLabel) => /* @__PURE__ */ (0, import_jsx_runtime88.jsx)(Marker, { marker, showLabel });
10991
+ var renderMarker = (marker, showLabel) => /* @__PURE__ */ (0, import_jsx_runtime89.jsx)(Marker, { marker, showLabel });
10779
10992
  function SchedulingCalendar({
10780
10993
  entries,
10781
10994
  anchorDate,
@@ -11039,15 +11252,15 @@ function SchedulingCalendar({
11039
11252
  });
11040
11253
  const entryContent = (entry, withTime = true) => {
11041
11254
  const markers = markersOf(entry);
11042
- return /* @__PURE__ */ (0, import_jsx_runtime88.jsxs)(import_jsx_runtime88.Fragment, { children: [
11043
- /* @__PURE__ */ (0, import_jsx_runtime88.jsx)("span", { className: "uix-scheduling-calendar__entry-text", children: renderEntry?.(entry) ?? /* @__PURE__ */ (0, import_jsx_runtime88.jsxs)(import_jsx_runtime88.Fragment, { children: [
11044
- withTime && /* @__PURE__ */ (0, import_jsx_runtime88.jsxs)(import_jsx_runtime88.Fragment, { children: [
11045
- /* @__PURE__ */ (0, import_jsx_runtime88.jsx)("span", { className: "uix-scheduling-calendar__time", children: zonedTimeOfDay(entry.start, timeZone) }),
11255
+ return /* @__PURE__ */ (0, import_jsx_runtime89.jsxs)(import_jsx_runtime89.Fragment, { children: [
11256
+ /* @__PURE__ */ (0, import_jsx_runtime89.jsx)("span", { className: "uix-scheduling-calendar__entry-text", children: renderEntry?.(entry) ?? /* @__PURE__ */ (0, import_jsx_runtime89.jsxs)(import_jsx_runtime89.Fragment, { children: [
11257
+ withTime && /* @__PURE__ */ (0, import_jsx_runtime89.jsxs)(import_jsx_runtime89.Fragment, { children: [
11258
+ /* @__PURE__ */ (0, import_jsx_runtime89.jsx)("span", { className: "uix-scheduling-calendar__time", children: zonedTimeOfDay(entry.start, timeZone) }),
11046
11259
  " "
11047
11260
  ] }),
11048
- /* @__PURE__ */ (0, import_jsx_runtime88.jsx)("span", { className: "uix-scheduling-calendar__title", children: entry.title })
11261
+ /* @__PURE__ */ (0, import_jsx_runtime89.jsx)("span", { className: "uix-scheduling-calendar__title", children: entry.title })
11049
11262
  ] }) }),
11050
- markers.length > 0 && /* @__PURE__ */ (0, import_jsx_runtime88.jsx)("span", { className: "uix-scheduling-calendar__markers", children: markers.map((marker) => /* @__PURE__ */ (0, import_jsx_runtime88.jsx)(Marker, { marker }, marker.id)) })
11263
+ markers.length > 0 && /* @__PURE__ */ (0, import_jsx_runtime89.jsx)("span", { className: "uix-scheduling-calendar__markers", children: markers.map((marker) => /* @__PURE__ */ (0, import_jsx_runtime89.jsx)(Marker, { marker }, marker.id)) })
11051
11264
  ] });
11052
11265
  };
11053
11266
  const laneStyle = (placed, windowLanes) => ({
@@ -11066,25 +11279,25 @@ function SchedulingCalendar({
11066
11279
  const onDay = picksGiven ? all : entriesOn(date);
11067
11280
  const badge = renderDayBadge?.(date, onDay);
11068
11281
  const hasBadge = badge != null && badge !== false;
11069
- const dateButton = /* @__PURE__ */ (0, import_jsx_runtime88.jsx)("button", { type: "button", className: "uix-scheduling-calendar__date", "data-calendar-date": date, tabIndex: activeDate === date ? 0 : -1, onFocus: () => setActiveDate(date), onKeyDown: (event) => onDayKeyDown(event, date), onClick: onSelectDate ? () => onSelectDate(date) : void 0, "aria-label": info?.label ? fillLabel(labels.dayName, { date: dateText(date, "day"), label: info.label }) : dateText(date, "day"), children: Number(date.slice(-2)) });
11282
+ const dateButton = /* @__PURE__ */ (0, import_jsx_runtime89.jsx)("button", { type: "button", className: "uix-scheduling-calendar__date", "data-calendar-date": date, tabIndex: activeDate === date ? 0 : -1, onFocus: () => setActiveDate(date), onKeyDown: (event) => onDayKeyDown(event, date), onClick: onSelectDate ? () => onSelectDate(date) : void 0, "aria-label": info?.label ? fillLabel(labels.dayName, { date: dateText(date, "day"), label: info.label }) : dateText(date, "day"), children: Number(date.slice(-2)) });
11070
11283
  const moreText = fillLabel(labels.moreEntries, { count: hiddenCount });
11071
11284
  const moreName = fillLabel(labels.moreEntriesLabel, { count: hiddenCount, date: dateText(date, "day") });
11072
- return /* @__PURE__ */ (0, import_jsx_runtime88.jsxs)("div", { className: "uix-scheduling-calendar__day", "data-outside": view === "month" && !monthDays[index].inMonth || void 0, children: [
11073
- hasBadge || info ? /* @__PURE__ */ (0, import_jsx_runtime88.jsxs)("div", { className: "uix-scheduling-calendar__dayhead", children: [
11074
- hasBadge && /* @__PURE__ */ (0, import_jsx_runtime88.jsx)("span", { className: "uix-scheduling-calendar__badge", children: badge }),
11075
- info && /* @__PURE__ */ (0, import_jsx_runtime88.jsxs)("span", { className: "uix-scheduling-calendar__count", "aria-hidden": info.label ? true : void 0, children: [
11076
- /* @__PURE__ */ (0, import_jsx_runtime88.jsx)("span", { "aria-hidden": "true", children: info.count }),
11077
- /* @__PURE__ */ (0, import_jsx_runtime88.jsx)("span", { className: "uix-visually-hidden", children: info.label ?? fillLabel(labels.dayCount, { count: info.count }) })
11285
+ return /* @__PURE__ */ (0, import_jsx_runtime89.jsxs)("div", { className: "uix-scheduling-calendar__day", "data-outside": view === "month" && !monthDays[index].inMonth || void 0, children: [
11286
+ hasBadge || info ? /* @__PURE__ */ (0, import_jsx_runtime89.jsxs)("div", { className: "uix-scheduling-calendar__dayhead", children: [
11287
+ hasBadge && /* @__PURE__ */ (0, import_jsx_runtime89.jsx)("span", { className: "uix-scheduling-calendar__badge", children: badge }),
11288
+ info && /* @__PURE__ */ (0, import_jsx_runtime89.jsxs)("span", { className: "uix-scheduling-calendar__count", "aria-hidden": info.label ? true : void 0, children: [
11289
+ /* @__PURE__ */ (0, import_jsx_runtime89.jsx)("span", { "aria-hidden": "true", children: info.count }),
11290
+ /* @__PURE__ */ (0, import_jsx_runtime89.jsx)("span", { className: "uix-visually-hidden", children: info.label ?? fillLabel(labels.dayCount, { count: info.count }) })
11078
11291
  ] }),
11079
- info?.markers && info.markers.length > 0 && /* @__PURE__ */ (0, import_jsx_runtime88.jsx)("span", { className: "uix-scheduling-calendar__markers", children: info.markers.map((marker) => /* @__PURE__ */ (0, import_jsx_runtime88.jsx)(Marker, { marker }, marker.id)) }),
11292
+ info?.markers && info.markers.length > 0 && /* @__PURE__ */ (0, import_jsx_runtime89.jsx)("span", { className: "uix-scheduling-calendar__markers", children: info.markers.map((marker) => /* @__PURE__ */ (0, import_jsx_runtime89.jsx)(Marker, { marker }, marker.id)) }),
11080
11293
  dateButton
11081
11294
  ] }) : dateButton,
11082
- /* @__PURE__ */ (0, import_jsx_runtime88.jsxs)("div", { className: "uix-scheduling-calendar__entries", children: [
11083
- shown.map((entry) => /* @__PURE__ */ (0, import_jsx_runtime88.jsx)("button", { className: "uix-scheduling-calendar__entry", ...entryProps(entry), children: entryContent(entry) }, entry.id)),
11084
- countsOnly ? null : controlled ? hiddenCount > 0 && (onShowMore ? /* @__PURE__ */ (0, import_jsx_runtime88.jsx)("button", { type: "button", tabIndex: -1, className: "uix-scheduling-calendar__more", "aria-label": moreName, onClick: () => onShowMore(date, onDay), children: moreText }) : /* @__PURE__ */ (0, import_jsx_runtime88.jsxs)("span", { className: "uix-scheduling-calendar__more", children: [
11085
- /* @__PURE__ */ (0, import_jsx_runtime88.jsx)("span", { "aria-hidden": "true", children: moreText }),
11086
- /* @__PURE__ */ (0, import_jsx_runtime88.jsx)("span", { className: "uix-visually-hidden", children: moreName })
11087
- ] })) : overflowing && /* @__PURE__ */ (0, import_jsx_runtime88.jsx)("button", { type: "button", tabIndex: -1, className: "uix-scheduling-calendar__more", "aria-expanded": onShowMore ? void 0 : !collapsed, "aria-label": collapsed ? moreName : void 0, onClick: () => toggleMore(date, onDay), children: collapsed ? moreText : labels.fewerEntries })
11295
+ /* @__PURE__ */ (0, import_jsx_runtime89.jsxs)("div", { className: "uix-scheduling-calendar__entries", children: [
11296
+ shown.map((entry) => /* @__PURE__ */ (0, import_jsx_runtime89.jsx)("button", { className: "uix-scheduling-calendar__entry", ...entryProps(entry), children: entryContent(entry) }, entry.id)),
11297
+ countsOnly ? null : controlled ? hiddenCount > 0 && (onShowMore ? /* @__PURE__ */ (0, import_jsx_runtime89.jsx)("button", { type: "button", tabIndex: -1, className: "uix-scheduling-calendar__more", "aria-label": moreName, onClick: () => onShowMore(date, onDay), children: moreText }) : /* @__PURE__ */ (0, import_jsx_runtime89.jsxs)("span", { className: "uix-scheduling-calendar__more", children: [
11298
+ /* @__PURE__ */ (0, import_jsx_runtime89.jsx)("span", { "aria-hidden": "true", children: moreText }),
11299
+ /* @__PURE__ */ (0, import_jsx_runtime89.jsx)("span", { className: "uix-visually-hidden", children: moreName })
11300
+ ] })) : overflowing && /* @__PURE__ */ (0, import_jsx_runtime89.jsx)("button", { type: "button", tabIndex: -1, className: "uix-scheduling-calendar__more", "aria-expanded": onShowMore ? void 0 : !collapsed, "aria-label": collapsed ? moreName : void 0, onClick: () => toggleMore(date, onDay), children: collapsed ? moreText : labels.fewerEntries })
11088
11301
  ] })
11089
11302
  ] }, date);
11090
11303
  };
@@ -11099,26 +11312,26 @@ function SchedulingCalendar({
11099
11312
  const moreText = fillLabel(labels.moreSpans, { count: hidden });
11100
11313
  const moreName = fillLabel(labels.moreSpansLabel, { count: hidden, date: dateText(firstHiddenDay, "day") });
11101
11314
  const style = { ["--uix-scheduling-calendar-lanes"]: Math.max(windowLanes + spanLanes, hidden > 0 ? 1 : 0) };
11102
- return /* @__PURE__ */ (0, import_jsx_runtime88.jsxs)("div", { className: "uix-scheduling-calendar__week", style, children: [
11315
+ return /* @__PURE__ */ (0, import_jsx_runtime89.jsxs)("div", { className: "uix-scheduling-calendar__week", style, children: [
11103
11316
  rowDays.map((date, column) => renderDay(date, row * 7 + column)),
11104
11317
  (placedByRow.get(row) ?? []).map((placed) => {
11105
11318
  const continues = { "data-continues-before": placed.continuesBefore || void 0, "data-continues-after": placed.continuesAfter || void 0 };
11106
11319
  if (placed.group === "window") {
11107
11320
  const overlay = overlayById.get(placed.id);
11108
11321
  if (!overlay) return null;
11109
- return /* @__PURE__ */ (0, import_jsx_runtime88.jsx)("button", { type: "button", tabIndex: -1, className: "uix-scheduling-calendar__window", "data-overlay-id": overlay.id, "data-pattern": overlay.pattern ?? "solid", "data-global": overlay.global || void 0, "data-kind": overlay.kind, ...continues, style: laneStyle(placed, windowLanes), onClick: () => onSelectOverlay?.(overlay), "aria-label": overlayName(overlay), children: /* @__PURE__ */ (0, import_jsx_runtime88.jsxs)("span", { className: "uix-scheduling-calendar__window-text", children: [
11110
- overlay.kindLabel && /* @__PURE__ */ (0, import_jsx_runtime88.jsx)("span", { className: "uix-scheduling-calendar__window-kind", children: overlay.kindLabel }),
11111
- /* @__PURE__ */ (0, import_jsx_runtime88.jsx)("span", { className: "uix-scheduling-calendar__window-name", children: overlay.label }),
11112
- overlay.scopeLabel && /* @__PURE__ */ (0, import_jsx_runtime88.jsx)("span", { className: "uix-scheduling-calendar__window-scope", children: overlay.scopeLabel })
11322
+ return /* @__PURE__ */ (0, import_jsx_runtime89.jsx)("button", { type: "button", tabIndex: -1, className: "uix-scheduling-calendar__window", "data-overlay-id": overlay.id, "data-pattern": overlay.pattern ?? "solid", "data-global": overlay.global || void 0, "data-kind": overlay.kind, ...continues, style: laneStyle(placed, windowLanes), onClick: () => onSelectOverlay?.(overlay), "aria-label": overlayName(overlay), children: /* @__PURE__ */ (0, import_jsx_runtime89.jsxs)("span", { className: "uix-scheduling-calendar__window-text", children: [
11323
+ overlay.kindLabel && /* @__PURE__ */ (0, import_jsx_runtime89.jsx)("span", { className: "uix-scheduling-calendar__window-kind", children: overlay.kindLabel }),
11324
+ /* @__PURE__ */ (0, import_jsx_runtime89.jsx)("span", { className: "uix-scheduling-calendar__window-name", children: overlay.label }),
11325
+ overlay.scopeLabel && /* @__PURE__ */ (0, import_jsx_runtime89.jsx)("span", { className: "uix-scheduling-calendar__window-scope", children: overlay.scopeLabel })
11113
11326
  ] }) }, `window-${placed.id}`);
11114
11327
  }
11115
11328
  const entry = entryById.get(placed.id);
11116
11329
  if (!entry || countsOnly) return null;
11117
- return /* @__PURE__ */ (0, import_jsx_runtime88.jsx)("button", { className: "uix-scheduling-calendar__entry uix-scheduling-calendar__span", ...entryProps(entry), ...continues, style: laneStyle(placed, windowLanes), children: entryContent(entry, !placed.continuesBefore) }, `span-${placed.id}`);
11330
+ return /* @__PURE__ */ (0, import_jsx_runtime89.jsx)("button", { className: "uix-scheduling-calendar__entry uix-scheduling-calendar__span", ...entryProps(entry), ...continues, style: laneStyle(placed, windowLanes), children: entryContent(entry, !placed.continuesBefore) }, `span-${placed.id}`);
11118
11331
  }),
11119
- hidden > 0 && (onShowMore ? /* @__PURE__ */ (0, import_jsx_runtime88.jsx)("button", { type: "button", tabIndex: -1, className: "uix-scheduling-calendar__rowmore", "data-more-date": rowDays.includes(firstHiddenDay) ? firstHiddenDay : rowDays[0], "aria-label": moreName, onClick: () => onShowMore(firstHiddenDay, picksGiven ? dayEntries[firstHiddenDay] ?? EMPTY_ENTRIES : entriesOn(firstHiddenDay)), children: moreText }) : /* @__PURE__ */ (0, import_jsx_runtime88.jsxs)("span", { className: "uix-scheduling-calendar__rowmore", children: [
11120
- /* @__PURE__ */ (0, import_jsx_runtime88.jsx)("span", { "aria-hidden": "true", children: moreText }),
11121
- /* @__PURE__ */ (0, import_jsx_runtime88.jsx)("span", { className: "uix-visually-hidden", children: moreName })
11332
+ hidden > 0 && (onShowMore ? /* @__PURE__ */ (0, import_jsx_runtime89.jsx)("button", { type: "button", tabIndex: -1, className: "uix-scheduling-calendar__rowmore", "data-more-date": rowDays.includes(firstHiddenDay) ? firstHiddenDay : rowDays[0], "aria-label": moreName, onClick: () => onShowMore(firstHiddenDay, picksGiven ? dayEntries[firstHiddenDay] ?? EMPTY_ENTRIES : entriesOn(firstHiddenDay)), children: moreText }) : /* @__PURE__ */ (0, import_jsx_runtime89.jsxs)("span", { className: "uix-scheduling-calendar__rowmore", children: [
11333
+ /* @__PURE__ */ (0, import_jsx_runtime89.jsx)("span", { "aria-hidden": "true", children: moreText }),
11334
+ /* @__PURE__ */ (0, import_jsx_runtime89.jsx)("span", { className: "uix-visually-hidden", children: moreName })
11122
11335
  ] }))
11123
11336
  ] }, rowDays[0]);
11124
11337
  };
@@ -11129,20 +11342,20 @@ function SchedulingCalendar({
11129
11342
  Object.keys(layout.hiddenByRow ?? {}).length > 0 ? 1 : 0
11130
11343
  )
11131
11344
  } : void 0;
11132
- return /* @__PURE__ */ (0, import_jsx_runtime88.jsxs)("section", { className: cx("uix-scheduling-calendar", className), "aria-label": fillLabel(labels.region, { timeZone }), children: [
11133
- showHeader && /* @__PURE__ */ (0, import_jsx_runtime88.jsxs)("div", { className: "uix-scheduling-calendar__header", children: [
11134
- /* @__PURE__ */ (0, import_jsx_runtime88.jsxs)("div", { children: [
11135
- /* @__PURE__ */ (0, import_jsx_runtime88.jsx)("button", { type: "button", className: "uix-btn uix-btn--ghost uix-btn--sm", onClick: () => movePeriod(-1), disabled: !onAnchorDateChange, children: periodLabel("previous") }),
11136
- /* @__PURE__ */ (0, import_jsx_runtime88.jsx)("button", { type: "button", className: "uix-btn uix-btn--ghost uix-btn--sm", onClick: () => movePeriod(1), disabled: !onAnchorDateChange, children: periodLabel("next") })
11345
+ return /* @__PURE__ */ (0, import_jsx_runtime89.jsxs)("section", { className: cx("uix-scheduling-calendar", className), "aria-label": fillLabel(labels.region, { timeZone }), children: [
11346
+ showHeader && /* @__PURE__ */ (0, import_jsx_runtime89.jsxs)("div", { className: "uix-scheduling-calendar__header", children: [
11347
+ /* @__PURE__ */ (0, import_jsx_runtime89.jsxs)("div", { children: [
11348
+ /* @__PURE__ */ (0, import_jsx_runtime89.jsx)("button", { type: "button", className: "uix-btn uix-btn--ghost uix-btn--sm", onClick: () => movePeriod(-1), disabled: !onAnchorDateChange, children: periodLabel("previous") }),
11349
+ /* @__PURE__ */ (0, import_jsx_runtime89.jsx)("button", { type: "button", className: "uix-btn uix-btn--ghost uix-btn--sm", onClick: () => movePeriod(1), disabled: !onAnchorDateChange, children: periodLabel("next") })
11137
11350
  ] }),
11138
- /* @__PURE__ */ (0, import_jsx_runtime88.jsx)("strong", { children: view === "month" ? dateText(startOfMonth(anchorDate), "month") : view === "day" ? dateText(anchorDate, "day") : `${dateText(weekStart, "day")} \u2013 ${dateText(weekDays[weekDays.length - 1], "day")}` }),
11139
- /* @__PURE__ */ (0, import_jsx_runtime88.jsx)("div", { className: "uix-segmented", role: "group", "aria-label": labels.viewGroup, children: (timeGrid || view === "day" ? ["month", "week", "day", "agenda"] : ["month", "week", "agenda"]).map((option) => /* @__PURE__ */ (0, import_jsx_runtime88.jsx)("button", { type: "button", className: "uix-segmented__option", "aria-pressed": view === option, "data-selected": view === option || void 0, onClick: () => setView(option), children: viewLabel[option] }, option)) })
11351
+ /* @__PURE__ */ (0, import_jsx_runtime89.jsx)("strong", { children: view === "month" ? dateText(startOfMonth(anchorDate), "month") : view === "day" ? dateText(anchorDate, "day") : `${dateText(weekStart, "day")} \u2013 ${dateText(weekDays[weekDays.length - 1], "day")}` }),
11352
+ /* @__PURE__ */ (0, import_jsx_runtime89.jsx)("div", { className: "uix-segmented", role: "group", "aria-label": labels.viewGroup, children: (timeGrid || view === "day" ? ["month", "week", "day", "agenda"] : ["month", "week", "agenda"]).map((option) => /* @__PURE__ */ (0, import_jsx_runtime89.jsx)("button", { type: "button", className: "uix-segmented__option", "aria-pressed": view === option, "data-selected": view === option || void 0, onClick: () => setView(option), children: viewLabel[option] }, option)) })
11140
11353
  ] }),
11141
- notice != null && notice !== false && /* @__PURE__ */ (0, import_jsx_runtime88.jsx)("div", { className: "uix-scheduling-calendar__notice", children: notice }),
11142
- loading ? /* @__PURE__ */ (0, import_jsx_runtime88.jsx)("div", { className: "uix-scheduling-calendar__state", role: "status", children: labels.loading }) : error ? /* @__PURE__ */ (0, import_jsx_runtime88.jsxs)("div", { className: "uix-scheduling-calendar__state", role: "alert", children: [
11143
- /* @__PURE__ */ (0, import_jsx_runtime88.jsx)("p", { children: error }),
11144
- onRetry && /* @__PURE__ */ (0, import_jsx_runtime88.jsx)("button", { type: "button", className: "uix-btn uix-btn--secondary", onClick: onRetry, children: labels.retry })
11145
- ] }) : view === "agenda" && agendaGroups ? /* @__PURE__ */ (0, import_jsx_runtime88.jsx)(
11354
+ notice != null && notice !== false && /* @__PURE__ */ (0, import_jsx_runtime89.jsx)("div", { className: "uix-scheduling-calendar__notice", children: notice }),
11355
+ loading ? /* @__PURE__ */ (0, import_jsx_runtime89.jsx)("div", { className: "uix-scheduling-calendar__state", role: "status", children: labels.loading }) : error ? /* @__PURE__ */ (0, import_jsx_runtime89.jsxs)("div", { className: "uix-scheduling-calendar__state", role: "alert", children: [
11356
+ /* @__PURE__ */ (0, import_jsx_runtime89.jsx)("p", { children: error }),
11357
+ onRetry && /* @__PURE__ */ (0, import_jsx_runtime89.jsx)("button", { type: "button", className: "uix-btn uix-btn--secondary", onClick: onRetry, children: labels.retry })
11358
+ ] }) : view === "agenda" && agendaGroups ? /* @__PURE__ */ (0, import_jsx_runtime89.jsx)(
11146
11359
  SchedulingAgenda,
11147
11360
  {
11148
11361
  groups: agendaGroups,
@@ -11163,22 +11376,22 @@ function SchedulingCalendar({
11163
11376
  onSelectOverlay,
11164
11377
  onShowMore
11165
11378
  }
11166
- ) : view === "agenda" ? /* @__PURE__ */ (0, import_jsx_runtime88.jsx)("div", { ref: flatAgendaRef, className: "uix-scheduling-calendar__agenda", role: "region", "aria-label": labels.agenda, onKeyDown: onFlatAgendaKeyDown, onFocus: onFlatAgendaFocus, children: visibleEntries.length === 0 ? /* @__PURE__ */ (0, import_jsx_runtime88.jsx)("p", { children: labels.agendaEmpty }) : /* @__PURE__ */ (0, import_jsx_runtime88.jsx)("ol", { children: [...visibleEntries].sort((a, b) => a.start.localeCompare(b.start)).map((entry) => {
11379
+ ) : view === "agenda" ? /* @__PURE__ */ (0, import_jsx_runtime89.jsx)("div", { ref: flatAgendaRef, className: "uix-scheduling-calendar__agenda", role: "region", "aria-label": labels.agenda, onKeyDown: onFlatAgendaKeyDown, onFocus: onFlatAgendaFocus, children: visibleEntries.length === 0 ? /* @__PURE__ */ (0, import_jsx_runtime89.jsx)("p", { children: labels.agendaEmpty }) : /* @__PURE__ */ (0, import_jsx_runtime89.jsx)("ol", { children: [...visibleEntries].sort((a, b) => a.start.localeCompare(b.start)).map((entry) => {
11167
11380
  const markers = markersOf(entry);
11168
- return /* @__PURE__ */ (0, import_jsx_runtime88.jsx)("li", { children: /* @__PURE__ */ (0, import_jsx_runtime88.jsxs)("button", { type: "button", "data-item-id": entry.id, "data-highlight": entry.emphasis === "highlight" || void 0, "data-dim": entry.emphasis === "dim" || void 0, "data-band": entry.band ?? "none", "data-status": statusOf(entry), "data-state": entry.state, onClick: () => onSelectEntry?.(entry), children: [
11169
- /* @__PURE__ */ (0, import_jsx_runtime88.jsxs)("span", { children: [
11170
- /* @__PURE__ */ (0, import_jsx_runtime88.jsx)("strong", { children: renderEntry?.(entry) ?? entry.title }),
11171
- /* @__PURE__ */ (0, import_jsx_runtime88.jsxs)("span", { children: [
11381
+ return /* @__PURE__ */ (0, import_jsx_runtime89.jsx)("li", { children: /* @__PURE__ */ (0, import_jsx_runtime89.jsxs)("button", { type: "button", "data-item-id": entry.id, "data-highlight": entry.emphasis === "highlight" || void 0, "data-dim": entry.emphasis === "dim" || void 0, "data-band": entry.band ?? "none", "data-status": statusOf(entry), "data-state": entry.state, onClick: () => onSelectEntry?.(entry), children: [
11382
+ /* @__PURE__ */ (0, import_jsx_runtime89.jsxs)("span", { children: [
11383
+ /* @__PURE__ */ (0, import_jsx_runtime89.jsx)("strong", { children: renderEntry?.(entry) ?? entry.title }),
11384
+ /* @__PURE__ */ (0, import_jsx_runtime89.jsxs)("span", { children: [
11172
11385
  formatInstant(entry.start),
11173
11386
  " \u2013 ",
11174
11387
  formatInstant(entry.end)
11175
11388
  ] }),
11176
- entry.meta && /* @__PURE__ */ (0, import_jsx_runtime88.jsx)("span", { children: entry.meta })
11389
+ entry.meta && /* @__PURE__ */ (0, import_jsx_runtime89.jsx)("span", { children: entry.meta })
11177
11390
  ] }),
11178
- markers.length > 0 && /* @__PURE__ */ (0, import_jsx_runtime88.jsx)("span", { className: "uix-scheduling-calendar__markers", children: markers.map((marker) => /* @__PURE__ */ (0, import_jsx_runtime88.jsx)(Marker, { marker }, marker.id)) }),
11179
- entry.state ? /* @__PURE__ */ (0, import_jsx_runtime88.jsx)(StatusPill, { tone: stateTone(entry.state), children: stateLabel[entry.state] }) : /* @__PURE__ */ (0, import_jsx_runtime88.jsx)("span", { className: "uix-scheduling-calendar__status", children: stateText(entry) })
11391
+ markers.length > 0 && /* @__PURE__ */ (0, import_jsx_runtime89.jsx)("span", { className: "uix-scheduling-calendar__markers", children: markers.map((marker) => /* @__PURE__ */ (0, import_jsx_runtime89.jsx)(Marker, { marker }, marker.id)) }),
11392
+ entry.state ? /* @__PURE__ */ (0, import_jsx_runtime89.jsx)(StatusPill, { tone: stateTone(entry.state), children: stateLabel[entry.state] }) : /* @__PURE__ */ (0, import_jsx_runtime89.jsx)("span", { className: "uix-scheduling-calendar__status", children: stateText(entry) })
11180
11393
  ] }) }, entry.id);
11181
- }) }) }) : timeGridView ? /* @__PURE__ */ (0, import_jsx_runtime88.jsx)(
11394
+ }) }) }) : timeGridView ? /* @__PURE__ */ (0, import_jsx_runtime89.jsx)(
11182
11395
  SchedulingTimeGrid,
11183
11396
  {
11184
11397
  view: view === "day" ? "day" : "week",
@@ -11212,20 +11425,20 @@ function SchedulingCalendar({
11212
11425
  emptyNote,
11213
11426
  nothingToShow
11214
11427
  }
11215
- ) : /* @__PURE__ */ (0, import_jsx_runtime88.jsxs)("div", { ref: gridRef, className: cx("uix-scheduling-calendar__grid", view === "week" && "uix-scheduling-calendar__grid--week"), "data-fixed": fixed || void 0, "data-density": countsOnly ? "counts" : void 0, style: gridStyle, onKeyDown: onGridKeyDown, onFocus: onGridFocus, role: "group", "aria-label": fillLabel(labels.grid, { view: viewLabel[view] }), children: [
11216
- days.slice(0, 7).map((date) => /* @__PURE__ */ (0, import_jsx_runtime88.jsx)("div", { className: "uix-scheduling-calendar__weekday", "aria-hidden": "true", children: dateText(date, "weekday") }, `weekday-${date}`)),
11428
+ ) : /* @__PURE__ */ (0, import_jsx_runtime89.jsxs)("div", { ref: gridRef, className: cx("uix-scheduling-calendar__grid", view === "week" && "uix-scheduling-calendar__grid--week"), "data-fixed": fixed || void 0, "data-density": countsOnly ? "counts" : void 0, style: gridStyle, onKeyDown: onGridKeyDown, onFocus: onGridFocus, role: "group", "aria-label": fillLabel(labels.grid, { view: viewLabel[view] }), children: [
11429
+ days.slice(0, 7).map((date) => /* @__PURE__ */ (0, import_jsx_runtime89.jsx)("div", { className: "uix-scheduling-calendar__weekday", "aria-hidden": "true", children: dateText(date, "weekday") }, `weekday-${date}`)),
11217
11430
  Array.from({ length: days.length / 7 }, (_, row) => renderWeek(row)),
11218
- emptyNote != null && emptyNote !== false && nothingToShow && /* @__PURE__ */ (0, import_jsx_runtime88.jsx)("div", { className: "uix-scheduling-calendar__empty", children: emptyNote })
11431
+ emptyNote != null && emptyNote !== false && nothingToShow && /* @__PURE__ */ (0, import_jsx_runtime89.jsx)("div", { className: "uix-scheduling-calendar__empty", children: emptyNote })
11219
11432
  ] }),
11220
- legend ? (legend.length > 0 || legendCaption != null && legendCaption !== false) && /* @__PURE__ */ (0, import_jsx_runtime88.jsxs)("div", { className: "uix-scheduling-calendar__legend", role: "group", "aria-label": labels.legend, children: [
11221
- legend.length > 0 && /* @__PURE__ */ (0, import_jsx_runtime88.jsx)("ul", { className: "uix-scheduling-calendar__legend-list", children: legend.map((item) => /* @__PURE__ */ (0, import_jsx_runtime88.jsxs)("li", { "data-legend-id": item.id, children: [
11222
- /* @__PURE__ */ (0, import_jsx_runtime88.jsx)("span", { className: "uix-scheduling-calendar__swatch", "aria-hidden": "true", "data-band": item.swatch.band, "data-status": item.swatch.status, "data-pattern": item.swatch.pattern, children: item.swatch.icon }),
11433
+ legend ? (legend.length > 0 || legendCaption != null && legendCaption !== false) && /* @__PURE__ */ (0, import_jsx_runtime89.jsxs)("div", { className: "uix-scheduling-calendar__legend", role: "group", "aria-label": labels.legend, children: [
11434
+ legend.length > 0 && /* @__PURE__ */ (0, import_jsx_runtime89.jsx)("ul", { className: "uix-scheduling-calendar__legend-list", children: legend.map((item) => /* @__PURE__ */ (0, import_jsx_runtime89.jsxs)("li", { "data-legend-id": item.id, children: [
11435
+ /* @__PURE__ */ (0, import_jsx_runtime89.jsx)("span", { className: "uix-scheduling-calendar__swatch", "aria-hidden": "true", "data-band": item.swatch.band, "data-status": item.swatch.status, "data-pattern": item.swatch.pattern, children: item.swatch.icon }),
11223
11436
  item.label
11224
11437
  ] }, item.id)) }),
11225
- legendCaption != null && legendCaption !== false && /* @__PURE__ */ (0, import_jsx_runtime88.jsx)("p", { className: "uix-scheduling-calendar__legend-caption", children: legendCaption })
11226
- ] }) : /* @__PURE__ */ (0, import_jsx_runtime88.jsxs)("div", { className: "uix-scheduling-calendar__legend", role: "group", "aria-label": labels.legend, children: [
11227
- ["scheduled", "conflicted", "in-progress", "blackout-violation"].map((state) => /* @__PURE__ */ (0, import_jsx_runtime88.jsx)("span", { "data-state": state, children: stateLabel[state] }, state)),
11228
- legendCaption != null && legendCaption !== false && /* @__PURE__ */ (0, import_jsx_runtime88.jsx)("p", { className: "uix-scheduling-calendar__legend-caption", children: legendCaption })
11438
+ legendCaption != null && legendCaption !== false && /* @__PURE__ */ (0, import_jsx_runtime89.jsx)("p", { className: "uix-scheduling-calendar__legend-caption", children: legendCaption })
11439
+ ] }) : /* @__PURE__ */ (0, import_jsx_runtime89.jsxs)("div", { className: "uix-scheduling-calendar__legend", role: "group", "aria-label": labels.legend, children: [
11440
+ ["scheduled", "conflicted", "in-progress", "blackout-violation"].map((state) => /* @__PURE__ */ (0, import_jsx_runtime89.jsx)("span", { "data-state": state, children: stateLabel[state] }, state)),
11441
+ legendCaption != null && legendCaption !== false && /* @__PURE__ */ (0, import_jsx_runtime89.jsx)("p", { className: "uix-scheduling-calendar__legend-caption", children: legendCaption })
11229
11442
  ] })
11230
11443
  ] });
11231
11444
  }
@@ -11417,7 +11630,7 @@ function timelineWindow(offsets, top, bottom, options = {}) {
11417
11630
  }
11418
11631
 
11419
11632
  // src/components/SchedulingTimeline.tsx
11420
- var import_jsx_runtime89 = require("react/jsx-runtime");
11633
+ var import_jsx_runtime90 = require("react/jsx-runtime");
11421
11634
  var DEFAULT_SCHEDULING_TIMELINE_LABELS = {
11422
11635
  region: "Schedule timeline in {timeZone}",
11423
11636
  lanes: "Lanes",
@@ -11476,9 +11689,9 @@ function uniqueKeys2(ids) {
11476
11689
  var lanesOf = (target) => target.laneIds !== void 0 ? new Set(target.laneIds) : target.laneId ? /* @__PURE__ */ new Set([target.laneId]) : null;
11477
11690
  function ItemMarker({ marker, showLabel }) {
11478
11691
  const emphasis = marker.emphasis ?? "neutral";
11479
- return /* @__PURE__ */ (0, import_jsx_runtime89.jsxs)("span", { className: "uix-scheduling-timeline__item-marker", "data-emphasis": emphasis, "data-glyph": marker.icon == null ? emphasis : void 0, children: [
11480
- marker.icon != null && /* @__PURE__ */ (0, import_jsx_runtime89.jsx)("span", { className: "uix-scheduling-timeline__item-marker-icon", "aria-hidden": "true", children: marker.icon }),
11481
- /* @__PURE__ */ (0, import_jsx_runtime89.jsx)("span", { className: showLabel ? "uix-scheduling-timeline__item-marker-label" : "uix-visually-hidden", children: marker.label })
11692
+ return /* @__PURE__ */ (0, import_jsx_runtime90.jsxs)("span", { className: "uix-scheduling-timeline__item-marker", "data-emphasis": emphasis, "data-glyph": marker.icon == null ? emphasis : void 0, children: [
11693
+ marker.icon != null && /* @__PURE__ */ (0, import_jsx_runtime90.jsx)("span", { className: "uix-scheduling-timeline__item-marker-icon", "aria-hidden": "true", children: marker.icon }),
11694
+ /* @__PURE__ */ (0, import_jsx_runtime90.jsx)("span", { className: showLabel ? "uix-scheduling-timeline__item-marker-label" : "uix-visually-hidden", children: marker.label })
11482
11695
  ] });
11483
11696
  }
11484
11697
  function SchedulingTimeline({
@@ -12057,17 +12270,17 @@ function SchedulingTimeline({
12057
12270
  "data-scope": scope.scope,
12058
12271
  style: { left: `${pos.left}%`, width: `${pos.width}%`, ...vars2({ "--uix-timeline-clip": scope.clip }) }
12059
12272
  };
12060
- const text = scope.labelTops.map((top) => /* @__PURE__ */ (0, import_jsx_runtime89.jsxs)("span", { className: "uix-scheduling-timeline__overlay-label", style: vars2({ "--uix-timeline-label-top": top }), children: [
12061
- overlay.kindLabel && /* @__PURE__ */ (0, import_jsx_runtime89.jsx)("span", { className: "uix-scheduling-timeline__overlay-kind", children: overlay.kindLabel }),
12062
- /* @__PURE__ */ (0, import_jsx_runtime89.jsx)("span", { className: "uix-scheduling-timeline__overlay-name", children: overlay.label }),
12063
- overlay.scopeLabel && /* @__PURE__ */ (0, import_jsx_runtime89.jsx)("span", { className: "uix-scheduling-timeline__overlay-scope", children: overlay.scopeLabel })
12273
+ const text = scope.labelTops.map((top) => /* @__PURE__ */ (0, import_jsx_runtime90.jsxs)("span", { className: "uix-scheduling-timeline__overlay-label", style: vars2({ "--uix-timeline-label-top": top }), children: [
12274
+ overlay.kindLabel && /* @__PURE__ */ (0, import_jsx_runtime90.jsx)("span", { className: "uix-scheduling-timeline__overlay-kind", children: overlay.kindLabel }),
12275
+ /* @__PURE__ */ (0, import_jsx_runtime90.jsx)("span", { className: "uix-scheduling-timeline__overlay-name", children: overlay.label }),
12276
+ overlay.scopeLabel && /* @__PURE__ */ (0, import_jsx_runtime90.jsx)("span", { className: "uix-scheduling-timeline__overlay-scope", children: overlay.scopeLabel })
12064
12277
  ] }, top));
12065
- return onSelectOverlay ? /* @__PURE__ */ (0, import_jsx_runtime89.jsx)("button", { type: "button", ...shared, "aria-label": overlayName(overlay), onClick: () => onSelectOverlay(overlay), children: text }, key) : /* @__PURE__ */ (0, import_jsx_runtime89.jsx)("span", { ...shared, "aria-hidden": "true", children: text }, key);
12278
+ return onSelectOverlay ? /* @__PURE__ */ (0, import_jsx_runtime90.jsx)("button", { type: "button", ...shared, "aria-label": overlayName(overlay), onClick: () => onSelectOverlay(overlay), children: text }, key) : /* @__PURE__ */ (0, import_jsx_runtime90.jsx)("span", { ...shared, "aria-hidden": "true", children: text }, key);
12066
12279
  };
12067
12280
  const renderMarker2 = (marker, key, scope) => {
12068
12281
  const pos = placeSpan({ start: marker.at, end: marker.at }, range);
12069
12282
  if (!pos || !scope) return null;
12070
- return /* @__PURE__ */ (0, import_jsx_runtime89.jsx)("span", { className: "uix-scheduling-timeline__marker", "data-marker-id": marker.id, "data-scope": scope.scope, style: { left: `${pos.left}%`, ...vars2({ "--uix-timeline-clip": scope.clip }) }, title: marker.label, "aria-hidden": "true" }, key);
12283
+ return /* @__PURE__ */ (0, import_jsx_runtime90.jsx)("span", { className: "uix-scheduling-timeline__marker", "data-marker-id": marker.id, "data-scope": scope.scope, style: { left: `${pos.left}%`, ...vars2({ "--uix-timeline-clip": scope.clip }) }, title: marker.label, "aria-hidden": "true" }, key);
12071
12284
  };
12072
12285
  const overlayKeys = uniqueKeys2(overlays.map((overlay) => overlay.id));
12073
12286
  const markerKeys = uniqueKeys2(markers.map((marker) => marker.id));
@@ -12092,7 +12305,7 @@ function SchedulingTimeline({
12092
12305
  const movable = canMove(item);
12093
12306
  const described = movable || canResize(item);
12094
12307
  const itemMarkers = markersOf(item);
12095
- return /* @__PURE__ */ (0, import_jsx_runtime89.jsx)("li", { className: "uix-scheduling-timeline__slot", style: { left: `${shown.left}%`, width: `${shown.width}%`, ...vars2({ "--uix-timeline-row": p.row }) }, children: /* @__PURE__ */ (0, import_jsx_runtime89.jsxs)(
12308
+ return /* @__PURE__ */ (0, import_jsx_runtime90.jsx)("li", { className: "uix-scheduling-timeline__slot", style: { left: `${shown.left}%`, width: `${shown.width}%`, ...vars2({ "--uix-timeline-row": p.row }) }, children: /* @__PURE__ */ (0, import_jsx_runtime90.jsxs)(
12096
12309
  "button",
12097
12310
  {
12098
12311
  type: "button",
@@ -12130,9 +12343,9 @@ function SchedulingTimeline({
12130
12343
  onSelectItem?.(item);
12131
12344
  },
12132
12345
  children: [
12133
- /* @__PURE__ */ (0, import_jsx_runtime89.jsx)("span", { className: "uix-scheduling-timeline__item-title", children: renderItem?.(item) ?? item.title }),
12134
- item.meta && /* @__PURE__ */ (0, import_jsx_runtime89.jsx)("span", { className: "uix-scheduling-timeline__item-meta", children: item.meta }),
12135
- itemMarkers.length > 0 && /* @__PURE__ */ (0, import_jsx_runtime89.jsx)("span", { className: "uix-scheduling-timeline__item-markers", children: itemMarkers.map((marker) => /* @__PURE__ */ (0, import_jsx_runtime89.jsx)(ItemMarker, { marker }, marker.id)) })
12346
+ /* @__PURE__ */ (0, import_jsx_runtime90.jsx)("span", { className: "uix-scheduling-timeline__item-title", children: renderItem?.(item) ?? item.title }),
12347
+ item.meta && /* @__PURE__ */ (0, import_jsx_runtime90.jsx)("span", { className: "uix-scheduling-timeline__item-meta", children: item.meta }),
12348
+ itemMarkers.length > 0 && /* @__PURE__ */ (0, import_jsx_runtime90.jsx)("span", { className: "uix-scheduling-timeline__item-markers", children: itemMarkers.map((marker) => /* @__PURE__ */ (0, import_jsx_runtime90.jsx)(ItemMarker, { marker }, marker.id)) })
12136
12349
  ]
12137
12350
  }
12138
12351
  ) }, row.keys[index]);
@@ -12140,41 +12353,41 @@ function SchedulingTimeline({
12140
12353
  const renderRow = (row, rowIndex) => {
12141
12354
  if (row.kind === "head") {
12142
12355
  const { group, collapsed } = row;
12143
- return /* @__PURE__ */ (0, import_jsx_runtime89.jsxs)("div", { className: cx("uix-scheduling-timeline__row", "uix-scheduling-timeline__row--group", collapsed && "uix-scheduling-timeline__row--summary"), "data-row-key": row.key, "data-group-id": group.id, "data-collapsed": collapsed || void 0, "data-strip": strips.has(rowIndex) || void 0, children: [
12144
- /* @__PURE__ */ (0, import_jsx_runtime89.jsx)("div", { className: "uix-scheduling-timeline__group-head", children: /* @__PURE__ */ (0, import_jsx_runtime89.jsxs)("div", { className: "uix-scheduling-timeline__group-label", children: [
12145
- /* @__PURE__ */ (0, import_jsx_runtime89.jsxs)("button", { type: "button", className: "uix-scheduling-timeline__group-toggle", "aria-expanded": !collapsed, onClick: () => toggleGroup(group), children: [
12146
- /* @__PURE__ */ (0, import_jsx_runtime89.jsx)("span", { className: "uix-scheduling-timeline__group-chevron", "aria-hidden": "true" }),
12147
- /* @__PURE__ */ (0, import_jsx_runtime89.jsx)("span", { className: "uix-scheduling-timeline__group-name", id: `${id}-group-${row.groupIndex}`, children: group.label })
12356
+ return /* @__PURE__ */ (0, import_jsx_runtime90.jsxs)("div", { className: cx("uix-scheduling-timeline__row", "uix-scheduling-timeline__row--group", collapsed && "uix-scheduling-timeline__row--summary"), "data-row-key": row.key, "data-group-id": group.id, "data-collapsed": collapsed || void 0, "data-strip": strips.has(rowIndex) || void 0, children: [
12357
+ /* @__PURE__ */ (0, import_jsx_runtime90.jsx)("div", { className: "uix-scheduling-timeline__group-head", children: /* @__PURE__ */ (0, import_jsx_runtime90.jsxs)("div", { className: "uix-scheduling-timeline__group-label", children: [
12358
+ /* @__PURE__ */ (0, import_jsx_runtime90.jsxs)("button", { type: "button", className: "uix-scheduling-timeline__group-toggle", "aria-expanded": !collapsed, onClick: () => toggleGroup(group), children: [
12359
+ /* @__PURE__ */ (0, import_jsx_runtime90.jsx)("span", { className: "uix-scheduling-timeline__group-chevron", "aria-hidden": "true" }),
12360
+ /* @__PURE__ */ (0, import_jsx_runtime90.jsx)("span", { className: "uix-scheduling-timeline__group-name", id: `${id}-group-${row.groupIndex}`, children: group.label })
12148
12361
  ] }),
12149
- group.meta != null && /* @__PURE__ */ (0, import_jsx_runtime89.jsx)("span", { className: "uix-scheduling-timeline__group-meta", children: group.meta }),
12150
- collapsed && group.summary && /* @__PURE__ */ (0, import_jsx_runtime89.jsxs)("span", { className: "uix-scheduling-timeline__group-summary", children: [
12151
- /* @__PURE__ */ (0, import_jsx_runtime89.jsx)("span", { className: "uix-scheduling-timeline__group-count", children: fillLabel(labels.groupSummary, { count: group.summary.count }) }),
12152
- group.summary.markers && group.summary.markers.length > 0 && /* @__PURE__ */ (0, import_jsx_runtime89.jsx)("span", { className: "uix-scheduling-timeline__item-markers", children: group.summary.markers.map((marker) => /* @__PURE__ */ (0, import_jsx_runtime89.jsx)(ItemMarker, { marker, showLabel: true }, marker.id)) })
12362
+ group.meta != null && /* @__PURE__ */ (0, import_jsx_runtime90.jsx)("span", { className: "uix-scheduling-timeline__group-meta", children: group.meta }),
12363
+ collapsed && group.summary && /* @__PURE__ */ (0, import_jsx_runtime90.jsxs)("span", { className: "uix-scheduling-timeline__group-summary", children: [
12364
+ /* @__PURE__ */ (0, import_jsx_runtime90.jsx)("span", { className: "uix-scheduling-timeline__group-count", children: fillLabel(labels.groupSummary, { count: group.summary.count }) }),
12365
+ group.summary.markers && group.summary.markers.length > 0 && /* @__PURE__ */ (0, import_jsx_runtime90.jsx)("span", { className: "uix-scheduling-timeline__item-markers", children: group.summary.markers.map((marker) => /* @__PURE__ */ (0, import_jsx_runtime90.jsx)(ItemMarker, { marker, showLabel: true }, marker.id)) })
12153
12366
  ] })
12154
12367
  ] }) }),
12155
- strips.has(rowIndex) && /* @__PURE__ */ (0, import_jsx_runtime89.jsx)("div", { className: "uix-scheduling-timeline__group-strip", "aria-hidden": "true" })
12368
+ strips.has(rowIndex) && /* @__PURE__ */ (0, import_jsx_runtime90.jsx)("div", { className: "uix-scheduling-timeline__group-strip", "aria-hidden": "true" })
12156
12369
  ] }, row.key);
12157
12370
  }
12158
12371
  const { lane } = row;
12159
12372
  const laneLabelId = `${id}-lane-${row.laneIndex}`;
12160
12373
  const ghostPlaced = ghost ? row.placed.find((p) => p.item.id === ghost.id) : void 0;
12161
12374
  const ghostPos = ghost && ghostPlaced && rowOfItem.get(ghost.id) === rowIndex ? placeSpan(ghost.proposal, range) : null;
12162
- return /* @__PURE__ */ (0, import_jsx_runtime89.jsxs)("div", { className: "uix-scheduling-timeline__row", "data-row-key": row.key, "data-lane-id": lane.id, style: vars2({ "--uix-timeline-rows": row.subRows }), children: [
12163
- /* @__PURE__ */ (0, import_jsx_runtime89.jsxs)("div", { className: "uix-scheduling-timeline__lane-label", id: laneLabelId, children: [
12164
- /* @__PURE__ */ (0, import_jsx_runtime89.jsx)("span", { className: "uix-scheduling-timeline__lane-name", children: lane.label }),
12165
- lane.meta != null && /* @__PURE__ */ (0, import_jsx_runtime89.jsx)("span", { className: "uix-scheduling-timeline__lane-meta", children: lane.meta })
12375
+ return /* @__PURE__ */ (0, import_jsx_runtime90.jsxs)("div", { className: "uix-scheduling-timeline__row", "data-row-key": row.key, "data-lane-id": lane.id, style: vars2({ "--uix-timeline-rows": row.subRows }), children: [
12376
+ /* @__PURE__ */ (0, import_jsx_runtime90.jsxs)("div", { className: "uix-scheduling-timeline__lane-label", id: laneLabelId, children: [
12377
+ /* @__PURE__ */ (0, import_jsx_runtime90.jsx)("span", { className: "uix-scheduling-timeline__lane-name", children: lane.label }),
12378
+ lane.meta != null && /* @__PURE__ */ (0, import_jsx_runtime90.jsx)("span", { className: "uix-scheduling-timeline__lane-meta", children: lane.meta })
12166
12379
  ] }),
12167
- /* @__PURE__ */ (0, import_jsx_runtime89.jsxs)("div", { className: "uix-scheduling-timeline__track", style: trackStyle, children: [
12380
+ /* @__PURE__ */ (0, import_jsx_runtime90.jsxs)("div", { className: "uix-scheduling-timeline__track", style: trackStyle, children: [
12168
12381
  overlays.map((overlay, index) => !inLayer(overlay) && lanesOf(overlay).has(lane.id) ? renderOverlay(overlay, overlayKeys[index], IN_LANE) : null),
12169
12382
  markers.map((marker, index) => !inLayer(marker) && lanesOf(marker).has(lane.id) ? renderMarker2(marker, markerKeys[index], IN_LANE) : null),
12170
- /* @__PURE__ */ (0, import_jsx_runtime89.jsx)("ul", { className: "uix-scheduling-timeline__items", "aria-labelledby": row.groupIndex === void 0 ? laneLabelId : `${id}-group-${row.groupIndex} ${laneLabelId}`, children: renderItems(row, rowIndex) }),
12171
- ghostPos && /* @__PURE__ */ (0, import_jsx_runtime89.jsx)("span", { className: "uix-scheduling-timeline__ghost", "aria-hidden": "true", "data-sent": ghost?.source === "sent" || void 0, style: { left: `${ghostPos.left}%`, width: `${ghostPos.width}%`, ...vars2({ "--uix-timeline-row": ghostPlaced.row }) } })
12383
+ /* @__PURE__ */ (0, import_jsx_runtime90.jsx)("ul", { className: "uix-scheduling-timeline__items", "aria-labelledby": row.groupIndex === void 0 ? laneLabelId : `${id}-group-${row.groupIndex} ${laneLabelId}`, children: renderItems(row, rowIndex) }),
12384
+ ghostPos && /* @__PURE__ */ (0, import_jsx_runtime90.jsx)("span", { className: "uix-scheduling-timeline__ghost", "aria-hidden": "true", "data-sent": ghost?.source === "sent" || void 0, style: { left: `${ghostPos.left}%`, width: `${ghostPos.width}%`, ...vars2({ "--uix-timeline-row": ghostPlaced.row }) } })
12172
12385
  ] })
12173
12386
  ] }, row.key);
12174
12387
  };
12175
12388
  const body = [];
12176
12389
  let cursor = 0;
12177
- const spacer = (from, to) => /* @__PURE__ */ (0, import_jsx_runtime89.jsx)("div", { className: "uix-scheduling-timeline__spacer", "aria-hidden": "true", style: { height: extentCss(between(extents[from], extents[to])) } }, `spacer-${from}`);
12390
+ const spacer = (from, to) => /* @__PURE__ */ (0, import_jsx_runtime90.jsx)("div", { className: "uix-scheduling-timeline__spacer", "aria-hidden": "true", style: { height: extentCss(between(extents[from], extents[to])) } }, `spacer-${from}`);
12178
12391
  for (const index of mounted) {
12179
12392
  if (index > cursor) body.push(spacer(cursor, index));
12180
12393
  body.push(renderRow(rows[index], index));
@@ -12182,7 +12395,7 @@ function SchedulingTimeline({
12182
12395
  }
12183
12396
  if (cursor < rows.length) body.push(spacer(cursor, rows.length));
12184
12397
  const listed = onSelectOverlay ? EMPTY_OVERLAYS2 : overlays;
12185
- return /* @__PURE__ */ (0, import_jsx_runtime89.jsxs)(
12398
+ return /* @__PURE__ */ (0, import_jsx_runtime90.jsxs)(
12186
12399
  "section",
12187
12400
  {
12188
12401
  ref: rootRef,
@@ -12197,45 +12410,45 @@ function SchedulingTimeline({
12197
12410
  }
12198
12411
  },
12199
12412
  children: [
12200
- notice != null && notice !== false && /* @__PURE__ */ (0, import_jsx_runtime89.jsx)("div", { className: "uix-scheduling-timeline__notice", children: notice }),
12201
- loading ? /* @__PURE__ */ (0, import_jsx_runtime89.jsx)("div", { className: "uix-scheduling-timeline__state", role: "status", children: labels.loading }) : error ? /* @__PURE__ */ (0, import_jsx_runtime89.jsxs)("div", { className: "uix-scheduling-timeline__state", role: "alert", children: [
12202
- /* @__PURE__ */ (0, import_jsx_runtime89.jsx)("p", { children: error }),
12203
- onRetry && /* @__PURE__ */ (0, import_jsx_runtime89.jsx)("button", { type: "button", className: "uix-btn uix-btn--secondary", onClick: onRetry, children: labels.retry })
12204
- ] }) : /* @__PURE__ */ (0, import_jsx_runtime89.jsxs)(import_jsx_runtime89.Fragment, { children: [
12205
- (listed.length > 0 || markers.length > 0) && /* @__PURE__ */ (0, import_jsx_runtime89.jsxs)("div", { className: "uix-visually-hidden", children: [
12206
- /* @__PURE__ */ (0, import_jsx_runtime89.jsx)("p", { id: `${id}-windows`, children: labels.windows }),
12207
- /* @__PURE__ */ (0, import_jsx_runtime89.jsxs)("ul", { "aria-labelledby": `${id}-windows`, children: [
12208
- listed.map((o, index) => /* @__PURE__ */ (0, import_jsx_runtime89.jsx)("li", { children: o.accessibleName ?? /* @__PURE__ */ (0, import_jsx_runtime89.jsxs)(import_jsx_runtime89.Fragment, { children: [
12413
+ notice != null && notice !== false && /* @__PURE__ */ (0, import_jsx_runtime90.jsx)("div", { className: "uix-scheduling-timeline__notice", children: notice }),
12414
+ loading ? /* @__PURE__ */ (0, import_jsx_runtime90.jsx)("div", { className: "uix-scheduling-timeline__state", role: "status", children: labels.loading }) : error ? /* @__PURE__ */ (0, import_jsx_runtime90.jsxs)("div", { className: "uix-scheduling-timeline__state", role: "alert", children: [
12415
+ /* @__PURE__ */ (0, import_jsx_runtime90.jsx)("p", { children: error }),
12416
+ onRetry && /* @__PURE__ */ (0, import_jsx_runtime90.jsx)("button", { type: "button", className: "uix-btn uix-btn--secondary", onClick: onRetry, children: labels.retry })
12417
+ ] }) : /* @__PURE__ */ (0, import_jsx_runtime90.jsxs)(import_jsx_runtime90.Fragment, { children: [
12418
+ (listed.length > 0 || markers.length > 0) && /* @__PURE__ */ (0, import_jsx_runtime90.jsxs)("div", { className: "uix-visually-hidden", children: [
12419
+ /* @__PURE__ */ (0, import_jsx_runtime90.jsx)("p", { id: `${id}-windows`, children: labels.windows }),
12420
+ /* @__PURE__ */ (0, import_jsx_runtime90.jsxs)("ul", { "aria-labelledby": `${id}-windows`, children: [
12421
+ listed.map((o, index) => /* @__PURE__ */ (0, import_jsx_runtime90.jsx)("li", { children: o.accessibleName ?? /* @__PURE__ */ (0, import_jsx_runtime90.jsxs)(import_jsx_runtime90.Fragment, { children: [
12209
12422
  o.kindLabel === void 0 && o.kind ? `${labels.overlays[o.kind]}: ${o.label}${o.scopeLabel ? `, ${o.scopeLabel}` : ""}` : overlayWords(o),
12210
12423
  ", ",
12211
12424
  fmtInstant(o.start),
12212
12425
  " \u2013 ",
12213
12426
  fmtInstant(o.end)
12214
12427
  ] }) }, overlayKeys[index])),
12215
- markers.map((m, index) => /* @__PURE__ */ (0, import_jsx_runtime89.jsxs)("li", { children: [
12428
+ markers.map((m, index) => /* @__PURE__ */ (0, import_jsx_runtime90.jsxs)("li", { children: [
12216
12429
  m.label,
12217
12430
  ", ",
12218
12431
  fmtInstant(m.at)
12219
12432
  ] }, markerKeys[index]))
12220
12433
  ] })
12221
12434
  ] }),
12222
- /* @__PURE__ */ (0, import_jsx_runtime89.jsxs)("div", { ref: setScroller, className: "uix-scheduling-timeline__scroller", "data-virtual": virtual || void 0, "data-scroll-y": maxHeight !== void 0 || void 0, style: maxHeight !== void 0 ? { maxHeight } : void 0, children: [
12223
- /* @__PURE__ */ (0, import_jsx_runtime89.jsxs)("div", { className: "uix-scheduling-timeline__grid", "data-sub-ticks": minorTicks.length > 0 || void 0, children: [
12224
- /* @__PURE__ */ (0, import_jsx_runtime89.jsxs)("div", { className: "uix-scheduling-timeline__row uix-scheduling-timeline__row--axis", "aria-hidden": "true", children: [
12225
- /* @__PURE__ */ (0, import_jsx_runtime89.jsx)("div", { className: "uix-scheduling-timeline__lane-label", children: labels.lanes }),
12226
- /* @__PURE__ */ (0, import_jsx_runtime89.jsxs)("div", { className: "uix-scheduling-timeline__track uix-scheduling-timeline__axis", style: trackStyle, children: [
12227
- ticks.map((tick) => /* @__PURE__ */ (0, import_jsx_runtime89.jsx)("span", { className: "uix-scheduling-timeline__tick", "data-major": tick.major || void 0, style: { left: `${tick.offset}%` }, children: tick.offset < 100 && /* @__PURE__ */ (0, import_jsx_runtime89.jsxs)("span", { className: "uix-scheduling-timeline__tick-label", children: [
12435
+ /* @__PURE__ */ (0, import_jsx_runtime90.jsxs)("div", { ref: setScroller, className: "uix-scheduling-timeline__scroller", "data-virtual": virtual || void 0, "data-scroll-y": maxHeight !== void 0 || void 0, style: maxHeight !== void 0 ? { maxHeight } : void 0, children: [
12436
+ /* @__PURE__ */ (0, import_jsx_runtime90.jsxs)("div", { className: "uix-scheduling-timeline__grid", "data-sub-ticks": minorTicks.length > 0 || void 0, children: [
12437
+ /* @__PURE__ */ (0, import_jsx_runtime90.jsxs)("div", { className: "uix-scheduling-timeline__row uix-scheduling-timeline__row--axis", "aria-hidden": "true", children: [
12438
+ /* @__PURE__ */ (0, import_jsx_runtime90.jsx)("div", { className: "uix-scheduling-timeline__lane-label", children: labels.lanes }),
12439
+ /* @__PURE__ */ (0, import_jsx_runtime90.jsxs)("div", { className: "uix-scheduling-timeline__track uix-scheduling-timeline__axis", style: trackStyle, children: [
12440
+ ticks.map((tick) => /* @__PURE__ */ (0, import_jsx_runtime90.jsx)("span", { className: "uix-scheduling-timeline__tick", "data-major": tick.major || void 0, style: { left: `${tick.offset}%` }, children: tick.offset < 100 && /* @__PURE__ */ (0, import_jsx_runtime90.jsxs)("span", { className: "uix-scheduling-timeline__tick-label", children: [
12228
12441
  fmtTick(tick.at),
12229
- tick.offsetLabel && /* @__PURE__ */ (0, import_jsx_runtime89.jsx)("span", { className: "uix-scheduling-timeline__tick-offset", children: tick.offsetLabel })
12442
+ tick.offsetLabel && /* @__PURE__ */ (0, import_jsx_runtime90.jsx)("span", { className: "uix-scheduling-timeline__tick-offset", children: tick.offsetLabel })
12230
12443
  ] }) }, tick.at)),
12231
- minorTicks.map((tick) => /* @__PURE__ */ (0, import_jsx_runtime89.jsx)("span", { className: "uix-scheduling-timeline__tick", "data-minor": "true", style: { left: `${tick.offset}%` }, children: /* @__PURE__ */ (0, import_jsx_runtime89.jsx)("span", { className: "uix-scheduling-timeline__tick-label", children: formatTick?.(new Date(tick.at), "hour") ?? tick.label }) }, `minor-${tick.at}`))
12444
+ minorTicks.map((tick) => /* @__PURE__ */ (0, import_jsx_runtime90.jsx)("span", { className: "uix-scheduling-timeline__tick", "data-minor": "true", style: { left: `${tick.offset}%` }, children: /* @__PURE__ */ (0, import_jsx_runtime90.jsx)("span", { className: "uix-scheduling-timeline__tick-label", children: formatTick?.(new Date(tick.at), "hour") ?? tick.label }) }, `minor-${tick.at}`))
12232
12445
  ] })
12233
12446
  ] }),
12234
- columnNoteList.length > 0 && /* @__PURE__ */ (0, import_jsx_runtime89.jsxs)("div", { className: "uix-scheduling-timeline__row uix-scheduling-timeline__row--notes", children: [
12235
- /* @__PURE__ */ (0, import_jsx_runtime89.jsx)("div", { className: "uix-scheduling-timeline__lane-label" }),
12236
- /* @__PURE__ */ (0, import_jsx_runtime89.jsx)("div", { className: "uix-scheduling-timeline__track", style: trackStyle, children: columnNoteList.map(({ date, node, pos }) => /* @__PURE__ */ (0, import_jsx_runtime89.jsx)("div", { className: "uix-scheduling-timeline__column-note", "data-date": date, style: { left: `${pos.left}%`, width: `${pos.width}%` }, children: node }, date)) })
12447
+ columnNoteList.length > 0 && /* @__PURE__ */ (0, import_jsx_runtime90.jsxs)("div", { className: "uix-scheduling-timeline__row uix-scheduling-timeline__row--notes", children: [
12448
+ /* @__PURE__ */ (0, import_jsx_runtime90.jsx)("div", { className: "uix-scheduling-timeline__lane-label" }),
12449
+ /* @__PURE__ */ (0, import_jsx_runtime90.jsx)("div", { className: "uix-scheduling-timeline__track", style: trackStyle, children: columnNoteList.map(({ date, node, pos }) => /* @__PURE__ */ (0, import_jsx_runtime90.jsx)("div", { className: "uix-scheduling-timeline__column-note", "data-date": date, style: { left: `${pos.left}%`, width: `${pos.width}%` }, children: node }, date)) })
12237
12450
  ] }),
12238
- /* @__PURE__ */ (0, import_jsx_runtime89.jsxs)(
12451
+ /* @__PURE__ */ (0, import_jsx_runtime90.jsxs)(
12239
12452
  "div",
12240
12453
  {
12241
12454
  ref: bodyRef,
@@ -12245,15 +12458,15 @@ function SchedulingTimeline({
12245
12458
  if (!event.currentTarget.contains(event.relatedTarget)) setFocusRowKey(null);
12246
12459
  },
12247
12460
  children: [
12248
- /* @__PURE__ */ (0, import_jsx_runtime89.jsxs)("div", { className: "uix-scheduling-timeline__layer", children: [
12249
- /* @__PURE__ */ (0, import_jsx_runtime89.jsx)("div", { className: "uix-scheduling-timeline__lane-label", "aria-hidden": "true" }),
12250
- /* @__PURE__ */ (0, import_jsx_runtime89.jsxs)("div", { ref: setLayerTrack, className: "uix-scheduling-timeline__track", style: trackStyle, children: [
12251
- /* @__PURE__ */ (0, import_jsx_runtime89.jsx)("span", { ref: barMinRef, className: "uix-scheduling-timeline__bar-min", "aria-hidden": "true" }),
12252
- ticks.map((tick) => /* @__PURE__ */ (0, import_jsx_runtime89.jsx)("span", { className: "uix-scheduling-timeline__gridline", "data-major": tick.major || void 0, style: { left: `${tick.offset}%` }, "aria-hidden": "true" }, tick.at)),
12253
- minorTicks.map((tick) => /* @__PURE__ */ (0, import_jsx_runtime89.jsx)("span", { className: "uix-scheduling-timeline__gridline", "data-minor": "true", style: { left: `${tick.offset}%` }, "aria-hidden": "true" }, `minor-${tick.at}`)),
12461
+ /* @__PURE__ */ (0, import_jsx_runtime90.jsxs)("div", { className: "uix-scheduling-timeline__layer", children: [
12462
+ /* @__PURE__ */ (0, import_jsx_runtime90.jsx)("div", { className: "uix-scheduling-timeline__lane-label", "aria-hidden": "true" }),
12463
+ /* @__PURE__ */ (0, import_jsx_runtime90.jsxs)("div", { ref: setLayerTrack, className: "uix-scheduling-timeline__track", style: trackStyle, children: [
12464
+ /* @__PURE__ */ (0, import_jsx_runtime90.jsx)("span", { ref: barMinRef, className: "uix-scheduling-timeline__bar-min", "aria-hidden": "true" }),
12465
+ ticks.map((tick) => /* @__PURE__ */ (0, import_jsx_runtime90.jsx)("span", { className: "uix-scheduling-timeline__gridline", "data-major": tick.major || void 0, style: { left: `${tick.offset}%` }, "aria-hidden": "true" }, tick.at)),
12466
+ minorTicks.map((tick) => /* @__PURE__ */ (0, import_jsx_runtime90.jsx)("span", { className: "uix-scheduling-timeline__gridline", "data-minor": "true", style: { left: `${tick.offset}%` }, "aria-hidden": "true" }, `minor-${tick.at}`)),
12254
12467
  overlays.map((overlay, index) => inLayer(overlay) ? renderOverlay(overlay, overlayKeys[index], scopeOf(lanesOf(overlay))) : null),
12255
12468
  markers.map((marker, index) => inLayer(marker) ? renderMarker2(marker, markerKeys[index], scopeOf(lanesOf(marker))) : null),
12256
- nowPos && /* @__PURE__ */ (0, import_jsx_runtime89.jsx)("span", { className: "uix-scheduling-timeline__now", style: { left: `${nowPos.left}%` }, "aria-hidden": "true", children: /* @__PURE__ */ (0, import_jsx_runtime89.jsx)("span", { className: "uix-scheduling-timeline__now-label", children: labels.now }) })
12469
+ nowPos && /* @__PURE__ */ (0, import_jsx_runtime90.jsx)("span", { className: "uix-scheduling-timeline__now", style: { left: `${nowPos.left}%` }, "aria-hidden": "true", children: /* @__PURE__ */ (0, import_jsx_runtime90.jsx)("span", { className: "uix-scheduling-timeline__now-label", children: labels.now }) })
12257
12470
  ] })
12258
12471
  ] }),
12259
12472
  body
@@ -12261,16 +12474,16 @@ function SchedulingTimeline({
12261
12474
  }
12262
12475
  )
12263
12476
  ] }),
12264
- virtual && /* @__PURE__ */ (0, import_jsx_runtime89.jsxs)("span", { ref: probeRef, className: "uix-scheduling-timeline__probe", "aria-hidden": "true", children: [
12265
- /* @__PURE__ */ (0, import_jsx_runtime89.jsx)("span", {}),
12266
- /* @__PURE__ */ (0, import_jsx_runtime89.jsx)("span", {}),
12267
- /* @__PURE__ */ (0, import_jsx_runtime89.jsx)("span", {})
12477
+ virtual && /* @__PURE__ */ (0, import_jsx_runtime90.jsxs)("span", { ref: probeRef, className: "uix-scheduling-timeline__probe", "aria-hidden": "true", children: [
12478
+ /* @__PURE__ */ (0, import_jsx_runtime90.jsx)("span", {}),
12479
+ /* @__PURE__ */ (0, import_jsx_runtime90.jsx)("span", {}),
12480
+ /* @__PURE__ */ (0, import_jsx_runtime90.jsx)("span", {})
12268
12481
  ] })
12269
12482
  ] }),
12270
- nothingToShow && /* @__PURE__ */ (0, import_jsx_runtime89.jsx)("p", { className: "uix-scheduling-timeline__empty", children: labels.empty })
12483
+ nothingToShow && /* @__PURE__ */ (0, import_jsx_runtime90.jsx)("p", { className: "uix-scheduling-timeline__empty", children: labels.empty })
12271
12484
  ] }),
12272
- hint && /* @__PURE__ */ (0, import_jsx_runtime89.jsx)("span", { id: hintId, className: "uix-visually-hidden", children: hint }),
12273
- /* @__PURE__ */ (0, import_jsx_runtime89.jsx)("span", { className: "uix-visually-hidden", role: "status", "aria-live": "polite", children: announcement })
12485
+ hint && /* @__PURE__ */ (0, import_jsx_runtime90.jsx)("span", { id: hintId, className: "uix-visually-hidden", children: hint }),
12486
+ /* @__PURE__ */ (0, import_jsx_runtime90.jsx)("span", { className: "uix-visually-hidden", role: "status", "aria-live": "polite", children: announcement })
12274
12487
  ]
12275
12488
  }
12276
12489
  );
@@ -12352,7 +12565,7 @@ function timeZoneName(timeZone, date, locale) {
12352
12565
 
12353
12566
  // src/components/DateFieldParts.tsx
12354
12567
  var import_react65 = require("react");
12355
- var import_jsx_runtime90 = require("react/jsx-runtime");
12568
+ var import_jsx_runtime91 = require("react/jsx-runtime");
12356
12569
  var localDateKey = (now = /* @__PURE__ */ new Date()) => `${now.getFullYear().toString().padStart(4, "0")}-${(now.getMonth() + 1).toString().padStart(2, "0")}-${now.getDate().toString().padStart(2, "0")}`;
12357
12570
  var utc = (date) => /* @__PURE__ */ new Date(`${date}T00:00:00Z`);
12358
12571
  var monthLabel = (date, locale) => new Intl.DateTimeFormat(locale, { month: "long", year: "numeric", timeZone: "UTC" }).format(utc(date));
@@ -12496,22 +12709,22 @@ function MonthCalendar({
12496
12709
  };
12497
12710
  const atMin = !!min && month <= startOfMonth(min);
12498
12711
  const atMax = !!max && month >= startOfMonth(max);
12499
- return /* @__PURE__ */ (0, import_jsx_runtime90.jsxs)("div", { className: "uix-date-picker__calendar", children: [
12500
- /* @__PURE__ */ (0, import_jsx_runtime90.jsxs)("div", { className: "uix-date-picker__nav", children: [
12501
- /* @__PURE__ */ (0, import_jsx_runtime90.jsx)("button", { type: "button", className: "uix-date-picker__nav-btn", "aria-label": labels.previousMonth, "aria-disabled": atMin || void 0, onClick: () => {
12712
+ return /* @__PURE__ */ (0, import_jsx_runtime91.jsxs)("div", { className: "uix-date-picker__calendar", children: [
12713
+ /* @__PURE__ */ (0, import_jsx_runtime91.jsxs)("div", { className: "uix-date-picker__nav", children: [
12714
+ /* @__PURE__ */ (0, import_jsx_runtime91.jsx)("button", { type: "button", className: "uix-date-picker__nav-btn", "aria-label": labels.previousMonth, "aria-disabled": atMin || void 0, onClick: () => {
12502
12715
  if (!atMin) showMonth(-1);
12503
- }, children: /* @__PURE__ */ (0, import_jsx_runtime90.jsx)(ChevronLeftIcon, { size: "sm" }) }),
12504
- /* @__PURE__ */ (0, import_jsx_runtime90.jsx)("span", { className: "uix-date-picker__month", "aria-live": "polite", children: monthLabel(month, locale) }),
12505
- /* @__PURE__ */ (0, import_jsx_runtime90.jsx)("button", { type: "button", className: "uix-date-picker__nav-btn", "aria-label": labels.nextMonth, "aria-disabled": atMax || void 0, onClick: () => {
12716
+ }, children: /* @__PURE__ */ (0, import_jsx_runtime91.jsx)(ChevronLeftIcon, { size: "sm" }) }),
12717
+ /* @__PURE__ */ (0, import_jsx_runtime91.jsx)("span", { className: "uix-date-picker__month", "aria-live": "polite", children: monthLabel(month, locale) }),
12718
+ /* @__PURE__ */ (0, import_jsx_runtime91.jsx)("button", { type: "button", className: "uix-date-picker__nav-btn", "aria-label": labels.nextMonth, "aria-disabled": atMax || void 0, onClick: () => {
12506
12719
  if (!atMax) showMonth(1);
12507
- }, children: /* @__PURE__ */ (0, import_jsx_runtime90.jsx)(ChevronRightIcon, { size: "sm" }) })
12720
+ }, children: /* @__PURE__ */ (0, import_jsx_runtime91.jsx)(ChevronRightIcon, { size: "sm" }) })
12508
12721
  ] }),
12509
- /* @__PURE__ */ (0, import_jsx_runtime90.jsx)("div", { className: "uix-date-range-picker__weekdays", "aria-hidden": "true", children: weekdays.map((day, index) => /* @__PURE__ */ (0, import_jsx_runtime90.jsx)("span", { children: day }, index)) }),
12510
- /* @__PURE__ */ (0, import_jsx_runtime90.jsxs)("div", { ref: gridRef, className: "uix-date-range-picker__grid uix-date-picker__grid", role: "group", "aria-label": monthLabel(month, locale), children: [
12511
- Array.from({ length: blanks }, (_, index) => /* @__PURE__ */ (0, import_jsx_runtime90.jsx)("span", { "aria-hidden": "true" }, `blank-${index}`)),
12722
+ /* @__PURE__ */ (0, import_jsx_runtime91.jsx)("div", { className: "uix-date-range-picker__weekdays", "aria-hidden": "true", children: weekdays.map((day, index) => /* @__PURE__ */ (0, import_jsx_runtime91.jsx)("span", { children: day }, index)) }),
12723
+ /* @__PURE__ */ (0, import_jsx_runtime91.jsxs)("div", { ref: gridRef, className: "uix-date-range-picker__grid uix-date-picker__grid", role: "group", "aria-label": monthLabel(month, locale), children: [
12724
+ Array.from({ length: blanks }, (_, index) => /* @__PURE__ */ (0, import_jsx_runtime91.jsx)("span", { "aria-hidden": "true" }, `blank-${index}`)),
12512
12725
  days.map((day) => {
12513
12726
  const off = unavailable(day.date);
12514
- return /* @__PURE__ */ (0, import_jsx_runtime90.jsx)(
12727
+ return /* @__PURE__ */ (0, import_jsx_runtime91.jsx)(
12515
12728
  "button",
12516
12729
  {
12517
12730
  type: "button",
@@ -12537,7 +12750,7 @@ function MonthCalendar({
12537
12750
  }
12538
12751
 
12539
12752
  // src/components/DateRangePicker.tsx
12540
- var import_jsx_runtime91 = require("react/jsx-runtime");
12753
+ var import_jsx_runtime92 = require("react/jsx-runtime");
12541
12754
  var DEFAULT_DATE_RANGE_PICKER_LABELS = {
12542
12755
  previous: "Previous",
12543
12756
  previousMonth: "Show previous month",
@@ -12633,23 +12846,23 @@ function RangeCalendar({
12633
12846
  }
12634
12847
  };
12635
12848
  const announcement = !value.start ? labels.noneSelected : !value.end ? labels.startSelected.replace("{start}", dateLabel(value.start, locale)) : labels.rangeSelected.replace("{start}", dateLabel(value.start, locale)).replace("{end}", dateLabel(value.end, locale));
12636
- return /* @__PURE__ */ (0, import_jsx_runtime91.jsxs)("section", { className: cx("uix-date-range-picker", rangeInvalid && "uix-date-range-picker--invalid", className), "aria-labelledby": `${id}-label`, children: [
12637
- /* @__PURE__ */ (0, import_jsx_runtime91.jsxs)("div", { className: "uix-date-range-picker__header", children: [
12638
- /* @__PURE__ */ (0, import_jsx_runtime91.jsx)("h3", { id: `${id}-label`, children: label }),
12639
- /* @__PURE__ */ (0, import_jsx_runtime91.jsxs)("div", { children: [
12640
- /* @__PURE__ */ (0, import_jsx_runtime91.jsx)("button", { type: "button", className: "uix-btn uix-btn--ghost uix-btn--sm", onClick: () => setMonth(addCalendarMonths(visibleMonth, -1)), "aria-label": labels.previousMonth, children: labels.previous }),
12641
- /* @__PURE__ */ (0, import_jsx_runtime91.jsx)("button", { type: "button", className: "uix-btn uix-btn--ghost uix-btn--sm", onClick: () => setMonth(addCalendarMonths(visibleMonth, 1)), "aria-label": labels.nextMonth, children: labels.next })
12849
+ return /* @__PURE__ */ (0, import_jsx_runtime92.jsxs)("section", { className: cx("uix-date-range-picker", rangeInvalid && "uix-date-range-picker--invalid", className), "aria-labelledby": `${id}-label`, children: [
12850
+ /* @__PURE__ */ (0, import_jsx_runtime92.jsxs)("div", { className: "uix-date-range-picker__header", children: [
12851
+ /* @__PURE__ */ (0, import_jsx_runtime92.jsx)("h3", { id: `${id}-label`, children: label }),
12852
+ /* @__PURE__ */ (0, import_jsx_runtime92.jsxs)("div", { children: [
12853
+ /* @__PURE__ */ (0, import_jsx_runtime92.jsx)("button", { type: "button", className: "uix-btn uix-btn--ghost uix-btn--sm", onClick: () => setMonth(addCalendarMonths(visibleMonth, -1)), "aria-label": labels.previousMonth, children: labels.previous }),
12854
+ /* @__PURE__ */ (0, import_jsx_runtime92.jsx)("button", { type: "button", className: "uix-btn uix-btn--ghost uix-btn--sm", onClick: () => setMonth(addCalendarMonths(visibleMonth, 1)), "aria-label": labels.nextMonth, children: labels.next })
12642
12855
  ] })
12643
12856
  ] }),
12644
- /* @__PURE__ */ (0, import_jsx_runtime91.jsx)("div", { ref: rootRef, className: "uix-date-range-picker__months", children: calendars.map(({ month, days }) => /* @__PURE__ */ (0, import_jsx_runtime91.jsxs)("div", { className: "uix-date-range-picker__month", children: [
12645
- /* @__PURE__ */ (0, import_jsx_runtime91.jsx)("h4", { children: monthLabel2(month, locale) }),
12646
- /* @__PURE__ */ (0, import_jsx_runtime91.jsx)("div", { className: "uix-date-range-picker__weekdays", "aria-hidden": "true", children: weekdays.map((day, index) => /* @__PURE__ */ (0, import_jsx_runtime91.jsx)("span", { children: day }, index)) }),
12647
- /* @__PURE__ */ (0, import_jsx_runtime91.jsxs)("div", { className: "uix-date-range-picker__grid", role: "group", "aria-label": monthLabel2(month, locale), children: [
12648
- Array.from({ length: ((/* @__PURE__ */ new Date(`${month}T00:00:00Z`)).getUTCDay() - weekStartsOn + 7) % 7 }, (_, index) => /* @__PURE__ */ (0, import_jsx_runtime91.jsx)("span", { "aria-hidden": "true" }, `blank-${index}`)),
12857
+ /* @__PURE__ */ (0, import_jsx_runtime92.jsx)("div", { ref: rootRef, className: "uix-date-range-picker__months", children: calendars.map(({ month, days }) => /* @__PURE__ */ (0, import_jsx_runtime92.jsxs)("div", { className: "uix-date-range-picker__month", children: [
12858
+ /* @__PURE__ */ (0, import_jsx_runtime92.jsx)("h4", { children: monthLabel2(month, locale) }),
12859
+ /* @__PURE__ */ (0, import_jsx_runtime92.jsx)("div", { className: "uix-date-range-picker__weekdays", "aria-hidden": "true", children: weekdays.map((day, index) => /* @__PURE__ */ (0, import_jsx_runtime92.jsx)("span", { children: day }, index)) }),
12860
+ /* @__PURE__ */ (0, import_jsx_runtime92.jsxs)("div", { className: "uix-date-range-picker__grid", role: "group", "aria-label": monthLabel2(month, locale), children: [
12861
+ Array.from({ length: ((/* @__PURE__ */ new Date(`${month}T00:00:00Z`)).getUTCDay() - weekStartsOn + 7) % 7 }, (_, index) => /* @__PURE__ */ (0, import_jsx_runtime92.jsx)("span", { "aria-hidden": "true" }, `blank-${index}`)),
12649
12862
  days.map((day) => {
12650
12863
  const unavailable = disabled || isDateUnavailable(day.date, { min, max, isDisabled: isDateDisabled });
12651
12864
  const edge = day.date === value.start ? "start" : day.date === value.end ? "end" : void 0;
12652
- return /* @__PURE__ */ (0, import_jsx_runtime91.jsx)(
12865
+ return /* @__PURE__ */ (0, import_jsx_runtime92.jsx)(
12653
12866
  "button",
12654
12867
  {
12655
12868
  type: "button",
@@ -12671,15 +12884,15 @@ function RangeCalendar({
12671
12884
  })
12672
12885
  ] })
12673
12886
  ] }, month)) }),
12674
- /* @__PURE__ */ (0, import_jsx_runtime91.jsx)("p", { className: "uix-date-range-picker__selection", "aria-live": "polite", children: announcement }),
12675
- rangeInvalid && /* @__PURE__ */ (0, import_jsx_runtime91.jsx)("p", { className: "uix-field__error", role: "alert", children: invalidMessage })
12887
+ /* @__PURE__ */ (0, import_jsx_runtime92.jsx)("p", { className: "uix-date-range-picker__selection", "aria-live": "polite", children: announcement }),
12888
+ rangeInvalid && /* @__PURE__ */ (0, import_jsx_runtime92.jsx)("p", { className: "uix-field__error", role: "alert", children: invalidMessage })
12676
12889
  ] });
12677
12890
  }
12678
12891
  function DateRangePicker({ labels: labelOverrides, ...props }) {
12679
12892
  const uixLabels = useUixLabels();
12680
12893
  const words = { ...DEFAULT_DATE_RANGE_PICKER_LABELS, ...uixLabels.dateRangePicker, ...labelOverrides };
12681
- if (props.mode === "field") return /* @__PURE__ */ (0, import_jsx_runtime91.jsx)(DateRangeField, { ...props, words });
12682
- return /* @__PURE__ */ (0, import_jsx_runtime91.jsx)(RangeCalendar, { ...props, words });
12894
+ if (props.mode === "field") return /* @__PURE__ */ (0, import_jsx_runtime92.jsx)(DateRangeField, { ...props, words });
12895
+ return /* @__PURE__ */ (0, import_jsx_runtime92.jsx)(RangeCalendar, { ...props, words });
12683
12896
  }
12684
12897
  function DateRangeField(props) {
12685
12898
  const {
@@ -12714,7 +12927,7 @@ function DateRangeField(props) {
12714
12927
  const text = !value.start ? null : !value.end ? words.fieldStart.replace("{start}", format(value.start)) : words.fieldRange.replace("{start}", format(value.start)).replace("{end}", format(value.end));
12715
12928
  const rangeInvalid = invalid || !!value.start && !!value.end && value.start > value.end;
12716
12929
  const describedBy = [ariaDescribedBy, labelled && text ? valueId : void 0].filter(Boolean).join(" ") || void 0;
12717
- return /* @__PURE__ */ (0, import_jsx_runtime91.jsxs)(
12930
+ return /* @__PURE__ */ (0, import_jsx_runtime92.jsxs)(
12718
12931
  "div",
12719
12932
  {
12720
12933
  ref: anchorRef,
@@ -12726,7 +12939,7 @@ function DateRangeField(props) {
12726
12939
  hide();
12727
12940
  },
12728
12941
  children: [
12729
- /* @__PURE__ */ (0, import_jsx_runtime91.jsxs)(
12942
+ /* @__PURE__ */ (0, import_jsx_runtime92.jsxs)(
12730
12943
  "button",
12731
12944
  {
12732
12945
  ref: triggerRef,
@@ -12738,16 +12951,16 @@ function DateRangeField(props) {
12738
12951
  "aria-invalid": rangeInvalid || ariaInvalid === true || ariaInvalid === "true" || void 0,
12739
12952
  ...triggerProps,
12740
12953
  children: [
12741
- /* @__PURE__ */ (0, import_jsx_runtime91.jsx)("span", { className: "uix-date-range-field__icon", "aria-hidden": "true", children: /* @__PURE__ */ (0, import_jsx_runtime91.jsx)(CalendarIcon, { size: "sm" }) }),
12742
- /* @__PURE__ */ (0, import_jsx_runtime91.jsxs)("span", { className: "uix-visually-hidden", children: [
12954
+ /* @__PURE__ */ (0, import_jsx_runtime92.jsx)("span", { className: "uix-date-range-field__icon", "aria-hidden": "true", children: /* @__PURE__ */ (0, import_jsx_runtime92.jsx)(CalendarIcon, { size: "sm" }) }),
12955
+ /* @__PURE__ */ (0, import_jsx_runtime92.jsxs)("span", { className: "uix-visually-hidden", children: [
12743
12956
  label,
12744
12957
  ": "
12745
12958
  ] }),
12746
- /* @__PURE__ */ (0, import_jsx_runtime91.jsx)("span", { id: valueId, className: cx("uix-date-range-field__value", !text && "uix-date-range-field__value--empty"), children: text ?? words.placeholder })
12959
+ /* @__PURE__ */ (0, import_jsx_runtime92.jsx)("span", { id: valueId, className: cx("uix-date-range-field__value", !text && "uix-date-range-field__value--empty"), children: text ?? words.placeholder })
12747
12960
  ]
12748
12961
  }
12749
12962
  ),
12750
- /* @__PURE__ */ (0, import_jsx_runtime91.jsx)(
12963
+ /* @__PURE__ */ (0, import_jsx_runtime92.jsx)(
12751
12964
  Popover,
12752
12965
  {
12753
12966
  id: popoverId,
@@ -12758,7 +12971,7 @@ function DateRangeField(props) {
12758
12971
  "aria-label": label,
12759
12972
  capHeight: true,
12760
12973
  closeWhenAnchorHidden: true,
12761
- children: open && /* @__PURE__ */ (0, import_jsx_runtime91.jsx)(
12974
+ children: open && /* @__PURE__ */ (0, import_jsx_runtime92.jsx)(
12762
12975
  RangeCalendar,
12763
12976
  {
12764
12977
  ...props,
@@ -12779,7 +12992,7 @@ function DateRangeField(props) {
12779
12992
 
12780
12993
  // src/components/DatePicker.tsx
12781
12994
  var import_react67 = require("react");
12782
- var import_jsx_runtime92 = require("react/jsx-runtime");
12995
+ var import_jsx_runtime93 = require("react/jsx-runtime");
12783
12996
  var DEFAULT_DATE_PICKER_LABELS = {
12784
12997
  open: "Choose date",
12785
12998
  openSelected: "Change date, {date}",
@@ -12894,7 +13107,7 @@ var DatePicker = (0, import_react67.forwardRef)(function DatePicker2({
12894
13107
  const expected = placeholder ?? (parseDate ? null : pattern);
12895
13108
  const describedBy = [ariaDescribedBy, problem ? errorId : void 0].filter(Boolean).join(" ") || void 0;
12896
13109
  const isInvalid = !!invalid || !!problem || ariaInvalid === true || ariaInvalid === "true";
12897
- return /* @__PURE__ */ (0, import_jsx_runtime92.jsxs)(
13110
+ return /* @__PURE__ */ (0, import_jsx_runtime93.jsxs)(
12898
13111
  "div",
12899
13112
  {
12900
13113
  ref: anchorRef,
@@ -12907,8 +13120,8 @@ var DatePicker = (0, import_react67.forwardRef)(function DatePicker2({
12907
13120
  hide();
12908
13121
  },
12909
13122
  children: [
12910
- /* @__PURE__ */ (0, import_jsx_runtime92.jsxs)("div", { className: "uix-date-picker__control", children: [
12911
- /* @__PURE__ */ (0, import_jsx_runtime92.jsx)(
13123
+ /* @__PURE__ */ (0, import_jsx_runtime93.jsxs)("div", { className: "uix-date-picker__control", children: [
13124
+ /* @__PURE__ */ (0, import_jsx_runtime93.jsx)(
12912
13125
  "input",
12913
13126
  {
12914
13127
  ref: inputRef,
@@ -12937,7 +13150,7 @@ var DatePicker = (0, import_react67.forwardRef)(function DatePicker2({
12937
13150
  onKeyDown: onInputKeyDown
12938
13151
  }
12939
13152
  ),
12940
- /* @__PURE__ */ (0, import_jsx_runtime92.jsx)(
13153
+ /* @__PURE__ */ (0, import_jsx_runtime93.jsx)(
12941
13154
  "button",
12942
13155
  {
12943
13156
  type: "button",
@@ -12945,13 +13158,13 @@ var DatePicker = (0, import_react67.forwardRef)(function DatePicker2({
12945
13158
  disabled: locked,
12946
13159
  "aria-label": value && isValidDateKey(value) ? fillLabel(labels.openSelected, { date: fullDateLabel(value, locale) }) : labels.open,
12947
13160
  ...triggerProps,
12948
- children: /* @__PURE__ */ (0, import_jsx_runtime92.jsx)(CalendarIcon, { size: "sm" })
13161
+ children: /* @__PURE__ */ (0, import_jsx_runtime93.jsx)(CalendarIcon, { size: "sm" })
12949
13162
  }
12950
13163
  )
12951
13164
  ] }),
12952
- name && /* @__PURE__ */ (0, import_jsx_runtime92.jsx)("input", { type: "hidden", name, value: value ?? "", disabled }),
12953
- problem && /* @__PURE__ */ (0, import_jsx_runtime92.jsx)("span", { id: errorId, className: "uix-field__error uix-date-picker__error", role: "alert", children: problem !== "format" ? labels.unavailable : expected ? fillLabel(labels.invalidDate, { pattern: expected }) : labels.notADate }),
12954
- /* @__PURE__ */ (0, import_jsx_runtime92.jsx)(
13165
+ name && /* @__PURE__ */ (0, import_jsx_runtime93.jsx)("input", { type: "hidden", name, value: value ?? "", disabled }),
13166
+ problem && /* @__PURE__ */ (0, import_jsx_runtime93.jsx)("span", { id: errorId, className: "uix-field__error uix-date-picker__error", role: "alert", children: problem !== "format" ? labels.unavailable : expected ? fillLabel(labels.invalidDate, { pattern: expected }) : labels.notADate }),
13167
+ /* @__PURE__ */ (0, import_jsx_runtime93.jsx)(
12955
13168
  Popover,
12956
13169
  {
12957
13170
  id: popoverId,
@@ -12961,7 +13174,7 @@ var DatePicker = (0, import_react67.forwardRef)(function DatePicker2({
12961
13174
  role: "dialog",
12962
13175
  "aria-label": labels.calendar,
12963
13176
  closeWhenAnchorHidden: true,
12964
- children: open && /* @__PURE__ */ (0, import_jsx_runtime92.jsx)(
13177
+ children: open && /* @__PURE__ */ (0, import_jsx_runtime93.jsx)(
12965
13178
  MonthCalendar,
12966
13179
  {
12967
13180
  value,
@@ -13039,7 +13252,7 @@ var DateTimePicker = (0, import_react67.forwardRef)(function DateTimePicker2({
13039
13252
  const zoneText = timeZoneLabel === null ? null : timeZoneLabel ?? (zone ? timeZoneName(zone, date, locale) : null);
13040
13253
  const timeName = grouped ? labels.time : fieldLabel ? fillLabel(labels.timeOf, { label: fieldLabel }) : labels.time;
13041
13254
  const step = Math.max(1, Math.round(minuteStep)) * 60;
13042
- return /* @__PURE__ */ (0, import_jsx_runtime92.jsxs)(
13255
+ return /* @__PURE__ */ (0, import_jsx_runtime93.jsxs)(
13043
13256
  "div",
13044
13257
  {
13045
13258
  className: cx("uix-date-time-picker", size === "sm" && "uix-date-time-picker--sm", className),
@@ -13048,7 +13261,7 @@ var DateTimePicker = (0, import_react67.forwardRef)(function DateTimePicker2({
13048
13261
  "aria-label": ariaLabel,
13049
13262
  "aria-labelledby": ariaLabelledBy,
13050
13263
  children: [
13051
- /* @__PURE__ */ (0, import_jsx_runtime92.jsx)(
13264
+ /* @__PURE__ */ (0, import_jsx_runtime93.jsx)(
13052
13265
  DatePicker,
13053
13266
  {
13054
13267
  ...dateProps,
@@ -13075,7 +13288,7 @@ var DateTimePicker = (0, import_react67.forwardRef)(function DateTimePicker2({
13075
13288
  }
13076
13289
  }
13077
13290
  ),
13078
- /* @__PURE__ */ (0, import_jsx_runtime92.jsx)(
13291
+ /* @__PURE__ */ (0, import_jsx_runtime93.jsx)(
13079
13292
  "input",
13080
13293
  {
13081
13294
  type: "time",
@@ -13094,11 +13307,11 @@ var DateTimePicker = (0, import_react67.forwardRef)(function DateTimePicker2({
13094
13307
  }
13095
13308
  }
13096
13309
  ),
13097
- zoneText && /* @__PURE__ */ (0, import_jsx_runtime92.jsxs)("span", { className: "uix-date-time-picker__zone", children: [
13098
- /* @__PURE__ */ (0, import_jsx_runtime92.jsx)("span", { "aria-hidden": "true", children: zoneText }),
13099
- /* @__PURE__ */ (0, import_jsx_runtime92.jsx)("span", { id: zoneId, className: "uix-visually-hidden", children: fillLabel(labels.timeZone, { zone: zoneText }) })
13310
+ zoneText && /* @__PURE__ */ (0, import_jsx_runtime93.jsxs)("span", { className: "uix-date-time-picker__zone", children: [
13311
+ /* @__PURE__ */ (0, import_jsx_runtime93.jsx)("span", { "aria-hidden": "true", children: zoneText }),
13312
+ /* @__PURE__ */ (0, import_jsx_runtime93.jsx)("span", { id: zoneId, className: "uix-visually-hidden", children: fillLabel(labels.timeZone, { zone: zoneText }) })
13100
13313
  ] }),
13101
- name && /* @__PURE__ */ (0, import_jsx_runtime92.jsx)("input", { type: "hidden", name, value: value ?? "", disabled })
13314
+ name && /* @__PURE__ */ (0, import_jsx_runtime93.jsx)("input", { type: "hidden", name, value: value ?? "", disabled })
13102
13315
  ]
13103
13316
  }
13104
13317
  );
@@ -13589,7 +13802,7 @@ function layeredNeighbor(layout, currentId, key) {
13589
13802
  var import_react68 = require("react");
13590
13803
 
13591
13804
  // src/components/RelationshipGraphList.tsx
13592
- var import_jsx_runtime93 = require("react/jsx-runtime");
13805
+ var import_jsx_runtime94 = require("react/jsx-runtime");
13593
13806
  function EquivalentRelationshipList({
13594
13807
  nodes,
13595
13808
  edges,
@@ -13600,19 +13813,19 @@ function EquivalentRelationshipList({
13600
13813
  onOpenDetails
13601
13814
  }) {
13602
13815
  const labelById = new Map(nodes.map((node) => [node.id, node.label]));
13603
- return /* @__PURE__ */ (0, import_jsx_runtime93.jsxs)("div", { className: "uix-relationship-graph__list", role: "region", "aria-label": labels.list, children: [
13604
- /* @__PURE__ */ (0, import_jsx_runtime93.jsx)("h3", { children: labels.listHeading }),
13605
- /* @__PURE__ */ (0, import_jsx_runtime93.jsx)("ul", { children: nodes.map((node) => {
13816
+ return /* @__PURE__ */ (0, import_jsx_runtime94.jsxs)("div", { className: "uix-relationship-graph__list", role: "region", "aria-label": labels.list, children: [
13817
+ /* @__PURE__ */ (0, import_jsx_runtime94.jsx)("h3", { children: labels.listHeading }),
13818
+ /* @__PURE__ */ (0, import_jsx_runtime94.jsx)("ul", { children: nodes.map((node) => {
13606
13819
  const neighbors = relationshipNeighbors(node.id, edges).map((id) => labelById.get(id) ?? id);
13607
- return /* @__PURE__ */ (0, import_jsx_runtime93.jsxs)("li", { "data-selected": selectedId === node.id || void 0, children: [
13608
- /* @__PURE__ */ (0, import_jsx_runtime93.jsxs)("button", { type: "button", onClick: () => onSelect(node.id), "aria-pressed": selectedId === node.id, children: [
13609
- /* @__PURE__ */ (0, import_jsx_runtime93.jsx)("strong", { children: node.label }),
13610
- node.type && /* @__PURE__ */ (0, import_jsx_runtime93.jsx)("span", { children: node.type }),
13611
- /* @__PURE__ */ (0, import_jsx_runtime93.jsx)("span", { children: neighbors.length ? labels.connectedTo(neighbors.join(", ")) : labels.noConnections })
13820
+ return /* @__PURE__ */ (0, import_jsx_runtime94.jsxs)("li", { "data-selected": selectedId === node.id || void 0, children: [
13821
+ /* @__PURE__ */ (0, import_jsx_runtime94.jsxs)("button", { type: "button", onClick: () => onSelect(node.id), "aria-pressed": selectedId === node.id, children: [
13822
+ /* @__PURE__ */ (0, import_jsx_runtime94.jsx)("strong", { children: node.label }),
13823
+ node.type && /* @__PURE__ */ (0, import_jsx_runtime94.jsx)("span", { children: node.type }),
13824
+ /* @__PURE__ */ (0, import_jsx_runtime94.jsx)("span", { children: neighbors.length ? labels.connectedTo(neighbors.join(", ")) : labels.noConnections })
13612
13825
  ] }),
13613
- /* @__PURE__ */ (0, import_jsx_runtime93.jsxs)("span", { className: "uix-relationship-graph__list-actions", children: [
13614
- onExpandNeighbors && /* @__PURE__ */ (0, import_jsx_runtime93.jsx)("button", { type: "button", onClick: () => onExpandNeighbors(node), children: labels.expandNeighbors }),
13615
- onOpenDetails && /* @__PURE__ */ (0, import_jsx_runtime93.jsx)("button", { type: "button", onClick: () => onOpenDetails(node), children: labels.openDetails })
13826
+ /* @__PURE__ */ (0, import_jsx_runtime94.jsxs)("span", { className: "uix-relationship-graph__list-actions", children: [
13827
+ onExpandNeighbors && /* @__PURE__ */ (0, import_jsx_runtime94.jsx)("button", { type: "button", onClick: () => onExpandNeighbors(node), children: labels.expandNeighbors }),
13828
+ onOpenDetails && /* @__PURE__ */ (0, import_jsx_runtime94.jsx)("button", { type: "button", onClick: () => onOpenDetails(node), children: labels.openDetails })
13616
13829
  ] })
13617
13830
  ] }, node.id);
13618
13831
  }) })
@@ -13620,7 +13833,7 @@ function EquivalentRelationshipList({
13620
13833
  }
13621
13834
 
13622
13835
  // src/components/RelationshipGraphLayered.tsx
13623
- var import_jsx_runtime94 = require("react/jsx-runtime");
13836
+ var import_jsx_runtime95 = require("react/jsx-runtime");
13624
13837
  var EMPTY_IDS2 = /* @__PURE__ */ new Set();
13625
13838
  var MIN_ZOOM = 0.4;
13626
13839
  var MAX_ZOOM = 1.5;
@@ -13893,21 +14106,21 @@ function LayeredRelationshipGraph({
13893
14106
  height: layout.height,
13894
14107
  transform: `translate(${view.x}px, ${view.y}px) scale(${view.zoom})`
13895
14108
  };
13896
- return /* @__PURE__ */ (0, import_jsx_runtime94.jsxs)("section", { className: cx("uix-relationship-graph", "uix-relationship-graph--layered", density === "compact" && "uix-relationship-graph--compact", className), "aria-label": labels.graph, children: [
13897
- /* @__PURE__ */ (0, import_jsx_runtime94.jsxs)("div", { className: "uix-relationship-graph__toolbar", role: "group", "aria-label": labels.controls, children: [
13898
- /* @__PURE__ */ (0, import_jsx_runtime94.jsx)("button", { type: "button", onClick: () => zoomBy(ZOOM_STEP), disabled: view.zoom >= MAX_ZOOM, children: labels.zoomIn }),
13899
- /* @__PURE__ */ (0, import_jsx_runtime94.jsx)("button", { type: "button", onClick: () => zoomBy(1 / ZOOM_STEP), disabled: view.zoom <= MIN_ZOOM, children: labels.zoomOut }),
13900
- /* @__PURE__ */ (0, import_jsx_runtime94.jsx)("button", { type: "button", onClick: () => moveView(fitView(layout, size), true), children: labels.fit }),
13901
- /* @__PURE__ */ (0, import_jsx_runtime94.jsx)("button", { type: "button", onClick: () => moveView(initialView(layout, size), true), children: labels.reset }),
13902
- /* @__PURE__ */ (0, import_jsx_runtime94.jsx)("button", { type: "button", onClick: () => panBy(PAN_STEP, 0), "aria-label": labels.panLeft, children: labels.left }),
13903
- /* @__PURE__ */ (0, import_jsx_runtime94.jsx)("button", { type: "button", onClick: () => panBy(0, PAN_STEP), "aria-label": labels.panUp, children: labels.up }),
13904
- /* @__PURE__ */ (0, import_jsx_runtime94.jsx)("button", { type: "button", onClick: () => panBy(0, -PAN_STEP), "aria-label": labels.panDown, children: labels.down }),
13905
- /* @__PURE__ */ (0, import_jsx_runtime94.jsx)("button", { type: "button", onClick: () => panBy(-PAN_STEP, 0), "aria-label": labels.panRight, children: labels.right }),
13906
- /* @__PURE__ */ (0, import_jsx_runtime94.jsx)("span", { "aria-live": "polite", children: labels.zoomLevel(Math.round(view.zoom * 100)) })
14109
+ return /* @__PURE__ */ (0, import_jsx_runtime95.jsxs)("section", { className: cx("uix-relationship-graph", "uix-relationship-graph--layered", density === "compact" && "uix-relationship-graph--compact", className), "aria-label": labels.graph, children: [
14110
+ /* @__PURE__ */ (0, import_jsx_runtime95.jsxs)("div", { className: "uix-relationship-graph__toolbar", role: "group", "aria-label": labels.controls, children: [
14111
+ /* @__PURE__ */ (0, import_jsx_runtime95.jsx)("button", { type: "button", onClick: () => zoomBy(ZOOM_STEP), disabled: view.zoom >= MAX_ZOOM, children: labels.zoomIn }),
14112
+ /* @__PURE__ */ (0, import_jsx_runtime95.jsx)("button", { type: "button", onClick: () => zoomBy(1 / ZOOM_STEP), disabled: view.zoom <= MIN_ZOOM, children: labels.zoomOut }),
14113
+ /* @__PURE__ */ (0, import_jsx_runtime95.jsx)("button", { type: "button", onClick: () => moveView(fitView(layout, size), true), children: labels.fit }),
14114
+ /* @__PURE__ */ (0, import_jsx_runtime95.jsx)("button", { type: "button", onClick: () => moveView(initialView(layout, size), true), children: labels.reset }),
14115
+ /* @__PURE__ */ (0, import_jsx_runtime95.jsx)("button", { type: "button", onClick: () => panBy(PAN_STEP, 0), "aria-label": labels.panLeft, children: labels.left }),
14116
+ /* @__PURE__ */ (0, import_jsx_runtime95.jsx)("button", { type: "button", onClick: () => panBy(0, PAN_STEP), "aria-label": labels.panUp, children: labels.up }),
14117
+ /* @__PURE__ */ (0, import_jsx_runtime95.jsx)("button", { type: "button", onClick: () => panBy(0, -PAN_STEP), "aria-label": labels.panDown, children: labels.down }),
14118
+ /* @__PURE__ */ (0, import_jsx_runtime95.jsx)("button", { type: "button", onClick: () => panBy(-PAN_STEP, 0), "aria-label": labels.panRight, children: labels.right }),
14119
+ /* @__PURE__ */ (0, import_jsx_runtime95.jsx)("span", { "aria-live": "polite", children: labels.zoomLevel(Math.round(view.zoom * 100)) })
13907
14120
  ] }),
13908
- bounded.omittedNodeCount > 0 && /* @__PURE__ */ (0, import_jsx_runtime94.jsx)("p", { className: "uix-relationship-graph__bounded", role: "status", children: labels.bounded(bounded.nodes.length, bounded.omittedNodeCount) }),
13909
- /* @__PURE__ */ (0, import_jsx_runtime94.jsx)("p", { id: hintId, className: "uix-visually-hidden", children: labels.keyboardHint }),
13910
- /* @__PURE__ */ (0, import_jsx_runtime94.jsx)(
14121
+ bounded.omittedNodeCount > 0 && /* @__PURE__ */ (0, import_jsx_runtime95.jsx)("p", { className: "uix-relationship-graph__bounded", role: "status", children: labels.bounded(bounded.nodes.length, bounded.omittedNodeCount) }),
14122
+ /* @__PURE__ */ (0, import_jsx_runtime95.jsx)("p", { id: hintId, className: "uix-visually-hidden", children: labels.keyboardHint }),
14123
+ /* @__PURE__ */ (0, import_jsx_runtime95.jsx)(
13911
14124
  "div",
13912
14125
  {
13913
14126
  ref: viewportRef,
@@ -13917,11 +14130,11 @@ function LayeredRelationshipGraph({
13917
14130
  onPointerMove,
13918
14131
  onPointerUp: onPointerEnd,
13919
14132
  onPointerCancel: onPointerEnd,
13920
- children: /* @__PURE__ */ (0, import_jsx_runtime94.jsxs)("div", { className: "uix-relationship-graph__stage", style: stageStyle, "data-animate": animate || void 0, onTransitionEnd: () => setAnimate(false), children: [
13921
- /* @__PURE__ */ (0, import_jsx_runtime94.jsx)("svg", { className: "uix-relationship-graph__edges", width: layout.width, height: layout.height, "aria-hidden": "true", focusable: "false", children: layout.edges.map((edge) => {
14133
+ children: /* @__PURE__ */ (0, import_jsx_runtime95.jsxs)("div", { className: "uix-relationship-graph__stage", style: stageStyle, "data-animate": animate || void 0, onTransitionEnd: () => setAnimate(false), children: [
14134
+ /* @__PURE__ */ (0, import_jsx_runtime95.jsx)("svg", { className: "uix-relationship-graph__edges", width: layout.width, height: layout.height, "aria-hidden": "true", focusable: "false", children: layout.edges.map((edge) => {
13922
14135
  const active = activeIds.has(edge.source) || activeIds.has(edge.target) || edge.edgeIds.some((id) => highlightedEdgeIds.has(id));
13923
14136
  const angle = edge.arrowAngle * 180 / Math.PI;
13924
- return /* @__PURE__ */ (0, import_jsx_runtime94.jsxs)(
14137
+ return /* @__PURE__ */ (0, import_jsx_runtime95.jsxs)(
13925
14138
  "g",
13926
14139
  {
13927
14140
  className: "uix-relationship-graph__link",
@@ -13931,15 +14144,15 @@ function LayeredRelationshipGraph({
13931
14144
  "data-conflicted": edge.edgeIds.some((id) => conflictedEdgeIds.has(id)) || void 0,
13932
14145
  "data-dimmed": dimmedNodeIds.has(edge.source) && dimmedNodeIds.has(edge.target) || void 0,
13933
14146
  children: [
13934
- /* @__PURE__ */ (0, import_jsx_runtime94.jsx)("path", { d: edge.path }),
13935
- edge.arrow !== "none" && /* @__PURE__ */ (0, import_jsx_runtime94.jsx)("polygon", { points: arrowPoints, transform: `translate(${edge.arrowX} ${edge.arrowY}) rotate(${angle})` }),
13936
- showLabel(edge) && /* @__PURE__ */ (0, import_jsx_runtime94.jsx)("text", { x: edge.labelX, y: edge.labelY, textAnchor: "middle", dominantBaseline: "middle", children: (edge.kind === "cycle" ? [...edge.labelLines, labels.cycle] : edge.labelLines).map((line, index, lines) => /* @__PURE__ */ (0, import_jsx_runtime94.jsx)("tspan", { x: edge.labelX, dy: index === 0 ? `${-(lines.length - 1) * 0.55}em` : "1.1em", children: line }, index)) })
14147
+ /* @__PURE__ */ (0, import_jsx_runtime95.jsx)("path", { d: edge.path }),
14148
+ edge.arrow !== "none" && /* @__PURE__ */ (0, import_jsx_runtime95.jsx)("polygon", { points: arrowPoints, transform: `translate(${edge.arrowX} ${edge.arrowY}) rotate(${angle})` }),
14149
+ showLabel(edge) && /* @__PURE__ */ (0, import_jsx_runtime95.jsx)("text", { x: edge.labelX, y: edge.labelY, textAnchor: "middle", dominantBaseline: "middle", children: (edge.kind === "cycle" ? [...edge.labelLines, labels.cycle] : edge.labelLines).map((line, index, lines) => /* @__PURE__ */ (0, import_jsx_runtime95.jsx)("tspan", { x: edge.labelX, dy: index === 0 ? `${-(lines.length - 1) * 0.55}em` : "1.1em", children: line }, index)) })
13937
14150
  ]
13938
14151
  },
13939
14152
  edge.id
13940
14153
  );
13941
14154
  }) }),
13942
- layout.columns.map((column) => /* @__PURE__ */ (0, import_jsx_runtime94.jsx)(
14155
+ layout.columns.map((column) => /* @__PURE__ */ (0, import_jsx_runtime95.jsx)(
13943
14156
  "div",
13944
14157
  {
13945
14158
  className: "uix-relationship-graph__column",
@@ -13949,17 +14162,17 @@ function LayeredRelationshipGraph({
13949
14162
  },
13950
14163
  column.depth
13951
14164
  )),
13952
- /* @__PURE__ */ (0, import_jsx_runtime94.jsx)("div", { role: "group", "aria-roledescription": labels.roleDescription, "aria-label": labels.graphSummary(bounded.nodes.length, bounded.edges.length), "aria-describedby": hintId, children: layout.items.map((item) => {
14165
+ /* @__PURE__ */ (0, import_jsx_runtime95.jsx)("div", { role: "group", "aria-roledescription": labels.roleDescription, "aria-label": labels.graphSummary(bounded.nodes.length, bounded.edges.length), "aria-describedby": hintId, children: layout.items.map((item) => {
13953
14166
  const selected = item.id === selectedItemId;
13954
14167
  const dimmed = item.node ? dimmedNodeIds.has(item.node.id) : item.cluster.members.every((member) => dimmedNodeIds.has(member.id));
13955
- const body = item.cluster ? renderCluster?.(item.cluster) ?? /* @__PURE__ */ (0, import_jsx_runtime94.jsxs)(import_jsx_runtime94.Fragment, { children: [
13956
- /* @__PURE__ */ (0, import_jsx_runtime94.jsx)("span", { className: "uix-relationship-graph__item-label", children: labels.cluster(item.cluster.members.length, item.cluster.type, item.cluster.edgeLabel) }),
13957
- /* @__PURE__ */ (0, import_jsx_runtime94.jsx)("span", { className: "uix-relationship-graph__item-meta", children: labels.expandCluster })
13958
- ] }) : renderNode?.(item.node, { selected, dimmed }) ?? /* @__PURE__ */ (0, import_jsx_runtime94.jsxs)(import_jsx_runtime94.Fragment, { children: [
13959
- /* @__PURE__ */ (0, import_jsx_runtime94.jsx)("span", { className: "uix-relationship-graph__item-label", children: item.node.label }),
13960
- (item.node.type || item.node.description) && /* @__PURE__ */ (0, import_jsx_runtime94.jsx)("span", { className: "uix-relationship-graph__item-meta", children: [item.node.type, item.node.description].filter(Boolean).join(" \xB7 ") })
14168
+ const body = item.cluster ? renderCluster?.(item.cluster) ?? /* @__PURE__ */ (0, import_jsx_runtime95.jsxs)(import_jsx_runtime95.Fragment, { children: [
14169
+ /* @__PURE__ */ (0, import_jsx_runtime95.jsx)("span", { className: "uix-relationship-graph__item-label", children: labels.cluster(item.cluster.members.length, item.cluster.type, item.cluster.edgeLabel) }),
14170
+ /* @__PURE__ */ (0, import_jsx_runtime95.jsx)("span", { className: "uix-relationship-graph__item-meta", children: labels.expandCluster })
14171
+ ] }) : renderNode?.(item.node, { selected, dimmed }) ?? /* @__PURE__ */ (0, import_jsx_runtime95.jsxs)(import_jsx_runtime95.Fragment, { children: [
14172
+ /* @__PURE__ */ (0, import_jsx_runtime95.jsx)("span", { className: "uix-relationship-graph__item-label", children: item.node.label }),
14173
+ (item.node.type || item.node.description) && /* @__PURE__ */ (0, import_jsx_runtime95.jsx)("span", { className: "uix-relationship-graph__item-meta", children: [item.node.type, item.node.description].filter(Boolean).join(" \xB7 ") })
13961
14174
  ] });
13962
- return /* @__PURE__ */ (0, import_jsx_runtime94.jsxs)(
14175
+ return /* @__PURE__ */ (0, import_jsx_runtime95.jsxs)(
13963
14176
  "button",
13964
14177
  {
13965
14178
  ref: (element) => {
@@ -13990,7 +14203,7 @@ function LayeredRelationshipGraph({
13990
14203
  onPointerLeave: () => setHoverId((current) => current === item.id ? void 0 : current),
13991
14204
  children: [
13992
14205
  body,
13993
- item.inCycle && /* @__PURE__ */ (0, import_jsx_runtime94.jsx)("span", { className: "uix-relationship-graph__item-flag", "aria-hidden": "true", children: labels.cycle })
14206
+ item.inCycle && /* @__PURE__ */ (0, import_jsx_runtime95.jsx)("span", { className: "uix-relationship-graph__item-flag", "aria-hidden": "true", children: labels.cycle })
13994
14207
  ]
13995
14208
  },
13996
14209
  item.id
@@ -13998,7 +14211,7 @@ function LayeredRelationshipGraph({
13998
14211
  }) }),
13999
14212
  layout.items.filter((item) => item.expandedGroup).map((item) => {
14000
14213
  const group = item.expandedGroup;
14001
- return /* @__PURE__ */ (0, import_jsx_runtime94.jsx)(
14214
+ return /* @__PURE__ */ (0, import_jsx_runtime95.jsx)(
14002
14215
  "button",
14003
14216
  {
14004
14217
  type: "button",
@@ -14014,8 +14227,8 @@ function LayeredRelationshipGraph({
14014
14227
  ] })
14015
14228
  }
14016
14229
  ),
14017
- legend.length > 0 && /* @__PURE__ */ (0, import_jsx_runtime94.jsx)("ul", { className: "uix-relationship-graph__legend", "aria-label": labels.legend, children: legend.map((entry) => /* @__PURE__ */ (0, import_jsx_runtime94.jsx)("li", { "data-type": entry.id, children: entry.label }, entry.id)) }),
14018
- showList && /* @__PURE__ */ (0, import_jsx_runtime94.jsx)(
14230
+ legend.length > 0 && /* @__PURE__ */ (0, import_jsx_runtime95.jsx)("ul", { className: "uix-relationship-graph__legend", "aria-label": labels.legend, children: legend.map((entry) => /* @__PURE__ */ (0, import_jsx_runtime95.jsx)("li", { "data-type": entry.id, children: entry.label }, entry.id)) }),
14231
+ showList && /* @__PURE__ */ (0, import_jsx_runtime95.jsx)(
14019
14232
  EquivalentRelationshipList,
14020
14233
  {
14021
14234
  nodes: bounded.nodes,
@@ -14034,7 +14247,7 @@ function LayeredRelationshipGraph({
14034
14247
  }
14035
14248
 
14036
14249
  // src/components/RelationshipGraph.tsx
14037
- var import_jsx_runtime95 = require("react/jsx-runtime");
14250
+ var import_jsx_runtime96 = require("react/jsx-runtime");
14038
14251
  var DEFAULT_RELATIONSHIP_GRAPH_LABELS = {
14039
14252
  graph: "Relationship graph",
14040
14253
  controls: "Graph view controls",
@@ -14098,19 +14311,19 @@ function radialViewBox(nodes) {
14098
14311
  function RelationshipGraph(props) {
14099
14312
  const labels = (0, import_react69.useMemo)(() => ({ ...DEFAULT_RELATIONSHIP_GRAPH_LABELS, ...props.labels }), [props.labels]);
14100
14313
  const stateClass = cx("uix-relationship-graph uix-relationship-graph--state", props.className);
14101
- if (props.loading) return /* @__PURE__ */ (0, import_jsx_runtime95.jsx)("div", { className: stateClass, role: "status", children: labels.loading });
14314
+ if (props.loading) return /* @__PURE__ */ (0, import_jsx_runtime96.jsx)("div", { className: stateClass, role: "status", children: labels.loading });
14102
14315
  if (props.error) {
14103
- return /* @__PURE__ */ (0, import_jsx_runtime95.jsxs)("div", { className: stateClass, role: "alert", children: [
14104
- /* @__PURE__ */ (0, import_jsx_runtime95.jsx)("p", { children: props.error }),
14105
- props.onRetry && /* @__PURE__ */ (0, import_jsx_runtime95.jsx)("button", { type: "button", className: "uix-btn uix-btn--secondary", onClick: props.onRetry, children: labels.retry })
14316
+ return /* @__PURE__ */ (0, import_jsx_runtime96.jsxs)("div", { className: stateClass, role: "alert", children: [
14317
+ /* @__PURE__ */ (0, import_jsx_runtime96.jsx)("p", { children: props.error }),
14318
+ props.onRetry && /* @__PURE__ */ (0, import_jsx_runtime96.jsx)("button", { type: "button", className: "uix-btn uix-btn--secondary", onClick: props.onRetry, children: labels.retry })
14106
14319
  ] });
14107
14320
  }
14108
- if (props.nodes.length === 0) return /* @__PURE__ */ (0, import_jsx_runtime95.jsxs)("div", { className: stateClass, children: [
14109
- /* @__PURE__ */ (0, import_jsx_runtime95.jsx)("p", { children: labels.emptyTitle }),
14110
- /* @__PURE__ */ (0, import_jsx_runtime95.jsx)("p", { children: labels.emptyHint })
14321
+ if (props.nodes.length === 0) return /* @__PURE__ */ (0, import_jsx_runtime96.jsxs)("div", { className: stateClass, children: [
14322
+ /* @__PURE__ */ (0, import_jsx_runtime96.jsx)("p", { children: labels.emptyTitle }),
14323
+ /* @__PURE__ */ (0, import_jsx_runtime96.jsx)("p", { children: labels.emptyHint })
14111
14324
  ] });
14112
- if (props.layout === "layered") return /* @__PURE__ */ (0, import_jsx_runtime95.jsx)(LayeredRelationshipGraph, { ...props, labels });
14113
- return /* @__PURE__ */ (0, import_jsx_runtime95.jsx)(RadialRelationshipGraph, { ...props, labels });
14325
+ if (props.layout === "layered") return /* @__PURE__ */ (0, import_jsx_runtime96.jsx)(LayeredRelationshipGraph, { ...props, labels });
14326
+ return /* @__PURE__ */ (0, import_jsx_runtime96.jsx)(RadialRelationshipGraph, { ...props, labels });
14114
14327
  }
14115
14328
  function RadialRelationshipGraph({
14116
14329
  nodes,
@@ -14163,25 +14376,25 @@ function RadialRelationshipGraph({
14163
14376
  setZoom(1);
14164
14377
  setPan({ x: 0, y: 0 });
14165
14378
  };
14166
- return /* @__PURE__ */ (0, import_jsx_runtime95.jsxs)("section", { className: cx("uix-relationship-graph", `uix-relationship-graph--${density}`, className), "aria-label": labels.graph, children: [
14167
- /* @__PURE__ */ (0, import_jsx_runtime95.jsxs)("div", { className: "uix-relationship-graph__toolbar", "aria-label": labels.controls, children: [
14168
- /* @__PURE__ */ (0, import_jsx_runtime95.jsx)("button", { type: "button", onClick: () => setPan((value) => ({ ...value, x: value.x - 24 })), "aria-label": labels.panLeft, children: labels.left }),
14169
- /* @__PURE__ */ (0, import_jsx_runtime95.jsx)("button", { type: "button", onClick: () => setPan((value) => ({ ...value, y: value.y - 24 })), "aria-label": labels.panUp, children: labels.up }),
14170
- /* @__PURE__ */ (0, import_jsx_runtime95.jsx)("button", { type: "button", onClick: () => setPan((value) => ({ ...value, y: value.y + 24 })), "aria-label": labels.panDown, children: labels.down }),
14171
- /* @__PURE__ */ (0, import_jsx_runtime95.jsx)("button", { type: "button", onClick: () => setPan((value) => ({ ...value, x: value.x + 24 })), "aria-label": labels.panRight, children: labels.right }),
14172
- /* @__PURE__ */ (0, import_jsx_runtime95.jsx)("button", { type: "button", onClick: () => setZoom((value) => Math.min(2, Number((value + 0.2).toFixed(1)))), "aria-label": labels.zoomIn, children: labels.zoomIn }),
14173
- /* @__PURE__ */ (0, import_jsx_runtime95.jsx)("button", { type: "button", onClick: () => setZoom((value) => Math.max(0.5, Number((value - 0.2).toFixed(1)))), "aria-label": labels.zoomOut, children: labels.zoomOut }),
14174
- /* @__PURE__ */ (0, import_jsx_runtime95.jsx)("button", { type: "button", onClick: reset, children: labels.reset }),
14175
- /* @__PURE__ */ (0, import_jsx_runtime95.jsx)("span", { "aria-live": "polite", children: labels.zoomLevel(Math.round(zoom * 100)) })
14379
+ return /* @__PURE__ */ (0, import_jsx_runtime96.jsxs)("section", { className: cx("uix-relationship-graph", `uix-relationship-graph--${density}`, className), "aria-label": labels.graph, children: [
14380
+ /* @__PURE__ */ (0, import_jsx_runtime96.jsxs)("div", { className: "uix-relationship-graph__toolbar", "aria-label": labels.controls, children: [
14381
+ /* @__PURE__ */ (0, import_jsx_runtime96.jsx)("button", { type: "button", onClick: () => setPan((value) => ({ ...value, x: value.x - 24 })), "aria-label": labels.panLeft, children: labels.left }),
14382
+ /* @__PURE__ */ (0, import_jsx_runtime96.jsx)("button", { type: "button", onClick: () => setPan((value) => ({ ...value, y: value.y - 24 })), "aria-label": labels.panUp, children: labels.up }),
14383
+ /* @__PURE__ */ (0, import_jsx_runtime96.jsx)("button", { type: "button", onClick: () => setPan((value) => ({ ...value, y: value.y + 24 })), "aria-label": labels.panDown, children: labels.down }),
14384
+ /* @__PURE__ */ (0, import_jsx_runtime96.jsx)("button", { type: "button", onClick: () => setPan((value) => ({ ...value, x: value.x + 24 })), "aria-label": labels.panRight, children: labels.right }),
14385
+ /* @__PURE__ */ (0, import_jsx_runtime96.jsx)("button", { type: "button", onClick: () => setZoom((value) => Math.min(2, Number((value + 0.2).toFixed(1)))), "aria-label": labels.zoomIn, children: labels.zoomIn }),
14386
+ /* @__PURE__ */ (0, import_jsx_runtime96.jsx)("button", { type: "button", onClick: () => setZoom((value) => Math.max(0.5, Number((value - 0.2).toFixed(1)))), "aria-label": labels.zoomOut, children: labels.zoomOut }),
14387
+ /* @__PURE__ */ (0, import_jsx_runtime96.jsx)("button", { type: "button", onClick: reset, children: labels.reset }),
14388
+ /* @__PURE__ */ (0, import_jsx_runtime96.jsx)("span", { "aria-live": "polite", children: labels.zoomLevel(Math.round(zoom * 100)) })
14176
14389
  ] }),
14177
- bounded.omittedNodeCount > 0 && /* @__PURE__ */ (0, import_jsx_runtime95.jsx)("p", { className: "uix-relationship-graph__bounded", role: "status", children: labels.bounded(bounded.nodes.length, bounded.omittedNodeCount) }),
14178
- /* @__PURE__ */ (0, import_jsx_runtime95.jsx)("div", { className: "uix-relationship-graph__visual", children: /* @__PURE__ */ (0, import_jsx_runtime95.jsx)("svg", { ref: svgRef, viewBox: radialViewBox(positioned), role: "group", "aria-label": labels.graphSummary(bounded.nodes.length, bounded.edges.length), children: /* @__PURE__ */ (0, import_jsx_runtime95.jsxs)("g", { transform: `translate(${pan.x} ${pan.y}) scale(${zoom})`, children: [
14390
+ bounded.omittedNodeCount > 0 && /* @__PURE__ */ (0, import_jsx_runtime96.jsx)("p", { className: "uix-relationship-graph__bounded", role: "status", children: labels.bounded(bounded.nodes.length, bounded.omittedNodeCount) }),
14391
+ /* @__PURE__ */ (0, import_jsx_runtime96.jsx)("div", { className: "uix-relationship-graph__visual", children: /* @__PURE__ */ (0, import_jsx_runtime96.jsx)("svg", { ref: svgRef, viewBox: radialViewBox(positioned), role: "group", "aria-label": labels.graphSummary(bounded.nodes.length, bounded.edges.length), children: /* @__PURE__ */ (0, import_jsx_runtime96.jsxs)("g", { transform: `translate(${pan.x} ${pan.y}) scale(${zoom})`, children: [
14179
14392
  bounded.edges.map((edge) => {
14180
14393
  const source = positionedById.get(edge.source);
14181
14394
  const target = positionedById.get(edge.target);
14182
- return /* @__PURE__ */ (0, import_jsx_runtime95.jsx)("line", { x1: source.x * RADIAL_SCALE_X, y1: source.y * RADIAL_SCALE_Y, x2: target.x * RADIAL_SCALE_X, y2: target.y * RADIAL_SCALE_Y, className: "uix-relationship-graph__edge", "data-typed": edge.type != null && typeColor.has(edge.type) || void 0, style: edge.type != null && typeColor.has(edge.type) ? { "--uix-graph-type-color": typeColor.get(edge.type) } : void 0, "data-highlighted": highlightedEdgeIds.has(edge.id) || void 0, "data-conflicted": conflictedEdgeIds.has(edge.id) || void 0, children: /* @__PURE__ */ (0, import_jsx_runtime95.jsx)("title", { children: edge.label ?? edge.type ?? labels.relationship }) }, edge.id);
14395
+ return /* @__PURE__ */ (0, import_jsx_runtime96.jsx)("line", { x1: source.x * RADIAL_SCALE_X, y1: source.y * RADIAL_SCALE_Y, x2: target.x * RADIAL_SCALE_X, y2: target.y * RADIAL_SCALE_Y, className: "uix-relationship-graph__edge", "data-typed": edge.type != null && typeColor.has(edge.type) || void 0, style: edge.type != null && typeColor.has(edge.type) ? { "--uix-graph-type-color": typeColor.get(edge.type) } : void 0, "data-highlighted": highlightedEdgeIds.has(edge.id) || void 0, "data-conflicted": conflictedEdgeIds.has(edge.id) || void 0, children: /* @__PURE__ */ (0, import_jsx_runtime96.jsx)("title", { children: edge.label ?? edge.type ?? labels.relationship }) }, edge.id);
14183
14396
  }),
14184
- positioned.map((node) => /* @__PURE__ */ (0, import_jsx_runtime95.jsxs)(
14397
+ positioned.map((node) => /* @__PURE__ */ (0, import_jsx_runtime96.jsxs)(
14185
14398
  "g",
14186
14399
  {
14187
14400
  transform: `translate(${node.x * RADIAL_SCALE_X} ${node.y * RADIAL_SCALE_Y})`,
@@ -14197,22 +14410,22 @@ function RadialRelationshipGraph({
14197
14410
  onKeyDown: (event) => onNodeKeyDown(event, node.id),
14198
14411
  onClick: () => select(node.id),
14199
14412
  children: [
14200
- /* @__PURE__ */ (0, import_jsx_runtime95.jsx)("title", { children: node.label }),
14201
- /* @__PURE__ */ (0, import_jsx_runtime95.jsx)("rect", { x: -RADIAL_NODE_HALF_W, y: -RADIAL_NODE_HALF_H, width: RADIAL_NODE_HALF_W * 2, height: RADIAL_NODE_HALF_H * 2, rx: "8" }),
14202
- /* @__PURE__ */ (0, import_jsx_runtime95.jsx)("text", { textAnchor: "middle", dominantBaseline: "middle", children: node.label.length > 16 ? `${node.label.slice(0, 15)}\u2026` : node.label })
14413
+ /* @__PURE__ */ (0, import_jsx_runtime96.jsx)("title", { children: node.label }),
14414
+ /* @__PURE__ */ (0, import_jsx_runtime96.jsx)("rect", { x: -RADIAL_NODE_HALF_W, y: -RADIAL_NODE_HALF_H, width: RADIAL_NODE_HALF_W * 2, height: RADIAL_NODE_HALF_H * 2, rx: "8" }),
14415
+ /* @__PURE__ */ (0, import_jsx_runtime96.jsx)("text", { textAnchor: "middle", dominantBaseline: "middle", children: node.label.length > 16 ? `${node.label.slice(0, 15)}\u2026` : node.label })
14203
14416
  ]
14204
14417
  },
14205
14418
  node.id
14206
14419
  ))
14207
14420
  ] }) }) }),
14208
- legend.length > 0 && /* @__PURE__ */ (0, import_jsx_runtime95.jsx)("ul", { className: "uix-relationship-graph__legend", "aria-label": labels.legend, children: legend.map((item) => /* @__PURE__ */ (0, import_jsx_runtime95.jsx)("li", { "data-type": item.id, style: { "--uix-graph-type-color": typeColor.get(item.id) }, children: item.label }, item.id)) }),
14209
- showList && /* @__PURE__ */ (0, import_jsx_runtime95.jsx)(EquivalentRelationshipList, { nodes: bounded.nodes, edges: bounded.edges, selectedId, labels, onSelect: select, onExpandNeighbors, onOpenDetails })
14421
+ legend.length > 0 && /* @__PURE__ */ (0, import_jsx_runtime96.jsx)("ul", { className: "uix-relationship-graph__legend", "aria-label": labels.legend, children: legend.map((item) => /* @__PURE__ */ (0, import_jsx_runtime96.jsx)("li", { "data-type": item.id, style: { "--uix-graph-type-color": typeColor.get(item.id) }, children: item.label }, item.id)) }),
14422
+ showList && /* @__PURE__ */ (0, import_jsx_runtime96.jsx)(EquivalentRelationshipList, { nodes: bounded.nodes, edges: bounded.edges, selectedId, labels, onSelect: select, onExpandNeighbors, onOpenDetails })
14210
14423
  ] });
14211
14424
  }
14212
14425
 
14213
14426
  // src/components/MatchReview.tsx
14214
14427
  var import_react70 = require("react");
14215
- var import_jsx_runtime96 = require("react/jsx-runtime");
14428
+ var import_jsx_runtime97 = require("react/jsx-runtime");
14216
14429
  var DEFAULT_MATCH_REVIEW_LABELS = {
14217
14430
  region: "Match review",
14218
14431
  loading: "Loading match candidates\u2026",
@@ -14307,48 +14520,48 @@ function MatchReview({
14307
14520
  setBulkPending(false);
14308
14521
  }
14309
14522
  };
14310
- if (loading) return /* @__PURE__ */ (0, import_jsx_runtime96.jsx)("div", { className: cx("uix-match-review uix-match-review--state", className), role: "status", children: labels.loading });
14311
- if (error) return /* @__PURE__ */ (0, import_jsx_runtime96.jsxs)("div", { className: cx("uix-match-review uix-match-review--state", className), role: "alert", children: [
14312
- /* @__PURE__ */ (0, import_jsx_runtime96.jsx)("p", { children: error }),
14313
- onRetry && /* @__PURE__ */ (0, import_jsx_runtime96.jsx)("button", { type: "button", className: "uix-btn uix-btn--secondary", onClick: onRetry, children: labels.retry })
14523
+ if (loading) return /* @__PURE__ */ (0, import_jsx_runtime97.jsx)("div", { className: cx("uix-match-review uix-match-review--state", className), role: "status", children: labels.loading });
14524
+ if (error) return /* @__PURE__ */ (0, import_jsx_runtime97.jsxs)("div", { className: cx("uix-match-review uix-match-review--state", className), role: "alert", children: [
14525
+ /* @__PURE__ */ (0, import_jsx_runtime97.jsx)("p", { children: error }),
14526
+ onRetry && /* @__PURE__ */ (0, import_jsx_runtime97.jsx)("button", { type: "button", className: "uix-btn uix-btn--secondary", onClick: onRetry, children: labels.retry })
14314
14527
  ] });
14315
- if (candidates.length === 0) return /* @__PURE__ */ (0, import_jsx_runtime96.jsxs)("div", { className: cx("uix-match-review uix-match-review--state", className), children: [
14316
- /* @__PURE__ */ (0, import_jsx_runtime96.jsx)("p", { children: labels.empty }),
14317
- /* @__PURE__ */ (0, import_jsx_runtime96.jsx)("p", { children: labels.emptyDetail })
14528
+ if (candidates.length === 0) return /* @__PURE__ */ (0, import_jsx_runtime97.jsxs)("div", { className: cx("uix-match-review uix-match-review--state", className), children: [
14529
+ /* @__PURE__ */ (0, import_jsx_runtime97.jsx)("p", { children: labels.empty }),
14530
+ /* @__PURE__ */ (0, import_jsx_runtime97.jsx)("p", { children: labels.emptyDetail })
14318
14531
  ] });
14319
- return /* @__PURE__ */ (0, import_jsx_runtime96.jsxs)("section", { className: cx("uix-match-review", className), "aria-label": labels.region, children: [
14320
- /* @__PURE__ */ (0, import_jsx_runtime96.jsxs)("div", { className: "uix-match-review__summary", children: [
14321
- /* @__PURE__ */ (0, import_jsx_runtime96.jsxs)("div", { children: [
14322
- /* @__PURE__ */ (0, import_jsx_runtime96.jsx)("strong", { children: incomingLabel }),
14323
- /* @__PURE__ */ (0, import_jsx_runtime96.jsx)("span", { children: fillLabel(labels.pendingOf, { pending: pending.length, total: candidates.length }) })
14532
+ return /* @__PURE__ */ (0, import_jsx_runtime97.jsxs)("section", { className: cx("uix-match-review", className), "aria-label": labels.region, children: [
14533
+ /* @__PURE__ */ (0, import_jsx_runtime97.jsxs)("div", { className: "uix-match-review__summary", children: [
14534
+ /* @__PURE__ */ (0, import_jsx_runtime97.jsxs)("div", { children: [
14535
+ /* @__PURE__ */ (0, import_jsx_runtime97.jsx)("strong", { children: incomingLabel }),
14536
+ /* @__PURE__ */ (0, import_jsx_runtime97.jsx)("span", { children: fillLabel(labels.pendingOf, { pending: pending.length, total: candidates.length }) })
14324
14537
  ] }),
14325
- /* @__PURE__ */ (0, import_jsx_runtime96.jsx)("div", { className: "uix-match-review__incoming", children: fields.map((field) => /* @__PURE__ */ (0, import_jsx_runtime96.jsxs)("span", { children: [
14326
- /* @__PURE__ */ (0, import_jsx_runtime96.jsx)("b", { children: field.label }),
14538
+ /* @__PURE__ */ (0, import_jsx_runtime97.jsx)("div", { className: "uix-match-review__incoming", children: fields.map((field) => /* @__PURE__ */ (0, import_jsx_runtime97.jsxs)("span", { children: [
14539
+ /* @__PURE__ */ (0, import_jsx_runtime97.jsx)("b", { children: field.label }),
14327
14540
  field.render?.(incoming[field.id], incoming) ?? valueText(incoming[field.id])
14328
14541
  ] }, field.id)) })
14329
14542
  ] }),
14330
- onBulkDecision && /* @__PURE__ */ (0, import_jsx_runtime96.jsxs)("div", { className: "uix-match-review__bulk", "aria-label": labels.bulk, children: [
14331
- /* @__PURE__ */ (0, import_jsx_runtime96.jsx)("span", { children: fillLabel(labels.selectedCount, { count: selection.size }) }),
14332
- /* @__PURE__ */ (0, import_jsx_runtime96.jsx)("button", { type: "button", className: "uix-btn uix-btn--secondary uix-btn--sm", disabled: selection.size === 0 || bulkPending, onClick: () => void runBulk("accept"), children: bulkPending ? labels.applying : labels.acceptSelected }),
14333
- /* @__PURE__ */ (0, import_jsx_runtime96.jsx)("button", { type: "button", className: "uix-btn uix-btn--ghost uix-btn--sm", disabled: selection.size === 0 || bulkPending, onClick: () => void runBulk("dismiss"), children: bulkPending ? labels.applying : labels.dismissSelected })
14543
+ onBulkDecision && /* @__PURE__ */ (0, import_jsx_runtime97.jsxs)("div", { className: "uix-match-review__bulk", "aria-label": labels.bulk, children: [
14544
+ /* @__PURE__ */ (0, import_jsx_runtime97.jsx)("span", { children: fillLabel(labels.selectedCount, { count: selection.size }) }),
14545
+ /* @__PURE__ */ (0, import_jsx_runtime97.jsx)("button", { type: "button", className: "uix-btn uix-btn--secondary uix-btn--sm", disabled: selection.size === 0 || bulkPending, onClick: () => void runBulk("accept"), children: bulkPending ? labels.applying : labels.acceptSelected }),
14546
+ /* @__PURE__ */ (0, import_jsx_runtime97.jsx)("button", { type: "button", className: "uix-btn uix-btn--ghost uix-btn--sm", disabled: selection.size === 0 || bulkPending, onClick: () => void runBulk("dismiss"), children: bulkPending ? labels.applying : labels.dismissSelected })
14334
14547
  ] }),
14335
- /* @__PURE__ */ (0, import_jsx_runtime96.jsx)("div", { className: "uix-match-review__table-wrap", children: /* @__PURE__ */ (0, import_jsx_runtime96.jsxs)("table", { className: "uix-table uix-match-review__table", children: [
14336
- /* @__PURE__ */ (0, import_jsx_runtime96.jsx)("caption", { className: "uix-visually-hidden", children: labels.caption }),
14337
- /* @__PURE__ */ (0, import_jsx_runtime96.jsx)("thead", { children: /* @__PURE__ */ (0, import_jsx_runtime96.jsxs)("tr", { children: [
14338
- /* @__PURE__ */ (0, import_jsx_runtime96.jsx)("th", { scope: "col", children: /* @__PURE__ */ (0, import_jsx_runtime96.jsx)("span", { className: "uix-visually-hidden", children: labels.select }) }),
14339
- /* @__PURE__ */ (0, import_jsx_runtime96.jsx)("th", { scope: "col", children: labels.confidence }),
14340
- fields.map((field) => /* @__PURE__ */ (0, import_jsx_runtime96.jsx)("th", { scope: "col", children: field.label }, field.id)),
14341
- /* @__PURE__ */ (0, import_jsx_runtime96.jsx)("th", { scope: "col", children: labels.status }),
14342
- /* @__PURE__ */ (0, import_jsx_runtime96.jsx)("th", { scope: "col", children: labels.actions })
14548
+ /* @__PURE__ */ (0, import_jsx_runtime97.jsx)("div", { className: "uix-match-review__table-wrap", children: /* @__PURE__ */ (0, import_jsx_runtime97.jsxs)("table", { className: "uix-table uix-match-review__table", children: [
14549
+ /* @__PURE__ */ (0, import_jsx_runtime97.jsx)("caption", { className: "uix-visually-hidden", children: labels.caption }),
14550
+ /* @__PURE__ */ (0, import_jsx_runtime97.jsx)("thead", { children: /* @__PURE__ */ (0, import_jsx_runtime97.jsxs)("tr", { children: [
14551
+ /* @__PURE__ */ (0, import_jsx_runtime97.jsx)("th", { scope: "col", children: /* @__PURE__ */ (0, import_jsx_runtime97.jsx)("span", { className: "uix-visually-hidden", children: labels.select }) }),
14552
+ /* @__PURE__ */ (0, import_jsx_runtime97.jsx)("th", { scope: "col", children: labels.confidence }),
14553
+ fields.map((field) => /* @__PURE__ */ (0, import_jsx_runtime97.jsx)("th", { scope: "col", children: field.label }, field.id)),
14554
+ /* @__PURE__ */ (0, import_jsx_runtime97.jsx)("th", { scope: "col", children: labels.status }),
14555
+ /* @__PURE__ */ (0, import_jsx_runtime97.jsx)("th", { scope: "col", children: labels.actions })
14343
14556
  ] }) }),
14344
- /* @__PURE__ */ (0, import_jsx_runtime96.jsx)("tbody", { children: candidates.map((candidate) => {
14557
+ /* @__PURE__ */ (0, import_jsx_runtime97.jsx)("tbody", { children: candidates.map((candidate) => {
14345
14558
  const resolved = candidate.status === "resolved";
14346
- return /* @__PURE__ */ (0, import_jsx_runtime96.jsxs)("tr", { "data-status": candidate.status ?? "pending", children: [
14347
- /* @__PURE__ */ (0, import_jsx_runtime96.jsx)("td", { children: /* @__PURE__ */ (0, import_jsx_runtime96.jsx)("input", { type: "checkbox", checked: selection.has(candidate.id), onChange: () => toggle(candidate.id), "aria-label": fillLabel(labels.selectCandidate, { id: candidate.id }) }) }),
14348
- /* @__PURE__ */ (0, import_jsx_runtime96.jsx)("td", { children: /* @__PURE__ */ (0, import_jsx_runtime96.jsx)("span", { className: "uix-match-review__confidence", children: candidate.confidence == null ? labels.notScored : `${Math.round(candidate.confidence * 100)}%` }) }),
14349
- fields.map((field) => /* @__PURE__ */ (0, import_jsx_runtime96.jsx)("td", { children: field.render?.(candidate.record[field.id], candidate.record) ?? valueText(candidate.record[field.id]) }, field.id)),
14350
- /* @__PURE__ */ (0, import_jsx_runtime96.jsx)("td", { children: /* @__PURE__ */ (0, import_jsx_runtime96.jsx)(StatusPill, { tone: resolved ? "success" : "warning", children: resolved ? candidate.decision ? decisionLabel[candidate.decision] : labels.resolved : labels.pending }) }),
14351
- /* @__PURE__ */ (0, import_jsx_runtime96.jsx)("td", { children: /* @__PURE__ */ (0, import_jsx_runtime96.jsx)("div", { className: "uix-match-review__actions", children: ["accept", "dismiss", "split", "pick-other"].map((action) => /* @__PURE__ */ (0, import_jsx_runtime96.jsx)(
14559
+ return /* @__PURE__ */ (0, import_jsx_runtime97.jsxs)("tr", { "data-status": candidate.status ?? "pending", children: [
14560
+ /* @__PURE__ */ (0, import_jsx_runtime97.jsx)("td", { children: /* @__PURE__ */ (0, import_jsx_runtime97.jsx)("input", { type: "checkbox", checked: selection.has(candidate.id), onChange: () => toggle(candidate.id), "aria-label": fillLabel(labels.selectCandidate, { id: candidate.id }) }) }),
14561
+ /* @__PURE__ */ (0, import_jsx_runtime97.jsx)("td", { children: /* @__PURE__ */ (0, import_jsx_runtime97.jsx)("span", { className: "uix-match-review__confidence", children: candidate.confidence == null ? labels.notScored : `${Math.round(candidate.confidence * 100)}%` }) }),
14562
+ fields.map((field) => /* @__PURE__ */ (0, import_jsx_runtime97.jsx)("td", { children: field.render?.(candidate.record[field.id], candidate.record) ?? valueText(candidate.record[field.id]) }, field.id)),
14563
+ /* @__PURE__ */ (0, import_jsx_runtime97.jsx)("td", { children: /* @__PURE__ */ (0, import_jsx_runtime97.jsx)(StatusPill, { tone: resolved ? "success" : "warning", children: resolved ? candidate.decision ? decisionLabel[candidate.decision] : labels.resolved : labels.pending }) }),
14564
+ /* @__PURE__ */ (0, import_jsx_runtime97.jsx)("td", { children: /* @__PURE__ */ (0, import_jsx_runtime97.jsx)("div", { className: "uix-match-review__actions", children: ["accept", "dismiss", "split", "pick-other"].map((action) => /* @__PURE__ */ (0, import_jsx_runtime97.jsx)(
14352
14565
  "button",
14353
14566
  {
14354
14567
  type: "button",
@@ -14362,7 +14575,7 @@ function MatchReview({
14362
14575
  ] }, candidate.id);
14363
14576
  }) })
14364
14577
  ] }) }),
14365
- /* @__PURE__ */ (0, import_jsx_runtime96.jsx)("p", { className: "uix-visually-hidden", "aria-live": "polite", children: announcement })
14578
+ /* @__PURE__ */ (0, import_jsx_runtime97.jsx)("p", { className: "uix-visually-hidden", "aria-live": "polite", children: announcement })
14366
14579
  ] });
14367
14580
  }
14368
14581
 
@@ -14392,7 +14605,7 @@ function parseMetricValue(value) {
14392
14605
  }
14393
14606
 
14394
14607
  // src/components/MetricInput.tsx
14395
- var import_jsx_runtime97 = require("react/jsx-runtime");
14608
+ var import_jsx_runtime98 = require("react/jsx-runtime");
14396
14609
  var defaultMetricFormat = (input) => input == null ? "" : String(input);
14397
14610
  function MetricInput({
14398
14611
  value,
@@ -14441,10 +14654,10 @@ function MetricInput({
14441
14654
  const parsed = parse(event.currentTarget.value);
14442
14655
  setText(parsed === null && event.currentTarget.value.trim() !== "" ? format(value) : format(parsed));
14443
14656
  };
14444
- return /* @__PURE__ */ (0, import_jsx_runtime97.jsxs)("div", { className: cx("uix-metric-input", invalid && "uix-metric-input--invalid", className), children: [
14445
- /* @__PURE__ */ (0, import_jsx_runtime97.jsx)("label", { className: "uix-field__label", htmlFor: id, children: label }),
14446
- /* @__PURE__ */ (0, import_jsx_runtime97.jsxs)("div", { className: "uix-metric-input__control", children: [
14447
- /* @__PURE__ */ (0, import_jsx_runtime97.jsx)(
14657
+ return /* @__PURE__ */ (0, import_jsx_runtime98.jsxs)("div", { className: cx("uix-metric-input", invalid && "uix-metric-input--invalid", className), children: [
14658
+ /* @__PURE__ */ (0, import_jsx_runtime98.jsx)("label", { className: "uix-field__label", htmlFor: id, children: label }),
14659
+ /* @__PURE__ */ (0, import_jsx_runtime98.jsxs)("div", { className: "uix-metric-input__control", children: [
14660
+ /* @__PURE__ */ (0, import_jsx_runtime98.jsx)(
14448
14661
  Input,
14449
14662
  {
14450
14663
  id,
@@ -14463,22 +14676,22 @@ function MetricInput({
14463
14676
  readOnly
14464
14677
  }
14465
14678
  ),
14466
- unit && /* @__PURE__ */ (0, import_jsx_runtime97.jsx)("span", { className: "uix-metric-input__unit", "aria-hidden": "true", children: unit }),
14467
- /* @__PURE__ */ (0, import_jsx_runtime97.jsxs)("span", { className: "uix-metric-input__steps", children: [
14468
- /* @__PURE__ */ (0, import_jsx_runtime97.jsx)("button", { type: "button", className: "uix-metric-input__step", onClick: () => stepBy(1), disabled: disabled || readOnly, "aria-label": `Increase ${label}`, children: "+" }),
14469
- /* @__PURE__ */ (0, import_jsx_runtime97.jsx)("button", { type: "button", className: "uix-metric-input__step", onClick: () => stepBy(-1), disabled: disabled || readOnly, "aria-label": `Decrease ${label}`, children: "\u2212" })
14679
+ unit && /* @__PURE__ */ (0, import_jsx_runtime98.jsx)("span", { className: "uix-metric-input__unit", "aria-hidden": "true", children: unit }),
14680
+ /* @__PURE__ */ (0, import_jsx_runtime98.jsxs)("span", { className: "uix-metric-input__steps", children: [
14681
+ /* @__PURE__ */ (0, import_jsx_runtime98.jsx)("button", { type: "button", className: "uix-metric-input__step", onClick: () => stepBy(1), disabled: disabled || readOnly, "aria-label": `Increase ${label}`, children: "+" }),
14682
+ /* @__PURE__ */ (0, import_jsx_runtime98.jsx)("button", { type: "button", className: "uix-metric-input__step", onClick: () => stepBy(-1), disabled: disabled || readOnly, "aria-label": `Decrease ${label}`, children: "\u2212" })
14470
14683
  ] })
14471
14684
  ] }),
14472
- unit && /* @__PURE__ */ (0, import_jsx_runtime97.jsxs)("span", { className: "uix-visually-hidden", children: [
14685
+ unit && /* @__PURE__ */ (0, import_jsx_runtime98.jsxs)("span", { className: "uix-visually-hidden", children: [
14473
14686
  "Unit: ",
14474
14687
  unit
14475
14688
  ] }),
14476
- invalid && errorMessage && /* @__PURE__ */ (0, import_jsx_runtime97.jsx)("span", { id: errorId, className: "uix-field__error", children: errorMessage })
14689
+ invalid && errorMessage && /* @__PURE__ */ (0, import_jsx_runtime98.jsx)("span", { id: errorId, className: "uix-field__error", children: errorMessage })
14477
14690
  ] });
14478
14691
  }
14479
14692
 
14480
14693
  // src/components/LicensePositionBar.tsx
14481
- var import_jsx_runtime98 = require("react/jsx-runtime");
14694
+ var import_jsx_runtime99 = require("react/jsx-runtime");
14482
14695
  var defaultCapacityFormat = (value) => new Intl.NumberFormat().format(value);
14483
14696
  function LicensePositionBar({
14484
14697
  consumed,
@@ -14499,18 +14712,18 @@ function LicensePositionBar({
14499
14712
  const percent = safeEntitled === 0 ? safeConsumed > 0 ? 100 : 0 : safeConsumed / safeEntitled * 100;
14500
14713
  const format = (value) => `${formatValue(value)}${unit ? ` ${unit}` : ""}`;
14501
14714
  const summary = `${consumedLabel}: ${format(safeConsumed)}. ${entitledLabel}: ${format(safeEntitled)}. ${over > 0 ? `${format(over)} ${overLabel}` : `${format(available)} ${availableLabel}`}.`;
14502
- return /* @__PURE__ */ (0, import_jsx_runtime98.jsxs)("div", { className: cx("uix-license-position", over > 0 && "uix-license-position--over", className), ...props, children: [
14503
- /* @__PURE__ */ (0, import_jsx_runtime98.jsxs)("div", { className: "uix-license-position__header", children: [
14504
- /* @__PURE__ */ (0, import_jsx_runtime98.jsxs)("span", { className: "uix-license-position__value", children: [
14715
+ return /* @__PURE__ */ (0, import_jsx_runtime99.jsxs)("div", { className: cx("uix-license-position", over > 0 && "uix-license-position--over", className), ...props, children: [
14716
+ /* @__PURE__ */ (0, import_jsx_runtime99.jsxs)("div", { className: "uix-license-position__header", children: [
14717
+ /* @__PURE__ */ (0, import_jsx_runtime99.jsxs)("span", { className: "uix-license-position__value", children: [
14505
14718
  format(safeConsumed),
14506
14719
  " / ",
14507
14720
  format(safeEntitled)
14508
14721
  ] }),
14509
- /* @__PURE__ */ (0, import_jsx_runtime98.jsx)(StatusPill, { tone: over > 0 ? "danger" : percent >= 80 ? "warning" : "success", children: over > 0 ? `${format(over)} ${overLabel}` : `${format(available)} ${availableLabel}` })
14722
+ /* @__PURE__ */ (0, import_jsx_runtime99.jsx)(StatusPill, { tone: over > 0 ? "danger" : percent >= 80 ? "warning" : "success", children: over > 0 ? `${format(over)} ${overLabel}` : `${format(available)} ${availableLabel}` })
14510
14723
  ] }),
14511
- /* @__PURE__ */ (0, import_jsx_runtime98.jsxs)("div", { className: "uix-license-position__track", children: [
14512
- /* @__PURE__ */ (0, import_jsx_runtime98.jsx)(Meter, { value: Math.min(100, percent), tone: over > 0 ? "danger" : percent >= 80 ? "warning" : "success", "aria-label": summary, "aria-valuetext": summary }),
14513
- over > 0 && /* @__PURE__ */ (0, import_jsx_runtime98.jsx)(
14724
+ /* @__PURE__ */ (0, import_jsx_runtime99.jsxs)("div", { className: "uix-license-position__track", children: [
14725
+ /* @__PURE__ */ (0, import_jsx_runtime99.jsx)(Meter, { value: Math.min(100, percent), tone: over > 0 ? "danger" : percent >= 80 ? "warning" : "success", "aria-label": summary, "aria-valuetext": summary }),
14726
+ over > 0 && /* @__PURE__ */ (0, import_jsx_runtime99.jsx)(
14514
14727
  "span",
14515
14728
  {
14516
14729
  className: "uix-license-position__overflow",
@@ -14519,7 +14732,7 @@ function LicensePositionBar({
14519
14732
  }
14520
14733
  )
14521
14734
  ] }),
14522
- /* @__PURE__ */ (0, import_jsx_runtime98.jsx)("span", { className: "uix-visually-hidden", children: summary })
14735
+ /* @__PURE__ */ (0, import_jsx_runtime99.jsx)("span", { className: "uix-visually-hidden", children: summary })
14523
14736
  ] });
14524
14737
  }
14525
14738
 
@@ -14594,7 +14807,7 @@ function meetsContrast(background, foreground, minimum = 4.5) {
14594
14807
 
14595
14808
  // src/components/ColorPicker.tsx
14596
14809
  var import_react72 = require("react");
14597
- var import_jsx_runtime99 = require("react/jsx-runtime");
14810
+ var import_jsx_runtime100 = require("react/jsx-runtime");
14598
14811
  var DEFAULT_COLOR_PICKER_LABELS = {
14599
14812
  trigger: "{label}: {color}",
14600
14813
  sample: "Aa",
@@ -14678,8 +14891,8 @@ function ColorPicker({
14678
14891
  if (next) onChange(next);
14679
14892
  };
14680
14893
  const sampleStyle = { backgroundColor: normalized };
14681
- return /* @__PURE__ */ (0, import_jsx_runtime99.jsxs)("div", { className: cx("uix-color-picker", className), children: [
14682
- /* @__PURE__ */ (0, import_jsx_runtime99.jsxs)(
14894
+ return /* @__PURE__ */ (0, import_jsx_runtime100.jsxs)("div", { className: cx("uix-color-picker", className), children: [
14895
+ /* @__PURE__ */ (0, import_jsx_runtime100.jsxs)(
14683
14896
  "button",
14684
14897
  {
14685
14898
  ref: triggerRef,
@@ -14691,12 +14904,12 @@ function ColorPicker({
14691
14904
  onClick: () => setOpen((current) => !current),
14692
14905
  disabled,
14693
14906
  children: [
14694
- /* @__PURE__ */ (0, import_jsx_runtime99.jsx)("span", { className: "uix-color-picker__swatch", style: sampleStyle, "aria-hidden": "true" }),
14695
- /* @__PURE__ */ (0, import_jsx_runtime99.jsx)("span", { children: normalized })
14907
+ /* @__PURE__ */ (0, import_jsx_runtime100.jsx)("span", { className: "uix-color-picker__swatch", style: sampleStyle, "aria-hidden": "true" }),
14908
+ /* @__PURE__ */ (0, import_jsx_runtime100.jsx)("span", { children: normalized })
14696
14909
  ]
14697
14910
  }
14698
14911
  ),
14699
- open && /* @__PURE__ */ (0, import_jsx_runtime99.jsxs)(
14912
+ open && /* @__PURE__ */ (0, import_jsx_runtime100.jsxs)(
14700
14913
  "div",
14701
14914
  {
14702
14915
  ref: dialogRef,
@@ -14707,55 +14920,55 @@ function ColorPicker({
14707
14920
  className: "uix-color-picker__popover",
14708
14921
  onKeyDown: onDialogKeyDown,
14709
14922
  children: [
14710
- /* @__PURE__ */ (0, import_jsx_runtime99.jsx)("div", { className: "uix-color-picker__preview", style: sampleStyle, children: /* @__PURE__ */ (0, import_jsx_runtime99.jsx)("span", { style: { color: foreground }, children: labels.sample }) }),
14711
- /* @__PURE__ */ (0, import_jsx_runtime99.jsxs)("label", { className: "uix-color-picker__range", children: [
14923
+ /* @__PURE__ */ (0, import_jsx_runtime100.jsx)("div", { className: "uix-color-picker__preview", style: sampleStyle, children: /* @__PURE__ */ (0, import_jsx_runtime100.jsx)("span", { style: { color: foreground }, children: labels.sample }) }),
14924
+ /* @__PURE__ */ (0, import_jsx_runtime100.jsxs)("label", { className: "uix-color-picker__range", children: [
14712
14925
  labels.hue,
14713
14926
  " ",
14714
- /* @__PURE__ */ (0, import_jsx_runtime99.jsxs)("span", { children: [
14927
+ /* @__PURE__ */ (0, import_jsx_runtime100.jsxs)("span", { children: [
14715
14928
  Math.round(hsv.h),
14716
14929
  "\xB0"
14717
14930
  ] }),
14718
- /* @__PURE__ */ (0, import_jsx_runtime99.jsx)("input", { type: "range", min: "0", max: "359", value: Math.round(hsv.h), onChange: (event) => updateHsv({ h: Number(event.currentTarget.value) }) })
14931
+ /* @__PURE__ */ (0, import_jsx_runtime100.jsx)("input", { type: "range", min: "0", max: "359", value: Math.round(hsv.h), onChange: (event) => updateHsv({ h: Number(event.currentTarget.value) }) })
14719
14932
  ] }),
14720
- /* @__PURE__ */ (0, import_jsx_runtime99.jsxs)("label", { className: "uix-color-picker__range", children: [
14933
+ /* @__PURE__ */ (0, import_jsx_runtime100.jsxs)("label", { className: "uix-color-picker__range", children: [
14721
14934
  labels.saturation,
14722
14935
  " ",
14723
- /* @__PURE__ */ (0, import_jsx_runtime99.jsxs)("span", { children: [
14936
+ /* @__PURE__ */ (0, import_jsx_runtime100.jsxs)("span", { children: [
14724
14937
  Math.round(hsv.s * 100),
14725
14938
  "%"
14726
14939
  ] }),
14727
- /* @__PURE__ */ (0, import_jsx_runtime99.jsx)("input", { type: "range", min: "0", max: "100", value: Math.round(hsv.s * 100), onChange: (event) => updateHsv({ s: Number(event.currentTarget.value) / 100 }) })
14940
+ /* @__PURE__ */ (0, import_jsx_runtime100.jsx)("input", { type: "range", min: "0", max: "100", value: Math.round(hsv.s * 100), onChange: (event) => updateHsv({ s: Number(event.currentTarget.value) / 100 }) })
14728
14941
  ] }),
14729
- /* @__PURE__ */ (0, import_jsx_runtime99.jsxs)("label", { className: "uix-color-picker__range", children: [
14942
+ /* @__PURE__ */ (0, import_jsx_runtime100.jsxs)("label", { className: "uix-color-picker__range", children: [
14730
14943
  labels.brightness,
14731
14944
  " ",
14732
- /* @__PURE__ */ (0, import_jsx_runtime99.jsxs)("span", { children: [
14945
+ /* @__PURE__ */ (0, import_jsx_runtime100.jsxs)("span", { children: [
14733
14946
  Math.round(hsv.v * 100),
14734
14947
  "%"
14735
14948
  ] }),
14736
- /* @__PURE__ */ (0, import_jsx_runtime99.jsx)("input", { type: "range", min: "0", max: "100", value: Math.round(hsv.v * 100), onChange: (event) => updateHsv({ v: Number(event.currentTarget.value) / 100 }) })
14949
+ /* @__PURE__ */ (0, import_jsx_runtime100.jsx)("input", { type: "range", min: "0", max: "100", value: Math.round(hsv.v * 100), onChange: (event) => updateHsv({ v: Number(event.currentTarget.value) / 100 }) })
14737
14950
  ] }),
14738
- /* @__PURE__ */ (0, import_jsx_runtime99.jsxs)("label", { className: "uix-color-picker__hex", children: [
14951
+ /* @__PURE__ */ (0, import_jsx_runtime100.jsxs)("label", { className: "uix-color-picker__hex", children: [
14739
14952
  labels.hex,
14740
- /* @__PURE__ */ (0, import_jsx_runtime99.jsxs)("span", { className: "uix-color-picker__hex-row", children: [
14741
- /* @__PURE__ */ (0, import_jsx_runtime99.jsx)("input", { className: "uix-input", value: hexText, onChange: (event) => setHexText(event.currentTarget.value), onBlur: commitHex, onKeyDown: (event) => {
14953
+ /* @__PURE__ */ (0, import_jsx_runtime100.jsxs)("span", { className: "uix-color-picker__hex-row", children: [
14954
+ /* @__PURE__ */ (0, import_jsx_runtime100.jsx)("input", { className: "uix-input", value: hexText, onChange: (event) => setHexText(event.currentTarget.value), onBlur: commitHex, onKeyDown: (event) => {
14742
14955
  if (event.key === "Enter") commitHex();
14743
14956
  }, "aria-invalid": !normalizeHex(hexText) }),
14744
- /* @__PURE__ */ (0, import_jsx_runtime99.jsx)("button", { type: "button", className: "uix-btn uix-btn--secondary uix-btn--sm", onClick: commitHex, disabled: !normalizeHex(hexText), children: labels.set })
14957
+ /* @__PURE__ */ (0, import_jsx_runtime100.jsx)("button", { type: "button", className: "uix-btn uix-btn--secondary uix-btn--sm", onClick: commitHex, disabled: !normalizeHex(hexText), children: labels.set })
14745
14958
  ] })
14746
14959
  ] }),
14747
- (presets.length > 0 || recent.length > 0) && /* @__PURE__ */ (0, import_jsx_runtime99.jsxs)("div", { className: "uix-color-picker__palettes", children: [
14748
- presets.length > 0 && /* @__PURE__ */ (0, import_jsx_runtime99.jsxs)("fieldset", { children: [
14749
- /* @__PURE__ */ (0, import_jsx_runtime99.jsx)("legend", { children: labels.presets }),
14750
- /* @__PURE__ */ (0, import_jsx_runtime99.jsx)("div", { children: presets.map((color) => /* @__PURE__ */ (0, import_jsx_runtime99.jsx)("button", { type: "button", className: "uix-color-picker__preset", style: { backgroundColor: normalizeHex(color) ?? color }, onClick: () => choose(color), "aria-label": fillLabel(labels.usePreset, { color }) }, color)) })
14960
+ (presets.length > 0 || recent.length > 0) && /* @__PURE__ */ (0, import_jsx_runtime100.jsxs)("div", { className: "uix-color-picker__palettes", children: [
14961
+ presets.length > 0 && /* @__PURE__ */ (0, import_jsx_runtime100.jsxs)("fieldset", { children: [
14962
+ /* @__PURE__ */ (0, import_jsx_runtime100.jsx)("legend", { children: labels.presets }),
14963
+ /* @__PURE__ */ (0, import_jsx_runtime100.jsx)("div", { children: presets.map((color) => /* @__PURE__ */ (0, import_jsx_runtime100.jsx)("button", { type: "button", className: "uix-color-picker__preset", style: { backgroundColor: normalizeHex(color) ?? color }, onClick: () => choose(color), "aria-label": fillLabel(labels.usePreset, { color }) }, color)) })
14751
14964
  ] }),
14752
- recent.length > 0 && /* @__PURE__ */ (0, import_jsx_runtime99.jsxs)("fieldset", { children: [
14753
- /* @__PURE__ */ (0, import_jsx_runtime99.jsx)("legend", { children: labels.recent }),
14754
- /* @__PURE__ */ (0, import_jsx_runtime99.jsx)("div", { children: recent.map((color) => /* @__PURE__ */ (0, import_jsx_runtime99.jsx)("button", { type: "button", className: "uix-color-picker__preset", style: { backgroundColor: normalizeHex(color) ?? color }, onClick: () => choose(color), "aria-label": fillLabel(labels.useRecent, { color }) }, color)) })
14965
+ recent.length > 0 && /* @__PURE__ */ (0, import_jsx_runtime100.jsxs)("fieldset", { children: [
14966
+ /* @__PURE__ */ (0, import_jsx_runtime100.jsx)("legend", { children: labels.recent }),
14967
+ /* @__PURE__ */ (0, import_jsx_runtime100.jsx)("div", { children: recent.map((color) => /* @__PURE__ */ (0, import_jsx_runtime100.jsx)("button", { type: "button", className: "uix-color-picker__preset", style: { backgroundColor: normalizeHex(color) ?? color }, onClick: () => choose(color), "aria-label": fillLabel(labels.useRecent, { color }) }, color)) })
14755
14968
  ] })
14756
14969
  ] }),
14757
- /* @__PURE__ */ (0, import_jsx_runtime99.jsx)("p", { className: cx("uix-color-picker__contrast", passes ? "uix-color-picker__contrast--pass" : "uix-color-picker__contrast--fail"), role: "status", "aria-live": "polite", children: fillLabel(passes ? labels.contrastPasses : labels.contrastFails, { ratio: ratio.toFixed(2), minimum: minimumContrast }) }),
14758
- /* @__PURE__ */ (0, import_jsx_runtime99.jsx)("button", { type: "button", className: "uix-btn uix-btn--primary uix-btn--sm", onClick: close, children: labels.done })
14970
+ /* @__PURE__ */ (0, import_jsx_runtime100.jsx)("p", { className: cx("uix-color-picker__contrast", passes ? "uix-color-picker__contrast--pass" : "uix-color-picker__contrast--fail"), role: "status", "aria-live": "polite", children: fillLabel(passes ? labels.contrastPasses : labels.contrastFails, { ratio: ratio.toFixed(2), minimum: minimumContrast }) }),
14971
+ /* @__PURE__ */ (0, import_jsx_runtime100.jsx)("button", { type: "button", className: "uix-btn uix-btn--primary uix-btn--sm", onClick: close, children: labels.done })
14759
14972
  ]
14760
14973
  }
14761
14974
  )
@@ -14763,7 +14976,7 @@ function ColorPicker({
14763
14976
  }
14764
14977
 
14765
14978
  // src/components/BrandProfiles.tsx
14766
- var import_jsx_runtime100 = require("react/jsx-runtime");
14979
+ var import_jsx_runtime101 = require("react/jsx-runtime");
14767
14980
  var PROFILE_PROPERTIES = {
14768
14981
  brand: "--uix-brand",
14769
14982
  brandForeground: "--uix-brand-fg",
@@ -14872,54 +15085,54 @@ function BrandProfileEditor({
14872
15085
  ...value.typography?.sans ? { "--uix-font-sans": value.typography.sans } : {},
14873
15086
  ...value.typography?.heading ? { "--uix-font-heading": value.typography.heading } : {}
14874
15087
  };
14875
- return /* @__PURE__ */ (0, import_jsx_runtime100.jsxs)("section", { className: cx("uix-brand-profiles", className), "aria-label": labels.region, children: [
14876
- /* @__PURE__ */ (0, import_jsx_runtime100.jsxs)("div", { className: "uix-brand-profiles__form", children: [
14877
- profiles.length > 0 && /* @__PURE__ */ (0, import_jsx_runtime100.jsxs)("label", { className: "uix-field__label", children: [
15088
+ return /* @__PURE__ */ (0, import_jsx_runtime101.jsxs)("section", { className: cx("uix-brand-profiles", className), "aria-label": labels.region, children: [
15089
+ /* @__PURE__ */ (0, import_jsx_runtime101.jsxs)("div", { className: "uix-brand-profiles__form", children: [
15090
+ profiles.length > 0 && /* @__PURE__ */ (0, import_jsx_runtime101.jsxs)("label", { className: "uix-field__label", children: [
14878
15091
  labels.profile,
14879
- /* @__PURE__ */ (0, import_jsx_runtime100.jsx)("select", { className: "uix-select", value: value.id, onChange: (event) => {
15092
+ /* @__PURE__ */ (0, import_jsx_runtime101.jsx)("select", { className: "uix-select", value: value.id, onChange: (event) => {
14880
15093
  const selected = profiles.find((profile) => profile.id === event.currentTarget.value);
14881
15094
  if (selected) onSelectProfile?.(selected);
14882
- }, children: profiles.map((profile) => /* @__PURE__ */ (0, import_jsx_runtime100.jsx)("option", { value: profile.id, children: profile.name }, profile.id)) })
15095
+ }, children: profiles.map((profile) => /* @__PURE__ */ (0, import_jsx_runtime101.jsx)("option", { value: profile.id, children: profile.name }, profile.id)) })
14883
15096
  ] }),
14884
- /* @__PURE__ */ (0, import_jsx_runtime100.jsxs)("label", { className: "uix-field__label", children: [
15097
+ /* @__PURE__ */ (0, import_jsx_runtime101.jsxs)("label", { className: "uix-field__label", children: [
14885
15098
  labels.name,
14886
- /* @__PURE__ */ (0, import_jsx_runtime100.jsx)("input", { className: "uix-input", value: value.name, onChange: (event) => update({ name: event.currentTarget.value }) })
15099
+ /* @__PURE__ */ (0, import_jsx_runtime101.jsx)("input", { className: "uix-input", value: value.name, onChange: (event) => update({ name: event.currentTarget.value }) })
14887
15100
  ] }),
14888
- /* @__PURE__ */ (0, import_jsx_runtime100.jsxs)("div", { className: "uix-brand-profiles__colors", children: [
14889
- /* @__PURE__ */ (0, import_jsx_runtime100.jsxs)("label", { children: [
15101
+ /* @__PURE__ */ (0, import_jsx_runtime101.jsxs)("div", { className: "uix-brand-profiles__colors", children: [
15102
+ /* @__PURE__ */ (0, import_jsx_runtime101.jsxs)("label", { children: [
14890
15103
  labels.brand,
14891
- /* @__PURE__ */ (0, import_jsx_runtime100.jsx)(ColorPicker, { label: labels.brandColor, value: value.brand, foreground: value.brandForeground, presets: colorPresets, onChange: (brand) => update({ brand }) })
15104
+ /* @__PURE__ */ (0, import_jsx_runtime101.jsx)(ColorPicker, { label: labels.brandColor, value: value.brand, foreground: value.brandForeground, presets: colorPresets, onChange: (brand) => update({ brand }) })
14892
15105
  ] }),
14893
- /* @__PURE__ */ (0, import_jsx_runtime100.jsxs)("label", { children: [
15106
+ /* @__PURE__ */ (0, import_jsx_runtime101.jsxs)("label", { children: [
14894
15107
  labels.onBrand,
14895
- /* @__PURE__ */ (0, import_jsx_runtime100.jsx)(ColorPicker, { label: labels.onBrandColor, value: value.brandForeground, foreground: value.brand, presets: colorPresets, onChange: (brandForeground) => update({ brandForeground }) })
15108
+ /* @__PURE__ */ (0, import_jsx_runtime101.jsx)(ColorPicker, { label: labels.onBrandColor, value: value.brandForeground, foreground: value.brand, presets: colorPresets, onChange: (brandForeground) => update({ brandForeground }) })
14896
15109
  ] })
14897
15110
  ] }),
14898
- /* @__PURE__ */ (0, import_jsx_runtime100.jsxs)("label", { className: "uix-field__label", children: [
15111
+ /* @__PURE__ */ (0, import_jsx_runtime101.jsxs)("label", { className: "uix-field__label", children: [
14899
15112
  labels.bodyFont,
14900
- /* @__PURE__ */ (0, import_jsx_runtime100.jsx)("input", { className: "uix-input", value: value.typography?.sans ?? "", onChange: (event) => update({ typography: { ...value.typography, sans: event.currentTarget.value || void 0 } }) })
15113
+ /* @__PURE__ */ (0, import_jsx_runtime101.jsx)("input", { className: "uix-input", value: value.typography?.sans ?? "", onChange: (event) => update({ typography: { ...value.typography, sans: event.currentTarget.value || void 0 } }) })
14901
15114
  ] }),
14902
- /* @__PURE__ */ (0, import_jsx_runtime100.jsxs)("label", { className: "uix-field__label", children: [
15115
+ /* @__PURE__ */ (0, import_jsx_runtime101.jsxs)("label", { className: "uix-field__label", children: [
14903
15116
  labels.headingFont,
14904
- /* @__PURE__ */ (0, import_jsx_runtime100.jsx)("input", { className: "uix-input", value: value.typography?.heading ?? "", onChange: (event) => update({ typography: { ...value.typography, heading: event.currentTarget.value || void 0 } }) })
15117
+ /* @__PURE__ */ (0, import_jsx_runtime101.jsx)("input", { className: "uix-input", value: value.typography?.heading ?? "", onChange: (event) => update({ typography: { ...value.typography, heading: event.currentTarget.value || void 0 } }) })
14905
15118
  ] }),
14906
- /* @__PURE__ */ (0, import_jsx_runtime100.jsxs)("label", { className: "uix-file-upload uix-brand-profiles__upload", children: [
15119
+ /* @__PURE__ */ (0, import_jsx_runtime101.jsxs)("label", { className: "uix-file-upload uix-brand-profiles__upload", children: [
14907
15120
  labels.logoFile,
14908
- /* @__PURE__ */ (0, import_jsx_runtime100.jsx)("input", { type: "file", accept: "image/*", onChange: onFile })
15121
+ /* @__PURE__ */ (0, import_jsx_runtime101.jsx)("input", { type: "file", accept: "image/*", onChange: onFile })
14909
15122
  ] }),
14910
- /* @__PURE__ */ (0, import_jsx_runtime100.jsx)("button", { type: "button", className: "uix-btn uix-btn--primary", onClick: apply, children: labels.apply }),
14911
- /* @__PURE__ */ (0, import_jsx_runtime100.jsx)("span", { className: "uix-visually-hidden", "aria-live": "polite", children: announcement })
15123
+ /* @__PURE__ */ (0, import_jsx_runtime101.jsx)("button", { type: "button", className: "uix-btn uix-btn--primary", onClick: apply, children: labels.apply }),
15124
+ /* @__PURE__ */ (0, import_jsx_runtime101.jsx)("span", { className: "uix-visually-hidden", "aria-live": "polite", children: announcement })
14912
15125
  ] }),
14913
- /* @__PURE__ */ (0, import_jsx_runtime100.jsxs)("div", { className: "uix-brand-profiles__preview", style: previewStyle, "aria-label": fillLabel(labels.preview, { name: value.name }), children: [
14914
- /* @__PURE__ */ (0, import_jsx_runtime100.jsxs)("div", { className: "uix-brand-profiles__preview-header", children: [
14915
- value.logo ? /* @__PURE__ */ (0, import_jsx_runtime100.jsx)("img", { src: value.logo.src, alt: value.logo.alt }) : /* @__PURE__ */ (0, import_jsx_runtime100.jsx)("span", { className: "uix-brand-profiles__logo-placeholder", children: labels.logoPlaceholder }),
14916
- /* @__PURE__ */ (0, import_jsx_runtime100.jsx)("strong", { children: value.name || labels.previewTitleFallback })
15126
+ /* @__PURE__ */ (0, import_jsx_runtime101.jsxs)("div", { className: "uix-brand-profiles__preview", style: previewStyle, "aria-label": fillLabel(labels.preview, { name: value.name }), children: [
15127
+ /* @__PURE__ */ (0, import_jsx_runtime101.jsxs)("div", { className: "uix-brand-profiles__preview-header", children: [
15128
+ value.logo ? /* @__PURE__ */ (0, import_jsx_runtime101.jsx)("img", { src: value.logo.src, alt: value.logo.alt }) : /* @__PURE__ */ (0, import_jsx_runtime101.jsx)("span", { className: "uix-brand-profiles__logo-placeholder", children: labels.logoPlaceholder }),
15129
+ /* @__PURE__ */ (0, import_jsx_runtime101.jsx)("strong", { children: value.name || labels.previewTitleFallback })
14917
15130
  ] }),
14918
- /* @__PURE__ */ (0, import_jsx_runtime100.jsxs)("div", { className: "uix-brand-profiles__preview-body", children: [
14919
- /* @__PURE__ */ (0, import_jsx_runtime100.jsx)("h3", { children: labels.previewHeading }),
14920
- /* @__PURE__ */ (0, import_jsx_runtime100.jsx)("p", { children: labels.previewBody }),
14921
- /* @__PURE__ */ (0, import_jsx_runtime100.jsx)("button", { type: "button", className: "uix-btn uix-btn--primary", children: labels.previewPrimary }),
14922
- /* @__PURE__ */ (0, import_jsx_runtime100.jsx)("a", { href: "#brand-profile-preview", children: labels.previewLink })
15131
+ /* @__PURE__ */ (0, import_jsx_runtime101.jsxs)("div", { className: "uix-brand-profiles__preview-body", children: [
15132
+ /* @__PURE__ */ (0, import_jsx_runtime101.jsx)("h3", { children: labels.previewHeading }),
15133
+ /* @__PURE__ */ (0, import_jsx_runtime101.jsx)("p", { children: labels.previewBody }),
15134
+ /* @__PURE__ */ (0, import_jsx_runtime101.jsx)("button", { type: "button", className: "uix-btn uix-btn--primary", children: labels.previewPrimary }),
15135
+ /* @__PURE__ */ (0, import_jsx_runtime101.jsx)("a", { href: "#brand-profile-preview", children: labels.previewLink })
14923
15136
  ] })
14924
15137
  ] })
14925
15138
  ] });
@@ -14978,7 +15191,7 @@ function summarizeDiff(entries, resolutions = {}) {
14978
15191
  }
14979
15192
 
14980
15193
  // src/components/DiffViewer.tsx
14981
- var import_jsx_runtime101 = require("react/jsx-runtime");
15194
+ var import_jsx_runtime102 = require("react/jsx-runtime");
14982
15195
  var DEFAULT_DIFF_VIEWER_LABELS = {
14983
15196
  base: "Base",
14984
15197
  current: "Current",
@@ -15032,24 +15245,24 @@ function DiffViewer({
15032
15245
  if (controlledResolutions === void 0) setInternalResolutions((currentState) => ({ ...currentState, [path]: resolution }));
15033
15246
  onResolutionChange?.(path, resolution);
15034
15247
  };
15035
- if (entries.length === 0) return /* @__PURE__ */ (0, import_jsx_runtime101.jsxs)("section", { className: cx("uix-diff-viewer uix-diff-viewer--empty", className), "aria-label": labels.region, children: [
15036
- /* @__PURE__ */ (0, import_jsx_runtime101.jsx)("h3", { children: labels.noDifferences }),
15037
- /* @__PURE__ */ (0, import_jsx_runtime101.jsx)("p", { children: labels.noDifferencesDetail })
15248
+ if (entries.length === 0) return /* @__PURE__ */ (0, import_jsx_runtime102.jsxs)("section", { className: cx("uix-diff-viewer uix-diff-viewer--empty", className), "aria-label": labels.region, children: [
15249
+ /* @__PURE__ */ (0, import_jsx_runtime102.jsx)("h3", { children: labels.noDifferences }),
15250
+ /* @__PURE__ */ (0, import_jsx_runtime102.jsx)("p", { children: labels.noDifferencesDetail })
15038
15251
  ] });
15039
- return /* @__PURE__ */ (0, import_jsx_runtime101.jsxs)("section", { className: cx("uix-diff-viewer", className), "aria-label": labels.region, "data-control-size": controlSize, children: [
15040
- /* @__PURE__ */ (0, import_jsx_runtime101.jsxs)("div", { className: "uix-diff-viewer__summary", role: "group", "aria-label": labels.summary, children: [
15041
- GROUPS.map((kind) => /* @__PURE__ */ (0, import_jsx_runtime101.jsxs)("span", { children: [
15042
- /* @__PURE__ */ (0, import_jsx_runtime101.jsx)("b", { children: summary[kind] }),
15252
+ return /* @__PURE__ */ (0, import_jsx_runtime102.jsxs)("section", { className: cx("uix-diff-viewer", className), "aria-label": labels.region, "data-control-size": controlSize, children: [
15253
+ /* @__PURE__ */ (0, import_jsx_runtime102.jsxs)("div", { className: "uix-diff-viewer__summary", role: "group", "aria-label": labels.summary, children: [
15254
+ GROUPS.map((kind) => /* @__PURE__ */ (0, import_jsx_runtime102.jsxs)("span", { children: [
15255
+ /* @__PURE__ */ (0, import_jsx_runtime102.jsx)("b", { children: summary[kind] }),
15043
15256
  " ",
15044
15257
  labels[kind].toLowerCase()
15045
15258
  ] }, kind)),
15046
- /* @__PURE__ */ (0, import_jsx_runtime101.jsxs)("span", { children: [
15047
- /* @__PURE__ */ (0, import_jsx_runtime101.jsx)("b", { children: summary.resolved }),
15259
+ /* @__PURE__ */ (0, import_jsx_runtime102.jsxs)("span", { children: [
15260
+ /* @__PURE__ */ (0, import_jsx_runtime102.jsx)("b", { children: summary.resolved }),
15048
15261
  " ",
15049
15262
  labels.resolved
15050
15263
  ] }),
15051
- /* @__PURE__ */ (0, import_jsx_runtime101.jsxs)("span", { children: [
15052
- /* @__PURE__ */ (0, import_jsx_runtime101.jsx)("b", { children: summary.pending }),
15264
+ /* @__PURE__ */ (0, import_jsx_runtime102.jsxs)("span", { children: [
15265
+ /* @__PURE__ */ (0, import_jsx_runtime102.jsx)("b", { children: summary.pending }),
15053
15266
  " ",
15054
15267
  labels.pending
15055
15268
  ] })
@@ -15057,33 +15270,33 @@ function DiffViewer({
15057
15270
  GROUPS.map((kind) => {
15058
15271
  const grouped = entries.filter((entry) => entry.kind === kind);
15059
15272
  if (!grouped.length) return null;
15060
- return /* @__PURE__ */ (0, import_jsx_runtime101.jsxs)("section", { className: "uix-diff-viewer__group", "aria-labelledby": `${id}-${kind}`, children: [
15061
- /* @__PURE__ */ (0, import_jsx_runtime101.jsxs)("h3", { id: `${id}-${kind}`, children: [
15273
+ return /* @__PURE__ */ (0, import_jsx_runtime102.jsxs)("section", { className: "uix-diff-viewer__group", "aria-labelledby": `${id}-${kind}`, children: [
15274
+ /* @__PURE__ */ (0, import_jsx_runtime102.jsxs)("h3", { id: `${id}-${kind}`, children: [
15062
15275
  labels[kind],
15063
15276
  " ",
15064
- /* @__PURE__ */ (0, import_jsx_runtime101.jsx)("span", { children: grouped.length })
15277
+ /* @__PURE__ */ (0, import_jsx_runtime102.jsx)("span", { children: grouped.length })
15065
15278
  ] }),
15066
15279
  grouped.map((entry) => {
15067
15280
  const resolution = resolutions[entry.path] ?? "pending";
15068
- return /* @__PURE__ */ (0, import_jsx_runtime101.jsxs)("details", { className: "uix-diff-viewer__entry", "data-kind": entry.kind, open: entry.kind === "conflicted", children: [
15069
- /* @__PURE__ */ (0, import_jsx_runtime101.jsxs)("summary", { children: [
15070
- /* @__PURE__ */ (0, import_jsx_runtime101.jsx)("code", { children: entry.path }),
15071
- /* @__PURE__ */ (0, import_jsx_runtime101.jsx)(StatusPill, { tone: resolution === "pending" ? "warning" : "success", children: resolutionLabel[resolution] })
15281
+ return /* @__PURE__ */ (0, import_jsx_runtime102.jsxs)("details", { className: "uix-diff-viewer__entry", "data-kind": entry.kind, open: entry.kind === "conflicted", children: [
15282
+ /* @__PURE__ */ (0, import_jsx_runtime102.jsxs)("summary", { children: [
15283
+ /* @__PURE__ */ (0, import_jsx_runtime102.jsx)("code", { children: entry.path }),
15284
+ /* @__PURE__ */ (0, import_jsx_runtime102.jsx)(StatusPill, { tone: resolution === "pending" ? "warning" : "success", children: resolutionLabel[resolution] })
15072
15285
  ] }),
15073
- /* @__PURE__ */ (0, import_jsx_runtime101.jsx)("div", { className: "uix-diff-viewer__versions", children: ["base", "current", "incoming"].map((version) => /* @__PURE__ */ (0, import_jsx_runtime101.jsxs)("div", { role: "region", "aria-label": fillLabel(labels.valueFor, { version: labels[version], path: entry.path }), children: [
15074
- /* @__PURE__ */ (0, import_jsx_runtime101.jsx)("strong", { children: labels[version] }),
15075
- /* @__PURE__ */ (0, import_jsx_runtime101.jsx)("pre", { children: renderValue(entry[version], labels.notPresent) })
15286
+ /* @__PURE__ */ (0, import_jsx_runtime102.jsx)("div", { className: "uix-diff-viewer__versions", children: ["base", "current", "incoming"].map((version) => /* @__PURE__ */ (0, import_jsx_runtime102.jsxs)("div", { role: "region", "aria-label": fillLabel(labels.valueFor, { version: labels[version], path: entry.path }), children: [
15287
+ /* @__PURE__ */ (0, import_jsx_runtime102.jsx)("strong", { children: labels[version] }),
15288
+ /* @__PURE__ */ (0, import_jsx_runtime102.jsx)("pre", { children: renderValue(entry[version], labels.notPresent) })
15076
15289
  ] }, version)) }),
15077
- /* @__PURE__ */ (0, import_jsx_runtime101.jsxs)("div", { className: "uix-diff-viewer__actions", role: "group", "aria-label": fillLabel(labels.resolve, { path: entry.path }), children: [
15078
- /* @__PURE__ */ (0, import_jsx_runtime101.jsx)("button", { type: "button", className: cx("uix-btn uix-btn--primary", buttonSize), "aria-label": fillLabel(labels.acceptIncomingFor, { path: entry.path }), "aria-pressed": resolution === "accept", onClick: () => resolve(entry.path, "accept"), children: labels.acceptIncoming }),
15079
- /* @__PURE__ */ (0, import_jsx_runtime101.jsx)("button", { type: "button", className: cx("uix-btn uix-btn--secondary", buttonSize), "aria-label": fillLabel(labels.keepCurrentFor, { path: entry.path }), "aria-pressed": resolution === "skip", onClick: () => resolve(entry.path, "skip"), children: labels.keepCurrent }),
15080
- /* @__PURE__ */ (0, import_jsx_runtime101.jsx)("button", { type: "button", className: cx("uix-btn uix-btn--ghost", buttonSize), "aria-label": fillLabel(labels.markPendingFor, { path: entry.path }), "aria-pressed": resolution === "pending", onClick: () => resolve(entry.path, "pending"), children: labels.markPending })
15290
+ /* @__PURE__ */ (0, import_jsx_runtime102.jsxs)("div", { className: "uix-diff-viewer__actions", role: "group", "aria-label": fillLabel(labels.resolve, { path: entry.path }), children: [
15291
+ /* @__PURE__ */ (0, import_jsx_runtime102.jsx)("button", { type: "button", className: cx("uix-btn uix-btn--primary", buttonSize), "aria-label": fillLabel(labels.acceptIncomingFor, { path: entry.path }), "aria-pressed": resolution === "accept", onClick: () => resolve(entry.path, "accept"), children: labels.acceptIncoming }),
15292
+ /* @__PURE__ */ (0, import_jsx_runtime102.jsx)("button", { type: "button", className: cx("uix-btn uix-btn--secondary", buttonSize), "aria-label": fillLabel(labels.keepCurrentFor, { path: entry.path }), "aria-pressed": resolution === "skip", onClick: () => resolve(entry.path, "skip"), children: labels.keepCurrent }),
15293
+ /* @__PURE__ */ (0, import_jsx_runtime102.jsx)("button", { type: "button", className: cx("uix-btn uix-btn--ghost", buttonSize), "aria-label": fillLabel(labels.markPendingFor, { path: entry.path }), "aria-pressed": resolution === "pending", onClick: () => resolve(entry.path, "pending"), children: labels.markPending })
15081
15294
  ] })
15082
15295
  ] }, entry.path);
15083
15296
  })
15084
15297
  ] }, kind);
15085
15298
  }),
15086
- /* @__PURE__ */ (0, import_jsx_runtime101.jsx)("p", { className: "uix-visually-hidden", "aria-live": "polite", children: fillLabel(labels.progress, { resolved: summary.resolved, total: entries.length }) })
15299
+ /* @__PURE__ */ (0, import_jsx_runtime102.jsx)("p", { className: "uix-visually-hidden", "aria-live": "polite", children: fillLabel(labels.progress, { resolved: summary.resolved, total: entries.length }) })
15087
15300
  ] });
15088
15301
  }
15089
15302
 
@@ -15348,7 +15561,7 @@ function textDiffRows(result, { context } = {}) {
15348
15561
  }
15349
15562
 
15350
15563
  // src/components/TextDiff.tsx
15351
- var import_jsx_runtime102 = require("react/jsx-runtime");
15564
+ var import_jsx_runtime103 = require("react/jsx-runtime");
15352
15565
  var DEFAULT_TEXT_DIFF_LABELS = {
15353
15566
  before: "Before",
15354
15567
  after: "After",
@@ -15361,21 +15574,21 @@ var DEFAULT_TEXT_DIFF_LABELS = {
15361
15574
  };
15362
15575
  function Marked({ segments, side, labels, whole }) {
15363
15576
  const Tag = side === "before" ? "del" : "ins";
15364
- return /* @__PURE__ */ (0, import_jsx_runtime102.jsx)(import_jsx_runtime102.Fragment, { children: segments.map((segment, i) => segment.changed ? /* @__PURE__ */ (0, import_jsx_runtime102.jsxs)(Tag, { "data-whole": whole || void 0, children: [
15365
- /* @__PURE__ */ (0, import_jsx_runtime102.jsxs)("span", { className: "uix-visually-hidden", children: [
15577
+ return /* @__PURE__ */ (0, import_jsx_runtime103.jsx)(import_jsx_runtime103.Fragment, { children: segments.map((segment, i) => segment.changed ? /* @__PURE__ */ (0, import_jsx_runtime103.jsxs)(Tag, { "data-whole": whole || void 0, children: [
15578
+ /* @__PURE__ */ (0, import_jsx_runtime103.jsxs)("span", { className: "uix-visually-hidden", children: [
15366
15579
  side === "before" ? labels.removed : labels.added,
15367
15580
  ": "
15368
15581
  ] }),
15369
15582
  segment.text
15370
- ] }, i) : /* @__PURE__ */ (0, import_jsx_runtime102.jsx)(import_react75.Fragment, { children: segment.text }, i)) });
15583
+ ] }, i) : /* @__PURE__ */ (0, import_jsx_runtime103.jsx)(import_react75.Fragment, { children: segment.text }, i)) });
15371
15584
  }
15372
15585
  function Cell({ line, side, kind, labels }) {
15373
- if (!line) return /* @__PURE__ */ (0, import_jsx_runtime102.jsx)("div", { className: "uix-text-diff__cell", "data-side": side, "data-empty": "", "aria-hidden": "true" });
15586
+ if (!line) return /* @__PURE__ */ (0, import_jsx_runtime103.jsx)("div", { className: "uix-text-diff__cell", "data-side": side, "data-empty": "", "aria-hidden": "true" });
15374
15587
  const changed = kind !== "equal";
15375
- return /* @__PURE__ */ (0, import_jsx_runtime102.jsxs)("div", { className: "uix-text-diff__cell", "data-side": side, "data-kind": changed ? side === "before" ? "delete" : "insert" : "equal", children: [
15376
- /* @__PURE__ */ (0, import_jsx_runtime102.jsx)("span", { className: "uix-text-diff__num", "aria-hidden": "true", children: line.number }),
15377
- /* @__PURE__ */ (0, import_jsx_runtime102.jsx)("span", { className: "uix-text-diff__sign", "aria-hidden": "true", children: changed ? side === "before" ? "\u2212" : "+" : "" }),
15378
- /* @__PURE__ */ (0, import_jsx_runtime102.jsx)("span", { className: "uix-text-diff__text", children: line.segments.length === 1 && line.segments[0].text === "" ? "\u200B" : /* @__PURE__ */ (0, import_jsx_runtime102.jsx)(Marked, { segments: line.segments, side, labels, whole: line.segments.length === 1 }) })
15588
+ return /* @__PURE__ */ (0, import_jsx_runtime103.jsxs)("div", { className: "uix-text-diff__cell", "data-side": side, "data-kind": changed ? side === "before" ? "delete" : "insert" : "equal", children: [
15589
+ /* @__PURE__ */ (0, import_jsx_runtime103.jsx)("span", { className: "uix-text-diff__num", "aria-hidden": "true", children: line.number }),
15590
+ /* @__PURE__ */ (0, import_jsx_runtime103.jsx)("span", { className: "uix-text-diff__sign", "aria-hidden": "true", children: changed ? side === "before" ? "\u2212" : "+" : "" }),
15591
+ /* @__PURE__ */ (0, import_jsx_runtime103.jsx)("span", { className: "uix-text-diff__text", children: line.segments.length === 1 && line.segments[0].text === "" ? "\u200B" : /* @__PURE__ */ (0, import_jsx_runtime103.jsx)(Marked, { segments: line.segments, side, labels, whole: line.segments.length === 1 }) })
15379
15592
  ] });
15380
15593
  }
15381
15594
  function Rows({ rows, view, labels, focusFirst }) {
@@ -15385,23 +15598,23 @@ function Rows({ rows, view, labels, focusFirst }) {
15385
15598
  if (focusFirst) first.current?.focus();
15386
15599
  }, [focusFirst]);
15387
15600
  const firstProps = (index) => focusFirst && index === 0 ? { ref: first, tabIndex: -1 } : {};
15388
- return /* @__PURE__ */ (0, import_jsx_runtime102.jsx)(import_jsx_runtime102.Fragment, { children: rows.map((row, index) => {
15601
+ return /* @__PURE__ */ (0, import_jsx_runtime103.jsx)(import_jsx_runtime103.Fragment, { children: rows.map((row, index) => {
15389
15602
  if (row.kind === "fold") {
15390
- if (open.has(index)) return /* @__PURE__ */ (0, import_jsx_runtime102.jsx)(Rows, { rows: row.rows, view, labels, focusFirst: true }, index);
15391
- return /* @__PURE__ */ (0, import_jsx_runtime102.jsx)("div", { className: "uix-text-diff__row", "data-kind": "fold", children: /* @__PURE__ */ (0, import_jsx_runtime102.jsx)("button", { type: "button", className: "uix-text-diff__fold", onClick: () => setOpen((s) => new Set(s).add(index)), children: fillLabel(labels.showUnchanged, { count: row.count }) }) }, index);
15603
+ if (open.has(index)) return /* @__PURE__ */ (0, import_jsx_runtime103.jsx)(Rows, { rows: row.rows, view, labels, focusFirst: true }, index);
15604
+ return /* @__PURE__ */ (0, import_jsx_runtime103.jsx)("div", { className: "uix-text-diff__row", "data-kind": "fold", children: /* @__PURE__ */ (0, import_jsx_runtime103.jsx)("button", { type: "button", className: "uix-text-diff__fold", onClick: () => setOpen((s) => new Set(s).add(index)), children: fillLabel(labels.showUnchanged, { count: row.count }) }) }, index);
15392
15605
  }
15393
15606
  const before = row.kind === "insert" ? void 0 : row.before;
15394
15607
  const after = row.kind === "delete" ? void 0 : row.after;
15395
15608
  if (view === "unified") {
15396
- if (row.kind === "equal") return /* @__PURE__ */ (0, import_jsx_runtime102.jsx)("div", { className: "uix-text-diff__row", "data-kind": "equal", ...firstProps(index), children: /* @__PURE__ */ (0, import_jsx_runtime102.jsx)(Cell, { line: after, side: "after", kind: "equal", labels }) }, index);
15397
- return /* @__PURE__ */ (0, import_jsx_runtime102.jsxs)(import_react75.Fragment, { children: [
15398
- before && /* @__PURE__ */ (0, import_jsx_runtime102.jsx)("div", { className: "uix-text-diff__row", "data-kind": "delete", children: /* @__PURE__ */ (0, import_jsx_runtime102.jsx)(Cell, { line: before, side: "before", kind: row.kind, labels }) }),
15399
- after && /* @__PURE__ */ (0, import_jsx_runtime102.jsx)("div", { className: "uix-text-diff__row", "data-kind": "insert", children: /* @__PURE__ */ (0, import_jsx_runtime102.jsx)(Cell, { line: after, side: "after", kind: row.kind, labels }) })
15609
+ if (row.kind === "equal") return /* @__PURE__ */ (0, import_jsx_runtime103.jsx)("div", { className: "uix-text-diff__row", "data-kind": "equal", ...firstProps(index), children: /* @__PURE__ */ (0, import_jsx_runtime103.jsx)(Cell, { line: after, side: "after", kind: "equal", labels }) }, index);
15610
+ return /* @__PURE__ */ (0, import_jsx_runtime103.jsxs)(import_react75.Fragment, { children: [
15611
+ before && /* @__PURE__ */ (0, import_jsx_runtime103.jsx)("div", { className: "uix-text-diff__row", "data-kind": "delete", children: /* @__PURE__ */ (0, import_jsx_runtime103.jsx)(Cell, { line: before, side: "before", kind: row.kind, labels }) }),
15612
+ after && /* @__PURE__ */ (0, import_jsx_runtime103.jsx)("div", { className: "uix-text-diff__row", "data-kind": "insert", children: /* @__PURE__ */ (0, import_jsx_runtime103.jsx)(Cell, { line: after, side: "after", kind: row.kind, labels }) })
15400
15613
  ] }, index);
15401
15614
  }
15402
- return /* @__PURE__ */ (0, import_jsx_runtime102.jsxs)("div", { className: "uix-text-diff__row", "data-kind": row.kind, ...firstProps(index), children: [
15403
- /* @__PURE__ */ (0, import_jsx_runtime102.jsx)(Cell, { line: before, side: "before", kind: row.kind, labels }),
15404
- /* @__PURE__ */ (0, import_jsx_runtime102.jsx)(Cell, { line: after, side: "after", kind: row.kind, labels })
15615
+ return /* @__PURE__ */ (0, import_jsx_runtime103.jsxs)("div", { className: "uix-text-diff__row", "data-kind": row.kind, ...firstProps(index), children: [
15616
+ /* @__PURE__ */ (0, import_jsx_runtime103.jsx)(Cell, { line: before, side: "before", kind: row.kind, labels }),
15617
+ /* @__PURE__ */ (0, import_jsx_runtime103.jsx)(Cell, { line: after, side: "after", kind: row.kind, labels })
15405
15618
  ] }, index);
15406
15619
  }) });
15407
15620
  }
@@ -15425,39 +15638,39 @@ function TextDiff({
15425
15638
  const labels = { ...DEFAULT_TEXT_DIFF_LABELS, ...uixLabels.textDiff, ...labelOverrides };
15426
15639
  const result = (0, import_react75.useMemo)(() => diffText(before, after, { granularity, maxTokens, maxEdits }), [before, after, granularity, maxTokens, maxEdits]);
15427
15640
  const rows = (0, import_react75.useMemo)(() => granularity === "line" && result.status === "ok" ? textDiffRows(result, { context }) : [], [result, granularity, context]);
15428
- const heads = /* @__PURE__ */ (0, import_jsx_runtime102.jsxs)("div", { className: "uix-text-diff__heads", "aria-hidden": view === "unified" || void 0, children: [
15429
- /* @__PURE__ */ (0, import_jsx_runtime102.jsxs)("span", { className: "uix-text-diff__head", "data-side": "before", children: [
15430
- view === "unified" && /* @__PURE__ */ (0, import_jsx_runtime102.jsx)("span", { "aria-hidden": "true", children: "\u2212 " }),
15641
+ const heads = /* @__PURE__ */ (0, import_jsx_runtime103.jsxs)("div", { className: "uix-text-diff__heads", "aria-hidden": view === "unified" || void 0, children: [
15642
+ /* @__PURE__ */ (0, import_jsx_runtime103.jsxs)("span", { className: "uix-text-diff__head", "data-side": "before", children: [
15643
+ view === "unified" && /* @__PURE__ */ (0, import_jsx_runtime103.jsx)("span", { "aria-hidden": "true", children: "\u2212 " }),
15431
15644
  beforeLabel ?? labels.before
15432
15645
  ] }),
15433
- /* @__PURE__ */ (0, import_jsx_runtime102.jsxs)("span", { className: "uix-text-diff__head", "data-side": "after", children: [
15434
- view === "unified" && /* @__PURE__ */ (0, import_jsx_runtime102.jsx)("span", { "aria-hidden": "true", children: "+ " }),
15646
+ /* @__PURE__ */ (0, import_jsx_runtime103.jsxs)("span", { className: "uix-text-diff__head", "data-side": "after", children: [
15647
+ view === "unified" && /* @__PURE__ */ (0, import_jsx_runtime103.jsx)("span", { "aria-hidden": "true", children: "+ " }),
15435
15648
  afterLabel ?? labels.after
15436
15649
  ] })
15437
15650
  ] });
15438
15651
  const unchanged = result.status === "ok" && result.added === 0 && result.removed === 0 && result.ops.every((op) => op.type === "equal");
15439
15652
  let body;
15440
- if (result.status === "too-large") body = /* @__PURE__ */ (0, import_jsx_runtime102.jsx)("div", { className: "uix-text-diff__note", children: labels.tooLarge });
15441
- else if (granularity === "line") body = /* @__PURE__ */ (0, import_jsx_runtime102.jsx)("div", { className: "uix-text-diff__body", children: /* @__PURE__ */ (0, import_jsx_runtime102.jsx)(Rows, { rows, view, labels }) });
15653
+ if (result.status === "too-large") body = /* @__PURE__ */ (0, import_jsx_runtime103.jsx)("div", { className: "uix-text-diff__note", children: labels.tooLarge });
15654
+ else if (granularity === "line") body = /* @__PURE__ */ (0, import_jsx_runtime103.jsx)("div", { className: "uix-text-diff__body", children: /* @__PURE__ */ (0, import_jsx_runtime103.jsx)(Rows, { rows, view, labels }) });
15442
15655
  else {
15443
- const prose = (side2) => /* @__PURE__ */ (0, import_jsx_runtime102.jsx)("div", { className: "uix-text-diff__prose", "data-side": side2, children: result.ops.map((op, i) => {
15656
+ const prose = (side2) => /* @__PURE__ */ (0, import_jsx_runtime103.jsx)("div", { className: "uix-text-diff__prose", "data-side": side2, children: result.ops.map((op, i) => {
15444
15657
  const text = op.tokens.join("");
15445
- if (op.type === "equal") return /* @__PURE__ */ (0, import_jsx_runtime102.jsx)(import_react75.Fragment, { children: text }, i);
15658
+ if (op.type === "equal") return /* @__PURE__ */ (0, import_jsx_runtime103.jsx)(import_react75.Fragment, { children: text }, i);
15446
15659
  if (op.type === "delete" && side2 === "after") return null;
15447
15660
  if (op.type === "insert" && side2 === "before") return null;
15448
- return /* @__PURE__ */ (0, import_jsx_runtime102.jsx)(Marked, { segments: [{ text, changed: true }], side: op.type === "delete" ? "before" : "after", labels }, i);
15661
+ return /* @__PURE__ */ (0, import_jsx_runtime103.jsx)(Marked, { segments: [{ text, changed: true }], side: op.type === "delete" ? "before" : "after", labels }, i);
15449
15662
  }) });
15450
- const side = (which) => /* @__PURE__ */ (0, import_jsx_runtime102.jsxs)("div", { className: "uix-text-diff__side", children: [
15451
- /* @__PURE__ */ (0, import_jsx_runtime102.jsx)("div", { className: "uix-text-diff__head", children: which === "before" ? beforeLabel ?? labels.before : afterLabel ?? labels.after }),
15663
+ const side = (which) => /* @__PURE__ */ (0, import_jsx_runtime103.jsxs)("div", { className: "uix-text-diff__side", children: [
15664
+ /* @__PURE__ */ (0, import_jsx_runtime103.jsx)("div", { className: "uix-text-diff__head", children: which === "before" ? beforeLabel ?? labels.before : afterLabel ?? labels.after }),
15452
15665
  prose(which)
15453
15666
  ] });
15454
- body = /* @__PURE__ */ (0, import_jsx_runtime102.jsx)("div", { className: "uix-text-diff__body", children: view === "unified" ? prose("both") : /* @__PURE__ */ (0, import_jsx_runtime102.jsxs)("div", { className: "uix-text-diff__row", "data-kind": "prose", children: [
15667
+ body = /* @__PURE__ */ (0, import_jsx_runtime103.jsx)("div", { className: "uix-text-diff__body", children: view === "unified" ? prose("both") : /* @__PURE__ */ (0, import_jsx_runtime103.jsxs)("div", { className: "uix-text-diff__row", "data-kind": "prose", children: [
15455
15668
  side("before"),
15456
15669
  side("after")
15457
15670
  ] }) });
15458
15671
  }
15459
- return /* @__PURE__ */ (0, import_jsx_runtime102.jsxs)("div", { role: "group", "aria-label": label, className: cx("uix-text-diff", className), "data-view": view, "data-granularity": granularity, ...props, children: [
15460
- !hideSummary && result.status === "ok" && /* @__PURE__ */ (0, import_jsx_runtime102.jsx)("div", { className: "uix-text-diff__summary", children: unchanged ? labels.noChanges : fillLabel(labels.summary, { added: result.added, removed: result.removed }) }),
15672
+ return /* @__PURE__ */ (0, import_jsx_runtime103.jsxs)("div", { role: "group", "aria-label": label, className: cx("uix-text-diff", className), "data-view": view, "data-granularity": granularity, ...props, children: [
15673
+ !hideSummary && result.status === "ok" && /* @__PURE__ */ (0, import_jsx_runtime103.jsx)("div", { className: "uix-text-diff__summary", children: unchanged ? labels.noChanges : fillLabel(labels.summary, { added: result.added, removed: result.removed }) }),
15461
15674
  !(granularity === "word" && view === "split" && result.status === "ok") && heads,
15462
15675
  body
15463
15676
  ] });
@@ -15476,6 +15689,7 @@ function TextDiff({
15476
15689
  Breadcrumbs,
15477
15690
  BuilderCanvas,
15478
15691
  BulkBar,
15692
+ Bullet,
15479
15693
  Button,
15480
15694
  ButtonGroup,
15481
15695
  ButtonLink,
@@ -15514,6 +15728,7 @@ function TextDiff({
15514
15728
  DEFAULT_FILTER_EDITOR_LABELS,
15515
15729
  DEFAULT_FILTER_SUMMARY_LABELS,
15516
15730
  DEFAULT_INLINE_EDIT_LABELS,
15731
+ DEFAULT_INSIGHT_CARD_LABELS,
15517
15732
  DEFAULT_LIGHTBOX_LABELS,
15518
15733
  DEFAULT_MATCH_REVIEW_LABELS,
15519
15734
  DEFAULT_PAGINATION_LABELS,
@@ -15566,6 +15781,7 @@ function TextDiff({
15566
15781
  InlineEdit,
15567
15782
  Input,
15568
15783
  InputGroup,
15784
+ InsightCard,
15569
15785
  Kanban,
15570
15786
  KanbanCard,
15571
15787
  KanbanColumn,
@@ -15720,6 +15936,7 @@ function TextDiff({
15720
15936
  layoutMonthSpans,
15721
15937
  layoutRelationshipGraph,
15722
15938
  layoutTimeGridDay,
15939
+ linearFit,
15723
15940
  mapRuleGroup,
15724
15941
  matchFilter,
15725
15942
  matchFilterPreset,
@@ -15728,6 +15945,7 @@ function TextDiff({
15728
15945
  moveRuleNode,
15729
15946
  multiSort,
15730
15947
  nextSortDir,
15948
+ normalQuantile,
15731
15949
  normalizeHex,
15732
15950
  packLanes,
15733
15951
  parseDateInput,
@@ -15738,7 +15956,9 @@ function TextDiff({
15738
15956
  pixelsToMs,
15739
15957
  placeSpan,
15740
15958
  placesInTopLane,
15959
+ predictionBand,
15741
15960
  proposeMove,
15961
+ quantiles,
15742
15962
  rankOverflow,
15743
15963
  relationshipNeighbors,
15744
15964
  relativeTimeValue,
@@ -15762,6 +15982,7 @@ function TextDiff({
15762
15982
  splitDateTime,
15763
15983
  startOfMonth,
15764
15984
  stepMetricValue,
15985
+ studentTQuantile,
15765
15986
  summarizeDiff,
15766
15987
  summarizeFilter,
15767
15988
  summarizeRule,