@camunda/design-system 0.59.0 → 0.60.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/carbon-compat/filterable-multi-select.d.ts.map +1 -1
- package/dist/carbon-compat/filterable-multi-select.js +6 -1
- package/dist/carbon-compat/filterable-multi-select.js.map +1 -1
- package/dist/carbon-compat/multi-select.d.ts.map +1 -1
- package/dist/carbon-compat/multi-select.js +5 -1
- package/dist/carbon-compat/multi-select.js.map +1 -1
- package/dist/src/components/ui/alert-dialog.d.ts +11 -1
- package/dist/src/components/ui/alert-dialog.d.ts.map +1 -1
- package/dist/src/components/ui/alert-dialog.js +5 -4
- package/dist/src/components/ui/alert-dialog.js.map +1 -1
- package/dist/src/components/ui/alert.d.ts +1 -1
- package/dist/src/components/ui/alert.d.ts.map +1 -1
- package/dist/src/components/ui/alert.js +3 -1
- package/dist/src/components/ui/alert.js.map +1 -1
- package/dist/src/components/ui/app-sidebar.d.ts.map +1 -1
- package/dist/src/components/ui/app-sidebar.js +57 -16
- package/dist/src/components/ui/app-sidebar.js.map +1 -1
- package/dist/src/components/ui/card.d.ts.map +1 -1
- package/dist/src/components/ui/card.js +15 -1
- package/dist/src/components/ui/card.js.map +1 -1
- package/dist/src/components/ui/code-block.d.ts.map +1 -1
- package/dist/src/components/ui/code-block.js +1 -13
- package/dist/src/components/ui/code-block.js.map +1 -1
- package/dist/src/components/ui/combobox.d.ts.map +1 -1
- package/dist/src/components/ui/combobox.js +48 -15
- package/dist/src/components/ui/combobox.js.map +1 -1
- package/dist/src/components/ui/date-range-picker.d.ts.map +1 -1
- package/dist/src/components/ui/date-range-picker.js +20 -1
- package/dist/src/components/ui/date-range-picker.js.map +1 -1
- package/dist/src/components/ui/dialog.d.ts +18 -2
- package/dist/src/components/ui/dialog.d.ts.map +1 -1
- package/dist/src/components/ui/dialog.js +9 -6
- package/dist/src/components/ui/dialog.js.map +1 -1
- package/dist/src/components/ui/file-uploader.d.ts.map +1 -1
- package/dist/src/components/ui/file-uploader.js +21 -2
- package/dist/src/components/ui/file-uploader.js.map +1 -1
- package/dist/src/components/ui/form-error-summary.d.ts +13 -0
- package/dist/src/components/ui/form-error-summary.d.ts.map +1 -0
- package/dist/src/components/ui/form-error-summary.js +53 -0
- package/dist/src/components/ui/form-error-summary.js.map +1 -0
- package/dist/src/components/ui/inline-edit.d.ts.map +1 -1
- package/dist/src/components/ui/inline-edit.js +14 -1
- package/dist/src/components/ui/inline-edit.js.map +1 -1
- package/dist/src/components/ui/multi-select.d.ts +7 -0
- package/dist/src/components/ui/multi-select.d.ts.map +1 -1
- package/dist/src/components/ui/multi-select.js +79 -27
- package/dist/src/components/ui/multi-select.js.map +1 -1
- package/dist/src/components/ui/multi-step-dialog.d.ts +11 -1
- package/dist/src/components/ui/multi-step-dialog.d.ts.map +1 -1
- package/dist/src/components/ui/multi-step-dialog.js +32 -4
- package/dist/src/components/ui/multi-step-dialog.js.map +1 -1
- package/dist/src/components/ui/overflow-strip.d.ts +18 -0
- package/dist/src/components/ui/overflow-strip.d.ts.map +1 -0
- package/dist/src/components/ui/overflow-strip.js +103 -0
- package/dist/src/components/ui/overflow-strip.js.map +1 -0
- package/dist/src/components/ui/scorecard.d.ts.map +1 -1
- package/dist/src/components/ui/scorecard.js +20 -1
- package/dist/src/components/ui/scorecard.js.map +1 -1
- package/dist/src/components/ui/select.d.ts +2 -2
- package/dist/src/components/ui/select.d.ts.map +1 -1
- package/dist/src/components/ui/select.js +123 -6
- package/dist/src/components/ui/select.js.map +1 -1
- package/dist/src/components/ui/tabs.d.ts +2 -1
- package/dist/src/components/ui/tabs.d.ts.map +1 -1
- package/dist/src/components/ui/tabs.js +16 -4
- package/dist/src/components/ui/tabs.js.map +1 -1
- package/dist/src/components/ui/toast.d.ts +4 -3
- package/dist/src/components/ui/toast.d.ts.map +1 -1
- package/dist/src/components/ui/toast.js +209 -23
- package/dist/src/components/ui/toast.js.map +1 -1
- package/dist/src/components/ui/toggle-group.d.ts +7 -1
- package/dist/src/components/ui/toggle-group.d.ts.map +1 -1
- package/dist/src/components/ui/toggle-group.js +23 -4
- package/dist/src/components/ui/toggle-group.js.map +1 -1
- package/dist/src/components/ui/tree-view.d.ts.map +1 -1
- package/dist/src/components/ui/tree-view.js +61 -45
- package/dist/src/components/ui/tree-view.js.map +1 -1
- package/dist/src/hooks/use-is-truncated.d.ts +9 -5
- package/dist/src/hooks/use-is-truncated.d.ts.map +1 -1
- package/dist/src/hooks/use-is-truncated.js +20 -7
- package/dist/src/hooks/use-is-truncated.js.map +1 -1
- package/dist/src/index.d.ts +2 -0
- package/dist/src/index.d.ts.map +1 -1
- package/dist/src/index.js +2 -0
- package/dist/src/index.js.map +1 -1
- package/dist/src/lib/focus-visible-on-close.d.ts +28 -0
- package/dist/src/lib/focus-visible-on-close.d.ts.map +1 -1
- package/dist/src/lib/focus-visible-on-close.js +54 -1
- package/dist/src/lib/focus-visible-on-close.js.map +1 -1
- package/dist/src/lib/i18n/dictionary.d.ts +3 -0
- package/dist/src/lib/i18n/dictionary.d.ts.map +1 -1
- package/dist/src/lib/i18n/dictionary.js +3 -0
- package/dist/src/lib/i18n/dictionary.js.map +1 -1
- package/dist/src/lib/merge-refs.d.ts +8 -0
- package/dist/src/lib/merge-refs.d.ts.map +1 -0
- package/dist/src/lib/merge-refs.js +15 -0
- package/dist/src/lib/merge-refs.js.map +1 -0
- package/dist/src/lib/with-ref.d.ts +3 -1
- package/dist/src/lib/with-ref.d.ts.map +1 -1
- package/dist/src/lib/with-ref.js +0 -10
- package/dist/src/lib/with-ref.js.map +1 -1
- package/dist/styles.css +65 -6
- package/package.json +2 -1
|
@@ -1,12 +1,17 @@
|
|
|
1
|
-
import { jsx as _jsx } from "react/jsx-runtime";
|
|
1
|
+
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
2
2
|
import * as React from "react";
|
|
3
3
|
import { cva } from "class-variance-authority";
|
|
4
4
|
import { Tabs as TabsPrimitive } from "radix-ui";
|
|
5
5
|
import { cn } from "../../lib/utils.js";
|
|
6
|
+
import { withRef } from "../../lib/with-ref.js";
|
|
7
|
+
import { mergeRefs } from "../../lib/merge-refs.js";
|
|
8
|
+
import { OverflowStripArrow, useOverflowStrip } from "./overflow-strip.js";
|
|
6
9
|
function Tabs({ className, orientation = "horizontal", ...props }) {
|
|
7
10
|
return (_jsx(TabsPrimitive.Root, { "data-slot": "tabs", "data-orientation": orientation, className: cn("group/tabs flex gap-2 data-horizontal:flex-col", className), ...props }));
|
|
8
11
|
}
|
|
9
|
-
|
|
12
|
+
// `justify-start`, not `center`: a centred flex row that overflows its scroll
|
|
13
|
+
// container hangs past the start edge where no scroll position can reach it.
|
|
14
|
+
const tabsListVariants = cva("group/tabs-list inline-flex w-fit items-center justify-start gap-1 rounded-xl p-1 text-neutral-foreground-subtle group-data-horizontal/tabs:h-9 group-data-horizontal/tabs:min-w-0 group-data-horizontal/tabs:max-w-full group-data-horizontal/tabs:overflow-x-auto group-data-horizontal/tabs:[scrollbar-width:none] group-data-horizontal/tabs:[&::-webkit-scrollbar]:hidden group-data-horizontal/tabs:motion-safe:scroll-smooth group-data-vertical/tabs:h-fit group-data-vertical/tabs:flex-col group-data-vertical/tabs:overflow-visible data-[variant=line]:rounded-none", {
|
|
10
15
|
variants: {
|
|
11
16
|
variant: {
|
|
12
17
|
default: "bg-neutral-background-medium",
|
|
@@ -17,9 +22,16 @@ const tabsListVariants = cva("group/tabs-list inline-flex w-fit items-center jus
|
|
|
17
22
|
variant: "default",
|
|
18
23
|
},
|
|
19
24
|
});
|
|
20
|
-
function
|
|
21
|
-
|
|
25
|
+
function TabsListImpl({ ref, className, variant = "default", ...props }) {
|
|
26
|
+
const { ref: scrollRef, hasMoreBefore, hasMoreAfter, scrollByStep, } = useOverflowStrip();
|
|
27
|
+
const listRef = React.useMemo(() => mergeRefs(ref, scrollRef), [ref, scrollRef]);
|
|
28
|
+
return (
|
|
29
|
+
// The arrows are siblings of the tablist inside this wrapper, never
|
|
30
|
+
// children of it — rendering them inside would count toward the tab
|
|
31
|
+
// total and break Radix's roving focus (Home/End, arrow-key wrap).
|
|
32
|
+
_jsxs("div", { "data-slot": "tabs-list-scroller", className: "flex min-w-0 max-w-full group-data-horizontal/tabs:items-center group-data-vertical/tabs:items-start", children: [hasMoreBefore && (_jsx(OverflowStripArrow, { direction: "before", onScroll: () => scrollByStep("before") })), _jsx(TabsPrimitive.List, { ref: listRef, "data-slot": "tabs-list", "data-variant": variant, className: cn(tabsListVariants({ variant }), className), ...props }), hasMoreAfter && (_jsx(OverflowStripArrow, { direction: "after", onScroll: () => scrollByStep("after") }))] }));
|
|
22
33
|
}
|
|
34
|
+
const TabsList = withRef(TabsListImpl);
|
|
23
35
|
function TabsTrigger({ className, ...props }) {
|
|
24
36
|
return (_jsx(TabsPrimitive.Trigger, { "data-slot": "tabs-trigger", className: cn("relative inline-flex h-[calc(100%-2px)] flex-1 cursor-pointer items-center justify-center gap-1.5 rounded-lg border border-transparent px-3 py-1 text-sm font-medium whitespace-nowrap text-neutral-foreground-strong transition-all duration-200 group-data-vertical/tabs:w-full group-data-vertical/tabs:justify-start focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring disabled:pointer-events-none disabled:opacity-50 has-data-[icon=inline-end]:pr-2 has-data-[icon=inline-start]:pl-2 dark:text-neutral-foreground-subtle group-data-[variant=default]/tabs-list:data-active:shadow-sm group-data-[variant=line]/tabs-list:data-active:shadow-none [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4", "not-data-active:hover:bg-neutral-background-strong", "group-data-[variant=line]/tabs-list:bg-transparent group-data-[variant=line]/tabs-list:data-active:bg-transparent dark:group-data-[variant=line]/tabs-list:data-active:border-transparent dark:group-data-[variant=line]/tabs-list:data-active:bg-transparent", "data-active:bg-neutral-background-subtle data-active:text-neutral-foreground-strong dark:data-active:border-input dark:data-active:text-neutral-foreground-strong", "after:absolute after:bg-foreground after:opacity-0 after:transition-opacity group-data-horizontal/tabs:after:inset-x-0 group-data-horizontal/tabs:after:bottom-[-5px] group-data-horizontal/tabs:after:h-0.5 group-data-vertical/tabs:after:inset-y-0 group-data-vertical/tabs:after:-right-1 group-data-vertical/tabs:after:w-0.5 group-data-[variant=line]/tabs-list:data-active:after:opacity-100", className), ...props }));
|
|
25
37
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"tabs.js","sourceRoot":"","sources":["../../../../src/components/ui/tabs.tsx"],"names":[],"mappings":";AAAA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAC/B,OAAO,EAAE,GAAG,EAAqB,MAAM,0BAA0B,CAAC;AAClE,OAAO,EAAE,IAAI,IAAI,aAAa,EAAE,MAAM,UAAU,CAAC;AAEjD,OAAO,EAAE,EAAE,EAAE,MAAM,WAAW,CAAC;
|
|
1
|
+
{"version":3,"file":"tabs.js","sourceRoot":"","sources":["../../../../src/components/ui/tabs.tsx"],"names":[],"mappings":"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"}
|
|
@@ -43,9 +43,10 @@ type ToastFn = {
|
|
|
43
43
|
declare function Toaster({ position, dismissLabel }: ToasterProps): React.JSX.Element;
|
|
44
44
|
/**
|
|
45
45
|
* The callable used everywhere else — never sonner's own `toast` re-exported directly.
|
|
46
|
-
* `options.duration` resolution uses `??`, not `||`: sonner
|
|
47
|
-
* `duration: 0` as falsy and silently falls back to its own ~4s default
|
|
48
|
-
* source) — `??` is required so an explicit `0` isn't confused with "not
|
|
46
|
+
* `options.duration` resolution (inside `toExternalToast`) uses `??`, not `||`: sonner
|
|
47
|
+
* treats a literal `duration: 0` as falsy and silently falls back to its own ~4s default
|
|
48
|
+
* (verified in source) — `??` is required so an explicit `0` isn't confused with "not
|
|
49
|
+
* passed".
|
|
49
50
|
*/
|
|
50
51
|
declare const toast: ToastFn;
|
|
51
52
|
export { Toaster, toast };
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"toast.d.ts","sourceRoot":"","sources":["../../../../src/components/ui/toast.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;
|
|
1
|
+
{"version":3,"file":"toast.d.ts","sourceRoot":"","sources":["../../../../src/components/ui/toast.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAyB/B,KAAK,aAAa,GACd,UAAU,GACV,WAAW,GACX,YAAY,GACZ,aAAa,GACb,cAAc,GACd,eAAe,CAAC;AAEpB,KAAK,YAAY,GAAG;IAClB,QAAQ,CAAC,EAAE,aAAa,CAAC;IACzB;;;OAGG;IACH,YAAY,CAAC,EAAE,MAAM,CAAC;CACvB,CAAC;AAEF,KAAK,WAAW,GAAG;IAAE,KAAK,EAAE,MAAM,CAAC;IAAC,OAAO,EAAE,MAAM,IAAI,CAAA;CAAE,CAAC;AAE1D,KAAK,YAAY,GAAG;IAClB,WAAW,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;IAC9B,MAAM,CAAC,EAAE,WAAW,CAAC;IACrB,gEAAgE;IAChE,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB,CAAC;AAEF,KAAK,mBAAmB,CAAC,CAAC,IAAI;IAC5B,OAAO,EAAE,KAAK,CAAC,SAAS,CAAC;IACzB,OAAO,EAAE,KAAK,CAAC,SAAS,GAAG,CAAC,CAAC,IAAI,EAAE,CAAC,KAAK,KAAK,CAAC,SAAS,CAAC,CAAC;IAC1D,KAAK,EAAE,KAAK,CAAC,SAAS,GAAG,CAAC,CAAC,KAAK,EAAE,OAAO,KAAK,KAAK,CAAC,SAAS,CAAC,CAAC;CAChE,CAAC;AAEF,KAAK,OAAO,GAAG;IACb,CAAC,OAAO,EAAE,KAAK,CAAC,SAAS,EAAE,OAAO,CAAC,EAAE,YAAY,GAAG,MAAM,GAAG,MAAM,CAAC;IACpE,OAAO,EAAE,CACP,OAAO,EAAE,KAAK,CAAC,SAAS,EACxB,OAAO,CAAC,EAAE,YAAY,KACnB,MAAM,GAAG,MAAM,CAAC;IACrB,IAAI,EAAE,CAAC,OAAO,EAAE,KAAK,CAAC,SAAS,EAAE,OAAO,CAAC,EAAE,YAAY,KAAK,MAAM,GAAG,MAAM,CAAC;IAC5E,OAAO,EAAE,CACP,OAAO,EAAE,KAAK,CAAC,SAAS,EACxB,OAAO,CAAC,EAAE,YAAY,KACnB,MAAM,GAAG,MAAM,CAAC;IACrB,KAAK,EAAE,CAAC,OAAO,EAAE,KAAK,CAAC,SAAS,EAAE,OAAO,CAAC,EAAE,YAAY,KAAK,MAAM,GAAG,MAAM,CAAC;IAC7E,OAAO,EAAE,CAAC,CAAC,EAAE,OAAO,EAAE,OAAO,CAAC,CAAC,CAAC,EAAE,OAAO,EAAE,mBAAmB,CAAC,CAAC,CAAC,KAAK,IAAI,CAAC;IAC3E,OAAO,EAAE,CAAC,EAAE,CAAC,EAAE,MAAM,GAAG,MAAM,KAAK,IAAI,CAAC;CACzC,CAAC;AAiUF;;;;;;;GAOG;AACH,iBAAS,OAAO,CAAC,EAAE,QAAsB,EAAE,YAAY,EAAE,EAAE,YAAY,qBAiBtE;AAyID;;;;;;GAMG;AACH,QAAA,MAAM,KAAK,EAAE,OA4GZ,CAAC;AAEF,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,CAAC;AAC1B,YAAY,EACV,YAAY,EACZ,aAAa,EACb,YAAY,EACZ,WAAW,EACX,mBAAmB,GACpB,CAAC"}
|
|
@@ -1,10 +1,12 @@
|
|
|
1
|
-
import { jsx as _jsx } from "react/jsx-runtime";
|
|
1
|
+
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
2
2
|
import * as React from "react";
|
|
3
3
|
import { Toaster as SonnerToaster, toast as sonnerToast, } from "sonner";
|
|
4
4
|
import { CheckCircle2, CircleAlert, Info, Loader2, TriangleAlert, X, } from "../../icons/lucide.js";
|
|
5
5
|
import { cn } from "../../lib/utils.js";
|
|
6
6
|
import { useC4Dictionary } from "../../lib/i18n/context.js";
|
|
7
|
+
import { useIsTruncated } from "../../hooks/use-is-truncated.js";
|
|
7
8
|
import { buttonVariants } from "./button.js";
|
|
9
|
+
import { Tooltip, TooltipContent, TooltipTrigger } from "./tooltip.js";
|
|
8
10
|
import { typographyVariants } from "./typography.js";
|
|
9
11
|
// ── Styling contract — neutral floating surface, icon-only kind color ──────
|
|
10
12
|
//
|
|
@@ -101,18 +103,22 @@ const TOAST_CLASSNAMES = {
|
|
|
101
103
|
// sibling, not the `~` general-sibling used for the icon/close fix above) matches
|
|
102
104
|
// the actual DOM exactly: title and description are always immediate siblings
|
|
103
105
|
// inside `[data-content]`, so this only reserves the gap when one is actually there.
|
|
104
|
-
// `line-clamp-2`
|
|
105
|
-
//
|
|
106
|
-
//
|
|
107
|
-
//
|
|
108
|
-
//
|
|
109
|
-
|
|
106
|
+
// `line-clamp-2` used to live here, on sonner's own `[data-title]` wrapper div —
|
|
107
|
+
// moved onto `ToastTitleText`'s inner span instead (see below), which is what
|
|
108
|
+
// `useIsTruncated` needs a ref on to detect the clamp (scrollHeight > clientHeight)
|
|
109
|
+
// and reveal the full value via Tooltip on hover/focus (fixes #659 for the
|
|
110
|
+
// multi-line case; this div-level class list only carries type + spacing now).
|
|
111
|
+
// Consumers should still keep titles short (toast.specs.ts's antiPatterns) — the
|
|
112
|
+
// clamp+reveal is a backstop for when they don't, not a substitute for writing
|
|
113
|
+
// toast copy that fits a transient, glanceable notification.
|
|
114
|
+
title: cn(typographyVariants({ variant: "label-md-strong" }), "[&:has(+[data-description])]:mb-1"),
|
|
110
115
|
// `text-neutral-foreground-subtle` decouples description color from the (now neutral)
|
|
111
116
|
// container/title color — matches sonner's own native description color, a muted
|
|
112
117
|
// gray distinct from the title, not inherited from the card.
|
|
113
|
-
// `line-clamp-4` — same rationale as the title's
|
|
114
|
-
//
|
|
115
|
-
|
|
118
|
+
// `line-clamp-4` — same rationale as the title's `line-clamp-2` above (moved onto
|
|
119
|
+
// `ToastDescriptionText`'s inner span for the same reason) — with more room since
|
|
120
|
+
// descriptions are expected to carry more detail.
|
|
121
|
+
description: cn(typographyVariants({ variant: "label-md" }), "text-neutral-foreground-subtle"),
|
|
116
122
|
// `ml-auto` keeps the button against the trailing edge whether it shares the first
|
|
117
123
|
// line or has wrapped onto its own. It keeps `buttonVariants`' base `shrink-0` and
|
|
118
124
|
// `whitespace-nowrap`: with wrapping available, the label stays on one line at its
|
|
@@ -159,6 +165,38 @@ const TOAST_ICONS = {
|
|
|
159
165
|
// (Loader2 + animate-spin), colored with a semantic token instead.
|
|
160
166
|
loading: (_jsx(Loader2, { className: "h-4 w-4 animate-spin text-neutral-foreground-subtle", "aria-hidden": "true" })),
|
|
161
167
|
};
|
|
168
|
+
function ToastTitleText({ children, onRevealOpen, onRevealClose, }) {
|
|
169
|
+
const { ref, isTruncated, measure } = useIsTruncated();
|
|
170
|
+
React.useLayoutEffect(() => {
|
|
171
|
+
measure();
|
|
172
|
+
});
|
|
173
|
+
const span = (_jsx("span", { ref: ref, tabIndex: 0, onPointerEnter: measure, onFocus: () => {
|
|
174
|
+
measure();
|
|
175
|
+
if (isTruncated)
|
|
176
|
+
onRevealOpen?.();
|
|
177
|
+
}, onBlur: () => {
|
|
178
|
+
if (isTruncated)
|
|
179
|
+
onRevealClose?.();
|
|
180
|
+
}, className: "line-clamp-2 rounded-sm outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-inset", children: children }));
|
|
181
|
+
// Mounted only when clipped — see nav-breadcrumb.tsx for why an
|
|
182
|
+
// unconditionally-mounted Tooltip is never the right default.
|
|
183
|
+
return isTruncated ? (_jsxs(Tooltip, { children: [_jsx(TooltipTrigger, { asChild: true, children: span }), _jsx(TooltipContent, { children: children })] })) : (span);
|
|
184
|
+
}
|
|
185
|
+
function ToastDescriptionText({ children, onRevealOpen, onRevealClose, }) {
|
|
186
|
+
const { ref, isTruncated, measure } = useIsTruncated();
|
|
187
|
+
React.useLayoutEffect(() => {
|
|
188
|
+
measure();
|
|
189
|
+
});
|
|
190
|
+
const span = (_jsx("span", { ref: ref, tabIndex: 0, onPointerEnter: measure, onFocus: () => {
|
|
191
|
+
measure();
|
|
192
|
+
if (isTruncated)
|
|
193
|
+
onRevealOpen?.();
|
|
194
|
+
}, onBlur: () => {
|
|
195
|
+
if (isTruncated)
|
|
196
|
+
onRevealClose?.();
|
|
197
|
+
}, className: "line-clamp-4 rounded-sm outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-inset", children: children }));
|
|
198
|
+
return isTruncated ? (_jsxs(Tooltip, { children: [_jsx(TooltipTrigger, { asChild: true, children: span }), _jsx(TooltipContent, { children: children })] })) : (span);
|
|
199
|
+
}
|
|
162
200
|
// ── Toaster ──────────────────────────────────────────────────────────────────
|
|
163
201
|
/**
|
|
164
202
|
* The one-time host, mounted once at the application's true root (inside
|
|
@@ -179,10 +217,52 @@ function Toaster({ position = "top-right", dismissLabel }) {
|
|
|
179
217
|
} }));
|
|
180
218
|
}
|
|
181
219
|
// ── toast ────────────────────────────────────────────────────────────────────
|
|
182
|
-
|
|
220
|
+
// ── Focus-driven dismiss pause ──────────────────────────────────────────────
|
|
221
|
+
//
|
|
222
|
+
// Sonner pauses each toast's own auto-dismiss timer while the pointer is over its
|
|
223
|
+
// stack, or while the stack has been expanded via its Alt+T hotkey (`expanded`/
|
|
224
|
+
// `interacting`, set only by `onMouseEnter`/`onMouseMove`/`onPointerDown`/`onPointerUp`
|
|
225
|
+
// on its own <ol> — verified in sonner@2.0.8's index.mjs, ~line 1190-1204) — but never
|
|
226
|
+
// on focus. The <ol>'s own `onFocus` handler (~line 1182) only tracks focus-restoration
|
|
227
|
+
// bookkeeping, never sets `expanded`/`interacting`. So a keyboard user who Tabs onto a
|
|
228
|
+
// clamped title/description, opens its Tooltip reveal via focus, and starts reading,
|
|
229
|
+
// gets no pause at all: the toast can vanish mid-read for a default-duration (5000ms)
|
|
230
|
+
// toast — a WCAG 1.4.13 (Content on Hover or Focus) violation for exactly the users the
|
|
231
|
+
// reveal above was built to help.
|
|
232
|
+
//
|
|
233
|
+
// `makeToast` below pauses each toast's OWN dismissal (via sonner's update-by-id path —
|
|
234
|
+
// re-calling the same creating method with a matching `id` merges into the existing
|
|
235
|
+
// toast rather than creating a new one) while its title/description has focus, and
|
|
236
|
+
// resumes it on blur. Resuming always restarts the FULL original duration rather than
|
|
237
|
+
// tracking exact remaining time — the simplest defensible choice, and also what sonner
|
|
238
|
+
// itself does to any duration change: its `remainingTime.current = duration` effect
|
|
239
|
+
// resets unconditionally whenever `duration` changes, so a full restart is not a special
|
|
240
|
+
// case bolted on top, it's what an update naturally produces.
|
|
241
|
+
//
|
|
242
|
+
// The `id`, and the exact sonner method that created a toast, are threaded through
|
|
243
|
+
// deliberately: sonner's own update-by-id merge sets `title` unconditionally from the
|
|
244
|
+
// `message` argument (so it must be re-passed identically on every update, not omitted)
|
|
245
|
+
// and sets `type` unconditionally from whichever public method handled the call (the
|
|
246
|
+
// bare call always resets it to `undefined`) — so pausing/resuming a `success` toast
|
|
247
|
+
// through the bare method would silently strip its icon back to neutral. Re-dispatching
|
|
248
|
+
// through the exact same method avoids that. Passing the SAME already-constructed title
|
|
249
|
+
// element back on every update (not a freshly created one) also matters: React bails out
|
|
250
|
+
// of re-rendering a child subtree when the element reference itself is unchanged (same
|
|
251
|
+
// type, same props object), which avoids remounting `ToastTitleText` — and thus avoids
|
|
252
|
+
// losing focus, or worse, unmounting the very element mid-focus-event and retriggering
|
|
253
|
+
// another focus/blur pair — verified live via Storybook + Playwright, see the dev
|
|
254
|
+
// report / toast.specs.ts.
|
|
255
|
+
let toastIdCounter = 0;
|
|
256
|
+
function nextToastId() {
|
|
257
|
+
return `c4-toast-${++toastIdCounter}`;
|
|
258
|
+
}
|
|
259
|
+
function toExternalToast(options, defaultDuration, reveal) {
|
|
183
260
|
const action = options?.action;
|
|
184
261
|
return {
|
|
185
|
-
|
|
262
|
+
// Wrapped only when present — sonner conditionally renders `[data-description]`
|
|
263
|
+
// at all based on truthiness, and `:has([data-description])` selectors elsewhere
|
|
264
|
+
// in TOAST_CLASSNAMES key off that same presence (see the Styling contract).
|
|
265
|
+
description: options?.description ? (_jsx(ToastDescriptionText, { onRevealOpen: reveal.onRevealOpen, onRevealClose: reveal.onRevealClose, children: options.description })) : undefined,
|
|
186
266
|
duration: options?.duration ?? defaultDuration,
|
|
187
267
|
action: action
|
|
188
268
|
? {
|
|
@@ -202,27 +282,133 @@ function toExternalToast(options, defaultDuration) {
|
|
|
202
282
|
: undefined,
|
|
203
283
|
};
|
|
204
284
|
}
|
|
285
|
+
/**
|
|
286
|
+
* Builds and dispatches one toast, wiring its title/description with the
|
|
287
|
+
* focus-driven pause/resume above. `kind` must be the exact sonner method used to
|
|
288
|
+
* create it (`sonnerToast` itself for the untyped/default kind, or one of
|
|
289
|
+
* `.success`/`.info`/`.warning`/`.error`) — see the "Focus-driven dismiss pause"
|
|
290
|
+
* note for why re-dispatching through any other method would corrupt the toast's
|
|
291
|
+
* type/icon.
|
|
292
|
+
*/
|
|
293
|
+
function makeToast(kind, message, options, defaultDuration) {
|
|
294
|
+
const id = nextToastId();
|
|
295
|
+
const duration = options?.duration ?? defaultDuration;
|
|
296
|
+
// `pause`/`resume` reference `titleNode` before its own declaration below —
|
|
297
|
+
// safe because both only ever run later, from a focus/blur event, by which
|
|
298
|
+
// point `titleNode`'s initializer has long since run.
|
|
299
|
+
const pause = () => {
|
|
300
|
+
if (duration === Infinity)
|
|
301
|
+
return; // no auto-dismiss timer exists to pause
|
|
302
|
+
// Same guard as `resume` below: a focus event landing in the same animation
|
|
303
|
+
// frame as a `toast.dismiss(id)` call must not resurrect the toast the
|
|
304
|
+
// consumer just closed — sonner's `create()` un-dismisses a matching id
|
|
305
|
+
// otherwise (index.mjs ~181-194).
|
|
306
|
+
if (!sonnerToast.getToasts().some((t) => t.id === id))
|
|
307
|
+
return;
|
|
308
|
+
kind(titleNode, { id, duration: Infinity });
|
|
309
|
+
};
|
|
310
|
+
const resume = () => {
|
|
311
|
+
if (duration === Infinity)
|
|
312
|
+
return;
|
|
313
|
+
// A toast the user already dismissed (or that auto-closed) must not be
|
|
314
|
+
// resurrected by a stray blur — sonner's `create()` un-dismisses a matching
|
|
315
|
+
// id otherwise (index.mjs ~181-194).
|
|
316
|
+
if (!sonnerToast.getToasts().some((t) => t.id === id))
|
|
317
|
+
return;
|
|
318
|
+
kind(titleNode, { id, duration });
|
|
319
|
+
};
|
|
320
|
+
const titleNode = (_jsx(ToastTitleText, { onRevealOpen: pause, onRevealClose: resume, children: message }));
|
|
321
|
+
return kind(titleNode, {
|
|
322
|
+
...toExternalToast(options, defaultDuration, {
|
|
323
|
+
onRevealOpen: pause,
|
|
324
|
+
onRevealClose: resume,
|
|
325
|
+
}),
|
|
326
|
+
id,
|
|
327
|
+
});
|
|
328
|
+
}
|
|
205
329
|
/**
|
|
206
330
|
* The callable used everywhere else — never sonner's own `toast` re-exported directly.
|
|
207
|
-
* `options.duration` resolution uses `??`, not `||`: sonner
|
|
208
|
-
* `duration: 0` as falsy and silently falls back to its own ~4s default
|
|
209
|
-
* source) — `??` is required so an explicit `0` isn't confused with "not
|
|
331
|
+
* `options.duration` resolution (inside `toExternalToast`) uses `??`, not `||`: sonner
|
|
332
|
+
* treats a literal `duration: 0` as falsy and silently falls back to its own ~4s default
|
|
333
|
+
* (verified in source) — `??` is required so an explicit `0` isn't confused with "not
|
|
334
|
+
* passed".
|
|
210
335
|
*/
|
|
211
|
-
const toast = Object.assign((message, options) => sonnerToast
|
|
212
|
-
success: (message, options) => sonnerToast.success
|
|
213
|
-
info: (message, options) => sonnerToast.info
|
|
214
|
-
warning: (message, options) => sonnerToast.warning
|
|
336
|
+
const toast = Object.assign((message, options) => makeToast(sonnerToast, message, options, 5000), {
|
|
337
|
+
success: (message, options) => makeToast(sonnerToast.success, message, options, 5000),
|
|
338
|
+
info: (message, options) => makeToast(sonnerToast.info, message, options, 5000),
|
|
339
|
+
warning: (message, options) => makeToast(sonnerToast.warning, message, options, 5000),
|
|
215
340
|
error: (message, options) =>
|
|
216
341
|
// Default Infinity — errors persist until manually dismissed (toast.specs.ts).
|
|
217
|
-
sonnerToast.error
|
|
342
|
+
makeToast(sonnerToast.error, message, options, Infinity),
|
|
218
343
|
promise: (promise, options) => {
|
|
219
344
|
// Discard sonner's own return value (string|number & { unwrap }) — the spec's
|
|
220
345
|
// contract is `=> void`; the loading → success/error swap is automatic and there
|
|
221
346
|
// is no toast id to combine with toast.dismiss(id).
|
|
347
|
+
//
|
|
348
|
+
// loading/success/error are wrapped in `ToastTitleText` too — they render into
|
|
349
|
+
// the same `[data-title]` slot (styled by the same `classNames.title`, clamped
|
|
350
|
+
// the same way) as every other kind, so they get the same truncation reveal.
|
|
351
|
+
// `success`/`error` accept a plain value or a function of the resolved
|
|
352
|
+
// data/caught error (PromiseToastOptions<T>'s own shape) — resolve that first,
|
|
353
|
+
// then wrap the result; sonner is what actually calls this function with the
|
|
354
|
+
// real data/error at resolve/reject time.
|
|
355
|
+
//
|
|
356
|
+
// Pause/resume: the loading phase is `type: "loading"`, which sonner's own timer
|
|
357
|
+
// effect excludes from auto-dismissal entirely (no timer ever starts for it —
|
|
358
|
+
// index.mjs ~644) — nothing to pause there. Only the resolved *success* toast can
|
|
359
|
+
// auto-dismiss, so it alone is wired below, with its own explicit 5000ms duration
|
|
360
|
+
// (sonner's own internal default for a `.promise()` resolution is 4000ms, and
|
|
361
|
+
// unlike `toExternalToast`'s call sites, `resume` here has no other way to learn
|
|
362
|
+
// what to restore). The resolved *error* toast persists until manually dismissed —
|
|
363
|
+
// `duration: Infinity` is set EXPLICITLY below, matching `toast.error`'s own
|
|
364
|
+
// default: sonner's update merge only touches keys present in the returned
|
|
365
|
+
// object, so omitting `duration` here does not inherit Infinity from anywhere,
|
|
366
|
+
// it falls back to sonner's own internal ~4000ms default instead (this was a
|
|
367
|
+
// real, Validator-caught bug — the error toast was silently auto-dismissing with
|
|
368
|
+
// no pause protection, the exact gap this whole feature exists to close). With
|
|
369
|
+
// `duration: Infinity` actually set, no timer ever starts, so no pause/resume is
|
|
370
|
+
// wired for it either.
|
|
371
|
+
const id = nextToastId();
|
|
372
|
+
const successDuration = 5000;
|
|
373
|
+
let successTitleNode;
|
|
374
|
+
const pauseSuccess = () => {
|
|
375
|
+
// Same guard as `resumeSuccess` below — see `makeToast`'s `pause` for why.
|
|
376
|
+
if (!sonnerToast.getToasts().some((t) => t.id === id))
|
|
377
|
+
return;
|
|
378
|
+
sonnerToast.success(successTitleNode, { id, duration: Infinity });
|
|
379
|
+
};
|
|
380
|
+
const resumeSuccess = () => {
|
|
381
|
+
if (!sonnerToast.getToasts().some((t) => t.id === id))
|
|
382
|
+
return;
|
|
383
|
+
sonnerToast.success(successTitleNode, {
|
|
384
|
+
id,
|
|
385
|
+
duration: successDuration,
|
|
386
|
+
});
|
|
387
|
+
};
|
|
222
388
|
sonnerToast.promise(promise, {
|
|
223
|
-
|
|
224
|
-
|
|
225
|
-
|
|
389
|
+
id,
|
|
390
|
+
loading: _jsx(ToastTitleText, { children: options.loading }),
|
|
391
|
+
success: (data) => {
|
|
392
|
+
const content = typeof options.success === "function"
|
|
393
|
+
? options.success(data)
|
|
394
|
+
: options.success;
|
|
395
|
+
successTitleNode = (_jsx(ToastTitleText, { onRevealOpen: pauseSuccess, onRevealClose: resumeSuccess, children: content }));
|
|
396
|
+
return { message: successTitleNode, duration: successDuration };
|
|
397
|
+
},
|
|
398
|
+
error: (error) => {
|
|
399
|
+
const content = typeof options.error === "function"
|
|
400
|
+
? options.error(error)
|
|
401
|
+
: options.error;
|
|
402
|
+
// `duration: Infinity` must be explicit here — sonner's own merge only
|
|
403
|
+
// touches keys present in this return value, and with none supplied it
|
|
404
|
+
// falls back to its own internal ~4000ms default, not our Infinity intent.
|
|
405
|
+
// (Found by the Validator: this toast was silently auto-dismissing behind
|
|
406
|
+
// an unpaused timer, contradicting this file's own comment above.)
|
|
407
|
+
return {
|
|
408
|
+
message: _jsx(ToastTitleText, { children: content }),
|
|
409
|
+
duration: Infinity,
|
|
410
|
+
};
|
|
411
|
+
},
|
|
226
412
|
});
|
|
227
413
|
},
|
|
228
414
|
dismiss: (id) => {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"toast.js","sourceRoot":"","sources":["../../../../src/components/ui/toast.tsx"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"toast.js","sourceRoot":"","sources":["../../../../src/components/ui/toast.tsx"],"names":[],"mappings":"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"}
|
|
@@ -2,7 +2,13 @@ import * as React from "react";
|
|
|
2
2
|
import { ToggleGroup as ToggleGroupPrimitive } from "radix-ui";
|
|
3
3
|
import { type VariantProps } from "class-variance-authority";
|
|
4
4
|
import { toggleVariants } from "./toggle.js";
|
|
5
|
-
declare
|
|
5
|
+
declare const ToggleGroup: React.ForwardRefExoticComponent<(Omit<ToggleGroupPrimitive.ToggleGroupSingleProps & React.RefAttributes<HTMLDivElement> & VariantProps<(props?: ({
|
|
6
|
+
variant?: "default" | "outline" | null | undefined;
|
|
7
|
+
size?: "default" | "sm" | "lg" | null | undefined;
|
|
8
|
+
} & import("class-variance-authority/types").ClassProp) | undefined) => string>, "ref"> | Omit<ToggleGroupPrimitive.ToggleGroupMultipleProps & React.RefAttributes<HTMLDivElement> & VariantProps<(props?: ({
|
|
9
|
+
variant?: "default" | "outline" | null | undefined;
|
|
10
|
+
size?: "default" | "sm" | "lg" | null | undefined;
|
|
11
|
+
} & import("class-variance-authority/types").ClassProp) | undefined) => string>, "ref">) & React.RefAttributes<HTMLDivElement>>;
|
|
6
12
|
declare function ToggleGroupItem({ className, children, variant, size, ...props }: React.ComponentProps<typeof ToggleGroupPrimitive.Item> & VariantProps<typeof toggleVariants>): React.JSX.Element;
|
|
7
13
|
export { ToggleGroup, ToggleGroupItem };
|
|
8
14
|
//# sourceMappingURL=toggle-group.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"toggle-group.d.ts","sourceRoot":"","sources":["../../../../src/components/ui/toggle-group.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAC/B,OAAO,EAAE,WAAW,IAAI,oBAAoB,EAAE,MAAM,UAAU,CAAC;AAC/D,OAAO,EAAE,KAAK,YAAY,EAAE,MAAM,0BAA0B,CAAC;
|
|
1
|
+
{"version":3,"file":"toggle-group.d.ts","sourceRoot":"","sources":["../../../../src/components/ui/toggle-group.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAC/B,OAAO,EAAE,WAAW,IAAI,oBAAoB,EAAE,MAAM,UAAU,CAAC;AAC/D,OAAO,EAAE,KAAK,YAAY,EAAE,MAAM,0BAA0B,CAAC;AAM7D,OAAO,EAAE,cAAc,EAAE,MAAM,UAAU,CAAC;AAiF1C,QAAA,MAAM,WAAW;;;;;;+HAA6D,CAAC;AAE/E,iBAAS,eAAe,CAAC,EACvB,SAAS,EACT,QAAQ,EACR,OAAO,EACP,IAAI,EACJ,GAAG,KAAK,EACT,EAAE,KAAK,CAAC,cAAc,CAAC,OAAO,oBAAoB,CAAC,IAAI,CAAC,GACvD,YAAY,CAAC,OAAO,cAAc,CAAC,qBA6BpC;AAED,OAAO,EAAE,WAAW,EAAE,eAAe,EAAE,CAAC"}
|
|
@@ -1,17 +1,32 @@
|
|
|
1
1
|
"use client";
|
|
2
|
-
import { jsx as _jsx } from "react/jsx-runtime";
|
|
2
|
+
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
3
3
|
import * as React from "react";
|
|
4
4
|
import { ToggleGroup as ToggleGroupPrimitive } from "radix-ui";
|
|
5
5
|
import {} from "class-variance-authority";
|
|
6
6
|
import { cn } from "../../lib/utils.js";
|
|
7
|
+
import { withRef } from "../../lib/with-ref.js";
|
|
8
|
+
import { mergeRefs } from "../../lib/merge-refs.js";
|
|
9
|
+
import { OverflowStripArrow, useOverflowStrip } from "./overflow-strip.js";
|
|
7
10
|
import { toggleVariants } from "./toggle.js";
|
|
8
11
|
// Empty default — `ToggleGroupItem` standalone (no surrounding `ToggleGroup`)
|
|
9
12
|
// must fall back to its own `variant`/`size` props, and a non-empty default
|
|
10
13
|
// here would clobber those.
|
|
11
14
|
const ToggleGroupContext = React.createContext({});
|
|
12
|
-
function
|
|
13
|
-
|
|
15
|
+
function ToggleGroupImpl({ ref, className, variant = "default", size = "default", orientation, children, ...props }) {
|
|
16
|
+
const { ref: scrollRef, hasMoreBefore, hasMoreAfter, scrollByStep, } = useOverflowStrip();
|
|
17
|
+
const rootRef = React.useMemo(() => mergeRefs(ref, scrollRef), [ref, scrollRef]);
|
|
18
|
+
// `orientation` stays optional so an unset group keeps Radix's default, in
|
|
19
|
+
// which all four arrow keys move focus.
|
|
20
|
+
const isVertical = orientation === "vertical";
|
|
21
|
+
return (
|
|
22
|
+
// The arrows are siblings of the group root inside this wrapper, never
|
|
23
|
+
// children of it — rendering them inside would count toward the item
|
|
24
|
+
// total and break Radix's roving focus (Home/End, arrow-key wrap).
|
|
25
|
+
_jsxs("div", { "data-slot": "toggle-group-scroller", className: cn("flex min-w-0 max-w-full", isVertical ? "items-start" : "items-center"), children: [hasMoreBefore && (_jsx(OverflowStripArrow, { direction: "before", onScroll: () => scrollByStep("before") })), _jsx(ToggleGroupPrimitive.Root, { ref: rootRef, "data-slot": "toggle-group", "data-variant": variant, "data-size": size, orientation: orientation, className: cn("group/toggle-group flex w-fit items-center rounded-md data-[variant=outline]:shadow-none", isVertical
|
|
26
|
+
? "overflow-visible"
|
|
27
|
+
: "min-w-0 max-w-full overflow-x-auto [scrollbar-width:none] [&::-webkit-scrollbar]:hidden motion-safe:scroll-smooth", className), ...props, children: _jsx(ToggleGroupContext.Provider, { value: { variant, size }, children: children }) }), hasMoreAfter && (_jsx(OverflowStripArrow, { direction: "after", onScroll: () => scrollByStep("after") }))] }));
|
|
14
28
|
}
|
|
29
|
+
const ToggleGroup = withRef(ToggleGroupImpl);
|
|
15
30
|
function ToggleGroupItem({ className, children, variant, size, ...props }) {
|
|
16
31
|
const context = React.useContext(ToggleGroupContext);
|
|
17
32
|
// Group context wins when present (shadcn pattern: the group controls the
|
|
@@ -22,7 +37,11 @@ function ToggleGroupItem({ className, children, variant, size, ...props }) {
|
|
|
22
37
|
return (_jsx(ToggleGroupPrimitive.Item, { "data-slot": "toggle-group-item", "data-variant": resolvedVariant, "data-size": resolvedSize, className: cn(toggleVariants({
|
|
23
38
|
variant: resolvedVariant,
|
|
24
39
|
size: resolvedSize,
|
|
25
|
-
}),
|
|
40
|
+
}),
|
|
41
|
+
// An item is never narrower than its label (`min-w-fit`); a group that
|
|
42
|
+
// does not fit scrolls. The focus ring sits inside the item because the
|
|
43
|
+
// group is a scroll container, which clips anything drawn outside it.
|
|
44
|
+
"min-w-fit flex-1 shrink-0 rounded-none shadow-none first:rounded-l-md last:rounded-r-md focus:z-10 focus-visible:z-10 focus-visible:ring-inset data-[variant=outline]:border-l-0 data-[variant=outline]:first:border-l", className), ...props, children: children }));
|
|
26
45
|
}
|
|
27
46
|
export { ToggleGroup, ToggleGroupItem };
|
|
28
47
|
//# sourceMappingURL=toggle-group.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"toggle-group.js","sourceRoot":"","sources":["../../../../src/components/ui/toggle-group.tsx"],"names":[],"mappings":"AAAA,YAAY,CAAC;;AAEb,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAC/B,OAAO,EAAE,WAAW,IAAI,oBAAoB,EAAE,MAAM,UAAU,CAAC;AAC/D,OAAO,EAAqB,MAAM,0BAA0B,CAAC;AAE7D,OAAO,EAAE,EAAE,EAAE,MAAM,WAAW,CAAC;AAC/B,OAAO,EAAE,cAAc,EAAE,MAAM,UAAU,CAAC;AAE1C,8EAA8E;AAC9E,4EAA4E;AAC5E,4BAA4B;AAC5B,MAAM,kBAAkB,GAAG,KAAK,CAAC,aAAa,CAE5C,EAAE,CAAC,CAAC;
|
|
1
|
+
{"version":3,"file":"toggle-group.js","sourceRoot":"","sources":["../../../../src/components/ui/toggle-group.tsx"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"tree-view.d.ts","sourceRoot":"","sources":["../../../../src/components/ui/tree-view.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;
|
|
1
|
+
{"version":3,"file":"tree-view.d.ts","sourceRoot":"","sources":["../../../../src/components/ui/tree-view.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAoB/B,MAAM,WAAW,WAAW;IAC1B,EAAE,EAAE,MAAM,CAAC;IACX,KAAK,EAAE,KAAK,CAAC,SAAS,CAAC;IACvB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,UAAU,CAAC,EAAE,KAAK,CAAC,aAAa,CAAC;QAAE,SAAS,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;IACzD,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,8EAA8E;IAC9E,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,mDAAmD;IACnD,eAAe,CAAC,EAAE,OAAO,CAAC;IAC1B,QAAQ,CAAC,EAAE,WAAW,EAAE,CAAC;CAC1B;AAED,MAAM,WAAW,aAAa;IAC5B,EAAE,EAAE,MAAM,CAAC;IACX,KAAK,EAAE,KAAK,CAAC,SAAS,CAAC;IACvB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,UAAU,CAAC,EAAE,KAAK,CAAC,aAAa,CAAC;QAAE,SAAS,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;IACzD,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,eAAe,CAAC,EAAE,OAAO,CAAC;IAC1B,QAAQ,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;CAC5B;AAED,MAAM,WAAW,aAAa;IAC5B;;;;OAIG;IACH,KAAK,EAAE,MAAM,CAAC;IACd,2EAA2E;IAC3E,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,sFAAsF;IACtF,IAAI,CAAC,EAAE,WAAW,EAAE,CAAC;IACrB,mGAAmG;IACnG,QAAQ,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;IAC3B,+BAA+B;IAC/B,QAAQ,CAAC,EAAE,GAAG,CAAC,MAAM,CAAC,CAAC;IACvB,qCAAqC;IACrC,QAAQ,CAAC,EAAE,CAAC,QAAQ,EAAE,GAAG,CAAC,MAAM,CAAC,EAAE,WAAW,EAAE,WAAW,KAAK,IAAI,CAAC;IACrE,kDAAkD;IAClD,QAAQ,CAAC,EAAE,CAAC,IAAI,EAAE,WAAW,EAAE,UAAU,EAAE,OAAO,KAAK,IAAI,CAAC;IAC5D,aAAa,CAAC,EAAE,QAAQ,GAAG,OAAO,CAAC;IACnC,IAAI,CAAC,EAAE,IAAI,GAAG,IAAI,CAAC;IACnB,mFAAmF;IACnF,mBAAmB,CAAC,EAAE,MAAM,CAAC;IAC7B;;;;;;OAMG;IACH,UAAU,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;IAC7B,4CAA4C;IAC5C,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,8GAA8G;IAC9G,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,KAAK,CAAC,EAAE,KAAK,CAAC,aAAa,CAAC;IAC5B,EAAE,CAAC,EAAE,MAAM,CAAC;CACb;AA4BD,wBAAgB,QAAQ,CAAC,MAAM,EAAE,aAAa,GAAG,IAAI,CAEpD;AA2MD,wBAAgB,QAAQ,CAAC,EACvB,KAAK,EACL,SAAiB,EACjB,IAAI,EAAE,QAAQ,EACd,QAAQ,EACR,QAAQ,EAAE,YAAY,EACtB,QAAQ,EACR,QAAQ,EACR,aAAwB,EACxB,IAAW,EACX,mBAAmB,EACnB,UAAU,EACV,OAAe,EACf,eAAmB,EACnB,YAAY,EACZ,SAAS,EACT,KAAK,EACL,EAAE,GACH,EAAE,aAAa,qBAmhBf"}
|