gridsmith-ui 0.6.7 → 0.7.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/dist/chat.js +4 -4
- package/dist/{chunk-R2HNSJJG.js → chunk-G6KC5YNY.js} +4 -4
- package/dist/{chunk-R2HNSJJG.js.map → chunk-G6KC5YNY.js.map} +1 -1
- package/dist/{chunk-ADTPGMOD.js → chunk-QVNGQ64Q.js} +4 -4
- package/dist/{chunk-ADTPGMOD.js.map → chunk-QVNGQ64Q.js.map} +1 -1
- package/dist/{chunk-LTV5X3S7.js → chunk-RLNIRPOH.js} +26 -9
- package/dist/chunk-RLNIRPOH.js.map +1 -0
- package/dist/{chunk-NM3BFWHH.js → chunk-X4CNZFWC.js} +3 -4
- package/dist/chunk-X4CNZFWC.js.map +1 -0
- package/dist/data-grid.js +2 -2
- package/dist/editor.js +1 -1
- package/dist/icons.js +1 -1
- package/dist/index.d.ts +173 -7
- package/dist/index.js +401 -101
- package/dist/index.js.map +1 -1
- package/dist/kanban.js +3 -3
- package/dist/resizable.js +1 -1
- package/package.json +2 -2
- package/dist/chunk-LTV5X3S7.js.map +0 -1
- package/dist/chunk-NM3BFWHH.js.map +0 -1
package/dist/index.js
CHANGED
|
@@ -1,18 +1,18 @@
|
|
|
1
1
|
import { Skeleton } from './chunk-M3AARGLI.js';
|
|
2
2
|
export { Skeleton } from './chunk-M3AARGLI.js';
|
|
3
3
|
import { useOverlayLayer, useCloseOnFocusOut, useReturnFocus, focusInitial, useFocusTrap, OVERLAY_CLOSE_ATTR, useNonModalDialog, rovingTabStop } from './chunk-RLUK575N.js';
|
|
4
|
-
import { Link } from './chunk-
|
|
5
|
-
export { CodeBlock, Divider, Link } from './chunk-
|
|
6
|
-
import { Badge } from './chunk-
|
|
7
|
-
export { Badge } from './chunk-
|
|
4
|
+
import { Link } from './chunk-G6KC5YNY.js';
|
|
5
|
+
export { CodeBlock, Divider, Link } from './chunk-G6KC5YNY.js';
|
|
6
|
+
import { Badge } from './chunk-QVNGQ64Q.js';
|
|
7
|
+
export { Badge } from './chunk-QVNGQ64Q.js';
|
|
8
8
|
import { useBreakpoint } from './chunk-EKQHHP72.js';
|
|
9
9
|
export { BreakpointWidthProvider, useBreakpoint } from './chunk-EKQHHP72.js';
|
|
10
|
-
import { Tooltip, useTextOverflow, usePosition, Slot } from './chunk-
|
|
11
|
-
export { Tooltip, useTextOverflow } from './chunk-
|
|
10
|
+
import { Tooltip, useTextOverflow, usePosition, Slot } from './chunk-RLNIRPOH.js';
|
|
11
|
+
export { Tooltip, useTextOverflow } from './chunk-RLNIRPOH.js';
|
|
12
12
|
import { useLatest } from './chunk-WH2FUFAC.js';
|
|
13
|
-
import { Icon } from './chunk-
|
|
13
|
+
import { Icon } from './chunk-X4CNZFWC.js';
|
|
14
14
|
import { cn, GLASS_SURFACE, ACTIVE_RING, GLASS_BACKDROP, GLASS_DROPDOWN, lockBodyScroll, unlockBodyScroll, GLASS_OVERLAY, ERROR_ACTIVE_RING, ERROR_FOCUS_RING, FOCUS_RING, ERROR_HAS_FOCUS_RING, HAS_FOCUS_RING, ERROR_FOCUS_WITHIN_RING, FOCUS_WITHIN_RING } from './chunk-4KVFH5KC.js';
|
|
15
|
-
import { createContext, forwardRef, useContext, useState, memo, useRef, useEffect,
|
|
15
|
+
import { createContext, forwardRef, useContext, useState, memo, useCallback, useRef, useEffect, useLayoutEffect, Children, useId, isValidElement, cloneElement, Fragment as Fragment$1, useMemo, useSyncExternalStore } from 'react';
|
|
16
16
|
import { jsxs, jsx, Fragment } from 'react/jsx-runtime';
|
|
17
17
|
import { createPortal } from 'react-dom';
|
|
18
18
|
|
|
@@ -540,7 +540,8 @@ function Dropdown({
|
|
|
540
540
|
ref,
|
|
541
541
|
container,
|
|
542
542
|
error = false,
|
|
543
|
-
showChips = true
|
|
543
|
+
showChips = true,
|
|
544
|
+
"aria-label": ariaLabel
|
|
544
545
|
}) {
|
|
545
546
|
const [open, setOpen] = useState(false);
|
|
546
547
|
const [search, setSearch] = useState("");
|
|
@@ -706,6 +707,7 @@ function Dropdown({
|
|
|
706
707
|
"aria-invalid": error || void 0,
|
|
707
708
|
"aria-haspopup": "listbox",
|
|
708
709
|
"aria-expanded": open,
|
|
710
|
+
"aria-label": ariaLabel,
|
|
709
711
|
className: cn(
|
|
710
712
|
"w-full flex items-center justify-between gap-ds-2",
|
|
711
713
|
size === "sm" ? "px-ds-2 py-ds-1 text-xs h-[var(--ds-control-height-sm)]" : "px-ds-3 py-ds-2 text-sm h-[var(--ds-control-height-md)]",
|
|
@@ -4308,19 +4310,22 @@ function TrendBadge({ trend }) {
|
|
|
4308
4310
|
flat: "text-[var(--ds-text-muted)] bg-[var(--ds-bg-muted)]"
|
|
4309
4311
|
};
|
|
4310
4312
|
const arrows = { up: "\u2191", down: "\u2193", flat: "\u2192" };
|
|
4311
|
-
|
|
4313
|
+
const { ref, isTruncated } = useTextOverflow({ lines: 1, content: trend.value });
|
|
4314
|
+
const badge = /* @__PURE__ */ jsxs(
|
|
4312
4315
|
"span",
|
|
4313
4316
|
{
|
|
4314
4317
|
className: cn(
|
|
4315
|
-
"inline-flex items-center gap-ds-0.5 text-xs font-medium rounded-[var(--ds-radius-sm)] px-ds-1.5 py-ds-0.5",
|
|
4318
|
+
"inline-flex items-center gap-ds-0.5 text-xs font-medium rounded-[var(--ds-radius-sm)] px-ds-1.5 py-ds-0.5 min-w-0 max-w-full",
|
|
4316
4319
|
colors[trend.direction]
|
|
4317
4320
|
),
|
|
4318
4321
|
children: [
|
|
4319
4322
|
/* @__PURE__ */ jsx("span", { children: arrows[trend.direction] }),
|
|
4320
|
-
trend.value
|
|
4323
|
+
/* @__PURE__ */ jsx("span", { ref, className: "truncate", children: trend.value })
|
|
4321
4324
|
]
|
|
4322
4325
|
}
|
|
4323
4326
|
);
|
|
4327
|
+
if (!isTruncated) return badge;
|
|
4328
|
+
return /* @__PURE__ */ jsx(Tooltip, { content: trend.value, children: badge });
|
|
4324
4329
|
}
|
|
4325
4330
|
function DataList({ items, columns = 1, className }) {
|
|
4326
4331
|
return /* @__PURE__ */ jsx(
|
|
@@ -4851,7 +4856,8 @@ function SegmentedControl({
|
|
|
4851
4856
|
variant = "default",
|
|
4852
4857
|
fullWidth = false,
|
|
4853
4858
|
onHoverChange,
|
|
4854
|
-
className
|
|
4859
|
+
className,
|
|
4860
|
+
"aria-label": ariaLabel
|
|
4855
4861
|
}) {
|
|
4856
4862
|
const containerRef = useRef(null);
|
|
4857
4863
|
const [indicator, setIndicator] = useState({ left: 0, width: 0 });
|
|
@@ -4905,6 +4911,7 @@ function SegmentedControl({
|
|
|
4905
4911
|
{
|
|
4906
4912
|
ref: containerRef,
|
|
4907
4913
|
role: "radiogroup",
|
|
4914
|
+
"aria-label": ariaLabel,
|
|
4908
4915
|
onKeyDown: handleKeyDown,
|
|
4909
4916
|
className: cn(
|
|
4910
4917
|
"relative items-center",
|
|
@@ -6509,18 +6516,25 @@ var defaultIcons = {
|
|
|
6509
6516
|
error: "\u26A0",
|
|
6510
6517
|
"no-permission": "\u{1F512}"
|
|
6511
6518
|
};
|
|
6519
|
+
var FRAME_ICON_SIZE = 28;
|
|
6520
|
+
function renderIcon(icon) {
|
|
6521
|
+
if (typeof icon === "string") return /* @__PURE__ */ jsx(Icon, { name: icon, size: FRAME_ICON_SIZE, className: "text-[var(--ds-text-muted)]" });
|
|
6522
|
+
if (isValidElement(icon) && icon.type === Icon) return cloneElement(icon, { size: FRAME_ICON_SIZE });
|
|
6523
|
+
return icon;
|
|
6524
|
+
}
|
|
6512
6525
|
function EmptyState({ icon, iconFrame = "circle", title, description, action, variant = "empty", bordered = false, className }) {
|
|
6526
|
+
const iconNode = icon === void 0 || icon === null ? void 0 : renderIcon(icon);
|
|
6513
6527
|
return /* @__PURE__ */ jsxs(
|
|
6514
6528
|
"div",
|
|
6515
6529
|
{
|
|
6516
6530
|
className: cn(
|
|
6517
|
-
"flex flex-col items-center justify-center py-[var(--ds-space-10)]",
|
|
6531
|
+
"flex flex-col items-center justify-center py-[var(--ds-space-10)] px-[var(--ds-space-6)]",
|
|
6518
6532
|
"rounded-[var(--ds-radius-md)] bg-[var(--ds-bg-surface)]",
|
|
6519
6533
|
bordered && "border-[length:var(--ds-border-width)] border-[var(--ds-border-subtle)]",
|
|
6520
6534
|
className
|
|
6521
6535
|
),
|
|
6522
6536
|
children: [
|
|
6523
|
-
iconFrame === "none" &&
|
|
6537
|
+
iconFrame === "none" && iconNode ? /* @__PURE__ */ jsx("div", { className: "flex items-center justify-center mb-ds-4", children: iconNode }) : /* @__PURE__ */ jsx("div", { className: "w-16 h-16 rounded-[var(--ds-radius-full)] bg-[var(--ds-bg-emphasis)] flex items-center justify-center mb-ds-4", children: iconNode ?? /* @__PURE__ */ jsx("span", { className: "text-2xl text-[var(--ds-text-muted)]", children: defaultIcons[variant] }) }),
|
|
6524
6538
|
/* @__PURE__ */ jsx("h3", { className: "font-[family-name:var(--ds-font-display)] text-lg font-[var(--ds-weight-heading)] text-[var(--ds-text-primary)]", children: title }),
|
|
6525
6539
|
description && /* @__PURE__ */ jsx("p", { className: "mt-ds-1 text-sm text-[var(--ds-text-muted)] max-w-sm text-center", children: description }),
|
|
6526
6540
|
action && /* @__PURE__ */ jsx("div", { className: "mt-ds-4", children: action })
|
|
@@ -6528,6 +6542,130 @@ function EmptyState({ icon, iconFrame = "circle", title, description, action, va
|
|
|
6528
6542
|
}
|
|
6529
6543
|
);
|
|
6530
6544
|
}
|
|
6545
|
+
function SkipLink({ href = "#main", children = "Skip to content", className }) {
|
|
6546
|
+
return /* @__PURE__ */ jsx(
|
|
6547
|
+
"a",
|
|
6548
|
+
{
|
|
6549
|
+
href,
|
|
6550
|
+
className: cn(
|
|
6551
|
+
"sr-only focus:not-sr-only focus:fixed focus:top-[var(--ds-space-2)] focus:left-[var(--ds-space-2)] focus:z-[var(--ds-z-tooltip)]",
|
|
6552
|
+
"focus:px-[var(--ds-space-3)] focus:py-[var(--ds-space-2)] focus:rounded-[var(--ds-radius-md)] focus:text-sm focus:font-medium",
|
|
6553
|
+
"focus:bg-[var(--ds-bg-surface-elevated)] focus:text-[var(--ds-text-primary)] focus:shadow-[var(--ds-shadow-md)]",
|
|
6554
|
+
"focus:outline-none focus:ring-2 focus:ring-[var(--ds-accent-primary)]",
|
|
6555
|
+
className
|
|
6556
|
+
),
|
|
6557
|
+
children
|
|
6558
|
+
}
|
|
6559
|
+
);
|
|
6560
|
+
}
|
|
6561
|
+
function useCompact(ref, breakpoint) {
|
|
6562
|
+
const [compact, setCompact] = useState(false);
|
|
6563
|
+
const check = useCallback(() => {
|
|
6564
|
+
const width = ref.current?.offsetWidth ?? 0;
|
|
6565
|
+
if (width > 0) setCompact(width < breakpoint);
|
|
6566
|
+
}, [ref, breakpoint]);
|
|
6567
|
+
useLayoutEffect(() => {
|
|
6568
|
+
check();
|
|
6569
|
+
if (!ref.current || typeof ResizeObserver === "undefined") return;
|
|
6570
|
+
const observer = new ResizeObserver(check);
|
|
6571
|
+
observer.observe(ref.current);
|
|
6572
|
+
return () => observer.disconnect();
|
|
6573
|
+
}, [check, ref]);
|
|
6574
|
+
return compact;
|
|
6575
|
+
}
|
|
6576
|
+
function TableToolbar({
|
|
6577
|
+
search,
|
|
6578
|
+
primaryFilter,
|
|
6579
|
+
filters,
|
|
6580
|
+
filtersOpen,
|
|
6581
|
+
onFiltersOpenChange,
|
|
6582
|
+
activeFilterCount,
|
|
6583
|
+
activeFilters,
|
|
6584
|
+
onClearAll,
|
|
6585
|
+
resultCount,
|
|
6586
|
+
resultNoun = ["result", "results"],
|
|
6587
|
+
actions,
|
|
6588
|
+
size = "sm",
|
|
6589
|
+
compactBreakpoint = 680,
|
|
6590
|
+
className
|
|
6591
|
+
}) {
|
|
6592
|
+
const rowRef = useRef(null);
|
|
6593
|
+
const compact = useCompact(rowRef, compactBreakpoint);
|
|
6594
|
+
const filterRowId = useId();
|
|
6595
|
+
const [openState, setOpenState] = useState(false);
|
|
6596
|
+
const open = filtersOpen ?? openState;
|
|
6597
|
+
const setOpen = (next) => {
|
|
6598
|
+
setOpenState(next);
|
|
6599
|
+
onFiltersOpenChange?.(next);
|
|
6600
|
+
};
|
|
6601
|
+
const iconSize = size === "sm" ? 14 : 16;
|
|
6602
|
+
const count = activeFilterCount ?? activeFilters?.length ?? 0;
|
|
6603
|
+
const hasChips = !!activeFilters?.length;
|
|
6604
|
+
return /* @__PURE__ */ jsxs("div", { className: cn("flex flex-col gap-ds-3 min-w-0", className), "data-table-toolbar": "", children: [
|
|
6605
|
+
/* @__PURE__ */ jsxs("div", { ref: rowRef, className: "flex items-center gap-ds-2 flex-wrap", children: [
|
|
6606
|
+
search && /* @__PURE__ */ jsx(
|
|
6607
|
+
Input,
|
|
6608
|
+
{
|
|
6609
|
+
"aria-label": search.label,
|
|
6610
|
+
placeholder: search.placeholder ?? search.label,
|
|
6611
|
+
value: search.value,
|
|
6612
|
+
size,
|
|
6613
|
+
onChange: (e) => search.onChange(e.target.value),
|
|
6614
|
+
className: "flex-1 min-w-[160px] max-w-[280px]"
|
|
6615
|
+
}
|
|
6616
|
+
),
|
|
6617
|
+
primaryFilter && (compact ? /* @__PURE__ */ jsx(
|
|
6618
|
+
Dropdown,
|
|
6619
|
+
{
|
|
6620
|
+
"aria-label": primaryFilter.label,
|
|
6621
|
+
options: primaryFilter.options.map((o) => ({ id: o.value, label: o.label })),
|
|
6622
|
+
value: primaryFilter.value,
|
|
6623
|
+
onChange: (v) => primaryFilter.onChange(v),
|
|
6624
|
+
size,
|
|
6625
|
+
className: "w-[150px]"
|
|
6626
|
+
}
|
|
6627
|
+
) : /* @__PURE__ */ jsx(
|
|
6628
|
+
SegmentedControl,
|
|
6629
|
+
{
|
|
6630
|
+
"aria-label": primaryFilter.label,
|
|
6631
|
+
options: primaryFilter.options,
|
|
6632
|
+
value: primaryFilter.value,
|
|
6633
|
+
size,
|
|
6634
|
+
onChange: primaryFilter.onChange
|
|
6635
|
+
}
|
|
6636
|
+
)),
|
|
6637
|
+
(filters || actions) && /* @__PURE__ */ jsxs("div", { className: "flex items-center gap-ds-2 flex-1 justify-end", children: [
|
|
6638
|
+
filters && /* @__PURE__ */ jsxs(
|
|
6639
|
+
Button,
|
|
6640
|
+
{
|
|
6641
|
+
variant: open ? "secondary" : "outline",
|
|
6642
|
+
size,
|
|
6643
|
+
iconLeft: /* @__PURE__ */ jsx(Icon, { name: "filter", size: iconSize }),
|
|
6644
|
+
onClick: () => setOpen(!open),
|
|
6645
|
+
"aria-expanded": open,
|
|
6646
|
+
"aria-controls": filterRowId,
|
|
6647
|
+
className: "mr-auto",
|
|
6648
|
+
children: [
|
|
6649
|
+
"Filters",
|
|
6650
|
+
count > 0 && !open && /* @__PURE__ */ jsx(Badge, { variant: "default", size: "xs", className: "ml-ds-1", children: count })
|
|
6651
|
+
]
|
|
6652
|
+
}
|
|
6653
|
+
),
|
|
6654
|
+
actions
|
|
6655
|
+
] })
|
|
6656
|
+
] }),
|
|
6657
|
+
filters && open && /* @__PURE__ */ jsx("div", { id: filterRowId, className: "flex items-center gap-ds-3 flex-wrap", children: filters }),
|
|
6658
|
+
(resultCount !== void 0 || hasChips) && /* @__PURE__ */ jsxs("div", { className: "flex items-center gap-ds-2 flex-wrap", children: [
|
|
6659
|
+
resultCount !== void 0 && /* @__PURE__ */ jsxs("span", { className: "text-xs text-[var(--ds-text-muted)]", "aria-live": "polite", children: [
|
|
6660
|
+
resultCount,
|
|
6661
|
+
" ",
|
|
6662
|
+
resultCount === 1 ? resultNoun[0] : resultNoun[1]
|
|
6663
|
+
] }),
|
|
6664
|
+
activeFilters?.map((f) => /* @__PURE__ */ jsx(Tag, { size: "sm", variant: "subtle", onRemove: f.onRemove, children: f.label }, f.id)),
|
|
6665
|
+
hasChips && onClearAll && /* @__PURE__ */ jsx(Button, { variant: "ghost", size: "sm", onClick: onClearAll, children: "Clear all" })
|
|
6666
|
+
] })
|
|
6667
|
+
] });
|
|
6668
|
+
}
|
|
6531
6669
|
var dotVariant = {
|
|
6532
6670
|
default: "bg-[var(--ds-accent-primary)] shadow-[0_0_0_3px_var(--ds-accent-primary)]/20",
|
|
6533
6671
|
success: "bg-[var(--ds-status-success)] shadow-[0_0_0_3px_var(--ds-status-success)]/20",
|
|
@@ -8410,12 +8548,18 @@ var AppShell = forwardRef(function AppShell2({
|
|
|
8410
8548
|
mobileMenuFlush = true,
|
|
8411
8549
|
navbar,
|
|
8412
8550
|
mobileNav,
|
|
8551
|
+
footer,
|
|
8552
|
+
skipLink = true,
|
|
8553
|
+
mainId = "main",
|
|
8413
8554
|
aside,
|
|
8414
8555
|
asideSide = "right",
|
|
8415
8556
|
launcher,
|
|
8416
8557
|
children,
|
|
8417
8558
|
className,
|
|
8418
|
-
scrollable = true
|
|
8559
|
+
scrollable = true,
|
|
8560
|
+
theme,
|
|
8561
|
+
currentPath,
|
|
8562
|
+
homePath = "/"
|
|
8419
8563
|
}, ref) {
|
|
8420
8564
|
const [sidebarOpen, setSidebarOpen] = useState(false);
|
|
8421
8565
|
const [asideOpen, setAsideOpen] = useState(false);
|
|
@@ -8431,15 +8575,29 @@ var AppShell = forwardRef(function AppShell2({
|
|
|
8431
8575
|
const hasMobileNav = mobileNav != null;
|
|
8432
8576
|
const showMobileDrawer = hasMobileMenu && !(isSmallMobile && hasMobileNav);
|
|
8433
8577
|
const [shellEl, setShellEl] = useState(null);
|
|
8578
|
+
const [chrome, setChrome] = useState({});
|
|
8579
|
+
const registerChrome = useCallback((kind, position) => {
|
|
8580
|
+
setChrome((c) => c[kind] === position ? c : { ...c, [kind]: position });
|
|
8581
|
+
return () => setChrome((c) => {
|
|
8582
|
+
if (!(kind in c)) return c;
|
|
8583
|
+
const next = { ...c };
|
|
8584
|
+
delete next[kind];
|
|
8585
|
+
return next;
|
|
8586
|
+
});
|
|
8587
|
+
}, []);
|
|
8588
|
+
const navbarFloating = (chrome.navbar ?? theme?.navbarPosition) === "floating";
|
|
8589
|
+
const sidebarFloating = hasSidebar && !isMobile && (chrome.sidebar ?? theme?.sidebarPosition) === "floating";
|
|
8590
|
+
const isHome = currentPath != null && currentPath === homePath;
|
|
8434
8591
|
return /* @__PURE__ */ jsx(
|
|
8435
8592
|
AppShellContext,
|
|
8436
8593
|
{
|
|
8437
|
-
value: { hasSidebar, hasMobileMenu, hasMobileNav, sidebarOpen, setSidebarOpen, isMobile, isTablet, sidebarCollapsed, setSidebarCollapsed: setUserCollapsed, asideOpen, setAsideOpen, asideSide, asideFloating, setAsideFloating, container: shellEl },
|
|
8594
|
+
value: { hasSidebar, hasMobileMenu, hasMobileNav, sidebarOpen, setSidebarOpen, isMobile, isTablet, sidebarCollapsed, setSidebarCollapsed: setUserCollapsed, asideOpen, setAsideOpen, asideSide, asideFloating, setAsideFloating, container: shellEl, theme: theme ?? null, isHome, navbarFloating, sidebarFloating, registerChrome },
|
|
8438
8595
|
children: /* @__PURE__ */ jsxs("div", { ref: (el) => {
|
|
8439
8596
|
setShellEl(el);
|
|
8440
8597
|
if (typeof ref === "function") ref(el);
|
|
8441
8598
|
else if (ref) ref.current = el;
|
|
8442
8599
|
}, className: cn("relative h-screen flex flex-col bg-[var(--ds-bg-canvas)] overflow-hidden", className), children: [
|
|
8600
|
+
skipLink && /* @__PURE__ */ jsx(SkipLink, { href: `#${mainId}` }),
|
|
8443
8601
|
layout === "sidebar-header" && navbar,
|
|
8444
8602
|
layout === "multi-column" && navbar,
|
|
8445
8603
|
/* @__PURE__ */ jsxs("div", { className: "flex flex-1 min-h-0", children: [
|
|
@@ -8451,13 +8609,18 @@ var AppShell = forwardRef(function AppShell2({
|
|
|
8451
8609
|
/* @__PURE__ */ jsx(
|
|
8452
8610
|
"main",
|
|
8453
8611
|
{
|
|
8612
|
+
id: mainId,
|
|
8613
|
+
tabIndex: -1,
|
|
8454
8614
|
className: cn(
|
|
8455
|
-
"flex-1 min-h-0",
|
|
8615
|
+
"flex-1 min-h-0 focus:outline-none",
|
|
8456
8616
|
scrollable ? "overflow-y-auto" : "relative",
|
|
8457
8617
|
layout === "multi-column" && "flex"
|
|
8458
8618
|
),
|
|
8459
8619
|
style: { containerType: "inline-size" },
|
|
8460
|
-
children: scrollable ?
|
|
8620
|
+
children: scrollable ? footer ? /* @__PURE__ */ jsxs("div", { className: "min-h-full flex flex-col", children: [
|
|
8621
|
+
/* @__PURE__ */ jsx("div", { className: "flex-1", children }),
|
|
8622
|
+
footer
|
|
8623
|
+
] }) : children : /* @__PURE__ */ jsx("div", { className: "absolute inset-0", children })
|
|
8461
8624
|
}
|
|
8462
8625
|
)
|
|
8463
8626
|
] }),
|
|
@@ -8491,8 +8654,8 @@ function AsidePanel({
|
|
|
8491
8654
|
side = "right",
|
|
8492
8655
|
width = "420px",
|
|
8493
8656
|
position = "flush",
|
|
8494
|
-
navbarFloating
|
|
8495
|
-
sidebarFloating
|
|
8657
|
+
navbarFloating: navbarFloatingProp,
|
|
8658
|
+
sidebarFloating: sidebarFloatingProp,
|
|
8496
8659
|
collapseBelow = "lg",
|
|
8497
8660
|
keepMounted = true,
|
|
8498
8661
|
resizable = true,
|
|
@@ -8504,6 +8667,8 @@ function AsidePanel({
|
|
|
8504
8667
|
}) {
|
|
8505
8668
|
const collapsed = useBreakpoint(collapseBelow);
|
|
8506
8669
|
const shell = useAppShell();
|
|
8670
|
+
const navbarFloating = navbarFloatingProp ?? shell?.navbarFloating ?? false;
|
|
8671
|
+
const sidebarFloating = sidebarFloatingProp ?? shell?.sidebarFloating ?? false;
|
|
8507
8672
|
const setAsideOpen = shell?.setAsideOpen;
|
|
8508
8673
|
const setAsideFloating = shell?.setAsideFloating;
|
|
8509
8674
|
const floating = position === "floating";
|
|
@@ -8832,7 +8997,7 @@ var subscribeNever = () => () => {
|
|
|
8832
8997
|
var getClientSnapshot = () => true;
|
|
8833
8998
|
var getServerSnapshot = () => false;
|
|
8834
8999
|
var bodyLaunchers = 0;
|
|
8835
|
-
function
|
|
9000
|
+
function renderIcon2(icon, size) {
|
|
8836
9001
|
return typeof icon === "string" ? /* @__PURE__ */ jsx(Icon, { name: icon, size }) : icon;
|
|
8837
9002
|
}
|
|
8838
9003
|
function Launcher({
|
|
@@ -8976,7 +9141,7 @@ function Launcher({
|
|
|
8976
9141
|
accentGlyph && ACCENT_GLYPH,
|
|
8977
9142
|
showClose && "rotate-90"
|
|
8978
9143
|
),
|
|
8979
|
-
children:
|
|
9144
|
+
children: renderIcon2(glyph, glyphSize)
|
|
8980
9145
|
}
|
|
8981
9146
|
),
|
|
8982
9147
|
variant === "pill" && /* @__PURE__ */ jsx("span", { children: label }),
|
|
@@ -8996,7 +9161,7 @@ function Launcher({
|
|
|
8996
9161
|
children: label
|
|
8997
9162
|
}
|
|
8998
9163
|
),
|
|
8999
|
-
ribbonOverlayClose && /* @__PURE__ */ jsx("span", { "data-launcher-close": "", className: cn("absolute inset-0 inline-flex items-center justify-center", accentGlyph && ACCENT_GLYPH), children:
|
|
9164
|
+
ribbonOverlayClose && /* @__PURE__ */ jsx("span", { "data-launcher-close": "", className: cn("absolute inset-0 inline-flex items-center justify-center", accentGlyph && ACCENT_GLYPH), children: renderIcon2("close", glyphSize) }),
|
|
9000
9165
|
badge && !showClose && // A ribbon is flush to the viewport edge, so its badge hangs off the inner corner instead.
|
|
9001
9166
|
/* @__PURE__ */ jsx("span", { className: "absolute", style: badgeStyle, "data-testid": "launcher-badge", children: typeof badge === "number" ? /* @__PURE__ */ jsx(Badge, { variant: "error", size: "xs", children: badge > 99 ? "99+" : badge }) : /* @__PURE__ */ jsx("span", { className: "block h-ds-2.5 w-ds-2.5 rounded-[var(--ds-radius-full)] bg-[var(--ds-status-error)] ring-2 ring-[var(--ds-bg-surface)]" }) })
|
|
9002
9167
|
]
|
|
@@ -10009,7 +10174,7 @@ var Sidebar = forwardRef(function Sidebar2({
|
|
|
10009
10174
|
mini = false,
|
|
10010
10175
|
type = "traditional",
|
|
10011
10176
|
position = "flush",
|
|
10012
|
-
navbarFloating,
|
|
10177
|
+
navbarFloating: navbarFloatingProp,
|
|
10013
10178
|
navSize = "md",
|
|
10014
10179
|
fill = false,
|
|
10015
10180
|
className
|
|
@@ -10019,6 +10184,11 @@ var Sidebar = forwardRef(function Sidebar2({
|
|
|
10019
10184
|
const portalRef = useCallback((node) => setPortalEl(node), []);
|
|
10020
10185
|
const isControlled = controlledCollapsed !== void 0;
|
|
10021
10186
|
const appShell = useAppShell();
|
|
10187
|
+
const navbarFloating = navbarFloatingProp ?? appShell?.navbarFloating;
|
|
10188
|
+
useLayoutEffect(() => {
|
|
10189
|
+
if (fill || !appShell) return;
|
|
10190
|
+
return appShell.registerChrome("sidebar", position);
|
|
10191
|
+
}, [appShell?.registerChrome, fill, position]);
|
|
10022
10192
|
const usesShellState = appShell !== null && !isControlled && defaultCollapsed === void 0 && !fill && type === "traditional";
|
|
10023
10193
|
const uncontrolledCollapsed = usesShellState ? appShell.sidebarCollapsed : internalCollapsed;
|
|
10024
10194
|
const collapsed = mini || (isControlled ? controlledCollapsed : uncontrolledCollapsed);
|
|
@@ -10772,9 +10942,164 @@ function NavButton({ item, onClick }) {
|
|
|
10772
10942
|
}
|
|
10773
10943
|
);
|
|
10774
10944
|
}
|
|
10775
|
-
|
|
10776
|
-
|
|
10777
|
-
|
|
10945
|
+
|
|
10946
|
+
// ../../showcase/src/lib/shell-theme.ts
|
|
10947
|
+
var PAGE_HEADER_MARK = /* @__PURE__ */ Symbol.for("gridsmith.PageHeader");
|
|
10948
|
+
function resolvePageHeader(theme, props, facts) {
|
|
10949
|
+
const t = theme?.pageHeader ?? {};
|
|
10950
|
+
const themeVariant = t.variant ?? "default";
|
|
10951
|
+
const homeOnlyElsewhere = themeVariant === "colourful" && !!t.colourfulHomeOnly && !facts.isHome;
|
|
10952
|
+
const variant = props.variant ?? (homeOnlyElsewhere ? t.otherPagesVariant ?? "default" : themeVariant);
|
|
10953
|
+
const behavior = props.behavior ?? t.behavior ?? "static";
|
|
10954
|
+
const position = props.position ?? t.position ?? "flush";
|
|
10955
|
+
const intensity = props.intensity ?? t.intensity ?? "bold";
|
|
10956
|
+
const b = theme?.breadcrumbs ?? {};
|
|
10957
|
+
const navbarFloating = props.navbarFloating ?? facts.navbarFloating;
|
|
10958
|
+
const sidebarFloating = (props.sidebarFloating ?? facts.sidebarFloating) && !facts.isMobile;
|
|
10959
|
+
return {
|
|
10960
|
+
variant,
|
|
10961
|
+
behavior,
|
|
10962
|
+
position,
|
|
10963
|
+
intensity,
|
|
10964
|
+
breadcrumbPosition: b.position ?? "inline",
|
|
10965
|
+
breadcrumbStyle: props.breadcrumbStyle ?? b.style ?? "default",
|
|
10966
|
+
breadcrumbSeparator: props.breadcrumbSeparator ?? b.separator ?? "chevron",
|
|
10967
|
+
navbarFloating,
|
|
10968
|
+
sidebarFloating,
|
|
10969
|
+
outside: variant === "colourful" || behavior === "snapping" || position === "floating"
|
|
10970
|
+
};
|
|
10971
|
+
}
|
|
10972
|
+
var maxWidthValues = {
|
|
10973
|
+
sm: "var(--ds-bp-sm)",
|
|
10974
|
+
md: "var(--ds-bp-md)",
|
|
10975
|
+
lg: "var(--ds-bp-lg)",
|
|
10976
|
+
xl: "var(--ds-bp-xl)",
|
|
10977
|
+
full: "100%"
|
|
10978
|
+
};
|
|
10979
|
+
var widthToMaxWidth = {
|
|
10980
|
+
constrained: "xl",
|
|
10981
|
+
full: "full",
|
|
10982
|
+
narrow: "md"
|
|
10983
|
+
};
|
|
10984
|
+
var paddingClasses = {
|
|
10985
|
+
none: "",
|
|
10986
|
+
default: "px-ds-6",
|
|
10987
|
+
wide: "px-ds-10"
|
|
10988
|
+
};
|
|
10989
|
+
var verticalPaddingClasses = {
|
|
10990
|
+
none: "",
|
|
10991
|
+
default: "pt-ds-8 pb-ds-12",
|
|
10992
|
+
spacious: "pt-ds-8 pb-ds-16"
|
|
10993
|
+
};
|
|
10994
|
+
var bottomPaddingClasses = {
|
|
10995
|
+
none: "",
|
|
10996
|
+
default: "pb-ds-12",
|
|
10997
|
+
spacious: "pb-ds-16"
|
|
10998
|
+
};
|
|
10999
|
+
var FLOATING_BLOCK = cn(
|
|
11000
|
+
"rounded-[var(--ds-radius-md)]",
|
|
11001
|
+
"border-[length:var(--ds-border-width)] border-[var(--ds-border-default)]",
|
|
11002
|
+
GLASS_SURFACE,
|
|
11003
|
+
"overflow-hidden"
|
|
11004
|
+
);
|
|
11005
|
+
var PageContainerContext = createContext(null);
|
|
11006
|
+
function usePageContainer() {
|
|
11007
|
+
return useContext(PageContainerContext);
|
|
11008
|
+
}
|
|
11009
|
+
function isPageHeaderElement(node) {
|
|
11010
|
+
if (!isValidElement(node)) return false;
|
|
11011
|
+
const type = node.type;
|
|
11012
|
+
return !!type && typeof type !== "string" && type[PAGE_HEADER_MARK] === true;
|
|
11013
|
+
}
|
|
11014
|
+
function floatingBlockPadding(navbarFloating, sidebarFloating, overlap) {
|
|
11015
|
+
return {
|
|
11016
|
+
paddingTop: navbarFloating ? 0 : "var(--ds-space-3)",
|
|
11017
|
+
paddingRight: "var(--ds-space-3)",
|
|
11018
|
+
paddingBottom: overlap ? 0 : "var(--ds-space-3)",
|
|
11019
|
+
paddingLeft: sidebarFloating ? 0 : "var(--ds-space-3)",
|
|
11020
|
+
marginBottom: overlap ? 0 : "var(--ds-space-3)"
|
|
11021
|
+
};
|
|
11022
|
+
}
|
|
11023
|
+
var PageContainer = forwardRef(function PageContainer2({
|
|
11024
|
+
width,
|
|
11025
|
+
maxWidth = "xl",
|
|
11026
|
+
padding = "default",
|
|
11027
|
+
verticalPadding,
|
|
11028
|
+
centered = true,
|
|
11029
|
+
children,
|
|
11030
|
+
className,
|
|
11031
|
+
renderHeader
|
|
11032
|
+
}, ref) {
|
|
11033
|
+
const shell = useAppShell();
|
|
11034
|
+
const resolvedMaxWidth = width ? widthToMaxWidth[width] : maxWidth;
|
|
11035
|
+
const maxWidthValue = maxWidthValues[resolvedMaxWidth];
|
|
11036
|
+
const kids = Children.toArray(children);
|
|
11037
|
+
const headerIdx = kids.findIndex(isPageHeaderElement);
|
|
11038
|
+
if (headerIdx === -1) {
|
|
11039
|
+
return /* @__PURE__ */ jsx(
|
|
11040
|
+
"div",
|
|
11041
|
+
{
|
|
11042
|
+
ref,
|
|
11043
|
+
className: cn(
|
|
11044
|
+
"w-full",
|
|
11045
|
+
paddingClasses[padding],
|
|
11046
|
+
verticalPaddingClasses[verticalPadding ?? "default"],
|
|
11047
|
+
centered && "mx-auto",
|
|
11048
|
+
className
|
|
11049
|
+
),
|
|
11050
|
+
style: { maxWidth: maxWidthValue, containerType: "inline-size" },
|
|
11051
|
+
children
|
|
11052
|
+
}
|
|
11053
|
+
);
|
|
11054
|
+
}
|
|
11055
|
+
const headerEl = kids[headerIdx];
|
|
11056
|
+
const rest = kids.filter((_, i) => i !== headerIdx);
|
|
11057
|
+
const r = resolvePageHeader(shell?.theme, headerEl.props, {
|
|
11058
|
+
isHome: shell?.isHome ?? false,
|
|
11059
|
+
isMobile: shell?.isMobile ?? false,
|
|
11060
|
+
navbarFloating: shell?.navbarFloating ?? false,
|
|
11061
|
+
sidebarFloating: shell?.sidebarFloating ?? false
|
|
11062
|
+
});
|
|
11063
|
+
const snapping = r.behavior === "snapping";
|
|
11064
|
+
const floatingHeader = r.position === "floating";
|
|
11065
|
+
const colourful = r.variant === "colourful";
|
|
11066
|
+
const crumbs = Array.isArray(headerEl.props.breadcrumbs) && headerEl.props.breadcrumbs.length > 0 ? headerEl.props.breadcrumbs : null;
|
|
11067
|
+
const contained = r.breadcrumbPosition === "contained" && !!crumbs;
|
|
11068
|
+
const block = floatingHeader && contained && !snapping;
|
|
11069
|
+
const placement = block ? "block" : r.outside ? "outside" : "inside";
|
|
11070
|
+
const breadcrumbsInsideHeader = snapping && floatingHeader && contained;
|
|
11071
|
+
const overlap = colourful && typeof headerEl.props.overlapHeight === "number" && headerEl.props.overlapHeight > 0 ? headerEl.props.overlapHeight : 0;
|
|
11072
|
+
const strip = contained && !breadcrumbsInsideHeader && crumbs ? (
|
|
11073
|
+
// The strip is the whole trail: the path, then this page as the current item (Breadcrumbs renders the last item as text).
|
|
11074
|
+
/* @__PURE__ */ jsx(Breadcrumbs, { variant: "contained", itemVariant: r.breadcrumbStyle, bleed: true, contentMaxWidth: maxWidthValue, separator: r.breadcrumbSeparator, items: headerEl.props.title ? [...crumbs, { label: headerEl.props.title }] : crumbs })
|
|
11075
|
+
) : null;
|
|
11076
|
+
const columnClass = (pad2) => cn("w-full", paddingClasses[pad2], centered && "mx-auto");
|
|
11077
|
+
const columnStyle = { maxWidth: maxWidthValue, containerType: "inline-size" };
|
|
11078
|
+
const header = /* @__PURE__ */ jsx(PageContainerContext, { value: { contentMaxWidth: maxWidthValue, placement, containedBreadcrumbs: contained, breadcrumbsInsideHeader, noBottomMargin: block }, children: renderHeader ? renderHeader(headerEl) : headerEl });
|
|
11079
|
+
const contentPadding = floatingHeader && shell?.isMobile ? "none" : padding;
|
|
11080
|
+
const wrapperStyle = floatingHeader || overlap ? {
|
|
11081
|
+
...floatingHeader ? { paddingRight: "var(--ds-space-3)", paddingLeft: r.sidebarFloating ? 0 : "var(--ds-space-3)" } : {},
|
|
11082
|
+
...overlap ? { marginTop: -overlap, position: "relative", zIndex: 1 } : {}
|
|
11083
|
+
} : void 0;
|
|
11084
|
+
const column = /* @__PURE__ */ jsx("div", { className: cn(columnClass(contentPadding), bottomPaddingClasses[verticalPadding ?? "default"], className), style: columnStyle, children: rest });
|
|
11085
|
+
return /* @__PURE__ */ jsxs("div", { ref, "data-page-container": "", className: "w-full", children: [
|
|
11086
|
+
placement === "block" ? /* @__PURE__ */ jsx("div", { style: floatingBlockPadding(r.navbarFloating, r.sidebarFloating, overlap > 0), children: /* @__PURE__ */ jsxs("div", { className: FLOATING_BLOCK, children: [
|
|
11087
|
+
strip,
|
|
11088
|
+
colourful ? header : /* @__PURE__ */ jsx("div", { className: columnClass(padding), style: columnStyle, children: header })
|
|
11089
|
+
] }) }) : placement === "outside" ? /* @__PURE__ */ jsxs(Fragment, { children: [
|
|
11090
|
+
strip,
|
|
11091
|
+
header
|
|
11092
|
+
] }) : /* @__PURE__ */ jsxs(Fragment, { children: [
|
|
11093
|
+
strip,
|
|
11094
|
+
/* @__PURE__ */ jsx("div", { className: columnClass(padding), style: columnStyle, children: header })
|
|
11095
|
+
] }),
|
|
11096
|
+
wrapperStyle ? /* @__PURE__ */ jsx("div", { style: wrapperStyle, children: column }) : column
|
|
11097
|
+
] });
|
|
11098
|
+
});
|
|
11099
|
+
function TruncHeading({ as: Tag3 = "h1", className, children, lines: linesProp }) {
|
|
11100
|
+
const lines = linesProp ?? (Tag3 === "h1" ? 2 : 1);
|
|
11101
|
+
const { ref, isTruncated } = useTextOverflow({ lines });
|
|
11102
|
+
const heading = /* @__PURE__ */ jsx(Tag3, { ref, className: cn(lines === 2 ? "line-clamp-2" : "truncate", className), children });
|
|
10778
11103
|
if (!isTruncated) return heading;
|
|
10779
11104
|
return /* @__PURE__ */ jsx(Tooltip, { content: children, children: heading });
|
|
10780
11105
|
}
|
|
@@ -10895,30 +11220,49 @@ var PageHeader = forwardRef(function PageHeader2({
|
|
|
10895
11220
|
bannerImage,
|
|
10896
11221
|
as: Heading = "h1",
|
|
10897
11222
|
className,
|
|
10898
|
-
variant
|
|
10899
|
-
behavior
|
|
10900
|
-
intensity
|
|
11223
|
+
variant: variantProp,
|
|
11224
|
+
behavior: behaviorProp,
|
|
11225
|
+
intensity: intensityProp,
|
|
10901
11226
|
backgroundImage,
|
|
10902
11227
|
overlapHeight,
|
|
10903
11228
|
expandedContent,
|
|
10904
11229
|
collapseOffset = 100,
|
|
10905
11230
|
pinned = true,
|
|
10906
|
-
contentMaxWidth,
|
|
11231
|
+
contentMaxWidth: contentMaxWidthProp,
|
|
10907
11232
|
tabs,
|
|
10908
11233
|
breadcrumbStyle,
|
|
10909
11234
|
breadcrumbSeparator,
|
|
10910
|
-
hideExpandedBreadcrumbs,
|
|
10911
|
-
position
|
|
10912
|
-
navbarFloating,
|
|
10913
|
-
sidebarFloating,
|
|
10914
|
-
noBottomMargin,
|
|
10915
|
-
containedBreadcrumbs
|
|
11235
|
+
hideExpandedBreadcrumbs: hideExpandedBreadcrumbsProp,
|
|
11236
|
+
position: positionProp,
|
|
11237
|
+
navbarFloating: navbarFloatingProp,
|
|
11238
|
+
sidebarFloating: sidebarFloatingProp,
|
|
11239
|
+
noBottomMargin: noBottomMarginProp,
|
|
11240
|
+
containedBreadcrumbs: containedBreadcrumbsProp
|
|
10916
11241
|
}, ref) {
|
|
10917
|
-
const isFloating = position === "floating";
|
|
10918
11242
|
const shell = useAppShell();
|
|
11243
|
+
const container = usePageContainer();
|
|
11244
|
+
const r = resolvePageHeader(shell?.theme, {
|
|
11245
|
+
variant: variantProp,
|
|
11246
|
+
behavior: behaviorProp,
|
|
11247
|
+
position: positionProp,
|
|
11248
|
+
intensity: intensityProp,
|
|
11249
|
+
breadcrumbStyle,
|
|
11250
|
+
breadcrumbSeparator,
|
|
11251
|
+
navbarFloating: navbarFloatingProp,
|
|
11252
|
+
sidebarFloating: sidebarFloatingProp
|
|
11253
|
+
}, { isHome: shell?.isHome ?? false, isMobile: shell?.isMobile ?? false, navbarFloating: shell?.navbarFloating ?? false, sidebarFloating: shell?.sidebarFloating ?? false });
|
|
11254
|
+
const { variant, behavior, position, intensity, navbarFloating, sidebarFloating } = r;
|
|
11255
|
+
const isFloating = position === "floating";
|
|
10919
11256
|
const asideFloatingSide = shell?.asideOpen && shell.asideFloating ? shell.asideSide : null;
|
|
10920
|
-
const bcPill = breadcrumbStyle === "pill";
|
|
10921
|
-
const bcSep = breadcrumbSeparator
|
|
11257
|
+
const bcPill = r.breadcrumbStyle === "pill";
|
|
11258
|
+
const bcSep = r.breadcrumbSeparator;
|
|
11259
|
+
const contentMaxWidth = contentMaxWidthProp ?? container?.contentMaxWidth;
|
|
11260
|
+
const stickyTop = shell ? "top-0" : "top-[var(--ds-navbar-height)]";
|
|
11261
|
+
const snapping = behavior === "snapping";
|
|
11262
|
+
const inlineBreadcrumbs = container?.containedBreadcrumbs && !snapping ? void 0 : breadcrumbs;
|
|
11263
|
+
const hideExpandedBreadcrumbs = hideExpandedBreadcrumbsProp ?? (!!container?.containedBreadcrumbs && snapping);
|
|
11264
|
+
const containedBreadcrumbs = containedBreadcrumbsProp ?? (container?.breadcrumbsInsideHeader && breadcrumbs?.length ? /* @__PURE__ */ jsx(Breadcrumbs, { variant: "contained", itemVariant: r.breadcrumbStyle, bleed: true, contentMaxWidth, separator: bcSep, items: [...breadcrumbs, { label: title }] }) : void 0);
|
|
11265
|
+
const noBottomMargin = noBottomMarginProp ?? container?.noBottomMargin;
|
|
10922
11266
|
if (behavior === "snapping") {
|
|
10923
11267
|
return /* @__PURE__ */ jsx(
|
|
10924
11268
|
SnappingHeader,
|
|
@@ -10926,7 +11270,7 @@ var PageHeader = forwardRef(function PageHeader2({
|
|
|
10926
11270
|
title,
|
|
10927
11271
|
description,
|
|
10928
11272
|
badge,
|
|
10929
|
-
breadcrumbs,
|
|
11273
|
+
breadcrumbs: inlineBreadcrumbs,
|
|
10930
11274
|
onBack,
|
|
10931
11275
|
actions,
|
|
10932
11276
|
avatar,
|
|
@@ -10945,6 +11289,7 @@ var PageHeader = forwardRef(function PageHeader2({
|
|
|
10945
11289
|
hideExpandedBreadcrumbs,
|
|
10946
11290
|
as: Heading,
|
|
10947
11291
|
className,
|
|
11292
|
+
stickyTop,
|
|
10948
11293
|
isFloating,
|
|
10949
11294
|
navbarFloating,
|
|
10950
11295
|
sidebarFloating,
|
|
@@ -10955,7 +11300,7 @@ var PageHeader = forwardRef(function PageHeader2({
|
|
|
10955
11300
|
}
|
|
10956
11301
|
let header;
|
|
10957
11302
|
if (variant === "minimal") {
|
|
10958
|
-
header = /* @__PURE__ */ jsx(MinimalHeader, { title, badge, breadcrumbs, actions, breadcrumbPill: bcPill, breadcrumbSeparator: bcSep, as: Heading, className, headerRef: isFloating ? void 0 : ref, isFloating, contentMaxWidth });
|
|
11303
|
+
header = /* @__PURE__ */ jsx(MinimalHeader, { title, badge, breadcrumbs: inlineBreadcrumbs, actions, breadcrumbPill: bcPill, breadcrumbSeparator: bcSep, as: Heading, className, headerRef: isFloating ? void 0 : ref, isFloating, contentMaxWidth });
|
|
10959
11304
|
} else if (variant === "tabs-integrated") {
|
|
10960
11305
|
header = /* @__PURE__ */ jsx(
|
|
10961
11306
|
TabsIntegratedHeader,
|
|
@@ -10963,7 +11308,7 @@ var PageHeader = forwardRef(function PageHeader2({
|
|
|
10963
11308
|
title,
|
|
10964
11309
|
description,
|
|
10965
11310
|
badge,
|
|
10966
|
-
breadcrumbs,
|
|
11311
|
+
breadcrumbs: inlineBreadcrumbs,
|
|
10967
11312
|
onBack,
|
|
10968
11313
|
actions,
|
|
10969
11314
|
avatar,
|
|
@@ -10984,7 +11329,7 @@ var PageHeader = forwardRef(function PageHeader2({
|
|
|
10984
11329
|
title,
|
|
10985
11330
|
description,
|
|
10986
11331
|
badge,
|
|
10987
|
-
breadcrumbs,
|
|
11332
|
+
breadcrumbs: inlineBreadcrumbs,
|
|
10988
11333
|
onBack,
|
|
10989
11334
|
actions,
|
|
10990
11335
|
avatar,
|
|
@@ -11009,7 +11354,7 @@ var PageHeader = forwardRef(function PageHeader2({
|
|
|
11009
11354
|
title,
|
|
11010
11355
|
description,
|
|
11011
11356
|
badge,
|
|
11012
|
-
breadcrumbs,
|
|
11357
|
+
breadcrumbs: inlineBreadcrumbs,
|
|
11013
11358
|
onBack,
|
|
11014
11359
|
actions,
|
|
11015
11360
|
avatar,
|
|
@@ -11038,6 +11383,7 @@ var PageHeader = forwardRef(function PageHeader2({
|
|
|
11038
11383
|
}
|
|
11039
11384
|
return header;
|
|
11040
11385
|
});
|
|
11386
|
+
Object.assign(PageHeader, { [PAGE_HEADER_MARK]: true });
|
|
11041
11387
|
function floatingContentProps(isFloating, contentMaxWidth, extraClassName) {
|
|
11042
11388
|
if (!isFloating) return { className: extraClassName, style: void 0 };
|
|
11043
11389
|
return {
|
|
@@ -11131,7 +11477,7 @@ function MinimalHeader({
|
|
|
11131
11477
|
hasBreadcrumbs && /* @__PURE__ */ jsx(Breadcrumbs3, { items: breadcrumbs, pill: breadcrumbPill, separator: breadcrumbSeparator }),
|
|
11132
11478
|
/* @__PURE__ */ jsxs("div", { className: cn("flex items-center justify-between gap-ds-4", hasBreadcrumbs && "mt-ds-0.5"), children: [
|
|
11133
11479
|
/* @__PURE__ */ jsxs("div", { className: "flex items-center gap-ds-2 min-w-0", children: [
|
|
11134
|
-
/* @__PURE__ */ jsx(TruncHeading, { as: Heading, className: "font-[family-name:var(--ds-font-display)] text-xl font-[var(--ds-weight-heading)] text-[var(--ds-text-primary)]", children: title }),
|
|
11480
|
+
/* @__PURE__ */ jsx(TruncHeading, { as: Heading, lines: 1, className: "font-[family-name:var(--ds-font-display)] text-xl font-[var(--ds-weight-heading)] text-[var(--ds-text-primary)]", children: title }),
|
|
11135
11481
|
badge
|
|
11136
11482
|
] }),
|
|
11137
11483
|
actions && /* @__PURE__ */ jsx(ButtonSizeContext.Provider, { value: "sm", children: /* @__PURE__ */ jsx("div", { className: "flex items-center gap-ds-2 shrink-0", children: actions }) })
|
|
@@ -11264,7 +11610,8 @@ function SnappingHeader({
|
|
|
11264
11610
|
navbarFloating,
|
|
11265
11611
|
sidebarFloating,
|
|
11266
11612
|
containedBreadcrumbs,
|
|
11267
|
-
headerRef
|
|
11613
|
+
headerRef,
|
|
11614
|
+
stickyTop = "top-[var(--ds-navbar-height)]"
|
|
11268
11615
|
}) {
|
|
11269
11616
|
const [collapsed, setCollapsed] = useState(false);
|
|
11270
11617
|
const sentinelRef = useRef(null);
|
|
@@ -11338,7 +11685,7 @@ function SnappingHeader({
|
|
|
11338
11685
|
ref: !isFloating ? headerRef : void 0,
|
|
11339
11686
|
className: cn(
|
|
11340
11687
|
"transition-all duration-[var(--ds-transition-speed)] ease-[var(--ds-transition-ease)]",
|
|
11341
|
-
!isFloating && pinned && collapsed && "sticky
|
|
11688
|
+
!isFloating && pinned && collapsed && cn("sticky", stickyTop, "z-[calc(var(--ds-z-sticky,40)-1)]"),
|
|
11342
11689
|
collapsed && (isFloating ? cn(FLOATING_HEADER, "bg-[var(--ds-bg-surface)]") : ["bg-[var(--ds-bg-surface)]", GLASS_BACKDROP, "border-b-[length:var(--ds-border-width)] border-[var(--ds-border-subtle)]", "shadow-[var(--ds-shadow-sm)]"]),
|
|
11343
11690
|
!collapsed && isColourful && (isFloating && !wrapperHasCard ? [
|
|
11344
11691
|
"relative overflow-hidden",
|
|
@@ -11432,7 +11779,7 @@ function SnappingHeader({
|
|
|
11432
11779
|
}
|
|
11433
11780
|
);
|
|
11434
11781
|
})(),
|
|
11435
|
-
/* @__PURE__ */ jsx(TruncHeading, { as: Heading, className: cn(
|
|
11782
|
+
/* @__PURE__ */ jsx(TruncHeading, { as: Heading, lines: collapsed ? 1 : void 0, className: cn(
|
|
11436
11783
|
"font-[family-name:var(--ds-font-display)] font-[var(--ds-weight-heading)]",
|
|
11437
11784
|
collapsed ? "text-lg text-[var(--ds-text-primary)]" : cn("text-3xl", onLight ? "text-[var(--ds-text-on-primary)]" : "text-[var(--ds-text-primary)]")
|
|
11438
11785
|
), children: title }),
|
|
@@ -11777,6 +12124,7 @@ var Navbar = forwardRef(function Navbar2({
|
|
|
11777
12124
|
onMenuClick
|
|
11778
12125
|
}, ref) {
|
|
11779
12126
|
const appShell = useAppShell();
|
|
12127
|
+
useLayoutEffect(() => appShell?.registerChrome("navbar", position), [appShell?.registerChrome, position]);
|
|
11780
12128
|
const isSmallPhone = appShell?.isMobile && !appShell.isTablet;
|
|
11781
12129
|
const showHamburger = appShell?.isMobile && appShell.hasMobileMenu && !(isSmallPhone && appShell.hasMobileNav) || !!onMenuClick;
|
|
11782
12130
|
const handleHamburger = () => onMenuClick ? onMenuClick() : appShell?.setSidebarOpen(!appShell.sidebarOpen);
|
|
@@ -13192,7 +13540,7 @@ var TOAST_POSITION_CLASSES = {
|
|
|
13192
13540
|
"top-center": "top-ds-4 left-1/2 -translate-x-1/2",
|
|
13193
13541
|
"bottom-center": "bottom-ds-4 left-1/2 -translate-x-1/2"
|
|
13194
13542
|
};
|
|
13195
|
-
function Toast({ variant = "default", message, visible, onDismiss, duration =
|
|
13543
|
+
function Toast({ variant = "default", message, visible, onDismiss, duration = 5e3, pauseOnHover = false, action, position = "bottom-right", mode, container, inline = false }) {
|
|
13196
13544
|
const isMobile = useBreakpoint("sm");
|
|
13197
13545
|
const isCentered = position === "top-center" || position === "bottom-center";
|
|
13198
13546
|
const timerRef = useRef(void 0);
|
|
@@ -13295,7 +13643,7 @@ function useToast() {
|
|
|
13295
13643
|
return ctx;
|
|
13296
13644
|
}
|
|
13297
13645
|
var toastSeq = 0;
|
|
13298
|
-
function ToastProvider({ children, maxVisible =
|
|
13646
|
+
function ToastProvider({ children, maxVisible = 1, position = "bottom-right", duration = 5e3, mode, pauseOnHover = true }) {
|
|
13299
13647
|
const [queue, setQueue] = useState([]);
|
|
13300
13648
|
const isMobile = useBreakpoint("sm");
|
|
13301
13649
|
const dismiss = useCallback((id) => {
|
|
@@ -13371,54 +13719,6 @@ function ToastProvider({ children, maxVisible = 3, position = "bottom-right", du
|
|
|
13371
13719
|
)
|
|
13372
13720
|
] });
|
|
13373
13721
|
}
|
|
13374
|
-
var maxWidthValues = {
|
|
13375
|
-
sm: "var(--ds-bp-sm)",
|
|
13376
|
-
md: "var(--ds-bp-md)",
|
|
13377
|
-
lg: "var(--ds-bp-lg)",
|
|
13378
|
-
xl: "var(--ds-bp-xl)",
|
|
13379
|
-
full: "100%"
|
|
13380
|
-
};
|
|
13381
|
-
var widthToMaxWidth = {
|
|
13382
|
-
constrained: "xl",
|
|
13383
|
-
full: "full",
|
|
13384
|
-
narrow: "md"
|
|
13385
|
-
};
|
|
13386
|
-
var paddingClasses = {
|
|
13387
|
-
none: "",
|
|
13388
|
-
default: "px-ds-6",
|
|
13389
|
-
wide: "px-ds-10"
|
|
13390
|
-
};
|
|
13391
|
-
var verticalPaddingClasses = {
|
|
13392
|
-
none: "",
|
|
13393
|
-
default: "pt-ds-8 pb-ds-12",
|
|
13394
|
-
spacious: "pt-ds-8 pb-ds-16"
|
|
13395
|
-
};
|
|
13396
|
-
var PageContainer = forwardRef(function PageContainer2({
|
|
13397
|
-
width,
|
|
13398
|
-
maxWidth = "xl",
|
|
13399
|
-
padding = "default",
|
|
13400
|
-
verticalPadding = "default",
|
|
13401
|
-
centered = true,
|
|
13402
|
-
children,
|
|
13403
|
-
className
|
|
13404
|
-
}, ref) {
|
|
13405
|
-
const resolvedMaxWidth = width ? widthToMaxWidth[width] : maxWidth;
|
|
13406
|
-
return /* @__PURE__ */ jsx(
|
|
13407
|
-
"div",
|
|
13408
|
-
{
|
|
13409
|
-
ref,
|
|
13410
|
-
className: cn(
|
|
13411
|
-
"w-full",
|
|
13412
|
-
paddingClasses[padding],
|
|
13413
|
-
verticalPaddingClasses[verticalPadding],
|
|
13414
|
-
centered && "mx-auto",
|
|
13415
|
-
className
|
|
13416
|
-
),
|
|
13417
|
-
style: { maxWidth: maxWidthValues[resolvedMaxWidth], containerType: "inline-size" },
|
|
13418
|
-
children
|
|
13419
|
-
}
|
|
13420
|
-
);
|
|
13421
|
-
});
|
|
13422
13722
|
var SectionHeading = forwardRef(function SectionHeading2({
|
|
13423
13723
|
title,
|
|
13424
13724
|
description,
|
|
@@ -13546,6 +13846,6 @@ var TextOverflow = forwardRef(function TextOverflow2({
|
|
|
13546
13846
|
return /* @__PURE__ */ jsx(Tooltip, { content: resolvedTooltipContent, children: content });
|
|
13547
13847
|
});
|
|
13548
13848
|
|
|
13549
|
-
export { Accordion, ActionPanel, ActionPanelGroup, Alert, AppShell, AsidePanel, Avatar, AvatarGroup, BottomNav, Breadcrumbs, BulkActionBar, Button, ButtonSizeContext, Calendar, Card, CardContent, CardDescription, CardFooter, CardHeader, CardTitle, Carousel, ChatMessageList, ChatPanel, Checkbox, CheckboxGroup, CheckboxGroupItem, Collapsible, ColorPicker, Combobox, CommandPalette, ContextMenu, CornerPanel, DEFAULT_DATE_RANGE_PRESETS, DataList, DatePicker, DateRangePicker, DescriptionList, Dialog, Dock, Drawer, Dropdown, DropdownMenu, EmptyState, Field, FileUpload, FormWrapper, HoverCard, InlineFieldError, Input, Kbd, Label, Launcher, MentionInput, MobileHeaderMenu, NavItem, NavMenu, Navbar, NotificationCenter, NumberInput, PageContainer, PageHeader, Pagination, PinInput, Popover, Progress, RadioGroup, Rating, ScrollArea, SectionHeading, SegmentedControl, Sheet, Sidebar, SidebarNav, SliderRange, Spinner, StackedList, StatsCard, StatusDot, Stepper, Table, Tabs, Tag, TagInput, TextOverflow, Textarea, TimePicker, Timeline, Toast, ToastProvider, Toggle, Tour, TransferList, TreeView, useAppShell, useFormContext, useSidebar, useToast };
|
|
13849
|
+
export { Accordion, ActionPanel, ActionPanelGroup, Alert, AppShell, AsidePanel, Avatar, AvatarGroup, BottomNav, Breadcrumbs, BulkActionBar, Button, ButtonSizeContext, Calendar, Card, CardContent, CardDescription, CardFooter, CardHeader, CardTitle, Carousel, ChatMessageList, ChatPanel, Checkbox, CheckboxGroup, CheckboxGroupItem, Collapsible, ColorPicker, Combobox, CommandPalette, ContextMenu, CornerPanel, DEFAULT_DATE_RANGE_PRESETS, DataList, DatePicker, DateRangePicker, DescriptionList, Dialog, Dock, Drawer, Dropdown, DropdownMenu, EmptyState, Field, FileUpload, FormWrapper, HoverCard, InlineFieldError, Input, Kbd, Label, Launcher, MentionInput, MobileHeaderMenu, NavItem, NavMenu, Navbar, NotificationCenter, NumberInput, PageContainer, PageHeader, Pagination, PinInput, Popover, Progress, RadioGroup, Rating, ScrollArea, SectionHeading, SegmentedControl, Sheet, Sidebar, SidebarNav, SkipLink, SliderRange, Spinner, StackedList, StatsCard, StatusDot, Stepper, Table, TableToolbar, Tabs, Tag, TagInput, TextOverflow, Textarea, TimePicker, Timeline, Toast, ToastProvider, Toggle, Tour, TransferList, TreeView, useAppShell, useFormContext, useSidebar, useToast };
|
|
13550
13850
|
//# sourceMappingURL=index.js.map
|
|
13551
13851
|
//# sourceMappingURL=index.js.map
|