@ai-matrx/design-system 0.86.348 → 0.86.350
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 +17 -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-54UK6P7E.js → chunk-BCGNEWZM.js} +3 -3
- package/dist/{chunk-CEA6X445.js → chunk-CFUXEGW2.js} +2 -2
- package/dist/{chunk-BC7LMEOD.js → chunk-GJ6UGQ4X.js} +7 -3
- package/dist/chunk-GJ6UGQ4X.js.map +1 -0
- package/dist/{chunk-6QKT52FR.js → chunk-MTE6N7XU.js} +2 -2
- package/dist/{chunk-S6F34AX5.js → chunk-QA7EHFRX.js} +2 -2
- package/dist/{chunk-KYH42WEX.js → chunk-SC3XPADZ.js} +3 -3
- package/dist/{chunk-CJBSBKG5.js → chunk-SOCNWQMX.js} +2 -2
- package/dist/{chunk-GLLPO66A.js → chunk-U46XUQI7.js} +2 -2
- package/dist/{chunk-6CDAHINE.js → chunk-UTADJKVR.js} +2 -2
- 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.map +1 -1
- package/dist/controls.css +25 -0
- package/dist/controls.d.cts +2 -2
- package/dist/controls.d.ts +2 -2
- package/dist/controls.js +5 -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 +8 -5
- package/dist/data-table/index.cjs.map +1 -1
- package/dist/data-table/index.js +9 -9
- 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 +93 -12
- package/dist/desktop.cjs.map +1 -1
- package/dist/desktop.css +27 -0
- package/dist/desktop.d.cts +6 -5
- package/dist/desktop.d.ts +6 -5
- package/dist/desktop.js +64 -15
- package/dist/desktop.js.map +1 -1
- package/dist/index.cjs +17 -7
- package/dist/index.cjs.map +1 -1
- package/dist/index.d.cts +21 -12
- package/dist/index.d.ts +21 -12
- 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.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.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-XTP6HOB6.js.map +0 -1
- /package/dist/{chunk-54UK6P7E.js.map → chunk-BCGNEWZM.js.map} +0 -0
- /package/dist/{chunk-CEA6X445.js.map → chunk-CFUXEGW2.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-KYH42WEX.js.map → chunk-SC3XPADZ.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-6CDAHINE.js.map → chunk-UTADJKVR.js.map} +0 -0
- /package/dist/{chunk-TWRC7NP4.js.map → chunk-WUD23YTG.js.map} +0 -0
package/dist/desktop.css
CHANGED
|
@@ -1281,3 +1281,30 @@
|
|
|
1281
1281
|
[data-slot="scope-bar"]::-webkit-scrollbar {
|
|
1282
1282
|
display: none;
|
|
1283
1283
|
}
|
|
1284
|
+
|
|
1285
|
+
/* ---------- The notice stack (layout.tsx Notices, ../notice-stack.ts) ----------
|
|
1286
|
+
A macOS notification card: a 14 pt rounded panel of the popover's translucent, blurred material
|
|
1287
|
+
with its shadow, floating in the frame's top-right corner. The tone lives in the icon only, so an
|
|
1288
|
+
error is a small card with a red glyph, never a red bar across the window. */
|
|
1289
|
+
/* The stack: out of the flow, in the frame's top-right corner (the frame is `relative`), never wider
|
|
1290
|
+
than the frame; it lets clicks through between its cards. */
|
|
1291
|
+
[data-slot="notices"][data-float] {
|
|
1292
|
+
position: absolute;
|
|
1293
|
+
top: 12px;
|
|
1294
|
+
right: 12px;
|
|
1295
|
+
z-index: 40;
|
|
1296
|
+
max-width: calc(100% - 24px);
|
|
1297
|
+
pointer-events: none;
|
|
1298
|
+
}
|
|
1299
|
+
[data-slot="notices"][data-float] > * {
|
|
1300
|
+
pointer-events: auto;
|
|
1301
|
+
}
|
|
1302
|
+
[data-slot="banner"][data-float] {
|
|
1303
|
+
border-radius: 14px;
|
|
1304
|
+
background: var(--mx-popover);
|
|
1305
|
+
-webkit-backdrop-filter: blur(30px) saturate(1.8);
|
|
1306
|
+
backdrop-filter: blur(30px) saturate(1.8);
|
|
1307
|
+
box-shadow: var(--mx-shadow-popover);
|
|
1308
|
+
color: var(--mx-label);
|
|
1309
|
+
padding: 10px 10px 10px 12px;
|
|
1310
|
+
}
|
package/dist/desktop.d.cts
CHANGED
|
@@ -238,9 +238,8 @@ interface PageProps extends React.HTMLAttributes<HTMLDivElement> {
|
|
|
238
238
|
width?: PageWidth;
|
|
239
239
|
/** The page header; drawn at the top of the scrolling column. */
|
|
240
240
|
header?: React.ReactNode;
|
|
241
|
-
/** Banners (errors, "Not live", a result
|
|
242
|
-
*
|
|
243
|
-
* or goes. The lint refuses a Banner anywhere else on a page. */
|
|
241
|
+
/** Banners (errors, "Not live", a result). They float as small cards in the page's top-right
|
|
242
|
+
* corner (Notices), never a bar across it. The lint refuses a Banner anywhere else on a page. */
|
|
244
243
|
notices?: React.ReactNode;
|
|
245
244
|
/** A leading source list inside the page (Console's devices and reports, System Information's
|
|
246
245
|
* categories): a fixed column with its own scroll, a hairline on its trailing edge. */
|
|
@@ -265,7 +264,7 @@ declare function Notices({ children, className, onHeight, ...props }: React.HTML
|
|
|
265
264
|
declare function NoticeSlot({ children, className, ...props }: React.HTMLAttributes<HTMLDivElement>): React.JSX.Element;
|
|
266
265
|
/**
|
|
267
266
|
* One scrolling content page: 20 px window margins, the HIG spacing scale (20 px between groups),
|
|
268
|
-
* and its notices
|
|
267
|
+
* and its notices as small cards in its top-right corner (see Notices).
|
|
269
268
|
*/
|
|
270
269
|
declare const Page: React.ForwardRefExoticComponent<PageProps & React.RefAttributes<HTMLDivElement>>;
|
|
271
270
|
interface PageHeaderProps extends Omit<React.HTMLAttributes<HTMLElement>, "title"> {
|
|
@@ -2194,12 +2193,14 @@ interface BannerProps extends Omit<React.HTMLAttributes<HTMLDivElement>, "title"
|
|
|
2194
2193
|
detail?: string;
|
|
2195
2194
|
/** Shows the close (×) button: for notices the person can put away. */
|
|
2196
2195
|
onDismiss?: () => void;
|
|
2196
|
+
/** How many identical notices this card stands for (the stack collapses them, Notices). */
|
|
2197
|
+
count?: number;
|
|
2197
2198
|
}
|
|
2198
2199
|
/**
|
|
2199
2200
|
* THE inline notice (one pattern, every screen): the tone's icon, a semantic tint, one fixed
|
|
2200
2201
|
* minimum height, the title and one line, trailing actions, and × when it can be put away.
|
|
2201
2202
|
*/
|
|
2202
|
-
declare function Banner({ tone, icon, title, message, actions, detail, onDismiss, className, ...props }: BannerProps): React.JSX.Element;
|
|
2203
|
+
declare function Banner({ tone, icon, title, message, actions, detail, onDismiss, count, className, ...props }: BannerProps): React.JSX.Element;
|
|
2203
2204
|
interface ErrorBannerProps extends Omit<BannerProps, "tone" | "title" | "message" | "actions" | "detail" | "onDismiss"> {
|
|
2204
2205
|
/** The failed action's error (e.g. `useDesktopAction().error`); nothing renders without one. */
|
|
2205
2206
|
error: {
|
package/dist/desktop.d.ts
CHANGED
|
@@ -238,9 +238,8 @@ interface PageProps extends React.HTMLAttributes<HTMLDivElement> {
|
|
|
238
238
|
width?: PageWidth;
|
|
239
239
|
/** The page header; drawn at the top of the scrolling column. */
|
|
240
240
|
header?: React.ReactNode;
|
|
241
|
-
/** Banners (errors, "Not live", a result
|
|
242
|
-
*
|
|
243
|
-
* or goes. The lint refuses a Banner anywhere else on a page. */
|
|
241
|
+
/** Banners (errors, "Not live", a result). They float as small cards in the page's top-right
|
|
242
|
+
* corner (Notices), never a bar across it. The lint refuses a Banner anywhere else on a page. */
|
|
244
243
|
notices?: React.ReactNode;
|
|
245
244
|
/** A leading source list inside the page (Console's devices and reports, System Information's
|
|
246
245
|
* categories): a fixed column with its own scroll, a hairline on its trailing edge. */
|
|
@@ -265,7 +264,7 @@ declare function Notices({ children, className, onHeight, ...props }: React.HTML
|
|
|
265
264
|
declare function NoticeSlot({ children, className, ...props }: React.HTMLAttributes<HTMLDivElement>): React.JSX.Element;
|
|
266
265
|
/**
|
|
267
266
|
* One scrolling content page: 20 px window margins, the HIG spacing scale (20 px between groups),
|
|
268
|
-
* and its notices
|
|
267
|
+
* and its notices as small cards in its top-right corner (see Notices).
|
|
269
268
|
*/
|
|
270
269
|
declare const Page: React.ForwardRefExoticComponent<PageProps & React.RefAttributes<HTMLDivElement>>;
|
|
271
270
|
interface PageHeaderProps extends Omit<React.HTMLAttributes<HTMLElement>, "title"> {
|
|
@@ -2194,12 +2193,14 @@ interface BannerProps extends Omit<React.HTMLAttributes<HTMLDivElement>, "title"
|
|
|
2194
2193
|
detail?: string;
|
|
2195
2194
|
/** Shows the close (×) button: for notices the person can put away. */
|
|
2196
2195
|
onDismiss?: () => void;
|
|
2196
|
+
/** How many identical notices this card stands for (the stack collapses them, Notices). */
|
|
2197
|
+
count?: number;
|
|
2197
2198
|
}
|
|
2198
2199
|
/**
|
|
2199
2200
|
* THE inline notice (one pattern, every screen): the tone's icon, a semantic tint, one fixed
|
|
2200
2201
|
* minimum height, the title and one line, trailing actions, and × when it can be put away.
|
|
2201
2202
|
*/
|
|
2202
|
-
declare function Banner({ tone, icon, title, message, actions, detail, onDismiss, className, ...props }: BannerProps): React.JSX.Element;
|
|
2203
|
+
declare function Banner({ tone, icon, title, message, actions, detail, onDismiss, count, className, ...props }: BannerProps): React.JSX.Element;
|
|
2203
2204
|
interface ErrorBannerProps extends Omit<BannerProps, "tone" | "title" | "message" | "actions" | "detail" | "onDismiss"> {
|
|
2204
2205
|
/** The failed action's error (e.g. `useDesktopAction().error`); nothing renders without one. */
|
|
2205
2206
|
error: {
|
package/dist/desktop.js
CHANGED
|
@@ -1,4 +1,10 @@
|
|
|
1
1
|
"use client";
|
|
2
|
+
import {
|
|
3
|
+
NOTICE_STACK,
|
|
4
|
+
collapseNotices,
|
|
5
|
+
noticeKey,
|
|
6
|
+
visibleNotices
|
|
7
|
+
} from "./chunk-4WSXAP24.js";
|
|
2
8
|
import {
|
|
3
9
|
AppRail,
|
|
4
10
|
AppRailAvatar,
|
|
@@ -13,7 +19,7 @@ import {
|
|
|
13
19
|
matchesOrganizationQuery,
|
|
14
20
|
orderOrganizationsForPicker,
|
|
15
21
|
organizationColor
|
|
16
|
-
} from "./chunk-
|
|
22
|
+
} from "./chunk-BCGNEWZM.js";
|
|
17
23
|
import {
|
|
18
24
|
Collapsible,
|
|
19
25
|
CollapsibleContent,
|
|
@@ -35,7 +41,7 @@ import {
|
|
|
35
41
|
import "./chunk-VQQ3O7J5.js";
|
|
36
42
|
import {
|
|
37
43
|
Tile
|
|
38
|
-
} from "./chunk-
|
|
44
|
+
} from "./chunk-UTADJKVR.js";
|
|
39
45
|
import "./chunk-HKLIRHT2.js";
|
|
40
46
|
import {
|
|
41
47
|
Skeleton
|
|
@@ -65,7 +71,7 @@ import {
|
|
|
65
71
|
} from "./chunk-OPF265PU.js";
|
|
66
72
|
import {
|
|
67
73
|
Button
|
|
68
|
-
} from "./chunk-
|
|
74
|
+
} from "./chunk-6XNYYROM.js";
|
|
69
75
|
import "./chunk-BD77DHUO.js";
|
|
70
76
|
import "./chunk-BKCJUFD3.js";
|
|
71
77
|
import {
|
|
@@ -1114,12 +1120,26 @@ var WIDTH = {
|
|
|
1114
1120
|
wide: "max-w-none",
|
|
1115
1121
|
full: "max-w-none"
|
|
1116
1122
|
};
|
|
1117
|
-
function
|
|
1118
|
-
|
|
1123
|
+
function noticeElements(children) {
|
|
1124
|
+
const out = [];
|
|
1125
|
+
for (const c of React8.Children.toArray(children)) {
|
|
1126
|
+
if (!React8.isValidElement(c)) continue;
|
|
1127
|
+
if (c.type === React8.Fragment) out.push(...noticeElements(c.props.children));
|
|
1128
|
+
else out.push(c);
|
|
1129
|
+
}
|
|
1130
|
+
return out;
|
|
1131
|
+
}
|
|
1132
|
+
function elementKey(el) {
|
|
1133
|
+
const p = el.props;
|
|
1134
|
+
if (typeof p.tone !== "string" || typeof p.title !== "string" && typeof p.title !== "number") return null;
|
|
1135
|
+
return noticeKey(p.tone, p.title, p.message);
|
|
1119
1136
|
}
|
|
1137
|
+
var NoticeStackContext = React8.createContext(false);
|
|
1120
1138
|
function Notices({ children, className, onHeight, ...props }) {
|
|
1121
1139
|
const stack = React8.useRef(null);
|
|
1122
|
-
const
|
|
1140
|
+
const [expanded, setExpanded] = React8.useState(false);
|
|
1141
|
+
const elements = noticeElements(children);
|
|
1142
|
+
const drawn = elements.length > 0;
|
|
1123
1143
|
React8.useLayoutEffect(() => {
|
|
1124
1144
|
const el = stack.current;
|
|
1125
1145
|
if (!onHeight) return;
|
|
@@ -1135,7 +1155,27 @@ function Notices({ children, className, onHeight, ...props }) {
|
|
|
1135
1155
|
};
|
|
1136
1156
|
}, [onHeight, drawn]);
|
|
1137
1157
|
if (!drawn) return null;
|
|
1138
|
-
|
|
1158
|
+
const groups = collapseNotices(elements, elementKey);
|
|
1159
|
+
const { shown, folded } = expanded ? { shown: groups, folded: 0 } : visibleNotices(groups);
|
|
1160
|
+
return /* @__PURE__ */ jsx11(
|
|
1161
|
+
"div",
|
|
1162
|
+
{
|
|
1163
|
+
ref: stack,
|
|
1164
|
+
"data-slot": "notices",
|
|
1165
|
+
"data-float": "",
|
|
1166
|
+
"aria-live": "polite",
|
|
1167
|
+
style: { width: `${NOTICE_STACK.widthRem}rem` },
|
|
1168
|
+
className: cn2("flex flex-col items-stretch gap-2 empty:hidden", className),
|
|
1169
|
+
...props,
|
|
1170
|
+
children: /* @__PURE__ */ jsxs7(NoticeStackContext.Provider, { value: true, children: [
|
|
1171
|
+
folded > 0 ? /* @__PURE__ */ jsx11("button", { type: "button", "data-slot": "notices-more", className: "self-end rounded-full px-2 py-0.5", onClick: () => setExpanded(true), children: /* @__PURE__ */ jsxs7(Text, { variant: "caption", tone: "secondary", children: [
|
|
1172
|
+
folded,
|
|
1173
|
+
" more"
|
|
1174
|
+
] }) }) : null,
|
|
1175
|
+
shown.map((g) => g.count > 1 ? React8.cloneElement(g.item, { count: g.count }) : g.item)
|
|
1176
|
+
] })
|
|
1177
|
+
}
|
|
1178
|
+
);
|
|
1139
1179
|
}
|
|
1140
1180
|
function NoticeSlot({ children, className, ...props }) {
|
|
1141
1181
|
return /* @__PURE__ */ jsx11("div", { "data-slot": "notice-slot", "aria-live": "polite", className: cn2("h-16 shrink-0 overflow-hidden [&>*]:h-full [&>*]:overflow-hidden", className), ...props, children });
|
|
@@ -1143,14 +1183,14 @@ function NoticeSlot({ children, className, ...props }) {
|
|
|
1143
1183
|
var Page = React8.forwardRef(function Page2({ width = "wide", header, notices, sidebar, scopeBar, footer, flush, className, children, ...props }, ref) {
|
|
1144
1184
|
const frame = (
|
|
1145
1185
|
// The frame is always there (with or without notices), so a notice never remounts the page.
|
|
1146
|
-
/* @__PURE__ */ jsxs7("div", { "data-slot": "page-frame", className: "flex h-full min-w-0 flex-1 flex-col bg-content", children: [
|
|
1186
|
+
/* @__PURE__ */ jsxs7("div", { "data-slot": "page-frame", className: "relative flex h-full min-w-0 flex-1 flex-col bg-content", children: [
|
|
1147
1187
|
scopeBar ? /* @__PURE__ */ jsx11("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,
|
|
1148
1188
|
/* @__PURE__ */ jsx11("div", { ref, "data-slot": "page", "data-flush": flush || void 0, className: cn2("min-h-0 flex-1 overflow-y-auto bg-content", className), ...props, children: /* @__PURE__ */ jsxs7("div", { className: cn2("flex w-full flex-col", flush ? "min-h-full" : "gap-5 px-5 pb-5 pt-3", WIDTH[width]), children: [
|
|
1149
1189
|
header,
|
|
1150
1190
|
children
|
|
1151
1191
|
] }) }),
|
|
1152
1192
|
footer ? /* @__PURE__ */ jsx11("div", { "data-slot": "page-footer", className: "flex shrink-0 flex-col border-t border-separator bg-content", children: footer }) : null,
|
|
1153
|
-
/* @__PURE__ */ jsx11(Notices, { "data-page-notices": "",
|
|
1193
|
+
/* @__PURE__ */ jsx11(Notices, { "data-page-notices": "", children: notices })
|
|
1154
1194
|
] })
|
|
1155
1195
|
);
|
|
1156
1196
|
if (!sidebar) return frame;
|
|
@@ -3085,22 +3125,31 @@ var BANNER_ICON = {
|
|
|
3085
3125
|
danger: /* @__PURE__ */ jsx28(Glyph, { d: ALERT }),
|
|
3086
3126
|
success: /* @__PURE__ */ jsx28(Glyph, { d: DONE })
|
|
3087
3127
|
};
|
|
3088
|
-
function Banner({ tone, icon, title, message, actions, detail, onDismiss, className, ...props }) {
|
|
3128
|
+
function Banner({ tone, icon, title, message, actions, detail, onDismiss, count, className, ...props }) {
|
|
3089
3129
|
const [copied, setCopied] = React20.useState(false);
|
|
3130
|
+
const floating = React20.useContext(NoticeStackContext);
|
|
3090
3131
|
return /* @__PURE__ */ jsxs22(
|
|
3091
3132
|
"div",
|
|
3092
3133
|
{
|
|
3093
3134
|
role: tone === "danger" || tone === "warning" ? "alert" : "status",
|
|
3094
3135
|
"data-slot": "banner",
|
|
3095
3136
|
"data-tone": tone,
|
|
3096
|
-
|
|
3137
|
+
"data-float": floating ? "" : void 0,
|
|
3138
|
+
"data-count": count && count > 1 ? count : void 0,
|
|
3139
|
+
className: cn2("flex min-h-row items-center gap-2.5 rounded-group px-3 py-2", floating ? "items-start" : BANNER_TONE[tone].box, className),
|
|
3097
3140
|
...props,
|
|
3098
3141
|
children: [
|
|
3099
3142
|
/* @__PURE__ */ jsx28("span", { className: cn2("flex shrink-0 self-start pt-px [&_svg]:size-icon", BANNER_TONE[tone].icon), children: icon ?? BANNER_ICON[tone] }),
|
|
3100
3143
|
/* @__PURE__ */ jsxs22("div", { "data-slot": "banner-body", className: "flex min-w-0 flex-1 flex-wrap items-center gap-x-3 gap-y-2", children: [
|
|
3101
3144
|
/* @__PURE__ */ jsxs22("div", { "data-slot": "banner-text", className: "flex min-w-0 flex-1 basis-56 flex-col gap-0.5", title: detail || void 0, children: [
|
|
3102
|
-
/* @__PURE__ */
|
|
3103
|
-
|
|
3145
|
+
/* @__PURE__ */ jsxs22(Text, { emphasized: true, className: floating ? "line-clamp-1" : void 0, children: [
|
|
3146
|
+
title,
|
|
3147
|
+
count && count > 1 ? /* @__PURE__ */ jsxs22("span", { "data-slot": "banner-count", className: "ml-1.5 font-normal text-label-secondary", children: [
|
|
3148
|
+
"\xD7",
|
|
3149
|
+
count
|
|
3150
|
+
] }) : null
|
|
3151
|
+
] }),
|
|
3152
|
+
message ? /* @__PURE__ */ jsx28(Text, { as: "p", tone: "secondary", selectable: true, className: floating ? "line-clamp-2" : void 0, children: message }) : null
|
|
3104
3153
|
] }),
|
|
3105
3154
|
actions || detail ? /* @__PURE__ */ jsxs22("div", { "data-slot": "banner-actions", className: "ml-auto flex shrink-0 items-center gap-2", children: [
|
|
3106
3155
|
detail ? /* @__PURE__ */ jsx28(
|
|
@@ -4392,7 +4441,7 @@ function EndOfList({ onEndReached }) {
|
|
|
4392
4441
|
import { jsx as jsx33, jsxs as jsxs27 } from "react/jsx-runtime";
|
|
4393
4442
|
var LIST_WIDTH = { md: "w-70", lg: "w-85" };
|
|
4394
4443
|
function SplitView({ header, notices, source, list, listHeader, listFooter, detail, listWidth = "lg", detailScrolls = true, narrow, className, ...props }) {
|
|
4395
|
-
return /* @__PURE__ */ jsxs27("div", { "data-slot": "split-view", className: cn2("flex h-full min-h-0 flex-col bg-content", className), ...props, children: [
|
|
4444
|
+
return /* @__PURE__ */ jsxs27("div", { "data-slot": "split-view", className: cn2("relative flex h-full min-h-0 flex-col bg-content", className), ...props, children: [
|
|
4396
4445
|
header ? /* @__PURE__ */ jsx33("div", { className: "shrink-0 px-5 empty:hidden", children: header }) : null,
|
|
4397
4446
|
/* @__PURE__ */ jsxs27("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: [
|
|
4398
4447
|
source ? /* @__PURE__ */ jsx33("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,
|
|
@@ -4403,7 +4452,7 @@ function SplitView({ header, notices, source, list, listHeader, listFooter, deta
|
|
|
4403
4452
|
] }),
|
|
4404
4453
|
detail !== void 0 ? /* @__PURE__ */ jsx33("div", { "data-slot": "split-view-detail", className: cn2("flex min-w-80 flex-1 flex-col", detailScrolls ? "overflow-y-auto" : "min-h-0"), children: detail }) : null
|
|
4405
4454
|
] }),
|
|
4406
|
-
/* @__PURE__ */ jsx33(Notices, { "data-page-notices": "",
|
|
4455
|
+
/* @__PURE__ */ jsx33(Notices, { "data-page-notices": "", children: notices })
|
|
4407
4456
|
] });
|
|
4408
4457
|
}
|
|
4409
4458
|
|