@ai-matrx/design-system 0.86.349 → 0.86.351
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/CHANGELOG.md +22 -2
- package/dist/carousel.cjs.map +1 -1
- package/dist/carousel.js +5 -5
- package/dist/chunk-4WSXAP24.js +51 -0
- package/dist/chunk-4WSXAP24.js.map +1 -0
- package/dist/{chunk-XTP6HOB6.js → chunk-6XNYYROM.js} +1 -1
- package/dist/chunk-6XNYYROM.js.map +1 -0
- package/dist/{chunk-CEA6X445.js → chunk-CFUXEGW2.js} +2 -2
- package/dist/{chunk-54UK6P7E.js → chunk-FLWSEDUW.js} +3 -3
- package/dist/{chunk-BC7LMEOD.js → chunk-GJ6UGQ4X.js} +7 -3
- package/dist/chunk-GJ6UGQ4X.js.map +1 -0
- package/dist/{chunk-6CDAHINE.js → chunk-GMNROZQJ.js} +4 -4
- package/dist/{chunk-6CDAHINE.js.map → chunk-GMNROZQJ.js.map} +1 -1
- package/dist/{chunk-6QKT52FR.js → chunk-MTE6N7XU.js} +2 -2
- package/dist/{chunk-S6F34AX5.js → chunk-QA7EHFRX.js} +2 -2
- package/dist/{chunk-CJBSBKG5.js → chunk-SOCNWQMX.js} +2 -2
- package/dist/{chunk-GLLPO66A.js → chunk-U46XUQI7.js} +2 -2
- package/dist/{chunk-KYH42WEX.js → chunk-UGQRAQTE.js} +433 -344
- package/dist/chunk-UGQRAQTE.js.map +1 -0
- package/dist/{chunk-TWRC7NP4.js → chunk-WUD23YTG.js} +4 -4
- package/dist/{chunk-MIJMP4WI.js → chunk-YRF22M5S.js} +6 -1
- package/dist/{chunk-MIJMP4WI.js.map → chunk-YRF22M5S.js.map} +1 -1
- package/dist/clipboard-fallback-dialog.cjs.map +1 -1
- package/dist/clipboard-fallback-dialog.js +1 -1
- package/dist/controls.cjs +547 -458
- package/dist/controls.cjs.map +1 -1
- package/dist/controls.css +52 -18
- package/dist/controls.d.cts +51 -3
- package/dist/controls.d.ts +51 -3
- package/dist/controls.js +13 -5
- package/dist/data-table/data-row-inspector.cjs.map +1 -1
- package/dist/data-table/data-row-inspector.js +4 -4
- package/dist/data-table/data-row-window.cjs.map +1 -1
- package/dist/data-table/data-row-window.js +5 -5
- package/dist/data-table/index.cjs +53 -43
- package/dist/data-table/index.cjs.map +1 -1
- package/dist/data-table/index.js +52 -45
- package/dist/data-table/index.js.map +1 -1
- package/dist/data-table/pagination.cjs.map +1 -1
- package/dist/data-table/pagination.js +2 -2
- package/dist/data-table/spreadsheet.cjs +6 -2
- package/dist/data-table/spreadsheet.cjs.map +1 -1
- package/dist/data-table/spreadsheet.d.cts +4 -1
- package/dist/data-table/spreadsheet.d.ts +4 -1
- package/dist/data-table/spreadsheet.js +3 -1
- package/dist/data-table/uuid-cell.cjs.map +1 -1
- package/dist/data-table/uuid-cell.js +2 -2
- package/dist/desktop.cjs +158 -16
- package/dist/desktop.cjs.map +1 -1
- package/dist/desktop.css +46 -0
- package/dist/desktop.d.cts +6 -5
- package/dist/desktop.d.ts +6 -5
- package/dist/desktop.js +127 -17
- package/dist/desktop.js.map +1 -1
- package/dist/index.cjs +19 -9
- package/dist/index.cjs.map +1 -1
- package/dist/index.d.cts +10 -1
- package/dist/index.d.ts +10 -1
- package/dist/index.js +21 -14
- package/dist/index.js.map +1 -1
- package/dist/item.cjs.map +1 -1
- package/dist/item.js +2 -2
- package/dist/lite-table.cjs.map +1 -1
- package/dist/lite-table.js +1 -1
- package/dist/notice-stack.cjs +70 -0
- package/dist/notice-stack.cjs.map +1 -0
- package/dist/notice-stack.d.cts +60 -0
- package/dist/notice-stack.d.ts +60 -0
- package/dist/notice-stack.js +16 -0
- package/dist/notice-stack.js.map +1 -0
- package/dist/record-list.cjs.map +1 -1
- package/dist/record-list.js +2 -2
- package/dist/settings.cjs +2 -2
- package/dist/settings.cjs.map +1 -1
- package/dist/settings.js +3 -3
- package/dist/swipe-deck.cjs +95 -25
- package/dist/swipe-deck.cjs.map +1 -1
- package/dist/swipe-deck.css +14 -0
- package/dist/swipe-deck.d.cts +20 -0
- package/dist/swipe-deck.d.ts +20 -0
- package/dist/swipe-deck.js +87 -25
- package/dist/swipe-deck.js.map +1 -1
- package/dist/writing-field.cjs +2 -2
- package/dist/writing-field.cjs.map +1 -1
- package/dist/writing-field.js +2 -2
- package/package.json +12 -18
- package/dist/chunk-BC7LMEOD.js.map +0 -1
- package/dist/chunk-KYH42WEX.js.map +0 -1
- package/dist/chunk-XTP6HOB6.js.map +0 -1
- /package/dist/{chunk-CEA6X445.js.map → chunk-CFUXEGW2.js.map} +0 -0
- /package/dist/{chunk-54UK6P7E.js.map → chunk-FLWSEDUW.js.map} +0 -0
- /package/dist/{chunk-6QKT52FR.js.map → chunk-MTE6N7XU.js.map} +0 -0
- /package/dist/{chunk-S6F34AX5.js.map → chunk-QA7EHFRX.js.map} +0 -0
- /package/dist/{chunk-CJBSBKG5.js.map → chunk-SOCNWQMX.js.map} +0 -0
- /package/dist/{chunk-GLLPO66A.js.map → chunk-U46XUQI7.js.map} +0 -0
- /package/dist/{chunk-TWRC7NP4.js.map → chunk-WUD23YTG.js.map} +0 -0
|
@@ -3,8 +3,8 @@ import "../chunk-QFP4BUKZ.js";
|
|
|
3
3
|
import {
|
|
4
4
|
RecordId,
|
|
5
5
|
shortUuid
|
|
6
|
-
} from "../chunk-
|
|
7
|
-
import "../chunk-
|
|
6
|
+
} from "../chunk-U46XUQI7.js";
|
|
7
|
+
import "../chunk-6XNYYROM.js";
|
|
8
8
|
import "../chunk-BD77DHUO.js";
|
|
9
9
|
import "../chunk-BKCJUFD3.js";
|
|
10
10
|
import "../chunk-PIQJULQB.js";
|
package/dist/desktop.cjs
CHANGED
|
@@ -2885,6 +2885,44 @@ function NavigatorCustomizeSheet({ open, onOpenChange, items, onChange, onRestor
|
|
|
2885
2885
|
] }) });
|
|
2886
2886
|
}
|
|
2887
2887
|
|
|
2888
|
+
// src/notice-stack.ts
|
|
2889
|
+
var NOTICE_STACK = {
|
|
2890
|
+
/** The corner every notice floats in. */
|
|
2891
|
+
corner: "top-right",
|
|
2892
|
+
/** Cards shown at once; the rest fold into "N more". */
|
|
2893
|
+
maxVisible: 3,
|
|
2894
|
+
/** Info and success: gone after this long. */
|
|
2895
|
+
infoMs: 4e3,
|
|
2896
|
+
/** Errors and warnings: stay until dismissed, or this long at most. */
|
|
2897
|
+
errorMs: 3e4,
|
|
2898
|
+
/** The card's width: small, never the window's. */
|
|
2899
|
+
widthRem: 22
|
|
2900
|
+
};
|
|
2901
|
+
function noticeKey(tone, title, message) {
|
|
2902
|
+
const text = (v) => typeof v === "string" || typeof v === "number" ? String(v).trim() : "";
|
|
2903
|
+
return `${tone}\0${text(title)}\0${text(message)}`;
|
|
2904
|
+
}
|
|
2905
|
+
function collapseNotices(items, keyOf) {
|
|
2906
|
+
const groups = [];
|
|
2907
|
+
const byKey = /* @__PURE__ */ new Map();
|
|
2908
|
+
for (const item2 of items) {
|
|
2909
|
+
const key2 = keyOf(item2);
|
|
2910
|
+
const found = key2 !== null ? byKey.get(key2) : void 0;
|
|
2911
|
+
if (found) {
|
|
2912
|
+
found.members.push(item2);
|
|
2913
|
+
continue;
|
|
2914
|
+
}
|
|
2915
|
+
const group = { key: key2, members: [item2] };
|
|
2916
|
+
groups.push(group);
|
|
2917
|
+
if (key2 !== null) byKey.set(key2, group);
|
|
2918
|
+
}
|
|
2919
|
+
return groups.map((g) => ({ item: g.members[g.members.length - 1], members: g.members, count: g.members.length }));
|
|
2920
|
+
}
|
|
2921
|
+
function visibleNotices(groups, max = NOTICE_STACK.maxVisible) {
|
|
2922
|
+
if (groups.length <= max) return { shown: [...groups], folded: 0 };
|
|
2923
|
+
return { shown: groups.slice(groups.length - max), folded: groups.length - max };
|
|
2924
|
+
}
|
|
2925
|
+
|
|
2888
2926
|
// src/desktop/layout.tsx
|
|
2889
2927
|
var import_jsx_runtime20 = require("react/jsx-runtime");
|
|
2890
2928
|
var WIDTH = {
|
|
@@ -2892,16 +2930,78 @@ var WIDTH = {
|
|
|
2892
2930
|
wide: "max-w-none",
|
|
2893
2931
|
full: "max-w-none"
|
|
2894
2932
|
};
|
|
2895
|
-
|
|
2896
|
-
|
|
2933
|
+
var EMPTY_LAYOUT = { drawn: /* @__PURE__ */ new Map(), folded: 0, total: 0 };
|
|
2934
|
+
function createNoticeRegistry() {
|
|
2935
|
+
let entries = [];
|
|
2936
|
+
let expanded = false;
|
|
2937
|
+
let layout = EMPTY_LAYOUT;
|
|
2938
|
+
const listeners = /* @__PURE__ */ new Set();
|
|
2939
|
+
const recompute = () => {
|
|
2940
|
+
const groups = collapseNotices(entries, (e) => e.key);
|
|
2941
|
+
const { shown, folded } = expanded ? { shown: groups, folded: 0 } : visibleNotices(groups);
|
|
2942
|
+
const drawn = /* @__PURE__ */ new Map();
|
|
2943
|
+
for (const g of shown) {
|
|
2944
|
+
const dismissers = g.members.map((m) => m.dismiss).filter((d) => typeof d === "function");
|
|
2945
|
+
drawn.set(g.item.id, { count: g.count, dismissAll: g.item.dismiss ? () => dismissers.forEach((d) => d()) : void 0 });
|
|
2946
|
+
}
|
|
2947
|
+
layout = { drawn, folded, total: entries.length };
|
|
2948
|
+
listeners.forEach((l) => l());
|
|
2949
|
+
};
|
|
2950
|
+
return {
|
|
2951
|
+
set(id, key2, dismiss) {
|
|
2952
|
+
const at = entries.findIndex((e) => e.id === id);
|
|
2953
|
+
if (at >= 0) {
|
|
2954
|
+
const old = entries[at];
|
|
2955
|
+
if (old.key === key2 && old.dismiss === dismiss) return;
|
|
2956
|
+
entries = entries.map((e, i) => i === at ? { id, key: key2, dismiss } : e);
|
|
2957
|
+
} else {
|
|
2958
|
+
entries = [...entries, { id, key: key2, dismiss }];
|
|
2959
|
+
}
|
|
2960
|
+
recompute();
|
|
2961
|
+
},
|
|
2962
|
+
remove(id) {
|
|
2963
|
+
if (!entries.some((e) => e.id === id)) return;
|
|
2964
|
+
entries = entries.filter((e) => e.id !== id);
|
|
2965
|
+
if (entries.length === 0) expanded = false;
|
|
2966
|
+
recompute();
|
|
2967
|
+
},
|
|
2968
|
+
subscribe(listener) {
|
|
2969
|
+
listeners.add(listener);
|
|
2970
|
+
return () => listeners.delete(listener);
|
|
2971
|
+
},
|
|
2972
|
+
snapshot: () => layout,
|
|
2973
|
+
expand() {
|
|
2974
|
+
expanded = true;
|
|
2975
|
+
recompute();
|
|
2976
|
+
}
|
|
2977
|
+
};
|
|
2978
|
+
}
|
|
2979
|
+
var NoticeStackContext = React16.createContext(null);
|
|
2980
|
+
function useNoticeStackLayout(registry3) {
|
|
2981
|
+
return React16.useSyncExternalStore(
|
|
2982
|
+
React16.useCallback((l) => registry3 ? registry3.subscribe(l) : () => void 0, [registry3]),
|
|
2983
|
+
() => registry3 ? registry3.snapshot() : EMPTY_LAYOUT,
|
|
2984
|
+
() => registry3 ? registry3.snapshot() : EMPTY_LAYOUT
|
|
2985
|
+
);
|
|
2986
|
+
}
|
|
2987
|
+
function bannerNoticeKey(tone, title, message) {
|
|
2988
|
+
if (typeof title !== "string" && typeof title !== "number") return null;
|
|
2989
|
+
return noticeKey(tone, title, message);
|
|
2990
|
+
}
|
|
2991
|
+
function holdsElements(children) {
|
|
2992
|
+
return React16.Children.toArray(children).some(
|
|
2993
|
+
(c) => React16.isValidElement(c) && c.type === React16.Fragment ? holdsElements(c.props.children) : React16.isValidElement(c)
|
|
2994
|
+
);
|
|
2897
2995
|
}
|
|
2898
2996
|
function Notices({ children, className, onHeight, ...props }) {
|
|
2899
2997
|
const stack = React16.useRef(null);
|
|
2900
|
-
const
|
|
2998
|
+
const [registry3] = React16.useState(createNoticeRegistry);
|
|
2999
|
+
const layout = useNoticeStackLayout(registry3);
|
|
3000
|
+
const drawn = layout.total > 0;
|
|
2901
3001
|
React16.useLayoutEffect(() => {
|
|
2902
3002
|
const el = stack.current;
|
|
2903
3003
|
if (!onHeight) return;
|
|
2904
|
-
if (!el) return onHeight(0);
|
|
3004
|
+
if (!el || !drawn) return onHeight(0);
|
|
2905
3005
|
const report = () => onHeight(el.offsetHeight);
|
|
2906
3006
|
report();
|
|
2907
3007
|
if (typeof ResizeObserver === "undefined") return;
|
|
@@ -2912,8 +3012,27 @@ function Notices({ children, className, onHeight, ...props }) {
|
|
|
2912
3012
|
onHeight(0);
|
|
2913
3013
|
};
|
|
2914
3014
|
}, [onHeight, drawn]);
|
|
2915
|
-
if (!
|
|
2916
|
-
return /* @__PURE__ */ (0, import_jsx_runtime20.jsx)(
|
|
3015
|
+
if (!holdsElements(children)) return null;
|
|
3016
|
+
return /* @__PURE__ */ (0, import_jsx_runtime20.jsx)(
|
|
3017
|
+
"div",
|
|
3018
|
+
{
|
|
3019
|
+
ref: stack,
|
|
3020
|
+
"data-slot": "notices",
|
|
3021
|
+
"data-float": "",
|
|
3022
|
+
"aria-live": "polite",
|
|
3023
|
+
hidden: !drawn || void 0,
|
|
3024
|
+
style: { width: `${NOTICE_STACK.widthRem}rem` },
|
|
3025
|
+
className: cn("flex flex-col items-stretch gap-2 empty:hidden", className),
|
|
3026
|
+
...props,
|
|
3027
|
+
children: /* @__PURE__ */ (0, import_jsx_runtime20.jsxs)(NoticeStackContext.Provider, { value: registry3, children: [
|
|
3028
|
+
layout.folded > 0 ? /* @__PURE__ */ (0, import_jsx_runtime20.jsx)("button", { type: "button", "data-slot": "notices-more", className: "order-first self-end rounded-full px-2 py-0.5", onClick: () => registry3.expand(), children: /* @__PURE__ */ (0, import_jsx_runtime20.jsxs)(Text, { variant: "caption", tone: "secondary", children: [
|
|
3029
|
+
layout.folded,
|
|
3030
|
+
" more"
|
|
3031
|
+
] }) }) : null,
|
|
3032
|
+
children
|
|
3033
|
+
] })
|
|
3034
|
+
}
|
|
3035
|
+
);
|
|
2917
3036
|
}
|
|
2918
3037
|
function NoticeSlot({ children, className, ...props }) {
|
|
2919
3038
|
return /* @__PURE__ */ (0, import_jsx_runtime20.jsx)("div", { "data-slot": "notice-slot", "aria-live": "polite", className: cn("h-16 shrink-0 overflow-hidden [&>*]:h-full [&>*]:overflow-hidden", className), ...props, children });
|
|
@@ -2921,14 +3040,14 @@ function NoticeSlot({ children, className, ...props }) {
|
|
|
2921
3040
|
var Page = React16.forwardRef(function Page2({ width = "wide", header, notices, sidebar, scopeBar, footer, flush, className, children, ...props }, ref) {
|
|
2922
3041
|
const frame = (
|
|
2923
3042
|
// The frame is always there (with or without notices), so a notice never remounts the page.
|
|
2924
|
-
/* @__PURE__ */ (0, import_jsx_runtime20.jsxs)("div", { "data-slot": "page-frame", className: "flex h-full min-w-0 flex-1 flex-col bg-content", children: [
|
|
3043
|
+
/* @__PURE__ */ (0, import_jsx_runtime20.jsxs)("div", { "data-slot": "page-frame", className: "relative flex h-full min-w-0 flex-1 flex-col bg-content", children: [
|
|
2925
3044
|
scopeBar ? /* @__PURE__ */ (0, import_jsx_runtime20.jsx)("div", { "data-slot": "page-scope-bar", className: "flex h-control-lg shrink-0 items-center gap-2 border-b border-separator px-3", children: scopeBar }) : null,
|
|
2926
3045
|
/* @__PURE__ */ (0, import_jsx_runtime20.jsx)("div", { ref, "data-slot": "page", "data-flush": flush || void 0, className: cn("min-h-0 flex-1 overflow-y-auto bg-content", className), ...props, children: /* @__PURE__ */ (0, import_jsx_runtime20.jsxs)("div", { className: cn("flex w-full flex-col", flush ? "min-h-full" : "gap-5 px-5 pb-5 pt-3", WIDTH[width]), children: [
|
|
2927
3046
|
header,
|
|
2928
3047
|
children
|
|
2929
3048
|
] }) }),
|
|
2930
3049
|
footer ? /* @__PURE__ */ (0, import_jsx_runtime20.jsx)("div", { "data-slot": "page-footer", className: "flex shrink-0 flex-col border-t border-separator bg-content", children: footer }) : null,
|
|
2931
|
-
/* @__PURE__ */ (0, import_jsx_runtime20.jsx)(Notices, { "data-page-notices": "",
|
|
3050
|
+
/* @__PURE__ */ (0, import_jsx_runtime20.jsx)(Notices, { "data-page-notices": "", children: notices })
|
|
2932
3051
|
] })
|
|
2933
3052
|
);
|
|
2934
3053
|
if (!sidebar) return frame;
|
|
@@ -5413,22 +5532,45 @@ var BANNER_ICON = {
|
|
|
5413
5532
|
danger: /* @__PURE__ */ (0, import_jsx_runtime42.jsx)(Glyph, { d: ALERT }),
|
|
5414
5533
|
success: /* @__PURE__ */ (0, import_jsx_runtime42.jsx)(Glyph, { d: DONE })
|
|
5415
5534
|
};
|
|
5416
|
-
function Banner({ tone, icon, title, message, actions, detail, onDismiss, className, ...props }) {
|
|
5535
|
+
function Banner({ tone, icon, title, message, actions, detail, onDismiss, count, className, ...props }) {
|
|
5417
5536
|
const [copied, setCopied] = React34.useState(false);
|
|
5537
|
+
const registry3 = React34.useContext(NoticeStackContext);
|
|
5538
|
+
const floating = registry3 !== null;
|
|
5539
|
+
const id = React34.useId();
|
|
5540
|
+
const key2 = bannerNoticeKey(tone, title, message);
|
|
5541
|
+
React34.useLayoutEffect(() => {
|
|
5542
|
+
registry3?.set(id, key2, onDismiss);
|
|
5543
|
+
}, [registry3, id, key2, onDismiss]);
|
|
5544
|
+
React34.useLayoutEffect(() => registry3 ? () => registry3.remove(id) : void 0, [registry3, id]);
|
|
5545
|
+
const layout = useNoticeStackLayout(registry3);
|
|
5546
|
+
const slot = layout.drawn.get(id);
|
|
5547
|
+
if (floating && !slot) return null;
|
|
5548
|
+
if (slot) {
|
|
5549
|
+
count = Math.max(count ?? 1, slot.count);
|
|
5550
|
+
if (slot.dismissAll) onDismiss = slot.dismissAll;
|
|
5551
|
+
}
|
|
5418
5552
|
return /* @__PURE__ */ (0, import_jsx_runtime42.jsxs)(
|
|
5419
5553
|
"div",
|
|
5420
5554
|
{
|
|
5421
5555
|
role: tone === "danger" || tone === "warning" ? "alert" : "status",
|
|
5422
5556
|
"data-slot": "banner",
|
|
5423
5557
|
"data-tone": tone,
|
|
5424
|
-
|
|
5558
|
+
"data-float": floating ? "" : void 0,
|
|
5559
|
+
"data-count": count && count > 1 ? count : void 0,
|
|
5560
|
+
className: cn("flex min-h-row items-center gap-2.5 rounded-group px-3 py-2", floating ? "items-start" : BANNER_TONE[tone].box, className),
|
|
5425
5561
|
...props,
|
|
5426
5562
|
children: [
|
|
5427
5563
|
/* @__PURE__ */ (0, import_jsx_runtime42.jsx)("span", { className: cn("flex shrink-0 self-start pt-px [&_svg]:size-icon", BANNER_TONE[tone].icon), children: icon ?? BANNER_ICON[tone] }),
|
|
5428
5564
|
/* @__PURE__ */ (0, import_jsx_runtime42.jsxs)("div", { "data-slot": "banner-body", className: "flex min-w-0 flex-1 flex-wrap items-center gap-x-3 gap-y-2", children: [
|
|
5429
5565
|
/* @__PURE__ */ (0, import_jsx_runtime42.jsxs)("div", { "data-slot": "banner-text", className: "flex min-w-0 flex-1 basis-56 flex-col gap-0.5", title: detail || void 0, children: [
|
|
5430
|
-
/* @__PURE__ */ (0, import_jsx_runtime42.
|
|
5431
|
-
|
|
5566
|
+
/* @__PURE__ */ (0, import_jsx_runtime42.jsxs)(Text, { "data-slot": "banner-title", emphasized: true, ...floating && typeof title === "string" ? { title } : {}, children: [
|
|
5567
|
+
title,
|
|
5568
|
+
count && count > 1 ? /* @__PURE__ */ (0, import_jsx_runtime42.jsxs)("span", { "data-slot": "banner-count", className: "ml-1.5 font-normal text-label-secondary", children: [
|
|
5569
|
+
"\xD7",
|
|
5570
|
+
count
|
|
5571
|
+
] }) : null
|
|
5572
|
+
] }),
|
|
5573
|
+
message ? /* @__PURE__ */ (0, import_jsx_runtime42.jsx)(Text, { "data-slot": "banner-message", as: "p", tone: "secondary", selectable: true, children: message }) : null
|
|
5432
5574
|
] }),
|
|
5433
5575
|
actions || detail ? /* @__PURE__ */ (0, import_jsx_runtime42.jsxs)("div", { "data-slot": "banner-actions", className: "ml-auto flex shrink-0 items-center gap-2", children: [
|
|
5434
5576
|
detail ? /* @__PURE__ */ (0, import_jsx_runtime42.jsx)(
|
|
@@ -6720,7 +6862,7 @@ function EndOfList({ onEndReached }) {
|
|
|
6720
6862
|
var import_jsx_runtime47 = require("react/jsx-runtime");
|
|
6721
6863
|
var LIST_WIDTH = { md: "w-70", lg: "w-85" };
|
|
6722
6864
|
function SplitView({ header, notices, source, list, listHeader, listFooter, detail, listWidth = "lg", detailScrolls = true, narrow, className, ...props }) {
|
|
6723
|
-
return /* @__PURE__ */ (0, import_jsx_runtime47.jsxs)("div", { "data-slot": "split-view", className: cn("flex h-full min-h-0 flex-col bg-content", className), ...props, children: [
|
|
6865
|
+
return /* @__PURE__ */ (0, import_jsx_runtime47.jsxs)("div", { "data-slot": "split-view", className: cn("relative flex h-full min-h-0 flex-col bg-content", className), ...props, children: [
|
|
6724
6866
|
header ? /* @__PURE__ */ (0, import_jsx_runtime47.jsx)("div", { className: "shrink-0 px-5 empty:hidden", children: header }) : null,
|
|
6725
6867
|
/* @__PURE__ */ (0, import_jsx_runtime47.jsxs)("div", { "data-slot": "split-columns", "data-narrow": detail !== void 0 ? narrow : void 0, "data-has-source": source ? "" : void 0, className: "flex min-h-0 flex-1", children: [
|
|
6726
6868
|
source ? /* @__PURE__ */ (0, import_jsx_runtime47.jsx)("div", { "data-slot": "split-view-source", className: "flex w-52 min-w-40 shrink flex-col overflow-y-auto border-r border-separator py-2", children: source }) : null,
|
|
@@ -6731,7 +6873,7 @@ function SplitView({ header, notices, source, list, listHeader, listFooter, deta
|
|
|
6731
6873
|
] }),
|
|
6732
6874
|
detail !== void 0 ? /* @__PURE__ */ (0, import_jsx_runtime47.jsx)("div", { "data-slot": "split-view-detail", className: cn("flex min-w-80 flex-1 flex-col", detailScrolls ? "overflow-y-auto" : "min-h-0"), children: detail }) : null
|
|
6733
6875
|
] }),
|
|
6734
|
-
/* @__PURE__ */ (0, import_jsx_runtime47.jsx)(Notices, { "data-page-notices": "",
|
|
6876
|
+
/* @__PURE__ */ (0, import_jsx_runtime47.jsx)(Notices, { "data-page-notices": "", children: notices })
|
|
6735
6877
|
] });
|
|
6736
6878
|
}
|
|
6737
6879
|
|
|
@@ -8669,12 +8811,12 @@ function Skeleton({ className, animated = true, motion = "pulse", shape, height,
|
|
|
8669
8811
|
// src/controls/surfaces.tsx
|
|
8670
8812
|
var import_jsx_runtime68 = require("react/jsx-runtime");
|
|
8671
8813
|
var Tile = React50.forwardRef(
|
|
8672
|
-
({ layout = "row", variant = "outline", icon, title, wrapTitle, line, end, selected, selectedStyle, tooltip, level, fit, endInset, oneLine, dashed, hoverStyle, danger, dimmed, glyphTone, hero, tone, dense, asChild = false, className, children, onClick, type, ...props }, ref) => {
|
|
8814
|
+
({ layout = "row", variant = "outline", icon, title, wrapTitle, line, end, selected, selectedStyle, tooltip, level, fit, endInset, oneLine, dashed, hoverStyle, danger, dimmed, glyphTone, hero, tone, iconTone, dense, asChild = false, className, children, onClick, type, ...props }, ref) => {
|
|
8673
8815
|
const Component = asChild ? import_react_slot5.Slot : "button";
|
|
8674
8816
|
const ariaDisabled = props["aria-disabled"];
|
|
8675
8817
|
const inert = ariaDisabled === true || ariaDisabled === "true";
|
|
8676
8818
|
const body = /* @__PURE__ */ (0, import_jsx_runtime68.jsxs)(import_jsx_runtime68.Fragment, { children: [
|
|
8677
|
-
icon ? /* @__PURE__ */ (0, import_jsx_runtime68.jsx)("span", { className: "matrx-tile-icon", children: icon }) : null,
|
|
8819
|
+
icon ? /* @__PURE__ */ (0, import_jsx_runtime68.jsx)("span", { className: "matrx-tile-icon", "data-tone": iconTone && iconTone !== "neutral" ? iconTone : void 0, children: icon }) : null,
|
|
8678
8820
|
/* @__PURE__ */ (0, import_jsx_runtime68.jsxs)("span", { className: "matrx-tile-text", children: [
|
|
8679
8821
|
/* @__PURE__ */ (0, import_jsx_runtime68.jsx)("span", { className: "matrx-tile-title", children: title }),
|
|
8680
8822
|
line ? /* @__PURE__ */ (0, import_jsx_runtime68.jsx)("span", { className: "matrx-tile-line", children: line }) : null
|