@nadicodeai/ui 0.14.0 → 0.15.0
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.
|
@@ -4,6 +4,7 @@ type BrandLogoProps = Omit<React.ComponentProps<"svg">, "aria-hidden" | "aria-la
|
|
|
4
4
|
decoding?: React.ComponentProps<"img">["decoding"];
|
|
5
5
|
};
|
|
6
6
|
declare function BrandMark({ alt, className, width, height, decoding, ...props }: BrandLogoProps): React.JSX.Element;
|
|
7
|
+
declare function BrandLockup({ alt, className, width, height, decoding, ...props }: BrandLogoProps): React.JSX.Element;
|
|
7
8
|
declare function BrandWordmark({ alt, className, width, height, decoding, ...props }: BrandLogoProps): React.JSX.Element;
|
|
8
|
-
export { BrandMark, BrandWordmark };
|
|
9
|
+
export { BrandLockup, BrandMark, BrandWordmark };
|
|
9
10
|
//# sourceMappingURL=brand.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"brand.d.ts","sourceRoot":"","sources":["../../src/components/brand.tsx"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"brand.d.ts","sourceRoot":"","sources":["../../src/components/brand.tsx"],"names":[],"mappings":"AASA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAI/B,KAAK,cAAc,GAAG,IAAI,CACxB,KAAK,CAAC,cAAc,CAAC,KAAK,CAAC,EAC3B,aAAa,GAAG,YAAY,GAAG,UAAU,GAAG,MAAM,CACnD,GAAG;IACF,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,QAAQ,CAAC,EAAE,KAAK,CAAC,cAAc,CAAC,KAAK,CAAC,CAAC,UAAU,CAAC,CAAC;CACpD,CAAC;AA6BF,iBAAS,SAAS,CAAC,EACjB,GAAkB,EAClB,SAAS,EACT,KAAU,EACV,MAAW,EACX,QAAQ,EACR,GAAG,KAAK,EACT,EAAE,cAAc,qBAyBhB;AAED,iBAAS,WAAW,CAAC,EACnB,GAAkB,EAClB,SAAS,EACT,KAAW,EACX,MAAW,EACX,QAAQ,EACR,GAAG,KAAK,EACT,EAAE,cAAc,qBAuBhB;AAED,iBAAS,aAAa,CAAC,EACrB,GAAkB,EAClB,SAAS,EACT,KAAU,EACV,MAAW,EACX,QAAQ,EACR,GAAG,KAAK,EACT,EAAE,cAAc,qBAoBhB;AAED,OAAO,EAAE,WAAW,EAAE,SAAS,EAAE,aAAa,EAAE,CAAC"}
|
package/dist/components/brand.js
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
"use client";
|
|
2
2
|
import { jsx as _jsx } from "react/jsx-runtime";
|
|
3
|
-
import { logoMarkGeometry, logoWordmarkGeometry, resolveLogoGeometry, } from "@nadicodeai/design-system/assets/logo-geometry";
|
|
3
|
+
import { logoLockupGeometry, logoMarkGeometry, logoWordmarkGeometry, resolveLogoGeometry, } from "@nadicodeai/design-system/assets/logo-geometry";
|
|
4
4
|
import * as React from "react";
|
|
5
5
|
import { cn } from "../lib/utils.js";
|
|
6
6
|
function accessibilityProps(alt) {
|
|
@@ -30,6 +30,15 @@ function BrandMark({ alt = "NadicodeAI", className, width = 32, height = 32, dec
|
|
|
30
30
|
});
|
|
31
31
|
return (_jsx("svg", { "data-slot": "brand-mark", xmlns: "http://www.w3.org/2000/svg", viewBox: geometry.viewBox, width: width, height: height, className: cn("block size-6", className), ...accessibilityProps(alt), ...props, children: renderGeometryNodes(geometry.nodes) }));
|
|
32
32
|
}
|
|
33
|
+
function BrandLockup({ alt = "NadicodeAI", className, width = 154, height = 32, decoding, ...props }) {
|
|
34
|
+
void decoding;
|
|
35
|
+
const idPrefix = `lklip-${React.useId().replace(/[^a-zA-Z0-9]/g, "")}-`;
|
|
36
|
+
const geometry = resolveLogoGeometry(logoLockupGeometry, {
|
|
37
|
+
idPrefix,
|
|
38
|
+
paints: { ink: "currentColor", primary: "var(--primary)" },
|
|
39
|
+
});
|
|
40
|
+
return (_jsx("svg", { "data-slot": "brand-lockup", xmlns: "http://www.w3.org/2000/svg", viewBox: geometry.viewBox, width: width, height: height, className: cn("block h-8 w-auto", className), ...accessibilityProps(alt), ...props, children: renderGeometryNodes(geometry.nodes) }));
|
|
41
|
+
}
|
|
33
42
|
function BrandWordmark({ alt = "NadicodeAI", className, width = 96, height = 30, decoding, ...props }) {
|
|
34
43
|
void decoding;
|
|
35
44
|
const geometry = resolveLogoGeometry(logoWordmarkGeometry, {
|
|
@@ -37,4 +46,4 @@ function BrandWordmark({ alt = "NadicodeAI", className, width = 96, height = 30,
|
|
|
37
46
|
});
|
|
38
47
|
return (_jsx("svg", { "data-slot": "brand-wordmark", xmlns: "http://www.w3.org/2000/svg", viewBox: geometry.viewBox, width: width, height: height, className: cn("block h-6 w-auto", className), ...accessibilityProps(alt), ...props, children: renderGeometryNodes(geometry.nodes) }));
|
|
39
48
|
}
|
|
40
|
-
export { BrandMark, BrandWordmark };
|
|
49
|
+
export { BrandLockup, BrandMark, BrandWordmark };
|
|
@@ -46,6 +46,23 @@ If the app needs bundled Geist files rather than its framework's font loader,
|
|
|
46
46
|
that asset import is one of the intentional direct-API cases described above.
|
|
47
47
|
Font loading is an asset decision, not a second design stylesheet.
|
|
48
48
|
|
|
49
|
+
## NadicodeAI logo
|
|
50
|
+
|
|
51
|
+
React surfaces that need both the mark and readable company name use the
|
|
52
|
+
horizontal lockup from the UI package:
|
|
53
|
+
|
|
54
|
+
```tsx
|
|
55
|
+
import { BrandLockup } from "@nadicodeai/ui/components/brand";
|
|
56
|
+
|
|
57
|
+
<BrandLockup alt="NadicodeAI" />;
|
|
58
|
+
```
|
|
59
|
+
|
|
60
|
+
Use `BrandMark` where space is tight and `BrandWordmark` where the name must read
|
|
61
|
+
by itself. Do not assemble a new lockup from those two components. Static
|
|
62
|
+
consumers that need files instead of React declare the design-system dependency
|
|
63
|
+
directly and use the documented SVG or PNG package routes in
|
|
64
|
+
`design-system/README.md`.
|
|
65
|
+
|
|
49
66
|
## Base UI API breaks (migrating from Radix-era components)
|
|
50
67
|
|
|
51
68
|
`@nadicodeai/ui@0.5.0+` is Base UI only; the Radix-era compatibility layer is
|
package/docs/contract.md
CHANGED
|
@@ -25,7 +25,7 @@ Agent work surfaces (chat, composer, tool approval, artifacts, threads, diffs, t
|
|
|
25
25
|
- **Standard components, not app-owned product features.** This package ships primitives, standard UI components, AI Elements, brand adapters, React adapters, reusable sections, and presentational product components. It must not ship app-specific feature/use-case screens or names such as operator-login, portal activation, customer credential control, or customer management. Generic data tables, command palettes, and chart cards are app-owned shadcn registry adaptations. The source-backed `chart-*` package surface is the plan-approved exception per issue #166 and ADR 0010; chart cards remain app-owned. Every data-shaped chart exposes an equivalent non-visual data alternative. A component whose complete value is already available in visible text or `aria-valuetext` does not add a redundant table.
|
|
26
26
|
- **Auth routes are consumer-owned shadcn block work.** Login, signup, OTP, two-factor, magic-link, and provider-button flows start from the selected shadcn block/example in the consuming app, with app-owned Better Auth behavior. Do not ship generic auth, signup, OTP, federated-login, or provider abstractions from this package unless a later explicit boundary decision replaces the selected shadcn block.
|
|
27
27
|
- **Reusable sections and compositions live here after proof.** Bento grids, media mounts, demo surfaces, page frames, section intros, CTA bands, proof slots, benefits grids, generic shells, and homepage/use-case sections belong in `@nadicodeai/ui` when a second concrete consumer, a plan-approved shared component, or a named validation slice proves the package boundary. Website, portal, and sibling Nadia routes pass data and media children into existing compositions instead of rebuilding layout locally.
|
|
28
|
-
- **Brand renderers live here for React consumers.** Logo geometry, asset generation, and usage semantics are owned by [`design-system/DESIGN.md`, "Brand media authority"](../../../design-system/DESIGN.md#brand-media-authority). `BrandMark` and `BrandWordmark` render
|
|
28
|
+
- **Brand renderers live here for React consumers.** Logo geometry, asset generation, and usage semantics are owned by [`design-system/DESIGN.md`, "Brand media authority"](../../../design-system/DESIGN.md#brand-media-authority). `BrandLockup` supplies the approved horizontal lockup. `BrandMark` serves tight spaces and `BrandWordmark` serves placements where the name must read by itself. All three render the package's public neutral geometry seam with React-scoped SVG ids, dynamic theme paint, and accessible names. Consuming routes use these adapters; they never import raw logo assets, draw brand SVG inline, mask or recolor assets, or create another lockup rule.
|
|
29
29
|
- **No fake proof APIs.** Components may support future testimonials, logos, stats, and proof slots, but they must render nothing public when the proof is absent. Do not ship placeholder customer names, metrics, or logos.
|
|
30
30
|
|
|
31
31
|
## Accessibility Invariant
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@nadicodeai/ui",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.15.0",
|
|
4
4
|
"type": "module",
|
|
5
5
|
"publishConfig": {
|
|
6
6
|
"access": "public"
|
|
@@ -63,7 +63,7 @@
|
|
|
63
63
|
},
|
|
64
64
|
"dependencies": {
|
|
65
65
|
"@base-ui/react": "^1.6.0",
|
|
66
|
-
"@nadicodeai/design-system": "0.
|
|
66
|
+
"@nadicodeai/design-system": "0.15.0",
|
|
67
67
|
"@rive-app/react-webgl2": "^4.29.1",
|
|
68
68
|
"@streamdown/cjk": "^1.0.3",
|
|
69
69
|
"@streamdown/code": "^1.1.1",
|