@neasg/design-system 0.4.35 → 0.4.95
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/activity-card.d.ts +29 -0
- package/dist/activity-card.js +65 -0
- package/dist/autocomplete.d.ts +84 -0
- package/dist/autocomplete.js +267 -0
- package/dist/avatar.d.ts +3 -1
- package/dist/avatar.js +27 -10
- package/dist/badge.js +1 -1
- package/dist/button.d.ts +1 -1
- package/dist/button.js +1 -0
- package/dist/calendar.js +1 -1
- package/dist/card.d.ts +1 -1
- package/dist/card.js +1 -1
- package/dist/compound-search-input.d.ts +8 -0
- package/dist/compound-search-input.js +9 -0
- package/dist/date-input.js +3 -3
- package/dist/dialog.d.ts +3 -1
- package/dist/dialog.js +6 -2
- package/dist/draggable-tabs.js +9 -8
- package/dist/index.d.ts +12 -4
- package/dist/index.js +6 -2
- package/dist/label-value-grid.js +6 -4
- package/dist/layout.d.ts +39 -6
- package/dist/layout.js +118 -42
- package/dist/lib/utils.js +1 -0
- package/dist/message-item.d.ts +23 -3
- package/dist/message-item.js +115 -16
- package/dist/notification.d.ts +14 -3
- package/dist/notification.js +32 -7
- package/dist/popover-menu.d.ts +4 -2
- package/dist/popover-menu.js +65 -5
- package/dist/popover.d.ts +5 -2
- package/dist/popover.js +3 -3
- package/dist/rich-text-editor.d.ts +2 -1
- package/dist/rich-text-editor.js +28 -3
- package/dist/routing-timeline.d.ts +7 -2
- package/dist/routing-timeline.js +67 -29
- package/dist/search-input.d.ts +4 -0
- package/dist/search-input.js +2 -2
- package/dist/select-primitive.js +1 -1
- package/dist/select.d.ts +3 -1
- package/dist/select.js +9 -4
- package/dist/status-dot.d.ts +13 -0
- package/dist/status-dot.js +19 -0
- package/dist/styles.css +0 -19
- package/dist/table-column-filter.js +7 -5
- package/dist/table.d.ts +9 -1
- package/dist/table.js +25 -11
- package/dist/tabs.d.ts +1 -1
- package/dist/tabs.js +6 -4
- package/dist/textarea.d.ts +1 -0
- package/dist/textarea.js +3 -2
- package/dist/theme-switcher.d.ts +3 -1
- package/dist/theme-switcher.js +8 -2
- package/package.json +1 -1
package/dist/date-input.js
CHANGED
|
@@ -164,11 +164,11 @@ const DateInput = React.forwardRef((props, ref) => {
|
|
|
164
164
|
}
|
|
165
165
|
};
|
|
166
166
|
const disabledDays = (date) => isDateOutsideBounds(date, minDate, maxDate);
|
|
167
|
-
const calendarContent = (_jsx(_Fragment, { children: props.mode === "range" ? (_jsx(Calendar, { mode: "range", selected: selectedRange, onSelect: handleRangeSelect, disabled: disabledDays, defaultMonth: (_b = selectedRange === null || selectedRange === void 0 ? void 0 : selectedRange.from) !== null && _b !== void 0 ? _b : selectedRange === null || selectedRange === void 0 ? void 0 : selectedRange.to, numberOfMonths: (_c = props.numberOfMonths) !== null && _c !== void 0 ? _c : 2, showOutsideDays: false, autoFocus: true })) : (_jsx(Calendar, { mode: "single", selected: selectedDate, onSelect: handleSelect, disabled: disabledDays, defaultMonth: selectedDate, autoFocus: true })) }));
|
|
167
|
+
const calendarContent = (_jsx(_Fragment, { children: props.mode === "range" ? (_jsx(Calendar, { mode: "range", selected: selectedRange, onSelect: handleRangeSelect, disabled: disabledDays, defaultMonth: (_b = selectedRange === null || selectedRange === void 0 ? void 0 : selectedRange.from) !== null && _b !== void 0 ? _b : selectedRange === null || selectedRange === void 0 ? void 0 : selectedRange.to, numberOfMonths: (_c = props.numberOfMonths) !== null && _c !== void 0 ? _c : 2, showOutsideDays: false, className: "[&_.rdp-month:not(:first-of-type)]:hidden sm:[&_.rdp-month:not(:first-of-type)]:flex", autoFocus: true })) : (_jsx(Calendar, { mode: "single", selected: selectedDate, onSelect: handleSelect, disabled: disabledDays, defaultMonth: selectedDate, autoFocus: true })) }));
|
|
168
168
|
if (appearance === "inline") {
|
|
169
|
-
return (_jsxs("span", { className: cn("inline-flex", className), "data-disabled": disabled ? "true" : undefined, "data-invalid": isInvalid ? "true" : undefined, children: [_jsx(Popover, { open: open, onOpenChange: handleOpenChange, align: "start", title: popoverTitle, surface: popoverTitle ? "menu" : "panel", contentClassName: "w-auto p-0", trigger: _jsxs("button", { ref: ref, type: "button", id: inputId, disabled: disabled, "aria-invalid": isInvalid ? "true" : undefined, "aria-describedby": [descriptionId, errorId].filter(Boolean).join(" ") || undefined, className: cn("inline-flex cursor-pointer items-baseline rounded-sm border-0 bg-transparent p-0 font-medium text-interactive underline decoration-interactive/40 underline-offset-4 transition-colors hover:decoration-interactive focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2 disabled:pointer-events-none disabled:cursor-not-allowed disabled:opacity-50", !displayValue && "text-muted-foreground decoration-border", isInvalid && "text-destructive decoration-destructive", triggerClassName), children: [_jsxs("span", { className: "sr-only", children: [label, ": "] }), _jsx("span", { children: displayValue !== null && displayValue !== void 0 ? displayValue : placeholder })] }), children: calendarContent }), showDescription ? (_jsx("span", { id: descriptionId, className: "sr-only", children: description })) : null, error ? (_jsx("span", { id: errorId, role: "alert", className: "sr-only", children: error })) : null] }));
|
|
169
|
+
return (_jsxs("span", { className: cn("inline-flex", className), "data-disabled": disabled ? "true" : undefined, "data-invalid": isInvalid ? "true" : undefined, children: [_jsx(Popover, { open: open, onOpenChange: handleOpenChange, align: "start", title: popoverTitle, surface: popoverTitle ? "menu" : "panel", collisionPadding: 8, contentClassName: "max-h-[var(--radix-popover-content-available-height)] w-auto overflow-auto p-0 [&_[data-slot=popover-title]]:px-3", trigger: _jsxs("button", { ref: ref, type: "button", id: inputId, disabled: disabled, "aria-invalid": isInvalid ? "true" : undefined, "aria-describedby": [descriptionId, errorId].filter(Boolean).join(" ") || undefined, className: cn("inline-flex cursor-pointer items-baseline rounded-sm border-0 bg-transparent p-0 font-medium text-interactive underline decoration-interactive/40 underline-offset-4 transition-colors hover:decoration-interactive focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2 disabled:pointer-events-none disabled:cursor-not-allowed disabled:opacity-50", !displayValue && "text-muted-foreground decoration-border", isInvalid && "text-destructive decoration-destructive", triggerClassName), children: [_jsxs("span", { className: "sr-only", children: [label, ": "] }), _jsx("span", { children: displayValue !== null && displayValue !== void 0 ? displayValue : placeholder })] }), children: calendarContent }), showDescription ? (_jsx("span", { id: descriptionId, className: "sr-only", children: description })) : null, error ? (_jsx("span", { id: errorId, role: "alert", className: "sr-only", children: error })) : null] }));
|
|
170
170
|
}
|
|
171
|
-
return (_jsxs(Field, { className: className, "data-disabled": disabled ? "true" : undefined, "data-invalid": isInvalid ? "true" : undefined, children: [_jsx(FieldLabel, { htmlFor: inputId, className: cn(hideLabel && "sr-only", labelClassName), children: label }), _jsxs("div", { className: "relative", children: [_jsx(Popover, { open: open, onOpenChange: handleOpenChange, align: "start", title: popoverTitle, surface: popoverTitle ? "menu" : "panel", contentClassName: "w-auto p-0", trigger: _jsx("button", { ref: ref, type: "button", id: inputId, disabled: disabled, "aria-invalid": isInvalid ? "true" : undefined, "aria-describedby": [descriptionId, errorId].filter(Boolean).join(" ") || undefined, className: cn(inputControlClassName, "relative cursor-pointer pr-9 text-left", showClearButton && "pr-16", !displayValue && "text-muted-foreground", isInvalid && "border-destructive focus-visible:ring-destructive", triggerClassName), children: _jsx("span", { className: "block truncate", children: displayValue !== null && displayValue !== void 0 ? displayValue : placeholder }) }), children: calendarContent }), _jsxs("span", { "aria-hidden": showClearButton ? undefined : true, className: "pointer-events-none absolute inset-y-0 right-3 flex items-center gap-2 text-muted-foreground", children: [showClearButton ? (_jsx("button", { type: "button", "aria-label": resolvedClearLabel, onClick: handleClear, className: "pointer-events-auto inline-flex h-4 w-4 cursor-pointer items-center justify-center rounded-sm text-muted-foreground transition-colors hover:text-foreground focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring disabled:pointer-events-none disabled:cursor-not-allowed", children: _jsx(XIcon, { size: 14, className: "flex items-center justify-center" }) })) : null, _jsx(CalendarIcon, { "aria-hidden": "true", className: "h-4 w-4 shrink-0", strokeWidth: 2 })] })] }), showDescription ? (_jsx(FieldDescription, { id: descriptionId, className: descriptionClassName, children: description })) : null, _jsx(FieldError, { id: errorId, className: errorClassName, children: error })] }));
|
|
171
|
+
return (_jsxs(Field, { className: className, "data-disabled": disabled ? "true" : undefined, "data-invalid": isInvalid ? "true" : undefined, children: [_jsx(FieldLabel, { htmlFor: inputId, className: cn(hideLabel && "sr-only", labelClassName), children: label }), _jsxs("div", { className: "relative", children: [_jsx(Popover, { open: open, onOpenChange: handleOpenChange, align: "start", title: popoverTitle, surface: popoverTitle ? "menu" : "panel", collisionPadding: 8, contentClassName: "max-h-[var(--radix-popover-content-available-height)] w-auto overflow-auto p-0 [&_[data-slot=popover-title]]:px-3", trigger: _jsx("button", { ref: ref, type: "button", id: inputId, disabled: disabled, "aria-invalid": isInvalid ? "true" : undefined, "aria-describedby": [descriptionId, errorId].filter(Boolean).join(" ") || undefined, className: cn(inputControlClassName, "relative cursor-pointer pr-9 text-left", showClearButton && "pr-16", !displayValue && "text-muted-foreground", isInvalid && "border-destructive focus-visible:ring-destructive", triggerClassName), children: _jsx("span", { className: "block truncate", children: displayValue !== null && displayValue !== void 0 ? displayValue : placeholder }) }), children: calendarContent }), _jsxs("span", { "aria-hidden": showClearButton ? undefined : true, className: "pointer-events-none absolute inset-y-0 right-3 flex items-center gap-2 text-muted-foreground", children: [showClearButton ? (_jsx("button", { type: "button", "aria-label": resolvedClearLabel, onClick: handleClear, className: "pointer-events-auto inline-flex h-4 w-4 cursor-pointer items-center justify-center rounded-sm text-muted-foreground transition-colors hover:text-foreground focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring disabled:pointer-events-none disabled:cursor-not-allowed", children: _jsx(XIcon, { size: 14, className: "flex items-center justify-center" }) })) : null, _jsx(CalendarIcon, { "aria-hidden": "true", className: "h-4 w-4 shrink-0", strokeWidth: 2 })] })] }), showDescription ? (_jsx(FieldDescription, { id: descriptionId, className: descriptionClassName, children: description })) : null, _jsx(FieldError, { id: errorId, className: errorClassName, children: error })] }));
|
|
172
172
|
});
|
|
173
173
|
DateInput.displayName = "DateInput";
|
|
174
174
|
export { DateInput };
|
package/dist/dialog.d.ts
CHANGED
|
@@ -23,6 +23,8 @@ export interface DialogProps {
|
|
|
23
23
|
contentClassName?: string;
|
|
24
24
|
bodyClassName?: string;
|
|
25
25
|
hideCloseButton?: boolean;
|
|
26
|
+
/** Whether a pointer interaction outside the dialog closes it. */
|
|
27
|
+
closeOnOutsideClick?: boolean;
|
|
26
28
|
}
|
|
27
|
-
declare function Dialog({ open, defaultOpen, onOpenChange, modal, trigger, title, description, children, footer, primaryAction, secondaryAction, contentClassName, bodyClassName, hideCloseButton, }: DialogProps): import("react/jsx-runtime").JSX.Element;
|
|
29
|
+
declare function Dialog({ open, defaultOpen, onOpenChange, modal, trigger, title, description, children, footer, primaryAction, secondaryAction, contentClassName, bodyClassName, hideCloseButton, closeOnOutsideClick, }: DialogProps): import("react/jsx-runtime").JSX.Element;
|
|
28
30
|
export { Dialog };
|
package/dist/dialog.js
CHANGED
|
@@ -31,7 +31,7 @@ function renderDialogAction({ action, close, defaultVariant, }) {
|
|
|
31
31
|
}
|
|
32
32
|
}, children: label }));
|
|
33
33
|
}
|
|
34
|
-
function Dialog({ open, defaultOpen, onOpenChange, modal, trigger, title, description, children, footer, primaryAction, secondaryAction, contentClassName, bodyClassName, hideCloseButton, }) {
|
|
34
|
+
function Dialog({ open, defaultOpen, onOpenChange, modal, trigger, title, description, children, footer, primaryAction, secondaryAction, contentClassName, bodyClassName, hideCloseButton = false, closeOnOutsideClick = false, }) {
|
|
35
35
|
const [isOpen, setIsOpen] = useControllableOpen({
|
|
36
36
|
open,
|
|
37
37
|
defaultOpen,
|
|
@@ -43,7 +43,11 @@ function Dialog({ open, defaultOpen, onOpenChange, modal, trigger, title, descri
|
|
|
43
43
|
const body = resolveDialogRenderable(children, helpers);
|
|
44
44
|
const customFooter = resolveDialogRenderable(footer, helpers);
|
|
45
45
|
const hasFooter = Boolean(customFooter || primaryAction || secondaryAction);
|
|
46
|
-
return (_jsxs(DialogRoot, { open: isOpen, onOpenChange: setIsOpen, modal: modal, children: [trigger ? _jsx(DialogTrigger, { asChild: true, children: trigger }) : null, _jsxs(DialogSurface, {
|
|
46
|
+
return (_jsxs(DialogRoot, { open: isOpen, onOpenChange: setIsOpen, modal: modal, children: [trigger ? _jsx(DialogTrigger, { asChild: true, children: trigger }) : null, _jsxs(DialogSurface, { ...(!description ? { "aria-describedby": undefined } : {}), className: contentClassName, hideCloseButton: hideCloseButton, onPointerDownOutside: (event) => {
|
|
47
|
+
if (!closeOnOutsideClick) {
|
|
48
|
+
event.preventDefault();
|
|
49
|
+
}
|
|
50
|
+
}, children: [_jsxs(DialogHeader, { children: [_jsx(DialogTitle, { children: title }), description ? (_jsx(DialogDescription, { children: description })) : null] }), body ? _jsx("div", { className: cn("grid gap-4", bodyClassName), children: body }) : null, hasFooter ? (_jsx(DialogFooter, { children: customFooter !== null && customFooter !== void 0 ? customFooter : (_jsxs(_Fragment, { children: [secondaryAction
|
|
47
51
|
? renderDialogAction({
|
|
48
52
|
action: secondaryAction,
|
|
49
53
|
close: helpers.close,
|
package/dist/draggable-tabs.js
CHANGED
|
@@ -3,12 +3,13 @@ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
|
3
3
|
import { DndContext, closestCenter, KeyboardSensor, PointerSensor, useSensor, useSensors, } from "@dnd-kit/core";
|
|
4
4
|
import { SortableContext, horizontalListSortingStrategy, sortableKeyboardCoordinates, useSortable, } from "@dnd-kit/sortable";
|
|
5
5
|
import { CSS } from "@dnd-kit/utilities";
|
|
6
|
+
import { GripVertical } from "lucide-react";
|
|
6
7
|
import { XIcon } from "./animated-icons/x";
|
|
7
8
|
import { Badge } from "./badge";
|
|
8
9
|
import { GuidanceTip } from "./guidance-tip";
|
|
9
10
|
import { cn } from "./lib/utils";
|
|
10
11
|
import { Tooltip } from "./tooltip";
|
|
11
|
-
function TabButton({ item, dragHandleProps, }) {
|
|
12
|
+
function TabButton({ item, dragHandleProps, showDivider = false, }) {
|
|
12
13
|
var _a, _b, _c;
|
|
13
14
|
const isDraggable = Boolean(dragHandleProps);
|
|
14
15
|
const labelClassName = item.labelClassName
|
|
@@ -16,17 +17,17 @@ function TabButton({ item, dragHandleProps, }) {
|
|
|
16
17
|
: item.active
|
|
17
18
|
? "text-foreground"
|
|
18
19
|
: "text-muted-foreground hover:text-foreground";
|
|
19
|
-
const content = (_jsxs("div", { className: cn("group flex items-center gap-1.5 border-b-
|
|
20
|
+
const content = (_jsxs("div", { className: cn("group/draggable-tab relative -mb-px flex items-center gap-1.5 border-b-[3px] px-2.5 transition-colors select-none", item.disabled
|
|
20
21
|
? "cursor-not-allowed opacity-50"
|
|
21
22
|
: isDraggable
|
|
22
23
|
? "cursor-grab active:cursor-grabbing"
|
|
23
24
|
: "cursor-pointer", item.active
|
|
24
25
|
? (_a = item.activeClassName) !== null && _a !== void 0 ? _a : "border-[hsl(var(--tab-indicator))] bg-transparent hover:bg-transparent"
|
|
25
|
-
: (_b = item.inactiveClassName) !== null && _b !== void 0 ? _b : "border-transparent hover:bg-[hsl(var(--tab-trigger-hover-background))]", item.className), ...dragHandleProps, children: [_jsxs("button", { type: "button", onClick: item.disabled ? undefined : item.onSelect, disabled: item.disabled, className: cn("flex cursor-pointer items-center gap-1.5 py-2 pr-1 text-sm font-medium whitespace-nowrap disabled:cursor-not-allowed", labelClassName), children: [item.badge ? (_jsx(Badge, { variant: item.badge.variant, bordered: item.badge.bordered, size: "icon", children: item.badge.label })) : null, item.leading, item.label, item.trailing] }), item.onClose ? (_jsx("button", { type: "button", onClick: (event) => {
|
|
26
|
+
: (_b = item.inactiveClassName) !== null && _b !== void 0 ? _b : "border-transparent hover:bg-[hsl(var(--tab-trigger-hover-background))]", item.className), ...dragHandleProps, children: [isDraggable ? (_jsx("span", { "data-slot": "draggable-tab-grip", "aria-hidden": "true", className: "pointer-events-none absolute left-0 top-1/2 z-10 inline-flex h-5 w-4 -translate-x-1/2 -translate-y-1/2 items-center justify-center rounded border border-border bg-background text-muted-foreground opacity-0 shadow-sm transition-opacity group-hover/draggable-tab:opacity-100 group-has-[:focus-visible]/draggable-tab:opacity-100", children: _jsx(GripVertical, { className: "h-3 w-3" }) })) : null, _jsxs("button", { type: "button", onClick: item.disabled ? undefined : item.onSelect, disabled: item.disabled, className: cn("flex cursor-pointer items-center gap-1.5 py-2 pr-1 text-sm font-medium whitespace-nowrap disabled:cursor-not-allowed", labelClassName), children: [item.badge ? (_jsx(Badge, { variant: item.badge.variant, bordered: item.badge.bordered, size: "icon", children: item.badge.label })) : null, item.leading, item.label, item.trailing] }), item.onClose ? (_jsx("button", { type: "button", onClick: (event) => {
|
|
26
27
|
var _a;
|
|
27
28
|
event.stopPropagation();
|
|
28
29
|
(_a = item.onClose) === null || _a === void 0 ? void 0 : _a.call(item);
|
|
29
|
-
}, className: cn("cursor-pointer rounded p-1 text-muted-foreground hover:text-foreground", item.closeButtonClassName), "aria-label": "Close tab", children: _jsx(XIcon, { size: 12 }) })) : null] }));
|
|
30
|
+
}, className: cn("cursor-pointer rounded p-1 text-muted-foreground hover:text-foreground", item.closeButtonClassName), "aria-label": "Close tab", children: _jsx(XIcon, { size: 12 }) })) : null, showDivider ? (_jsx("span", { "data-slot": "draggable-tab-divider", "aria-hidden": "true", className: "pointer-events-none absolute -right-0.5 top-1/2 h-4 w-px -translate-y-1/2 bg-[hsl(var(--layout-surface-border))]" })) : null] }));
|
|
30
31
|
if (item.guidance) {
|
|
31
32
|
return _jsx(GuidanceTip, { ...item.guidance, trigger: content });
|
|
32
33
|
}
|
|
@@ -35,13 +36,13 @@ function TabButton({ item, dragHandleProps, }) {
|
|
|
35
36
|
}
|
|
36
37
|
return (_jsx(Tooltip, { content: item.tooltip, side: (_c = item.tooltipSide) !== null && _c !== void 0 ? _c : "bottom", contentClassName: item.tooltipContentClassName, children: content }));
|
|
37
38
|
}
|
|
38
|
-
function SortableTab({ item }) {
|
|
39
|
-
const { attributes, listeners, setNodeRef, transform, transition, isDragging } = useSortable({ id: item.id });
|
|
39
|
+
function SortableTab({ item, showDivider, }) {
|
|
40
|
+
const { attributes, listeners, setNodeRef, transform, transition, isDragging } = useSortable({ id: item.id, disabled: item.disabled });
|
|
40
41
|
return (_jsx("div", { ref: setNodeRef, style: {
|
|
41
42
|
transform: CSS.Transform.toString(transform),
|
|
42
43
|
transition,
|
|
43
44
|
zIndex: isDragging ? 50 : undefined,
|
|
44
|
-
}, className: cn(isDragging && "opacity-50 shadow-lg"), children: _jsx(TabButton, { item: item, dragHandleProps: { ...attributes, ...listeners } }) }));
|
|
45
|
+
}, className: cn(isDragging && "opacity-50 shadow-lg"), children: _jsx(TabButton, { item: item, showDivider: showDivider, dragHandleProps: item.disabled ? undefined : { ...attributes, ...listeners } }) }));
|
|
45
46
|
}
|
|
46
47
|
function DraggableTabs({ staticTabs = [], tabs, onReorder, className, ...props }) {
|
|
47
48
|
const sensors = useSensors(useSensor(PointerSensor, {
|
|
@@ -61,6 +62,6 @@ function DraggableTabs({ staticTabs = [], tabs, onReorder, className, ...props }
|
|
|
61
62
|
onReorder(oldIndex, newIndex);
|
|
62
63
|
}
|
|
63
64
|
};
|
|
64
|
-
return (_jsxs("div", { "data-slot": "draggable-tabs", className: cn("flex items-end gap-1 border-b overflow-x-auto overflow-y-hidden bg-transparent", "border-[hsl(var(--layout-surface-border))]", className), ...props, children: [staticTabs.map((tab) => (_jsx(TabButton, { item: tab }, tab.id))), _jsx(DndContext, { sensors: sensors, collisionDetection: closestCenter, onDragEnd: handleDragEnd, children: _jsx(SortableContext, { items: tabs.map((tab) => tab.id), strategy: horizontalListSortingStrategy, children: tabs.map((tab) => (_jsx(SortableTab, { item: tab }, tab.id))) }) })] }));
|
|
65
|
+
return (_jsxs("div", { "data-slot": "draggable-tabs", className: cn("flex items-end gap-1 border-b overflow-x-auto overflow-y-hidden bg-transparent", "border-[hsl(var(--layout-surface-border))]", className), ...props, children: [staticTabs.map((tab, index) => (_jsx(TabButton, { item: tab, showDivider: index < staticTabs.length - 1 || tabs.length > 0 }, tab.id))), _jsx(DndContext, { sensors: sensors, collisionDetection: closestCenter, onDragEnd: handleDragEnd, children: _jsx(SortableContext, { items: tabs.map((tab) => tab.id), strategy: horizontalListSortingStrategy, children: tabs.map((tab, index) => (_jsx(SortableTab, { item: tab, showDivider: index < tabs.length - 1 }, tab.id))) }) })] }));
|
|
65
66
|
}
|
|
66
67
|
export { DraggableTabs };
|
package/dist/index.d.ts
CHANGED
|
@@ -7,11 +7,13 @@ export { Alert, AlertAction, AlertConsent, alertVariants, } from "./alert";
|
|
|
7
7
|
export type { AlertActionProps, AlertConsentProps, AlertProps, } from "./alert";
|
|
8
8
|
export { AlertStack } from "./alert-stack";
|
|
9
9
|
export type { AlertStackProps } from "./alert-stack";
|
|
10
|
+
export { ActivityCard, ActivityCardActor, ActivityCardContent, } from "./activity-card";
|
|
11
|
+
export type { ActivityCardActorProps, ActivityCardContentProps, ActivityCardDensity, ActivityCardIconTone, ActivityCardProps, } from "./activity-card";
|
|
10
12
|
export { Badge, badgeVariants } from "./badge";
|
|
11
13
|
export { Card, CardGrid, CardSplitGrid, CardList, CardListItem, } from "./card";
|
|
12
14
|
export type { CardGridProps, CardListItemProps, CardListProps, CardProps, CardSplitGridProps, } from "./card";
|
|
13
15
|
export type { BadgeProps } from "./badge";
|
|
14
|
-
export { MessageAttachmentRow, MessageItem, MessageNewDivider, MessageThread, formatMessageDate, } from "./message-item";
|
|
16
|
+
export { MessageAttachmentRow, MessageItem, MessageNewDivider, MessageThread, formatMessageCardTimestamp, formatMessageDate, } from "./message-item";
|
|
15
17
|
export type { MessageAttachmentRowProps, MessageItemAttachment, MessageItemData, MessageItemProps, MessageNewDividerProps, MessageThreadProps, } from "./message-item";
|
|
16
18
|
export { formatNotificationTimestamp, NotificationItem, NotificationList, NotificationPopover, NotificationTrigger, } from "./notification";
|
|
17
19
|
export type { NotificationAction, NotificationFilter, NotificationIcon, NotificationItemData, NotificationItemProps, NotificationKind, NotificationListProps, NotificationPopoverProps, NotificationTimestamp, NotificationTriggerProps, NotificationTone, FormatNotificationTimestampOptions, } from "./notification";
|
|
@@ -30,6 +32,8 @@ export { DateInput } from "./date-input";
|
|
|
30
32
|
export type { DateInputProps, DateInputRangeProps, DateInputSingleProps, DateRangeInputValue, } from "./date-input";
|
|
31
33
|
export { CountBadge } from "./count-badge";
|
|
32
34
|
export type { CountBadgeProps } from "./count-badge";
|
|
35
|
+
export { StatusDot } from "./status-dot";
|
|
36
|
+
export type { StatusDotProps, StatusDotSize, StatusDotVariant, } from "./status-dot";
|
|
33
37
|
export { EmptyState } from "./empty-state";
|
|
34
38
|
export type { EmptyStateProps } from "./empty-state";
|
|
35
39
|
export { EditableTable } from "./editable-table";
|
|
@@ -90,6 +94,10 @@ export { PopoverMenuContent, PopoverMenuCheckboxItem, PopoverMenuHeader, Popover
|
|
|
90
94
|
export type { PopoverMenuContentProps, PopoverMenuCheckboxItemProps, PopoverMenuHeaderProps, PopoverMenuSectionProps, PopoverMenuItemProps, PopoverMenuDividerProps, PopoverMenuFooterActionProps, PopoverMenuFooterMetaProps, PopoverMenuFooterProps, PopoverMenuGroupProps, PopoverMenuGroupLabelProps, PopoverMenuSearchProps, PopoverMenuScrollAreaProps, PopoverMenuViewProps, } from "./popover-menu";
|
|
91
95
|
export { SearchInput } from "./search-input";
|
|
92
96
|
export type { SearchInputProps } from "./search-input";
|
|
97
|
+
export { CompoundSearchInput } from "./compound-search-input";
|
|
98
|
+
export type { CompoundSearchInputProps } from "./compound-search-input";
|
|
99
|
+
export { Autocomplete, AutocompleteOptions, AutocompletePopover, useAutocompleteController, } from "./autocomplete";
|
|
100
|
+
export type { AutocompleteController, AutocompleteControllerOptions, AutocompleteOption, AutocompleteOptionGroup, AutocompleteOptionRenderState, AutocompleteOptionsProps, AutocompletePopoverProps, AutocompleteProps, AutocompleteStateContent, } from "./autocomplete";
|
|
93
101
|
export { SectionNav } from "./section-nav";
|
|
94
102
|
export type { SectionNavItem, SectionNavProps } from "./section-nav";
|
|
95
103
|
export { GovtMasthead } from "./govt-masthead";
|
|
@@ -111,8 +119,8 @@ export type { TextareaProps } from "./textarea";
|
|
|
111
119
|
export { DraggableTabs, type DraggableTabBadge, type DraggableTabGuidance, type DraggableTabItem, type DraggableTabsProps, } from "./draggable-tabs";
|
|
112
120
|
export { Drawer, } from "./drawer";
|
|
113
121
|
export type { DrawerAction, DrawerProps, DrawerSide } from "./drawer";
|
|
114
|
-
export { DashboardContent, DashboardLayout, DashboardRightPanel, DashboardRightPanelBody, DashboardRightPanelHeader, DashboardRightPanelSection, DashboardRightPanelTabs, DashboardSidebar, DashboardSidebarProfile, DashboardSidebarProfilePopover, SidebarProvider, useSidebar, } from "./layout";
|
|
115
|
-
export type { DashboardContentProps, DashboardLayoutProps, DashboardRightPanelBodyProps, DashboardRightPanelHeaderProps, DashboardRightPanelMode, DashboardRightPanelProps, DashboardRightPanelSectionProps, DashboardRightPanelTabsProps, DashboardSidebarNavDropdownItem, DashboardSidebarNavGroup, DashboardSidebarNavItem, DashboardSidebarNavLinkItem, DashboardSidebarProfileProps, DashboardSidebarProfilePopoverProps, } from "./layout";
|
|
122
|
+
export { DashboardActionPanel, DashboardActionPanelEmptyState, DashboardContent, DashboardLayout, DashboardRightPanel, DashboardRightPanelBody, DashboardRightPanelHeader, DashboardRightPanelSection, DashboardRightPanelTabs, DashboardSidebar, DashboardSidebarProfile, DashboardSidebarProfilePopover, SidebarProvider, useSidebar, } from "./layout";
|
|
123
|
+
export type { DashboardActionPanelProps, DashboardActionPanelEmptyStateProps, DashboardContentProps, DashboardLayoutProps, DashboardRightPanelBodyProps, DashboardRightPanelHeaderProps, DashboardRightPanelMode, DashboardRightPanelProps, DashboardRightPanelSectionProps, DashboardRightPanelTabsProps, DashboardSidebarNavDropdownItem, DashboardSidebarNavGroup, DashboardSidebarNavItem, DashboardSidebarNavLinkItem, DashboardSidebarProfileProps, DashboardSidebarProfilePopoverProps, } from "./layout";
|
|
116
124
|
export { PageHeader } from "./page-header";
|
|
117
125
|
export { PageLayout, PageLayoutContext, PageLayoutControls, PageLayoutHeader, PageLayoutSection, PageLayoutStack, PageLayoutTitle, pageLayoutGapClassNames, pageLayoutStackGapClassNames, } from "./page-layout";
|
|
118
126
|
export type { PageLayoutGap, PageLayoutProps, PageLayoutStackGap, PageLayoutStackProps, PageLayoutTitleProps, } from "./page-layout";
|
|
@@ -134,7 +142,7 @@ export type { TableColumnVisibilityMenuProps } from "./table-column-visibility";
|
|
|
134
142
|
export { useTableSort } from "./use-table-sort";
|
|
135
143
|
export type { UseTableSortOptions, UseTableSortReturn, } from "./use-table-sort";
|
|
136
144
|
export { Table, TableRoot, TableContainer, TableHeader, TableBody, TableFooter, TableHead, TableRow, TableCell, TableRowHeader, TableCaption, TableRowSkeleton, TABLE_SKELETON_PRESETS, } from "./table";
|
|
137
|
-
export type { TableColumn, TableColumnWidths, TableProps, TableResizeMode, TableRowExpansionProps, TableRowTone, TableSortDirection, TableSortingProps, TableSkeletonConfig, TableRowSkeletonProps, } from "./table";
|
|
145
|
+
export type { TableColumn, TableColumnWidths, TableProps, TableResizeMode, TableRowExpansionProps, TableRowIndicatorProps, TableRowTone, TableSortDirection, TableSortingProps, TableSkeletonConfig, TableRowSkeletonProps, } from "./table";
|
|
138
146
|
export type { TableColumnFilter, TableColumnFilterOption, TableDateColumnFilter, TableDateRangeColumnFilter, TableOptionsColumnFilter, TableTextColumnFilter, } from "./table-column-filter";
|
|
139
147
|
export { Tabs, SubTabs, TabsRoot, TabWithDropdown, type TabsItem, type TabsItemLabel, type TabsItemLabelProps, type TabsProps, type SubTabsItem, type SubTabsProps, TabsList, TabsTrigger, TabsContent, type TabWithDropdownProps, useTabsContext, type TabDropdownSection, } from "./tabs";
|
|
140
148
|
export { Tooltip, TooltipRoot, TooltipTrigger, TooltipContent, TooltipProvider, type TooltipProps, } from "./tooltip";
|
package/dist/index.js
CHANGED
|
@@ -3,9 +3,10 @@ export { AvatarProfilePopover, AvatarProfilePopoverContent, AvatarProfilePopover
|
|
|
3
3
|
export * from "./animated-icons";
|
|
4
4
|
export { Alert, AlertAction, AlertConsent, alertVariants, } from "./alert";
|
|
5
5
|
export { AlertStack } from "./alert-stack";
|
|
6
|
+
export { ActivityCard, ActivityCardActor, ActivityCardContent, } from "./activity-card";
|
|
6
7
|
export { Badge, badgeVariants } from "./badge";
|
|
7
8
|
export { Card, CardGrid, CardSplitGrid, CardList, CardListItem, } from "./card";
|
|
8
|
-
export { MessageAttachmentRow, MessageItem, MessageNewDivider, MessageThread, formatMessageDate, } from "./message-item";
|
|
9
|
+
export { MessageAttachmentRow, MessageItem, MessageNewDivider, MessageThread, formatMessageCardTimestamp, formatMessageDate, } from "./message-item";
|
|
9
10
|
export { formatNotificationTimestamp, NotificationItem, NotificationList, NotificationPopover, NotificationTrigger, } from "./notification";
|
|
10
11
|
export { RoutingTimeline } from "./routing-timeline";
|
|
11
12
|
export { RichTextEditor, formatFileSize, replaceTemplateVariables, sanitizeRichTextHtml, } from "./rich-text-editor";
|
|
@@ -15,6 +16,7 @@ export { Switch } from "./switch";
|
|
|
15
16
|
export { ThemeSwitcher } from "./theme-switcher";
|
|
16
17
|
export { DateInput } from "./date-input";
|
|
17
18
|
export { CountBadge } from "./count-badge";
|
|
19
|
+
export { StatusDot } from "./status-dot";
|
|
18
20
|
export { EmptyState } from "./empty-state";
|
|
19
21
|
export { EditableTable } from "./editable-table";
|
|
20
22
|
export { EditButton } from "./edit-button";
|
|
@@ -46,6 +48,8 @@ export { useFileUpload } from "./use-file-upload";
|
|
|
46
48
|
export { Popover, PopoverTitle } from "./popover";
|
|
47
49
|
export { PopoverMenuContent, PopoverMenuCheckboxItem, PopoverMenuHeader, PopoverMenuSection, PopoverMenuItem, PopoverMenuDivider, PopoverMenuFooter, PopoverMenuFooterAction, PopoverMenuFooterMeta, PopoverMenuGroup, PopoverMenuGroupLabel, PopoverMenuSearch, PopoverMenuScrollArea, PopoverMenuView, } from "./popover-menu";
|
|
48
50
|
export { SearchInput } from "./search-input";
|
|
51
|
+
export { CompoundSearchInput } from "./compound-search-input";
|
|
52
|
+
export { Autocomplete, AutocompleteOptions, AutocompletePopover, useAutocompleteController, } from "./autocomplete";
|
|
49
53
|
export { SectionNav } from "./section-nav";
|
|
50
54
|
export { GovtMasthead } from "./govt-masthead";
|
|
51
55
|
export { GuidanceTip } from "./guidance-tip";
|
|
@@ -57,7 +61,7 @@ export { useViewportThreshold } from "./use-viewport-threshold";
|
|
|
57
61
|
export { Textarea } from "./textarea";
|
|
58
62
|
export { DraggableTabs, } from "./draggable-tabs";
|
|
59
63
|
export { Drawer, } from "./drawer";
|
|
60
|
-
export { DashboardContent, DashboardLayout, DashboardRightPanel, DashboardRightPanelBody, DashboardRightPanelHeader, DashboardRightPanelSection, DashboardRightPanelTabs, DashboardSidebar, DashboardSidebarProfile, DashboardSidebarProfilePopover, SidebarProvider, useSidebar, } from "./layout";
|
|
64
|
+
export { DashboardActionPanel, DashboardActionPanelEmptyState, DashboardContent, DashboardLayout, DashboardRightPanel, DashboardRightPanelBody, DashboardRightPanelHeader, DashboardRightPanelSection, DashboardRightPanelTabs, DashboardSidebar, DashboardSidebarProfile, DashboardSidebarProfilePopover, SidebarProvider, useSidebar, } from "./layout";
|
|
61
65
|
export { PageHeader } from "./page-header";
|
|
62
66
|
export { PageLayout, PageLayoutContext, PageLayoutControls, PageLayoutHeader, PageLayoutSection, PageLayoutStack, PageLayoutTitle, pageLayoutGapClassNames, pageLayoutStackGapClassNames, } from "./page-layout";
|
|
63
67
|
export { WorkspaceHeader } from "./workspace-header";
|
package/dist/label-value-grid.js
CHANGED
|
@@ -32,14 +32,14 @@ function LabelValueGrid({ items, columns = 4, density = "default", className, it
|
|
|
32
32
|
const element = containerRef.current;
|
|
33
33
|
if (!element)
|
|
34
34
|
return;
|
|
35
|
-
const GAP_PX = 24;
|
|
36
35
|
let frameId = null;
|
|
37
36
|
const updateColumns = () => {
|
|
38
37
|
const width = getAvailableWidth(element);
|
|
39
38
|
if (width <= 0) {
|
|
40
39
|
return;
|
|
41
40
|
}
|
|
42
|
-
|
|
41
|
+
const columnGap = Number.parseFloat(window.getComputedStyle(element).columnGap) || 0;
|
|
42
|
+
setResolvedColumns(getResponsiveColumnCount(width, columns, resolvedMinColumnWidth, columnGap));
|
|
43
43
|
};
|
|
44
44
|
const requestUpdate = () => {
|
|
45
45
|
if (frameId !== null) {
|
|
@@ -63,8 +63,10 @@ function LabelValueGrid({ items, columns = 4, density = "default", className, it
|
|
|
63
63
|
window.removeEventListener("resize", requestUpdate);
|
|
64
64
|
observer.disconnect();
|
|
65
65
|
};
|
|
66
|
-
}, [columns, resolvedMinColumnWidth]);
|
|
67
|
-
return (_jsx("div", { ref: containerRef, className: cn("grid
|
|
66
|
+
}, [columns, density, resolvedMinColumnWidth]);
|
|
67
|
+
return (_jsx("div", { ref: containerRef, className: cn("grid items-start", density === "compact"
|
|
68
|
+
? "auto-rows-auto gap-x-4 gap-y-3"
|
|
69
|
+
: "auto-rows-fr gap-x-6 gap-y-6", className), style: {
|
|
68
70
|
...style,
|
|
69
71
|
gridTemplateColumns: `repeat(${resolvedColumns}, minmax(0, 1fr))`,
|
|
70
72
|
}, ...props, children: resolvedItems.map((item, index) => {
|
package/dist/layout.d.ts
CHANGED
|
@@ -2,10 +2,13 @@ import * as React from "react";
|
|
|
2
2
|
import { type AvatarProfileProps } from "./avatar";
|
|
3
3
|
import { type AvatarProfilePopoverProps } from "./avatar-profile-popover";
|
|
4
4
|
import { type CountBadgeProps } from "./count-badge";
|
|
5
|
+
import { type EmptyStateProps } from "./empty-state";
|
|
5
6
|
import { type TabsProps } from "./tabs";
|
|
6
7
|
export type DashboardRightPanelMode = "responsive" | "persistent";
|
|
7
8
|
type SidebarContextType = {
|
|
8
9
|
isCollapsed: boolean;
|
|
10
|
+
isContentCollapsed: boolean;
|
|
11
|
+
isContentVisible: boolean;
|
|
9
12
|
toggle: () => void;
|
|
10
13
|
collapse: () => void;
|
|
11
14
|
};
|
|
@@ -60,10 +63,14 @@ export interface DashboardSidebarProps extends React.HTMLAttributes<HTMLElement>
|
|
|
60
63
|
logo?: React.ReactNode | ((context: {
|
|
61
64
|
isCollapsed: boolean;
|
|
62
65
|
}) => React.ReactNode);
|
|
66
|
+
/** Replaces the default expand chevron while the sidebar is collapsed. */
|
|
67
|
+
collapsedToggleIcon?: React.ReactNode;
|
|
63
68
|
search?: React.ReactNode | ((context: {
|
|
64
69
|
isCollapsed: boolean;
|
|
65
70
|
}) => React.ReactNode);
|
|
66
71
|
navGroups?: DashboardSidebarNavGroup[];
|
|
72
|
+
/** Shows a divider between sidebar search and navigation. */
|
|
73
|
+
showNavigationDivider?: boolean;
|
|
67
74
|
footerItems?: DashboardSidebarNavItem[];
|
|
68
75
|
footer?: React.ReactNode | ((context: {
|
|
69
76
|
isCollapsed: boolean;
|
|
@@ -123,7 +130,7 @@ export interface DashboardSidebarProfilePopoverProps extends Omit<DashboardSideb
|
|
|
123
130
|
}
|
|
124
131
|
declare function DashboardSidebarProfile({ isCollapsed, ...props }: DashboardSidebarProfileProps): import("react/jsx-runtime").JSX.Element;
|
|
125
132
|
declare function DashboardSidebarProfilePopover({ align, alignOffset, avoidCollisions, children, collisionPadding, contentClassName, defaultOpen, modal, onOpenChange, open, side, sideOffset, triggerAriaLabel, triggerClassName, ...profileProps }: DashboardSidebarProfilePopoverProps): import("react/jsx-runtime").JSX.Element;
|
|
126
|
-
declare function DashboardSidebar({ className, children, logo, search, navGroups, footerItems, footer, toggleAriaLabel, ...props }: DashboardSidebarProps): import("react/jsx-runtime").JSX.Element;
|
|
133
|
+
declare function DashboardSidebar({ className, children, logo, collapsedToggleIcon, search, navGroups, showNavigationDivider, footerItems, footer, toggleAriaLabel, ...props }: DashboardSidebarProps): import("react/jsx-runtime").JSX.Element;
|
|
127
134
|
export interface DashboardContentProps extends React.HTMLAttributes<HTMLElement> {
|
|
128
135
|
hasSidebar?: boolean;
|
|
129
136
|
rightPanel?: React.ReactNode;
|
|
@@ -142,16 +149,38 @@ export interface DashboardContentProps extends React.HTMLAttributes<HTMLElement>
|
|
|
142
149
|
surfaceClassName?: string;
|
|
143
150
|
}
|
|
144
151
|
export interface DashboardRightPanelProps extends React.HTMLAttributes<HTMLDivElement> {
|
|
152
|
+
/** `plain` uses the base background used by Figma two-panel workflows. */
|
|
153
|
+
surface?: "default" | "plain";
|
|
154
|
+
}
|
|
155
|
+
export interface DashboardActionPanelProps extends Omit<DashboardRightPanelProps, "surface" | "title"> {
|
|
156
|
+
/** Stable identity that can be used by a future movable-panel controller. */
|
|
157
|
+
panelId?: string;
|
|
158
|
+
headerSpacing?: DashboardRightPanelHeaderProps["spacing"];
|
|
159
|
+
title: React.ReactNode;
|
|
160
|
+
subtitle?: React.ReactNode;
|
|
161
|
+
badge?: React.ReactNode;
|
|
162
|
+
action?: React.ReactNode;
|
|
163
|
+
headerChildren?: React.ReactNode;
|
|
164
|
+
}
|
|
165
|
+
export interface DashboardActionPanelEmptyStateProps extends EmptyStateProps {
|
|
145
166
|
}
|
|
146
167
|
export interface DashboardRightPanelHeaderProps extends Omit<React.HTMLAttributes<HTMLDivElement>, "title"> {
|
|
168
|
+
/** Fixed 16px card inset for composed message panels. */
|
|
169
|
+
spacing?: "default" | "comfortable";
|
|
147
170
|
title: React.ReactNode;
|
|
148
171
|
subtitle?: React.ReactNode;
|
|
149
172
|
badge?: React.ReactNode;
|
|
150
173
|
action?: React.ReactNode;
|
|
151
174
|
}
|
|
152
175
|
export interface DashboardRightPanelBodyProps extends React.HTMLAttributes<HTMLDivElement> {
|
|
176
|
+
/** Inset used by the panel body. `spacious` matches wide two-panel workflows. */
|
|
177
|
+
spacing?: "default" | "comfortable" | "spacious";
|
|
178
|
+
/** Removes the body top inset so the first item follows the panel header without a second gap. */
|
|
179
|
+
topInset?: "default" | "none";
|
|
153
180
|
/** Fixed footer content such as a composer or action bar. */
|
|
154
181
|
footer?: React.ReactNode;
|
|
182
|
+
/** Adds a full-width divider and an independently padded footer surface. */
|
|
183
|
+
footerVariant?: "inline" | "separated";
|
|
155
184
|
/** Class names applied to the scrollable body content when `footer` is provided. */
|
|
156
185
|
contentClassName?: string;
|
|
157
186
|
/** Class names applied to the fixed footer wrapper. */
|
|
@@ -164,11 +193,15 @@ export interface DashboardRightPanelSectionProps extends Omit<React.HTMLAttribut
|
|
|
164
193
|
descriptionClassName?: string;
|
|
165
194
|
}
|
|
166
195
|
export interface DashboardRightPanelTabsProps extends TabsProps {
|
|
196
|
+
/** Inset around the segmented tab list. */
|
|
197
|
+
spacing?: "default" | "spacious";
|
|
167
198
|
}
|
|
168
199
|
declare function DashboardRightPanelSection({ className, title, description, titleClassName, descriptionClassName, children, ...props }: DashboardRightPanelSectionProps): import("react/jsx-runtime").JSX.Element;
|
|
169
|
-
declare function DashboardRightPanelTabs({ className, listWrapperClassName, panelClassName, ...props }: DashboardRightPanelTabsProps): import("react/jsx-runtime").JSX.Element;
|
|
170
|
-
declare
|
|
171
|
-
declare function DashboardRightPanelHeader({ className, title, subtitle, badge, action, children, ...props }: DashboardRightPanelHeaderProps): import("react/jsx-runtime").JSX.Element;
|
|
172
|
-
declare
|
|
200
|
+
declare function DashboardRightPanelTabs({ className, listWrapperClassName, panelClassName, spacing, size, ...props }: DashboardRightPanelTabsProps): import("react/jsx-runtime").JSX.Element;
|
|
201
|
+
declare const DashboardRightPanel: React.ForwardRefExoticComponent<DashboardRightPanelProps & React.RefAttributes<HTMLDivElement>>;
|
|
202
|
+
declare function DashboardRightPanelHeader({ className, spacing, title, subtitle, badge, action, children, ...props }: DashboardRightPanelHeaderProps): import("react/jsx-runtime").JSX.Element;
|
|
203
|
+
declare const DashboardActionPanel: React.ForwardRefExoticComponent<DashboardActionPanelProps & React.RefAttributes<HTMLDivElement>>;
|
|
204
|
+
declare function DashboardActionPanelEmptyState(props: DashboardActionPanelEmptyStateProps): import("react/jsx-runtime").JSX.Element;
|
|
205
|
+
declare function DashboardRightPanelBody({ className, contentClassName, footer, footerVariant, footerClassName, spacing, topInset, children, ...props }: DashboardRightPanelBodyProps): import("react/jsx-runtime").JSX.Element;
|
|
173
206
|
declare function DashboardContent({ className, hasSidebar, rightPanel, rightPanelClassName, rightPanelFallbackTrigger, rightPanelMode, rightPanelResizable, rightPanelCollapsible, rightPanelCollapsed, defaultRightPanelCollapsed, onRightPanelCollapsedChange, rightPanelDefaultWidth, rightPanelMinWidth, rightPanelMaxWidth, rightPanelAutoCollapseSidebarBreakpoint, surfaceClassName, children, ...props }: DashboardContentProps): import("react/jsx-runtime").JSX.Element;
|
|
174
|
-
export { DashboardLayout, DashboardSidebar, DashboardSidebarProfile, DashboardSidebarProfilePopover, DashboardContent, DashboardRightPanel, DashboardRightPanelHeader, DashboardRightPanelBody, DashboardRightPanelSection, DashboardRightPanelTabs, };
|
|
207
|
+
export { DashboardLayout, DashboardSidebar, DashboardSidebarProfile, DashboardSidebarProfilePopover, DashboardContent, DashboardActionPanel, DashboardActionPanelEmptyState, DashboardRightPanel, DashboardRightPanelHeader, DashboardRightPanelBody, DashboardRightPanelSection, DashboardRightPanelTabs, };
|