@nadicodeai/ui 12.1.31 → 12.1.32
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/agent-card.d.ts +2 -1
- package/dist/components/agent-card.d.ts.map +1 -1
- package/dist/components/agent-card.js +2 -1
- package/dist/components/app-mark.d.ts +1 -1
- package/dist/components/app-mark.d.ts.map +1 -1
- package/dist/components/app-mark.js +1 -1
- package/dist/components/item.d.ts +10 -1
- package/dist/components/item.d.ts.map +1 -1
- package/dist/components/item.js +13 -3
- package/dist/components/model-identity.d.ts +4 -6
- package/dist/components/model-identity.d.ts.map +1 -1
- package/dist/components/model-identity.js +14 -5
- package/dist/components/model-mark.d.ts +1 -1
- package/dist/components/model-mark.d.ts.map +1 -1
- package/dist/components/model-mark.js +1 -1
- package/dist/components/object-workspace.d.ts +2 -1
- package/dist/components/object-workspace.d.ts.map +1 -1
- package/dist/components/object-workspace.js +1 -1
- package/dist/components/table-card.d.ts +14 -2
- package/dist/components/table-card.d.ts.map +1 -1
- package/dist/components/table-card.js +9 -3
- package/package.json +2 -2
|
@@ -6,7 +6,8 @@ type AgentCardProps = Omit<React.ComponentProps<typeof Card>, "children"> & {
|
|
|
6
6
|
meta?: ReactNode;
|
|
7
7
|
name: ReactNode;
|
|
8
8
|
status?: ReactNode;
|
|
9
|
-
|
|
9
|
+
/** The object's picture: an Agent's orb, an app's mark. A skill, which is text, has none. */
|
|
10
|
+
visual?: ReactNode;
|
|
10
11
|
};
|
|
11
12
|
declare function AgentCard({ action, className, job, meta, name, status, visual, ...props }: AgentCardProps): import("react").JSX.Element;
|
|
12
13
|
export { AgentCard, type AgentCardProps };
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"agent-card.d.ts","sourceRoot":"","sources":["../../src/components/agent-card.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC;AAEvC,OAAO,EAAE,IAAI,EAA0C,MAAM,mBAAmB,CAAC;AAGjF,KAAK,cAAc,GAAG,IAAI,CAAC,KAAK,CAAC,cAAc,CAAC,OAAO,IAAI,CAAC,EAAE,UAAU,CAAC,GAAG;IAC1E,MAAM,CAAC,EAAE,SAAS,CAAC;IACnB,GAAG,EAAE,SAAS,CAAC;IACf,IAAI,CAAC,EAAE,SAAS,CAAC;IACjB,IAAI,EAAE,SAAS,CAAC;IAChB,MAAM,CAAC,EAAE,SAAS,CAAC;IACnB,MAAM,EAAE,SAAS,CAAC;
|
|
1
|
+
{"version":3,"file":"agent-card.d.ts","sourceRoot":"","sources":["../../src/components/agent-card.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC;AAEvC,OAAO,EAAE,IAAI,EAA0C,MAAM,mBAAmB,CAAC;AAGjF,KAAK,cAAc,GAAG,IAAI,CAAC,KAAK,CAAC,cAAc,CAAC,OAAO,IAAI,CAAC,EAAE,UAAU,CAAC,GAAG;IAC1E,MAAM,CAAC,EAAE,SAAS,CAAC;IACnB,GAAG,EAAE,SAAS,CAAC;IACf,IAAI,CAAC,EAAE,SAAS,CAAC;IACjB,IAAI,EAAE,SAAS,CAAC;IAChB,MAAM,CAAC,EAAE,SAAS,CAAC;IACnB,6FAA6F;IAC7F,MAAM,CAAC,EAAE,SAAS,CAAC;CACpB,CAAC;AAMF,iBAAS,SAAS,CAAC,EACjB,MAAM,EACN,SAAS,EACT,GAAG,EACH,IAAI,EACJ,IAAI,EACJ,MAAM,EACN,MAAM,EACN,GAAG,KAAK,EACT,EAAE,cAAc,+BAsDhB;AAED,OAAO,EAAE,SAAS,EAAE,KAAK,cAAc,EAAE,CAAC"}
|
|
@@ -8,6 +8,7 @@ function AgentCard({ action, className, job, meta, name, status, visual, ...prop
|
|
|
8
8
|
const hasStatus = hasSlotContent(status);
|
|
9
9
|
const hasMeta = hasSlotContent(meta);
|
|
10
10
|
const hasAction = hasSlotContent(action);
|
|
11
|
-
|
|
11
|
+
const hasVisual = hasSlotContent(visual);
|
|
12
|
+
return (_jsxs(Card, { className: cn("h-full", className), ...props, children: [_jsxs("div", { className: cn("grid items-start gap-(--card-spacing) px-(--card-spacing)", hasVisual && "grid-cols-[auto_minmax(0,1fr)]"), children: [hasVisual ? (_jsx("div", { className: "grid size-24 place-items-center overflow-hidden", "data-slot": "agent-card-visual", children: visual })) : null, _jsxs("div", { className: "grid min-w-0 content-start gap-nadicode-xs", children: [_jsx(CardTitle, { className: "leading-tight font-semibold", children: name }), _jsx(CardDescription, { className: "leading-snug", children: job }), hasStatus ? (_jsx("div", { className: "flex flex-wrap items-center gap-nadicode-xxs pt-nadicode-xxs", "data-slot": "agent-card-status", children: status })) : null] })] }), hasMeta || hasAction ? (_jsxs(CardFooter, { className: "mt-auto gap-nadicode-sm border-t py-nadicode-sm", children: [hasMeta ? (_jsx("div", { className: "min-w-0 flex-1 text-xs text-muted-foreground", "data-slot": "agent-card-meta", children: meta })) : null, hasAction ? (_jsx("div", { className: "ml-auto shrink-0", "data-slot": "agent-card-action", children: action })) : null] })) : null] }));
|
|
12
13
|
}
|
|
13
14
|
export { AgentCard };
|
|
@@ -11,7 +11,7 @@ declare function appInitial(app: string): string;
|
|
|
11
11
|
type AppMarkProps = Omit<React.ComponentProps<"span">, "children"> & {
|
|
12
12
|
/** The connector's slug, id or display name, e.g. `"google-calendar"`. */
|
|
13
13
|
app: string;
|
|
14
|
-
/** The tile's box in CSS pixels; the glyph scales with it. Defaults to
|
|
14
|
+
/** The tile's box in CSS pixels; the glyph scales with it. Defaults to 24, the row size. */
|
|
15
15
|
size?: number;
|
|
16
16
|
/**
|
|
17
17
|
* The mark's accessible name. Beside the app's name it needs none, and a
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"app-mark.d.ts","sourceRoot":"","sources":["../../src/components/app-mark.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAI/B,OAAO,EA0CL,KAAK,cAAc,EACpB,MAAM,0BAA0B,CAAC;AAElC,KAAK,SAAS,GAAG,KAAK,CAAC,aAAa,CAAC,cAAc,CAAC,CAAC;AAoDrD;;;GAGG;AACH,iBAAS,UAAU,CAAC,GAAG,EAAE,MAAM,GAAG,SAAS,GAAG,SAAS,CAGtD;AAED,sGAAsG;AACtG,iBAAS,UAAU,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,CAOvC;AAOD,KAAK,YAAY,GAAG,IAAI,CAAC,KAAK,CAAC,cAAc,CAAC,MAAM,CAAC,EAAE,UAAU,CAAC,GAAG;IACnE,0EAA0E;IAC1E,GAAG,EAAE,MAAM,CAAC;IACZ,
|
|
1
|
+
{"version":3,"file":"app-mark.d.ts","sourceRoot":"","sources":["../../src/components/app-mark.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAI/B,OAAO,EA0CL,KAAK,cAAc,EACpB,MAAM,0BAA0B,CAAC;AAElC,KAAK,SAAS,GAAG,KAAK,CAAC,aAAa,CAAC,cAAc,CAAC,CAAC;AAoDrD;;;GAGG;AACH,iBAAS,UAAU,CAAC,GAAG,EAAE,MAAM,GAAG,SAAS,GAAG,SAAS,CAGtD;AAED,sGAAsG;AACtG,iBAAS,UAAU,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,CAOvC;AAOD,KAAK,YAAY,GAAG,IAAI,CAAC,KAAK,CAAC,cAAc,CAAC,MAAM,CAAC,EAAE,UAAU,CAAC,GAAG;IACnE,0EAA0E;IAC1E,GAAG,EAAE,MAAM,CAAC;IACZ,4FAA4F;IAC5F,IAAI,CAAC,EAAE,MAAM,CAAC;IACd;;;OAGG;IACH,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB,CAAC;AAEF;;;;GAIG;AACH,iBAAS,OAAO,CAAC,EAAE,GAAG,EAAE,IAAoB,EAAE,KAAK,EAAE,SAAS,EAAE,KAAK,EAAE,GAAG,KAAK,EAAE,EAAE,YAAY,qBAuC9F;AAED,OAAO,EAAE,OAAO,EAAE,UAAU,EAAE,UAAU,EAAE,CAAC;AAC3C,YAAY,EAAE,YAAY,EAAE,CAAC"}
|
|
@@ -66,7 +66,7 @@ function appInitial(app) {
|
|
|
66
66
|
.match(/[a-z0-9]/i)?.[0]
|
|
67
67
|
?.toUpperCase() ?? "?");
|
|
68
68
|
}
|
|
69
|
-
const APP_MARK_SIZE =
|
|
69
|
+
const APP_MARK_SIZE = 24;
|
|
70
70
|
/** The glyph's share of the tile, the same ratio as `ModelMark`. */
|
|
71
71
|
const APP_MARK_GLYPH_RATIO = 0.62;
|
|
72
72
|
/**
|
|
@@ -2,7 +2,16 @@ import * as React from "react";
|
|
|
2
2
|
import { useRender } from "@base-ui/react/use-render";
|
|
3
3
|
import { type VariantProps } from "class-variance-authority";
|
|
4
4
|
import { Separator } from "./separator.js";
|
|
5
|
-
declare function ItemGroup({ className, ...props }:
|
|
5
|
+
declare function ItemGroup({ className, divided, render, ...props }: useRender.ComponentProps<"div"> & {
|
|
6
|
+
/**
|
|
7
|
+
* Records inside a card: no gap, one hairline between records like a table's,
|
|
8
|
+
* and no outline on a row. The hairline is drawn on the group's children at a
|
|
9
|
+
* specificity a row's own border classes cannot beat, because an `Item`'s
|
|
10
|
+
* `border-transparent` hides a `divide-border` line. Off, the group is
|
|
11
|
+
* shadcn's spaced list of items.
|
|
12
|
+
*/
|
|
13
|
+
divided?: boolean;
|
|
14
|
+
}): React.ReactElement<unknown, string | React.JSXElementConstructor<any>>;
|
|
6
15
|
declare function ItemSeparator({ className, ...props }: React.ComponentProps<typeof Separator>): React.JSX.Element;
|
|
7
16
|
declare const itemVariants: (props?: ({
|
|
8
17
|
variant?: "default" | "outline" | "muted" | null | undefined;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"item.d.ts","sourceRoot":"","sources":["../../src/components/item.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAE/B,OAAO,EAAE,SAAS,EAAE,MAAM,2BAA2B,CAAC;AACtD,OAAO,EAAO,KAAK,YAAY,EAAE,MAAM,0BAA0B,CAAC;AAGlE,OAAO,EAAE,SAAS,EAAE,MAAM,wBAAwB,CAAC;AAEnD,iBAAS,SAAS,CAAC,
|
|
1
|
+
{"version":3,"file":"item.d.ts","sourceRoot":"","sources":["../../src/components/item.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAE/B,OAAO,EAAE,SAAS,EAAE,MAAM,2BAA2B,CAAC;AACtD,OAAO,EAAO,KAAK,YAAY,EAAE,MAAM,0BAA0B,CAAC;AAGlE,OAAO,EAAE,SAAS,EAAE,MAAM,wBAAwB,CAAC;AAEnD,iBAAS,SAAS,CAAC,EACjB,SAAS,EACT,OAAe,EACf,MAAM,EACN,GAAG,KAAK,EACT,EAAE,SAAS,CAAC,cAAc,CAAC,KAAK,CAAC,GAAG;IACnC;;;;;;OAMG;IACH,OAAO,CAAC,EAAE,OAAO,CAAC;CACnB,0EAmBA;AAED,iBAAS,aAAa,CAAC,EAAE,SAAS,EAAE,GAAG,KAAK,EAAE,EAAE,KAAK,CAAC,cAAc,CAAC,OAAO,SAAS,CAAC,qBAWrF;AAED,QAAA,MAAM,YAAY;;;8EAoBjB,CAAC;AAEF,iBAAS,IAAI,CAAC,EACZ,SAAS,EACT,OAAmB,EACnB,IAAgB,EAChB,MAAM,EACN,GAAG,KAAK,EACT,EAAE,SAAS,CAAC,cAAc,CAAC,KAAK,CAAC,GAAG,YAAY,CAAC,OAAO,YAAY,CAAC,0EAgBrE;AAED,QAAA,MAAM,iBAAiB;;8EAetB,CAAC;AAEF,iBAAS,SAAS,CAAC,EACjB,SAAS,EACT,OAAmB,EACnB,GAAG,KAAK,EACT,EAAE,KAAK,CAAC,cAAc,CAAC,KAAK,CAAC,GAAG,YAAY,CAAC,OAAO,iBAAiB,CAAC,qBAStE;AAED,iBAAS,WAAW,CAAC,EAAE,SAAS,EAAE,GAAG,KAAK,EAAE,EAAE,KAAK,CAAC,cAAc,CAAC,KAAK,CAAC,qBAWxE;AAED,iBAAS,SAAS,CAAC,EAAE,SAAS,EAAE,GAAG,KAAK,EAAE,EAAE,KAAK,CAAC,cAAc,CAAC,KAAK,CAAC,qBAWtE;AAED,iBAAS,eAAe,CAAC,EAAE,SAAS,EAAE,GAAG,KAAK,EAAE,EAAE,KAAK,CAAC,cAAc,CAAC,GAAG,CAAC,qBAW1E;AAED,iBAAS,WAAW,CAAC,EAAE,SAAS,EAAE,GAAG,KAAK,EAAE,EAAE,KAAK,CAAC,cAAc,CAAC,KAAK,CAAC,qBAIxE;AAED,iBAAS,UAAU,CAAC,EAAE,SAAS,EAAE,GAAG,KAAK,EAAE,EAAE,KAAK,CAAC,cAAc,CAAC,KAAK,CAAC,qBAQvE;AAED,iBAAS,UAAU,CAAC,EAAE,SAAS,EAAE,GAAG,KAAK,EAAE,EAAE,KAAK,CAAC,cAAc,CAAC,KAAK,CAAC,qBAQvE;AAED,OAAO,EACL,IAAI,EACJ,SAAS,EACT,WAAW,EACX,WAAW,EACX,SAAS,EACT,aAAa,EACb,SAAS,EACT,eAAe,EACf,UAAU,EACV,UAAU,GACX,CAAC"}
|
package/dist/components/item.js
CHANGED
|
@@ -4,13 +4,23 @@ import { useRender } from "@base-ui/react/use-render";
|
|
|
4
4
|
import { cva } from "class-variance-authority";
|
|
5
5
|
import { cn } from "../lib/utils.js";
|
|
6
6
|
import { Separator } from "./separator.js";
|
|
7
|
-
function ItemGroup({ className, ...props }) {
|
|
8
|
-
return (
|
|
7
|
+
function ItemGroup({ className, divided = false, render, ...props }) {
|
|
8
|
+
return useRender({
|
|
9
|
+
defaultTagName: "div",
|
|
10
|
+
props: mergeProps({
|
|
11
|
+
role: "list",
|
|
12
|
+
className: cn("group/item-group flex w-full flex-col", divided
|
|
13
|
+
? "[&>*:not(:last-child)]:border-b [&>*:not(:last-child)]:border-b-border"
|
|
14
|
+
: "gap-4 has-data-[size=sm]:gap-2.5 has-data-[size=xs]:gap-2", className),
|
|
15
|
+
}, props),
|
|
16
|
+
render,
|
|
17
|
+
state: { slot: "item-group", divided },
|
|
18
|
+
});
|
|
9
19
|
}
|
|
10
20
|
function ItemSeparator({ className, ...props }) {
|
|
11
21
|
return (_jsx(Separator, { "data-slot": "item-separator", orientation: "horizontal", className: cn("my-2", className), ...props, "aria-hidden": "true", role: "presentation" }));
|
|
12
22
|
}
|
|
13
|
-
const itemVariants = cva("nc-transition-paint group/item flex w-full flex-wrap items-center rounded-md border text-sm [a]:transition-colors [a]:hover:bg-accent", {
|
|
23
|
+
const itemVariants = cva("nc-transition-paint group/item flex w-full flex-wrap items-center rounded-md border text-sm in-data-divided:rounded-none in-data-divided:border-0 [a]:transition-colors [a]:hover:bg-accent", {
|
|
14
24
|
variants: {
|
|
15
25
|
variant: {
|
|
16
26
|
default: "border-transparent",
|
|
@@ -6,14 +6,12 @@ import type { ComponentPropsWithoutRef } from "react";
|
|
|
6
6
|
*/
|
|
7
7
|
export declare function modelAuthor(model: string): string;
|
|
8
8
|
/**
|
|
9
|
-
* The one name form a model is read by: the
|
|
10
|
-
*
|
|
11
|
-
*
|
|
9
|
+
* The one name form a model is read by: the maker's own spelling when the
|
|
10
|
+
* table has it, otherwise the id without its maker prefix, since the mark
|
|
11
|
+
* beside it already says who made it and the muted maker repeats it in words.
|
|
12
12
|
*/
|
|
13
13
|
export declare function modelDisplayName(model: string): string;
|
|
14
14
|
export type ModelIdentityProps = Omit<ComponentPropsWithoutRef<"span">, "children"> & {
|
|
15
|
-
/** The maker's own spelling of the name, when the product knows it. */
|
|
16
|
-
label?: string;
|
|
17
15
|
model: string;
|
|
18
16
|
markSize?: number;
|
|
19
17
|
};
|
|
@@ -23,5 +21,5 @@ export type ModelIdentityProps = Omit<ComponentPropsWithoutRef<"span">, "childre
|
|
|
23
21
|
* name form and the mark all belong here, so a ranked list, a routing table and
|
|
24
22
|
* a settings row cannot drift into three readings of the same model.
|
|
25
23
|
*/
|
|
26
|
-
export declare function ModelIdentity({
|
|
24
|
+
export declare function ModelIdentity({ model, markSize, ...props }: ModelIdentityProps): import("react").JSX.Element;
|
|
27
25
|
//# sourceMappingURL=model-identity.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"model-identity.d.ts","sourceRoot":"","sources":["../../src/components/model-identity.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,wBAAwB,EAAE,MAAM,OAAO,CAAC;AAItD;;;;GAIG;AACH,wBAAgB,WAAW,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,CAGjD;
|
|
1
|
+
{"version":3,"file":"model-identity.d.ts","sourceRoot":"","sources":["../../src/components/model-identity.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,wBAAwB,EAAE,MAAM,OAAO,CAAC;AAItD;;;;GAIG;AACH,wBAAgB,WAAW,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,CAGjD;AAUD;;;;GAIG;AACH,wBAAgB,gBAAgB,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,CAItD;AAED,MAAM,MAAM,kBAAkB,GAAG,IAAI,CAAC,wBAAwB,CAAC,MAAM,CAAC,EAAE,UAAU,CAAC,GAAG;IACpF,KAAK,EAAE,MAAM,CAAC;IACd,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB,CAAC;AAEF;;;;;GAKG;AACH,wBAAgB,aAAa,CAAC,EAAE,KAAK,EAAE,QAAQ,EAAE,GAAG,KAAK,EAAE,EAAE,kBAAkB,+BAS9E"}
|
|
@@ -9,12 +9,21 @@ export function modelAuthor(model) {
|
|
|
9
9
|
const separator = model.indexOf("/");
|
|
10
10
|
return separator === -1 ? "" : model.slice(0, separator);
|
|
11
11
|
}
|
|
12
|
+
const MODEL_NAMES = Object.freeze({
|
|
13
|
+
"anthropic/claude-opus-5": "Claude Opus 5",
|
|
14
|
+
"anthropic/claude-sonnet-5": "Claude Sonnet 5",
|
|
15
|
+
"google/gemini-3.1-flash-lite": "Gemini 3.1 Flash Lite",
|
|
16
|
+
"openai/gpt-5.6-sol": "GPT-5.6 Sol",
|
|
17
|
+
"x-ai/grok-4.5": "Grok 4.5",
|
|
18
|
+
});
|
|
12
19
|
/**
|
|
13
|
-
* The one name form a model is read by: the
|
|
14
|
-
*
|
|
15
|
-
*
|
|
20
|
+
* The one name form a model is read by: the maker's own spelling when the
|
|
21
|
+
* table has it, otherwise the id without its maker prefix, since the mark
|
|
22
|
+
* beside it already says who made it and the muted maker repeats it in words.
|
|
16
23
|
*/
|
|
17
24
|
export function modelDisplayName(model) {
|
|
25
|
+
if (Object.hasOwn(MODEL_NAMES, model))
|
|
26
|
+
return MODEL_NAMES[model];
|
|
18
27
|
const separator = model.indexOf("/");
|
|
19
28
|
return separator === -1 ? model : model.slice(separator + 1);
|
|
20
29
|
}
|
|
@@ -24,6 +33,6 @@ export function modelDisplayName(model) {
|
|
|
24
33
|
* name form and the mark all belong here, so a ranked list, a routing table and
|
|
25
34
|
* a settings row cannot drift into three readings of the same model.
|
|
26
35
|
*/
|
|
27
|
-
export function ModelIdentity({
|
|
28
|
-
return (_jsx(ModelMark, { author: modelAuthor(model), name:
|
|
36
|
+
export function ModelIdentity({ model, markSize, ...props }) {
|
|
37
|
+
return (_jsx(ModelMark, { author: modelAuthor(model), name: modelDisplayName(model), ...(markSize === undefined ? {} : { size: markSize }), ...props }));
|
|
29
38
|
}
|
|
@@ -4,7 +4,7 @@ type ModelMarkProps = Omit<React.ComponentProps<"span">, "children"> & {
|
|
|
4
4
|
author: string;
|
|
5
5
|
/** The model's name. Omitted, the mark renders the maker's logo alone. */
|
|
6
6
|
name?: string;
|
|
7
|
-
/** The tile's box in CSS pixels; the glyph scales with it. Defaults to
|
|
7
|
+
/** The tile's box in CSS pixels; the glyph scales with it. Defaults to 24, the row size. */
|
|
8
8
|
size?: number;
|
|
9
9
|
/**
|
|
10
10
|
* The mark's accessible name. A model named beside it needs none — the text
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"model-mark.d.ts","sourceRoot":"","sources":["../../src/components/model-mark.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AA0J/B,KAAK,cAAc,GAAG,IAAI,CAAC,KAAK,CAAC,cAAc,CAAC,MAAM,CAAC,EAAE,UAAU,CAAC,GAAG;IACrE,6EAA6E;IAC7E,MAAM,EAAE,MAAM,CAAC;IACf,0EAA0E;IAC1E,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,
|
|
1
|
+
{"version":3,"file":"model-mark.d.ts","sourceRoot":"","sources":["../../src/components/model-mark.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AA0J/B,KAAK,cAAc,GAAG,IAAI,CAAC,KAAK,CAAC,cAAc,CAAC,MAAM,CAAC,EAAE,UAAU,CAAC,GAAG;IACrE,6EAA6E;IAC7E,MAAM,EAAE,MAAM,CAAC;IACf,0EAA0E;IAC1E,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,4FAA4F;IAC5F,IAAI,CAAC,EAAE,MAAM,CAAC;IACd;;;;OAIG;IACH,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB,CAAC;AAEF,iBAAS,SAAS,CAAC,EACjB,MAAM,EACN,IAAI,EACJ,IAAsB,EACtB,KAAK,EACL,SAAS,EACT,GAAG,KAAK,EACT,EAAE,cAAc,qBAgEhB;AAED,OAAO,EAAE,SAAS,EAAE,CAAC;AACrB,YAAY,EAAE,cAAc,EAAE,CAAC"}
|
|
@@ -63,7 +63,7 @@ const MODEL_AUTHOR_MARKS = {
|
|
|
63
63
|
xiaomi: identity(XiaomiMimoIcon),
|
|
64
64
|
"z-ai": identity(ZaiIcon),
|
|
65
65
|
};
|
|
66
|
-
const MODEL_MARK_SIZE =
|
|
66
|
+
const MODEL_MARK_SIZE = 24;
|
|
67
67
|
/** The glyph's share of the tile, the ratio the boards' generator derived. */
|
|
68
68
|
const MODEL_MARK_GLYPH_RATIO = 0.62;
|
|
69
69
|
/**
|
|
@@ -14,7 +14,8 @@ export type ObjectIdentitySupportFacts = {
|
|
|
14
14
|
label: string;
|
|
15
15
|
};
|
|
16
16
|
export declare function ObjectIdentity({ visual, title, description, metadata, action, editAction, layout, support, }: {
|
|
17
|
-
|
|
17
|
+
/** The object's picture: an Agent's orb, an app's mark. A skill, which is text, has none. */
|
|
18
|
+
visual?: ReactNode;
|
|
18
19
|
title: ReactNode;
|
|
19
20
|
description?: ReactNode;
|
|
20
21
|
metadata?: ReactNode;
|
|
@@ -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;
|
|
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,6FAA6F;IAC7F,MAAM,CAAC,EAAE,SAAS,CAAC;IACnB,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,7 +5,7 @@ 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, { 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] }));
|
|
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: [visual ? _jsx("div", { className: "shrink-0", children: visual }) : null, _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 })] }));
|
|
@@ -1,10 +1,22 @@
|
|
|
1
1
|
import * as React from "react";
|
|
2
2
|
import { type CardSurface } from "./card.js";
|
|
3
|
-
/**
|
|
4
|
-
|
|
3
|
+
/**
|
|
4
|
+
* The frame a collection's table sits in: a heading, the collection's own
|
|
5
|
+
* toolbar under it, the table, a labelled total, and the recessed footer
|
|
6
|
+
* strip. The Portal's DataTable and Nadia's record sections draw this one
|
|
7
|
+
* frame, so a registry card ends the same way in both products.
|
|
8
|
+
*/
|
|
9
|
+
declare function TableCard({ title, description, actions, toolbar, summary, footer, footerHint, children, className, surface, ...props }: Omit<React.ComponentProps<"section">, "title"> & {
|
|
5
10
|
title?: React.ReactNode;
|
|
6
11
|
description?: React.ReactNode;
|
|
7
12
|
actions?: React.ReactNode;
|
|
13
|
+
/** The collection's search, filters and actions, under the heading and above the table. */
|
|
14
|
+
toolbar?: React.ReactNode;
|
|
15
|
+
/** A labelled total under the table. */
|
|
16
|
+
summary?: {
|
|
17
|
+
label: React.ReactNode;
|
|
18
|
+
value: React.ReactNode;
|
|
19
|
+
};
|
|
8
20
|
footer?: React.ReactNode;
|
|
9
21
|
footerHint?: React.ReactNode;
|
|
10
22
|
surface?: CardSurface;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"table-card.d.ts","sourceRoot":"","sources":["../../src/components/table-card.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAI/B,OAAO,EAA4D,KAAK,WAAW,EAAE,MAAM,QAAQ,CAAC;AAGpG
|
|
1
|
+
{"version":3,"file":"table-card.d.ts","sourceRoot":"","sources":["../../src/components/table-card.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAI/B,OAAO,EAA4D,KAAK,WAAW,EAAE,MAAM,QAAQ,CAAC;AAGpG;;;;;GAKG;AACH,iBAAS,SAAS,CAAC,EACjB,KAAK,EACL,WAAW,EACX,OAAO,EACP,OAAO,EACP,OAAO,EACP,MAAM,EACN,UAAU,EACV,QAAQ,EACR,SAAS,EACT,OAAmB,EACnB,GAAG,KAAK,EACT,EAAE,IAAI,CAAC,KAAK,CAAC,cAAc,CAAC,SAAS,CAAC,EAAE,OAAO,CAAC,GAAG;IAClD,KAAK,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;IACxB,WAAW,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;IAC9B,OAAO,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;IAC1B,2FAA2F;IAC3F,OAAO,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;IAC1B,wCAAwC;IACxC,OAAO,CAAC,EAAE;QAAE,KAAK,EAAE,KAAK,CAAC,SAAS,CAAC;QAAC,KAAK,EAAE,KAAK,CAAC,SAAS,CAAA;KAAE,CAAC;IAC7D,MAAM,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;IACzB,UAAU,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;IAC7B,OAAO,CAAC,EAAE,WAAW,CAAC;CACvB,qBA8CA;AAED,OAAO,EAAE,SAAS,EAAE,CAAC"}
|
|
@@ -3,8 +3,14 @@ import { cn } from "../lib/utils.js";
|
|
|
3
3
|
import { FooterStrip } from "../internal/footer-strip.js";
|
|
4
4
|
import { Card, CardAction, CardDescription, CardHeader, CardTitle } from "./card.js";
|
|
5
5
|
import { Separator } from "./separator.js";
|
|
6
|
-
/**
|
|
7
|
-
|
|
8
|
-
|
|
6
|
+
/**
|
|
7
|
+
* The frame a collection's table sits in: a heading, the collection's own
|
|
8
|
+
* toolbar under it, the table, a labelled total, and the recessed footer
|
|
9
|
+
* strip. The Portal's DataTable and Nadia's record sections draw this one
|
|
10
|
+
* frame, so a registry card ends the same way in both products.
|
|
11
|
+
*/
|
|
12
|
+
function TableCard({ title, description, actions, toolbar, summary, footer, footerHint, children, className, surface = "resting", ...props }) {
|
|
13
|
+
const heading = title || description || actions;
|
|
14
|
+
return (_jsxs(Card, { render: _jsx("section", { ...props, "data-slot": "table-card" }), surface: surface, className: cn("min-w-0 gap-0 py-0", className), children: [(heading || toolbar) && (_jsxs(_Fragment, { children: [heading && (_jsxs(CardHeader, { className: cn("pt-(--card-spacing)", !toolbar && "pb-(--card-spacing)"), children: [title && (_jsx(CardTitle, { children: _jsx("h2", { children: title }) })), description && _jsx(CardDescription, { children: description }), actions && _jsx(CardAction, { children: actions })] })), toolbar && (_jsx("div", { "data-slot": "table-card-toolbar", className: "px-(--card-spacing) pt-(--card-spacing)", children: toolbar })), _jsx(Separator, {})] })), _jsx("div", { "data-slot": "table-card-body", className: "min-w-0", children: children }), summary && (_jsxs("dl", { "data-slot": "table-card-summary", className: "flex min-w-0 items-start justify-between gap-4 border-t border-border px-4 py-3 text-sm font-medium", children: [_jsx("dt", { children: summary.label }), _jsx("dd", { className: "text-right tabular-nums", children: summary.value })] })), _jsx(FooterStrip, { hint: footerHint, hintSlot: "table-card-hint", children: footer })] }));
|
|
9
15
|
}
|
|
10
16
|
export { TableCard };
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@nadicodeai/ui",
|
|
3
|
-
"version": "12.1.
|
|
3
|
+
"version": "12.1.32",
|
|
4
4
|
"type": "module",
|
|
5
5
|
"publishConfig": {
|
|
6
6
|
"access": "public"
|
|
@@ -72,7 +72,7 @@
|
|
|
72
72
|
"@assistant-ui/react": "0.15.21",
|
|
73
73
|
"@assistant-ui/react-markdown": "0.14.16",
|
|
74
74
|
"@base-ui/react": "^1.8.0",
|
|
75
|
-
"@nadicodeai/design-system": "12.1.
|
|
75
|
+
"@nadicodeai/design-system": "12.1.32",
|
|
76
76
|
"class-variance-authority": "^0.7.1",
|
|
77
77
|
"clsx": "^2.1.1",
|
|
78
78
|
"cmdk": "^1.1.1",
|