@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.
- package/README.md +47 -0
- package/dist/{chart-theme-Cl0IrkKQ.d.cts → ChartCore-BKK2HEfi.d.cts} +77 -50
- package/dist/chart-analytic-guide.d.ts +6 -0
- package/dist/chart-analytic-guide.js +10 -0
- package/dist/chart-analytic-model.d.ts +141 -0
- package/dist/chart-analytic-model.js +252 -0
- package/dist/chart-analytic.cjs +1372 -0
- package/dist/chart-analytic.d.cts +335 -0
- package/dist/chart-analytic.d.ts +19 -0
- package/dist/chart-analytic.js +95 -0
- package/dist/chart-panels-model.d.ts +92 -0
- package/dist/chart-panels-model.js +284 -0
- package/dist/chart-preset.cjs +41 -4
- package/dist/chart-preset.d.cts +2 -2
- package/dist/chart-preset.d.ts +1 -1
- package/dist/chart-stats-o4zDhpVm.d.cts +46 -0
- package/dist/chart-stats.d.ts +46 -0
- package/dist/chart-stats.js +89 -0
- package/dist/chart-theme.d.ts +3 -0
- package/dist/chart-theme.js +2 -0
- package/dist/chart.cjs +41 -4
- package/dist/chart.d.cts +2 -2
- package/dist/chart.d.ts +1 -1
- package/dist/components/Chart.d.ts +1 -1
- package/dist/components/ChartCore.d.ts +23 -3
- package/dist/components/ChartCore.js +40 -5
- package/dist/components/ChartPanels.d.ts +52 -0
- package/dist/components/ChartPanels.js +170 -0
- package/dist/components/InsightCard.d.ts +86 -0
- package/dist/components/InsightCard.js +118 -0
- package/dist/correlation-scatter-model.d.ts +68 -0
- package/dist/correlation-scatter-model.js +179 -0
- package/dist/icons/Icon.d.ts +23 -23
- package/dist/index.cjs +1179 -958
- package/dist/index.d.cts +84 -1
- package/dist/index.d.ts +2 -0
- package/dist/index.js +10 -0
- 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
|
|
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,
|
|
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
|
|
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,
|
|
6115
|
-
icon != null && /* @__PURE__ */ (0,
|
|
6116
|
-
/* @__PURE__ */ (0,
|
|
6117
|
-
count2 != null && /* @__PURE__ */ (0,
|
|
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,
|
|
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,
|
|
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,
|
|
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,
|
|
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,
|
|
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,
|
|
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
|
|
6396
|
+
var import_jsx_runtime60 = require("react/jsx-runtime");
|
|
6184
6397
|
function Kbd({ className, children, ...props }) {
|
|
6185
|
-
return /* @__PURE__ */ (0,
|
|
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,
|
|
6217
|
-
/* @__PURE__ */ (0,
|
|
6218
|
-
/* @__PURE__ */ (0,
|
|
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
|
|
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,
|
|
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,
|
|
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,
|
|
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,
|
|
6261
|
-
/* @__PURE__ */ (0,
|
|
6262
|
-
progress && /* @__PURE__ */ (0,
|
|
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,
|
|
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,
|
|
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,
|
|
6278
|
-
/* @__PURE__ */ (0,
|
|
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,
|
|
6281
|
-
children != null && /* @__PURE__ */ (0,
|
|
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,
|
|
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
|
|
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,
|
|
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,
|
|
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
|
|
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,
|
|
6393
|
-
icon != null && /* @__PURE__ */ (0,
|
|
6394
|
-
title != null && /* @__PURE__ */ (0,
|
|
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,
|
|
6401
|
-
icon != null && /* @__PURE__ */ (0,
|
|
6402
|
-
title != null && /* @__PURE__ */ (0,
|
|
6403
|
-
detail != null && /* @__PURE__ */ (0,
|
|
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,
|
|
6409
|
-
icon != null && /* @__PURE__ */ (0,
|
|
6410
|
-
title != null && /* @__PURE__ */ (0,
|
|
6411
|
-
detail != null && /* @__PURE__ */ (0,
|
|
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,
|
|
6417
|
-
icon != null && /* @__PURE__ */ (0,
|
|
6418
|
-
title != null && /* @__PURE__ */ (0,
|
|
6419
|
-
detail != null && /* @__PURE__ */ (0,
|
|
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,
|
|
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,
|
|
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,
|
|
6446
|
-
/* @__PURE__ */ (0,
|
|
6447
|
-
Array.from({ length: rows }, (_, i) => /* @__PURE__ */ (0,
|
|
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
|
|
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,
|
|
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,
|
|
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
|
|
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,
|
|
6545
|
-
/* @__PURE__ */ (0,
|
|
6546
|
-
/* @__PURE__ */ (0,
|
|
6547
|
-
/* @__PURE__ */ (0,
|
|
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,
|
|
6550
|
-
progress != null && /* @__PURE__ */ (0,
|
|
6551
|
-
action != null && /* @__PURE__ */ (0,
|
|
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
|
|
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,
|
|
6560
|
-
dot && /* @__PURE__ */ (0,
|
|
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
|
|
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,
|
|
6577
|
-
src ? /* @__PURE__ */ (0,
|
|
6578
|
-
state && /* @__PURE__ */ (0,
|
|
6579
|
-
state && /* @__PURE__ */ (0,
|
|
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,
|
|
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,
|
|
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,
|
|
6812
|
+
return /* @__PURE__ */ (0, import_jsx_runtime67.jsxs)("span", { className: cx("uix-user-chip", className), ...props, children: [
|
|
6600
6813
|
avatar,
|
|
6601
|
-
/* @__PURE__ */ (0,
|
|
6602
|
-
name != null && /* @__PURE__ */ (0,
|
|
6603
|
-
sub != null && /* @__PURE__ */ (0,
|
|
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
|
|
6823
|
+
var import_jsx_runtime68 = require("react/jsx-runtime");
|
|
6611
6824
|
function Comments({ children, className, ...props }) {
|
|
6612
|
-
return /* @__PURE__ */ (0,
|
|
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,
|
|
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,
|
|
6636
|
-
/* @__PURE__ */ (0,
|
|
6637
|
-
(byline != null || meta != null) && /* @__PURE__ */ (0,
|
|
6638
|
-
byline != null && /* @__PURE__ */ (0,
|
|
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,
|
|
6643
|
-
/* @__PURE__ */ (0,
|
|
6644
|
-
/* @__PURE__ */ (0,
|
|
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
|
|
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,
|
|
6665
|
-
/* @__PURE__ */ (0,
|
|
6666
|
-
/* @__PURE__ */ (0,
|
|
6667
|
-
state === "failed" && onRetry && /* @__PURE__ */ (0,
|
|
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
|
|
6886
|
+
var import_jsx_runtime70 = require("react/jsx-runtime");
|
|
6674
6887
|
function Composer({ children, className, label = "Add a comment", ...props }) {
|
|
6675
|
-
return /* @__PURE__ */ (0,
|
|
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,
|
|
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
|
|
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,
|
|
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,
|
|
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
|
|
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,
|
|
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,
|
|
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
|
|
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,
|
|
6901
|
-
/* @__PURE__ */ (0,
|
|
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,
|
|
7137
|
+
children: /* @__PURE__ */ (0, import_jsx_runtime73.jsx)(EditorIcon, { name: "more" })
|
|
6925
7138
|
}
|
|
6926
7139
|
),
|
|
6927
|
-
open && /* @__PURE__ */ (0,
|
|
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,
|
|
7019
|
-
showDensity && /* @__PURE__ */ (0,
|
|
7020
|
-
/* @__PURE__ */ (0,
|
|
7021
|
-
/* @__PURE__ */ (0,
|
|
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,
|
|
7024
|
-
displayLabel != null && /* @__PURE__ */ (0,
|
|
7025
|
-
zebra && /* @__PURE__ */ (0,
|
|
7026
|
-
/* @__PURE__ */ (0,
|
|
7027
|
-
/* @__PURE__ */ (0,
|
|
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,
|
|
7030
|
-
/* @__PURE__ */ (0,
|
|
7031
|
-
/* @__PURE__ */ (0,
|
|
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,
|
|
7035
|
-
columnsLabel != null && /* @__PURE__ */ (0,
|
|
7036
|
-
/* @__PURE__ */ (0,
|
|
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,
|
|
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,
|
|
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,
|
|
7279
|
+
children: /* @__PURE__ */ (0, import_jsx_runtime73.jsx)(EditorIcon, { name: "grip" })
|
|
7067
7280
|
}
|
|
7068
7281
|
),
|
|
7069
|
-
column.required ? /* @__PURE__ */ (0,
|
|
7070
|
-
/* @__PURE__ */ (0,
|
|
7071
|
-
/* @__PURE__ */ (0,
|
|
7072
|
-
] }) : /* @__PURE__ */ (0,
|
|
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,
|
|
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,
|
|
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,
|
|
7100
|
-
onReorder && /* @__PURE__ */ (0,
|
|
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,
|
|
7106
|
-
/* @__PURE__ */ (0,
|
|
7107
|
-
/* @__PURE__ */ (0,
|
|
7108
|
-
type === "select" || type === "enum" || type === "boolean" ? /* @__PURE__ */ (0,
|
|
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,
|
|
7111
|
-
/* @__PURE__ */ (0,
|
|
7112
|
-
/* @__PURE__ */ (0,
|
|
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,
|
|
7212
|
-
onReorder && /* @__PURE__ */ (0,
|
|
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,
|
|
7444
|
+
children: /* @__PURE__ */ (0, import_jsx_runtime73.jsx)(EditorIcon, { name: "grip" })
|
|
7232
7445
|
}
|
|
7233
7446
|
),
|
|
7234
|
-
/* @__PURE__ */ (0,
|
|
7235
|
-
onPinChange && /* @__PURE__ */ (0,
|
|
7236
|
-
extra != null && extra !== false && /* @__PURE__ */ (0,
|
|
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,
|
|
7241
|
-
visible.length === 0 && emptyLabel != null && /* @__PURE__ */ (0,
|
|
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,
|
|
7245
|
-
/* @__PURE__ */ (0,
|
|
7246
|
-
/* @__PURE__ */ (0,
|
|
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,
|
|
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
|
|
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,
|
|
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,
|
|
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,
|
|
7411
|
-
ops.length > 1 && /* @__PURE__ */ (0,
|
|
7412
|
-
/* @__PURE__ */ (0,
|
|
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,
|
|
7422
|
-
ops.length > 1 && /* @__PURE__ */ (0,
|
|
7423
|
-
/* @__PURE__ */ (0,
|
|
7424
|
-
value.operator === "between" && /* @__PURE__ */ (0,
|
|
7425
|
-
/* @__PURE__ */ (0,
|
|
7426
|
-
/* @__PURE__ */ (0,
|
|
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,
|
|
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,
|
|
7434
|
-
/* @__PURE__ */ (0,
|
|
7435
|
-
/* @__PURE__ */ (0,
|
|
7436
|
-
/* @__PURE__ */ (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,
|
|
7439
|
-
/* @__PURE__ */ (0,
|
|
7440
|
-
/* @__PURE__ */ (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,
|
|
7447
|
-
/* @__PURE__ */ (0,
|
|
7448
|
-
/* @__PURE__ */ (0,
|
|
7449
|
-
/* @__PURE__ */ (0,
|
|
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,
|
|
7455
|
-
/* @__PURE__ */ (0,
|
|
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,
|
|
7458
|
-
/* @__PURE__ */ (0,
|
|
7459
|
-
/* @__PURE__ */ (0,
|
|
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,
|
|
7475
|
-
presets.length > 0 && /* @__PURE__ */ (0,
|
|
7476
|
-
options.length > threshold && /* @__PURE__ */ (0,
|
|
7477
|
-
/* @__PURE__ */ (0,
|
|
7478
|
-
/* @__PURE__ */ (0,
|
|
7479
|
-
/* @__PURE__ */ (0,
|
|
7480
|
-
/* @__PURE__ */ (0,
|
|
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,
|
|
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,
|
|
7509
|
-
value.values.length > 0 && /* @__PURE__ */ (0,
|
|
7510
|
-
/* @__PURE__ */ (0,
|
|
7511
|
-
/* @__PURE__ */ (0,
|
|
7512
|
-
state.status === "loading" && /* @__PURE__ */ (0,
|
|
7513
|
-
state.status === "error" && /* @__PURE__ */ (0,
|
|
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,
|
|
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,
|
|
7519
|
-
state.status === "done" && state.results.map((r) => /* @__PURE__ */ (0,
|
|
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
|
|
7738
|
+
var import_jsx_runtime75 = require("react/jsx-runtime");
|
|
7526
7739
|
function Timeline({ children, className, ...props }) {
|
|
7527
|
-
return /* @__PURE__ */ (0,
|
|
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,
|
|
7531
|
-
/* @__PURE__ */ (0,
|
|
7532
|
-
node ?? /* @__PURE__ */ (0,
|
|
7533
|
-
/* @__PURE__ */ (0,
|
|
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,
|
|
7536
|
-
meta != null && /* @__PURE__ */ (0,
|
|
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
|
|
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,
|
|
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,
|
|
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,
|
|
7592
|
-
/* @__PURE__ */ (0,
|
|
7593
|
-
/* @__PURE__ */ (0,
|
|
7594
|
-
/* @__PURE__ */ (0,
|
|
7595
|
-
/* @__PURE__ */ (0,
|
|
7596
|
-
description != null && /* @__PURE__ */ (0,
|
|
7597
|
-
meta != null && /* @__PURE__ */ (0,
|
|
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
|
|
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,
|
|
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,
|
|
7638
|
-
icon != null && /* @__PURE__ */ (0,
|
|
7639
|
-
/* @__PURE__ */ (0,
|
|
7640
|
-
eyebrow != null && /* @__PURE__ */ (0,
|
|
7641
|
-
/* @__PURE__ */ (0,
|
|
7642
|
-
meta != null && /* @__PURE__ */ (0,
|
|
7643
|
-
/* @__PURE__ */ (0,
|
|
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,
|
|
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
|
|
7863
|
+
var import_jsx_runtime78 = require("react/jsx-runtime");
|
|
7651
7864
|
function Prose({ children, className, ...props }) {
|
|
7652
|
-
return /* @__PURE__ */ (0,
|
|
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,
|
|
7656
|
-
icon != null && /* @__PURE__ */ (0,
|
|
7657
|
-
/* @__PURE__ */ (0,
|
|
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
|
|
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,
|
|
7998
|
+
return /* @__PURE__ */ (0, import_jsx_runtime79.jsxs)(MenuContext.Provider, { value: { close }, children: [
|
|
7786
7999
|
triggerElement,
|
|
7787
|
-
/* @__PURE__ */ (0,
|
|
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,
|
|
7810
|
-
icon != null && /* @__PURE__ */ (0,
|
|
7811
|
-
/* @__PURE__ */ (0,
|
|
7812
|
-
shortcut != null && /* @__PURE__ */ (0,
|
|
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,
|
|
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,
|
|
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,
|
|
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,
|
|
7873
|
-
icon != null && /* @__PURE__ */ (0,
|
|
7874
|
-
/* @__PURE__ */ (0,
|
|
7875
|
-
shortcut != null && /* @__PURE__ */ (0,
|
|
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,
|
|
7883
|
-
label != null && /* @__PURE__ */ (0,
|
|
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,
|
|
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,
|
|
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,
|
|
7918
|
-
/* @__PURE__ */ (0,
|
|
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,
|
|
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
|
|
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,
|
|
7955
|
-
/* @__PURE__ */ (0,
|
|
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,
|
|
7969
|
-
/* @__PURE__ */ (0,
|
|
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,
|
|
7975
|
-
label != null && /* @__PURE__ */ (0,
|
|
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,
|
|
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,
|
|
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
|
|
8222
|
+
var import_jsx_runtime81 = require("react/jsx-runtime");
|
|
8010
8223
|
function Inbox({ view, children, className, ...props }) {
|
|
8011
|
-
return /* @__PURE__ */ (0,
|
|
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,
|
|
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,
|
|
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,
|
|
8094
|
-
preview != null && /* @__PURE__ */ (0,
|
|
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,
|
|
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
|
|
8319
|
+
var import_jsx_runtime82 = require("react/jsx-runtime");
|
|
8107
8320
|
function Kanban({ announcement, children, className, ...props }) {
|
|
8108
|
-
return /* @__PURE__ */ (0,
|
|
8109
|
-
announcement != null && /* @__PURE__ */ (0,
|
|
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,
|
|
8117
|
-
hasHead && /* @__PURE__ */ (0,
|
|
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,
|
|
8332
|
+
count2 != null && /* @__PURE__ */ (0, import_jsx_runtime82.jsx)("span", { className: "uix-kanban__count", children: count2 })
|
|
8120
8333
|
] }),
|
|
8121
|
-
/* @__PURE__ */ (0,
|
|
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,
|
|
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,
|
|
8150
|
-
meta && /* @__PURE__ */ (0,
|
|
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
|
|
8217
|
-
var ChevronIcon2 = () => /* @__PURE__ */ (0,
|
|
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,
|
|
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,
|
|
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,
|
|
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,
|
|
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,
|
|
8481
|
+
children: /* @__PURE__ */ (0, import_jsx_runtime83.jsx)(ChevronIcon2, {})
|
|
8269
8482
|
}
|
|
8270
8483
|
)
|
|
8271
|
-
) : /* @__PURE__ */ (0,
|
|
8272
|
-
node.icon && /* @__PURE__ */ (0,
|
|
8273
|
-
/* @__PURE__ */ (0,
|
|
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,
|
|
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,
|
|
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,
|
|
8335
|
-
] }) : /* @__PURE__ */ (0,
|
|
8336
|
-
/* @__PURE__ */ (0,
|
|
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,
|
|
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,
|
|
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,
|
|
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,
|
|
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,
|
|
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,
|
|
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,
|
|
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,
|
|
8878
|
+
children: /* @__PURE__ */ (0, import_jsx_runtime83.jsx)(ChevronIcon2, {})
|
|
8666
8879
|
}
|
|
8667
8880
|
)
|
|
8668
|
-
) : /* @__PURE__ */ (0,
|
|
8669
|
-
f.node.icon && /* @__PURE__ */ (0,
|
|
8670
|
-
/* @__PURE__ */ (0,
|
|
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,
|
|
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
|
|
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,
|
|
8697
|
-
/* @__PURE__ */ (0,
|
|
8698
|
-
kicker != null && /* @__PURE__ */ (0,
|
|
8699
|
-
/* @__PURE__ */ (0,
|
|
8700
|
-
lede != null && /* @__PURE__ */ (0,
|
|
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,
|
|
8703
|
-
searchLabel != null && /* @__PURE__ */ (0,
|
|
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,
|
|
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,
|
|
8712
|
-
return /* @__PURE__ */ (0,
|
|
8713
|
-
hasHelp(help) ? /* @__PURE__ */ (0,
|
|
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,
|
|
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,
|
|
8934
|
+
return /* @__PURE__ */ (0, import_jsx_runtime84.jsxs)("section", { className: cx("uix-notice", className), ...props, children: [
|
|
8722
8935
|
icon,
|
|
8723
|
-
/* @__PURE__ */ (0,
|
|
8724
|
-
/* @__PURE__ */ (0,
|
|
8725
|
-
title != null && /* @__PURE__ */ (0,
|
|
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,
|
|
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,
|
|
8732
|
-
position != null && /* @__PURE__ */ (0,
|
|
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,
|
|
8751
|
-
/* @__PURE__ */ (0,
|
|
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,
|
|
8762
|
-
(eyebrow != null || ordinal != null) && /* @__PURE__ */ (0,
|
|
8763
|
-
ordinal != null && /* @__PURE__ */ (0,
|
|
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,
|
|
8767
|
-
description != null && /* @__PURE__ */ (0,
|
|
8768
|
-
meta != null && /* @__PURE__ */ (0,
|
|
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,
|
|
8775
|
-
/* @__PURE__ */ (0,
|
|
8776
|
-
/* @__PURE__ */ (0,
|
|
8777
|
-
eyebrow != null && /* @__PURE__ */ (0,
|
|
8778
|
-
/* @__PURE__ */ (0,
|
|
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,
|
|
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,
|
|
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,
|
|
8796
|
-
/* @__PURE__ */ (0,
|
|
8797
|
-
topic != null && /* @__PURE__ */ (0,
|
|
8798
|
-
/* @__PURE__ */ (0,
|
|
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,
|
|
8806
|
-
meta != null && /* @__PURE__ */ (0,
|
|
8807
|
-
/* @__PURE__ */ (0,
|
|
8808
|
-
summary != null && /* @__PURE__ */ (0,
|
|
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,
|
|
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,
|
|
8816
|
-
/* @__PURE__ */ (0,
|
|
8817
|
-
/* @__PURE__ */ (0,
|
|
8818
|
-
meta != null && /* @__PURE__ */ (0,
|
|
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,
|
|
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,
|
|
8828
|
-
items?.map((item, i) => /* @__PURE__ */ (0,
|
|
8829
|
-
/* @__PURE__ */ (0,
|
|
8830
|
-
/* @__PURE__ */ (0,
|
|
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,
|
|
8837
|
-
/* @__PURE__ */ (0,
|
|
8838
|
-
/* @__PURE__ */ (0,
|
|
8839
|
-
/* @__PURE__ */ (0,
|
|
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,
|
|
8842
|
-
/* @__PURE__ */ (0,
|
|
8843
|
-
meta != null && /* @__PURE__ */ (0,
|
|
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,
|
|
9061
|
+
return /* @__PURE__ */ (0, import_jsx_runtime84.jsxs)("div", { className: cx("uix-status-row", className), ...props, children: [
|
|
8849
9062
|
indicator,
|
|
8850
|
-
/* @__PURE__ */ (0,
|
|
8851
|
-
meta != null && /* @__PURE__ */ (0,
|
|
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
|
|
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,
|
|
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,
|
|
9055
|
-
/* @__PURE__ */ (0,
|
|
9056
|
-
/* @__PURE__ */ (0,
|
|
9057
|
-
!hideCombinator && (combinator ? /* @__PURE__ */ (0,
|
|
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,
|
|
9274
|
+
] }) : /* @__PURE__ */ (0, import_jsx_runtime85.jsxs)("label", { children: [
|
|
9062
9275
|
labels.match,
|
|
9063
|
-
/* @__PURE__ */ (0,
|
|
9064
|
-
/* @__PURE__ */ (0,
|
|
9065
|
-
/* @__PURE__ */ (0,
|
|
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,
|
|
9070
|
-
/* @__PURE__ */ (0,
|
|
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,
|
|
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,
|
|
9086
|
-
/* @__PURE__ */ (0,
|
|
9087
|
-
allowGroups && /* @__PURE__ */ (0,
|
|
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,
|
|
9101
|
-
/* @__PURE__ */ (0,
|
|
9102
|
-
/* @__PURE__ */ (0,
|
|
9103
|
-
/* @__PURE__ */ (0,
|
|
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,
|
|
9106
|
-
/* @__PURE__ */ (0,
|
|
9107
|
-
/* @__PURE__ */ (0,
|
|
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,
|
|
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,
|
|
9115
|
-
/* @__PURE__ */ (0,
|
|
9116
|
-
/* @__PURE__ */ (0,
|
|
9117
|
-
/* @__PURE__ */ (0,
|
|
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,
|
|
9182
|
-
/* @__PURE__ */ (0,
|
|
9183
|
-
issues.length > 0 && /* @__PURE__ */ (0,
|
|
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,
|
|
9190
|
-
/* @__PURE__ */ (0,
|
|
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,
|
|
9208
|
-
/* @__PURE__ */ (0,
|
|
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,
|
|
9212
|
-
/* @__PURE__ */ (0,
|
|
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,
|
|
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,
|
|
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,
|
|
9240
|
-
/* @__PURE__ */ (0,
|
|
9241
|
-
/* @__PURE__ */ (0,
|
|
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
|
|
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,
|
|
9328
|
-
/* @__PURE__ */ (0,
|
|
9329
|
-
/* @__PURE__ */ (0,
|
|
9330
|
-
palette.length === 0 ? /* @__PURE__ */ (0,
|
|
9331
|
-
/* @__PURE__ */ (0,
|
|
9332
|
-
item.description && /* @__PURE__ */ (0,
|
|
9333
|
-
/* @__PURE__ */ (0,
|
|
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,
|
|
9337
|
-
/* @__PURE__ */ (0,
|
|
9338
|
-
loading ? /* @__PURE__ */ (0,
|
|
9339
|
-
/* @__PURE__ */ (0,
|
|
9340
|
-
onRetry && /* @__PURE__ */ (0,
|
|
9341
|
-
] }) : items.length === 0 ? /* @__PURE__ */ (0,
|
|
9342
|
-
/* @__PURE__ */ (0,
|
|
9343
|
-
palette[0] && /* @__PURE__ */ (0,
|
|
9344
|
-
] }) : /* @__PURE__ */ (0,
|
|
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,
|
|
9355
|
-
/* @__PURE__ */ (0,
|
|
9356
|
-
item.description && /* @__PURE__ */ (0,
|
|
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,
|
|
9359
|
-
/* @__PURE__ */ (0,
|
|
9360
|
-
/* @__PURE__ */ (0,
|
|
9361
|
-
/* @__PURE__ */ (0,
|
|
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,
|
|
9369
|
-
/* @__PURE__ */ (0,
|
|
9370
|
-
!selected ? /* @__PURE__ */ (0,
|
|
9371
|
-
/* @__PURE__ */ (0,
|
|
9372
|
-
/* @__PURE__ */ (0,
|
|
9373
|
-
/* @__PURE__ */ (0,
|
|
9374
|
-
/* @__PURE__ */ (0,
|
|
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
|
|
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,
|
|
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,
|
|
10014
|
-
overlay.kindLabel && /* @__PURE__ */ (0,
|
|
10015
|
-
/* @__PURE__ */ (0,
|
|
10016
|
-
overlay.scopeLabel && /* @__PURE__ */ (0,
|
|
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,
|
|
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,
|
|
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,
|
|
10024
|
-
const dash = /* @__PURE__ */ (0,
|
|
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,
|
|
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,
|
|
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,
|
|
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,
|
|
10058
|
-
/* @__PURE__ */ (0,
|
|
10059
|
-
/* @__PURE__ */ (0,
|
|
10060
|
-
/* @__PURE__ */ (0,
|
|
10061
|
-
renderEntry?.(entry) ?? /* @__PURE__ */ (0,
|
|
10062
|
-
entry.meta && /* @__PURE__ */ (0,
|
|
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,
|
|
10065
|
-
/* @__PURE__ */ (0,
|
|
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,
|
|
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,
|
|
10073
|
-
if (groups.length === 0) return /* @__PURE__ */ (0,
|
|
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,
|
|
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,
|
|
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,
|
|
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,
|
|
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
|
|
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,
|
|
10114
|
-
!continuation && /* @__PURE__ */ (0,
|
|
10115
|
-
/* @__PURE__ */ (0,
|
|
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,
|
|
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,
|
|
10122
|
-
continuation && /* @__PURE__ */ (0,
|
|
10123
|
-
(!continuation || alone) && text != null && text !== false && /* @__PURE__ */ (0,
|
|
10124
|
-
markers.length > 0 && /* @__PURE__ */ (0,
|
|
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,
|
|
10141
|
-
return /* @__PURE__ */ (0,
|
|
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,
|
|
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,
|
|
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,
|
|
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,
|
|
10536
|
-
/* @__PURE__ */ (0,
|
|
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,
|
|
10545
|
-
/* @__PURE__ */ (0,
|
|
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,
|
|
10560
|
-
info?.markers && info.markers.length > 0 && /* @__PURE__ */ (0,
|
|
10561
|
-
more > 0 && (onShowMore ? /* @__PURE__ */ (0,
|
|
10562
|
-
/* @__PURE__ */ (0,
|
|
10563
|
-
/* @__PURE__ */ (0,
|
|
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,
|
|
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,
|
|
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,
|
|
10588
|
-
overlay.kindLabel && /* @__PURE__ */ (0,
|
|
10589
|
-
/* @__PURE__ */ (0,
|
|
10590
|
-
overlay.scopeLabel && /* @__PURE__ */ (0,
|
|
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,
|
|
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,
|
|
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,
|
|
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,
|
|
10628
|
-
!placed.continuesBefore && !entry.allDay && /* @__PURE__ */ (0,
|
|
10629
|
-
/* @__PURE__ */ (0,
|
|
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,
|
|
10845
|
+
/* @__PURE__ */ (0, import_jsx_runtime88.jsx)("span", { className: "uix-scheduling-calendar__title", children: entry.title })
|
|
10633
10846
|
] }) }),
|
|
10634
|
-
markers.length > 0 && /* @__PURE__ */ (0,
|
|
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,
|
|
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,
|
|
10643
|
-
/* @__PURE__ */ (0,
|
|
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,
|
|
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,
|
|
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,
|
|
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,
|
|
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,
|
|
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,
|
|
10695
|
-
moving && /* @__PURE__ */ (0,
|
|
10696
|
-
/* @__PURE__ */ (0,
|
|
10697
|
-
/* @__PURE__ */ (0,
|
|
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
|
|
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,
|
|
10774
|
-
marker.icon != null && /* @__PURE__ */ (0,
|
|
10775
|
-
/* @__PURE__ */ (0,
|
|
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,
|
|
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,
|
|
11043
|
-
/* @__PURE__ */ (0,
|
|
11044
|
-
withTime && /* @__PURE__ */ (0,
|
|
11045
|
-
/* @__PURE__ */ (0,
|
|
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,
|
|
11261
|
+
/* @__PURE__ */ (0, import_jsx_runtime89.jsx)("span", { className: "uix-scheduling-calendar__title", children: entry.title })
|
|
11049
11262
|
] }) }),
|
|
11050
|
-
markers.length > 0 && /* @__PURE__ */ (0,
|
|
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,
|
|
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,
|
|
11073
|
-
hasBadge || info ? /* @__PURE__ */ (0,
|
|
11074
|
-
hasBadge && /* @__PURE__ */ (0,
|
|
11075
|
-
info && /* @__PURE__ */ (0,
|
|
11076
|
-
/* @__PURE__ */ (0,
|
|
11077
|
-
/* @__PURE__ */ (0,
|
|
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,
|
|
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,
|
|
11083
|
-
shown.map((entry) => /* @__PURE__ */ (0,
|
|
11084
|
-
countsOnly ? null : controlled ? hiddenCount > 0 && (onShowMore ? /* @__PURE__ */ (0,
|
|
11085
|
-
/* @__PURE__ */ (0,
|
|
11086
|
-
/* @__PURE__ */ (0,
|
|
11087
|
-
] })) : overflowing && /* @__PURE__ */ (0,
|
|
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,
|
|
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,
|
|
11110
|
-
overlay.kindLabel && /* @__PURE__ */ (0,
|
|
11111
|
-
/* @__PURE__ */ (0,
|
|
11112
|
-
overlay.scopeLabel && /* @__PURE__ */ (0,
|
|
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,
|
|
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,
|
|
11120
|
-
/* @__PURE__ */ (0,
|
|
11121
|
-
/* @__PURE__ */ (0,
|
|
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,
|
|
11133
|
-
showHeader && /* @__PURE__ */ (0,
|
|
11134
|
-
/* @__PURE__ */ (0,
|
|
11135
|
-
/* @__PURE__ */ (0,
|
|
11136
|
-
/* @__PURE__ */ (0,
|
|
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,
|
|
11139
|
-
/* @__PURE__ */ (0,
|
|
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,
|
|
11142
|
-
loading ? /* @__PURE__ */ (0,
|
|
11143
|
-
/* @__PURE__ */ (0,
|
|
11144
|
-
onRetry && /* @__PURE__ */ (0,
|
|
11145
|
-
] }) : view === "agenda" && agendaGroups ? /* @__PURE__ */ (0,
|
|
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,
|
|
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,
|
|
11169
|
-
/* @__PURE__ */ (0,
|
|
11170
|
-
/* @__PURE__ */ (0,
|
|
11171
|
-
/* @__PURE__ */ (0,
|
|
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,
|
|
11389
|
+
entry.meta && /* @__PURE__ */ (0, import_jsx_runtime89.jsx)("span", { children: entry.meta })
|
|
11177
11390
|
] }),
|
|
11178
|
-
markers.length > 0 && /* @__PURE__ */ (0,
|
|
11179
|
-
entry.state ? /* @__PURE__ */ (0,
|
|
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,
|
|
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,
|
|
11216
|
-
days.slice(0, 7).map((date) => /* @__PURE__ */ (0,
|
|
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,
|
|
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,
|
|
11221
|
-
legend.length > 0 && /* @__PURE__ */ (0,
|
|
11222
|
-
/* @__PURE__ */ (0,
|
|
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,
|
|
11226
|
-
] }) : /* @__PURE__ */ (0,
|
|
11227
|
-
["scheduled", "conflicted", "in-progress", "blackout-violation"].map((state) => /* @__PURE__ */ (0,
|
|
11228
|
-
legendCaption != null && legendCaption !== false && /* @__PURE__ */ (0,
|
|
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
|
|
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,
|
|
11480
|
-
marker.icon != null && /* @__PURE__ */ (0,
|
|
11481
|
-
/* @__PURE__ */ (0,
|
|
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,
|
|
12061
|
-
overlay.kindLabel && /* @__PURE__ */ (0,
|
|
12062
|
-
/* @__PURE__ */ (0,
|
|
12063
|
-
overlay.scopeLabel && /* @__PURE__ */ (0,
|
|
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,
|
|
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,
|
|
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,
|
|
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,
|
|
12134
|
-
item.meta && /* @__PURE__ */ (0,
|
|
12135
|
-
itemMarkers.length > 0 && /* @__PURE__ */ (0,
|
|
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,
|
|
12144
|
-
/* @__PURE__ */ (0,
|
|
12145
|
-
/* @__PURE__ */ (0,
|
|
12146
|
-
/* @__PURE__ */ (0,
|
|
12147
|
-
/* @__PURE__ */ (0,
|
|
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,
|
|
12150
|
-
collapsed && group.summary && /* @__PURE__ */ (0,
|
|
12151
|
-
/* @__PURE__ */ (0,
|
|
12152
|
-
group.summary.markers && group.summary.markers.length > 0 && /* @__PURE__ */ (0,
|
|
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,
|
|
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,
|
|
12163
|
-
/* @__PURE__ */ (0,
|
|
12164
|
-
/* @__PURE__ */ (0,
|
|
12165
|
-
lane.meta != null && /* @__PURE__ */ (0,
|
|
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,
|
|
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,
|
|
12171
|
-
ghostPos && /* @__PURE__ */ (0,
|
|
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,
|
|
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,
|
|
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,
|
|
12201
|
-
loading ? /* @__PURE__ */ (0,
|
|
12202
|
-
/* @__PURE__ */ (0,
|
|
12203
|
-
onRetry && /* @__PURE__ */ (0,
|
|
12204
|
-
] }) : /* @__PURE__ */ (0,
|
|
12205
|
-
(listed.length > 0 || markers.length > 0) && /* @__PURE__ */ (0,
|
|
12206
|
-
/* @__PURE__ */ (0,
|
|
12207
|
-
/* @__PURE__ */ (0,
|
|
12208
|
-
listed.map((o, index) => /* @__PURE__ */ (0,
|
|
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,
|
|
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,
|
|
12223
|
-
/* @__PURE__ */ (0,
|
|
12224
|
-
/* @__PURE__ */ (0,
|
|
12225
|
-
/* @__PURE__ */ (0,
|
|
12226
|
-
/* @__PURE__ */ (0,
|
|
12227
|
-
ticks.map((tick) => /* @__PURE__ */ (0,
|
|
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,
|
|
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,
|
|
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,
|
|
12235
|
-
/* @__PURE__ */ (0,
|
|
12236
|
-
/* @__PURE__ */ (0,
|
|
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,
|
|
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,
|
|
12249
|
-
/* @__PURE__ */ (0,
|
|
12250
|
-
/* @__PURE__ */ (0,
|
|
12251
|
-
/* @__PURE__ */ (0,
|
|
12252
|
-
ticks.map((tick) => /* @__PURE__ */ (0,
|
|
12253
|
-
minorTicks.map((tick) => /* @__PURE__ */ (0,
|
|
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,
|
|
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,
|
|
12265
|
-
/* @__PURE__ */ (0,
|
|
12266
|
-
/* @__PURE__ */ (0,
|
|
12267
|
-
/* @__PURE__ */ (0,
|
|
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,
|
|
12483
|
+
nothingToShow && /* @__PURE__ */ (0, import_jsx_runtime90.jsx)("p", { className: "uix-scheduling-timeline__empty", children: labels.empty })
|
|
12271
12484
|
] }),
|
|
12272
|
-
hint && /* @__PURE__ */ (0,
|
|
12273
|
-
/* @__PURE__ */ (0,
|
|
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
|
|
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,
|
|
12500
|
-
/* @__PURE__ */ (0,
|
|
12501
|
-
/* @__PURE__ */ (0,
|
|
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,
|
|
12504
|
-
/* @__PURE__ */ (0,
|
|
12505
|
-
/* @__PURE__ */ (0,
|
|
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,
|
|
12720
|
+
}, children: /* @__PURE__ */ (0, import_jsx_runtime91.jsx)(ChevronRightIcon, { size: "sm" }) })
|
|
12508
12721
|
] }),
|
|
12509
|
-
/* @__PURE__ */ (0,
|
|
12510
|
-
/* @__PURE__ */ (0,
|
|
12511
|
-
Array.from({ length: blanks }, (_, index) => /* @__PURE__ */ (0,
|
|
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,
|
|
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
|
|
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,
|
|
12637
|
-
/* @__PURE__ */ (0,
|
|
12638
|
-
/* @__PURE__ */ (0,
|
|
12639
|
-
/* @__PURE__ */ (0,
|
|
12640
|
-
/* @__PURE__ */ (0,
|
|
12641
|
-
/* @__PURE__ */ (0,
|
|
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,
|
|
12645
|
-
/* @__PURE__ */ (0,
|
|
12646
|
-
/* @__PURE__ */ (0,
|
|
12647
|
-
/* @__PURE__ */ (0,
|
|
12648
|
-
Array.from({ length: ((/* @__PURE__ */ new Date(`${month}T00:00:00Z`)).getUTCDay() - weekStartsOn + 7) % 7 }, (_, index) => /* @__PURE__ */ (0,
|
|
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,
|
|
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,
|
|
12675
|
-
rangeInvalid && /* @__PURE__ */ (0,
|
|
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,
|
|
12682
|
-
return /* @__PURE__ */ (0,
|
|
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,
|
|
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,
|
|
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,
|
|
12742
|
-
/* @__PURE__ */ (0,
|
|
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,
|
|
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,
|
|
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,
|
|
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
|
|
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,
|
|
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,
|
|
12911
|
-
/* @__PURE__ */ (0,
|
|
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,
|
|
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,
|
|
13161
|
+
children: /* @__PURE__ */ (0, import_jsx_runtime93.jsx)(CalendarIcon, { size: "sm" })
|
|
12949
13162
|
}
|
|
12950
13163
|
)
|
|
12951
13164
|
] }),
|
|
12952
|
-
name && /* @__PURE__ */ (0,
|
|
12953
|
-
problem && /* @__PURE__ */ (0,
|
|
12954
|
-
/* @__PURE__ */ (0,
|
|
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,
|
|
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,
|
|
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,
|
|
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,
|
|
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,
|
|
13098
|
-
/* @__PURE__ */ (0,
|
|
13099
|
-
/* @__PURE__ */ (0,
|
|
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,
|
|
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
|
|
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,
|
|
13604
|
-
/* @__PURE__ */ (0,
|
|
13605
|
-
/* @__PURE__ */ (0,
|
|
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,
|
|
13608
|
-
/* @__PURE__ */ (0,
|
|
13609
|
-
/* @__PURE__ */ (0,
|
|
13610
|
-
node.type && /* @__PURE__ */ (0,
|
|
13611
|
-
/* @__PURE__ */ (0,
|
|
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,
|
|
13614
|
-
onExpandNeighbors && /* @__PURE__ */ (0,
|
|
13615
|
-
onOpenDetails && /* @__PURE__ */ (0,
|
|
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
|
|
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,
|
|
13897
|
-
/* @__PURE__ */ (0,
|
|
13898
|
-
/* @__PURE__ */ (0,
|
|
13899
|
-
/* @__PURE__ */ (0,
|
|
13900
|
-
/* @__PURE__ */ (0,
|
|
13901
|
-
/* @__PURE__ */ (0,
|
|
13902
|
-
/* @__PURE__ */ (0,
|
|
13903
|
-
/* @__PURE__ */ (0,
|
|
13904
|
-
/* @__PURE__ */ (0,
|
|
13905
|
-
/* @__PURE__ */ (0,
|
|
13906
|
-
/* @__PURE__ */ (0,
|
|
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,
|
|
13909
|
-
/* @__PURE__ */ (0,
|
|
13910
|
-
/* @__PURE__ */ (0,
|
|
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,
|
|
13921
|
-
/* @__PURE__ */ (0,
|
|
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,
|
|
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,
|
|
13935
|
-
edge.arrow !== "none" && /* @__PURE__ */ (0,
|
|
13936
|
-
showLabel(edge) && /* @__PURE__ */ (0,
|
|
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,
|
|
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,
|
|
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,
|
|
13956
|
-
/* @__PURE__ */ (0,
|
|
13957
|
-
/* @__PURE__ */ (0,
|
|
13958
|
-
] }) : renderNode?.(item.node, { selected, dimmed }) ?? /* @__PURE__ */ (0,
|
|
13959
|
-
/* @__PURE__ */ (0,
|
|
13960
|
-
(item.node.type || item.node.description) && /* @__PURE__ */ (0,
|
|
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,
|
|
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,
|
|
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,
|
|
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,
|
|
14018
|
-
showList && /* @__PURE__ */ (0,
|
|
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
|
|
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,
|
|
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,
|
|
14104
|
-
/* @__PURE__ */ (0,
|
|
14105
|
-
props.onRetry && /* @__PURE__ */ (0,
|
|
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,
|
|
14109
|
-
/* @__PURE__ */ (0,
|
|
14110
|
-
/* @__PURE__ */ (0,
|
|
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,
|
|
14113
|
-
return /* @__PURE__ */ (0,
|
|
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,
|
|
14167
|
-
/* @__PURE__ */ (0,
|
|
14168
|
-
/* @__PURE__ */ (0,
|
|
14169
|
-
/* @__PURE__ */ (0,
|
|
14170
|
-
/* @__PURE__ */ (0,
|
|
14171
|
-
/* @__PURE__ */ (0,
|
|
14172
|
-
/* @__PURE__ */ (0,
|
|
14173
|
-
/* @__PURE__ */ (0,
|
|
14174
|
-
/* @__PURE__ */ (0,
|
|
14175
|
-
/* @__PURE__ */ (0,
|
|
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,
|
|
14178
|
-
/* @__PURE__ */ (0,
|
|
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,
|
|
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,
|
|
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,
|
|
14201
|
-
/* @__PURE__ */ (0,
|
|
14202
|
-
/* @__PURE__ */ (0,
|
|
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,
|
|
14209
|
-
showList && /* @__PURE__ */ (0,
|
|
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
|
|
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,
|
|
14311
|
-
if (error) return /* @__PURE__ */ (0,
|
|
14312
|
-
/* @__PURE__ */ (0,
|
|
14313
|
-
onRetry && /* @__PURE__ */ (0,
|
|
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,
|
|
14316
|
-
/* @__PURE__ */ (0,
|
|
14317
|
-
/* @__PURE__ */ (0,
|
|
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,
|
|
14320
|
-
/* @__PURE__ */ (0,
|
|
14321
|
-
/* @__PURE__ */ (0,
|
|
14322
|
-
/* @__PURE__ */ (0,
|
|
14323
|
-
/* @__PURE__ */ (0,
|
|
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,
|
|
14326
|
-
/* @__PURE__ */ (0,
|
|
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,
|
|
14331
|
-
/* @__PURE__ */ (0,
|
|
14332
|
-
/* @__PURE__ */ (0,
|
|
14333
|
-
/* @__PURE__ */ (0,
|
|
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,
|
|
14336
|
-
/* @__PURE__ */ (0,
|
|
14337
|
-
/* @__PURE__ */ (0,
|
|
14338
|
-
/* @__PURE__ */ (0,
|
|
14339
|
-
/* @__PURE__ */ (0,
|
|
14340
|
-
fields.map((field) => /* @__PURE__ */ (0,
|
|
14341
|
-
/* @__PURE__ */ (0,
|
|
14342
|
-
/* @__PURE__ */ (0,
|
|
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,
|
|
14557
|
+
/* @__PURE__ */ (0, import_jsx_runtime97.jsx)("tbody", { children: candidates.map((candidate) => {
|
|
14345
14558
|
const resolved = candidate.status === "resolved";
|
|
14346
|
-
return /* @__PURE__ */ (0,
|
|
14347
|
-
/* @__PURE__ */ (0,
|
|
14348
|
-
/* @__PURE__ */ (0,
|
|
14349
|
-
fields.map((field) => /* @__PURE__ */ (0,
|
|
14350
|
-
/* @__PURE__ */ (0,
|
|
14351
|
-
/* @__PURE__ */ (0,
|
|
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,
|
|
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
|
|
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,
|
|
14445
|
-
/* @__PURE__ */ (0,
|
|
14446
|
-
/* @__PURE__ */ (0,
|
|
14447
|
-
/* @__PURE__ */ (0,
|
|
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,
|
|
14467
|
-
/* @__PURE__ */ (0,
|
|
14468
|
-
/* @__PURE__ */ (0,
|
|
14469
|
-
/* @__PURE__ */ (0,
|
|
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,
|
|
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,
|
|
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
|
|
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,
|
|
14503
|
-
/* @__PURE__ */ (0,
|
|
14504
|
-
/* @__PURE__ */ (0,
|
|
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,
|
|
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,
|
|
14512
|
-
/* @__PURE__ */ (0,
|
|
14513
|
-
over > 0 && /* @__PURE__ */ (0,
|
|
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,
|
|
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
|
|
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,
|
|
14682
|
-
/* @__PURE__ */ (0,
|
|
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,
|
|
14695
|
-
/* @__PURE__ */ (0,
|
|
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,
|
|
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,
|
|
14711
|
-
/* @__PURE__ */ (0,
|
|
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,
|
|
14927
|
+
/* @__PURE__ */ (0, import_jsx_runtime100.jsxs)("span", { children: [
|
|
14715
14928
|
Math.round(hsv.h),
|
|
14716
14929
|
"\xB0"
|
|
14717
14930
|
] }),
|
|
14718
|
-
/* @__PURE__ */ (0,
|
|
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,
|
|
14933
|
+
/* @__PURE__ */ (0, import_jsx_runtime100.jsxs)("label", { className: "uix-color-picker__range", children: [
|
|
14721
14934
|
labels.saturation,
|
|
14722
14935
|
" ",
|
|
14723
|
-
/* @__PURE__ */ (0,
|
|
14936
|
+
/* @__PURE__ */ (0, import_jsx_runtime100.jsxs)("span", { children: [
|
|
14724
14937
|
Math.round(hsv.s * 100),
|
|
14725
14938
|
"%"
|
|
14726
14939
|
] }),
|
|
14727
|
-
/* @__PURE__ */ (0,
|
|
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,
|
|
14942
|
+
/* @__PURE__ */ (0, import_jsx_runtime100.jsxs)("label", { className: "uix-color-picker__range", children: [
|
|
14730
14943
|
labels.brightness,
|
|
14731
14944
|
" ",
|
|
14732
|
-
/* @__PURE__ */ (0,
|
|
14945
|
+
/* @__PURE__ */ (0, import_jsx_runtime100.jsxs)("span", { children: [
|
|
14733
14946
|
Math.round(hsv.v * 100),
|
|
14734
14947
|
"%"
|
|
14735
14948
|
] }),
|
|
14736
|
-
/* @__PURE__ */ (0,
|
|
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,
|
|
14951
|
+
/* @__PURE__ */ (0, import_jsx_runtime100.jsxs)("label", { className: "uix-color-picker__hex", children: [
|
|
14739
14952
|
labels.hex,
|
|
14740
|
-
/* @__PURE__ */ (0,
|
|
14741
|
-
/* @__PURE__ */ (0,
|
|
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,
|
|
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,
|
|
14748
|
-
presets.length > 0 && /* @__PURE__ */ (0,
|
|
14749
|
-
/* @__PURE__ */ (0,
|
|
14750
|
-
/* @__PURE__ */ (0,
|
|
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,
|
|
14753
|
-
/* @__PURE__ */ (0,
|
|
14754
|
-
/* @__PURE__ */ (0,
|
|
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,
|
|
14758
|
-
/* @__PURE__ */ (0,
|
|
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
|
|
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,
|
|
14876
|
-
/* @__PURE__ */ (0,
|
|
14877
|
-
profiles.length > 0 && /* @__PURE__ */ (0,
|
|
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,
|
|
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,
|
|
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,
|
|
15097
|
+
/* @__PURE__ */ (0, import_jsx_runtime101.jsxs)("label", { className: "uix-field__label", children: [
|
|
14885
15098
|
labels.name,
|
|
14886
|
-
/* @__PURE__ */ (0,
|
|
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,
|
|
14889
|
-
/* @__PURE__ */ (0,
|
|
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,
|
|
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,
|
|
15106
|
+
/* @__PURE__ */ (0, import_jsx_runtime101.jsxs)("label", { children: [
|
|
14894
15107
|
labels.onBrand,
|
|
14895
|
-
/* @__PURE__ */ (0,
|
|
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,
|
|
15111
|
+
/* @__PURE__ */ (0, import_jsx_runtime101.jsxs)("label", { className: "uix-field__label", children: [
|
|
14899
15112
|
labels.bodyFont,
|
|
14900
|
-
/* @__PURE__ */ (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,
|
|
15115
|
+
/* @__PURE__ */ (0, import_jsx_runtime101.jsxs)("label", { className: "uix-field__label", children: [
|
|
14903
15116
|
labels.headingFont,
|
|
14904
|
-
/* @__PURE__ */ (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,
|
|
15119
|
+
/* @__PURE__ */ (0, import_jsx_runtime101.jsxs)("label", { className: "uix-file-upload uix-brand-profiles__upload", children: [
|
|
14907
15120
|
labels.logoFile,
|
|
14908
|
-
/* @__PURE__ */ (0,
|
|
15121
|
+
/* @__PURE__ */ (0, import_jsx_runtime101.jsx)("input", { type: "file", accept: "image/*", onChange: onFile })
|
|
14909
15122
|
] }),
|
|
14910
|
-
/* @__PURE__ */ (0,
|
|
14911
|
-
/* @__PURE__ */ (0,
|
|
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,
|
|
14914
|
-
/* @__PURE__ */ (0,
|
|
14915
|
-
value.logo ? /* @__PURE__ */ (0,
|
|
14916
|
-
/* @__PURE__ */ (0,
|
|
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,
|
|
14919
|
-
/* @__PURE__ */ (0,
|
|
14920
|
-
/* @__PURE__ */ (0,
|
|
14921
|
-
/* @__PURE__ */ (0,
|
|
14922
|
-
/* @__PURE__ */ (0,
|
|
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
|
|
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,
|
|
15036
|
-
/* @__PURE__ */ (0,
|
|
15037
|
-
/* @__PURE__ */ (0,
|
|
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,
|
|
15040
|
-
/* @__PURE__ */ (0,
|
|
15041
|
-
GROUPS.map((kind) => /* @__PURE__ */ (0,
|
|
15042
|
-
/* @__PURE__ */ (0,
|
|
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,
|
|
15047
|
-
/* @__PURE__ */ (0,
|
|
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,
|
|
15052
|
-
/* @__PURE__ */ (0,
|
|
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,
|
|
15061
|
-
/* @__PURE__ */ (0,
|
|
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,
|
|
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,
|
|
15069
|
-
/* @__PURE__ */ (0,
|
|
15070
|
-
/* @__PURE__ */ (0,
|
|
15071
|
-
/* @__PURE__ */ (0,
|
|
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,
|
|
15074
|
-
/* @__PURE__ */ (0,
|
|
15075
|
-
/* @__PURE__ */ (0,
|
|
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,
|
|
15078
|
-
/* @__PURE__ */ (0,
|
|
15079
|
-
/* @__PURE__ */ (0,
|
|
15080
|
-
/* @__PURE__ */ (0,
|
|
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,
|
|
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
|
|
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,
|
|
15365
|
-
/* @__PURE__ */ (0,
|
|
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,
|
|
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,
|
|
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,
|
|
15376
|
-
/* @__PURE__ */ (0,
|
|
15377
|
-
/* @__PURE__ */ (0,
|
|
15378
|
-
/* @__PURE__ */ (0,
|
|
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,
|
|
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,
|
|
15391
|
-
return /* @__PURE__ */ (0,
|
|
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,
|
|
15397
|
-
return /* @__PURE__ */ (0,
|
|
15398
|
-
before && /* @__PURE__ */ (0,
|
|
15399
|
-
after && /* @__PURE__ */ (0,
|
|
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,
|
|
15403
|
-
/* @__PURE__ */ (0,
|
|
15404
|
-
/* @__PURE__ */ (0,
|
|
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,
|
|
15429
|
-
/* @__PURE__ */ (0,
|
|
15430
|
-
view === "unified" && /* @__PURE__ */ (0,
|
|
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,
|
|
15434
|
-
view === "unified" && /* @__PURE__ */ (0,
|
|
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,
|
|
15441
|
-
else if (granularity === "line") body = /* @__PURE__ */ (0,
|
|
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,
|
|
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,
|
|
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,
|
|
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,
|
|
15451
|
-
/* @__PURE__ */ (0,
|
|
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,
|
|
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,
|
|
15460
|
-
!hideSummary && result.status === "ok" && /* @__PURE__ */ (0,
|
|
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,
|