gridsmith-ui 0.28.0 → 0.29.1
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 +47 -1
- package/dist/charts.d.ts +7 -2
- package/dist/charts.js +2 -2
- package/dist/charts.js.map +1 -1
- package/dist/chat.js +5 -5
- package/dist/{chunk-GXMTS3YD.js → chunk-37WOC7F7.js} +29 -12
- package/dist/chunk-37WOC7F7.js.map +1 -0
- package/dist/{chunk-OPFJEL3Z.js → chunk-4TUJXDRU.js} +96 -15
- package/dist/chunk-4TUJXDRU.js.map +1 -0
- package/dist/{chunk-EIWXVICU.js → chunk-6A5RHW2W.js} +3 -3
- package/dist/{chunk-EIWXVICU.js.map → chunk-6A5RHW2W.js.map} +1 -1
- package/dist/{chunk-XVB55M3N.js → chunk-72SDAX54.js} +2 -2
- package/dist/chunk-72SDAX54.js.map +1 -0
- package/dist/{chunk-YUTF2X6B.js → chunk-FUKSLQ77.js} +8 -8
- package/dist/{chunk-YUTF2X6B.js.map → chunk-FUKSLQ77.js.map} +1 -1
- package/dist/{chunk-DQCHCLEJ.js → chunk-I3MTQ3CS.js} +5 -5
- package/dist/{chunk-DQCHCLEJ.js.map → chunk-I3MTQ3CS.js.map} +1 -1
- package/dist/{chunk-66JJCQU3.js → chunk-JTU7OBYJ.js} +5 -3
- package/dist/chunk-JTU7OBYJ.js.map +1 -0
- package/dist/{chunk-2ROVDVLZ.js → chunk-MFAWJSMJ.js} +3 -3
- package/dist/{chunk-2ROVDVLZ.js.map → chunk-MFAWJSMJ.js.map} +1 -1
- package/dist/{chunk-TJEV7YAY.js → chunk-MKFWHWBK.js} +2 -2
- package/dist/{chunk-TJEV7YAY.js.map → chunk-MKFWHWBK.js.map} +1 -1
- package/dist/{chunk-BRAXJEEP.js → chunk-QNHVPE2B.js} +4 -4
- package/dist/{chunk-BRAXJEEP.js.map → chunk-QNHVPE2B.js.map} +1 -1
- package/dist/{chunk-TRDXWHD2.js → chunk-RECCCA7Z.js} +6 -6
- package/dist/chunk-RECCCA7Z.js.map +1 -0
- package/dist/{chunk-R4GXKH4U.js → chunk-RJEUQ7RL.js} +10 -8
- package/dist/chunk-RJEUQ7RL.js.map +1 -0
- package/dist/{chunk-CRQ6KCRD.js → chunk-ZHUVLBCC.js} +7 -4
- package/dist/chunk-ZHUVLBCC.js.map +1 -0
- package/dist/data-grid.d.ts +2 -2
- package/dist/data-grid.js +9 -9
- package/dist/data-grid.js.map +1 -1
- package/dist/editor-mentions.js +2 -2
- package/dist/editor.js +4 -4
- package/dist/icons.d.ts +9 -0
- package/dist/icons.js +1 -1
- package/dist/index.d.ts +45 -35
- package/dist/index.js +142 -164
- package/dist/index.js.map +1 -1
- package/dist/kanban.js +6 -6
- package/dist/kanban.js.map +1 -1
- package/dist/resizable.js +7 -7
- package/dist/roots.css +2 -0
- package/dist/{table-utils-BkjNEWts.d.ts → table-utils-CxnpFHRF.d.ts} +5 -4
- package/dist/{use-pagination-BxcRlNQG.d.ts → use-pagination-QykGSREv.d.ts} +7 -0
- package/dist/utils.js.map +1 -1
- package/dist/virtualized.d.ts +1 -1
- package/dist/virtualized.js +6 -6
- package/package.json +2 -2
- package/dist/chunk-66JJCQU3.js.map +0 -1
- package/dist/chunk-CRQ6KCRD.js.map +0 -1
- package/dist/chunk-GXMTS3YD.js.map +0 -1
- package/dist/chunk-OPFJEL3Z.js.map +0 -1
- package/dist/chunk-R4GXKH4U.js.map +0 -1
- package/dist/chunk-TRDXWHD2.js.map +0 -1
- package/dist/chunk-XVB55M3N.js.map +0 -1
package/dist/index.js
CHANGED
|
@@ -1,41 +1,41 @@
|
|
|
1
1
|
"use client";
|
|
2
|
-
import { useAppShell, REACT_VERSION_PROBLEM, Breadcrumbs, useCrumbFollow, crumbGoes, useOverlayMark, useDirtyGuard, useScrollbarInset, DrawerFooterCtx, OverlayMarkScope, OverlayCloseCtx, insetLessScrollbar, DiscardConfirm, OVERLAY_ROOT_ATTR, OverlayMarkCtx, useCompact, useElementWidth, DrawerPanel, useCloseSettle, Drawer, useRememberedWidth, pxOf, ResizeEdge, defaultMaxWidth } from './chunk-
|
|
3
|
-
export { AppShell, Breadcrumbs, Drawer, SkipLink, useAppShell, useUnsavedChanges } from './chunk-
|
|
4
|
-
import { Skeleton, TITLE_TEXT, useFormatLocale, useHydrated, useToday, LocaleContext } from './chunk-
|
|
5
|
-
export { Skeleton, useFormatLocale, useHydrated } from './chunk-
|
|
2
|
+
import { useAppShell, REACT_VERSION_PROBLEM, Breadcrumbs, useCrumbFollow, crumbGoes, useCornerInset, NAVBAR_INSET_PRIORITY, useOverlayMark, useDirtyGuard, useScrollbarInset, DrawerFooterCtx, OverlayMarkScope, OverlayCloseCtx, insetLessScrollbar, DiscardConfirm, OVERLAY_ROOT_ATTR, OverlayMarkCtx, useCompact, useElementWidth, DrawerPanel, useCloseSettle, besideRoom, PANEL_INSET_PRIORITY, Drawer, useRememberedWidth, pxOf, ResizeEdge, LAUNCHER_INSET_PRIORITY, defaultMaxWidth } from './chunk-4TUJXDRU.js';
|
|
3
|
+
export { AppShell, Breadcrumbs, Drawer, SkipLink, useAppShell, useUnsavedChanges } from './chunk-4TUJXDRU.js';
|
|
4
|
+
import { Skeleton, TITLE_TEXT, useFormatLocale, useHydrated, useToday, LocaleContext } from './chunk-MFAWJSMJ.js';
|
|
5
|
+
export { Skeleton, useFormatLocale, useHydrated } from './chunk-MFAWJSMJ.js';
|
|
6
6
|
import { useScrollEdges, EDGE_FADE } from './chunk-3BRQRKDO.js';
|
|
7
|
-
import { Avatar, foldForSearch, useActiveOptionInView, shownMentions, matchMentions, mentionOptionId, MentionList, initialsOf } from './chunk-
|
|
8
|
-
export { Avatar } from './chunk-
|
|
9
|
-
import { Link } from './chunk-
|
|
10
|
-
export { CodeBlock, Divider, Link } from './chunk-
|
|
7
|
+
import { Avatar, foldForSearch, useActiveOptionInView, shownMentions, matchMentions, mentionOptionId, MentionList, initialsOf } from './chunk-6A5RHW2W.js';
|
|
8
|
+
export { Avatar } from './chunk-6A5RHW2W.js';
|
|
9
|
+
import { Link } from './chunk-I3MTQ3CS.js';
|
|
10
|
+
export { CodeBlock, Divider, Link } from './chunk-I3MTQ3CS.js';
|
|
11
11
|
import { useFillHeight, FillContext, useKeyboardScroll } from './chunk-FD4YED7O.js';
|
|
12
|
-
import { Badge } from './chunk-
|
|
13
|
-
export { Badge } from './chunk-
|
|
14
|
-
import { inferColumnKinds, useCardsSwitch, CARDS_BELOW, kindOfRenderedText, CardValue } from './chunk-
|
|
15
|
-
import { useWholeListCheck, pagerPart, Pagination, Input, CHECK_FILL, Dropdown, FilterRowContext, SWITCH_KNOB_ON, SWITCH_KNOB_OFF, SWITCH_KNOB_MOTION, SWITCH_TRACK_ON, SWITCH_TRACK_OFF, useFieldControl, useField, OutsideField, NumberInput, InlineFieldError, Label, AddAnotherRowCtx, Field } from './chunk-
|
|
16
|
-
export { Dropdown, Field, InlineFieldError, Input, Label, NumberInput, Pagination, Popover, Textarea, Toggle, usePagination } from './chunk-
|
|
17
|
-
import { Button, ControlSizeContext, triggerType, Spinner, useShellPreferences, PREFERENCE_HOUSE_DEFAULTS, formatRelativeTime, thresholdOf, toMillis, formatFullTime, preferenceActionKey, DAY, HOUR, MINUTE } from './chunk-
|
|
18
|
-
export { Button, ButtonSizeContext, ControlSizeContext, PreferencesContext, Spinner, formatFullTime, formatRelativeTime, preferenceActionKey, usePreferences } from './chunk-
|
|
12
|
+
import { Badge } from './chunk-RECCCA7Z.js';
|
|
13
|
+
export { Badge } from './chunk-RECCCA7Z.js';
|
|
14
|
+
import { inferColumnKinds, useCardsSwitch, CARDS_BELOW, kindOfRenderedText, CardValue } from './chunk-QNHVPE2B.js';
|
|
15
|
+
import { useWholeListCheck, pagerPart, Pagination, Input, CHECK_FILL, Dropdown, FilterRowContext, SWITCH_KNOB_ON, SWITCH_KNOB_OFF, SWITCH_KNOB_MOTION, SWITCH_TRACK_ON, SWITCH_TRACK_OFF, useFieldControl, useField, OutsideField, NumberInput, InlineFieldError, Label, AddAnotherRowCtx, Field } from './chunk-FUKSLQ77.js';
|
|
16
|
+
export { Dropdown, Field, InlineFieldError, Input, Label, NumberInput, Pagination, Popover, Textarea, Toggle, usePagination } from './chunk-FUKSLQ77.js';
|
|
17
|
+
import { Button, ControlSizeContext, triggerType, Spinner, useShellPreferences, PREFERENCE_HOUSE_DEFAULTS, formatRelativeTime, thresholdOf, toMillis, formatFullTime, preferenceActionKey, DAY, HOUR, MINUTE } from './chunk-RJEUQ7RL.js';
|
|
18
|
+
export { Button, ButtonSizeContext, ControlSizeContext, PreferencesContext, Spinner, formatFullTime, formatRelativeTime, preferenceActionKey, usePreferences } from './chunk-RJEUQ7RL.js';
|
|
19
19
|
import { elementType, formatLocale, localeChoice } from './chunk-OYNUU346.js';
|
|
20
20
|
import { useInputModality } from './chunk-7RKC5C7G.js';
|
|
21
21
|
export { INPUT_MODALITY_ATTR, inputModality, installInputModality, useInputModality } from './chunk-7RKC5C7G.js';
|
|
22
|
-
import { useBreakpoint, readBreakpointPx } from './chunk-
|
|
23
|
-
export { BreakpointWidthProvider, useBreakpoint } from './chunk-
|
|
24
|
-
import { FormChangeCtx, useReportedChange, useOptionalFormContext, FormCtx } from './chunk-
|
|
25
|
-
export { useFormContext } from './chunk-
|
|
22
|
+
import { useBreakpoint, readBreakpointPx } from './chunk-ZHUVLBCC.js';
|
|
23
|
+
export { BreakpointWidthProvider, useBreakpoint } from './chunk-ZHUVLBCC.js';
|
|
24
|
+
import { FormChangeCtx, useReportedChange, useOptionalFormContext, FormCtx } from './chunk-72SDAX54.js';
|
|
25
|
+
export { useFormContext } from './chunk-72SDAX54.js';
|
|
26
26
|
import { CardSurfaceCtx, useScrollsInside, SplitPaneCtx, RowsCtx, PageActionsCtx, SurfaceBoundary, useFramesItself, TableCardCtx } from './chunk-QM4SJKWV.js';
|
|
27
27
|
import { useRevealFocus } from './chunk-HTXP5BMM.js';
|
|
28
28
|
export { useRevealFocus } from './chunk-HTXP5BMM.js';
|
|
29
29
|
import { FOCUSABLE, usePopupFocus, FIELD, ZOOM_KEYS, useOverlayLayer, useFocusTrap, useFocusBeforeOpen, rememberFocus, focusInitial, OVERLAY_CLOSE_ATTR, rovingTabStop, useGridKeyboard, focusAfterRemoval, useNonModalDialog, useReturnFocus } from './chunk-ZI3OQDET.js';
|
|
30
30
|
export { useGridKeyboard } from './chunk-ZI3OQDET.js';
|
|
31
|
-
import { useTextOverflow,
|
|
32
|
-
export { Tooltip, useTextOverflow } from './chunk-
|
|
31
|
+
import { useTextOverflow, AutoTooltip } from './chunk-37WOC7F7.js';
|
|
32
|
+
export { Tooltip, useTextOverflow } from './chunk-37WOC7F7.js';
|
|
33
33
|
import { mergeRefs, Slot } from './chunk-7Q46JXSK.js';
|
|
34
|
-
import { Icon, slotIcon, warnOnce } from './chunk-
|
|
34
|
+
import { Icon, slotIcon, warnOnce } from './chunk-MKFWHWBK.js';
|
|
35
35
|
import { usePosition } from './chunk-HP7WUZPK.js';
|
|
36
36
|
import { useLatest } from './chunk-WH2FUFAC.js';
|
|
37
|
-
import { cn, FOCUS_RING, GLASS_SURFACE, FOCUS_INSET, PEER_FOCUS_RING, GLASS_BACKDROP, GLASS_DROPDOWN, lockBodyScroll, unlockBodyScroll, OVERLAY_SURFACE, GLASS_OVERLAY, ERROR_HAS_FOCUS_RING, FIELD_HAS_FOCUS_RING, GROUP_FOCUS_RING, ERROR_ACTIVE_RING, ACTIVE_RING, ERROR_FOCUS_WITHIN_RING, FIELD_FOCUS_WITHIN_RING, ERROR_FOCUS_RING, FIELD_FOCUS_RING } from './chunk-
|
|
38
|
-
import { createContext, forwardRef, useState, useRef, useCallback, useLayoutEffect, useMemo, useContext, isValidElement, useId, memo,
|
|
37
|
+
import { cn, FOCUS_RING, GLASS_SURFACE, FOCUS_INSET, PEER_FOCUS_RING, GLASS_BACKDROP, GLASS_DROPDOWN, lockBodyScroll, unlockBodyScroll, OVERLAY_SURFACE, GLASS_OVERLAY, ERROR_HAS_FOCUS_RING, FIELD_HAS_FOCUS_RING, GROUP_FOCUS_RING, ERROR_ACTIVE_RING, ACTIVE_RING, ERROR_FOCUS_WITHIN_RING, FIELD_FOCUS_WITHIN_RING, ERROR_FOCUS_RING, FIELD_FOCUS_RING, atLeastFocusRoom, FOCUS_ROOM } from './chunk-JTU7OBYJ.js';
|
|
38
|
+
import { createContext, forwardRef, useState, useRef, useCallback, useLayoutEffect, useMemo, useContext, isValidElement, useId, memo, useImperativeHandle, useEffect, Children, Fragment as Fragment$1, cloneElement, useSyncExternalStore } from 'react';
|
|
39
39
|
import { createPortal, flushSync } from 'react-dom';
|
|
40
40
|
import { jsxs, jsx, Fragment } from 'react/jsx-runtime';
|
|
41
41
|
|
|
@@ -465,7 +465,7 @@ function Combobox({ value, onChange: onChangeProp, options, placeholder = "Searc
|
|
|
465
465
|
container ?? document.body
|
|
466
466
|
)
|
|
467
467
|
] });
|
|
468
|
-
return /* @__PURE__ */ jsx(
|
|
468
|
+
return /* @__PURE__ */ jsx(AutoTooltip, { content: selectedLabel, disabled: !labelTruncated || open, children: triggerContent });
|
|
469
469
|
}
|
|
470
470
|
|
|
471
471
|
// ../../showcase/src/lib/locale-cache.ts
|
|
@@ -619,7 +619,7 @@ function RelativeTimeAt({ at, hours, className }) {
|
|
|
619
619
|
return () => clearTimeout(timer);
|
|
620
620
|
}, [at, now, hours]);
|
|
621
621
|
const full = formatFullTime(at, locale);
|
|
622
|
-
return /* @__PURE__ */ jsx(
|
|
622
|
+
return /* @__PURE__ */ jsx(AutoTooltip, { content: full, ref: placed, children: /* @__PURE__ */ jsxs(
|
|
623
623
|
"time",
|
|
624
624
|
{
|
|
625
625
|
tabIndex: inRows || inControl ? void 0 : 0,
|
|
@@ -721,10 +721,10 @@ var CheckboxGroupContext = createContext(null);
|
|
|
721
721
|
function CheckboxGroup({ value, onChange, children, className }) {
|
|
722
722
|
return /* @__PURE__ */ jsx(CheckboxGroupContext, { value: { value, onChange }, children: /* @__PURE__ */ jsx("div", { role: "group", className: cn("flex flex-col gap-ds-2", className), children }) });
|
|
723
723
|
}
|
|
724
|
-
function CheckboxGroupItem({ value, label, disabled
|
|
724
|
+
function CheckboxGroupItem({ value, label, disabled }) {
|
|
725
725
|
const ctx = useContext(CheckboxGroupContext);
|
|
726
|
-
const resolvedValue = ctx?.value ??
|
|
727
|
-
const resolvedOnChange = ctx?.onChange
|
|
726
|
+
const resolvedValue = ctx?.value ?? [];
|
|
727
|
+
const resolvedOnChange = ctx?.onChange;
|
|
728
728
|
const checked = resolvedValue.includes(value);
|
|
729
729
|
return /* @__PURE__ */ jsx(
|
|
730
730
|
Checkbox,
|
|
@@ -3100,7 +3100,7 @@ function TruncFileName({ children, className }) {
|
|
|
3100
3100
|
const { ref, isTruncated } = useTextOverflow({ lines: 1 });
|
|
3101
3101
|
const el = /* @__PURE__ */ jsx("p", { ref, className: cn("truncate", className), children });
|
|
3102
3102
|
if (!isTruncated) return el;
|
|
3103
|
-
return /* @__PURE__ */ jsx(
|
|
3103
|
+
return /* @__PURE__ */ jsx(AutoTooltip, { content: children, children: el });
|
|
3104
3104
|
}
|
|
3105
3105
|
var PARALLEL = 3;
|
|
3106
3106
|
function formatSize(bytes) {
|
|
@@ -4119,7 +4119,7 @@ var Tag = forwardRef(function Tag2({
|
|
|
4119
4119
|
}
|
|
4120
4120
|
);
|
|
4121
4121
|
if (isTruncated) {
|
|
4122
|
-
return /* @__PURE__ */ jsx(
|
|
4122
|
+
return /* @__PURE__ */ jsx(AutoTooltip, { content: children, children: tag });
|
|
4123
4123
|
}
|
|
4124
4124
|
return tag;
|
|
4125
4125
|
});
|
|
@@ -6057,7 +6057,7 @@ var CardTitle = forwardRef(function CardTitle2({ className, children, lines: lin
|
|
|
6057
6057
|
) : children
|
|
6058
6058
|
}
|
|
6059
6059
|
);
|
|
6060
|
-
return /* @__PURE__ */ jsx(
|
|
6060
|
+
return /* @__PURE__ */ jsx(AutoTooltip, { content: children, disabled: !isTruncated, children: heading });
|
|
6061
6061
|
});
|
|
6062
6062
|
var CardDescription = forwardRef(function CardDescription2({ className, children, lines = 2, ...props }, forwardedRef) {
|
|
6063
6063
|
const { ref: overflowRef, isTruncated } = useTextOverflow({ lines, disabled: lines === 0 });
|
|
@@ -6075,7 +6075,7 @@ var CardDescription = forwardRef(function CardDescription2({ className, children
|
|
|
6075
6075
|
children
|
|
6076
6076
|
}
|
|
6077
6077
|
);
|
|
6078
|
-
return /* @__PURE__ */ jsx(
|
|
6078
|
+
return /* @__PURE__ */ jsx(AutoTooltip, { content: children, disabled: !isTruncated, children: el });
|
|
6079
6079
|
});
|
|
6080
6080
|
var CardContent = forwardRef(function CardContent2({ className, children, ...props }, ref) {
|
|
6081
6081
|
return /* @__PURE__ */ jsx("div", { ref, className: cn("flex-1 px-ds-5 py-ds-4", className), ...props, children });
|
|
@@ -6090,7 +6090,7 @@ function TruncLabel({ children }) {
|
|
|
6090
6090
|
const { ref, isTruncated } = useTextOverflow({ lines: 1 });
|
|
6091
6091
|
const el = /* @__PURE__ */ jsx("span", { ref, className: "block text-xs font-medium text-[var(--ds-text-muted)] uppercase tracking-wider truncate min-w-0", children });
|
|
6092
6092
|
if (!isTruncated) return el;
|
|
6093
|
-
return /* @__PURE__ */ jsx(
|
|
6093
|
+
return /* @__PURE__ */ jsx(AutoTooltip, { content: children, children: el });
|
|
6094
6094
|
}
|
|
6095
6095
|
function StatsCard({ value, label, trend, icon, layout = "card", interactive, onClick, children, className }) {
|
|
6096
6096
|
if (layout === "inline") {
|
|
@@ -6173,7 +6173,7 @@ function TrendBadge({ trend }) {
|
|
|
6173
6173
|
}
|
|
6174
6174
|
);
|
|
6175
6175
|
if (!isTruncated) return badge;
|
|
6176
|
-
return /* @__PURE__ */ jsx(
|
|
6176
|
+
return /* @__PURE__ */ jsx(AutoTooltip, { content: trend.value, children: badge });
|
|
6177
6177
|
}
|
|
6178
6178
|
function DataList({ items, columns = 1, className }) {
|
|
6179
6179
|
return /* @__PURE__ */ jsx(
|
|
@@ -6344,7 +6344,7 @@ var DescriptionList = forwardRef(function DescriptionList2({
|
|
|
6344
6344
|
),
|
|
6345
6345
|
children: [
|
|
6346
6346
|
item.icon && /* @__PURE__ */ jsx(Icon, { name: item.icon, size: s.iconSize, className: "shrink-0" }),
|
|
6347
|
-
item.tooltip ? /* @__PURE__ */ jsx(
|
|
6347
|
+
item.tooltip ? /* @__PURE__ */ jsx(AutoTooltip, { content: item.tooltip, children: /* @__PURE__ */ jsx("span", { className: "cursor-help border-b-[length:var(--ds-border-width)] border-dashed border-[var(--ds-border-default)]", children: item.label }) }) : item.label
|
|
6348
6348
|
]
|
|
6349
6349
|
}
|
|
6350
6350
|
),
|
|
@@ -6389,7 +6389,7 @@ var DescriptionList = forwardRef(function DescriptionList2({
|
|
|
6389
6389
|
),
|
|
6390
6390
|
children: [
|
|
6391
6391
|
item.icon && /* @__PURE__ */ jsx(Icon, { name: item.icon, size: s.iconSize, className: "shrink-0" }),
|
|
6392
|
-
item.tooltip ? /* @__PURE__ */ jsx(
|
|
6392
|
+
item.tooltip ? /* @__PURE__ */ jsx(AutoTooltip, { content: item.tooltip, children: /* @__PURE__ */ jsx("span", { className: "cursor-help border-b-[length:var(--ds-border-width)] border-dashed border-[var(--ds-border-default)]", children: item.label }) }) : item.label
|
|
6393
6393
|
]
|
|
6394
6394
|
}
|
|
6395
6395
|
),
|
|
@@ -6579,7 +6579,7 @@ function TruncCell({ children, lines }) {
|
|
|
6579
6579
|
const clampClass = lines === 1 ? "truncate" : `line-clamp-${lines}`;
|
|
6580
6580
|
const cell = /* @__PURE__ */ jsx("span", { ref, className: cn(clampClass, "block"), children });
|
|
6581
6581
|
if (!isTruncated) return cell;
|
|
6582
|
-
return /* @__PURE__ */ jsx(
|
|
6582
|
+
return /* @__PURE__ */ jsx(AutoTooltip, { content: children, children: cell });
|
|
6583
6583
|
}
|
|
6584
6584
|
var TITLE_CLASSES = TITLE_TEXT;
|
|
6585
6585
|
var FRAME_CLASSES = cn(
|
|
@@ -7630,7 +7630,12 @@ var NEUTRAL = {
|
|
|
7630
7630
|
text: "var(--ds-text-primary)",
|
|
7631
7631
|
edge: "var(--ds-control-edge-strong)"
|
|
7632
7632
|
};
|
|
7633
|
-
|
|
7633
|
+
|
|
7634
|
+
// ../../showcase/src/components/Calendar/styles.ts
|
|
7635
|
+
var TODAY_CIRCLE = "bg-[var(--ds-accent-primary)] [background-image:var(--ds-gradient)] text-[var(--ds-text-on-primary)] font-bold";
|
|
7636
|
+
var CARD_CORNER = "calc(var(--ds-radius-lg) - var(--ds-border-width))";
|
|
7637
|
+
var FLUSH_EDGE = { "data-flush-edge": "" };
|
|
7638
|
+
function EventBar({ event, category, compact, onOpen, inert, showTime = true, continuesBefore, continuesAfter, flushEdge, className, style }) {
|
|
7634
7639
|
const ref = useRef(null);
|
|
7635
7640
|
const colours = eventColours(category);
|
|
7636
7641
|
const words = useDateWords();
|
|
@@ -7673,6 +7678,7 @@ function EventBar({ event, category, compact, onOpen, inert, showTime = true, co
|
|
|
7673
7678
|
ref,
|
|
7674
7679
|
type: "button",
|
|
7675
7680
|
"data-calendar-event": event.id,
|
|
7681
|
+
...flushEdge ? FLUSH_EDGE : {},
|
|
7676
7682
|
className: cn(
|
|
7677
7683
|
"w-full text-left text-xs leading-tight px-ds-1.5 py-ds-0.5",
|
|
7678
7684
|
look,
|
|
@@ -7896,9 +7902,6 @@ function DayList({ day, events, categories, anchor, onOpenEvent, onNewEvent, onC
|
|
|
7896
7902
|
document.body
|
|
7897
7903
|
);
|
|
7898
7904
|
}
|
|
7899
|
-
|
|
7900
|
-
// ../../showcase/src/components/Calendar/styles.ts
|
|
7901
|
-
var TODAY_CIRCLE = "bg-[var(--ds-accent-primary)] [background-image:var(--ds-gradient)] text-[var(--ds-text-on-primary)] font-bold";
|
|
7902
7905
|
var LANES = 3;
|
|
7903
7906
|
var LANE_H = 20;
|
|
7904
7907
|
var LANE_GAP = 4;
|
|
@@ -7958,6 +7961,7 @@ function MonthView({ date, events, categories, selectedDate, onDayClick, canStar
|
|
|
7958
7961
|
if (!activeDay || !isSameDay(day, activeDay)) setActiveDay(day);
|
|
7959
7962
|
},
|
|
7960
7963
|
onClick: (e) => choose(day, e.currentTarget),
|
|
7964
|
+
style: lastRow && di === 0 ? { borderBottomLeftRadius: CARD_CORNER } : lastRow && di === week.length - 1 ? { borderBottomRightRadius: CARD_CORNER } : void 0,
|
|
7961
7965
|
className: cn(
|
|
7962
7966
|
"relative min-h-[80px] sm:min-h-[100px] border-[var(--ds-border-subtle)]",
|
|
7963
7967
|
!lastRow && "border-b-[length:var(--ds-divider-width)]",
|
|
@@ -7990,6 +7994,7 @@ function MonthView({ date, events, categories, selectedDate, onDayClick, canStar
|
|
|
7990
7994
|
onOpen: onOpenEvent,
|
|
7991
7995
|
continuesBefore: s.continuesBefore,
|
|
7992
7996
|
continuesAfter: s.continuesAfter,
|
|
7997
|
+
flushEdge: true,
|
|
7993
7998
|
className: "absolute z-[1] flex items-center",
|
|
7994
7999
|
style: {
|
|
7995
8000
|
top: NUMBER_ROW + s.lane * (LANE_H + LANE_GAP),
|
|
@@ -8008,6 +8013,7 @@ function MonthView({ date, events, categories, selectedDate, onDayClick, canStar
|
|
|
8008
8013
|
"aria-expanded": !!list2 && isSameDay(list2.day, day),
|
|
8009
8014
|
className: cn("absolute z-[1] text-2xs text-[var(--ds-accent-text,var(--ds-accent-primary))] font-medium cursor-pointer hover:underline px-ds-1.5 rounded-[var(--ds-radius-sm)]", FOCUS_RING),
|
|
8010
8015
|
style: { top: NUMBER_ROW + (LANES - 1) * (LANE_H + LANE_GAP), left: INSET, height: LANE_H },
|
|
8016
|
+
...FLUSH_EDGE,
|
|
8011
8017
|
onClick: (e) => {
|
|
8012
8018
|
e.stopPropagation();
|
|
8013
8019
|
openList(day, e.currentTarget);
|
|
@@ -8085,6 +8091,7 @@ function TimedEvent({ placed, category, onOpen, onFocusEvent }) {
|
|
|
8085
8091
|
{
|
|
8086
8092
|
type: "button",
|
|
8087
8093
|
"data-calendar-event": event.id,
|
|
8094
|
+
...FLUSH_EDGE,
|
|
8088
8095
|
"aria-label": eventName(event, category, words),
|
|
8089
8096
|
className: cn(
|
|
8090
8097
|
// a short event keeps its title whole: no padding above and below it
|
|
@@ -8132,7 +8139,10 @@ function WeekView({ date, events, categories, selectedDate, onDayClick, onOpenEv
|
|
|
8132
8139
|
const allDayHeight = Math.max(28, 4 + allDay.lanes * (LANE_H2 + LANE_GAP2) + 2);
|
|
8133
8140
|
const rootRef = useRef(null);
|
|
8134
8141
|
const scrollerRef = useRef(null);
|
|
8142
|
+
const allDayRef = useRef(null);
|
|
8135
8143
|
const syncingScroll = useRef(false);
|
|
8144
|
+
useRevealFocus(allDayRef);
|
|
8145
|
+
useRevealFocus(scrollerRef);
|
|
8136
8146
|
const { ref: edgesRef, measure: measureEdges, fadeProps: edgeFade } = useScrollEdges();
|
|
8137
8147
|
const [list2, setList] = useState(null);
|
|
8138
8148
|
const handleScroll = useCallback((e) => {
|
|
@@ -8265,7 +8275,7 @@ function WeekView({ date, events, categories, selectedDate, onDayClick, onOpenEv
|
|
|
8265
8275
|
] }),
|
|
8266
8276
|
/* @__PURE__ */ jsxs("div", { className: "flex border-b-[length:var(--ds-divider-width)] border-[var(--ds-border-subtle)] bg-[var(--ds-bg-muted)]/30", children: [
|
|
8267
8277
|
/* @__PURE__ */ jsx("div", { className: "w-14 shrink-0 border-r-[length:var(--ds-divider-width)] border-[var(--ds-border-subtle)] text-2xs text-[var(--ds-text-muted)] px-ds-1 py-ds-1 text-right", children: "all-day" }),
|
|
8268
|
-
/* @__PURE__ */ jsx("div", { ...edgeFade, className: "flex-1 overflow-x-auto gs-scrollbar-none", "data-week-scroll": true, children: /* @__PURE__ */ jsx("div", { role: "grid", "aria-label": "All day", "aria-readonly": "true", style: { minWidth: stripWidth }, children: /* @__PURE__ */ jsx("div", { role: "row", className: "grid", style: { gridTemplateColumns: dayGridColumns, height: allDayHeight }, children: days.map((day, i) => {
|
|
8278
|
+
/* @__PURE__ */ jsx("div", { ref: allDayRef, ...edgeFade, className: "flex-1 overflow-x-auto gs-scrollbar-none", style: { ...edgeFade.style, scrollPaddingInline: FADE }, "data-week-scroll": true, children: /* @__PURE__ */ jsx("div", { role: "grid", "aria-label": "All day", "aria-readonly": "true", style: { minWidth: stripWidth }, children: /* @__PURE__ */ jsx("div", { role: "row", className: "grid", style: { gridTemplateColumns: dayGridColumns, height: allDayHeight }, children: days.map((day, i) => {
|
|
8269
8279
|
const key = cellKey(day, null);
|
|
8270
8280
|
const more = allDay.more[i];
|
|
8271
8281
|
return /* @__PURE__ */ jsxs(
|
|
@@ -8281,24 +8291,31 @@ function WeekView({ date, events, categories, selectedDate, onDayClick, onOpenEv
|
|
|
8281
8291
|
onClick: () => onDayClick(day),
|
|
8282
8292
|
className: cn("relative cursor-pointer", FOCUS_INSET, i > 0 && "border-l-[length:var(--ds-divider-width)] border-[var(--ds-border-subtle)]"),
|
|
8283
8293
|
children: [
|
|
8284
|
-
allDay.segments.filter((s) => s.startCol === i).map((s) =>
|
|
8285
|
-
|
|
8286
|
-
|
|
8287
|
-
|
|
8288
|
-
|
|
8289
|
-
|
|
8290
|
-
|
|
8291
|
-
|
|
8292
|
-
|
|
8293
|
-
|
|
8294
|
-
|
|
8295
|
-
|
|
8296
|
-
|
|
8297
|
-
|
|
8298
|
-
|
|
8299
|
-
|
|
8300
|
-
|
|
8301
|
-
|
|
8294
|
+
allDay.segments.filter((s) => s.startCol === i).map((s) => {
|
|
8295
|
+
const start = s.continuesBefore ? 0 : 2;
|
|
8296
|
+
const end = s.continuesAfter ? 0 : 2;
|
|
8297
|
+
return /* @__PURE__ */ jsx(
|
|
8298
|
+
EventBar,
|
|
8299
|
+
{
|
|
8300
|
+
event: s.event,
|
|
8301
|
+
category: categories[s.event.category ?? ""],
|
|
8302
|
+
onOpen: onOpenEvent,
|
|
8303
|
+
continuesBefore: s.continuesBefore,
|
|
8304
|
+
continuesAfter: s.continuesAfter,
|
|
8305
|
+
flushEdge: true,
|
|
8306
|
+
className: "absolute z-[1] flex items-center",
|
|
8307
|
+
style: {
|
|
8308
|
+
top: 2 + s.lane * (LANE_H2 + LANE_GAP2),
|
|
8309
|
+
height: LANE_H2,
|
|
8310
|
+
left: start,
|
|
8311
|
+
// across its days from its own cell's box: the first day's cell has no divider on its left, so
|
|
8312
|
+
// its box is a whole column; a later day's box starts after its divider (Sprint 25.27)
|
|
8313
|
+
width: s.startCol === 0 ? `calc(${s.span} * 100% - ${start + end}px)` : `calc(${s.span} * (100% + var(--ds-divider-width)) - var(--ds-divider-width) - ${start + end}px)`
|
|
8314
|
+
}
|
|
8315
|
+
},
|
|
8316
|
+
`${s.event.id}-${s.startCol}`
|
|
8317
|
+
);
|
|
8318
|
+
}),
|
|
8302
8319
|
more.length > 0 && /* @__PURE__ */ jsxs(
|
|
8303
8320
|
"button",
|
|
8304
8321
|
{
|
|
@@ -8307,6 +8324,7 @@ function WeekView({ date, events, categories, selectedDate, onDayClick, onOpenEv
|
|
|
8307
8324
|
"aria-expanded": !!list2 && isSameDay(list2.day, day),
|
|
8308
8325
|
className: cn("absolute z-[1] text-2xs text-[var(--ds-accent-text,var(--ds-accent-primary))] font-medium cursor-pointer hover:underline px-ds-1.5 rounded-[var(--ds-radius-sm)]", FOCUS_RING),
|
|
8309
8326
|
style: { top: 2 + (ALL_DAY_LANES - 1) * (LANE_H2 + LANE_GAP2), left: 2, height: LANE_H2 },
|
|
8327
|
+
...FLUSH_EDGE,
|
|
8310
8328
|
onClick: (e) => {
|
|
8311
8329
|
e.stopPropagation();
|
|
8312
8330
|
setList({ day, anchor: e.currentTarget });
|
|
@@ -8324,9 +8342,9 @@ function WeekView({ date, events, categories, selectedDate, onDayClick, onOpenEv
|
|
|
8324
8342
|
);
|
|
8325
8343
|
}) }) }) })
|
|
8326
8344
|
] }),
|
|
8327
|
-
/* @__PURE__ */ jsxs("div", { ref: scrollerRef, className: "flex flex-1 min-h-0 overflow-y-auto", "data-week-hours": "", children: [
|
|
8345
|
+
/* @__PURE__ */ jsxs("div", { ref: scrollerRef, className: "flex flex-1 min-h-0 overflow-y-auto", style: { scrollPaddingBlock: FOCUS_ROOM }, "data-week-hours": "", children: [
|
|
8328
8346
|
/* @__PURE__ */ jsx("div", { className: "w-14 shrink-0 relative border-r-[length:var(--ds-divider-width)] border-[var(--ds-border-subtle)]", style: { height: GRID_HEIGHT }, "aria-hidden": "true", children: HOURS.map((h) => /* @__PURE__ */ jsx("div", { className: "absolute right-0 pr-ds-2 text-2xs text-[var(--ds-text-muted)] -translate-y-1/2 tabular-nums", style: { top: h * HOUR_HEIGHT }, children: h > 0 && formatHourLabel(h) }, h)) }),
|
|
8329
|
-
/* @__PURE__ */ jsx("div", { ...edgeFade, className: "flex-1 self-start overflow-x-auto overflow-y-hidden gs-scrollbar-none", style: { height: GRID_HEIGHT }, "data-week-scroll": true, children: /* @__PURE__ */ jsxs("div", { className: "relative", style: { height: GRID_HEIGHT, minWidth: stripWidth }, children: [
|
|
8347
|
+
/* @__PURE__ */ jsx("div", { ...edgeFade, className: "flex-1 self-start overflow-x-auto overflow-y-hidden gs-scrollbar-none", style: { ...edgeFade.style, height: GRID_HEIGHT, scrollPaddingInline: FADE }, "data-week-scroll": true, children: /* @__PURE__ */ jsxs("div", { className: "relative", style: { height: GRID_HEIGHT, minWidth: stripWidth }, children: [
|
|
8330
8348
|
/* @__PURE__ */ jsx("div", { role: "grid", "aria-label": formatWeekRange(date, weekStartsOn), "aria-readonly": "true", className: "absolute inset-0", children: HOURS.map((hour) => /* @__PURE__ */ jsx("div", { role: "row", className: "grid", style: { gridTemplateColumns: dayGridColumns, height: HOUR_HEIGHT }, children: days.map((day, i) => {
|
|
8331
8349
|
const key = cellKey(day, hour);
|
|
8332
8350
|
return /* @__PURE__ */ jsx(
|
|
@@ -8340,6 +8358,7 @@ function WeekView({ date, events, categories, selectedDate, onDayClick, onOpenEv
|
|
|
8340
8358
|
if (activeKey !== key) setActiveKey(key);
|
|
8341
8359
|
},
|
|
8342
8360
|
onClick: chooseHour(day, hour),
|
|
8361
|
+
style: hour === HOURS.length - 1 && i === days.length - 1 ? { borderBottomRightRadius: CARD_CORNER } : void 0,
|
|
8343
8362
|
className: cn(
|
|
8344
8363
|
"cursor-pointer border-t-[length:var(--ds-divider-width)] border-[var(--ds-border-subtle)] hover:bg-[var(--ds-bg-muted)]/40",
|
|
8345
8364
|
FOCUS_INSET,
|
|
@@ -8481,6 +8500,7 @@ function MonthRow({
|
|
|
8481
8500
|
{
|
|
8482
8501
|
type: "button",
|
|
8483
8502
|
"aria-label": `${words.monthName(month, "short")} ${year}`,
|
|
8503
|
+
style: month === 11 ? { borderBottomLeftRadius: CARD_CORNER } : void 0,
|
|
8484
8504
|
className: cn(
|
|
8485
8505
|
"sticky left-0 z-10 flex items-center justify-center px-ds-2 text-xs font-semibold text-[var(--ds-text-primary)]",
|
|
8486
8506
|
"bg-[var(--ds-bg-muted)] cursor-pointer hover:text-[var(--ds-accent-ink)] transition-colors",
|
|
@@ -9240,7 +9260,7 @@ function Calendar({
|
|
|
9240
9260
|
"bg-[var(--ds-bg-muted)]",
|
|
9241
9261
|
"border-b-[length:var(--ds-divider-width)] border-[var(--ds-border-subtle)]"
|
|
9242
9262
|
),
|
|
9243
|
-
style: { padding: "var(--ds-space-1)
|
|
9263
|
+
style: { padding: atLeastFocusRoom("var(--ds-space-1)") },
|
|
9244
9264
|
children: [
|
|
9245
9265
|
/* @__PURE__ */ jsx(
|
|
9246
9266
|
"button",
|
|
@@ -9458,9 +9478,9 @@ function AvatarGroup({ items, max = 4, size = "sm", ring = "canvas", onOverflowC
|
|
|
9458
9478
|
},
|
|
9459
9479
|
i
|
|
9460
9480
|
);
|
|
9461
|
-
return item.name ? /* @__PURE__ */ jsx(
|
|
9481
|
+
return item.name ? /* @__PURE__ */ jsx(AutoTooltip, { content: item.name, children: avatar }, i) : avatar;
|
|
9462
9482
|
}),
|
|
9463
|
-
counter && (onOverflowClick ? /* @__PURE__ */ jsx("button", { type: "button", onClick: onOverflowClick, "aria-label": `Show ${hidden.length} more`, className: cn("inline-flex rounded-[var(--ds-radius-full)]", FOCUS_RING), children: hiddenNames ? /* @__PURE__ */ jsx(
|
|
9483
|
+
counter && (onOverflowClick ? /* @__PURE__ */ jsx("button", { type: "button", onClick: onOverflowClick, "aria-label": `Show ${hidden.length} more`, className: cn("inline-flex rounded-[var(--ds-radius-full)]", FOCUS_RING), children: hiddenNames ? /* @__PURE__ */ jsx(AutoTooltip, { content: hiddenNames, children: counter }) : counter }) : hiddenNames ? /* @__PURE__ */ jsx(AutoTooltip, { content: hiddenNames, children: counter }) : counter)
|
|
9464
9484
|
] });
|
|
9465
9485
|
}
|
|
9466
9486
|
var defaultIcons = {
|
|
@@ -9907,7 +9927,7 @@ function TruncLabel2({ children }) {
|
|
|
9907
9927
|
const { ref, isTruncated } = useTextOverflow({ lines: 1 });
|
|
9908
9928
|
const label = /* @__PURE__ */ jsx("span", { ref, className: "truncate", children });
|
|
9909
9929
|
if (!isTruncated) return label;
|
|
9910
|
-
return /* @__PURE__ */ jsx(
|
|
9930
|
+
return /* @__PURE__ */ jsx(AutoTooltip, { content: children, children: label });
|
|
9911
9931
|
}
|
|
9912
9932
|
function foldersHolding(nodes, selected) {
|
|
9913
9933
|
const ids = [];
|
|
@@ -10423,7 +10443,7 @@ function ActionsRow({ message, onAction }) {
|
|
|
10423
10443
|
),
|
|
10424
10444
|
children: message.actions.map((a) => {
|
|
10425
10445
|
const { id, label, icon } = resolveAction(a);
|
|
10426
|
-
return /* @__PURE__ */ jsx(
|
|
10446
|
+
return /* @__PURE__ */ jsx(AutoTooltip, { content: label, children: /* @__PURE__ */ jsx(Button, { type: "button", variant: "ghost", size: "icon-xs", "aria-label": label, onClick: () => run(id), children: /* @__PURE__ */ jsx(Icon, { name: icon, size: 14 }) }) }, id);
|
|
10427
10447
|
})
|
|
10428
10448
|
}
|
|
10429
10449
|
);
|
|
@@ -10739,15 +10759,15 @@ function ChatPanel({
|
|
|
10739
10759
|
),
|
|
10740
10760
|
/* @__PURE__ */ jsxs("div", { className: "min-w-0 flex-1", children: [
|
|
10741
10761
|
/* @__PURE__ */ jsxs("div", { className: "flex min-w-0 items-center gap-ds-2", children: [
|
|
10742
|
-
isTruncated ? /* @__PURE__ */ jsx(
|
|
10762
|
+
isTruncated ? /* @__PURE__ */ jsx(AutoTooltip, { content: title, children: heading }) : heading,
|
|
10743
10763
|
status && /* @__PURE__ */ jsx(StatusDot, { variant: STATUS_VARIANT[status.tone ?? "success"], label: status.label })
|
|
10744
10764
|
] }),
|
|
10745
10765
|
description && /* @__PURE__ */ jsx("p", { className: "truncate text-xs text-[var(--ds-text-muted)]", children: description })
|
|
10746
10766
|
] }),
|
|
10747
10767
|
/* @__PURE__ */ jsxs("div", { className: "flex shrink-0 items-center gap-ds-1", children: [
|
|
10748
10768
|
actions,
|
|
10749
|
-
onNewConversation && /* @__PURE__ */ jsx(
|
|
10750
|
-
onExpandedChange && /* @__PURE__ */ jsx(
|
|
10769
|
+
onNewConversation && /* @__PURE__ */ jsx(AutoTooltip, { content: "New conversation", children: /* @__PURE__ */ jsx(Button, { type: "button", variant: "ghost", size: "icon-sm", "aria-label": "New conversation", onClick: onNewConversation, children: /* @__PURE__ */ jsx(Icon, { name: "plus", size: 16 }) }) }),
|
|
10770
|
+
onExpandedChange && /* @__PURE__ */ jsx(AutoTooltip, { content: expanded ? "Collapse" : "Expand", children: /* @__PURE__ */ jsx(
|
|
10751
10771
|
Button,
|
|
10752
10772
|
{
|
|
10753
10773
|
type: "button",
|
|
@@ -10759,7 +10779,7 @@ function ChatPanel({
|
|
|
10759
10779
|
children: /* @__PURE__ */ jsx(Icon, { name: expanded ? "minimize-2" : "maximize-2", size: 16 })
|
|
10760
10780
|
}
|
|
10761
10781
|
) }),
|
|
10762
|
-
/* @__PURE__ */ jsx(
|
|
10782
|
+
/* @__PURE__ */ jsx(AutoTooltip, { content: "Close", children: /* @__PURE__ */ jsx(Button, { type: "button", variant: "ghost", size: "icon-sm", "aria-label": "Close", onClick: onClose, ...{ [OVERLAY_CLOSE_ATTR]: "" }, children: /* @__PURE__ */ jsx(Icon, { name: "close", size: 16 }) }) })
|
|
10763
10783
|
] })
|
|
10764
10784
|
]
|
|
10765
10785
|
}
|
|
@@ -10775,58 +10795,6 @@ function ChatPanel({
|
|
|
10775
10795
|
)
|
|
10776
10796
|
] });
|
|
10777
10797
|
}
|
|
10778
|
-
var TOAST_INSET_VARS = {
|
|
10779
|
-
"bottom-right": "--ds-toast-inset-bottom-right",
|
|
10780
|
-
"bottom-left": "--ds-toast-inset-bottom-left",
|
|
10781
|
-
right: "--ds-toast-inset-right",
|
|
10782
|
-
left: "--ds-toast-inset-left",
|
|
10783
|
-
top: "--ds-toast-inset-top"
|
|
10784
|
-
};
|
|
10785
|
-
var LAUNCHER_INSET_PRIORITY = 1;
|
|
10786
|
-
var PANEL_INSET_PRIORITY = 2;
|
|
10787
|
-
var NAVBAR_INSET_PRIORITY = 1;
|
|
10788
|
-
var registry = /* @__PURE__ */ new WeakMap();
|
|
10789
|
-
var seq = 0;
|
|
10790
|
-
function claimsFor(target) {
|
|
10791
|
-
let entry = registry.get(target);
|
|
10792
|
-
if (!entry) {
|
|
10793
|
-
entry = { "bottom-right": [], "bottom-left": [], right: [], left: [], top: [] };
|
|
10794
|
-
registry.set(target, entry);
|
|
10795
|
-
}
|
|
10796
|
-
return entry;
|
|
10797
|
-
}
|
|
10798
|
-
function winner(claims) {
|
|
10799
|
-
let best = null;
|
|
10800
|
-
for (const c of claims) {
|
|
10801
|
-
if (!best || c.priority > best.priority || c.priority === best.priority && c.seq > best.seq) best = c;
|
|
10802
|
-
}
|
|
10803
|
-
return best;
|
|
10804
|
-
}
|
|
10805
|
-
function apply(target, corner) {
|
|
10806
|
-
const style = target.style;
|
|
10807
|
-
if (!style) return;
|
|
10808
|
-
const best = winner(claimsFor(target)[corner]);
|
|
10809
|
-
if (best) style.setProperty(TOAST_INSET_VARS[corner], best.inset);
|
|
10810
|
-
else style.removeProperty(TOAST_INSET_VARS[corner]);
|
|
10811
|
-
}
|
|
10812
|
-
function claimCornerInset(corner, inset, priority, target) {
|
|
10813
|
-
const claim = { inset, priority, seq: ++seq };
|
|
10814
|
-
const list2 = claimsFor(target)[corner];
|
|
10815
|
-
list2.push(claim);
|
|
10816
|
-
apply(target, corner);
|
|
10817
|
-
return () => {
|
|
10818
|
-
const i = list2.indexOf(claim);
|
|
10819
|
-
if (i >= 0) list2.splice(i, 1);
|
|
10820
|
-
apply(target, corner);
|
|
10821
|
-
};
|
|
10822
|
-
}
|
|
10823
|
-
function useCornerInset(corner, inset, priority, target) {
|
|
10824
|
-
useEffect(() => {
|
|
10825
|
-
if (!corner || !inset) return;
|
|
10826
|
-
const el = target ?? document.documentElement;
|
|
10827
|
-
return claimCornerInset(corner, inset, priority, el);
|
|
10828
|
-
}, [corner, inset, priority, target]);
|
|
10829
|
-
}
|
|
10830
10798
|
function Sheet({ open, onClose: onCloseProp, title, children, footer, dirty, onDiscard, snapPoints = [0.5, 0.92], container, flush, keepMounted = false, id, labelledBy }) {
|
|
10831
10799
|
const { marked, mark } = useOverlayMark(open);
|
|
10832
10800
|
const guard = useDirtyGuard(dirty ?? marked, onCloseProp, onDiscard);
|
|
@@ -10915,7 +10883,7 @@ function CornerWindow({ open, onClose, edge, align, width, height, offset, ancho
|
|
|
10915
10883
|
const containerEl = container instanceof Element ? container : null;
|
|
10916
10884
|
useCornerInset(
|
|
10917
10885
|
open && mounted && !expanded ? claim : null,
|
|
10918
|
-
vertical === "bottom" ? `calc(${bottom} + ${height} + var(--ds-space-3))` : `calc(${x} + ${width} + var(--ds-space-3))
|
|
10886
|
+
vertical === "bottom" ? `calc(${bottom} + ${height} + var(--ds-space-3))` : besideRoom(`calc(${x} + ${width} + var(--ds-space-3))`),
|
|
10919
10887
|
PANEL_INSET_PRIORITY,
|
|
10920
10888
|
containerEl
|
|
10921
10889
|
);
|
|
@@ -11052,7 +11020,7 @@ function DockedColumn({ open, onClose, side, width, floating, navbarFloating, si
|
|
|
11052
11020
|
});
|
|
11053
11021
|
useCornerInset(
|
|
11054
11022
|
open && mounted ? side : null,
|
|
11055
|
-
floating ? `calc(${currentWidth} + ${GUTTER} + var(--ds-space-4))` : `calc(${currentWidth} + var(--ds-space-4))
|
|
11023
|
+
besideRoom(floating ? `calc(${currentWidth} + ${GUTTER} + var(--ds-space-4))` : `calc(${currentWidth} + var(--ds-space-4))`),
|
|
11056
11024
|
PANEL_INSET_PRIORITY
|
|
11057
11025
|
);
|
|
11058
11026
|
if (!mounted) return null;
|
|
@@ -11120,30 +11088,20 @@ function TruncText({ children, className }) {
|
|
|
11120
11088
|
const { ref, isTruncated } = useTextOverflow({ lines: 1 });
|
|
11121
11089
|
const text = /* @__PURE__ */ jsx("p", { ref, className: cn("truncate", className), children });
|
|
11122
11090
|
if (!isTruncated) return text;
|
|
11123
|
-
return /* @__PURE__ */ jsx(
|
|
11091
|
+
return /* @__PURE__ */ jsx(AutoTooltip, { content: children, children: text });
|
|
11124
11092
|
}
|
|
11125
|
-
var warnedLegacyProps = false;
|
|
11126
11093
|
var StackedList = forwardRef(function StackedList2({
|
|
11127
11094
|
items,
|
|
11128
11095
|
divided = true,
|
|
11129
|
-
variant
|
|
11096
|
+
variant = "list",
|
|
11130
11097
|
selectedId,
|
|
11131
11098
|
className,
|
|
11132
|
-
flush,
|
|
11133
|
-
hover,
|
|
11134
11099
|
pager
|
|
11135
11100
|
}, ref) {
|
|
11136
11101
|
useScrollsInside();
|
|
11137
11102
|
const isPhone = useBreakpoint("sm");
|
|
11138
11103
|
const inCard = useContext(CardSurfaceCtx);
|
|
11139
11104
|
const inPane = !!useContext(SplitPaneCtx);
|
|
11140
|
-
const variant = variantProp ?? (flush || hover === "title" ? "articles" : "list");
|
|
11141
|
-
const legacy = flush !== void 0 || hover !== void 0;
|
|
11142
|
-
useEffect(() => {
|
|
11143
|
-
if (!legacy || warnedLegacyProps) return;
|
|
11144
|
-
warnedLegacyProps = true;
|
|
11145
|
-
console.warn('StackedList: `flush` and `hover` are deprecated \u2014 pass variant="articles" for an article list; the default variant takes its inset from the pane or card it sits in.');
|
|
11146
|
-
}, [legacy]);
|
|
11147
11105
|
const articles = variant === "articles";
|
|
11148
11106
|
useWholeListCheck("StackedList", items.length, pager);
|
|
11149
11107
|
const shown = pagerPart(items, pager);
|
|
@@ -12864,14 +12822,29 @@ function Launcher({
|
|
|
12864
12822
|
const y = offset?.y ?? DEFAULT_OFFSET2;
|
|
12865
12823
|
const boxSize = launcherSize(size);
|
|
12866
12824
|
const onOpenChangeRef = useLatest(onOpenChange);
|
|
12867
|
-
const
|
|
12825
|
+
const [buttonEl, setButtonEl] = useState(null);
|
|
12826
|
+
const [ribbonBox, setRibbonBox] = useState(null);
|
|
12827
|
+
useEffect(() => {
|
|
12828
|
+
if (!isRibbon || !buttonEl || typeof ResizeObserver === "undefined") return;
|
|
12829
|
+
const ro = new ResizeObserver(([entry]) => {
|
|
12830
|
+
const el = entry?.target ?? buttonEl;
|
|
12831
|
+
const width = el.offsetWidth;
|
|
12832
|
+
const height = el.offsetHeight;
|
|
12833
|
+
setRibbonBox((b) => width === 0 && height === 0 ? null : b && b.width === width && b.height === height ? b : { width, height });
|
|
12834
|
+
});
|
|
12835
|
+
ro.observe(buttonEl);
|
|
12836
|
+
return () => ro.disconnect();
|
|
12837
|
+
}, [isRibbon, buttonEl]);
|
|
12838
|
+
const cornerOfSide = side === "right" ? "bottom-right" : "bottom-left";
|
|
12839
|
+
const above = (from, height) => `calc(${from} + env(safe-area-inset-bottom) + ${height} + var(--ds-space-3))`;
|
|
12840
|
+
const claims = !isRibbon ? [[cornerOfSide, above(y, boxSize)]] : !ribbonBox ? [] : bottomRibbon ? (align === "end" ? ["bottom-right"] : ["bottom-right", "bottom-left", "bottom-center"]).map((e) => [e, above("0px", `${ribbonBox.height}px`)]) : align === "end" ? [[cornerOfSide, above(y, `${ribbonBox.height}px`)]] : [[side, `calc(env(safe-area-inset-${side}) + ${ribbonBox.width}px + var(--ds-space-3))`]];
|
|
12841
|
+
const register = useAppShell()?.registerLauncher;
|
|
12842
|
+
const padded = isRibbon ? null : cornerOfSide;
|
|
12843
|
+
useEffect(() => mounted && register ? register(padded) : void 0, [mounted, register, padded]);
|
|
12868
12844
|
const containerEl = container instanceof Element ? container : null;
|
|
12869
|
-
useCornerInset(
|
|
12870
|
-
|
|
12871
|
-
|
|
12872
|
-
LAUNCHER_INSET_PRIORITY,
|
|
12873
|
-
containerEl
|
|
12874
|
-
);
|
|
12845
|
+
useCornerInset(mounted ? claims[0]?.[0] ?? null : null, claims[0]?.[1] ?? null, LAUNCHER_INSET_PRIORITY, containerEl);
|
|
12846
|
+
useCornerInset(mounted ? claims[1]?.[0] ?? null : null, claims[1]?.[1] ?? null, LAUNCHER_INSET_PRIORITY, containerEl);
|
|
12847
|
+
useCornerInset(mounted ? claims[2]?.[0] ?? null : null, claims[2]?.[1] ?? null, LAUNCHER_INSET_PRIORITY, containerEl);
|
|
12875
12848
|
useEffect(() => {
|
|
12876
12849
|
if (container) return;
|
|
12877
12850
|
bodyLaunchers++;
|
|
@@ -12932,6 +12905,7 @@ function Launcher({
|
|
|
12932
12905
|
const button = /* @__PURE__ */ jsxs(
|
|
12933
12906
|
"button",
|
|
12934
12907
|
{
|
|
12908
|
+
ref: setButtonEl,
|
|
12935
12909
|
type: "button",
|
|
12936
12910
|
"aria-label": accessibleName,
|
|
12937
12911
|
"aria-expanded": open,
|
|
@@ -13006,7 +12980,7 @@ function Launcher({
|
|
|
13006
12980
|
}
|
|
13007
12981
|
);
|
|
13008
12982
|
const content = variant === "bubble" ? /* @__PURE__ */ jsx(
|
|
13009
|
-
|
|
12983
|
+
AutoTooltip,
|
|
13010
12984
|
{
|
|
13011
12985
|
container,
|
|
13012
12986
|
content: /* @__PURE__ */ jsxs("span", { className: "inline-flex items-center gap-ds-2", children: [
|
|
@@ -13221,7 +13195,7 @@ function TabButton({
|
|
|
13221
13195
|
]
|
|
13222
13196
|
}
|
|
13223
13197
|
);
|
|
13224
|
-
if (isTruncated) return /* @__PURE__ */ jsx(
|
|
13198
|
+
if (isTruncated) return /* @__PURE__ */ jsx(AutoTooltip, { content: label, children: btn2 });
|
|
13225
13199
|
return btn2;
|
|
13226
13200
|
}
|
|
13227
13201
|
const btn = /* @__PURE__ */ jsx(
|
|
@@ -13264,7 +13238,7 @@ function TabButton({
|
|
|
13264
13238
|
] })
|
|
13265
13239
|
}
|
|
13266
13240
|
);
|
|
13267
|
-
if (isTruncated) return /* @__PURE__ */ jsx(
|
|
13241
|
+
if (isTruncated) return /* @__PURE__ */ jsx(AutoTooltip, { content: label, children: btn });
|
|
13268
13242
|
return btn;
|
|
13269
13243
|
}
|
|
13270
13244
|
function TabsList({ children, className }) {
|
|
@@ -13926,7 +13900,7 @@ var Sidebar = forwardRef(function Sidebar2({
|
|
|
13926
13900
|
]
|
|
13927
13901
|
}
|
|
13928
13902
|
);
|
|
13929
|
-
return collapsed ? /* @__PURE__ */ jsx(
|
|
13903
|
+
return collapsed ? /* @__PURE__ */ jsx(AutoTooltip, { content: "Expand sidebar", side: "right", delay: 100, container: portalEl ?? void 0, children: collapseButton }) : collapseButton;
|
|
13930
13904
|
})(),
|
|
13931
13905
|
footer && /* @__PURE__ */ jsx(
|
|
13932
13906
|
"div",
|
|
@@ -13981,7 +13955,7 @@ function TruncLabel3({ children, className, side = "right", container, lines = 1
|
|
|
13981
13955
|
const clampClass = lines <= 1 ? "truncate" : clampMap[lines] ?? "truncate";
|
|
13982
13956
|
const label = /* @__PURE__ */ jsx("span", { ref, className: cn(clampClass, className), children });
|
|
13983
13957
|
if (!isTruncated) return label;
|
|
13984
|
-
return /* @__PURE__ */ jsx(
|
|
13958
|
+
return /* @__PURE__ */ jsx(AutoTooltip, { content: children, side, delay: 200, container, children: label });
|
|
13985
13959
|
}
|
|
13986
13960
|
var isActive = (item) => !!item.active;
|
|
13987
13961
|
function collectInitialExpanded(items, prefix = "") {
|
|
@@ -14206,7 +14180,7 @@ function SidebarNav({
|
|
|
14206
14180
|
}
|
|
14207
14181
|
);
|
|
14208
14182
|
if (collapsed && isRoot) {
|
|
14209
|
-
return /* @__PURE__ */ jsx(
|
|
14183
|
+
return /* @__PURE__ */ jsx(AutoTooltip, { content: item.label, side: "right", delay: 100, container: portalContainer ?? void 0, children: link }, item.label);
|
|
14210
14184
|
}
|
|
14211
14185
|
return /* @__PURE__ */ jsx("div", { children: link }, item.label);
|
|
14212
14186
|
}
|
|
@@ -14561,13 +14535,16 @@ var variantIcons = {
|
|
|
14561
14535
|
warning: { name: "warning", className: "text-[var(--ds-status-warning)]" },
|
|
14562
14536
|
error: { name: "error", className: "text-[var(--ds-status-error)]" }
|
|
14563
14537
|
};
|
|
14538
|
+
var RIGHT_ROOM = "max-w-[calc(100%_-_var(--ds-toast-inset-right)_-_var(--ds-space-4))]";
|
|
14539
|
+
var LEFT_ROOM = "max-w-[calc(100%_-_var(--ds-toast-inset-left)_-_var(--ds-space-4))]";
|
|
14540
|
+
var CENTRED = "left-[max(calc(var(--ds-toast-inset-left)_+_180px),calc(var(--ds-toast-inset-left)_+_(100%_-_var(--ds-toast-inset-left)_-_var(--ds-toast-inset-right))_/_2))] -translate-x-1/2 max-w-[max(360px,calc(100%_-_var(--ds-toast-inset-left)_-_var(--ds-toast-inset-right)))]";
|
|
14564
14541
|
var TOAST_POSITION_CLASSES = {
|
|
14565
|
-
"top-right":
|
|
14566
|
-
"top-left":
|
|
14567
|
-
"bottom-right":
|
|
14568
|
-
"bottom-left":
|
|
14569
|
-
"top-center":
|
|
14570
|
-
"bottom-center":
|
|
14542
|
+
"top-right": `top-[var(--ds-toast-inset-top)] right-[var(--ds-toast-inset-right)] ${RIGHT_ROOM}`,
|
|
14543
|
+
"top-left": `top-[var(--ds-toast-inset-top)] left-[var(--ds-toast-inset-left)] ${LEFT_ROOM}`,
|
|
14544
|
+
"bottom-right": `bottom-[var(--ds-toast-inset-bottom-right)] right-[var(--ds-toast-inset-right)] ${RIGHT_ROOM}`,
|
|
14545
|
+
"bottom-left": `bottom-[var(--ds-toast-inset-bottom-left)] left-[var(--ds-toast-inset-left)] ${LEFT_ROOM}`,
|
|
14546
|
+
"top-center": `top-[var(--ds-toast-inset-top)] ${CENTRED}`,
|
|
14547
|
+
"bottom-center": `bottom-[var(--ds-toast-inset-bottom-center)] ${CENTRED}`
|
|
14571
14548
|
};
|
|
14572
14549
|
var finite = (ms) => typeof ms === "number" && Number.isFinite(ms) && ms > 0;
|
|
14573
14550
|
function Toast({ variant = "default", message, visible, onDismiss, duration = 5e3, pauseOnHover = false, action, actionWindow, position = "bottom-right", mode, container, inline = false, paused = false, onActionLapse, onAction, restartKey = 0 }) {
|
|
@@ -15472,13 +15449,13 @@ function TruncHeading({ as: Tag3 = "h1", className, children, lines: linesProp }
|
|
|
15472
15449
|
const { ref, isTruncated } = useTextOverflow({ lines });
|
|
15473
15450
|
const heading = /* @__PURE__ */ jsx(Tag3, { ref, className: cn(lines === 2 ? "line-clamp-2" : "truncate", className), children });
|
|
15474
15451
|
if (!isTruncated) return heading;
|
|
15475
|
-
return /* @__PURE__ */ jsx(
|
|
15452
|
+
return /* @__PURE__ */ jsx(AutoTooltip, { content: children, children: heading });
|
|
15476
15453
|
}
|
|
15477
15454
|
function ClampedText({ children, className }) {
|
|
15478
15455
|
const { ref, isTruncated } = useTextOverflow({ lines: 2 });
|
|
15479
15456
|
const el = /* @__PURE__ */ jsx("p", { ref, className: cn("line-clamp-2", className), children });
|
|
15480
15457
|
if (!isTruncated) return el;
|
|
15481
|
-
return /* @__PURE__ */ jsx(
|
|
15458
|
+
return /* @__PURE__ */ jsx(AutoTooltip, { content: children, children: el });
|
|
15482
15459
|
}
|
|
15483
15460
|
function findScrollParent(el) {
|
|
15484
15461
|
let node = el.parentElement;
|
|
@@ -16535,8 +16512,9 @@ function Dock({
|
|
|
16535
16512
|
}
|
|
16536
16513
|
);
|
|
16537
16514
|
}
|
|
16515
|
+
var NAV_ITEM_TYPES = /* @__PURE__ */ new Set(["tint", "underline", "minimal", "pill"]);
|
|
16538
16516
|
function resolveNavItemType(type) {
|
|
16539
|
-
return type
|
|
16517
|
+
return type !== void 0 && NAV_ITEM_TYPES.has(type) ? type : "tint";
|
|
16540
16518
|
}
|
|
16541
16519
|
var NavbarTypeContext = createContext("tint");
|
|
16542
16520
|
var NavItem = forwardRef(function NavItem2({ label, icon, active = false, href, onClick, type: typeProp, className, children }, ref) {
|
|
@@ -16606,7 +16584,7 @@ function TruncSpan({ children, className }) {
|
|
|
16606
16584
|
const { ref, isTruncated } = useTextOverflow({ lines: 1 });
|
|
16607
16585
|
const el = /* @__PURE__ */ jsx("span", { ref, className: cn("truncate", className), children });
|
|
16608
16586
|
if (!isTruncated) return el;
|
|
16609
|
-
return /* @__PURE__ */ jsx(
|
|
16587
|
+
return /* @__PURE__ */ jsx(AutoTooltip, { content: children, children: el });
|
|
16610
16588
|
}
|
|
16611
16589
|
function NavMenu({
|
|
16612
16590
|
label,
|
|
@@ -17567,13 +17545,13 @@ function TruncTitle({ children }) {
|
|
|
17567
17545
|
const { ref, isTruncated } = useTextOverflow({ lines: 1 });
|
|
17568
17546
|
const el = /* @__PURE__ */ jsx("span", { ref, className: "truncate", children });
|
|
17569
17547
|
if (!isTruncated) return el;
|
|
17570
|
-
return /* @__PURE__ */ jsx(
|
|
17548
|
+
return /* @__PURE__ */ jsx(AutoTooltip, { content: children, children: el });
|
|
17571
17549
|
}
|
|
17572
17550
|
function ClampedDesc({ children, className }) {
|
|
17573
17551
|
const { ref, isTruncated } = useTextOverflow({ lines: 2 });
|
|
17574
17552
|
const el = /* @__PURE__ */ jsx("p", { ref, className: cn("line-clamp-2", className), children });
|
|
17575
17553
|
if (!isTruncated) return el;
|
|
17576
|
-
return /* @__PURE__ */ jsx(
|
|
17554
|
+
return /* @__PURE__ */ jsx(AutoTooltip, { content: children, children: el });
|
|
17577
17555
|
}
|
|
17578
17556
|
function NotificationCenter({
|
|
17579
17557
|
notifications,
|
|
@@ -18729,7 +18707,7 @@ var TextOverflow = forwardRef(function TextOverflow2({
|
|
|
18729
18707
|
}
|
|
18730
18708
|
);
|
|
18731
18709
|
}
|
|
18732
|
-
return /* @__PURE__ */ jsx(
|
|
18710
|
+
return /* @__PURE__ */ jsx(AutoTooltip, { content: resolvedTooltipContent, children: content });
|
|
18733
18711
|
});
|
|
18734
18712
|
|
|
18735
18713
|
export { Accordion, ActionPanel, ActionPanelGroup, AddAnother, Alert, AsidePanel, AvatarGroup, BottomNav, BulkActionBar, Calendar, Card, CardContent, CardDescription, CardFooter, CardGrid, CardHeader, CardTitle, Carousel, ChatMessageList, ChatPanel, Checkbox, CheckboxGroup, CheckboxGroupItem, Collapsible, CollapsibleContent, CollapsibleTrigger, ColorPicker, Combobox, CommandPalette, ContextMenu, CornerPanel, DEFAULT_DATE_RANGE_PRESETS, DangerZone, DataList, DatePicker, DateRangePicker, DescriptionList, Dialog, Dock, DropdownMenu, EmptyState, EntityCell, FileUpload, FlowSaved, FormWrapper, Gantt, HoverCard, Kbd, Launcher, LocaleProvider, MentionInput, MobileHeaderMenu, NavItem, NavMenu, Navbar, NotificationCenter, PageActions, PageContainer, PageHeader, PinInput, Progress, RadioGroup, Rating, RecurrencePicker, RecurrenceScopeDialog, RelativeTime, ScrollArea, SectionHeading, SegmentedControl, SettingsLayout, Sheet, Sidebar, SidebarNav, SliderRange, StackedList, StatsCard, StatusDot, Stepper, TIME_ZOOMS, Table, TableToolbar, Tabs, TabsContent, TabsList, TabsTrigger, Tag, TagInput, TextOverflow, TimeBar, TimePicker, TimeRow, TimeScaleHeader, TimeViewport, Timeline, TimezoneSelect, Toast, ToastProvider, Tour, TransferList, TreeView, browserTimeZone, canonicalTimeZone, countEdited, dateOfDay, dayOf, deleteOccurrence, describeRecurrence, endDayOf, fitLabel, fitLabels, formatDateRange, nthOf, occurrenceOn, occurrences, parseRRule, readFlowProgress, readRecurrence, recurrencePresets, sameRecurrence, saveOccurrence, timeExtent, timeZoneOffset, toRRule, useBrowserTimeZone, useContentWidth, useDestructiveAction, useFittedLabels, useFlowSteps, useRelativeTimeFormat, useSidebar, useTextMeasure, useTimeScale, useTimeViewport, useTimeViewportLayout, useToast, useToastOptional };
|