@apliteni/apliteni-ui 0.58.2 → 0.60.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/package.json +11 -3
- package/react/README.md +17 -4
- package/react/dist/index.d.ts +17 -3
- package/react/dist/index.js +379 -287
- package/src/components/command-palette.js +2 -128
- package/src/components/dropdown.js +2 -16
- package/src/components/index.js +3 -1
- package/src/components/pagination.js +3 -2
- package/src/components/segmented.js +2 -9
- package/src/components/table-values.js +7 -7
- package/src/index.d.ts +128 -0
- package/src/index.js +7 -0
- package/src/logic/callout.js +1 -0
- package/src/logic/command-palette.js +127 -0
- package/src/logic/dropdown.js +16 -0
- package/src/logic/pagination.js +2 -0
- package/src/logic/segmented.js +8 -0
- package/src/logic/table-values.js +10 -0
- package/src/motion.d.ts +6 -0
package/react/dist/index.js
CHANGED
|
@@ -162,28 +162,62 @@ function Badge({ variant = "neutral", children }) {
|
|
|
162
162
|
return /* @__PURE__ */ jsx3("span", { className: cls, children });
|
|
163
163
|
}
|
|
164
164
|
|
|
165
|
+
// src/primitives/Pill.tsx
|
|
166
|
+
import { forwardRef as forwardRef2 } from "react";
|
|
167
|
+
import { jsx as jsx4 } from "react/jsx-runtime";
|
|
168
|
+
var Pill = forwardRef2(function Pill2({
|
|
169
|
+
variant,
|
|
170
|
+
className,
|
|
171
|
+
...rest
|
|
172
|
+
}, ref) {
|
|
173
|
+
const classes = ["ui-pill", variant && `ui-pill--${variant}`, className].filter(Boolean).join(" ");
|
|
174
|
+
return /* @__PURE__ */ jsx4("span", { ...rest, ref, className: classes });
|
|
175
|
+
});
|
|
176
|
+
|
|
177
|
+
// src/primitives/StatusDot.tsx
|
|
178
|
+
import { forwardRef as forwardRef3 } from "react";
|
|
179
|
+
import { jsx as jsx5 } from "react/jsx-runtime";
|
|
180
|
+
var StatusDot = forwardRef3(function StatusDot2({
|
|
181
|
+
live = false,
|
|
182
|
+
className,
|
|
183
|
+
...rest
|
|
184
|
+
}, ref) {
|
|
185
|
+
const labelled = Boolean(rest["aria-label"]?.trim() || rest["aria-labelledby"]?.trim());
|
|
186
|
+
const classes = ["ui-dot", live && "is-live", className].filter(Boolean).join(" ");
|
|
187
|
+
return /* @__PURE__ */ jsx5(
|
|
188
|
+
"span",
|
|
189
|
+
{
|
|
190
|
+
role: labelled ? "img" : void 0,
|
|
191
|
+
"aria-hidden": labelled ? void 0 : true,
|
|
192
|
+
...rest,
|
|
193
|
+
ref,
|
|
194
|
+
className: classes
|
|
195
|
+
}
|
|
196
|
+
);
|
|
197
|
+
});
|
|
198
|
+
|
|
165
199
|
// src/primitives/Card.tsx
|
|
166
|
-
import { jsx as
|
|
200
|
+
import { jsx as jsx6, jsxs as jsxs2 } from "react/jsx-runtime";
|
|
167
201
|
function Card({ title, sub, level = 2, children }) {
|
|
168
202
|
const n = Number(level);
|
|
169
203
|
const Heading = `h${[2, 3, 4, 5, 6].includes(n) ? n : 2}`;
|
|
170
204
|
const titled = title != null && title !== false && title !== "";
|
|
171
205
|
return /* @__PURE__ */ jsxs2("div", { className: "ui-card", children: [
|
|
172
|
-
titled && /* @__PURE__ */
|
|
173
|
-
sub != null && /* @__PURE__ */
|
|
206
|
+
titled && /* @__PURE__ */ jsx6(Heading, { className: "ui-card__title", children: title }),
|
|
207
|
+
sub != null && /* @__PURE__ */ jsx6("div", { className: "ui-card__sub", children: sub }),
|
|
174
208
|
children
|
|
175
209
|
] });
|
|
176
210
|
}
|
|
177
211
|
|
|
178
212
|
// src/primitives/Callout.tsx
|
|
179
213
|
import { calloutIcons, icon as kitIcon } from "@apliteni/apliteni-ui";
|
|
180
|
-
import { jsx as
|
|
214
|
+
import { jsx as jsx7, jsxs as jsxs3 } from "react/jsx-runtime";
|
|
181
215
|
function Callout({ variant, icon: icon6 = calloutIcons[variant ?? "neutral"], children, actions }) {
|
|
182
216
|
return /* @__PURE__ */ jsxs3("div", { className: `ui-callout${variant && variant !== "neutral" ? ` ui-callout--${variant}` : ""}`, role: variant === "danger" ? "alert" : void 0, children: [
|
|
183
|
-
/* @__PURE__ */
|
|
217
|
+
/* @__PURE__ */ jsx7("span", { className: "ui-callout__icon", dangerouslySetInnerHTML: { __html: kitIcon(icon6) } }),
|
|
184
218
|
/* @__PURE__ */ jsxs3("div", { className: "ui-callout__body", children: [
|
|
185
219
|
children,
|
|
186
|
-
actions != null && /* @__PURE__ */
|
|
220
|
+
actions != null && /* @__PURE__ */ jsx7("div", { className: "ui-toolbar ui-callout__actions", children: actions })
|
|
187
221
|
] })
|
|
188
222
|
] });
|
|
189
223
|
}
|
|
@@ -193,7 +227,7 @@ import { useId as useId2 } from "react";
|
|
|
193
227
|
|
|
194
228
|
// src/Tooltip.tsx
|
|
195
229
|
import { useEffect, useId, useLayoutEffect as useLayoutEffect2, useRef as useRef2, useState } from "react";
|
|
196
|
-
import { jsx as
|
|
230
|
+
import { jsx as jsx8, jsxs as jsxs4 } from "react/jsx-runtime";
|
|
197
231
|
function Tooltip({ text: text2, children }) {
|
|
198
232
|
const id = useId();
|
|
199
233
|
const host = useRef2(null);
|
|
@@ -250,7 +284,7 @@ function Tooltip({ text: text2, children }) {
|
|
|
250
284
|
};
|
|
251
285
|
}, [open]);
|
|
252
286
|
return /* @__PURE__ */ jsxs4("span", { ref: host, className: "ui-tip-host", style: { display: "inline-block" }, children: [
|
|
253
|
-
/* @__PURE__ */
|
|
287
|
+
/* @__PURE__ */ jsx8(
|
|
254
288
|
"span",
|
|
255
289
|
{
|
|
256
290
|
ref: trigger,
|
|
@@ -287,12 +321,12 @@ function Tooltip({ text: text2, children }) {
|
|
|
287
321
|
children
|
|
288
322
|
}
|
|
289
323
|
),
|
|
290
|
-
/* @__PURE__ */
|
|
324
|
+
/* @__PURE__ */ jsx8("span", { ref: tip, id, role: "tooltip", className: `ui-tip${open ? " is-open" : ""}`, children: /* @__PURE__ */ jsx8("span", { className: "ui-tip__label", children: text2 }) })
|
|
291
325
|
] });
|
|
292
326
|
}
|
|
293
327
|
|
|
294
328
|
// src/primitives/StatBand.tsx
|
|
295
|
-
import { Fragment, jsx as
|
|
329
|
+
import { Fragment, jsx as jsx9, jsxs as jsxs5 } from "react/jsx-runtime";
|
|
296
330
|
var GLYPH = { up: "arrowUp", down: "arrowDown", flat: "minus" };
|
|
297
331
|
var directionOf = (text2) => {
|
|
298
332
|
const t = text2.trim();
|
|
@@ -301,15 +335,15 @@ var directionOf = (text2) => {
|
|
|
301
335
|
var hasChange = (d) => !!d && d.value != null && d.value !== "";
|
|
302
336
|
function Delta({ delta, basisId }) {
|
|
303
337
|
if (!hasChange(delta)) {
|
|
304
|
-
return /* @__PURE__ */
|
|
338
|
+
return /* @__PURE__ */ jsx9("dd", { className: "ui-stat__delta ui-stat__delta--none", children: delta.none || "No earlier figure" });
|
|
305
339
|
}
|
|
306
340
|
const dir = delta.direction && GLYPH[delta.direction] ? delta.direction : directionOf(delta.value);
|
|
307
341
|
return /* @__PURE__ */ jsxs5("dd", { className: "ui-stat__delta", "aria-describedby": !delta.basis && basisId ? basisId : void 0, children: [
|
|
308
|
-
/* @__PURE__ */
|
|
309
|
-
delta.tooltip ? /* @__PURE__ */
|
|
342
|
+
/* @__PURE__ */ jsx9(Icon, { name: GLYPH[dir] }),
|
|
343
|
+
delta.tooltip ? /* @__PURE__ */ jsx9(Tooltip, { text: delta.tooltip, children: /* @__PURE__ */ jsx9("span", { className: "ui-stat__change", children: delta.value }) }) : /* @__PURE__ */ jsx9("span", { className: "ui-stat__change", children: delta.value }),
|
|
310
344
|
delta.basis ? /* @__PURE__ */ jsxs5(Fragment, { children: [
|
|
311
345
|
" ",
|
|
312
|
-
/* @__PURE__ */
|
|
346
|
+
/* @__PURE__ */ jsx9("span", { className: "ui-stat__basis", children: delta.basis })
|
|
313
347
|
] }) : null
|
|
314
348
|
] });
|
|
315
349
|
}
|
|
@@ -319,15 +353,15 @@ function StatBand({ stats, variant = "tiles", basis, basisId: sharedBasisId, lab
|
|
|
319
353
|
const basisId = basis ? `${id || auto}-basis` : sharedBasisId;
|
|
320
354
|
const root = ["ui-stats", `ui-stats--${v}`, v === "band" && "ui-card"].filter(Boolean).join(" ");
|
|
321
355
|
return /* @__PURE__ */ jsxs5("div", { className: root, role: label ? "group" : void 0, "aria-label": label || void 0, children: [
|
|
322
|
-
basis ? /* @__PURE__ */
|
|
323
|
-
/* @__PURE__ */
|
|
356
|
+
basis ? /* @__PURE__ */ jsx9("p", { className: "ui-stats__basis", id: basisId, children: basis }) : null,
|
|
357
|
+
/* @__PURE__ */ jsx9("dl", { className: "ui-stats__list", children: stats.map((s, i) => {
|
|
324
358
|
const tone = hasChange(s.delta) && (s.delta.tone === "good" || s.delta.tone === "bad") ? s.delta.tone : "";
|
|
325
359
|
const cls = ["ui-stat", tone && `ui-stat--${tone}`, v === "tiles" && "ui-card ui-card--pad-sm"].filter(Boolean).join(" ");
|
|
326
360
|
return /* @__PURE__ */ jsxs5("div", { className: cls, children: [
|
|
327
|
-
/* @__PURE__ */
|
|
328
|
-
/* @__PURE__ */
|
|
329
|
-
s.delta ? /* @__PURE__ */
|
|
330
|
-
s.trend ? /* @__PURE__ */
|
|
361
|
+
/* @__PURE__ */ jsx9("dt", { className: "ui-stat__label", children: s.label }),
|
|
362
|
+
/* @__PURE__ */ jsx9("dd", { className: "ui-stat__value", children: s.value }),
|
|
363
|
+
s.delta ? /* @__PURE__ */ jsx9(Delta, { delta: s.delta, basisId }) : null,
|
|
364
|
+
s.trend ? /* @__PURE__ */ jsx9("dd", { className: "ui-stat__trend", children: s.trend }) : null
|
|
331
365
|
] }, `${s.label}-${i}`);
|
|
332
366
|
}) })
|
|
333
367
|
] });
|
|
@@ -551,7 +585,7 @@ function useDialog(active, { root, panel, body, initialFocus }, onClose) {
|
|
|
551
585
|
}
|
|
552
586
|
|
|
553
587
|
// src/Modal.tsx
|
|
554
|
-
import { jsx as
|
|
588
|
+
import { jsx as jsx10, jsxs as jsxs6 } from "react/jsx-runtime";
|
|
555
589
|
function Modal({ open, title, onClose, footer, children, initialFocusRef, role = "dialog" }) {
|
|
556
590
|
const id = useId3();
|
|
557
591
|
const titleId = `${id}-title`;
|
|
@@ -563,7 +597,7 @@ function Modal({ open, title, onClose, footer, children, initialFocusRef, role =
|
|
|
563
597
|
const scope = useDialog(shown, { root, panel, body, initialFocus: initialFocusRef }, onClose);
|
|
564
598
|
if (!mounted) return null;
|
|
565
599
|
return createPortal(
|
|
566
|
-
/* @__PURE__ */
|
|
600
|
+
/* @__PURE__ */ jsx10(DialogScope.Provider, { value: scope, children: /* @__PURE__ */ jsx10("div", { className: shown ? "rx-scrim is-open" : "rx-scrim", ref: root, onMouseDown: dismissOnScrim(onClose), children: /* @__PURE__ */ jsxs6(
|
|
567
601
|
"div",
|
|
568
602
|
{
|
|
569
603
|
className: "rx-modal",
|
|
@@ -575,11 +609,11 @@ function Modal({ open, title, onClose, footer, children, initialFocusRef, role =
|
|
|
575
609
|
ref: panel,
|
|
576
610
|
children: [
|
|
577
611
|
/* @__PURE__ */ jsxs6("div", { className: "rx-modal__head", children: [
|
|
578
|
-
/* @__PURE__ */
|
|
579
|
-
/* @__PURE__ */
|
|
612
|
+
/* @__PURE__ */ jsx10("h2", { className: "rx-modal__title", id: titleId, children: title }),
|
|
613
|
+
/* @__PURE__ */ jsx10(Button, { variant: "ghost", size: "sm", iconOnly: true, icon: "x", "aria-label": "Close", onClick: onClose })
|
|
580
614
|
] }),
|
|
581
|
-
/* @__PURE__ */
|
|
582
|
-
footer && /* @__PURE__ */
|
|
615
|
+
/* @__PURE__ */ jsx10("div", { className: "rx-modal__body", id: bodyId, ref: body, children }),
|
|
616
|
+
footer && /* @__PURE__ */ jsx10("div", { className: "rx-modal__foot", children: footer })
|
|
583
617
|
]
|
|
584
618
|
}
|
|
585
619
|
) }) }),
|
|
@@ -588,7 +622,7 @@ function Modal({ open, title, onClose, footer, children, initialFocusRef, role =
|
|
|
588
622
|
}
|
|
589
623
|
|
|
590
624
|
// src/Confirm.tsx
|
|
591
|
-
import { Fragment as Fragment2, jsx as
|
|
625
|
+
import { Fragment as Fragment2, jsx as jsx11, jsxs as jsxs7 } from "react/jsx-runtime";
|
|
592
626
|
function Confirm({
|
|
593
627
|
open,
|
|
594
628
|
title,
|
|
@@ -601,7 +635,7 @@ function Confirm({
|
|
|
601
635
|
onCancel
|
|
602
636
|
}) {
|
|
603
637
|
const safeAction = useRef5(null);
|
|
604
|
-
return /* @__PURE__ */
|
|
638
|
+
return /* @__PURE__ */ jsx11(
|
|
605
639
|
Modal,
|
|
606
640
|
{
|
|
607
641
|
open,
|
|
@@ -610,8 +644,8 @@ function Confirm({
|
|
|
610
644
|
role: "alertdialog",
|
|
611
645
|
initialFocusRef: safeAction,
|
|
612
646
|
footer: /* @__PURE__ */ jsxs7(Fragment2, { children: [
|
|
613
|
-
/* @__PURE__ */
|
|
614
|
-
/* @__PURE__ */
|
|
647
|
+
/* @__PURE__ */ jsx11(Button, { ref: safeAction, variant: "ghost", onClick: onCancel, children: cancelLabel }),
|
|
648
|
+
/* @__PURE__ */ jsx11(Button, { variant: danger ? "danger" : "primary", busy, onClick: onConfirm, children: confirmLabel })
|
|
615
649
|
] }),
|
|
616
650
|
children: body
|
|
617
651
|
}
|
|
@@ -621,7 +655,7 @@ function Confirm({
|
|
|
621
655
|
// src/Drawer.tsx
|
|
622
656
|
import { useId as useId4, useRef as useRef6 } from "react";
|
|
623
657
|
import { createPortal as createPortal2 } from "react-dom";
|
|
624
|
-
import { jsx as
|
|
658
|
+
import { jsx as jsx12, jsxs as jsxs8 } from "react/jsx-runtime";
|
|
625
659
|
function Drawer({
|
|
626
660
|
open,
|
|
627
661
|
title,
|
|
@@ -641,8 +675,8 @@ function Drawer({
|
|
|
641
675
|
if (!mounted) return null;
|
|
642
676
|
const cls = ["ui-drawer", `ui-drawer--${side}`, `ui-drawer--${size}`, shown && "is-open"].filter(Boolean).join(" ");
|
|
643
677
|
return createPortal2(
|
|
644
|
-
/* @__PURE__ */
|
|
645
|
-
/* @__PURE__ */
|
|
678
|
+
/* @__PURE__ */ jsx12(DialogScope.Provider, { value: scope, children: /* @__PURE__ */ jsxs8("div", { className: cls, ref: root, children: [
|
|
679
|
+
/* @__PURE__ */ jsx12("div", { className: "ui-drawer__scrim", onMouseDown: dismissOnScrim(onClose) }),
|
|
646
680
|
/* @__PURE__ */ jsxs8(
|
|
647
681
|
"aside",
|
|
648
682
|
{
|
|
@@ -654,11 +688,11 @@ function Drawer({
|
|
|
654
688
|
ref: panel,
|
|
655
689
|
children: [
|
|
656
690
|
/* @__PURE__ */ jsxs8("header", { className: "ui-drawer__header", children: [
|
|
657
|
-
/* @__PURE__ */
|
|
658
|
-
/* @__PURE__ */
|
|
691
|
+
/* @__PURE__ */ jsx12("h2", { className: "ui-drawer__title", id: titleId, children: title }),
|
|
692
|
+
/* @__PURE__ */ jsx12("button", { type: "button", className: "ui-drawer__close", "aria-label": closeLabel, onClick: onClose, children: /* @__PURE__ */ jsx12(Icon, { name: "x" }) })
|
|
659
693
|
] }),
|
|
660
|
-
/* @__PURE__ */
|
|
661
|
-
footer && /* @__PURE__ */
|
|
694
|
+
/* @__PURE__ */ jsx12("div", { className: "ui-drawer__body", ref: body, children }),
|
|
695
|
+
footer && /* @__PURE__ */ jsx12("footer", { className: "ui-drawer__footer", children: footer })
|
|
662
696
|
]
|
|
663
697
|
}
|
|
664
698
|
)
|
|
@@ -671,9 +705,9 @@ function Drawer({
|
|
|
671
705
|
import { useCallback, useEffect as useEffect3, useId as useId5, useMemo, useRef as useRef7, useState as useState3 } from "react";
|
|
672
706
|
import { createPortal as createPortal3 } from "react-dom";
|
|
673
707
|
import { rankGroups, icon as icon2 } from "@apliteni/apliteni-ui";
|
|
674
|
-
import { jsx as
|
|
708
|
+
import { jsx as jsx13, jsxs as jsxs9 } from "react/jsx-runtime";
|
|
675
709
|
var cx2 = (...a) => a.filter(Boolean).join(" ");
|
|
676
|
-
var Glyph = ({ name, className }) => /* @__PURE__ */
|
|
710
|
+
var Glyph = ({ name, className }) => /* @__PURE__ */ jsx13("span", { className, "aria-hidden": "true", dangerouslySetInnerHTML: { __html: icon2(name) } });
|
|
677
711
|
var keysOf = (shortcut) => shortcut == null ? [] : Array.isArray(shortcut) ? shortcut : [shortcut];
|
|
678
712
|
function CommandPalette({
|
|
679
713
|
open,
|
|
@@ -738,8 +772,8 @@ function CommandPalette({
|
|
|
738
772
|
const listId = `${uid}-list`;
|
|
739
773
|
let n = 0;
|
|
740
774
|
return createPortal3(
|
|
741
|
-
/* @__PURE__ */
|
|
742
|
-
/* @__PURE__ */
|
|
775
|
+
/* @__PURE__ */ jsx13(DialogScope.Provider, { value: scope, children: /* @__PURE__ */ jsxs9("div", { className: cx2("ui-cmdk", density === "roomy" && "ui-cmdk--roomy", "is-open"), ref: root, children: [
|
|
776
|
+
/* @__PURE__ */ jsx13("div", { className: "ui-cmdk__scrim", onMouseDown: dismissOnScrim(onClose) }),
|
|
743
777
|
/* @__PURE__ */ jsxs9(
|
|
744
778
|
"div",
|
|
745
779
|
{
|
|
@@ -752,8 +786,8 @@ function CommandPalette({
|
|
|
752
786
|
onKeyDown,
|
|
753
787
|
children: [
|
|
754
788
|
/* @__PURE__ */ jsxs9("div", { className: "ui-cmdk__search", ref: search, children: [
|
|
755
|
-
/* @__PURE__ */
|
|
756
|
-
/* @__PURE__ */
|
|
789
|
+
/* @__PURE__ */ jsx13(Glyph, { name: "search", className: "ui-cmdk__search-ic" }),
|
|
790
|
+
/* @__PURE__ */ jsx13(
|
|
757
791
|
"input",
|
|
758
792
|
{
|
|
759
793
|
className: "ui-cmdk__input",
|
|
@@ -775,14 +809,14 @@ function CommandPalette({
|
|
|
775
809
|
}
|
|
776
810
|
)
|
|
777
811
|
] }),
|
|
778
|
-
/* @__PURE__ */
|
|
812
|
+
/* @__PURE__ */ jsx13("div", { className: "ui-cmdk__list", id: listId, role: "listbox", "aria-label": `${label} results`, children: shown.map((group, gi) => /* @__PURE__ */ jsxs9(
|
|
779
813
|
"div",
|
|
780
814
|
{
|
|
781
815
|
className: "ui-cmdk__group",
|
|
782
816
|
role: "group",
|
|
783
817
|
"aria-labelledby": group.label ? `${uid}-g${gi}` : void 0,
|
|
784
818
|
children: [
|
|
785
|
-
group.label && /* @__PURE__ */
|
|
819
|
+
group.label && /* @__PURE__ */ jsx13("div", { className: "ui-cmdk__group-head", id: `${uid}-g${gi}`, children: group.label }),
|
|
786
820
|
group.items.map((item) => {
|
|
787
821
|
const disabled = isDisabled(item);
|
|
788
822
|
const id = `${uid}-o${n++}`;
|
|
@@ -807,13 +841,13 @@ function CommandPalette({
|
|
|
807
841
|
},
|
|
808
842
|
onClick: (e) => run(item, e.metaKey || e.ctrlKey),
|
|
809
843
|
children: [
|
|
810
|
-
item.icon && /* @__PURE__ */
|
|
844
|
+
item.icon && /* @__PURE__ */ jsx13(Glyph, { name: item.icon, className: "ui-cmdk__ic" }),
|
|
811
845
|
/* @__PURE__ */ jsxs9("span", { className: "ui-cmdk__main", children: [
|
|
812
|
-
/* @__PURE__ */
|
|
813
|
-
item.description && /* @__PURE__ */
|
|
846
|
+
/* @__PURE__ */ jsx13("span", { className: "ui-cmdk__label", children: item.label }),
|
|
847
|
+
item.description && /* @__PURE__ */ jsx13("span", { className: "ui-cmdk__desc", children: item.description })
|
|
814
848
|
] }),
|
|
815
|
-
item.badge && /* @__PURE__ */
|
|
816
|
-
keysOf(item.shortcut).length > 0 && /* @__PURE__ */
|
|
849
|
+
item.badge && /* @__PURE__ */ jsx13("span", { className: "ui-cmdk__badge", children: item.badge }),
|
|
850
|
+
keysOf(item.shortcut).length > 0 && /* @__PURE__ */ jsx13("span", { className: "ui-cmdk__keys", "aria-hidden": "true", children: keysOf(item.shortcut).map((k) => /* @__PURE__ */ jsx13("kbd", { className: "ui-cmdk__key", children: k }, k)) })
|
|
817
851
|
]
|
|
818
852
|
},
|
|
819
853
|
item.id
|
|
@@ -823,20 +857,20 @@ function CommandPalette({
|
|
|
823
857
|
},
|
|
824
858
|
group.label ?? `g${gi}`
|
|
825
859
|
)) }),
|
|
826
|
-
/* @__PURE__ */
|
|
827
|
-
/* @__PURE__ */
|
|
860
|
+
/* @__PURE__ */ jsx13("p", { className: "ui-cmdk__empty", hidden: countOf(shown) > 0, children: empty }),
|
|
861
|
+
/* @__PURE__ */ jsx13("p", { className: "ui-sr", role: "status", "aria-live": "polite", children: countOf(shown) === 0 ? "No results" : `${countOf(shown)} result${countOf(shown) === 1 ? "" : "s"}` }),
|
|
828
862
|
hint && /* @__PURE__ */ jsxs9("div", { className: "ui-cmdk__foot", "aria-hidden": "true", children: [
|
|
829
863
|
/* @__PURE__ */ jsxs9("span", { children: [
|
|
830
|
-
/* @__PURE__ */
|
|
831
|
-
/* @__PURE__ */
|
|
864
|
+
/* @__PURE__ */ jsx13("kbd", { className: "ui-cmdk__key", children: "\u2191" }),
|
|
865
|
+
/* @__PURE__ */ jsx13("kbd", { className: "ui-cmdk__key", children: "\u2193" }),
|
|
832
866
|
" move"
|
|
833
867
|
] }),
|
|
834
868
|
/* @__PURE__ */ jsxs9("span", { children: [
|
|
835
|
-
/* @__PURE__ */
|
|
869
|
+
/* @__PURE__ */ jsx13("kbd", { className: "ui-cmdk__key", children: "\u21B5" }),
|
|
836
870
|
" run"
|
|
837
871
|
] }),
|
|
838
872
|
/* @__PURE__ */ jsxs9("span", { children: [
|
|
839
|
-
/* @__PURE__ */
|
|
873
|
+
/* @__PURE__ */ jsx13("kbd", { className: "ui-cmdk__key", children: "esc" }),
|
|
840
874
|
" close"
|
|
841
875
|
] })
|
|
842
876
|
] })
|
|
@@ -867,7 +901,7 @@ import { DEFAULT_PAGE_SIZE as DEFAULT_PAGE_SIZE2 } from "@apliteni/apliteni-ui";
|
|
|
867
901
|
// src/Pagination.tsx
|
|
868
902
|
import { useEffect as useEffect4, useId as useId6, useRef as useRef8, useState as useState4 } from "react";
|
|
869
903
|
import { DEFAULT_PAGE_SIZE } from "@apliteni/apliteni-ui";
|
|
870
|
-
import { jsx as
|
|
904
|
+
import { jsx as jsx14, jsxs as jsxs10 } from "react/jsx-runtime";
|
|
871
905
|
var GHOST_SM = "ui-btn ui-btn--ghost ui-btn--sm";
|
|
872
906
|
var VARIANTS = ["steps", "numbered", "jump"];
|
|
873
907
|
var cx3 = (...a) => a.filter(Boolean).join(" ");
|
|
@@ -959,7 +993,7 @@ function Pagination({
|
|
|
959
993
|
const step = (label_, target, disabled) => (
|
|
960
994
|
// A control at an end is disabled and stays where it is: removing it slides
|
|
961
995
|
// the next control under a pointer already travelling toward it.
|
|
962
|
-
/* @__PURE__ */
|
|
996
|
+
/* @__PURE__ */ jsx14(
|
|
963
997
|
"button",
|
|
964
998
|
{
|
|
965
999
|
type: "button",
|
|
@@ -1005,7 +1039,7 @@ function Pagination({
|
|
|
1005
1039
|
} else {
|
|
1006
1040
|
let middle = null;
|
|
1007
1041
|
if (kind === "numbered") {
|
|
1008
|
-
middle = slotsFor(at, last).map((n, i) => n == null ? /* @__PURE__ */
|
|
1042
|
+
middle = slotsFor(at, last).map((n, i) => n == null ? /* @__PURE__ */ jsx14("span", { className: "ui-pager__gap", "aria-hidden": "true", children: "\u2026" }, `gap${i}`) : /* @__PURE__ */ jsx14(
|
|
1009
1043
|
"button",
|
|
1010
1044
|
{
|
|
1011
1045
|
type: "button",
|
|
@@ -1021,8 +1055,8 @@ function Pagination({
|
|
|
1021
1055
|
));
|
|
1022
1056
|
} else if (kind === "jump") {
|
|
1023
1057
|
middle = /* @__PURE__ */ jsxs10("span", { className: "ui-pager__jump", children: [
|
|
1024
|
-
/* @__PURE__ */
|
|
1025
|
-
/* @__PURE__ */
|
|
1058
|
+
/* @__PURE__ */ jsx14("label", { htmlFor: `${uid}-jump`, children: "Page" }),
|
|
1059
|
+
/* @__PURE__ */ jsx14(
|
|
1026
1060
|
"input",
|
|
1027
1061
|
{
|
|
1028
1062
|
className: "ui-input ui-pager__jump-input",
|
|
@@ -1067,10 +1101,10 @@ function Pagination({
|
|
|
1067
1101
|
"aria-label": label,
|
|
1068
1102
|
"aria-busy": loading ? true : void 0,
|
|
1069
1103
|
children: [
|
|
1070
|
-
/* @__PURE__ */
|
|
1104
|
+
/* @__PURE__ */ jsx14("p", { className: "ui-pager__status", "aria-live": "polite", "aria-atomic": "true", children: status }),
|
|
1071
1105
|
sizes.length ? /* @__PURE__ */ jsxs10("div", { className: "ui-pager__size", children: [
|
|
1072
|
-
/* @__PURE__ */
|
|
1073
|
-
/* @__PURE__ */
|
|
1106
|
+
/* @__PURE__ */ jsx14("label", { className: "ui-pager__size-label", htmlFor: `${uid}-size`, children: "Rows" }),
|
|
1107
|
+
/* @__PURE__ */ jsx14(
|
|
1074
1108
|
"select",
|
|
1075
1109
|
{
|
|
1076
1110
|
className: "ui-select ui-pager__size-select",
|
|
@@ -1078,7 +1112,7 @@ function Pagination({
|
|
|
1078
1112
|
disabled: loading,
|
|
1079
1113
|
value: size,
|
|
1080
1114
|
onChange: (e) => onPageSizeChange?.(Number(e.target.value)),
|
|
1081
|
-
children: sizes.map((s) => /* @__PURE__ */
|
|
1115
|
+
children: sizes.map((s) => /* @__PURE__ */ jsx14("option", { value: s, children: fmt(s) }, s))
|
|
1082
1116
|
}
|
|
1083
1117
|
)
|
|
1084
1118
|
] }) : null,
|
|
@@ -1089,7 +1123,7 @@ function Pagination({
|
|
|
1089
1123
|
}
|
|
1090
1124
|
|
|
1091
1125
|
// src/DataTable.tsx
|
|
1092
|
-
import { Fragment as Fragment3, jsx as
|
|
1126
|
+
import { Fragment as Fragment3, jsx as jsx15, jsxs as jsxs11 } from "react/jsx-runtime";
|
|
1093
1127
|
var NO_SORT = { key: void 0, dir: -1 };
|
|
1094
1128
|
function sortTableRows(rows, sort) {
|
|
1095
1129
|
if (sort.key === void 0) return [...rows];
|
|
@@ -1182,7 +1216,7 @@ function DataTable({
|
|
|
1182
1216
|
onSortChange?.(next);
|
|
1183
1217
|
toFirstPage();
|
|
1184
1218
|
};
|
|
1185
|
-
const caret = (k) => /* @__PURE__ */
|
|
1219
|
+
const caret = (k) => /* @__PURE__ */ jsx15(
|
|
1186
1220
|
"svg",
|
|
1187
1221
|
{
|
|
1188
1222
|
className: "rx-caret",
|
|
@@ -1194,19 +1228,19 @@ function DataTable({
|
|
|
1194
1228
|
strokeLinejoin: "round",
|
|
1195
1229
|
"aria-hidden": "true",
|
|
1196
1230
|
focusable: "false",
|
|
1197
|
-
children: sort.key === k ? /* @__PURE__ */
|
|
1198
|
-
/* @__PURE__ */
|
|
1199
|
-
/* @__PURE__ */
|
|
1231
|
+
children: sort.key === k ? /* @__PURE__ */ jsx15("path", { d: "m8 10 4 4 4-4" }) : /* @__PURE__ */ jsxs11(Fragment3, { children: [
|
|
1232
|
+
/* @__PURE__ */ jsx15("path", { d: "m8 9 4-4 4 4" }),
|
|
1233
|
+
/* @__PURE__ */ jsx15("path", { d: "m8 15 4 4 4-4" })
|
|
1200
1234
|
] })
|
|
1201
1235
|
}
|
|
1202
1236
|
);
|
|
1203
1237
|
const pageAllOn = selectable && slice.length > 0 && slice.every((r) => selected.has(r.name));
|
|
1204
1238
|
return /* @__PURE__ */ jsxs11(Fragment3, { children: [
|
|
1205
1239
|
scrollable && columnScroll.overflow && /* @__PURE__ */ jsxs11("div", { className: "ui-card__row", role: "group", "aria-label": `${scrollLabel} columns`, children: [
|
|
1206
|
-
/* @__PURE__ */
|
|
1207
|
-
/* @__PURE__ */
|
|
1240
|
+
/* @__PURE__ */ jsx15(Button, { size: "sm", icon: "arrowLeft", "aria-controls": scrollId, disabled: columnScroll.start, onClick: () => scrollColumns(-1), children: "Previous columns" }),
|
|
1241
|
+
/* @__PURE__ */ jsx15(Button, { size: "sm", iconRight: "arrowRight", "aria-controls": scrollId, disabled: columnScroll.end, onClick: () => scrollColumns(1), children: "More columns" })
|
|
1208
1242
|
] }),
|
|
1209
|
-
/* @__PURE__ */
|
|
1243
|
+
/* @__PURE__ */ jsx15(
|
|
1210
1244
|
"div",
|
|
1211
1245
|
{
|
|
1212
1246
|
id: scrollId,
|
|
@@ -1222,8 +1256,8 @@ function DataTable({
|
|
|
1222
1256
|
className: ["ui-table ui-table--hover", (density === "dense" || !density && dense) && "ui-table--dense", density === "compact" && "ui-table--compact", stickyHeader && "ui-table--sticky", pinnedIdentity && "ui-table--pinned"].filter(Boolean).join(" "),
|
|
1223
1257
|
"aria-busy": loading || void 0,
|
|
1224
1258
|
children: [
|
|
1225
|
-
/* @__PURE__ */
|
|
1226
|
-
selectable ? /* @__PURE__ */
|
|
1259
|
+
/* @__PURE__ */ jsx15("thead", { children: /* @__PURE__ */ jsxs11("tr", { children: [
|
|
1260
|
+
selectable ? /* @__PURE__ */ jsx15("th", { scope: "col", className: "ui-table__selection", children: /* @__PURE__ */ jsx15(
|
|
1227
1261
|
"input",
|
|
1228
1262
|
{
|
|
1229
1263
|
type: "checkbox",
|
|
@@ -1236,7 +1270,7 @@ function DataTable({
|
|
|
1236
1270
|
// The sort control is a real <button> inside the header cell. It used to be
|
|
1237
1271
|
// role="button" ON the <th>, which threw away the columnheader role and put
|
|
1238
1272
|
// aria-sort on a role that forbids it.
|
|
1239
|
-
/* @__PURE__ */
|
|
1273
|
+
/* @__PURE__ */ jsx15(
|
|
1240
1274
|
"th",
|
|
1241
1275
|
{
|
|
1242
1276
|
scope: "col",
|
|
@@ -1252,9 +1286,9 @@ function DataTable({
|
|
|
1252
1286
|
))
|
|
1253
1287
|
] }) }),
|
|
1254
1288
|
/* @__PURE__ */ jsxs11("tbody", { children: [
|
|
1255
|
-
!slice.length && /* @__PURE__ */
|
|
1289
|
+
!slice.length && /* @__PURE__ */ jsx15("tr", { children: /* @__PURE__ */ jsx15("td", { colSpan: columns.length + (selectable ? 1 : 0), children: loading ? "Loading rows\u2026" : empty }) }),
|
|
1256
1290
|
slice.map((r) => /* @__PURE__ */ jsxs11("tr", { children: [
|
|
1257
|
-
selectable ? /* @__PURE__ */
|
|
1291
|
+
selectable ? /* @__PURE__ */ jsx15("td", { className: "ui-table__selection", children: /* @__PURE__ */ jsx15(
|
|
1258
1292
|
"input",
|
|
1259
1293
|
{
|
|
1260
1294
|
type: "checkbox",
|
|
@@ -1263,7 +1297,7 @@ function DataTable({
|
|
|
1263
1297
|
onChange: () => onToggle(r.name)
|
|
1264
1298
|
}
|
|
1265
1299
|
) }) : null,
|
|
1266
|
-
columns.map((c, columnIndex) => /* @__PURE__ */
|
|
1300
|
+
columns.map((c, columnIndex) => /* @__PURE__ */ jsx15("td", { className: [c.num && "ui-table__num", pinnedIdentity && columnIndex === 0 && "ui-table__identity"].filter(Boolean).join(" "), children: c.render ? c.render(r) : String(r[c.key]) }, c.key))
|
|
1267
1301
|
] }, r.name))
|
|
1268
1302
|
] })
|
|
1269
1303
|
]
|
|
@@ -1271,7 +1305,7 @@ function DataTable({
|
|
|
1271
1305
|
)
|
|
1272
1306
|
}
|
|
1273
1307
|
),
|
|
1274
|
-
pager ? /* @__PURE__ */
|
|
1308
|
+
pager ? /* @__PURE__ */ jsx15(
|
|
1275
1309
|
Pagination,
|
|
1276
1310
|
{
|
|
1277
1311
|
page,
|
|
@@ -1296,7 +1330,7 @@ function DataTable({
|
|
|
1296
1330
|
import { PAGE_SIZES as KIT_PAGE_SIZES, DEFAULT_PAGE_SIZE as KIT_DEFAULT_PAGE_SIZE } from "@apliteni/apliteni-ui";
|
|
1297
1331
|
|
|
1298
1332
|
// src/Loading.tsx
|
|
1299
|
-
import { jsx as
|
|
1333
|
+
import { jsx as jsx16, jsxs as jsxs12 } from "react/jsx-runtime";
|
|
1300
1334
|
var cx4 = (...a) => a.filter(Boolean).join(" ");
|
|
1301
1335
|
function Skeleton({ lines = 3, width, height, radius, className }) {
|
|
1302
1336
|
const widths = Array.isArray(lines) ? lines : null;
|
|
@@ -1306,10 +1340,10 @@ function Skeleton({ lines = 3, width, height, radius, className }) {
|
|
|
1306
1340
|
if (!w && !height && !radius) return void 0;
|
|
1307
1341
|
return { ...w && { width: w }, ...height && { height }, ...radius && { borderRadius: radius } };
|
|
1308
1342
|
};
|
|
1309
|
-
return /* @__PURE__ */
|
|
1343
|
+
return /* @__PURE__ */ jsx16("div", { className: cx4("ui-skel", className), "aria-hidden": "true", children: Array.from({ length: n }, (_, i) => /* @__PURE__ */ jsx16("span", { className: "ui-skel__bar m-skeleton", style: styleFor(i) }, i)) });
|
|
1310
1344
|
}
|
|
1311
1345
|
function SkeletonTable({ rows = 5, cols = 4, head = true }) {
|
|
1312
|
-
const cells = Array.from({ length: Math.max(1, cols) }, (_, i) => /* @__PURE__ */
|
|
1346
|
+
const cells = Array.from({ length: Math.max(1, cols) }, (_, i) => /* @__PURE__ */ jsx16("span", { className: "ui-skel__bar m-skeleton" }, i));
|
|
1313
1347
|
return /* @__PURE__ */ jsxs12(
|
|
1314
1348
|
"div",
|
|
1315
1349
|
{
|
|
@@ -1317,8 +1351,8 @@ function SkeletonTable({ rows = 5, cols = 4, head = true }) {
|
|
|
1317
1351
|
style: { "--skel-cols": Math.max(1, cols) },
|
|
1318
1352
|
"aria-hidden": "true",
|
|
1319
1353
|
children: [
|
|
1320
|
-
head && /* @__PURE__ */
|
|
1321
|
-
Array.from({ length: Math.max(1, rows) }, (_, i) => /* @__PURE__ */
|
|
1354
|
+
head && /* @__PURE__ */ jsx16("div", { className: "ui-skel__row ui-skel__row--head", children: cells }),
|
|
1355
|
+
Array.from({ length: Math.max(1, rows) }, (_, i) => /* @__PURE__ */ jsx16("div", { className: "ui-skel__row", children: cells }, i))
|
|
1322
1356
|
]
|
|
1323
1357
|
}
|
|
1324
1358
|
);
|
|
@@ -1339,8 +1373,8 @@ function BusyRegion({
|
|
|
1339
1373
|
"aria-live": "polite",
|
|
1340
1374
|
"aria-busy": busy,
|
|
1341
1375
|
children: [
|
|
1342
|
-
/* @__PURE__ */
|
|
1343
|
-
/* @__PURE__ */
|
|
1376
|
+
/* @__PURE__ */ jsx16("span", { className: "ui-sr", children: busy ? label : message }),
|
|
1377
|
+
/* @__PURE__ */ jsx16("div", { className: "ui-busy__body", children: busy ? placeholder ?? /* @__PURE__ */ jsx16(Skeleton, { lines: 3 }) : children })
|
|
1344
1378
|
]
|
|
1345
1379
|
}
|
|
1346
1380
|
);
|
|
@@ -1354,14 +1388,14 @@ function Denied({
|
|
|
1354
1388
|
children
|
|
1355
1389
|
}) {
|
|
1356
1390
|
return /* @__PURE__ */ jsxs12("div", { className: cx4("ui-denied", className), children: [
|
|
1357
|
-
/* @__PURE__ */
|
|
1358
|
-
/* @__PURE__ */
|
|
1359
|
-
sub && /* @__PURE__ */
|
|
1391
|
+
/* @__PURE__ */ jsx16("div", { className: "ui-denied__seal", children: /* @__PURE__ */ jsx16(Icon, { name: icon6 }) }),
|
|
1392
|
+
/* @__PURE__ */ jsx16("div", { className: "ui-denied__title", children: title }),
|
|
1393
|
+
sub && /* @__PURE__ */ jsx16("div", { className: "ui-denied__sub", children: sub }),
|
|
1360
1394
|
need && /* @__PURE__ */ jsxs12("div", { className: "ui-denied__need", children: [
|
|
1361
1395
|
"Needs ",
|
|
1362
|
-
/* @__PURE__ */
|
|
1396
|
+
/* @__PURE__ */ jsx16("code", { className: "ui-code", children: need })
|
|
1363
1397
|
] }),
|
|
1364
|
-
children && /* @__PURE__ */
|
|
1398
|
+
children && /* @__PURE__ */ jsx16("div", { className: "ui-denied__actions", children })
|
|
1365
1399
|
] });
|
|
1366
1400
|
}
|
|
1367
1401
|
|
|
@@ -1375,10 +1409,10 @@ import {
|
|
|
1375
1409
|
useState as useState6
|
|
1376
1410
|
} from "react";
|
|
1377
1411
|
import { icon as icon3, dropdownMatch, dropdownFiltering } from "@apliteni/apliteni-ui";
|
|
1378
|
-
import { Fragment as Fragment5, jsx as
|
|
1412
|
+
import { Fragment as Fragment5, jsx as jsx17, jsxs as jsxs13 } from "react/jsx-runtime";
|
|
1379
1413
|
var cx5 = (...a) => a.filter(Boolean).join(" ");
|
|
1380
1414
|
var isRow = (it) => Boolean(it) && it !== "---" && !it.separator;
|
|
1381
|
-
var Glyph2 = ({ name, className, hidden }) => /* @__PURE__ */
|
|
1415
|
+
var Glyph2 = ({ name, className, hidden }) => /* @__PURE__ */ jsx17(
|
|
1382
1416
|
"span",
|
|
1383
1417
|
{
|
|
1384
1418
|
className,
|
|
@@ -1391,7 +1425,7 @@ function RowBadge({ badge }) {
|
|
|
1391
1425
|
const given = typeof badge === "string" ? "" : badge.tone || "";
|
|
1392
1426
|
let tone = given || (/^live$/i.test(String(text2)) ? "live" : "neutral");
|
|
1393
1427
|
if (!given && tone === "neutral" && /^(?:off|unset|disabled|archive|archived)$/i.test(text2)) tone = "state";
|
|
1394
|
-
return /* @__PURE__ */
|
|
1428
|
+
return /* @__PURE__ */ jsx17("span", { className: `ui-dropdown__badge is-${tone}`, children: text2 });
|
|
1395
1429
|
}
|
|
1396
1430
|
var keyOf = (it) => it.value != null ? `v:${it.value}` : `l:${it.label}`;
|
|
1397
1431
|
var itemsIn = (panel) => Array.from(panel?.querySelectorAll("[data-dd-item]") ?? []).filter((el) => el.getAttribute("aria-disabled") !== "true" && !el.hidden);
|
|
@@ -1606,7 +1640,7 @@ function Dropdown({
|
|
|
1606
1640
|
};
|
|
1607
1641
|
function renderRow(entry, key) {
|
|
1608
1642
|
if (!isRow(entry)) {
|
|
1609
|
-
return /* @__PURE__ */
|
|
1643
|
+
return /* @__PURE__ */ jsx17("div", { className: "ui-dropdown__sep", role: "separator", hidden: filtering || void 0 }, key);
|
|
1610
1644
|
}
|
|
1611
1645
|
const disabled = !!entry.disabled;
|
|
1612
1646
|
const selected = selectedOf(entry);
|
|
@@ -1629,18 +1663,18 @@ function Dropdown({
|
|
|
1629
1663
|
...sx ? { id: rowIds.get(entry), hidden: hiddenBy(entry) || void 0 } : null,
|
|
1630
1664
|
onClick: (e) => choose(entry, e),
|
|
1631
1665
|
children: /* @__PURE__ */ jsxs13(Fragment5, { children: [
|
|
1632
|
-
entry.icon && /* @__PURE__ */
|
|
1666
|
+
entry.icon && /* @__PURE__ */ jsx17(Glyph2, { name: entry.icon, className: "ui-dropdown__ic" }),
|
|
1633
1667
|
/* @__PURE__ */ jsxs13("span", { className: "ui-dropdown__main", children: [
|
|
1634
|
-
/* @__PURE__ */
|
|
1635
|
-
entry.description && /* @__PURE__ */
|
|
1668
|
+
/* @__PURE__ */ jsx17("span", { className: "ui-dropdown__label", children: entry.label }),
|
|
1669
|
+
entry.description && /* @__PURE__ */ jsx17("span", { className: "ui-dropdown__desc", children: entry.description })
|
|
1636
1670
|
] }),
|
|
1637
|
-
entry.badge ? /* @__PURE__ */
|
|
1638
|
-
asOption && /* @__PURE__ */
|
|
1671
|
+
entry.badge ? /* @__PURE__ */ jsx17(RowBadge, { badge: entry.badge }) : null,
|
|
1672
|
+
asOption && /* @__PURE__ */ jsx17(Glyph2, { name: "check", className: "ui-dropdown__tick", hidden: true })
|
|
1639
1673
|
] })
|
|
1640
1674
|
};
|
|
1641
|
-
if (row) return /* @__PURE__ */
|
|
1675
|
+
if (row) return /* @__PURE__ */ jsx17(Fragment4, { children: row(entry, props) }, key);
|
|
1642
1676
|
const Tag = asLink ? "a" : "div";
|
|
1643
|
-
return /* @__PURE__ */
|
|
1677
|
+
return /* @__PURE__ */ jsx17(Tag, { ...props }, key);
|
|
1644
1678
|
}
|
|
1645
1679
|
const body = sections?.length ? sections.map((section, si) => {
|
|
1646
1680
|
const gone = filtering && !(section.items || []).some((it) => isRow(it) && !hiddenBy(it));
|
|
@@ -1652,7 +1686,7 @@ function Dropdown({
|
|
|
1652
1686
|
"aria-label": section.label || void 0,
|
|
1653
1687
|
hidden: gone || void 0,
|
|
1654
1688
|
children: [
|
|
1655
|
-
section.label && /* @__PURE__ */
|
|
1689
|
+
section.label && /* @__PURE__ */ jsx17("div", { className: "ui-dropdown__group", role: "presentation", children: section.label }),
|
|
1656
1690
|
(section.items || []).map((entry, i) => renderRow(entry, `s${si}-${i}`))
|
|
1657
1691
|
]
|
|
1658
1692
|
},
|
|
@@ -1661,8 +1695,8 @@ function Dropdown({
|
|
|
1661
1695
|
}) : (items || []).map((entry, i) => renderRow(entry, `i${i}`));
|
|
1662
1696
|
const cap = scroll && scroll !== true ? { maxHeight: typeof scroll === "number" ? `${scroll}px` : scroll } : void 0;
|
|
1663
1697
|
const none = sx && filtering && !visible.length ? /* @__PURE__ */ jsxs13(Fragment5, { children: [
|
|
1664
|
-
/* @__PURE__ */
|
|
1665
|
-
/* @__PURE__ */
|
|
1698
|
+
/* @__PURE__ */ jsx17("span", { className: "ui-dropdown__none-title", children: sx.empty.replace("{q}", () => query.trim()) }),
|
|
1699
|
+
/* @__PURE__ */ jsx17("span", { className: "ui-dropdown__none-hint", children: sx.hint })
|
|
1666
1700
|
] }) : null;
|
|
1667
1701
|
return /* @__PURE__ */ jsxs13("div", { className: cx5("ui-dropdown", open && "open"), id, ref: root, onKeyDown, children: [
|
|
1668
1702
|
/* @__PURE__ */ jsxs13(
|
|
@@ -1681,10 +1715,10 @@ function Dropdown({
|
|
|
1681
1715
|
},
|
|
1682
1716
|
children: [
|
|
1683
1717
|
triggerContent != null ? triggerContent : /* @__PURE__ */ jsxs13(Fragment5, { children: [
|
|
1684
|
-
label && /* @__PURE__ */
|
|
1685
|
-
/* @__PURE__ */
|
|
1718
|
+
label && /* @__PURE__ */ jsx17("span", { className: "ui-dropdown__pre", children: label }),
|
|
1719
|
+
/* @__PURE__ */ jsx17("span", { className: "ui-dropdown__value", children: shown != null ? shown : placeholder })
|
|
1686
1720
|
] }),
|
|
1687
|
-
chevron && /* @__PURE__ */
|
|
1721
|
+
chevron && /* @__PURE__ */ jsx17("span", { className: "ui-dropdown__chevron", "aria-hidden": "true" })
|
|
1688
1722
|
]
|
|
1689
1723
|
}
|
|
1690
1724
|
),
|
|
@@ -1710,8 +1744,8 @@ function Dropdown({
|
|
|
1710
1744
|
header,
|
|
1711
1745
|
sx ? /* @__PURE__ */ jsxs13(Fragment5, { children: [
|
|
1712
1746
|
/* @__PURE__ */ jsxs13("div", { className: "ui-dropdown__search", children: [
|
|
1713
|
-
/* @__PURE__ */
|
|
1714
|
-
/* @__PURE__ */
|
|
1747
|
+
/* @__PURE__ */ jsx17(Glyph2, { name: "search", className: "ui-dropdown__search-ic", hidden: true }),
|
|
1748
|
+
/* @__PURE__ */ jsx17(
|
|
1715
1749
|
"input",
|
|
1716
1750
|
{
|
|
1717
1751
|
className: "ui-dropdown__search-input",
|
|
@@ -1735,8 +1769,8 @@ function Dropdown({
|
|
|
1735
1769
|
}
|
|
1736
1770
|
)
|
|
1737
1771
|
] }),
|
|
1738
|
-
/* @__PURE__ */
|
|
1739
|
-
/* @__PURE__ */
|
|
1772
|
+
/* @__PURE__ */ jsx17("div", { className: "ui-dropdown__list", role: "listbox", id: listId, "aria-label": name, style: cap, children: body }),
|
|
1773
|
+
/* @__PURE__ */ jsx17(
|
|
1740
1774
|
"div",
|
|
1741
1775
|
{
|
|
1742
1776
|
className: "ui-dropdown__none",
|
|
@@ -1761,7 +1795,7 @@ function strip(o) {
|
|
|
1761
1795
|
}
|
|
1762
1796
|
|
|
1763
1797
|
// src/BackLink.tsx
|
|
1764
|
-
import { jsx as
|
|
1798
|
+
import { jsx as jsx18, jsxs as jsxs14 } from "react/jsx-runtime";
|
|
1765
1799
|
var BARE = "Back";
|
|
1766
1800
|
var SCRIPTED = /^javascript:/i;
|
|
1767
1801
|
var LEADING = /^[\u0000-\u0020]+/;
|
|
@@ -1788,45 +1822,50 @@ function BackLink({
|
|
|
1788
1822
|
"aria-label": bare ? void 0 : `${BARE} to ${name}`,
|
|
1789
1823
|
...rest,
|
|
1790
1824
|
children: [
|
|
1791
|
-
/* @__PURE__ */
|
|
1792
|
-
/* @__PURE__ */
|
|
1825
|
+
/* @__PURE__ */ jsx18(Icon, { name: "chevronLeft" }),
|
|
1826
|
+
/* @__PURE__ */ jsx18("span", { className: "ui-back__label", children: bare ? BARE : name })
|
|
1793
1827
|
]
|
|
1794
1828
|
}
|
|
1795
1829
|
);
|
|
1796
1830
|
}
|
|
1797
1831
|
|
|
1798
1832
|
// src/TableValues.tsx
|
|
1799
|
-
import {
|
|
1800
|
-
import { jsx as
|
|
1833
|
+
import { formatNumericValue, formatDeltaValue } from "@apliteni/apliteni-ui";
|
|
1834
|
+
import { jsx as jsx19, jsxs as jsxs15 } from "react/jsx-runtime";
|
|
1801
1835
|
function NumericValue(props) {
|
|
1802
|
-
|
|
1836
|
+
const value = formatNumericValue(props);
|
|
1837
|
+
return /* @__PURE__ */ jsx19("span", { children: /* @__PURE__ */ jsxs15("span", { className: "ui-value", "aria-label": value.missing, children: [
|
|
1838
|
+
value.text,
|
|
1839
|
+
value.unit && /* @__PURE__ */ jsx19("span", { className: "ui-value__unit", children: value.unit })
|
|
1840
|
+
] }) });
|
|
1803
1841
|
}
|
|
1804
1842
|
function DeltaValue(props) {
|
|
1805
|
-
|
|
1843
|
+
const value = formatDeltaValue(props);
|
|
1844
|
+
return /* @__PURE__ */ jsx19("span", { children: /* @__PURE__ */ jsx19("span", { className: value.className, "aria-describedby": value.basisId || void 0, children: value.text }) });
|
|
1806
1845
|
}
|
|
1807
1846
|
function RowIdentity({ symbol, name, logo, href }) {
|
|
1808
1847
|
const Tag = href ? "a" : "span";
|
|
1809
1848
|
return /* @__PURE__ */ jsxs15(Tag, { className: "ui-identity", href, children: [
|
|
1810
1849
|
/* @__PURE__ */ jsxs15("span", { className: "ui-identity__logo", "aria-hidden": "true", children: [
|
|
1811
|
-
/* @__PURE__ */
|
|
1812
|
-
logo && /* @__PURE__ */
|
|
1850
|
+
/* @__PURE__ */ jsx19("span", { children: symbol.slice(0, 1) }),
|
|
1851
|
+
logo && /* @__PURE__ */ jsx19("img", { src: logo, alt: "", onLoad: (e) => {
|
|
1813
1852
|
e.currentTarget.hidden = false;
|
|
1814
1853
|
}, onError: (e) => {
|
|
1815
1854
|
e.currentTarget.hidden = true;
|
|
1816
1855
|
} })
|
|
1817
1856
|
] }),
|
|
1818
|
-
/* @__PURE__ */
|
|
1819
|
-
/* @__PURE__ */
|
|
1857
|
+
/* @__PURE__ */ jsx19("span", { className: "ui-identity__symbol", children: symbol }),
|
|
1858
|
+
/* @__PURE__ */ jsx19("span", { className: "ui-identity__name", children: name })
|
|
1820
1859
|
] });
|
|
1821
1860
|
}
|
|
1822
1861
|
|
|
1823
1862
|
// src/Segmented.tsx
|
|
1824
1863
|
import { segmentedNextIndex } from "@apliteni/apliteni-ui";
|
|
1825
|
-
import { jsx as
|
|
1864
|
+
import { jsx as jsx20 } from "react/jsx-runtime";
|
|
1826
1865
|
function Segmented({ options, value, onChange, label, appearance = "pill", disabled = false }) {
|
|
1827
1866
|
const enabled = options.filter((o) => !o.disabled);
|
|
1828
1867
|
const tabValue = enabled.some((o) => o.value === value) ? value : enabled[0]?.value;
|
|
1829
|
-
return /* @__PURE__ */
|
|
1868
|
+
return /* @__PURE__ */ jsx20("div", { className: `ui-seg${appearance === "underline" ? " ui-seg--underline" : ""}`, role: "toolbar", "aria-label": label, children: options.map((option) => /* @__PURE__ */ jsx20(
|
|
1830
1869
|
"button",
|
|
1831
1870
|
{
|
|
1832
1871
|
type: "button",
|
|
@@ -1852,69 +1891,120 @@ function Segmented({ options, value, onChange, label, appearance = "pill", disab
|
|
|
1852
1891
|
}
|
|
1853
1892
|
|
|
1854
1893
|
// src/FilterBar.tsx
|
|
1855
|
-
import {
|
|
1856
|
-
import {
|
|
1857
|
-
|
|
1858
|
-
|
|
1859
|
-
const
|
|
1860
|
-
const
|
|
1861
|
-
|
|
1862
|
-
|
|
1863
|
-
|
|
1864
|
-
|
|
1865
|
-
const
|
|
1866
|
-
|
|
1867
|
-
const
|
|
1868
|
-
const
|
|
1869
|
-
const
|
|
1870
|
-
|
|
1871
|
-
|
|
1872
|
-
|
|
1873
|
-
|
|
1874
|
-
|
|
1875
|
-
|
|
1876
|
-
|
|
1877
|
-
|
|
1878
|
-
|
|
1879
|
-
|
|
1880
|
-
|
|
1881
|
-
|
|
1882
|
-
|
|
1883
|
-
|
|
1884
|
-
|
|
1885
|
-
|
|
1886
|
-
|
|
1894
|
+
import { useRef as useRef11, useState as useState7 } from "react";
|
|
1895
|
+
import { jsx as jsx21, jsxs as jsxs16 } from "react/jsx-runtime";
|
|
1896
|
+
function FilterBar({ filters, label = "Filters", clearLabel = "Clear all filters", disabled = false, busy = false, onRemove, onClear, onChange }) {
|
|
1897
|
+
const bar = useRef11(null);
|
|
1898
|
+
const focused = useRef11(null);
|
|
1899
|
+
const [opened, setOpened] = useState7({});
|
|
1900
|
+
const blocked = disabled || busy;
|
|
1901
|
+
useIsoLayoutEffect(() => {
|
|
1902
|
+
const stale = Object.keys(opened).filter((id) => !filters.some((filter) => filter.id === id && filter.open === opened[id].against));
|
|
1903
|
+
if (stale.length) setOpened((previous) => Object.fromEntries(Object.entries(previous).filter(([id]) => !stale.includes(id))));
|
|
1904
|
+
const prior = focused.current;
|
|
1905
|
+
if (!prior || prior.id === null && filters.length > 0 || filters.some((f) => f.id === prior.id)) return;
|
|
1906
|
+
const chips = Array.from(bar.current?.querySelectorAll("[data-filter-id]") ?? []);
|
|
1907
|
+
const next = chips.slice(prior.index).find((chip) => !chip.disabled) || chips.slice(0, prior.index).reverse().find((chip) => !chip.disabled);
|
|
1908
|
+
const target = !blocked && next?.querySelector("[data-dropdown-trigger]");
|
|
1909
|
+
focused.current = null;
|
|
1910
|
+
(target || bar.current)?.focus();
|
|
1911
|
+
});
|
|
1912
|
+
return /* @__PURE__ */ jsx21("div", { children: /* @__PURE__ */ jsxs16(
|
|
1913
|
+
"fieldset",
|
|
1914
|
+
{
|
|
1915
|
+
ref: bar,
|
|
1916
|
+
className: "ui-filter-bar",
|
|
1917
|
+
"data-filter-bar": "",
|
|
1918
|
+
disabled: blocked,
|
|
1919
|
+
"aria-busy": busy || void 0,
|
|
1920
|
+
tabIndex: -1,
|
|
1921
|
+
onBlur: (event) => {
|
|
1922
|
+
if (event.relatedTarget && !event.currentTarget.contains(event.relatedTarget)) focused.current = null;
|
|
1923
|
+
},
|
|
1924
|
+
children: [
|
|
1925
|
+
/* @__PURE__ */ jsx21("legend", { className: "ui-filter-bar__legend", children: label }),
|
|
1926
|
+
filters.map((filter, index) => /* @__PURE__ */ jsxs16(
|
|
1927
|
+
"fieldset",
|
|
1928
|
+
{
|
|
1929
|
+
className: "ui-filter-bar__chip",
|
|
1930
|
+
"data-filter-id": filter.id,
|
|
1931
|
+
disabled: filter.disabled,
|
|
1932
|
+
onFocus: () => {
|
|
1933
|
+
focused.current = { id: filter.id, index };
|
|
1934
|
+
},
|
|
1935
|
+
children: [
|
|
1936
|
+
/* @__PURE__ */ jsx21("legend", { className: "ui-filter-bar__legend", children: filter.label }),
|
|
1937
|
+
/* @__PURE__ */ jsx21(
|
|
1938
|
+
Dropdown,
|
|
1939
|
+
{
|
|
1940
|
+
label: filter.label,
|
|
1941
|
+
value: filter.value,
|
|
1942
|
+
items: filter.items,
|
|
1943
|
+
variant: "select",
|
|
1944
|
+
ariaLabel: `${filter.label}: ${filter.value}`,
|
|
1945
|
+
open: !blocked && !filter.disabled && (opened[filter.id] && opened[filter.id].against === filter.open ? opened[filter.id].open : !!filter.open),
|
|
1946
|
+
onOpenChange: (open) => setOpened((previous) => ({ ...previous, [filter.id]: { open, against: filter.open } })),
|
|
1947
|
+
onSelect: (value) => {
|
|
1948
|
+
if (!blocked && !filter.disabled) onChange(filter.id, value == null ? void 0 : String(value));
|
|
1949
|
+
}
|
|
1950
|
+
}
|
|
1951
|
+
),
|
|
1952
|
+
/* @__PURE__ */ jsx21(
|
|
1953
|
+
"button",
|
|
1954
|
+
{
|
|
1955
|
+
type: "button",
|
|
1956
|
+
className: "ui-filter-bar__remove",
|
|
1957
|
+
"data-filter-remove": "",
|
|
1958
|
+
"aria-label": `Remove ${filter.label} filter`,
|
|
1959
|
+
onClick: () => {
|
|
1960
|
+
if (!blocked && !filter.disabled) onRemove(filter.id);
|
|
1961
|
+
},
|
|
1962
|
+
children: "\xD7"
|
|
1963
|
+
}
|
|
1964
|
+
)
|
|
1965
|
+
]
|
|
1966
|
+
},
|
|
1967
|
+
filter.id
|
|
1968
|
+
)),
|
|
1969
|
+
/* @__PURE__ */ jsx21("span", { "data-filter-clear": "", onFocus: () => {
|
|
1970
|
+
focused.current = { id: null, index: 0 };
|
|
1971
|
+
}, children: /* @__PURE__ */ jsx21(Button, { size: "sm", variant: "ghost", disabled: !filters.length, onClick: () => {
|
|
1972
|
+
if (!blocked) onClear();
|
|
1973
|
+
}, children: clearLabel }) })
|
|
1974
|
+
]
|
|
1975
|
+
}
|
|
1976
|
+
) });
|
|
1887
1977
|
}
|
|
1888
1978
|
|
|
1889
1979
|
// src/KeyValueList.tsx
|
|
1890
|
-
import { jsx as
|
|
1980
|
+
import { jsx as jsx22, jsxs as jsxs17 } from "react/jsx-runtime";
|
|
1891
1981
|
function detail({ value, redacted }) {
|
|
1892
|
-
if (redacted) return /* @__PURE__ */
|
|
1893
|
-
/* @__PURE__ */
|
|
1982
|
+
if (redacted) return /* @__PURE__ */ jsxs17("span", { className: "ui-kv__hidden", children: [
|
|
1983
|
+
/* @__PURE__ */ jsx22(Icon, { name: "eyeOff" }),
|
|
1894
1984
|
"Hidden"
|
|
1895
1985
|
] });
|
|
1896
1986
|
if (value == null) return "\u2014";
|
|
1897
1987
|
return typeof value === "boolean" ? String(value) : value;
|
|
1898
1988
|
}
|
|
1899
1989
|
function KeyValueList({ rows, columns = 1, className, ...rest }) {
|
|
1900
|
-
return /* @__PURE__ */
|
|
1901
|
-
/* @__PURE__ */
|
|
1902
|
-
/* @__PURE__ */
|
|
1990
|
+
return /* @__PURE__ */ jsx22("dl", { ...rest, className: ["ui-kv", columns === 2 && "ui-kv--two-columns", className].filter(Boolean).join(" "), children: rows.map((row, index) => /* @__PURE__ */ jsxs17("div", { className: "ui-drawer__row", children: [
|
|
1991
|
+
/* @__PURE__ */ jsx22("dt", { children: row.label }),
|
|
1992
|
+
/* @__PURE__ */ jsx22("dd", { children: detail(row) })
|
|
1903
1993
|
] }, index)) });
|
|
1904
1994
|
}
|
|
1905
1995
|
function DrawerSection({ title, headingLevel = 3, className, children, ...rest }) {
|
|
1906
1996
|
const Heading = `h${headingLevel}`;
|
|
1907
|
-
return /* @__PURE__ */
|
|
1908
|
-
title != null && /* @__PURE__ */
|
|
1997
|
+
return /* @__PURE__ */ jsxs17("section", { ...rest, className: ["ui-drawer__section", className].filter(Boolean).join(" "), children: [
|
|
1998
|
+
title != null && /* @__PURE__ */ jsx22(Heading, { className: "ui-drawer__section-title", children: title }),
|
|
1909
1999
|
children
|
|
1910
2000
|
] });
|
|
1911
2001
|
}
|
|
1912
2002
|
|
|
1913
2003
|
// src/Snippet.tsx
|
|
1914
|
-
import { useEffect as useEffect7, useRef as useRef12, useState as
|
|
1915
|
-
import { jsx as
|
|
2004
|
+
import { useEffect as useEffect7, useRef as useRef12, useState as useState8 } from "react";
|
|
2005
|
+
import { jsx as jsx23, jsxs as jsxs18 } from "react/jsx-runtime";
|
|
1916
2006
|
function Snippet({ label = "shell", code = "", reveal = false, copyLabel = "Copy" }) {
|
|
1917
|
-
const [status, setStatus] =
|
|
2007
|
+
const [status, setStatus] = useState8("idle");
|
|
1918
2008
|
const request = useRef12(0);
|
|
1919
2009
|
const timer = useRef12(void 0);
|
|
1920
2010
|
useEffect7(() => {
|
|
@@ -1937,22 +2027,22 @@ function Snippet({ label = "shell", code = "", reveal = false, copyLabel = "Copy
|
|
|
1937
2027
|
if (current === request.current) setStatus("failed");
|
|
1938
2028
|
}
|
|
1939
2029
|
}
|
|
1940
|
-
return /* @__PURE__ */
|
|
1941
|
-
/* @__PURE__ */
|
|
1942
|
-
/* @__PURE__ */
|
|
1943
|
-
/* @__PURE__ */
|
|
1944
|
-
/* @__PURE__ */
|
|
2030
|
+
return /* @__PURE__ */ jsxs18("div", { className: reveal ? "ui-snippet ui-snippet--reveal" : "ui-snippet", children: [
|
|
2031
|
+
/* @__PURE__ */ jsxs18("div", { className: "ui-snippet__bar", children: [
|
|
2032
|
+
/* @__PURE__ */ jsx23("span", { children: label }),
|
|
2033
|
+
/* @__PURE__ */ jsxs18("button", { type: "button", className: "ui-snippet__copy", "aria-live": "polite", "aria-atomic": "true", onClick: copy, children: [
|
|
2034
|
+
/* @__PURE__ */ jsx23(Icon, { name: status === "copied" ? "check" : "copy" }),
|
|
1945
2035
|
status === "copied" ? "Copied" : status === "failed" ? "Copy failed" : copyLabel
|
|
1946
2036
|
] })
|
|
1947
2037
|
] }),
|
|
1948
|
-
/* @__PURE__ */
|
|
2038
|
+
/* @__PURE__ */ jsx23("pre", { children: code })
|
|
1949
2039
|
] });
|
|
1950
2040
|
}
|
|
1951
2041
|
|
|
1952
2042
|
// src/Tabs.tsx
|
|
1953
2043
|
import { useEffect as useEffect8, useId as useId9, useRef as useRef13 } from "react";
|
|
1954
2044
|
import { playEntrance } from "@apliteni/apliteni-ui/motion";
|
|
1955
|
-
import { Fragment as Fragment6, jsx as
|
|
2045
|
+
import { Fragment as Fragment6, jsx as jsx24, jsxs as jsxs19 } from "react/jsx-runtime";
|
|
1956
2046
|
function Tabs({ items, value, onChange, label }) {
|
|
1957
2047
|
const id = useId9();
|
|
1958
2048
|
const previous = useRef13(value);
|
|
@@ -1962,8 +2052,8 @@ function Tabs({ items, value, onChange, label }) {
|
|
|
1962
2052
|
if (previous.current !== value) playEntrance(activePanel.current);
|
|
1963
2053
|
previous.current = value;
|
|
1964
2054
|
}, [value]);
|
|
1965
|
-
return /* @__PURE__ */
|
|
1966
|
-
/* @__PURE__ */
|
|
2055
|
+
return /* @__PURE__ */ jsxs19("div", { className: "ui-tabs", children: [
|
|
2056
|
+
/* @__PURE__ */ jsx24("div", { className: "ui-tabs__list", role: "tablist", "aria-label": label, children: items.map((item, i) => /* @__PURE__ */ jsxs19(
|
|
1967
2057
|
"button",
|
|
1968
2058
|
{
|
|
1969
2059
|
type: "button",
|
|
@@ -2001,7 +2091,7 @@ function Tabs({ items, value, onChange, label }) {
|
|
|
2001
2091
|
},
|
|
2002
2092
|
children: [
|
|
2003
2093
|
item.label,
|
|
2004
|
-
item.count != null && /* @__PURE__ */
|
|
2094
|
+
item.count != null && /* @__PURE__ */ jsxs19(Fragment6, { children: [
|
|
2005
2095
|
" ",
|
|
2006
2096
|
item.count
|
|
2007
2097
|
] })
|
|
@@ -2009,7 +2099,7 @@ function Tabs({ items, value, onChange, label }) {
|
|
|
2009
2099
|
},
|
|
2010
2100
|
item.value
|
|
2011
2101
|
)) }),
|
|
2012
|
-
/* @__PURE__ */
|
|
2102
|
+
/* @__PURE__ */ jsx24("div", { className: "ui-tabs__panels", children: items.map((item, i) => /* @__PURE__ */ jsx24(
|
|
2013
2103
|
"div",
|
|
2014
2104
|
{
|
|
2015
2105
|
className: "ui-tabs__panel",
|
|
@@ -2029,7 +2119,7 @@ function Tabs({ items, value, onChange, label }) {
|
|
|
2029
2119
|
// src/Timeline.tsx
|
|
2030
2120
|
import { useEffect as useEffect9, useRef as useRef14 } from "react";
|
|
2031
2121
|
import { playEntrance as playEntrance2, prefersReducedMotion } from "@apliteni/apliteni-ui/motion";
|
|
2032
|
-
import { jsx as
|
|
2122
|
+
import { jsx as jsx25, jsxs as jsxs20 } from "react/jsx-runtime";
|
|
2033
2123
|
var kindIcons = { person: "user", rule: "bolt", reversal: "refresh" };
|
|
2034
2124
|
function Timeline({ events, className, ...rest }) {
|
|
2035
2125
|
const previousIds = useRef14(new Set(events.map((event) => event.id)));
|
|
@@ -2046,7 +2136,7 @@ function Timeline({ events, className, ...rest }) {
|
|
|
2046
2136
|
}
|
|
2047
2137
|
previousIds.current = new Set(events.map((event) => event.id));
|
|
2048
2138
|
}, [events]);
|
|
2049
|
-
return /* @__PURE__ */
|
|
2139
|
+
return /* @__PURE__ */ jsx25("ol", { ...rest, role: "list", className: ["ui-timeline", events.some((event) => event.kind) && "ui-timeline--kinds", className].filter(Boolean).join(" "), children: events.map((event, index) => /* @__PURE__ */ jsxs20(
|
|
2050
2140
|
"li",
|
|
2051
2141
|
{
|
|
2052
2142
|
className: "ui-timeline__event",
|
|
@@ -2055,20 +2145,20 @@ function Timeline({ events, className, ...rest }) {
|
|
|
2055
2145
|
else rows.current.delete(event.id);
|
|
2056
2146
|
},
|
|
2057
2147
|
children: [
|
|
2058
|
-
/* @__PURE__ */
|
|
2148
|
+
/* @__PURE__ */ jsx25("span", { "aria-hidden": "true", className: [
|
|
2059
2149
|
"ui-timeline__marker",
|
|
2060
2150
|
event.kind && "ui-timeline__marker--kind",
|
|
2061
2151
|
event.kind === "reversal" && "ui-timeline__marker--reversal"
|
|
2062
|
-
].filter(Boolean).join(" "), children: event.kind && /* @__PURE__ */
|
|
2063
|
-
/* @__PURE__ */
|
|
2064
|
-
/* @__PURE__ */
|
|
2065
|
-
/* @__PURE__ */
|
|
2066
|
-
index === events.length - 1 && event.relativeTimestamp && /* @__PURE__ */
|
|
2152
|
+
].filter(Boolean).join(" "), children: event.kind && /* @__PURE__ */ jsx25(Icon, { name: kindIcons[event.kind] }) }),
|
|
2153
|
+
/* @__PURE__ */ jsxs20("div", { className: "ui-timeline__head", children: [
|
|
2154
|
+
/* @__PURE__ */ jsx25("span", { className: "ui-timeline__actor", children: event.actor }),
|
|
2155
|
+
/* @__PURE__ */ jsx25("time", { dateTime: event.dateTime, children: event.timestamp }),
|
|
2156
|
+
index === events.length - 1 && event.relativeTimestamp && /* @__PURE__ */ jsx25("span", { className: "ui-timeline__relative", children: event.relativeTimestamp })
|
|
2067
2157
|
] }),
|
|
2068
|
-
/* @__PURE__ */
|
|
2069
|
-
(event.meta != null || event.undo) && /* @__PURE__ */
|
|
2070
|
-
event.meta != null && /* @__PURE__ */
|
|
2071
|
-
event.undo && /* @__PURE__ */
|
|
2158
|
+
/* @__PURE__ */ jsx25("p", { className: "ui-timeline__description", children: event.description }),
|
|
2159
|
+
(event.meta != null || event.undo) && /* @__PURE__ */ jsxs20("div", { className: "ui-timeline__meta", children: [
|
|
2160
|
+
event.meta != null && /* @__PURE__ */ jsx25("span", { children: event.meta }),
|
|
2161
|
+
event.undo && /* @__PURE__ */ jsx25(Button, { variant: "ghost", size: "xs", className: "ui-btn ui-btn--ghost ui-btn--xs ui-timeline__undo", "aria-label": event.undo.label, onClick: event.undo.onUndo, children: "Undo" })
|
|
2072
2162
|
] })
|
|
2073
2163
|
]
|
|
2074
2164
|
},
|
|
@@ -2077,20 +2167,20 @@ function Timeline({ events, className, ...rest }) {
|
|
|
2077
2167
|
}
|
|
2078
2168
|
|
|
2079
2169
|
// src/Field.tsx
|
|
2080
|
-
import { useEffect as useEffect10, useId as useId10, useRef as useRef15, useState as
|
|
2170
|
+
import { useEffect as useEffect10, useId as useId10, useRef as useRef15, useState as useState9 } from "react";
|
|
2081
2171
|
import { esc, icon as icon4 } from "@apliteni/apliteni-ui";
|
|
2082
|
-
import { jsx as
|
|
2172
|
+
import { jsx as jsx26, jsxs as jsxs21 } from "react/jsx-runtime";
|
|
2083
2173
|
function messages(id, hint, error) {
|
|
2084
2174
|
return [error && `${id}-error`, hint && `${id}-hint`].filter(Boolean).join(" ") || void 0;
|
|
2085
2175
|
}
|
|
2086
2176
|
function Frame({ id, label, hint, error, required, children }) {
|
|
2087
|
-
return /* @__PURE__ */
|
|
2088
|
-
/* @__PURE__ */
|
|
2177
|
+
return /* @__PURE__ */ jsxs21("div", { className: "ui-field", children: [
|
|
2178
|
+
/* @__PURE__ */ jsxs21("label", { className: "ui-field__label", htmlFor: id, children: [
|
|
2089
2179
|
label,
|
|
2090
|
-
required && /* @__PURE__ */
|
|
2180
|
+
required && /* @__PURE__ */ jsx26("span", { className: "ui-field__req", "aria-hidden": "true", children: "*" })
|
|
2091
2181
|
] }),
|
|
2092
2182
|
children,
|
|
2093
|
-
error && /* @__PURE__ */
|
|
2183
|
+
error && /* @__PURE__ */ jsx26(
|
|
2094
2184
|
"div",
|
|
2095
2185
|
{
|
|
2096
2186
|
id: `${id}-error`,
|
|
@@ -2099,7 +2189,7 @@ function Frame({ id, label, hint, error, required, children }) {
|
|
|
2099
2189
|
dangerouslySetInnerHTML: { __html: icon4("alert") + esc(error) }
|
|
2100
2190
|
}
|
|
2101
2191
|
),
|
|
2102
|
-
hint && /* @__PURE__ */
|
|
2192
|
+
hint && /* @__PURE__ */ jsx26("div", { id: `${id}-hint`, className: "ui-field__hint", children: hint })
|
|
2103
2193
|
] });
|
|
2104
2194
|
}
|
|
2105
2195
|
function wiring(id, hint, error) {
|
|
@@ -2109,7 +2199,7 @@ function TextField({ label, hint, error, required, type = "text", unit, classNam
|
|
|
2109
2199
|
const id = useId10();
|
|
2110
2200
|
const hasUnit = type === "number" && !!unit;
|
|
2111
2201
|
const describedBy = [messages(id, hint, error), hasUnit ? `${id}-unit` : ""].filter(Boolean).join(" ") || void 0;
|
|
2112
|
-
const control = /* @__PURE__ */
|
|
2202
|
+
const control = /* @__PURE__ */ jsx26(
|
|
2113
2203
|
"input",
|
|
2114
2204
|
{
|
|
2115
2205
|
...props,
|
|
@@ -2121,14 +2211,14 @@ function TextField({ label, hint, error, required, type = "text", unit, classNam
|
|
|
2121
2211
|
className: `ui-input${error ? " is-invalid" : ""} ${className}`
|
|
2122
2212
|
}
|
|
2123
2213
|
);
|
|
2124
|
-
return /* @__PURE__ */
|
|
2214
|
+
return /* @__PURE__ */ jsx26(Frame, { ...{ id, label, hint, error, required }, children: hasUnit ? /* @__PURE__ */ jsxs21("div", { className: "ui-field-number", children: [
|
|
2125
2215
|
control,
|
|
2126
|
-
/* @__PURE__ */
|
|
2216
|
+
/* @__PURE__ */ jsx26("span", { id: `${id}-unit`, className: "ui-field-number__unit", children: unit })
|
|
2127
2217
|
] }) : control });
|
|
2128
2218
|
}
|
|
2129
2219
|
function TextArea({ label, hint, error, required, className = "", ...props }) {
|
|
2130
2220
|
const id = useId10();
|
|
2131
|
-
return /* @__PURE__ */
|
|
2221
|
+
return /* @__PURE__ */ jsx26(Frame, { ...{ id, label, hint, error, required }, children: /* @__PURE__ */ jsx26(
|
|
2132
2222
|
"textarea",
|
|
2133
2223
|
{
|
|
2134
2224
|
rows: 4,
|
|
@@ -2141,7 +2231,7 @@ function TextArea({ label, hint, error, required, className = "", ...props }) {
|
|
|
2141
2231
|
}
|
|
2142
2232
|
function SelectField({ label, hint, error, required, className = "", children, ...props }) {
|
|
2143
2233
|
const id = useId10();
|
|
2144
|
-
return /* @__PURE__ */
|
|
2234
|
+
return /* @__PURE__ */ jsx26(Frame, { ...{ id, label, hint, error, required }, children: /* @__PURE__ */ jsx26(
|
|
2145
2235
|
"select",
|
|
2146
2236
|
{
|
|
2147
2237
|
...props,
|
|
@@ -2155,8 +2245,8 @@ function SelectField({ label, hint, error, required, className = "", children, .
|
|
|
2155
2245
|
function FileField({ label, hint, error, required, disabled, onFileChange, className = "", ...props }) {
|
|
2156
2246
|
const id = useId10();
|
|
2157
2247
|
const input = useRef15(null);
|
|
2158
|
-
const [file, setFile] =
|
|
2159
|
-
const [dragging, setDragging] =
|
|
2248
|
+
const [file, setFile] = useState9(null);
|
|
2249
|
+
const [dragging, setDragging] = useState9(false);
|
|
2160
2250
|
useEffect10(() => {
|
|
2161
2251
|
const form = input.current?.form;
|
|
2162
2252
|
const reset = () => {
|
|
@@ -2170,7 +2260,7 @@ function FileField({ label, hint, error, required, disabled, onFileChange, class
|
|
|
2170
2260
|
setFile(next);
|
|
2171
2261
|
onFileChange?.(next);
|
|
2172
2262
|
};
|
|
2173
|
-
return /* @__PURE__ */
|
|
2263
|
+
return /* @__PURE__ */ jsx26(Frame, { ...{ id, label, hint, error, required }, children: /* @__PURE__ */ jsxs21(
|
|
2174
2264
|
"div",
|
|
2175
2265
|
{
|
|
2176
2266
|
className: `ui-file${dragging && !disabled ? " is-dragging" : ""}${file ? " has-file" : ""}${error ? " is-invalid" : ""}${disabled ? " is-disabled" : ""}`,
|
|
@@ -2191,12 +2281,12 @@ function FileField({ label, hint, error, required, disabled, onFileChange, class
|
|
|
2191
2281
|
update(transfer.files[0]);
|
|
2192
2282
|
},
|
|
2193
2283
|
children: [
|
|
2194
|
-
/* @__PURE__ */
|
|
2195
|
-
/* @__PURE__ */
|
|
2196
|
-
/* @__PURE__ */
|
|
2197
|
-
/* @__PURE__ */
|
|
2198
|
-
/* @__PURE__ */
|
|
2199
|
-
/* @__PURE__ */
|
|
2284
|
+
/* @__PURE__ */ jsx26("span", { className: "ui-file__glyph", children: /* @__PURE__ */ jsx26(Icon, { name: "upload" }) }),
|
|
2285
|
+
/* @__PURE__ */ jsx26("div", { "aria-live": "polite", children: file ? file.name : "Drop a file here" }),
|
|
2286
|
+
/* @__PURE__ */ jsx26("div", { children: "or choose one from your device" }),
|
|
2287
|
+
/* @__PURE__ */ jsxs21("span", { className: "ui-file__choose", children: [
|
|
2288
|
+
/* @__PURE__ */ jsx26("span", { className: "ui-btn ui-btn--secondary ui-btn--sm", "aria-hidden": "true", "aria-disabled": disabled || void 0, children: file ? "Replace file" : "Choose file" }),
|
|
2289
|
+
/* @__PURE__ */ jsx26(
|
|
2200
2290
|
"input",
|
|
2201
2291
|
{
|
|
2202
2292
|
...props,
|
|
@@ -2216,9 +2306,9 @@ function FileField({ label, hint, error, required, disabled, onFileChange, class
|
|
|
2216
2306
|
}
|
|
2217
2307
|
|
|
2218
2308
|
// src/Toast.tsx
|
|
2219
|
-
import { createContext as createContext2, useCallback as useCallback3, useContext as useContext2, useEffect as useEffect11, useLayoutEffect as
|
|
2309
|
+
import { createContext as createContext2, useCallback as useCallback3, useContext as useContext2, useEffect as useEffect11, useLayoutEffect as useLayoutEffect4, useRef as useRef16, useState as useState10 } from "react";
|
|
2220
2310
|
import { createPortal as createPortal4 } from "react-dom";
|
|
2221
|
-
import { jsx as
|
|
2311
|
+
import { jsx as jsx27, jsxs as jsxs22 } from "react/jsx-runtime";
|
|
2222
2312
|
var Context = createContext2(null);
|
|
2223
2313
|
var glyphs = { success: "circleCheck", danger: "circleX", warn: "circleAlert", info: "info", neutral: "bolt" };
|
|
2224
2314
|
function useToast() {
|
|
@@ -2228,11 +2318,11 @@ function useToast() {
|
|
|
2228
2318
|
}
|
|
2229
2319
|
function Notice({ notice, remove }) {
|
|
2230
2320
|
const root = useRef16(null);
|
|
2231
|
-
const [leaving2, setLeaving] =
|
|
2321
|
+
const [leaving2, setLeaving] = useState10(false);
|
|
2232
2322
|
const dismissed = useRef16(false);
|
|
2233
2323
|
const remaining = useRef16(5e3);
|
|
2234
|
-
const [hovered, setHovered] =
|
|
2235
|
-
const [focused, setFocused] =
|
|
2324
|
+
const [hovered, setHovered] = useState10(false);
|
|
2325
|
+
const [focused, setFocused] = useState10(false);
|
|
2236
2326
|
const paused = hovered || focused;
|
|
2237
2327
|
const tone = notice.tone ?? "success";
|
|
2238
2328
|
const dismiss = useCallback3(() => {
|
|
@@ -2264,7 +2354,7 @@ function Notice({ notice, remove }) {
|
|
|
2264
2354
|
remaining.current = Math.max(0, remaining.current - (Date.now() - started));
|
|
2265
2355
|
};
|
|
2266
2356
|
}, [dismiss, leaving2, notice.action, paused]);
|
|
2267
|
-
return /* @__PURE__ */
|
|
2357
|
+
return /* @__PURE__ */ jsxs22(
|
|
2268
2358
|
"div",
|
|
2269
2359
|
{
|
|
2270
2360
|
ref: root,
|
|
@@ -2278,12 +2368,12 @@ function Notice({ notice, remove }) {
|
|
|
2278
2368
|
if (!event.currentTarget.contains(event.relatedTarget)) setFocused(false);
|
|
2279
2369
|
},
|
|
2280
2370
|
children: [
|
|
2281
|
-
/* @__PURE__ */
|
|
2282
|
-
/* @__PURE__ */
|
|
2283
|
-
/* @__PURE__ */
|
|
2284
|
-
notice.text && /* @__PURE__ */
|
|
2371
|
+
/* @__PURE__ */ jsx27("span", { className: "ui-toast__icon", children: /* @__PURE__ */ jsx27(Icon, { name: glyphs[tone] }) }),
|
|
2372
|
+
/* @__PURE__ */ jsxs22("div", { className: "ui-toast__body", children: [
|
|
2373
|
+
/* @__PURE__ */ jsx27("div", { className: "ui-toast__title", children: notice.title }),
|
|
2374
|
+
notice.text && /* @__PURE__ */ jsx27("div", { className: "ui-toast__text", children: notice.text })
|
|
2285
2375
|
] }),
|
|
2286
|
-
notice.action && /* @__PURE__ */
|
|
2376
|
+
notice.action && /* @__PURE__ */ jsx27(
|
|
2287
2377
|
"button",
|
|
2288
2378
|
{
|
|
2289
2379
|
type: "button",
|
|
@@ -2298,8 +2388,8 @@ function Notice({ notice, remove }) {
|
|
|
2298
2388
|
children: notice.action.label
|
|
2299
2389
|
}
|
|
2300
2390
|
),
|
|
2301
|
-
/* @__PURE__ */
|
|
2302
|
-
!notice.action && /* @__PURE__ */
|
|
2391
|
+
/* @__PURE__ */ jsx27("button", { type: "button", className: "ui-toast__close", "aria-label": "Dismiss", disabled: leaving2, onClick: dismiss, children: /* @__PURE__ */ jsx27(Icon, { name: "x" }) }),
|
|
2392
|
+
!notice.action && /* @__PURE__ */ jsx27(
|
|
2303
2393
|
"span",
|
|
2304
2394
|
{
|
|
2305
2395
|
className: "ui-toast__timer is-running",
|
|
@@ -2313,7 +2403,7 @@ function Notice({ notice, remove }) {
|
|
|
2313
2403
|
}
|
|
2314
2404
|
var REACH = "--rx-toast-stack";
|
|
2315
2405
|
function usePublishedReach(stack2, count) {
|
|
2316
|
-
|
|
2406
|
+
useLayoutEffect4(() => {
|
|
2317
2407
|
const element = stack2.current;
|
|
2318
2408
|
const view = element?.ownerDocument.defaultView;
|
|
2319
2409
|
const root = element?.ownerDocument.documentElement;
|
|
@@ -2332,7 +2422,7 @@ function usePublishedReach(stack2, count) {
|
|
|
2332
2422
|
}, [stack2, count]);
|
|
2333
2423
|
}
|
|
2334
2424
|
function Toast({ children }) {
|
|
2335
|
-
const [entries, setEntries] =
|
|
2425
|
+
const [entries, setEntries] = useState10([]);
|
|
2336
2426
|
const nextId = useRef16(0);
|
|
2337
2427
|
const stack2 = useRef16(null);
|
|
2338
2428
|
const push = useCallback3((notice) => {
|
|
@@ -2341,19 +2431,19 @@ function Toast({ children }) {
|
|
|
2341
2431
|
setEntries((current) => [...current, { id, notice, remove }]);
|
|
2342
2432
|
}, []);
|
|
2343
2433
|
usePublishedReach(stack2, entries.length);
|
|
2344
|
-
return /* @__PURE__ */
|
|
2434
|
+
return /* @__PURE__ */ jsxs22(Context.Provider, { value: push, children: [
|
|
2345
2435
|
children,
|
|
2346
2436
|
typeof document !== "undefined" && createPortal4(
|
|
2347
|
-
/* @__PURE__ */
|
|
2437
|
+
/* @__PURE__ */ jsx27("div", { className: "ui-toast-stack rx-toast-stack", ref: stack2, children: entries.map((entry) => /* @__PURE__ */ jsx27(Notice, { notice: entry.notice, remove: entry.remove }, entry.id)) }),
|
|
2348
2438
|
document.body
|
|
2349
2439
|
)
|
|
2350
2440
|
] });
|
|
2351
2441
|
}
|
|
2352
2442
|
|
|
2353
2443
|
// src/AppShell.tsx
|
|
2354
|
-
import { useEffect as useEffect12, useId as useId11, useState as
|
|
2444
|
+
import { useEffect as useEffect12, useId as useId11, useState as useState11 } from "react";
|
|
2355
2445
|
import { applyTheme, paletteHotkey, prism, railCollapsed, themeIcon, themeName } from "@apliteni/apliteni-ui";
|
|
2356
|
-
import { Fragment as Fragment7, jsx as
|
|
2446
|
+
import { Fragment as Fragment7, jsx as jsx28, jsxs as jsxs23 } from "react/jsx-runtime";
|
|
2357
2447
|
var path = (value) => value.split(/[?#]/)[0].replace(/\/+$/, "") || "/";
|
|
2358
2448
|
function AppShell({
|
|
2359
2449
|
sections,
|
|
@@ -2375,10 +2465,10 @@ function AppShell({
|
|
|
2375
2465
|
renderLink
|
|
2376
2466
|
}) {
|
|
2377
2467
|
const uid = useId11();
|
|
2378
|
-
const [collapsed, setCollapsed] =
|
|
2379
|
-
const [search, setSearch] =
|
|
2380
|
-
const [more, setMore] =
|
|
2381
|
-
const [theme, setTheme] =
|
|
2468
|
+
const [collapsed, setCollapsed] = useState11(defaultCollapsed);
|
|
2469
|
+
const [search, setSearch] = useState11(false);
|
|
2470
|
+
const [more, setMore] = useState11(false);
|
|
2471
|
+
const [theme, setTheme] = useState11("dark");
|
|
2382
2472
|
const current = path(pathname);
|
|
2383
2473
|
const active = sections.filter((section) => current === path(section.href) || path(section.href) !== "/" && current.startsWith(`${path(section.href)}/`)).sort((a, b) => path(b.href).length - path(a.href).length)[0];
|
|
2384
2474
|
useEffect12(() => {
|
|
@@ -2424,44 +2514,44 @@ function AppShell({
|
|
|
2424
2514
|
onClick: (event) => {
|
|
2425
2515
|
if (!event.metaKey && !event.ctrlKey && !event.shiftKey && !event.altKey) setMore(false);
|
|
2426
2516
|
},
|
|
2427
|
-
children: /* @__PURE__ */
|
|
2428
|
-
/* @__PURE__ */
|
|
2429
|
-
/* @__PURE__ */
|
|
2430
|
-
section.count != null && /* @__PURE__ */
|
|
2517
|
+
children: /* @__PURE__ */ jsxs23(Fragment7, { children: [
|
|
2518
|
+
/* @__PURE__ */ jsx28("span", { className: "ui-nav__ic", children: /* @__PURE__ */ jsx28(Icon, { name: section.icon }) }),
|
|
2519
|
+
/* @__PURE__ */ jsx28("span", { className: "ui-nav__label", children: section.label }),
|
|
2520
|
+
section.count != null && /* @__PURE__ */ jsx28("span", { className: "ui-nav__badge", children: section.count })
|
|
2431
2521
|
] })
|
|
2432
2522
|
};
|
|
2433
|
-
return /* @__PURE__ */
|
|
2523
|
+
return /* @__PURE__ */ jsx28("li", { children: renderLink ? renderLink(section, linkProps) : /* @__PURE__ */ jsx28("a", { ...linkProps }) }, section.href);
|
|
2434
2524
|
});
|
|
2435
2525
|
const foldLabel = collapsed ? "Expand sidebar" : "Collapse sidebar";
|
|
2436
2526
|
const visible = sections.length > 4 ? sections.slice(0, 3) : sections;
|
|
2437
2527
|
const remaining = sections.slice(visible.length);
|
|
2438
2528
|
const initials = account.name.trim().split(/\s+/).map((part) => part[0]).slice(0, 2).join("");
|
|
2439
|
-
return /* @__PURE__ */
|
|
2440
|
-
/* @__PURE__ */
|
|
2441
|
-
/* @__PURE__ */
|
|
2442
|
-
brand ?? /* @__PURE__ */
|
|
2443
|
-
/* @__PURE__ */
|
|
2529
|
+
return /* @__PURE__ */ jsxs23("div", { className: `ui-app ui-app--topbar ui-react-app${collapsed ? " is-collapsed" : ""}`, children: [
|
|
2530
|
+
/* @__PURE__ */ jsxs23("div", { className: "ui-app__rail", children: [
|
|
2531
|
+
/* @__PURE__ */ jsx28("div", { className: "ui-app__head", children: /* @__PURE__ */ jsxs23("a", { className: "ui-app__brand", href: brandHref, "aria-label": word, children: [
|
|
2532
|
+
brand ?? /* @__PURE__ */ jsx28("i", { "aria-hidden": "true", className: "ui-react-app__mark", dangerouslySetInnerHTML: { __html: prism(uid, 24) } }),
|
|
2533
|
+
/* @__PURE__ */ jsx28("span", { children: word })
|
|
2444
2534
|
] }) }),
|
|
2445
|
-
/* @__PURE__ */
|
|
2446
|
-
/* @__PURE__ */
|
|
2447
|
-
/* @__PURE__ */
|
|
2448
|
-
/* @__PURE__ */
|
|
2449
|
-
/* @__PURE__ */
|
|
2535
|
+
/* @__PURE__ */ jsx28("nav", { className: "ui-nav ui-nav--side", "aria-label": "Sections", children: /* @__PURE__ */ jsx28("ul", { className: "ui-nav__list", children: links(sections) }) }),
|
|
2536
|
+
/* @__PURE__ */ jsx28("div", { className: "ui-app__foot", children: /* @__PURE__ */ jsx28("div", { className: "ui-app__fold-row", children: /* @__PURE__ */ jsxs23("button", { type: "button", className: "ui-nav__item ui-app__fold", "aria-expanded": !collapsed, "aria-label": foldLabel, onClick: fold, children: [
|
|
2537
|
+
/* @__PURE__ */ jsx28("span", { className: "ui-nav__ic", children: /* @__PURE__ */ jsxs23("svg", { className: "ui-icon", viewBox: "0 0 24 24", "aria-hidden": "true", children: [
|
|
2538
|
+
/* @__PURE__ */ jsx28("rect", { x: "3", y: "3", width: "18", height: "18", rx: "2" }),
|
|
2539
|
+
/* @__PURE__ */ jsx28("path", { className: "ui-app__fold-seam", d: "M9 3v18" })
|
|
2450
2540
|
] }) }),
|
|
2451
|
-
/* @__PURE__ */
|
|
2541
|
+
/* @__PURE__ */ jsx28("span", { className: "ui-nav__label", children: foldLabel })
|
|
2452
2542
|
] }) }) })
|
|
2453
2543
|
] }),
|
|
2454
|
-
/* @__PURE__ */
|
|
2455
|
-
/* @__PURE__ */
|
|
2456
|
-
/* @__PURE__ */
|
|
2457
|
-
/* @__PURE__ */
|
|
2458
|
-
/* @__PURE__ */
|
|
2459
|
-
/* @__PURE__ */
|
|
2544
|
+
/* @__PURE__ */ jsxs23("div", { className: "ui-app__well", children: [
|
|
2545
|
+
/* @__PURE__ */ jsxs23("header", { className: "ui-app__bar", children: [
|
|
2546
|
+
/* @__PURE__ */ jsxs23("button", { type: "button", className: "ui-app__search", "aria-haspopup": "dialog", onClick: () => setSearch(true), children: [
|
|
2547
|
+
/* @__PURE__ */ jsx28("span", { className: "ui-app__search-ic", children: /* @__PURE__ */ jsx28(Icon, { name: "search" }) }),
|
|
2548
|
+
/* @__PURE__ */ jsx28("span", { className: "ui-app__search-txt", children: "Search or run a command\u2026" }),
|
|
2549
|
+
/* @__PURE__ */ jsx28("kbd", { className: "ui-cmdk__key", children: paletteHotkey() })
|
|
2460
2550
|
] }),
|
|
2461
|
-
/* @__PURE__ */
|
|
2551
|
+
/* @__PURE__ */ jsx28("span", { className: "ui-app__bar-gap" }),
|
|
2462
2552
|
bandControl,
|
|
2463
|
-
/* @__PURE__ */
|
|
2464
|
-
/* @__PURE__ */
|
|
2553
|
+
/* @__PURE__ */ jsx28("button", { type: "button", className: "toggle", "aria-label": themeName(theme), title: themeName(theme), onClick: () => applyTheme(theme === "light" ? "dark" : "light"), children: /* @__PURE__ */ jsx28("span", { className: "ic", "aria-hidden": "true", dangerouslySetInnerHTML: { __html: themeIcon(theme) } }) }),
|
|
2554
|
+
/* @__PURE__ */ jsx28("div", { className: "ui-app__user ui-app__user--bar", children: /* @__PURE__ */ jsx28(
|
|
2465
2555
|
Dropdown,
|
|
2466
2556
|
{
|
|
2467
2557
|
variant: "menu",
|
|
@@ -2470,27 +2560,27 @@ function AppShell({
|
|
|
2470
2560
|
ariaLabel: `Signed in as ${account.name}, ${account.email}`,
|
|
2471
2561
|
triggerClass: "ui-app__user-trigger",
|
|
2472
2562
|
panelClass: "ui-app__user-panel",
|
|
2473
|
-
triggerContent: /* @__PURE__ */
|
|
2474
|
-
header: /* @__PURE__ */
|
|
2475
|
-
/* @__PURE__ */
|
|
2476
|
-
/* @__PURE__ */
|
|
2563
|
+
triggerContent: /* @__PURE__ */ jsx28("span", { className: "ui-app__av", "aria-hidden": "true", children: initials }),
|
|
2564
|
+
header: /* @__PURE__ */ jsxs23("div", { className: "ui-dropdown__head", children: [
|
|
2565
|
+
/* @__PURE__ */ jsx28("b", { children: account.name }),
|
|
2566
|
+
/* @__PURE__ */ jsx28("span", { children: account.email })
|
|
2477
2567
|
] }),
|
|
2478
2568
|
items: [{ label: "Sign out", icon: "logout", danger: true }],
|
|
2479
2569
|
onSelect: onSignOut
|
|
2480
2570
|
}
|
|
2481
2571
|
) })
|
|
2482
2572
|
] }),
|
|
2483
|
-
/* @__PURE__ */
|
|
2484
|
-
back && /* @__PURE__ */
|
|
2485
|
-
/* @__PURE__ */
|
|
2486
|
-
lede && /* @__PURE__ */
|
|
2487
|
-
actions && /* @__PURE__ */
|
|
2488
|
-
/* @__PURE__ */
|
|
2573
|
+
/* @__PURE__ */ jsxs23("main", { className: `ui-app__main${width === "wide" ? " ui-app__main--wide" : ""}`, children: [
|
|
2574
|
+
back && /* @__PURE__ */ jsx28(BackLink, { ...back }),
|
|
2575
|
+
/* @__PURE__ */ jsx28("h1", { children: title }),
|
|
2576
|
+
lede && /* @__PURE__ */ jsx28("p", { className: "ui-app__sub", children: lede }),
|
|
2577
|
+
actions && /* @__PURE__ */ jsx28("div", { className: "ui-react-app__actions", children: actions }),
|
|
2578
|
+
/* @__PURE__ */ jsx28("div", { className: "ui-app__body", children })
|
|
2489
2579
|
] })
|
|
2490
2580
|
] }),
|
|
2491
|
-
/* @__PURE__ */
|
|
2581
|
+
/* @__PURE__ */ jsx28("nav", { className: "ui-nav ui-react-app__bottom", "aria-label": "Sections on mobile", children: /* @__PURE__ */ jsxs23("ul", { className: "ui-nav__list", children: [
|
|
2492
2582
|
links(visible),
|
|
2493
|
-
remaining.length > 0 && /* @__PURE__ */
|
|
2583
|
+
remaining.length > 0 && /* @__PURE__ */ jsx28("li", { children: /* @__PURE__ */ jsxs23(
|
|
2494
2584
|
"button",
|
|
2495
2585
|
{
|
|
2496
2586
|
type: "button",
|
|
@@ -2499,20 +2589,20 @@ function AppShell({
|
|
|
2499
2589
|
"aria-expanded": more,
|
|
2500
2590
|
onClick: () => setMore(true),
|
|
2501
2591
|
children: [
|
|
2502
|
-
/* @__PURE__ */
|
|
2503
|
-
/* @__PURE__ */
|
|
2592
|
+
/* @__PURE__ */ jsx28("span", { className: "ui-nav__ic", children: /* @__PURE__ */ jsx28(Icon, { name: "moreHorizontal" }) }),
|
|
2593
|
+
/* @__PURE__ */ jsx28("span", { className: "ui-nav__label", children: "More" })
|
|
2504
2594
|
]
|
|
2505
2595
|
}
|
|
2506
2596
|
) })
|
|
2507
2597
|
] }) }),
|
|
2508
|
-
/* @__PURE__ */
|
|
2509
|
-
/* @__PURE__ */
|
|
2598
|
+
/* @__PURE__ */ jsx28(Drawer, { open: more, onClose: () => setMore(false), title: "More sections", side: "bottom", children: /* @__PURE__ */ jsx28("nav", { className: "ui-nav ui-nav--side", "aria-label": "More sections", children: /* @__PURE__ */ jsx28("ul", { className: "ui-nav__list", children: links(remaining) }) }) }),
|
|
2599
|
+
/* @__PURE__ */ jsx28(CommandPalette, { ...palette ?? { groups: [{ items: sections.map((section) => ({ id: section.href, ...section })) }] }, open: search, onClose: () => setSearch(false) })
|
|
2510
2600
|
] });
|
|
2511
2601
|
}
|
|
2512
2602
|
|
|
2513
2603
|
// src/EmptyState.tsx
|
|
2514
2604
|
import { icon as kitIcon2, illo } from "@apliteni/apliteni-ui";
|
|
2515
|
-
import { jsx as
|
|
2605
|
+
import { jsx as jsx29, jsxs as jsxs24 } from "react/jsx-runtime";
|
|
2516
2606
|
var cases = {
|
|
2517
2607
|
"first-run": { title: "Nothing needs you yet", sub: "New items will appear here when they need your attention.", icon: "check" },
|
|
2518
2608
|
"no-matches": { title: "No results in this view", sub: "Try another search or clear your filters.", icon: "search" },
|
|
@@ -2524,18 +2614,18 @@ function EmptyState({ variant = "first-run", title, sub, icon: icon6, art, actio
|
|
|
2524
2614
|
const heading = title ?? preset.title;
|
|
2525
2615
|
const guidance = sub ?? preset.sub;
|
|
2526
2616
|
const glyph = icon6 ?? preset.icon;
|
|
2527
|
-
return /* @__PURE__ */
|
|
2528
|
-
art ? typeof art === "string" ? /* @__PURE__ */
|
|
2529
|
-
heading && /* @__PURE__ */
|
|
2530
|
-
guidance && /* @__PURE__ */
|
|
2531
|
-
actions && /* @__PURE__ */
|
|
2617
|
+
return /* @__PURE__ */ jsxs24("div", { className: "ui-empty", children: [
|
|
2618
|
+
art ? typeof art === "string" ? /* @__PURE__ */ jsx29("div", { className: "ui-empty__art", dangerouslySetInnerHTML: { __html: /<svg/.test(art) ? art : illo(art) } }) : /* @__PURE__ */ jsx29("div", { className: "ui-empty__art", "aria-hidden": "true", children: art }) : glyph ? /* @__PURE__ */ jsx29("div", { className: "ui-empty__icon", dangerouslySetInnerHTML: { __html: kitIcon2(glyph) } }) : null,
|
|
2619
|
+
heading && /* @__PURE__ */ jsx29("div", { className: "ui-empty__title", children: heading }),
|
|
2620
|
+
guidance && /* @__PURE__ */ jsx29("div", { className: "ui-empty__sub", children: guidance }),
|
|
2621
|
+
actions && /* @__PURE__ */ jsx29("div", { className: "ui-empty__actions", children: actions })
|
|
2532
2622
|
] });
|
|
2533
2623
|
}
|
|
2534
2624
|
|
|
2535
2625
|
// src/ThemeToggle.tsx
|
|
2536
2626
|
import { useSyncExternalStore } from "react";
|
|
2537
2627
|
import { icon as icon5 } from "@apliteni/apliteni-ui";
|
|
2538
|
-
import { jsx as
|
|
2628
|
+
import { jsx as jsx30, jsxs as jsxs25 } from "react/jsx-runtime";
|
|
2539
2629
|
var STORAGE_KEY = "apliteni-strategy-theme";
|
|
2540
2630
|
var CHOICE_EVENT = "apliteni-theme-choice";
|
|
2541
2631
|
var THEME_INIT_SCRIPT = `(()=>{let t;try{t=localStorage.getItem('apliteni-strategy-theme')}catch{}document.documentElement.setAttribute('data-theme',t==='dark'||t==='light'?t:window.matchMedia?.('(prefers-color-scheme: light)').matches?'light':'dark')})()`;
|
|
@@ -2593,10 +2683,10 @@ function ThemeToggle({ labelled = false }) {
|
|
|
2593
2683
|
}
|
|
2594
2684
|
window.dispatchEvent(new Event(CHOICE_EVENT));
|
|
2595
2685
|
};
|
|
2596
|
-
const button = /* @__PURE__ */
|
|
2597
|
-
return labelled ? /* @__PURE__ */
|
|
2686
|
+
const button = /* @__PURE__ */ jsx30("button", { type: "button", className: "toggle", "aria-label": name, title: name, onClick: toggle, children: /* @__PURE__ */ jsx30("span", { className: "ic", "aria-hidden": "true", dangerouslySetInnerHTML: { __html: icon5(theme === "auto" ? "monitor" : theme === "light" ? "sun" : "moon") } }) });
|
|
2687
|
+
return labelled ? /* @__PURE__ */ jsxs25("span", { className: "ui-theme-toggle", children: [
|
|
2598
2688
|
button,
|
|
2599
|
-
/* @__PURE__ */
|
|
2689
|
+
/* @__PURE__ */ jsxs25("span", { children: [
|
|
2600
2690
|
label,
|
|
2601
2691
|
" theme"
|
|
2602
2692
|
] })
|
|
@@ -2632,6 +2722,7 @@ export {
|
|
|
2632
2722
|
NumericValue,
|
|
2633
2723
|
PAGE_SIZES,
|
|
2634
2724
|
Pagination,
|
|
2725
|
+
Pill,
|
|
2635
2726
|
RowIdentity,
|
|
2636
2727
|
Segmented,
|
|
2637
2728
|
SelectField,
|
|
@@ -2639,6 +2730,7 @@ export {
|
|
|
2639
2730
|
SkeletonTable,
|
|
2640
2731
|
Snippet,
|
|
2641
2732
|
StatBand,
|
|
2733
|
+
StatusDot,
|
|
2642
2734
|
THEME_INIT_SCRIPT,
|
|
2643
2735
|
Tabs,
|
|
2644
2736
|
TextArea,
|