@nadicodeai/ui 12.1.22 → 12.1.24
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/components/badge.js +1 -1
- package/dist/components/button.js +1 -1
- package/dist/components/collection-filters.js +1 -1
- package/dist/components/dashboard-shell.d.ts +5 -1
- package/dist/components/dashboard-shell.d.ts.map +1 -1
- package/dist/components/dashboard-shell.js +4 -4
- package/dist/components/desktop-shell.js +1 -1
- package/dist/components/object-workspace.d.ts +3 -1
- package/dist/components/object-workspace.d.ts.map +1 -1
- package/dist/components/object-workspace.js +3 -3
- package/dist/components/scope-switcher.js +1 -1
- package/dist/components/sidebar.d.ts +3 -3
- package/dist/components/sidebar.d.ts.map +1 -1
- package/dist/components/sidebar.js +15 -5
- package/dist/components/theme-mode-switcher.js +1 -1
- package/dist/components/toggle.js +3 -3
- package/dist/internal/assistant-ui/attachment.js +3 -3
- package/dist/internal/assistant-ui/thread.js +3 -3
- package/dist/internal/assistant-ui/tooltip-icon-button.js +1 -1
- package/dist/lib/merge-tokens.generated.d.ts +6 -0
- package/dist/lib/merge-tokens.generated.d.ts.map +1 -0
- package/dist/lib/merge-tokens.generated.js +7 -0
- package/dist/lib/utils.d.ts.map +1 -1
- package/dist/lib/utils.js +11 -1
- package/package.json +4 -3
package/dist/components/badge.js
CHANGED
|
@@ -2,7 +2,7 @@ import { mergeProps } from "@base-ui/react/merge-props";
|
|
|
2
2
|
import { useRender } from "@base-ui/react/use-render";
|
|
3
3
|
import { cva } from "class-variance-authority";
|
|
4
4
|
import { cn } from "../lib/utils.js";
|
|
5
|
-
const badgeVariants = cva("group/badge inline-flex h-5 w-fit shrink-0 items-center justify-center gap-1 overflow-hidden rounded-md border border-transparent px-2 py-
|
|
5
|
+
const badgeVariants = cva("group/badge inline-flex min-h-5 w-fit max-w-full shrink-0 items-center justify-center gap-1 overflow-hidden rounded-md border border-transparent px-2 py-px text-xs font-medium transition-[background-color,border-color,color,opacity] duration-[var(--nc-duration-confirm)] ease-[var(--nc-ease-out-strong)] has-data-[icon=inline-end]:pr-1.5 has-data-[icon=inline-start]:pl-1.5 aria-invalid:border-destructive [&>svg]:pointer-events-none [&>svg]:size-3!", {
|
|
6
6
|
variants: {
|
|
7
7
|
variant: {
|
|
8
8
|
default: "bg-primary text-primary-foreground [a]:hover:bg-primary-hover",
|
|
@@ -15,7 +15,7 @@ const buttonVariants = cva("group/button inline-flex min-h-touch-target min-w-to
|
|
|
15
15
|
link: "text-primary underline-offset-4 hover:underline",
|
|
16
16
|
},
|
|
17
17
|
size: {
|
|
18
|
-
default: "h-control-height gap-1.5 px-control-padding-inline has-data-[icon=inline-end]:pr-2 has-data-[icon=inline-start]:pl-2",
|
|
18
|
+
default: "h-control-height gap-1.5 px-control-padding-inline has-data-[icon=inline-end]:pr-2 has-data-[icon=inline-start]:pl-2 [@media(hover:hover)_and_(pointer:fine)]:min-h-control-height",
|
|
19
19
|
xs: "h-6 gap-1 px-2 text-xs in-data-[slot=button-group]:rounded-md has-data-[icon=inline-end]:pr-1.5 has-data-[icon=inline-start]:pl-1.5 [&_svg:not([class*='size-'])]:size-3",
|
|
20
20
|
sm: "h-7 gap-1 px-control-padding-inline text-xs in-data-[slot=button-group]:rounded-md has-data-[icon=inline-end]:pr-1.5 has-data-[icon=inline-start]:pl-1.5 [&_svg:not([class*='size-'])]:size-3.5",
|
|
21
21
|
lg: "h-9 gap-1.5 px-control-padding-inline has-data-[icon=inline-end]:pr-2 has-data-[icon=inline-start]:pl-2",
|
|
@@ -46,7 +46,7 @@ export function CollectionFilters({ facets, copy, }) {
|
|
|
46
46
|
.filter((facet) => facet.value)
|
|
47
47
|
.map((facet) => {
|
|
48
48
|
const selected = facet.options.find((option) => option.value === facet.value);
|
|
49
|
-
return (_jsxs(ButtonGroup, { "aria-label": facet.label, className: "min-w-0 max-w-full", children: [_jsx(FilterPicker, { facets: facets, copy: copy, initialField: facet.label, returnFocus: addTrigger, children: _jsxs(Button, { variant: "outline", className: "
|
|
49
|
+
return (_jsxs(ButtonGroup, { "aria-label": facet.label, className: "min-w-0 max-w-full", children: [_jsx(FilterPicker, { facets: facets, copy: copy, initialField: facet.label, returnFocus: addTrigger, children: _jsxs(Button, { variant: "outline", className: "max-w-64", children: [facet.selectedIcon ?? selected?.icon, _jsxs("span", { className: "truncate", children: [facet.label, ":", " ", _jsx("span", { className: selected?.mono ? "nc-type-label-mono" : undefined, children: selected?.label ?? facet.value })] })] }) }), _jsx(Button, { variant: "outline", size: "icon", "aria-label": `${copy.remove}: ${facet.label}`, onClick: () => {
|
|
50
50
|
facet.onValueChange("");
|
|
51
51
|
addTrigger.current?.focus();
|
|
52
52
|
}, children: _jsx(X, { "aria-hidden": "true" }) })] }, facet.label));
|
|
@@ -20,6 +20,10 @@ type DashboardShellProps = Omit<React.ComponentProps<typeof SidebarProvider>, "c
|
|
|
20
20
|
sidebarVariant?: React.ComponentProps<typeof Sidebar>["variant"];
|
|
21
21
|
sidebarCollapsible?: React.ComponentProps<typeof Sidebar>["collapsible"];
|
|
22
22
|
mobileNavigationLabel?: string;
|
|
23
|
+
mobileTitle?: React.ComponentProps<typeof Sidebar>["mobileTitle"];
|
|
24
|
+
mobileDescription?: React.ComponentProps<typeof Sidebar>["mobileDescription"];
|
|
25
|
+
mobileCloseLabel?: React.ComponentProps<typeof Sidebar>["mobileCloseLabel"];
|
|
26
|
+
sidebarRailLabel?: string;
|
|
23
27
|
contentLabel?: string;
|
|
24
28
|
inspectorLabel?: string;
|
|
25
29
|
headerClassName?: string;
|
|
@@ -27,7 +31,7 @@ type DashboardShellProps = Omit<React.ComponentProps<typeof SidebarProvider>, "c
|
|
|
27
31
|
inspectorClassName?: string;
|
|
28
32
|
sidebarResize?: DashboardShellSidebarResize;
|
|
29
33
|
};
|
|
30
|
-
declare function DashboardShell({ sidebar, header, headerActions, inspector, children, sidebarHeader, sidebarFooter, sidebarSide, sidebarVariant, sidebarCollapsible, mobileNavigationLabel, contentLabel, inspectorLabel, className, headerClassName, contentClassName, inspectorClassName, sidebarResize, ...props }: DashboardShellProps): React.JSX.Element;
|
|
34
|
+
declare function DashboardShell({ sidebar, header, headerActions, inspector, children, sidebarHeader, sidebarFooter, sidebarSide, sidebarVariant, sidebarCollapsible, mobileNavigationLabel, mobileTitle, mobileDescription, mobileCloseLabel, sidebarRailLabel, contentLabel, inspectorLabel, className, headerClassName, contentClassName, inspectorClassName, sidebarResize, ...props }: DashboardShellProps): React.JSX.Element;
|
|
31
35
|
export { DashboardShell };
|
|
32
36
|
export type { DashboardShellProps, DashboardShellSidebarResize };
|
|
33
37
|
//# sourceMappingURL=dashboard-shell.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"dashboard-shell.d.ts","sourceRoot":"","sources":["../../src/components/dashboard-shell.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAM/B,OAAO,EACL,OAAO,EAKP,eAAe,EAIhB,MAAM,sBAAsB,CAAC;AAM9B,KAAK,2BAA2B,GAAG;IACjC,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,cAAc,CAAC,EAAE,MAAM,CAAC;CACzB,CAAC;AAEF,KAAK,mBAAmB,GAAG,IAAI,CAAC,KAAK,CAAC,cAAc,CAAC,OAAO,eAAe,CAAC,EAAE,UAAU,CAAC,GAAG;IAC1F,OAAO,EAAE,KAAK,CAAC,SAAS,CAAC;IACzB,MAAM,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;IACzB,aAAa,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;IAChC,SAAS,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;IAC5B,QAAQ,EAAE,KAAK,CAAC,SAAS,CAAC;IAC1B,aAAa,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;IAChC,aAAa,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;IAChC,WAAW,CAAC,EAAE,KAAK,CAAC,cAAc,CAAC,OAAO,OAAO,CAAC,CAAC,MAAM,CAAC,CAAC;IAC3D,cAAc,CAAC,EAAE,KAAK,CAAC,cAAc,CAAC,OAAO,OAAO,CAAC,CAAC,SAAS,CAAC,CAAC;IACjE,kBAAkB,CAAC,EAAE,KAAK,CAAC,cAAc,CAAC,OAAO,OAAO,CAAC,CAAC,aAAa,CAAC,CAAC;IACzE,qBAAqB,CAAC,EAAE,MAAM,CAAC;IAC/B,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,kBAAkB,CAAC,EAAE,MAAM,CAAC;IAC5B,aAAa,CAAC,EAAE,2BAA2B,CAAC;CAC7C,CAAC;
|
|
1
|
+
{"version":3,"file":"dashboard-shell.d.ts","sourceRoot":"","sources":["../../src/components/dashboard-shell.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAM/B,OAAO,EACL,OAAO,EAKP,eAAe,EAIhB,MAAM,sBAAsB,CAAC;AAM9B,KAAK,2BAA2B,GAAG;IACjC,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,cAAc,CAAC,EAAE,MAAM,CAAC;CACzB,CAAC;AAEF,KAAK,mBAAmB,GAAG,IAAI,CAAC,KAAK,CAAC,cAAc,CAAC,OAAO,eAAe,CAAC,EAAE,UAAU,CAAC,GAAG;IAC1F,OAAO,EAAE,KAAK,CAAC,SAAS,CAAC;IACzB,MAAM,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;IACzB,aAAa,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;IAChC,SAAS,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;IAC5B,QAAQ,EAAE,KAAK,CAAC,SAAS,CAAC;IAC1B,aAAa,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;IAChC,aAAa,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;IAChC,WAAW,CAAC,EAAE,KAAK,CAAC,cAAc,CAAC,OAAO,OAAO,CAAC,CAAC,MAAM,CAAC,CAAC;IAC3D,cAAc,CAAC,EAAE,KAAK,CAAC,cAAc,CAAC,OAAO,OAAO,CAAC,CAAC,SAAS,CAAC,CAAC;IACjE,kBAAkB,CAAC,EAAE,KAAK,CAAC,cAAc,CAAC,OAAO,OAAO,CAAC,CAAC,aAAa,CAAC,CAAC;IACzE,qBAAqB,CAAC,EAAE,MAAM,CAAC;IAC/B,WAAW,CAAC,EAAE,KAAK,CAAC,cAAc,CAAC,OAAO,OAAO,CAAC,CAAC,aAAa,CAAC,CAAC;IAClE,iBAAiB,CAAC,EAAE,KAAK,CAAC,cAAc,CAAC,OAAO,OAAO,CAAC,CAAC,mBAAmB,CAAC,CAAC;IAC9E,gBAAgB,CAAC,EAAE,KAAK,CAAC,cAAc,CAAC,OAAO,OAAO,CAAC,CAAC,kBAAkB,CAAC,CAAC;IAC5E,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,kBAAkB,CAAC,EAAE,MAAM,CAAC;IAC5B,aAAa,CAAC,EAAE,2BAA2B,CAAC;CAC7C,CAAC;AAiHF,iBAAS,cAAc,CAAC,EACtB,OAAO,EACP,MAAM,EACN,aAAa,EACb,SAAS,EACT,QAAQ,EACR,aAAa,EACb,aAAa,EACb,WAAoB,EACpB,cAA0B,EAC1B,kBAA2B,EAC3B,qBAAyC,EACzC,WAAW,EACX,iBAAiB,EACjB,gBAAgB,EAChB,gBAAgB,EAChB,YAAkC,EAClC,cAA4B,EAC5B,SAAS,EACT,eAAe,EACf,gBAAgB,EAChB,kBAAkB,EAClB,aAAa,EACb,GAAG,KAAK,EACT,EAAE,mBAAmB,qBAuLrB;AAED,OAAO,EAAE,cAAc,EAAE,CAAC;AAC1B,YAAY,EAAE,mBAAmB,EAAE,2BAA2B,EAAE,CAAC"}
|
|
@@ -6,9 +6,9 @@ import { cn } from "../lib/utils.js";
|
|
|
6
6
|
import { ResizableHandle, ResizablePanel, ResizablePanelGroup } from "./resizable.js";
|
|
7
7
|
import { Sidebar, SidebarContent, SidebarFooter, SidebarHeader, SidebarInset, SidebarProvider, SidebarRail, SidebarTrigger, useSidebar, } from "./sidebar.js";
|
|
8
8
|
const oneYearInSeconds = 60 * 60 * 24 * 365;
|
|
9
|
-
function EmbeddedResizableSidebar({ children, collapsible, includeRail, side, variant, }) {
|
|
9
|
+
function EmbeddedResizableSidebar({ children, collapsible, includeRail, railLabel, side, variant, }) {
|
|
10
10
|
const { state } = useSidebar();
|
|
11
|
-
return (_jsxs("div", { className: "group peer relative h-full text-sidebar-foreground", "data-collapsible": state === "collapsed" ? collapsible : "", "data-side": side, "data-slot": "sidebar", "data-state": state, "data-variant": variant, children: [_jsx("div", { "data-side": side, "data-slot": "sidebar-container", className: "flex size-full text-sidebar-foreground", children: _jsx("div", { "data-sidebar": "sidebar", "data-slot": "sidebar-inner", className: "flex size-full flex-col bg-sidebar", children: children }) }), includeRail ? _jsx(SidebarRail, {}) : null] }));
|
|
11
|
+
return (_jsxs("div", { className: "group peer relative h-full text-sidebar-foreground", "data-collapsible": state === "collapsed" ? collapsible : "", "data-side": side, "data-slot": "sidebar", "data-state": state, "data-variant": variant, children: [_jsx("div", { "data-side": side, "data-slot": "sidebar-container", className: "flex size-full text-sidebar-foreground", children: _jsx("div", { "data-sidebar": "sidebar", "data-slot": "sidebar-inner", className: "flex size-full flex-col bg-sidebar", children: children }) }), includeRail ? _jsx(SidebarRail, { "aria-label": railLabel }) : null] }));
|
|
12
12
|
}
|
|
13
13
|
function DashboardResizablePanelGroup({ bodySlot, contentPanelMinSize, handleLayoutChanged, resizableGroupId, sidebarCollapsible, sidebarPanelDefaultSize, sidebarPanelMaxSize, sidebarPanelMinSize, sidebarSlot, }) {
|
|
14
14
|
const { state } = useSidebar();
|
|
@@ -25,7 +25,7 @@ function DashboardResizablePanelGroup({ bodySlot, contentPanelMinSize, handleLay
|
|
|
25
25
|
}, [sidebarCollapsible, state]);
|
|
26
26
|
return (_jsxs(ResizablePanelGroup, { className: "min-h-svh", id: resizableGroupId, onLayoutChanged: (layout) => handleLayoutChanged(layout, state), orientation: "horizontal", children: [_jsx(ResizablePanel, { collapsedSize: "3rem", collapsible: sidebarCollapsible !== "none", defaultSize: `${sidebarPanelDefaultSize}%`, id: "dashboard-sidebar", maxSize: `${sidebarPanelMaxSize}%`, minSize: `${sidebarPanelMinSize}%`, panelRef: sidebarPanelRef, children: sidebarSlot(sidebarCollapsible, true, true) }), _jsx(ResizableHandle, { withHandle: true }), _jsx(ResizablePanel, { id: "dashboard-content", minSize: `${contentPanelMinSize}%`, children: bodySlot })] }));
|
|
27
27
|
}
|
|
28
|
-
function DashboardShell({ sidebar, header, headerActions, inspector, children, sidebarHeader, sidebarFooter, sidebarSide = "left", sidebarVariant = "sidebar", sidebarCollapsible = "icon", mobileNavigationLabel = "Open navigation", contentLabel = "Dashboard content", inspectorLabel = "Inspector", className, headerClassName, contentClassName, inspectorClassName, sidebarResize, ...props }) {
|
|
28
|
+
function DashboardShell({ sidebar, header, headerActions, inspector, children, sidebarHeader, sidebarFooter, sidebarSide = "left", sidebarVariant = "sidebar", sidebarCollapsible = "icon", mobileNavigationLabel = "Open navigation", mobileTitle, mobileDescription, mobileCloseLabel, sidebarRailLabel, contentLabel = "Dashboard content", inspectorLabel = "Inspector", className, headerClassName, contentClassName, inspectorClassName, sidebarResize, ...props }) {
|
|
29
29
|
const isMobile = useIsMobile();
|
|
30
30
|
const [hasMeasuredViewport, setHasMeasuredViewport] = React.useState(false);
|
|
31
31
|
const sidebarWidthCookieTimeoutRef = React.useRef(undefined);
|
|
@@ -68,7 +68,7 @@ function DashboardShell({ sidebar, header, headerActions, inspector, children, s
|
|
|
68
68
|
}
|
|
69
69
|
}, [persistSidebarSize, resolvedSidebarPanelCookieName, sidebarPanelMinSize]);
|
|
70
70
|
const canResizeSidebar = !!sidebarResize && hasMeasuredViewport && !isMobile && sidebarSide === "left";
|
|
71
|
-
const sidebarSlot = (collapsible, includeRail, embedded = false) => embedded ? (_jsxs(EmbeddedResizableSidebar, { collapsible: collapsible, includeRail: includeRail, side: sidebarSide, variant: sidebarVariant, children: [sidebarHeader && _jsx(SidebarHeader, { children: sidebarHeader }), _jsx(SidebarContent, { children: sidebar }), sidebarFooter && _jsx(SidebarFooter, { children: sidebarFooter })] })) : (_jsxs(Sidebar, { side: sidebarSide, variant: sidebarVariant, collapsible: collapsible, children: [sidebarHeader && _jsx(SidebarHeader, { children: sidebarHeader }), _jsx(SidebarContent, { children: sidebar }), sidebarFooter && _jsx(SidebarFooter, { children: sidebarFooter }), includeRail ? _jsx(SidebarRail, {}) : null] }));
|
|
71
|
+
const sidebarSlot = (collapsible, includeRail, embedded = false) => embedded ? (_jsxs(EmbeddedResizableSidebar, { collapsible: collapsible, includeRail: includeRail, railLabel: sidebarRailLabel, side: sidebarSide, variant: sidebarVariant, children: [sidebarHeader && _jsx(SidebarHeader, { children: sidebarHeader }), _jsx(SidebarContent, { children: sidebar }), sidebarFooter && _jsx(SidebarFooter, { children: sidebarFooter })] })) : (_jsxs(Sidebar, { side: sidebarSide, variant: sidebarVariant, collapsible: collapsible, mobileTitle: mobileTitle, mobileDescription: mobileDescription, mobileCloseLabel: mobileCloseLabel, children: [sidebarHeader && _jsx(SidebarHeader, { children: sidebarHeader }), _jsx(SidebarContent, { children: sidebar }), sidebarFooter && _jsx(SidebarFooter, { children: sidebarFooter }), includeRail ? _jsx(SidebarRail, { "aria-label": sidebarRailLabel }) : null] }));
|
|
72
72
|
const bodySlot = (_jsxs(SidebarInset, { className: "size-full min-w-0 overflow-hidden", children: [_jsxs("header", { "data-slot": "dashboard-shell-header", className: cn("flex h-14 shrink-0 items-center justify-between gap-3 border-b bg-background px-3 md:px-4", headerClassName), children: [_jsxs("div", { "data-slot": "dashboard-shell-header-content", className: "flex min-w-0 flex-1 items-center gap-2", children: [_jsx(SidebarTrigger, { "data-slot": "dashboard-shell-mobile-trigger", "aria-label": mobileNavigationLabel, className: "md:hidden" }), _jsx("div", { className: "min-w-0 flex-1", children: header })] }), headerActions && (_jsx("div", { "data-slot": "dashboard-shell-header-actions", className: "flex shrink-0 items-center gap-2", children: headerActions }))] }), _jsxs("div", { "data-slot": "dashboard-shell-body", className: "flex min-h-0 flex-1 flex-col lg:flex-row", children: [_jsx("main", { "data-slot": "dashboard-shell-content", "aria-label": contentLabel, className: cn("min-h-0 min-w-0 flex-1 overflow-auto p-4 md:p-6", contentClassName), children: children }), inspector && (_jsx("aside", { "data-slot": "dashboard-shell-inspector", "aria-label": inspectorLabel, className: cn("min-h-0 border-t bg-background lg:w-80 lg:border-t-0 lg:border-l", inspectorClassName), children: _jsx("div", { "data-slot": "dashboard-shell-inspector-content", className: "max-h-96 overflow-auto p-4 lg:h-full lg:max-h-none", children: inspector }) }))] })] }));
|
|
73
73
|
return (_jsx(SidebarProvider, { "data-slot": "dashboard-shell", className: cn("min-h-svh bg-background", className), ...props, children: canResizeSidebar ? (_jsx(DashboardResizablePanelGroup, { bodySlot: bodySlot, contentPanelMinSize: contentPanelMinSize, handleLayoutChanged: handleLayoutChanged, resizableGroupId: resizableGroupId, sidebarCollapsible: sidebarCollapsible, sidebarPanelDefaultSize: sidebarPanelDefaultSize, sidebarPanelMaxSize: sidebarPanelMaxSize, sidebarPanelMinSize: sidebarPanelMinSize, sidebarSlot: sidebarSlot })) : (_jsxs(_Fragment, { children: [sidebarSlot(sidebarCollapsible, true), bodySlot] })) }));
|
|
74
74
|
}
|
|
@@ -3,6 +3,6 @@ import { jsx as _jsx, jsxs as _jsxs, Fragment as _Fragment } from "react/jsx-run
|
|
|
3
3
|
import { cn } from "../lib/utils.js";
|
|
4
4
|
import { ResizableHandle, ResizablePanel, ResizablePanelGroup } from "./resizable.js";
|
|
5
5
|
function DesktopAppShell({ title, titlebar, titlebarActions, activityRail, inspectorRail, secondaryPane, statusbar, children, activityRailLabel = "Activity", primaryPaneLabel = "Primary workspace", secondaryPaneLabel = "Secondary workspace", inspectorRailLabel = "Inspector", primaryPaneSize = secondaryPane || inspectorRail ? 58 : 100, secondaryPaneSize = inspectorRail ? 24 : 36, inspectorPaneSize = 18, className, titlebarClassName, bodyClassName, primaryPaneClassName, secondaryPaneClassName, inspectorRailClassName, statusbarClassName, ...props }) {
|
|
6
|
-
return (_jsxs("section", { "data-slot": "desktop-app-shell", className: cn("flex h-svh min-h-0 flex-col overflow-hidden border bg-background text-foreground", className), ...props, children: [_jsxs("header", { "data-slot": "desktop-app-titlebar", className: cn("flex h-11 shrink-0 items-center justify-between gap-3 border-b bg-background px-3", titlebarClassName), children: [titlebar ?? (_jsx("div", { "data-slot": "desktop-app-titlebar-content", className: "flex min-w-0 flex-1 items-center gap-2", children: title && _jsx("h1", { className: "truncate text-sm font-medium", children: title }) })), titlebarActions && (_jsx("div", { "data-slot": "desktop-app-titlebar-actions", className: "flex shrink-0 items-center gap-2", children: titlebarActions }))] }), _jsxs("div", { "data-slot": "desktop-app-body", className: cn("flex min-h-0 flex-1", bodyClassName), children: [activityRail && (_jsx("nav", { "data-slot": "desktop-app-activity-rail", "aria-label": activityRailLabel, className: "flex w-14 shrink-0 flex-col items-center gap-2 border-r bg-sidebar p-2 text-sidebar-foreground", children: activityRail })), _jsx("div", { "data-slot": "desktop-app-panes", className: "min-w-0 flex-1", children: _jsxs(ResizablePanelGroup, { orientation: "horizontal", className: "min-w-0 flex-1", children: [_jsx(ResizablePanel, { defaultSize: primaryPaneSize, minSize: 30, children: _jsx("
|
|
6
|
+
return (_jsxs("section", { "data-slot": "desktop-app-shell", className: cn("flex h-svh min-h-0 flex-col overflow-hidden border bg-background text-foreground", className), ...props, children: [_jsxs("header", { "data-slot": "desktop-app-titlebar", className: cn("flex h-11 shrink-0 items-center justify-between gap-3 border-b bg-background px-3", titlebarClassName), children: [titlebar ?? (_jsx("div", { "data-slot": "desktop-app-titlebar-content", className: "flex min-w-0 flex-1 items-center gap-2", children: title && _jsx("h1", { className: "truncate text-sm font-medium", children: title }) })), titlebarActions && (_jsx("div", { "data-slot": "desktop-app-titlebar-actions", className: "flex shrink-0 items-center gap-2", children: titlebarActions }))] }), _jsxs("div", { "data-slot": "desktop-app-body", className: cn("flex min-h-0 flex-1", bodyClassName), children: [activityRail && (_jsx("nav", { "data-slot": "desktop-app-activity-rail", "aria-label": activityRailLabel, className: "flex w-14 shrink-0 flex-col items-center gap-2 border-r bg-sidebar p-2 text-sidebar-foreground", children: activityRail })), _jsx("div", { "data-slot": "desktop-app-panes", className: "min-w-0 flex-1", children: _jsxs(ResizablePanelGroup, { orientation: "horizontal", className: "min-w-0 flex-1", children: [_jsx(ResizablePanel, { defaultSize: primaryPaneSize, minSize: 30, children: _jsx("section", { "data-slot": "desktop-app-primary-pane", "aria-label": primaryPaneLabel, className: cn("h-full min-w-0 overflow-auto bg-background", primaryPaneClassName), children: children }) }), secondaryPane && (_jsxs(_Fragment, { children: [_jsx(ResizableHandle, { withHandle: true }), _jsx(ResizablePanel, { defaultSize: secondaryPaneSize, minSize: 18, children: _jsx("section", { "data-slot": "desktop-app-secondary-pane", "aria-label": secondaryPaneLabel, className: cn("h-full min-w-0 overflow-auto bg-background", secondaryPaneClassName), children: secondaryPane }) })] })), inspectorRail && (_jsxs(_Fragment, { children: [_jsx(ResizableHandle, { withHandle: true }), _jsx(ResizablePanel, { defaultSize: inspectorPaneSize, minSize: 16, maxSize: 36, children: _jsx("aside", { "data-slot": "desktop-app-inspector-rail", "aria-label": inspectorRailLabel, className: cn("h-full min-w-0 overflow-auto bg-background", inspectorRailClassName), children: inspectorRail }) })] }))] }) })] }), statusbar && (_jsx("footer", { "data-slot": "desktop-app-statusbar", className: cn("flex min-h-8 shrink-0 items-center justify-between gap-3 border-t bg-background px-3 text-xs text-muted-foreground", statusbarClassName), children: statusbar }))] }));
|
|
7
7
|
}
|
|
8
8
|
export { DesktopAppShell };
|
|
@@ -27,12 +27,14 @@ export declare function ObjectOverview({ primary, supporting, }: {
|
|
|
27
27
|
primary: ReactNode;
|
|
28
28
|
supporting: ReactNode;
|
|
29
29
|
}): import("react").JSX.Element;
|
|
30
|
-
export declare function ObjectSection({ title, description, action, icon, children, }: {
|
|
30
|
+
export declare function ObjectSection({ title, description, action, icon, children, headingLevel, }: {
|
|
31
31
|
title: string;
|
|
32
32
|
description?: ReactNode;
|
|
33
33
|
action?: ReactNode;
|
|
34
34
|
icon?: ReactNode;
|
|
35
35
|
children: ReactNode;
|
|
36
|
+
/** A card titles a section of its page; nest it deeper only under another heading. */
|
|
37
|
+
headingLevel?: 2 | 3 | 4;
|
|
36
38
|
}): import("react").JSX.Element;
|
|
37
39
|
export declare function ObjectFacts({ facts, density, }: {
|
|
38
40
|
facts: readonly ObjectFact[];
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"object-workspace.d.ts","sourceRoot":"","sources":["../../src/components/object-workspace.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC;AAMvC,MAAM,MAAM,UAAU,GAAG;IACvB,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,EAAE,SAAS,CAAC;IACjB,IAAI,CAAC,EAAE,SAAS,CAAC;IACjB;;;OAGG;IACH,KAAK,CAAC,EAAE,OAAO,CAAC;CACjB,CAAC;AAEF,MAAM,MAAM,0BAA0B,GAAG;IACvC,KAAK,EAAE,SAAS,UAAU,EAAE,CAAC;IAC7B,KAAK,EAAE,MAAM,CAAC;CACf,CAAC;AAEF,wBAAgB,cAAc,CAAC,EAC7B,MAAM,EACN,KAAK,EACL,WAAW,EACX,QAAQ,EACR,MAAM,EACN,UAAU,EACV,MAAiB,EACjB,OAAO,GACR,EAAE;IACD,MAAM,EAAE,SAAS,CAAC;IAClB,KAAK,EAAE,SAAS,CAAC;IACjB,WAAW,CAAC,EAAE,SAAS,CAAC;IACxB,QAAQ,CAAC,EAAE,SAAS,CAAC;IACrB,MAAM,CAAC,EAAE,SAAS,CAAC;IACnB,UAAU,CAAC,EAAE,SAAS,CAAC;IACvB,MAAM,CAAC,EAAE,QAAQ,GAAG,SAAS,CAAC;IAC9B,OAAO,CAAC,EAAE,0BAA0B,CAAC;CACtC,+
|
|
1
|
+
{"version":3,"file":"object-workspace.d.ts","sourceRoot":"","sources":["../../src/components/object-workspace.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC;AAMvC,MAAM,MAAM,UAAU,GAAG;IACvB,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,EAAE,SAAS,CAAC;IACjB,IAAI,CAAC,EAAE,SAAS,CAAC;IACjB;;;OAGG;IACH,KAAK,CAAC,EAAE,OAAO,CAAC;CACjB,CAAC;AAEF,MAAM,MAAM,0BAA0B,GAAG;IACvC,KAAK,EAAE,SAAS,UAAU,EAAE,CAAC;IAC7B,KAAK,EAAE,MAAM,CAAC;CACf,CAAC;AAEF,wBAAgB,cAAc,CAAC,EAC7B,MAAM,EACN,KAAK,EACL,WAAW,EACX,QAAQ,EACR,MAAM,EACN,UAAU,EACV,MAAiB,EACjB,OAAO,GACR,EAAE;IACD,MAAM,EAAE,SAAS,CAAC;IAClB,KAAK,EAAE,SAAS,CAAC;IACjB,WAAW,CAAC,EAAE,SAAS,CAAC;IACxB,QAAQ,CAAC,EAAE,SAAS,CAAC;IACrB,MAAM,CAAC,EAAE,SAAS,CAAC;IACnB,UAAU,CAAC,EAAE,SAAS,CAAC;IACvB,MAAM,CAAC,EAAE,QAAQ,GAAG,SAAS,CAAC;IAC9B,OAAO,CAAC,EAAE,0BAA0B,CAAC;CACtC,+BAsCA;AAED,wBAAgB,cAAc,CAAC,EAC7B,OAAO,EACP,UAAU,GACX,EAAE;IACD,OAAO,EAAE,SAAS,CAAC;IACnB,UAAU,EAAE,SAAS,CAAC;CACvB,+BAUA;AAED,wBAAgB,aAAa,CAAC,EAC5B,KAAK,EACL,WAAW,EACX,MAAM,EACN,IAAI,EACJ,QAAQ,EACR,YAAgB,GACjB,EAAE;IACD,KAAK,EAAE,MAAM,CAAC;IACd,WAAW,CAAC,EAAE,SAAS,CAAC;IACxB,MAAM,CAAC,EAAE,SAAS,CAAC;IACnB,IAAI,CAAC,EAAE,SAAS,CAAC;IACjB,QAAQ,EAAE,SAAS,CAAC;IACpB,sFAAsF;IACtF,YAAY,CAAC,EAAE,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;CAC1B,+BAkBA;AAED,wBAAgB,WAAW,CAAC,EAC1B,KAAK,EACL,OAAmB,GACpB,EAAE;IACD,KAAK,EAAE,SAAS,UAAU,EAAE,CAAC;IAC7B,OAAO,CAAC,EAAE,SAAS,GAAG,SAAS,CAAC;CACjC,+BAkCA"}
|
|
@@ -5,13 +5,13 @@ import { ObjectIdentitySupport } from "../internal/object-identity-support.js";
|
|
|
5
5
|
export function ObjectIdentity({ visual, title, description, metadata, action, editAction, layout = "inline", support, }) {
|
|
6
6
|
return (_jsxs(Card, { className: layout === "inline" && support
|
|
7
7
|
? "min-w-0 lg:grid lg:grid-cols-[minmax(0,1fr)_minmax(0,1.25fr)] lg:items-center"
|
|
8
|
-
: "min-w-0", render: _jsx("header", { "data-slot": "object-identity" }), size: "sm", children: [_jsxs(CardHeader, { children: [_jsxs("div", { className: "flex min-w-0 items-center gap-4", children: [_jsx("div", { className: "shrink-0", children: visual }), _jsxs("div", { className: "grid min-w-0 gap-1.5", children: [_jsx(CardTitle, {
|
|
8
|
+
: "min-w-0", render: _jsx("header", { "data-slot": "object-identity" }), size: "sm", children: [_jsxs(CardHeader, { children: [_jsxs("div", { className: "flex min-w-0 items-center gap-4", children: [_jsx("div", { className: "shrink-0", children: visual }), _jsxs("div", { className: "grid min-w-0 gap-1.5", children: [_jsx(CardTitle, { className: "break-words", children: title }), description ? _jsx(CardDescription, { children: description }) : null, metadata ? (_jsx("div", { className: "flex flex-wrap items-center gap-x-4 gap-y-1 text-xs text-muted-foreground", children: metadata })) : null] })] }), editAction ? _jsx(CardAction, { children: editAction }) : null] }), support || action ? (_jsxs(CardContent, { className: "flex min-w-0 flex-wrap items-start gap-4", children: [support ? (_jsx(ObjectIdentitySupport, { label: support.label, children: _jsx(ObjectFacts, { density: "compact", facts: support.facts }) })) : null, action ? _jsx("div", { className: "min-w-0 flex-1 basis-full", children: action }) : null] })) : null] }));
|
|
9
9
|
}
|
|
10
10
|
export function ObjectOverview({ primary, supporting, }) {
|
|
11
11
|
return (_jsxs("div", { "data-slot": "object-overview", className: "grid min-w-0 items-start gap-6 xl:grid-cols-[minmax(0,1.6fr)_minmax(0,1fr)]", children: [_jsx("div", { className: "grid min-w-0 gap-6", children: primary }), _jsx("div", { className: "grid min-w-0 gap-6", children: supporting })] }));
|
|
12
12
|
}
|
|
13
|
-
export function ObjectSection({ title, description, action, icon, children, }) {
|
|
14
|
-
return (_jsxs(Card, { "data-slot": "object-section", children: [_jsxs(CardHeader, { children: [
|
|
13
|
+
export function ObjectSection({ title, description, action, icon, children, headingLevel = 2, }) {
|
|
14
|
+
return (_jsxs(Card, { "data-slot": "object-section", children: [_jsxs(CardHeader, { children: [_jsxs(CardTitle, { role: "heading", "aria-level": headingLevel, className: "flex items-center gap-2", children: [icon ? (_jsx("span", { "aria-hidden": "true", className: "text-muted-foreground [&_svg]:size-4", children: icon })) : null, title] }), description ? _jsx(CardDescription, { children: description }) : null, action ? _jsx(CardAction, { children: action }) : null] }), _jsx(CardContent, { children: children })] }));
|
|
15
15
|
}
|
|
16
16
|
export function ObjectFacts({ facts, density = "default", }) {
|
|
17
17
|
return (_jsx("dl", { "data-density": density, "data-slot": "object-facts", className: density === "compact"
|
|
@@ -23,7 +23,7 @@ export function ScopeSwitcher({ value, options, onValueChange, copy, create }) {
|
|
|
23
23
|
if (next !== value)
|
|
24
24
|
onValueChange(next);
|
|
25
25
|
};
|
|
26
|
-
return (_jsxs(Popover, { open: open, onOpenChange: setOpen, children: [_jsxs(PopoverTrigger, { render: _jsx(Button, { variant: "ghost", "aria-label": `${copy.label}: ${current?.label ?? value}`, className: "
|
|
26
|
+
return (_jsxs(Popover, { open: open, onOpenChange: setOpen, children: [_jsxs(PopoverTrigger, { render: _jsx(Button, { variant: "ghost", "aria-label": `${copy.label}: ${current?.label ?? value}`, className: "max-w-64" }), children: [_jsx("span", { className: "truncate", children: current?.label ?? value }), _jsx(ChevronsUpDown, { "data-icon": "inline-end", "aria-hidden": "true" })] }), _jsxs(PopoverContent, { align: "start", className: "w-72 p-0", initialFocus: search, children: [_jsx(PopoverTitle, { className: "sr-only", children: copy.label }), _jsxs(Command, { label: copy.search, children: [_jsx(CommandInput, { ref: search, "aria-label": copy.search, placeholder: copy.search }), _jsxs(CommandList, { label: copy.label, children: [_jsx(CommandEmpty, { children: copy.empty }), groups.map(([group, items]) => (_jsx(CommandGroup, { heading: group, children: items.map((option) => (_jsx(CommandItem, { value: option.value, keywords: [
|
|
27
27
|
option.label,
|
|
28
28
|
...(option.group ? [option.group] : []),
|
|
29
29
|
...(option.keywords ?? []),
|
|
@@ -37,11 +37,11 @@ type SidebarProps = React.ComponentProps<"div"> & {
|
|
|
37
37
|
mobileFinalFocus?: React.ComponentProps<typeof SheetContent>["finalFocus"];
|
|
38
38
|
};
|
|
39
39
|
declare function Sidebar({ side, variant, collapsible, mobileTitle, mobileDescription, mobileCloseLabel, mobileFinalFocus, className, children, dir, ...props }: SidebarProps): React.JSX.Element;
|
|
40
|
-
declare function SidebarTrigger({ className, onClick, ...props }: React.ComponentProps<typeof Button>): React.JSX.Element;
|
|
40
|
+
declare function SidebarTrigger({ className, onClick, "aria-label": ariaLabel, ...props }: React.ComponentProps<typeof Button>): React.JSX.Element;
|
|
41
41
|
declare function SidebarRail({ className, "aria-label": ariaLabel, title, ...props }: React.ComponentProps<"button">): React.JSX.Element;
|
|
42
|
-
declare function SidebarInset({ className, focusTarget, ...props }: React.ComponentProps<"
|
|
42
|
+
declare function SidebarInset({ className, focusTarget, render, ...props }: useRender.ComponentProps<"div"> & React.ComponentProps<"div"> & {
|
|
43
43
|
focusTarget?: boolean;
|
|
44
|
-
}): React.
|
|
44
|
+
}): React.ReactElement<unknown, string | React.JSXElementConstructor<any>>;
|
|
45
45
|
declare function SidebarInput({ className, ...props }: React.ComponentProps<typeof Input>): React.JSX.Element;
|
|
46
46
|
declare function SidebarHeader({ className, ...props }: React.ComponentProps<"div">): React.JSX.Element;
|
|
47
47
|
declare function SidebarFooter({ className, ...props }: React.ComponentProps<"div">): React.JSX.Element;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"sidebar.d.ts","sourceRoot":"","sources":["../../src/components/sidebar.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAE/B,OAAO,EAAE,SAAS,EAAE,MAAM,2BAA2B,CAAC;AACtD,OAAO,EAAO,KAAK,YAAY,EAAE,MAAM,0BAA0B,CAAC;AAIlE,OAAO,EAAE,MAAM,EAAE,MAAM,qBAAqB,CAAC;AAC7C,OAAO,EAAE,KAAK,EAAE,MAAM,oBAAoB,CAAC;AAC3C,OAAO,EAAE,SAAS,EAAE,MAAM,wBAAwB,CAAC;AACnD,OAAO,EAAS,YAAY,EAA6C,MAAM,oBAAoB,CAAC;AAEpG,OAAO,EAAW,cAAc,EAAmC,MAAM,sBAAsB,CAAC;AAUhG,KAAK,mBAAmB,GAAG;IACzB,KAAK,EAAE,UAAU,GAAG,WAAW,CAAC;IAChC,IAAI,EAAE,OAAO,CAAC;IACd,OAAO,EAAE,CAAC,IAAI,EAAE,OAAO,KAAK,IAAI,CAAC;IACjC,UAAU,EAAE,OAAO,CAAC;IACpB,aAAa,EAAE,CAAC,IAAI,EAAE,OAAO,KAAK,IAAI,CAAC;IACvC,QAAQ,EAAE,OAAO,CAAC;IAClB,aAAa,EAAE,MAAM,IAAI,CAAC;CAC3B,CAAC;AAIF,iBAAS,UAAU,wBAOlB;AAED,iBAAS,eAAe,CAAC,EACvB,WAAkB,EAClB,IAAI,EAAE,QAAQ,EACd,YAAY,EAAE,WAAW,EACzB,OAAe,EACf,SAAS,EACT,KAAK,EACL,QAAQ,EACR,GAAG,KAAK,EACT,EAAE,KAAK,CAAC,cAAc,CAAC,KAAK,CAAC,GAAG;IAC/B,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB,IAAI,CAAC,EAAE,OAAO,CAAC;IACf,YAAY,CAAC,EAAE,CAAC,IAAI,EAAE,OAAO,KAAK,IAAI,CAAC;IACvC;;;OAGG;IACH,OAAO,CAAC,EAAE,OAAO,CAAC;CACnB,qBAmFA;AAED,KAAK,YAAY,GAAG,KAAK,CAAC,cAAc,CAAC,KAAK,CAAC,GAAG;IAChD,IAAI,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC;IACxB,OAAO,CAAC,EAAE,SAAS,GAAG,UAAU,GAAG,OAAO,CAAC;IAC3C,WAAW,CAAC,EAAE,WAAW,GAAG,MAAM,GAAG,MAAM,CAAC;IAC5C,WAAW,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;IAC9B,iBAAiB,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;IACpC,gBAAgB,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;IACnC,qEAAqE;IACrE,gBAAgB,CAAC,EAAE,KAAK,CAAC,cAAc,CAAC,OAAO,YAAY,CAAC,CAAC,YAAY,CAAC,CAAC;CAC5E,CAAC;AAEF,iBAAS,OAAO,CAAC,EACf,IAAa,EACb,OAAmB,EACnB,WAAyB,EACzB,WAAW,EACX,iBAAiB,EACjB,gBAAgB,EAChB,gBAAgB,EAChB,SAAS,EACT,QAAQ,EACR,GAAG,EACH,GAAG,KAAK,EACT,EAAE,YAAY,qBA6Fd;AAED,iBAAS,cAAc,CAAC,
|
|
1
|
+
{"version":3,"file":"sidebar.d.ts","sourceRoot":"","sources":["../../src/components/sidebar.tsx"],"names":[],"mappings":"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"}
|
|
@@ -100,19 +100,29 @@ function Sidebar({ side = "left", variant = "sidebar", collapsible = "offcanvas"
|
|
|
100
100
|
? "p-2 group-data-[collapsible=icon]:w-[calc(var(--sidebar-width-icon)+(--spacing(4))+var(--nc-rounded-xs))]"
|
|
101
101
|
: "group-data-[collapsible=icon]:w-(--sidebar-width-icon) group-data-[side=left]:border-r group-data-[side=right]:border-l", className), ...props, children: _jsx("div", { "data-sidebar": "sidebar", "data-slot": "sidebar-inner", className: "flex size-full flex-col bg-sidebar group-data-[variant=floating]:rounded-md group-data-[variant=floating]:border-0 group-data-[variant=floating]:bg-popover group-data-[variant=floating]:nc-elevation-floating", children: children }) })] }));
|
|
102
102
|
}
|
|
103
|
-
function SidebarTrigger({ className, onClick, ...props }) {
|
|
103
|
+
function SidebarTrigger({ className, onClick, "aria-label": ariaLabel, ...props }) {
|
|
104
104
|
const { toggleSidebar } = useSidebar();
|
|
105
|
-
|
|
105
|
+
const named = ariaLabel !== undefined || props["aria-labelledby"] !== undefined;
|
|
106
|
+
return (_jsxs(Button, { "data-sidebar": "trigger", "data-slot": "sidebar-trigger", variant: "ghost", size: "icon-sm", className: cn(className), "aria-label": ariaLabel, onClick: (event) => {
|
|
106
107
|
onClick?.(event);
|
|
107
108
|
toggleSidebar();
|
|
108
|
-
}, ...props, children: [_jsx(PanelLeftIcon, {}), _jsx("span", { className: "sr-only", children: "Toggle Sidebar" })] }));
|
|
109
|
+
}, ...props, children: [_jsx(PanelLeftIcon, {}), named ? null : _jsx("span", { className: "sr-only", children: "Toggle Sidebar" })] }));
|
|
109
110
|
}
|
|
110
111
|
function SidebarRail({ className, "aria-label": ariaLabel = "Toggle Sidebar", title, ...props }) {
|
|
111
112
|
const { toggleSidebar } = useSidebar();
|
|
112
113
|
return (_jsx("button", { "data-sidebar": "rail", "data-slot": "sidebar-rail", "aria-label": ariaLabel, title: title ?? ariaLabel, tabIndex: -1, onClick: toggleSidebar, className: cn("absolute inset-y-0 z-20 hidden w-11 group-data-[side=left]:-right-11 group-data-[side=right]:left-0 after:absolute after:inset-y-0 after:start-1/2 after:w-0.5 hover:after:bg-sidebar-border sm:flex ltr:-translate-x-1/2 rtl:-translate-x-1/2 [@media(hover:hover)_and_(pointer:fine)]:w-4 [@media(hover:hover)_and_(pointer:fine)]:group-data-[side=left]:-right-4", "in-data-[side=left]:cursor-w-resize in-data-[side=right]:cursor-e-resize", "[[data-side=left][data-state=collapsed]_&]:cursor-e-resize [[data-side=right][data-state=collapsed]_&]:cursor-w-resize", "group-data-[collapsible=offcanvas]:translate-x-0 group-data-[collapsible=offcanvas]:after:left-full hover:group-data-[collapsible=offcanvas]:bg-sidebar", "[[data-side=left][data-collapsible=offcanvas]_&]:-right-2", "[[data-side=right][data-collapsible=offcanvas]_&]:-left-2", className), ...props }));
|
|
113
114
|
}
|
|
114
|
-
function SidebarInset({ className, focusTarget = false, ...props }) {
|
|
115
|
-
return (
|
|
115
|
+
function SidebarInset({ className, focusTarget = false, render, ...props }) {
|
|
116
|
+
return useRender({
|
|
117
|
+
defaultTagName: "div",
|
|
118
|
+
props: mergeProps({
|
|
119
|
+
className: cn("relative flex w-full flex-1 flex-col bg-background md:peer-data-[variant=inset]:m-2 md:peer-data-[variant=inset]:ml-0 md:peer-data-[variant=inset]:rounded-md md:peer-data-[variant=inset]:border md:peer-data-[variant=inset]:border-border md:peer-data-[variant=inset]:peer-data-[state=collapsed]:ml-2", focusTarget && "focus-visible:-outline-offset-[var(--outline-offset-focus)]", className),
|
|
120
|
+
}, props),
|
|
121
|
+
render,
|
|
122
|
+
state: {
|
|
123
|
+
slot: "sidebar-inset",
|
|
124
|
+
},
|
|
125
|
+
});
|
|
116
126
|
}
|
|
117
127
|
function SidebarInput({ className, ...props }) {
|
|
118
128
|
return (_jsx(Input, { "data-slot": "sidebar-input", "data-sidebar": "input", className: cn("h-control-height w-full bg-background shadow-none", className), ...props }));
|
|
@@ -27,7 +27,7 @@ function ThemeModeSwitcher({ "aria-label": ariaLabel, className, compact = false
|
|
|
27
27
|
// foreground with it. Left on the radio primitive's on-primary
|
|
28
28
|
// foreground, the selected label reads white on near-white in
|
|
29
29
|
// light and black on black in dark.
|
|
30
|
-
"aspect-auto w-auto
|
|
30
|
+
"aspect-auto w-auto gap-1.5 data-checked:bg-muted data-checked:text-foreground", compact && "text-xs", itemClassName), disabled: disabled, value: mode, children: renderItem ? (renderItem({ Icon, label, mode, selected })) : (_jsxs(_Fragment, { children: [_jsx(Icon, { "aria-hidden": "true", "data-icon": true }), _jsx("span", { className: "min-w-0 truncate", children: label })] })) }, mode));
|
|
31
31
|
}) }));
|
|
32
32
|
}
|
|
33
33
|
export { ThemeModeSwitcher };
|
|
@@ -10,9 +10,9 @@ const toggleVariants = cva("group/toggle inline-flex min-h-touch-target min-w-to
|
|
|
10
10
|
outline: "border-input bg-transparent hover:bg-muted",
|
|
11
11
|
},
|
|
12
12
|
size: {
|
|
13
|
-
default: "h-control-height
|
|
14
|
-
sm: "h-7
|
|
15
|
-
lg: "h-9
|
|
13
|
+
default: "h-control-height px-control-padding-inline has-data-[icon=inline-end]:pr-2 has-data-[icon=inline-start]:pl-2",
|
|
14
|
+
sm: "h-7 px-control-padding-inline text-xs has-data-[icon=inline-end]:pr-1.5 has-data-[icon=inline-start]:pl-1.5 [&_svg:not([class*='size-'])]:size-3.5",
|
|
15
|
+
lg: "h-9 px-control-padding-inline has-data-[icon=inline-end]:pr-2 has-data-[icon=inline-start]:pl-2",
|
|
16
16
|
},
|
|
17
17
|
},
|
|
18
18
|
defaultVariants: {
|
|
@@ -45,7 +45,7 @@ const AttachmentPreviewDialog = ({ children }) => {
|
|
|
45
45
|
const src = useAttachmentSrc();
|
|
46
46
|
if (!src)
|
|
47
47
|
return children;
|
|
48
|
-
return (_jsxs(Dialog, { children: [_jsx(DialogTrigger, { nativeButton: false, className: "aui-attachment-preview-trigger", render: isValidElement(children) ? children : _jsx("button", { type: "button" }) }), _jsxs(DialogContent, { className: "aui-attachment-preview-dialog-content
|
|
48
|
+
return (_jsxs(Dialog, { children: [_jsx(DialogTrigger, { nativeButton: false, className: "aui-attachment-preview-trigger", render: isValidElement(children) ? children : _jsx("button", { type: "button" }) }), _jsxs(DialogContent, { className: "aui-attachment-preview-dialog-content sm:max-w-3xl", children: [_jsx(DialogTitle, { className: "aui-sr-only sr-only", children: "Image Attachment Preview" }), _jsx("div", { className: "aui-attachment-preview bg-background relative mx-auto flex max-h-[80dvh] w-full items-center justify-center overflow-hidden rounded-sm", children: _jsx(AttachmentPreview, { src: src }) })] })] }));
|
|
49
49
|
};
|
|
50
50
|
const AttachmentThumb = () => {
|
|
51
51
|
const src = useAttachmentSrc();
|
|
@@ -81,7 +81,7 @@ const AttachmentUI = () => {
|
|
|
81
81
|
return (_jsx(TooltipProvider, { children: _jsxs(Tooltip, { children: [_jsxs(AttachmentPrimitive.Root, { className: cn("aui-attachment-root relative", isComposer && "nc-transition-opacity", isImage && !isComposer && "aui-attachment-root-message only:*:first:size-24"), children: [_jsx(AttachmentPreviewDialog, { children: _jsxs(TooltipTrigger, { render: _jsx("div", { className: cn("aui-attachment-tile nc-transition-transform relative size-14 cursor-pointer overflow-hidden rounded-[calc(var(--composer-radius)-var(--composer-padding))] bg-muted after:pointer-events-none after:absolute after:inset-0 after:rounded-[inherit] after:ring-1 after:ring-border after:ring-inset hover:after:bg-foreground/10", isError && "after:ring-destructive/60"), role: "button", tabIndex: 0, "aria-label": `${typeLabel} attachment${isError ? ", upload failed" : isUploading ? ", uploading" : ""}` }), children: [_jsx(AttachmentThumb, {}), isUploading && (_jsx("div", { "aria-hidden": "true", className: "aui-attachment-tile-uploading nc-transition-opacity absolute inset-0 flex items-center justify-center bg-muted", children: _jsx(WaitingLine, { className: "w-8", decorative: true }) })), isError && (_jsx("div", { "aria-hidden": "true", className: "aui-attachment-tile-error nc-transition-opacity absolute inset-0 flex items-center justify-center bg-muted", children: _jsx(AlertCircleIcon, { className: "text-destructive size-4" }) }))] }) }), isComposer && _jsx(AttachmentRemove, {})] }), _jsxs(TooltipContent, { side: "top", children: [_jsx(AttachmentPrimitive.Name, {}), errorMessage && _jsx("p", { className: "aui-attachment-error-message", children: errorMessage })] })] }) }));
|
|
82
82
|
};
|
|
83
83
|
const AttachmentRemove = () => {
|
|
84
|
-
return (_jsx(AttachmentPrimitive.Remove, { render: _jsx(TooltipIconButton, { tooltip: "Remove file", className: "aui-attachment-tile-remove absolute end-1 top-1
|
|
84
|
+
return (_jsx(AttachmentPrimitive.Remove, { render: _jsx(TooltipIconButton, { tooltip: "Remove file", className: "aui-attachment-tile-remove absolute end-1 top-1 rounded-md bg-background nc-elevation-floating after:absolute after:-inset-1.5", side: "top" }), children: _jsx(XIcon, { className: "aui-attachment-remove-icon size-3 stroke-[2.5]" }) }));
|
|
85
85
|
};
|
|
86
86
|
export const UserMessageAttachments = () => {
|
|
87
87
|
return (_jsx("div", { className: "aui-user-message-attachments-end col-span-full col-start-1 row-start-1 flex w-full flex-row justify-end gap-2", children: _jsx(MessagePrimitive.Attachments, { children: () => _jsx(AttachmentUI, {}) }) }));
|
|
@@ -90,5 +90,5 @@ export const ComposerAttachments = () => {
|
|
|
90
90
|
return (_jsx("div", { className: "aui-composer-attachments flex w-full flex-row items-center gap-2 overflow-x-auto empty:hidden", children: _jsx(ComposerPrimitive.Attachments, { children: () => _jsx(AttachmentUI, {}) }) }));
|
|
91
91
|
};
|
|
92
92
|
export const ComposerAddAttachment = () => {
|
|
93
|
-
return (_jsx(ComposerPrimitive.AddAttachment, { render: _jsx(TooltipIconButton, { tooltip: "Add Attachment", side: "bottom", variant: "ghost", size: "icon", className: "aui-composer-add-attachment
|
|
93
|
+
return (_jsx(ComposerPrimitive.AddAttachment, { render: _jsx(TooltipIconButton, { tooltip: "Add Attachment", side: "bottom", variant: "ghost", size: "icon", className: "aui-composer-add-attachment rounded-md p-1 text-xs font-semibold", "aria-label": "Add Attachment" }), children: _jsx(PlusIcon, { className: "aui-attachment-add-icon size-4.5 stroke-[1.5px]" }) }));
|
|
94
94
|
};
|
|
@@ -52,13 +52,13 @@ const ThreadSuggestions = () => {
|
|
|
52
52
|
return (_jsx("div", { className: "aui-thread-welcome-suggestions flex w-full flex-wrap items-center justify-center gap-2 px-4", children: _jsx(ThreadPrimitive.Suggestions, { children: () => _jsx(ThreadSuggestionItem, {}) }) }));
|
|
53
53
|
};
|
|
54
54
|
const ThreadSuggestionItem = () => {
|
|
55
|
-
return (_jsx("div", { className: "aui-thread-welcome-suggestion-display", children: _jsxs(SuggestionPrimitive.Trigger, { send: true, render: _jsx(Button, { variant: "ghost", className: "aui-thread-welcome-suggestion text-foreground hover:bg-muted border-border
|
|
55
|
+
return (_jsx("div", { className: "aui-thread-welcome-suggestion-display", children: _jsxs(SuggestionPrimitive.Trigger, { send: true, render: _jsx(Button, { variant: "ghost", className: "aui-thread-welcome-suggestion text-foreground hover:bg-muted border-border gap-1.5 rounded-md border py-1.5 text-sm font-normal whitespace-nowrap transition-colors" }), children: [_jsx(SuggestionPrimitive.Title, { className: "aui-thread-welcome-suggestion-text-1" }), _jsx(SuggestionPrimitive.Description, { className: "aui-thread-welcome-suggestion-text-2 empty:hidden" })] }) }));
|
|
56
56
|
};
|
|
57
57
|
const Composer = () => {
|
|
58
58
|
return (_jsx(ComposerPrimitive.Root, { className: "aui-composer-root relative flex w-full flex-col", children: _jsxs(ComposerPrimitive.AttachmentDropzone, { render: _jsx("div", { "data-slot": "aui_composer-shell", className: "nc-transition-paint flex w-full flex-col gap-2 rounded-(--composer-radius) border border-border bg-(--composer-bg) p-(--composer-padding) focus-within:border-ring data-[dragging=true]:border-dashed data-[dragging=true]:border-ring data-[dragging=true]:bg-accent" }), children: [_jsx(ComposerAttachments, {}), _jsx(ComposerPrimitive.Input, { placeholder: "Send a message...", className: "aui-composer-input caret-primary placeholder:text-muted-foreground/80 max-h-32 min-h-10 w-full resize-none bg-transparent px-2.5 py-1 text-base outline-none", rows: 1, autoFocus: true, enterKeyHint: "send", "aria-label": "Message input" }), _jsx(ComposerAction, {})] }) }));
|
|
59
59
|
};
|
|
60
60
|
const ComposerAction = () => {
|
|
61
|
-
return (_jsxs("div", { className: "aui-composer-action-wrapper relative flex items-center justify-between", children: [_jsx(ComposerAddAttachment, {}), _jsxs("div", { className: "flex items-center gap-1.5", children: [_jsxs(AuiIf, { condition: (s) => s.thread.capabilities.dictation, children: [_jsx(AuiIf, { condition: (s) => s.composer.dictation == null, children: _jsx(ComposerPrimitive.Dictate, { render: _jsx(TooltipIconButton, { tooltip: "Voice input", side: "bottom", type: "button", variant: "ghost", size: "icon", className: "aui-composer-dictate
|
|
61
|
+
return (_jsxs("div", { className: "aui-composer-action-wrapper relative flex items-center justify-between", children: [_jsx(ComposerAddAttachment, {}), _jsxs("div", { className: "flex items-center gap-1.5", children: [_jsxs(AuiIf, { condition: (s) => s.thread.capabilities.dictation, children: [_jsx(AuiIf, { condition: (s) => s.composer.dictation == null, children: _jsx(ComposerPrimitive.Dictate, { render: _jsx(TooltipIconButton, { tooltip: "Voice input", side: "bottom", type: "button", variant: "ghost", size: "icon", className: "aui-composer-dictate rounded-md", "aria-label": "Start voice input" }), children: _jsx(MicIcon, { className: "aui-composer-dictate-icon size-4" }) }) }), _jsx(AuiIf, { condition: (s) => s.composer.dictation != null, children: _jsx(ComposerPrimitive.StopDictation, { render: _jsx(TooltipIconButton, { tooltip: "Stop dictation", side: "bottom", type: "button", variant: "ghost", size: "icon", className: "aui-composer-stop-dictation text-destructive rounded-md", "aria-label": "Stop voice input" }), children: _jsx(SquareIcon, { className: "aui-composer-stop-dictation-icon size-3.5 fill-current" }) }) })] }), _jsx(AuiIf, { condition: (s) => !s.thread.isRunning, children: _jsx(ComposerPrimitive.Send, { render: _jsx(TooltipIconButton, { tooltip: "Send message", side: "bottom", type: "button", variant: "default", size: "icon", className: "aui-composer-send rounded-md", "aria-label": "Send message" }), children: _jsx(ArrowUpIcon, { className: "aui-composer-send-icon size-4.5" }) }) }), _jsx(AuiIf, { condition: (s) => s.thread.isRunning, children: _jsx(ComposerPrimitive.Cancel, { render: _jsx(Button, { type: "button", variant: "default", size: "icon", className: "aui-composer-cancel rounded-md", "aria-label": "Stop generating" }), children: _jsx(SquareIcon, { className: "aui-composer-cancel-icon size-3.5 fill-current" }) }) })] })] }));
|
|
62
62
|
};
|
|
63
63
|
const MessageError = () => {
|
|
64
64
|
return (_jsx(MessagePrimitive.Error, { children: _jsx(ErrorPrimitive.Root, { render: _jsx(Alert, { className: "aui-message-error-root mt-2", variant: "destructive" }), children: _jsx(ErrorPrimitive.Message, { className: "aui-message-error-message line-clamp-2" }) }) }));
|
|
@@ -113,7 +113,7 @@ const UserActionBar = () => {
|
|
|
113
113
|
return (_jsx(ActionBarPrimitive.Root, { hideWhenRunning: true, autohide: "not-last", className: "aui-user-action-bar-root flex flex-col items-end", children: _jsx(ActionBarPrimitive.Edit, { render: _jsx(TooltipIconButton, { tooltip: "Edit", className: "aui-user-action-edit" }), children: _jsx(PencilIcon, {}) }) }));
|
|
114
114
|
};
|
|
115
115
|
const EditComposer = () => {
|
|
116
|
-
return (_jsx(MessagePrimitive.Root, { "data-slot": "aui_edit-composer-wrapper", className: "flex flex-col px-2 [contain-intrinsic-size:auto_200px] [content-visibility:auto]", children: _jsxs(ComposerPrimitive.Root, { className: "aui-edit-composer-root ms-auto flex w-full max-w-[85%] flex-col rounded-(--composer-radius) border border-border bg-(--composer-bg)", children: [_jsx(ComposerPrimitive.Input, { className: "aui-edit-composer-input text-foreground min-h-14 w-full resize-none bg-transparent px-4 pt-3 pb-1 text-base outline-none", autoFocus: true }), _jsxs("div", { className: "aui-edit-composer-footer mx-2.5 mb-2.5 flex items-center gap-1.5 self-end", children: [_jsx(ComposerPrimitive.Cancel, { render: _jsx(Button, { variant: "ghost", size: "sm", className: "h-8
|
|
116
|
+
return (_jsx(MessagePrimitive.Root, { "data-slot": "aui_edit-composer-wrapper", className: "flex flex-col px-2 [contain-intrinsic-size:auto_200px] [content-visibility:auto]", children: _jsxs(ComposerPrimitive.Root, { className: "aui-edit-composer-root ms-auto flex w-full max-w-[85%] flex-col rounded-(--composer-radius) border border-border bg-(--composer-bg)", children: [_jsx(ComposerPrimitive.Input, { className: "aui-edit-composer-input text-foreground min-h-14 w-full resize-none bg-transparent px-4 pt-3 pb-1 text-base outline-none", autoFocus: true }), _jsxs("div", { className: "aui-edit-composer-footer mx-2.5 mb-2.5 flex items-center gap-1.5 self-end", children: [_jsx(ComposerPrimitive.Cancel, { render: _jsx(Button, { variant: "ghost", size: "sm", className: "h-8" }), children: "Cancel" }), _jsx(ComposerPrimitive.Send, { render: _jsx(Button, { size: "sm", className: "h-8" }), children: "Update" })] })] }) }));
|
|
117
117
|
};
|
|
118
118
|
const BranchPicker = ({ className, ...rest }) => {
|
|
119
119
|
return (_jsxs(BranchPickerPrimitive.Root, { hideWhenSingleBranch: true, className: cn("aui-branch-picker-root text-muted-foreground -ms-2 me-2 inline-flex items-center text-xs", className), ...rest, children: [_jsx(BranchPickerPrimitive.Previous, { render: _jsx(TooltipIconButton, { tooltip: "Previous" }), children: _jsx(ChevronLeftIcon, {}) }), _jsxs("span", { className: "aui-branch-picker-state font-medium", children: [_jsx(BranchPickerPrimitive.Number, {}), " / ", _jsx(BranchPickerPrimitive.Count, {})] }), _jsx(BranchPickerPrimitive.Next, { render: _jsx(TooltipIconButton, { tooltip: "Next" }), children: _jsx(ChevronRightIcon, {}) })] }));
|
|
@@ -5,6 +5,6 @@ import { Tooltip, TooltipContent, TooltipProvider, TooltipTrigger } from "../../
|
|
|
5
5
|
import { Button } from "../../components/button.js";
|
|
6
6
|
import { cn } from "../../lib/utils.js";
|
|
7
7
|
export const TooltipIconButton = forwardRef(({ children, tooltip, side = "bottom", className, ...rest }, ref) => {
|
|
8
|
-
return (_jsx(TooltipProvider, { children: _jsxs(Tooltip, { children: [_jsxs(TooltipTrigger, { render: _jsx(Button, { variant: "ghost", size: "icon", ...rest, className: cn("aui-button-icon
|
|
8
|
+
return (_jsx(TooltipProvider, { children: _jsxs(Tooltip, { children: [_jsxs(TooltipTrigger, { render: _jsx(Button, { variant: "ghost", size: "icon", ...rest, className: cn("aui-button-icon p-1", className), ref: ref }), children: [children, _jsx("span", { className: "aui-sr-only sr-only", children: tooltip })] }), _jsx(TooltipContent, { side: side, children: tooltip })] }) }));
|
|
9
9
|
});
|
|
10
10
|
TooltipIconButton.displayName = "TooltipIconButton";
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"merge-tokens.generated.d.ts","sourceRoot":"","sources":["../../src/lib/merge-tokens.generated.ts"],"names":[],"mappings":"AAGA,eAAO,MAAM,gBAAgB;;;;CAI5B,CAAC"}
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
// Generated by scripts/generate-merge-tokens.mjs from @nadicodeai/design-system/css.
|
|
2
|
+
// Do not edit: `npm run generate:merge-tokens -w @nadicodeai/ui` rewrites it.
|
|
3
|
+
export const themeMergeTokens = {
|
|
4
|
+
spacing: "control-height control-padding-inline nadicode-2xl nadicode-3xl nadicode-4xl nadicode-5xl nadicode-6xl nadicode-content-max nadicode-control-height nadicode-control-padding-inline nadicode-focus-outline-offset nadicode-focus-outline-width nadicode-guide nadicode-gutter-desktop nadicode-gutter-mobile nadicode-gutter-tablet nadicode-icon-stroke nadicode-icon-stroke-sm nadicode-lg nadicode-md nadicode-section-step-desktop nadicode-section-step-mobile nadicode-sm nadicode-touch-target nadicode-xl nadicode-xs nadicode-xxs touch-target".split(" "),
|
|
5
|
+
radius: "2xl 3xl full lg md none sm xl xs".split(" "),
|
|
6
|
+
text: "body-lg body-md body-sm caption code display-lg display-md display-xl heading-lg heading-md heading-sm label-mono".split(" "),
|
|
7
|
+
};
|
package/dist/lib/utils.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../../src/lib/utils.ts"],"names":[],"mappings":"AAAA,OAAO,EAAQ,KAAK,UAAU,EAAE,MAAM,MAAM,CAAC;
|
|
1
|
+
{"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../../src/lib/utils.ts"],"names":[],"mappings":"AAAA,OAAO,EAAQ,KAAK,UAAU,EAAE,MAAM,MAAM,CAAC;AAe7C,wBAAgB,EAAE,CAAC,GAAG,MAAM,EAAE,UAAU,EAAE,UAEzC"}
|
package/dist/lib/utils.js
CHANGED
|
@@ -1,5 +1,15 @@
|
|
|
1
1
|
import { clsx } from "clsx";
|
|
2
|
-
import {
|
|
2
|
+
import { extendTailwindMerge } from "tailwind-merge";
|
|
3
|
+
import { themeMergeTokens } from "./merge-tokens.generated.js";
|
|
4
|
+
const twMerge = extendTailwindMerge({
|
|
5
|
+
extend: {
|
|
6
|
+
theme: {
|
|
7
|
+
spacing: themeMergeTokens.spacing,
|
|
8
|
+
radius: themeMergeTokens.radius,
|
|
9
|
+
text: themeMergeTokens.text,
|
|
10
|
+
},
|
|
11
|
+
},
|
|
12
|
+
});
|
|
3
13
|
export function cn(...inputs) {
|
|
4
14
|
return twMerge(clsx(inputs));
|
|
5
15
|
}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@nadicodeai/ui",
|
|
3
|
-
"version": "12.1.
|
|
3
|
+
"version": "12.1.24",
|
|
4
4
|
"type": "module",
|
|
5
5
|
"publishConfig": {
|
|
6
6
|
"access": "public"
|
|
@@ -59,8 +59,9 @@
|
|
|
59
59
|
"build": "node scripts/build.mjs",
|
|
60
60
|
"build:dev": "node scripts/dev-build.mjs",
|
|
61
61
|
"generate:brand-icons": "node scripts/build-brand-icons.mjs",
|
|
62
|
+
"generate:merge-tokens": "node scripts/generate-merge-tokens.mjs",
|
|
62
63
|
"prepack": "npm run build",
|
|
63
|
-
"lint": "eslint --max-warnings=0",
|
|
64
|
+
"lint": "node scripts/generate-merge-tokens.mjs --check && eslint --max-warnings=0",
|
|
64
65
|
"typecheck": "tsc --noEmit",
|
|
65
66
|
"check": "npm run lint && npm run typecheck",
|
|
66
67
|
"check:static": "npm run check",
|
|
@@ -71,7 +72,7 @@
|
|
|
71
72
|
"@assistant-ui/react": "0.15.21",
|
|
72
73
|
"@assistant-ui/react-markdown": "0.14.16",
|
|
73
74
|
"@base-ui/react": "^1.8.0",
|
|
74
|
-
"@nadicodeai/design-system": "12.1.
|
|
75
|
+
"@nadicodeai/design-system": "12.1.24",
|
|
75
76
|
"class-variance-authority": "^0.7.1",
|
|
76
77
|
"clsx": "^2.1.1",
|
|
77
78
|
"cmdk": "^1.1.1",
|