@nadicodeai/ui 0.5.0 → 0.5.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1,10 +1,10 @@
1
1
  import { jsx as _jsx } from "react/jsx-runtime";
2
2
  import { cn } from "../lib/utils.js";
3
3
  function Card({ className, size = "default", ...props }) {
4
- return (_jsx("div", { "data-slot": "card", "data-size": size, className: cn("group/card flex flex-col gap-(--card-spacing) overflow-hidden rounded-xl bg-card py-(--card-spacing) text-sm text-card-foreground ring-1 ring-foreground/10 [--card-spacing:--spacing(4)] has-data-[slot=card-footer]:pb-0 has-[>img:first-child]:pt-0 data-[size=sm]:[--card-spacing:--spacing(3)] data-[size=sm]:has-data-[slot=card-footer]:pb-0 *:[img:first-child]:rounded-t-xl *:[img:last-child]:rounded-b-xl", className), ...props }));
4
+ return (_jsx("div", { "data-slot": "card", "data-size": size, className: cn("group/card flex flex-col gap-(--card-spacing) overflow-hidden rounded-md border border-border bg-card py-(--card-spacing) text-sm text-card-foreground [--card-spacing:--spacing(4)] has-data-[slot=card-footer]:pb-0 has-[>img:first-child]:pt-0 data-[size=sm]:[--card-spacing:--spacing(3)] data-[size=sm]:has-data-[slot=card-footer]:pb-0 *:[img:first-child]:rounded-t-md *:[img:last-child]:rounded-b-md", className), ...props }));
5
5
  }
6
6
  function CardHeader({ className, ...props }) {
7
- return (_jsx("div", { "data-slot": "card-header", className: cn("group/card-header @container/card-header grid auto-rows-min items-start gap-1 rounded-t-xl px-(--card-spacing) has-data-[slot=card-action]:grid-cols-[1fr_auto] has-data-[slot=card-description]:grid-rows-[auto_auto] [.border-b]:pb-(--card-spacing)", className), ...props }));
7
+ return (_jsx("div", { "data-slot": "card-header", className: cn("group/card-header @container/card-header grid auto-rows-min items-start gap-1 rounded-t-md px-(--card-spacing) has-data-[slot=card-action]:grid-cols-[1fr_auto] has-data-[slot=card-description]:grid-rows-[auto_auto] [.border-b]:pb-(--card-spacing)", className), ...props }));
8
8
  }
9
9
  function CardTitle({ className, ...props }) {
10
10
  return (_jsx("div", { "data-slot": "card-title", className: cn("text-base leading-snug font-medium group-data-[size=sm]/card:text-sm", className), ...props }));
@@ -19,6 +19,6 @@ function CardContent({ className, ...props }) {
19
19
  return (_jsx("div", { "data-slot": "card-content", className: cn("px-(--card-spacing)", className), ...props }));
20
20
  }
21
21
  function CardFooter({ className, ...props }) {
22
- return (_jsx("div", { "data-slot": "card-footer", className: cn("flex items-center rounded-b-xl border-t bg-muted/50 p-(--card-spacing)", className), ...props }));
22
+ return (_jsx("div", { "data-slot": "card-footer", className: cn("flex items-center rounded-b-md border-t bg-muted/50 p-(--card-spacing)", className), ...props }));
23
23
  }
24
24
  export { Card, CardHeader, CardFooter, CardTitle, CardAction, CardDescription, CardContent, };
@@ -1,5 +1,13 @@
1
1
  import * as React from "react";
2
2
  import { Sidebar, SidebarProvider } from "./sidebar";
3
+ type DashboardShellSidebarResize = {
4
+ autoSaveId?: string;
5
+ cookieName?: string;
6
+ defaultSize?: number;
7
+ minSize?: number;
8
+ maxSize?: number;
9
+ contentMinSize?: number;
10
+ };
3
11
  type DashboardShellProps = Omit<React.ComponentProps<typeof SidebarProvider>, "children"> & {
4
12
  sidebar: React.ReactNode;
5
13
  header?: React.ReactNode;
@@ -17,8 +25,9 @@ type DashboardShellProps = Omit<React.ComponentProps<typeof SidebarProvider>, "c
17
25
  headerClassName?: string;
18
26
  contentClassName?: string;
19
27
  inspectorClassName?: string;
28
+ sidebarResize?: DashboardShellSidebarResize;
20
29
  };
21
- declare function DashboardShell({ sidebar, header, headerActions, inspector, children, sidebarHeader, sidebarFooter, sidebarSide, sidebarVariant, sidebarCollapsible, mobileNavigationLabel, contentLabel, inspectorLabel, className, headerClassName, contentClassName, inspectorClassName, ...props }: DashboardShellProps): React.JSX.Element;
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;
22
31
  export { DashboardShell };
23
- export type { DashboardShellProps };
32
+ export type { DashboardShellProps, DashboardShellSidebarResize };
24
33
  //# 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,CAAA;AAG9B,OAAO,EACL,OAAO,EAKP,eAAe,EAGhB,MAAM,sBAAsB,CAAA;AAE7B,KAAK,mBAAmB,GAAG,IAAI,CAC7B,KAAK,CAAC,cAAc,CAAC,OAAO,eAAe,CAAC,EAC5C,UAAU,CACX,GAAG;IACF,OAAO,EAAE,KAAK,CAAC,SAAS,CAAA;IACxB,MAAM,CAAC,EAAE,KAAK,CAAC,SAAS,CAAA;IACxB,aAAa,CAAC,EAAE,KAAK,CAAC,SAAS,CAAA;IAC/B,SAAS,CAAC,EAAE,KAAK,CAAC,SAAS,CAAA;IAC3B,QAAQ,EAAE,KAAK,CAAC,SAAS,CAAA;IACzB,aAAa,CAAC,EAAE,KAAK,CAAC,SAAS,CAAA;IAC/B,aAAa,CAAC,EAAE,KAAK,CAAC,SAAS,CAAA;IAC/B,WAAW,CAAC,EAAE,KAAK,CAAC,cAAc,CAAC,OAAO,OAAO,CAAC,CAAC,MAAM,CAAC,CAAA;IAC1D,cAAc,CAAC,EAAE,KAAK,CAAC,cAAc,CAAC,OAAO,OAAO,CAAC,CAAC,SAAS,CAAC,CAAA;IAChE,kBAAkB,CAAC,EAAE,KAAK,CAAC,cAAc,CAAC,OAAO,OAAO,CAAC,CAAC,aAAa,CAAC,CAAA;IACxE,qBAAqB,CAAC,EAAE,MAAM,CAAA;IAC9B,YAAY,CAAC,EAAE,MAAM,CAAA;IACrB,cAAc,CAAC,EAAE,MAAM,CAAA;IACvB,eAAe,CAAC,EAAE,MAAM,CAAA;IACxB,gBAAgB,CAAC,EAAE,MAAM,CAAA;IACzB,kBAAkB,CAAC,EAAE,MAAM,CAAA;CAC5B,CAAA;AAED,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,YAAkC,EAClC,cAA4B,EAC5B,SAAS,EACT,eAAe,EACf,gBAAgB,EAChB,kBAAkB,EAClB,GAAG,KAAK,EACT,EAAE,mBAAmB,qBAgFrB;AAED,OAAO,EAAE,cAAc,EAAE,CAAA;AACzB,YAAY,EAAE,mBAAmB,EAAE,CAAA"}
1
+ {"version":3,"file":"dashboard-shell.d.ts","sourceRoot":"","sources":["../../src/components/dashboard-shell.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAA;AAU9B,OAAO,EACL,OAAO,EAKP,eAAe,EAIhB,MAAM,sBAAsB,CAAA;AAM7B,KAAK,2BAA2B,GAAG;IACjC,UAAU,CAAC,EAAE,MAAM,CAAA;IACnB,UAAU,CAAC,EAAE,MAAM,CAAA;IACnB,WAAW,CAAC,EAAE,MAAM,CAAA;IACpB,OAAO,CAAC,EAAE,MAAM,CAAA;IAChB,OAAO,CAAC,EAAE,MAAM,CAAA;IAChB,cAAc,CAAC,EAAE,MAAM,CAAA;CACxB,CAAA;AAED,KAAK,mBAAmB,GAAG,IAAI,CAC7B,KAAK,CAAC,cAAc,CAAC,OAAO,eAAe,CAAC,EAC5C,UAAU,CACX,GAAG;IACF,OAAO,EAAE,KAAK,CAAC,SAAS,CAAA;IACxB,MAAM,CAAC,EAAE,KAAK,CAAC,SAAS,CAAA;IACxB,aAAa,CAAC,EAAE,KAAK,CAAC,SAAS,CAAA;IAC/B,SAAS,CAAC,EAAE,KAAK,CAAC,SAAS,CAAA;IAC3B,QAAQ,EAAE,KAAK,CAAC,SAAS,CAAA;IACzB,aAAa,CAAC,EAAE,KAAK,CAAC,SAAS,CAAA;IAC/B,aAAa,CAAC,EAAE,KAAK,CAAC,SAAS,CAAA;IAC/B,WAAW,CAAC,EAAE,KAAK,CAAC,cAAc,CAAC,OAAO,OAAO,CAAC,CAAC,MAAM,CAAC,CAAA;IAC1D,cAAc,CAAC,EAAE,KAAK,CAAC,cAAc,CAAC,OAAO,OAAO,CAAC,CAAC,SAAS,CAAC,CAAA;IAChE,kBAAkB,CAAC,EAAE,KAAK,CAAC,cAAc,CAAC,OAAO,OAAO,CAAC,CAAC,aAAa,CAAC,CAAA;IACxE,qBAAqB,CAAC,EAAE,MAAM,CAAA;IAC9B,YAAY,CAAC,EAAE,MAAM,CAAA;IACrB,cAAc,CAAC,EAAE,MAAM,CAAA;IACvB,eAAe,CAAC,EAAE,MAAM,CAAA;IACxB,gBAAgB,CAAC,EAAE,MAAM,CAAA;IACzB,kBAAkB,CAAC,EAAE,MAAM,CAAA;IAC3B,aAAa,CAAC,EAAE,2BAA2B,CAAA;CAC5C,CAAA;AAqHD,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,YAAkC,EAClC,cAA4B,EAC5B,SAAS,EACT,eAAe,EACf,gBAAgB,EAChB,kBAAkB,EAClB,aAAa,EACb,GAAG,KAAK,EACT,EAAE,mBAAmB,qBA4LrB;AAED,OAAO,EAAE,cAAc,EAAE,CAAA;AACzB,YAAY,EAAE,mBAAmB,EAAE,2BAA2B,EAAE,CAAA"}
@@ -1,8 +1,77 @@
1
1
  "use client";
2
- import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
+ import { jsx as _jsx, jsxs as _jsxs, Fragment as _Fragment } from "react/jsx-runtime";
3
+ import * as React from "react";
4
+ import { useIsMobile } from "../hooks/use-mobile.js";
3
5
  import { cn } from "../lib/utils.js";
4
- import { Sidebar, SidebarContent, SidebarFooter, SidebarHeader, SidebarInset, SidebarProvider, SidebarRail, SidebarTrigger, } from "./sidebar.js";
5
- 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, ...props }) {
6
- return (_jsxs(SidebarProvider, { "data-slot": "dashboard-shell", className: cn("min-h-svh bg-background", className), ...props, children: [_jsxs(Sidebar, { side: sidebarSide, variant: sidebarVariant, collapsible: sidebarCollapsible, children: [sidebarHeader && _jsx(SidebarHeader, { children: sidebarHeader }), _jsx(SidebarContent, { children: sidebar }), sidebarFooter && _jsx(SidebarFooter, { children: sidebarFooter }), _jsx(SidebarRail, {})] }), _jsxs(SidebarInset, { className: "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 }) }))] })] })] }));
6
+ import { ResizableHandle, ResizablePanel, ResizablePanelGroup, } from "./resizable.js";
7
+ import { Sidebar, SidebarContent, SidebarFooter, SidebarHeader, SidebarInset, SidebarProvider, SidebarRail, SidebarTrigger, useSidebar, } from "./sidebar.js";
8
+ const oneYearInSeconds = 60 * 60 * 24 * 365;
9
+ function EmbeddedResizableSidebar({ children, collapsible, includeRail, side, variant, }) {
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] }));
12
+ }
13
+ function DashboardResizablePanelGroup({ bodySlot, contentPanelMinSize, handleLayoutChanged, resizableGroupId, sidebarCollapsible, sidebarPanelDefaultSize, sidebarPanelMaxSize, sidebarPanelMinSize, sidebarSlot, }) {
14
+ const { state } = useSidebar();
15
+ const sidebarPanelRef = React.useRef(null);
16
+ React.useEffect(() => {
17
+ if (sidebarCollapsible === "none") {
18
+ return;
19
+ }
20
+ if (state === "collapsed") {
21
+ sidebarPanelRef.current?.collapse();
22
+ return;
23
+ }
24
+ sidebarPanelRef.current?.expand();
25
+ }, [sidebarCollapsible, state]);
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
+ }
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 }) {
29
+ const isMobile = useIsMobile();
30
+ const [hasMeasuredViewport, setHasMeasuredViewport] = React.useState(false);
31
+ const sidebarWidthCookieTimeoutRef = React.useRef(undefined);
32
+ const { autoSaveId: sidebarPanelAutoSaveId, contentMinSize: contentPanelMinSize = 55, cookieName: sidebarPanelCookieName, defaultSize: sidebarPanelDefaultSize = 20, maxSize: sidebarPanelMaxSize = 28, minSize: sidebarPanelMinSize = 14, } = sidebarResize ?? {};
33
+ const resizableGroupId = sidebarPanelAutoSaveId ?? "dashboard-shell";
34
+ const resolvedSidebarPanelCookieName = sidebarPanelCookieName ??
35
+ (sidebarPanelAutoSaveId
36
+ ? `nadicodeai-dashboard-shell-${sidebarPanelAutoSaveId}`
37
+ : undefined);
38
+ React.useEffect(() => {
39
+ setHasMeasuredViewport(true);
40
+ return () => {
41
+ if (sidebarWidthCookieTimeoutRef.current) {
42
+ window.clearTimeout(sidebarWidthCookieTimeoutRef.current);
43
+ }
44
+ };
45
+ }, []);
46
+ const persistSidebarSize = React.useCallback((sidebarSize) => {
47
+ if (typeof window === "undefined") {
48
+ return;
49
+ }
50
+ if (!resolvedSidebarPanelCookieName) {
51
+ return;
52
+ }
53
+ if (sidebarWidthCookieTimeoutRef.current) {
54
+ window.clearTimeout(sidebarWidthCookieTimeoutRef.current);
55
+ }
56
+ sidebarWidthCookieTimeoutRef.current = window.setTimeout(() => {
57
+ window.document.cookie = `${resolvedSidebarPanelCookieName}=${encodeURIComponent(sidebarSize.toFixed(3))}; Path=/; Max-Age=${oneYearInSeconds}; SameSite=Lax`;
58
+ sidebarWidthCookieTimeoutRef.current = undefined;
59
+ }, 150);
60
+ }, [resolvedSidebarPanelCookieName]);
61
+ const handleLayoutChanged = React.useCallback((layout, sidebarState) => {
62
+ if (sidebarState !== "expanded") {
63
+ return;
64
+ }
65
+ const sidebarSize = layout["dashboard-sidebar"];
66
+ if (resolvedSidebarPanelCookieName &&
67
+ typeof sidebarSize === "number" &&
68
+ sidebarSize >= sidebarPanelMinSize) {
69
+ persistSidebarSize(sidebarSize);
70
+ }
71
+ }, [persistSidebarSize, resolvedSidebarPanelCookieName, sidebarPanelMinSize]);
72
+ const canResizeSidebar = !!sidebarResize && hasMeasuredViewport && !isMobile && sidebarSide === "left";
73
+ 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] })));
74
+ 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 }) }))] })] }));
75
+ 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] })) }));
7
76
  }
8
77
  export { DashboardShell };
@@ -0,0 +1,14 @@
1
+ import * as React from "react";
2
+ type StateTagState = "ready" | "running" | "review" | "blocked" | "complete";
3
+ declare function MetaLabel({ className, ...props }: React.ComponentProps<"span">): React.JSX.Element;
4
+ declare function StateTag({ className, state, ...props }: React.ComponentProps<"span"> & {
5
+ state: StateTagState;
6
+ }): React.JSX.Element;
7
+ declare function CommandSuffix({ className, ...props }: React.ComponentProps<"span">): React.JSX.Element;
8
+ declare function FilterChip({ children, className, removeLabel, type, ...props }: Omit<React.ComponentProps<"button">, "children"> & {
9
+ children: React.ReactNode;
10
+ removeLabel: string;
11
+ }): React.JSX.Element;
12
+ export { CommandSuffix, FilterChip, MetaLabel, StateTag };
13
+ export type { StateTagState };
14
+ //# sourceMappingURL=label-system.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"label-system.d.ts","sourceRoot":"","sources":["../../src/components/label-system.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAK/B,KAAK,aAAa,GAAG,OAAO,GAAG,SAAS,GAAG,QAAQ,GAAG,SAAS,GAAG,UAAU,CAAC;AAE7E,iBAAS,SAAS,CAAC,EAAE,SAAS,EAAE,GAAG,KAAK,EAAE,EAAE,KAAK,CAAC,cAAc,CAAC,MAAM,CAAC,qBAWvE;AAED,iBAAS,QAAQ,CAAC,EAChB,SAAS,EACT,KAAK,EACL,GAAG,KAAK,EACT,EAAE,KAAK,CAAC,cAAc,CAAC,MAAM,CAAC,GAAG;IAAE,KAAK,EAAE,aAAa,CAAA;CAAE,qBAUzD;AAED,iBAAS,aAAa,CAAC,EAAE,SAAS,EAAE,GAAG,KAAK,EAAE,EAAE,KAAK,CAAC,cAAc,CAAC,MAAM,CAAC,qBAW3E;AAED,iBAAS,UAAU,CAAC,EAClB,QAAQ,EACR,SAAS,EACT,WAAW,EACX,IAAe,EACf,GAAG,KAAK,EACT,EAAE,IAAI,CAAC,KAAK,CAAC,cAAc,CAAC,QAAQ,CAAC,EAAE,UAAU,CAAC,GAAG;IACpD,QAAQ,EAAE,KAAK,CAAC,SAAS,CAAC;IAC1B,WAAW,EAAE,MAAM,CAAC;CACrB,qBAgBA;AAED,OAAO,EAAE,aAAa,EAAE,UAAU,EAAE,SAAS,EAAE,QAAQ,EAAE,CAAC;AAC1D,YAAY,EAAE,aAAa,EAAE,CAAC"}
@@ -0,0 +1,16 @@
1
+ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
+ import { XIcon } from "lucide-react";
3
+ import { cn } from "../lib/utils.js";
4
+ function MetaLabel({ className, ...props }) {
5
+ return (_jsx("span", { "data-slot": "meta-label", className: cn("inline-flex h-5 w-fit shrink-0 items-center justify-center rounded-md border border-border bg-muted/40 px-2 text-xs font-medium text-muted-foreground whitespace-nowrap", className), ...props }));
6
+ }
7
+ function StateTag({ className, state, ...props }) {
8
+ return (_jsx("span", { "data-slot": "state-tag", "data-state": state, "data-variant": state, className: cn("nc-state-tag", className), ...props }));
9
+ }
10
+ function CommandSuffix({ className, ...props }) {
11
+ return (_jsx("span", { "data-slot": "command-suffix", className: cn("inline-flex h-5 min-w-5 shrink-0 items-center justify-center rounded-md border border-border bg-muted px-1.5 font-mono text-xs font-medium text-muted-foreground tabular-nums whitespace-nowrap", className), ...props }));
12
+ }
13
+ function FilterChip({ children, className, removeLabel, type = "button", ...props }) {
14
+ return (_jsxs("button", { type: type, "data-slot": "filter-chip", "aria-label": removeLabel, className: cn("nc-filter-chip max-w-full shrink-0 border-border bg-muted/40 text-xs font-medium text-foreground transition-colors hover:bg-muted focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring disabled:pointer-events-none disabled:opacity-50 whitespace-nowrap [&>svg]:size-3", className), ...props, children: [_jsx("span", { className: "min-w-0 truncate", children: children }), _jsx(XIcon, { "aria-hidden": "true", className: "shrink-0", "data-icon": "inline-end" })] }));
15
+ }
16
+ export { CommandSuffix, FilterChip, MetaLabel, StateTag };
@@ -1 +1 @@
1
- {"version":3,"file":"table.d.ts","sourceRoot":"","sources":["../../src/components/table.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAA;AAI9B,iBAAS,KAAK,CAAC,EAAE,SAAS,EAAE,GAAG,KAAK,EAAE,EAAE,KAAK,CAAC,cAAc,CAAC,OAAO,CAAC,qBAapE;AAED,iBAAS,WAAW,CAAC,EAAE,SAAS,EAAE,GAAG,KAAK,EAAE,EAAE,KAAK,CAAC,cAAc,CAAC,OAAO,CAAC,qBAQ1E;AAED,iBAAS,SAAS,CAAC,EAAE,SAAS,EAAE,GAAG,KAAK,EAAE,EAAE,KAAK,CAAC,cAAc,CAAC,OAAO,CAAC,qBAQxE;AAED,iBAAS,WAAW,CAAC,EAAE,SAAS,EAAE,GAAG,KAAK,EAAE,EAAE,KAAK,CAAC,cAAc,CAAC,OAAO,CAAC,qBAW1E;AAED,iBAAS,QAAQ,CAAC,EAAE,SAAS,EAAE,GAAG,KAAK,EAAE,EAAE,KAAK,CAAC,cAAc,CAAC,IAAI,CAAC,qBAWpE;AAED,iBAAS,SAAS,CAAC,EAAE,SAAS,EAAE,GAAG,KAAK,EAAE,EAAE,KAAK,CAAC,cAAc,CAAC,IAAI,CAAC,qBAWrE;AAED,iBAAS,SAAS,CAAC,EAAE,SAAS,EAAE,GAAG,KAAK,EAAE,EAAE,KAAK,CAAC,cAAc,CAAC,IAAI,CAAC,qBAWrE;AAED,iBAAS,YAAY,CAAC,EACpB,SAAS,EACT,GAAG,KAAK,EACT,EAAE,KAAK,CAAC,cAAc,CAAC,SAAS,CAAC,qBAQjC;AAED,OAAO,EACL,KAAK,EACL,WAAW,EACX,SAAS,EACT,WAAW,EACX,SAAS,EACT,QAAQ,EACR,SAAS,EACT,YAAY,GACb,CAAA"}
1
+ {"version":3,"file":"table.d.ts","sourceRoot":"","sources":["../../src/components/table.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAI/B,iBAAS,KAAK,CAAC,EAAE,SAAS,EAAE,GAAG,KAAK,EAAE,EAAE,KAAK,CAAC,cAAc,CAAC,OAAO,CAAC,qBAapE;AAED,iBAAS,WAAW,CAAC,EAAE,SAAS,EAAE,GAAG,KAAK,EAAE,EAAE,KAAK,CAAC,cAAc,CAAC,OAAO,CAAC,qBAQ1E;AAED,iBAAS,SAAS,CAAC,EAAE,SAAS,EAAE,GAAG,KAAK,EAAE,EAAE,KAAK,CAAC,cAAc,CAAC,OAAO,CAAC,qBAQxE;AAED,iBAAS,WAAW,CAAC,EAAE,SAAS,EAAE,GAAG,KAAK,EAAE,EAAE,KAAK,CAAC,cAAc,CAAC,OAAO,CAAC,qBAW1E;AAED,iBAAS,QAAQ,CAAC,EAAE,SAAS,EAAE,GAAG,KAAK,EAAE,EAAE,KAAK,CAAC,cAAc,CAAC,IAAI,CAAC,qBAWpE;AAED,iBAAS,SAAS,CAAC,EAAE,SAAS,EAAE,GAAG,KAAK,EAAE,EAAE,KAAK,CAAC,cAAc,CAAC,IAAI,CAAC,qBAWrE;AAED,iBAAS,SAAS,CAAC,EAAE,SAAS,EAAE,GAAG,KAAK,EAAE,EAAE,KAAK,CAAC,cAAc,CAAC,IAAI,CAAC,qBAWrE;AAED,iBAAS,YAAY,CAAC,EACpB,SAAS,EACT,GAAG,KAAK,EACT,EAAE,KAAK,CAAC,cAAc,CAAC,SAAS,CAAC,qBAQjC;AAED,OAAO,EACL,KAAK,EACL,WAAW,EACX,SAAS,EACT,WAAW,EACX,SAAS,EACT,QAAQ,EACR,SAAS,EACT,YAAY,GACb,CAAC"}
@@ -2,7 +2,7 @@
2
2
  import { jsx as _jsx } from "react/jsx-runtime";
3
3
  import { cn } from "../lib/utils.js";
4
4
  function Table({ className, ...props }) {
5
- return (_jsx("div", { "data-slot": "table-container", className: "relative w-full overflow-x-auto", children: _jsx("table", { "data-slot": "table", className: cn("w-full caption-bottom text-sm", className), ...props }) }));
5
+ return (_jsx("div", { "data-slot": "table-container", className: "relative w-full overflow-x-auto bg-background", children: _jsx("table", { "data-slot": "table", className: cn("w-full caption-bottom bg-background text-sm", className), ...props }) }));
6
6
  }
7
7
  function TableHeader({ className, ...props }) {
8
8
  return (_jsx("thead", { "data-slot": "table-header", className: cn("[&_tr]:border-b", className), ...props }));
@@ -11,10 +11,10 @@ function TableBody({ className, ...props }) {
11
11
  return (_jsx("tbody", { "data-slot": "table-body", className: cn("[&_tr:last-child]:border-0", className), ...props }));
12
12
  }
13
13
  function TableFooter({ className, ...props }) {
14
- return (_jsx("tfoot", { "data-slot": "table-footer", className: cn("border-t bg-muted/50 font-medium [&>tr]:last:border-b-0", className), ...props }));
14
+ return (_jsx("tfoot", { "data-slot": "table-footer", className: cn("border-t border-border bg-muted/50 font-medium [&>tr]:last:border-b-0", className), ...props }));
15
15
  }
16
16
  function TableRow({ className, ...props }) {
17
- return (_jsx("tr", { "data-slot": "table-row", className: cn("border-b transition-colors hover:bg-muted/50 has-aria-expanded:bg-muted/50 data-[state=selected]:bg-muted", className), ...props }));
17
+ return (_jsx("tr", { "data-slot": "table-row", className: cn("border-b border-border transition-colors hover:bg-muted/50 has-aria-expanded:bg-muted/50 data-[state=selected]:bg-muted", className), ...props }));
18
18
  }
19
19
  function TableHead({ className, ...props }) {
20
20
  return (_jsx("th", { "data-slot": "table-head", className: cn("h-10 px-2 text-left align-middle font-medium whitespace-nowrap text-foreground [&:has([role=checkbox])]:pr-0", className), ...props }));
package/dist/index.d.ts CHANGED
@@ -55,6 +55,7 @@ export * from "./components/installer-shell";
55
55
  export * from "./components/item";
56
56
  export * from "./components/kbd";
57
57
  export * from "./components/label";
58
+ export * from "./components/label-system";
58
59
  export * from "./components/logo-band";
59
60
  export * from "./components/logo-tile";
60
61
  export * from "./components/media-mount";
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
package/dist/index.js CHANGED
@@ -55,6 +55,7 @@ export * from "./components/installer-shell.js";
55
55
  export * from "./components/item.js";
56
56
  export * from "./components/kbd.js";
57
57
  export * from "./components/label.js";
58
+ export * from "./components/label-system.js";
58
59
  export * from "./components/logo-band.js";
59
60
  export * from "./components/logo-tile.js";
60
61
  export * from "./components/media-mount.js";
@@ -27,6 +27,14 @@
27
27
  */
28
28
  @custom-variant dark (&:where(.dark, .dark *));
29
29
 
30
+ :root.dark {
31
+ --nc-state-ready: var(--nc-dark-state-ready);
32
+ --nc-state-running: var(--nc-dark-state-running);
33
+ --nc-state-review: var(--nc-dark-state-review);
34
+ --nc-state-blocked: var(--nc-dark-state-blocked);
35
+ --nc-state-complete: var(--nc-dark-state-complete);
36
+ }
37
+
30
38
  @theme inline {
31
39
  --color-background: var(--background);
32
40
  --color-foreground: var(--foreground);
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@nadicodeai/ui",
3
- "version": "0.5.0",
3
+ "version": "0.5.1",
4
4
  "type": "module",
5
5
  "publishConfig": {
6
6
  "access": "public"
@@ -49,7 +49,7 @@
49
49
  },
50
50
  "dependencies": {
51
51
  "@base-ui/react": "^1.6.0",
52
- "@nadicodeai/design-system": "0.5.0",
52
+ "@nadicodeai/design-system": "0.5.1",
53
53
  "@rive-app/react-webgl2": "^4.29.1",
54
54
  "@streamdown/cjk": "^1.0.3",
55
55
  "@streamdown/code": "^1.1.1",