@nadicodeai/ui 12.1.33 → 12.1.34
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-orb-appearance.d.ts +2 -2
- package/dist/components/agent-orb-appearance.d.ts.map +1 -1
- package/dist/components/field.d.ts.map +1 -1
- package/dist/components/field.js +4 -1
- package/dist/eslint/rules/shadcn-composition.js +22 -1
- package/dist/internal/agent-orb-motion.d.ts.map +1 -1
- package/dist/internal/agent-orb-motion.js +1 -0
- package/dist/internal/agent-orb.d.ts +5 -2
- package/dist/internal/agent-orb.d.ts.map +1 -1
- package/dist/internal/agent-orb.js +25 -3
- package/package.json +2 -2
|
@@ -7,7 +7,7 @@
|
|
|
7
7
|
* the resolver from here; the orb comes from `@nadicodeai/ui/components/agent-orb`,
|
|
8
8
|
* and neither module re-exports the other.
|
|
9
9
|
*/
|
|
10
|
-
import type {
|
|
10
|
+
import type { AgentOrbForm } from "../internal/agent-orb.js";
|
|
11
11
|
export type { AgentOrbFigure, AgentOrbForm } from "../internal/agent-orb.js";
|
|
12
12
|
/** What Nadia stores for an Agent's look, and reports to the Portal. Both may be absent or unknown. */
|
|
13
13
|
export interface StoredAgentOrbAppearance {
|
|
@@ -62,7 +62,7 @@ export declare const defaultAgentOrbShape: string;
|
|
|
62
62
|
export declare function resolveAgentOrb(stored: StoredAgentOrbAppearance, { root }?: {
|
|
63
63
|
root?: boolean;
|
|
64
64
|
}): {
|
|
65
|
-
form:
|
|
65
|
+
form: AgentOrbForm | "nadia";
|
|
66
66
|
color: AgentOrbColor | undefined;
|
|
67
67
|
};
|
|
68
68
|
//# sourceMappingURL=agent-orb-appearance.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"agent-orb-appearance.d.ts","sourceRoot":"","sources":["../../src/components/agent-orb-appearance.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AACH,OAAO,KAAK,EAAE,
|
|
1
|
+
{"version":3,"file":"agent-orb-appearance.d.ts","sourceRoot":"","sources":["../../src/components/agent-orb-appearance.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AACH,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,sBAAsB,CAAC;AAEzD,YAAY,EAAE,cAAc,EAAE,YAAY,EAAE,MAAM,sBAAsB,CAAC;AAEzE,uGAAuG;AACvG,MAAM,WAAW,wBAAwB;IACvC,KAAK,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACtB,KAAK,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;CACvB;AAED,8EAA8E;AAC9E,eAAO,MAAM,aAAa,+EAQkB,CAAC;AAE7C;;;;;;;;;;GAUG;AACH,eAAO,MAAM,cAAc,0CAA2C,CAAC;AACvE,MAAM,MAAM,aAAa,GAAG,CAAC,OAAO,cAAc,CAAC,CAAC,MAAM,CAAC,CAAC;AAE5D;;;;;;GAMG;AACH,eAAO,MAAM,mBAAmB,EAAE,MAAM,CAAC,aAAa,EAAE,MAAM,CAI7D,CAAC;AAEF,uDAAuD;AACvD,eAAO,MAAM,mBAAmB,EAAE,MAAM,CAAC,aAAa,EAAE,MAAM,CAI7D,CAAC;AAEF;;;;GAIG;AACH,eAAO,MAAM,0BAA0B;;CAAgC,CAAC;AAaxE,oDAAoD;AACpD,eAAO,MAAM,WAAW,GAAI,MAAM,YAAY,KAAG,MAAuB,CAAC;AAEzE,0DAA0D;AAC1D,eAAO,MAAM,mBAAmB,EAAE,YAAsB,CAAC;AACzD,eAAO,MAAM,oBAAoB,EAAE,MAAyC,CAAC;AAsB7E;;;;;;GAMG;AACH,wBAAgB,eAAe,CAC7B,MAAM,EAAE,wBAAwB,EAChC,EAAE,IAAY,EAAE,GAAE;IAAE,IAAI,CAAC,EAAE,OAAO,CAAA;CAAO,GACxC;IAAE,IAAI,EAAE,YAAY,GAAG,OAAO,CAAC;IAAC,KAAK,EAAE,aAAa,GAAG,SAAS,CAAA;CAAE,CAGpE"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"field.d.ts","sourceRoot":"","sources":["../../src/components/field.tsx"],"names":[],"mappings":"AAGA,OAAO,EAAO,KAAK,YAAY,EAAE,MAAM,0BAA0B,CAAC;AAGlE,OAAO,EAAE,KAAK,EAAE,MAAM,oBAAoB,CAAC;AAG3C,iBAAS,QAAQ,CAAC,EAAE,SAAS,EAAE,GAAG,KAAK,EAAE,EAAE,KAAK,CAAC,cAAc,CAAC,UAAU,CAAC,+BAW1E;AAED,iBAAS,WAAW,CAAC,EACnB,SAAS,EACT,OAAkB,EAClB,GAAG,KAAK,EACT,EAAE,KAAK,CAAC,cAAc,CAAC,QAAQ,CAAC,GAAG;IAAE,OAAO,CAAC,EAAE,QAAQ,GAAG,OAAO,CAAA;CAAE,+BAYnE;AAED,iBAAS,UAAU,CAAC,EAAE,SAAS,EAAE,GAAG,KAAK,EAAE,EAAE,KAAK,CAAC,cAAc,CAAC,KAAK,CAAC,+BAWvE;AAED,QAAA,MAAM,aAAa;;8EAajB,CAAC;AAEH,iBAAS,KAAK,CAAC,EACb,SAAS,EACT,WAAwB,EACxB,GAAG,KAAK,EACT,EAAE,KAAK,CAAC,cAAc,CAAC,KAAK,CAAC,GAAG,YAAY,CAAC,OAAO,aAAa,CAAC,+BAUlE;
|
|
1
|
+
{"version":3,"file":"field.d.ts","sourceRoot":"","sources":["../../src/components/field.tsx"],"names":[],"mappings":"AAGA,OAAO,EAAO,KAAK,YAAY,EAAE,MAAM,0BAA0B,CAAC;AAGlE,OAAO,EAAE,KAAK,EAAE,MAAM,oBAAoB,CAAC;AAG3C,iBAAS,QAAQ,CAAC,EAAE,SAAS,EAAE,GAAG,KAAK,EAAE,EAAE,KAAK,CAAC,cAAc,CAAC,UAAU,CAAC,+BAW1E;AAED,iBAAS,WAAW,CAAC,EACnB,SAAS,EACT,OAAkB,EAClB,GAAG,KAAK,EACT,EAAE,KAAK,CAAC,cAAc,CAAC,QAAQ,CAAC,GAAG;IAAE,OAAO,CAAC,EAAE,QAAQ,GAAG,OAAO,CAAA;CAAE,+BAYnE;AAED,iBAAS,UAAU,CAAC,EAAE,SAAS,EAAE,GAAG,KAAK,EAAE,EAAE,KAAK,CAAC,cAAc,CAAC,KAAK,CAAC,+BAWvE;AAED,QAAA,MAAM,aAAa;;8EAajB,CAAC;AAEH,iBAAS,KAAK,CAAC,EACb,SAAS,EACT,WAAwB,EACxB,GAAG,KAAK,EACT,EAAE,KAAK,CAAC,cAAc,CAAC,KAAK,CAAC,GAAG,YAAY,CAAC,OAAO,aAAa,CAAC,+BAUlE;AAKD,iBAAS,YAAY,CAAC,EAAE,SAAS,EAAE,GAAG,KAAK,EAAE,EAAE,KAAK,CAAC,cAAc,CAAC,KAAK,CAAC,+BAWzE;AAED,iBAAS,UAAU,CAAC,EAAE,SAAS,EAAE,GAAG,KAAK,EAAE,EAAE,KAAK,CAAC,cAAc,CAAC,OAAO,KAAK,CAAC,+BAY9E;AAED,iBAAS,UAAU,CAAC,EAAE,SAAS,EAAE,GAAG,KAAK,EAAE,EAAE,KAAK,CAAC,cAAc,CAAC,KAAK,CAAC,+BAWvE;AAED,iBAAS,gBAAgB,CAAC,EAAE,SAAS,EAAE,GAAG,KAAK,EAAE,EAAE,KAAK,CAAC,cAAc,CAAC,GAAG,CAAC,+BAa3E;AAED,iBAAS,cAAc,CAAC,EACtB,QAAQ,EACR,SAAS,EACT,GAAG,KAAK,EACT,EAAE,KAAK,CAAC,cAAc,CAAC,KAAK,CAAC,GAAG;IAC/B,QAAQ,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;CAC5B,+BAsBA;AAED,iBAAS,UAAU,CAAC,EAClB,SAAS,EACT,QAAQ,EACR,MAAM,EACN,GAAG,KAAK,EACT,EAAE,KAAK,CAAC,cAAc,CAAC,KAAK,CAAC,GAAG;IAC/B,MAAM,CAAC,EAAE,KAAK,CAAC;QAAE,OAAO,CAAC,EAAE,MAAM,CAAA;KAAE,GAAG,SAAS,CAAC,CAAC;CAClD,sCAuCA;AAED,OAAO,EACL,KAAK,EACL,UAAU,EACV,gBAAgB,EAChB,UAAU,EACV,UAAU,EACV,WAAW,EACX,cAAc,EACd,QAAQ,EACR,YAAY,EACZ,UAAU,GACX,CAAC"}
|
package/dist/components/field.js
CHANGED
|
@@ -29,8 +29,11 @@ const fieldVariants = cva("group/field flex w-full gap-2 data-[invalid=true]:tex
|
|
|
29
29
|
function Field({ className, orientation = "vertical", ...props }) {
|
|
30
30
|
return (_jsx("div", { role: "group", "data-slot": "field", "data-orientation": orientation, className: cn(fieldVariants({ orientation }), className), ...props }));
|
|
31
31
|
}
|
|
32
|
+
// A label here is a sentence beside its control, and may wrap or carry links,
|
|
33
|
+
// so it flows as one run of text with a readable line height instead of the
|
|
34
|
+
// single-line flex row a label has on its own.
|
|
32
35
|
function FieldContent({ className, ...props }) {
|
|
33
|
-
return (_jsx("div", { "data-slot": "field-content", className: cn("group/field-content flex flex-1 flex-col gap-
|
|
36
|
+
return (_jsx("div", { "data-slot": "field-content", className: cn("group/field-content flex flex-1 flex-col gap-1 *:data-[slot=field-label]:block *:data-[slot=field-label]:leading-snug", className), ...props }));
|
|
34
37
|
}
|
|
35
38
|
function FieldLabel({ className, ...props }) {
|
|
36
39
|
return (_jsx(Label, { "data-slot": "field-label", className: cn("group/field-label peer/field-label flex w-fit gap-2 group-data-[disabled=true]/field:opacity-50 has-data-checked:border-primary/30 has-data-checked:bg-primary/5 has-[>[data-slot=field]]:rounded-md has-[>[data-slot=field]]:border *:data-[slot=field]:p-2.5", "has-[>[data-slot=field]]:w-full has-[>[data-slot=field]]:flex-col", className), ...props }));
|
|
@@ -11,7 +11,10 @@
|
|
|
11
11
|
* - a lucide icon inside a `Button` carries `data-icon`, the hook the button's
|
|
12
12
|
* own spacing rules key on;
|
|
13
13
|
* - a settings submit action uses SettingsSection's shared footer, so each
|
|
14
|
-
* caller cannot rebuild its own divider, padding, and action position
|
|
14
|
+
* caller cannot rebuild its own divider, padding, and action position;
|
|
15
|
+
* - the label and description beside a control in a `Field` sit in
|
|
16
|
+
* `FieldContent`, the slot a horizontal field keys on to align its checkbox
|
|
17
|
+
* with the first line of text rather than the middle of the block.
|
|
15
18
|
*
|
|
16
19
|
* Standard tool checked first: `jsx-a11y` covers roles and ARIA on
|
|
17
20
|
* intrinsic elements and says nothing about these composed components;
|
|
@@ -77,6 +80,18 @@ function ancestorNames(node, sourceCode) {
|
|
|
77
80
|
.filter(Boolean);
|
|
78
81
|
}
|
|
79
82
|
|
|
83
|
+
/** A FieldLabel or FieldDescription grouped in a plain element directly inside a Field. */
|
|
84
|
+
function fieldTextOutsideContent(node) {
|
|
85
|
+
const tag = elementName(node);
|
|
86
|
+
if (tag !== "FieldLabel" && tag !== "FieldDescription") return false;
|
|
87
|
+
const group = node.parent?.parent;
|
|
88
|
+
if (group?.type !== "JSXElement") return false;
|
|
89
|
+
const groupName = elementName(group);
|
|
90
|
+
if (!groupName || groupName[0] !== groupName[0].toLowerCase()) return false;
|
|
91
|
+
const field = group.parent;
|
|
92
|
+
return field?.type === "JSXElement" && elementName(field) === "Field";
|
|
93
|
+
}
|
|
94
|
+
|
|
80
95
|
function isIconTag(tagName) {
|
|
81
96
|
return tagName === "Icon" || tagName.endsWith("Icon");
|
|
82
97
|
}
|
|
@@ -129,6 +144,8 @@ export const shadcnComposition = {
|
|
|
129
144
|
buttonIcon: "An icon inside Button must carry data-icon.",
|
|
130
145
|
settingsFooter:
|
|
131
146
|
"Put a SettingsSection submit action in its footer prop; the shared component owns the divider, spacing, and action position.",
|
|
147
|
+
fieldContent:
|
|
148
|
+
"Group a Field's label and description in FieldContent, not a plain element; a horizontal Field aligns its control to the text through that slot.",
|
|
132
149
|
},
|
|
133
150
|
},
|
|
134
151
|
create(context) {
|
|
@@ -146,6 +163,10 @@ export const shadcnComposition = {
|
|
|
146
163
|
context.report({ node, messageId: "settingsFooter" });
|
|
147
164
|
}
|
|
148
165
|
|
|
166
|
+
if (fieldTextOutsideContent(node)) {
|
|
167
|
+
context.report({ node, messageId: "fieldContent" });
|
|
168
|
+
}
|
|
169
|
+
|
|
149
170
|
const title = OVERLAY_TITLES[tag];
|
|
150
171
|
if (title && !hasDescendant(element, title)) {
|
|
151
172
|
context.report({ node, messageId: "overlayTitle", data: { tag, title } });
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"agent-orb-motion.d.ts","sourceRoot":"","sources":["../../src/internal/agent-orb-motion.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,aAAa,CAAC;AAElD,MAAM,MAAM,aAAa,GAAG,MAAM,GAAG,SAAS,GAAG,SAAS,GAAG,SAAS,GAAG,UAAU,GAAG,MAAM,CAAC;
|
|
1
|
+
{"version":3,"file":"agent-orb-motion.d.ts","sourceRoot":"","sources":["../../src/internal/agent-orb-motion.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,aAAa,CAAC;AAElD,MAAM,MAAM,aAAa,GAAG,MAAM,GAAG,SAAS,GAAG,SAAS,GAAG,SAAS,GAAG,UAAU,GAAG,MAAM,CAAC;AAc7F,wBAAgB,WAAW,CAAC,IAAI,EAAE,cAAc,UAE/C;AAED,wBAAgB,UAAU,CAAC,KAAK,EAAE,aAAa,EAAE,IAAI,EAAE,cAAc,UAGpE;AAKD;;;;GAIG;AACH,wBAAgB,aAAa,CAAC,KAAK,EAAE,aAAa,EAAE,OAAO,EAAE,MAAM,UAIlE;AAED,wBAAgB,UAAU,CAAC,IAAI,EAAE,cAAc,EAAE,KAAK,EAAE,aAAa,EAAE,GAAG,EAAE,MAAM;;;;;;;;EA0CjF;AAED,wBAAgB,WAAW,CACzB,OAAO,EAAE,wBAAwB,EACjC,KAAK,EAAE,aAAa,EACpB,IAAI,EAAE,MAAM,EACZ,OAAO,EAAE,MAAM,EACf,OAAO,EAAE,OAAO,EAChB,MAAM,EAAE,SAAS,MAAM,EAAE,EACzB,KAAK,EAAE,MAAM,GAAG,OAAO;AACvB,mFAAmF;AACnF,GAAG,SAAI,QAgER"}
|
|
@@ -10,8 +10,11 @@ declare const agentOrbForms: {
|
|
|
10
10
|
readonly morph: "shaping";
|
|
11
11
|
};
|
|
12
12
|
export type AgentOrbForm = keyof typeof agentOrbForms;
|
|
13
|
-
/**
|
|
14
|
-
|
|
13
|
+
/**
|
|
14
|
+
* A chosen form, or one of nadicode's own two Agents, whose figures nobody
|
|
15
|
+
* chooses: Nadia's ribbon, and Sofia's, the same ribbon facing hers.
|
|
16
|
+
*/
|
|
17
|
+
export type AgentOrbFigure = AgentOrbForm | "nadia" | "sofia";
|
|
15
18
|
export type AgentOrbSize = 20 | 24 | 32 | 40 | 64 | 96 | 160;
|
|
16
19
|
/** How loudly one orb reads on its own ground. */
|
|
17
20
|
export type AgentOrbPresence = "plain" | "over-picture";
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"agent-orb.d.ts","sourceRoot":"","sources":["../../src/internal/agent-orb.ts"],"names":[],"mappings":"AAAA,OAAO,EAIL,KAAK,QAAQ,EAEb,KAAK,QAAQ,EAId,MAAM,sBAAsB,CAAC;AAE9B,OAAO,EACL,KAAK,aAAa,EAMnB,MAAM,oBAAoB,CAAC;AAE5B,QAAA,MAAM,aAAa;;;;;;;;CAQ0B,CAAC;AAE9C,MAAM,MAAM,YAAY,GAAG,MAAM,OAAO,aAAa,CAAC;AACtD
|
|
1
|
+
{"version":3,"file":"agent-orb.d.ts","sourceRoot":"","sources":["../../src/internal/agent-orb.ts"],"names":[],"mappings":"AAAA,OAAO,EAIL,KAAK,QAAQ,EAEb,KAAK,QAAQ,EAId,MAAM,sBAAsB,CAAC;AAE9B,OAAO,EACL,KAAK,aAAa,EAMnB,MAAM,oBAAoB,CAAC;AAE5B,QAAA,MAAM,aAAa;;;;;;;;CAQ0B,CAAC;AAE9C,MAAM,MAAM,YAAY,GAAG,MAAM,OAAO,aAAa,CAAC;AACtD;;;GAGG;AACH,MAAM,MAAM,cAAc,GAAG,YAAY,GAAG,OAAO,GAAG,OAAO,CAAC;AAC9D,MAAM,MAAM,YAAY,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,GAAG,CAAC;AAE7D,kDAAkD;AAClD,MAAM,MAAM,gBAAgB,GAAG,OAAO,GAAG,cAAc,CAAC;AACxD,+FAA+F;AAC/F,MAAM,MAAM,cAAc,GAAG,QAAQ,GAAG,SAAS,CAAC;AAiDlD;;;;;GAKG;AACH,wBAAgB,kBAAkB,CAAC,IAAI,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,EAAE,IAAI,EAAE,QAAQ,GAAG,QAAQ,CAuDpF;AAoGD,KAAK,iBAAiB,GAAG;IACvB,IAAI,EAAE,cAAc,CAAC;IACrB;;;OAGG;IACH,IAAI,EAAE,YAAY,CAAC;IACnB,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,QAAQ,CAAC,EAAE,gBAAgB,CAAC;CAC7B,CAAC;AAEF,MAAM,MAAM,oBAAoB,GAAG,iBAAiB,GAClD,CAAC;IAAE,MAAM,CAAC,EAAE,QAAQ,CAAC;IAAC,KAAK,CAAC,EAAE,aAAa,CAAA;CAAE,GAAG;IAAE,MAAM,EAAE,SAAS,CAAC;IAAC,KAAK,CAAC,EAAE,KAAK,CAAA;CAAE,CAAC,CAAC;AAExF,wBAAgB,aAAa,CAAC,MAAM,EAAE,iBAAiB,EAAE,OAAO,EAAE,oBAAoB;;sBAIzC,OAAO;qBAAuB,aAAa;EAmMvF"}
|
|
@@ -28,6 +28,20 @@ const presenceWeights = {
|
|
|
28
28
|
const nadiaStripes = ["--nc-identity-azzurro", "--nc-identity-verde", null, "--nc-identity-rosso"];
|
|
29
29
|
const celebrationTokens = ["--nc-chart-5", "--nc-chart-6", "--nc-warning", "--nc-chart-4"];
|
|
30
30
|
const appearanceTokens = [...celebrationTokens, ...nadiaStripes.filter((token) => token !== null)];
|
|
31
|
+
/**
|
|
32
|
+
* Sofia's four stripes: cobalto, giallo, the orb's own pigment and arancio, the
|
|
33
|
+
* identity hues Nadia does not wear, so side by side the two carry all six.
|
|
34
|
+
*/
|
|
35
|
+
const sofiaStripes = [
|
|
36
|
+
"--nc-identity-cobalto",
|
|
37
|
+
"--nc-identity-giallo",
|
|
38
|
+
null,
|
|
39
|
+
"--nc-identity-arancio",
|
|
40
|
+
];
|
|
41
|
+
const figureStripes = {
|
|
42
|
+
nadia: nadiaStripes,
|
|
43
|
+
sofia: sofiaStripes,
|
|
44
|
+
};
|
|
31
45
|
/** A stable direction on the unit sphere, the vendor's Fibonacci lattice. */
|
|
32
46
|
function fibonacci(i, n) {
|
|
33
47
|
const y = 1 - (2 * (i + 0.5)) / n;
|
|
@@ -92,13 +106,21 @@ export function stripedRibbonFrame(size, t, opts) {
|
|
|
92
106
|
}
|
|
93
107
|
return finalizeFrame(dots, [], opts.rMin);
|
|
94
108
|
}
|
|
109
|
+
/** Sofia's ribbon faces Nadia's: the same frame, mirrored across the vertical axis. */
|
|
110
|
+
function facing(frame, size) {
|
|
111
|
+
for (const dot of frame.dots)
|
|
112
|
+
dot.x = size - dot.x;
|
|
113
|
+
return frame;
|
|
114
|
+
}
|
|
95
115
|
function paintAgentOrb(context, input) {
|
|
96
116
|
const { form, size, seconds, color, state, age, reduced, breath, celebrationColors, stripeColors, } = input;
|
|
97
117
|
const presence = presenceWeights[input.presence];
|
|
98
|
-
const preset = resolvePreset(agentOrbForms[form === "nadia" ? "ribbon" : form], size <= 32 ? 20 : 64);
|
|
118
|
+
const preset = resolvePreset(agentOrbForms[form === "nadia" || form === "sofia" ? "ribbon" : form], size <= 32 ? 20 : 64);
|
|
99
119
|
const frame = form === "nadia"
|
|
100
120
|
? stripedRibbonFrame(size, seconds, preset.opts)
|
|
101
|
-
:
|
|
121
|
+
: form === "sofia"
|
|
122
|
+
? facing(stripedRibbonFrame(size, seconds, preset.opts), size)
|
|
123
|
+
: MODE_FRAMES[preset.mode](size, seconds, preset.opts);
|
|
102
124
|
context.clearRect(0, 0, size, size);
|
|
103
125
|
const pose = motionPose(form, input.motion === "ambient" ? "idle" : state, reduced ? (state === "done" ? 2 : 0.6) : age);
|
|
104
126
|
const gestureSeconds = reduced ? 0.8 : age / (state === "done" ? 0.575 : 0.2875);
|
|
@@ -269,7 +291,7 @@ export function mountAgentOrb(canvas, options) {
|
|
|
269
291
|
appearanceKey = readAppearanceKey(appearance, painted);
|
|
270
292
|
color = appearance.color;
|
|
271
293
|
celebrationColors = celebrationTokens.map((token) => computedColor(`color-mix(in oklch, ${appearance.getPropertyValue(token).trim() || color} 75%, white)`));
|
|
272
|
-
stripeColors =
|
|
294
|
+
stripeColors = (figureStripes[form] ?? []).map((token) => (token && appearance.getPropertyValue(token).trim()) || color);
|
|
273
295
|
play();
|
|
274
296
|
}
|
|
275
297
|
const visibility = new IntersectionObserver(([entry]) => {
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@nadicodeai/ui",
|
|
3
|
-
"version": "12.1.
|
|
3
|
+
"version": "12.1.34",
|
|
4
4
|
"type": "module",
|
|
5
5
|
"publishConfig": {
|
|
6
6
|
"access": "public"
|
|
@@ -77,7 +77,7 @@
|
|
|
77
77
|
"@assistant-ui/react": "0.15.21",
|
|
78
78
|
"@assistant-ui/react-markdown": "0.14.16",
|
|
79
79
|
"@base-ui/react": "^1.8.0",
|
|
80
|
-
"@nadicodeai/design-system": "12.1.
|
|
80
|
+
"@nadicodeai/design-system": "12.1.34",
|
|
81
81
|
"class-variance-authority": "^0.7.1",
|
|
82
82
|
"clsx": "^2.1.1",
|
|
83
83
|
"cmdk": "^1.1.1",
|