@nadicodeai/ui 8.2.0 → 8.4.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.
- package/LICENSES/MODEL-IDENTITY-ASSETS-NOTICE.txt +28 -0
- package/NOTICE +7 -2
- package/dist/components/brand-icons/aionlabs.d.ts +18 -0
- package/dist/components/brand-icons/aionlabs.d.ts.map +1 -0
- package/dist/components/brand-icons/aionlabs.js +22 -0
- package/dist/components/brand-icons/arcee.d.ts +18 -0
- package/dist/components/brand-icons/arcee.d.ts.map +1 -0
- package/dist/components/brand-icons/arcee.js +22 -0
- package/dist/components/brand-icons/baidu.d.ts +18 -0
- package/dist/components/brand-icons/baidu.d.ts.map +1 -0
- package/dist/components/brand-icons/baidu.js +22 -0
- package/dist/components/brand-icons/bytedance.d.ts +18 -0
- package/dist/components/brand-icons/bytedance.d.ts.map +1 -0
- package/dist/components/brand-icons/bytedance.js +22 -0
- package/dist/components/brand-icons/cohere.d.ts +18 -0
- package/dist/components/brand-icons/cohere.d.ts.map +1 -0
- package/dist/components/brand-icons/cohere.js +22 -0
- package/dist/components/brand-icons/dolphin.d.ts +18 -0
- package/dist/components/brand-icons/dolphin.d.ts.map +1 -0
- package/dist/components/brand-icons/dolphin.js +22 -0
- package/dist/components/brand-icons/dotsstudio.d.ts +18 -0
- package/dist/components/brand-icons/dotsstudio.d.ts.map +1 -0
- package/dist/components/brand-icons/dotsstudio.js +22 -0
- package/dist/components/brand-icons/huggingface.d.ts +18 -0
- package/dist/components/brand-icons/huggingface.d.ts.map +1 -0
- package/dist/components/brand-icons/huggingface.js +22 -0
- package/dist/components/brand-icons/ibm.d.ts +18 -0
- package/dist/components/brand-icons/ibm.d.ts.map +1 -0
- package/dist/components/brand-icons/ibm.js +22 -0
- package/dist/components/brand-icons/inception.d.ts +18 -0
- package/dist/components/brand-icons/inception.d.ts.map +1 -0
- package/dist/components/brand-icons/inception.js +22 -0
- package/dist/components/brand-icons/inclusionai.d.ts +13 -0
- package/dist/components/brand-icons/inclusionai.d.ts.map +1 -0
- package/dist/components/brand-icons/inclusionai.js +18 -0
- package/dist/components/brand-icons/inference.d.ts +18 -0
- package/dist/components/brand-icons/inference.d.ts.map +1 -0
- package/dist/components/brand-icons/inference.js +22 -0
- package/dist/components/brand-icons/kwaipilot.d.ts +18 -0
- package/dist/components/brand-icons/kwaipilot.d.ts.map +1 -0
- package/dist/components/brand-icons/kwaipilot.js +25 -0
- package/dist/components/brand-icons/liquid.d.ts +18 -0
- package/dist/components/brand-icons/liquid.d.ts.map +1 -0
- package/dist/components/brand-icons/liquid.js +22 -0
- package/dist/components/brand-icons/longcat.d.ts +18 -0
- package/dist/components/brand-icons/longcat.d.ts.map +1 -0
- package/dist/components/brand-icons/longcat.js +22 -0
- package/dist/components/brand-icons/microsoft.d.ts +18 -0
- package/dist/components/brand-icons/microsoft.d.ts.map +1 -0
- package/dist/components/brand-icons/microsoft.js +22 -0
- package/dist/components/brand-icons/minimax.d.ts +18 -0
- package/dist/components/brand-icons/minimax.d.ts.map +1 -0
- package/dist/components/brand-icons/minimax.js +25 -0
- package/dist/components/brand-icons/morph.d.ts +18 -0
- package/dist/components/brand-icons/morph.d.ts.map +1 -0
- package/dist/components/brand-icons/morph.js +22 -0
- package/dist/components/brand-icons/nexagi.d.ts +18 -0
- package/dist/components/brand-icons/nexagi.d.ts.map +1 -0
- package/dist/components/brand-icons/nexagi.js +22 -0
- package/dist/components/brand-icons/nousresearch.d.ts +18 -0
- package/dist/components/brand-icons/nousresearch.d.ts.map +1 -0
- package/dist/components/brand-icons/nousresearch.js +22 -0
- package/dist/components/brand-icons/nova.d.ts +18 -0
- package/dist/components/brand-icons/nova.d.ts.map +1 -0
- package/dist/components/brand-icons/nova.js +25 -0
- package/dist/components/brand-icons/nvidia.d.ts +18 -0
- package/dist/components/brand-icons/nvidia.d.ts.map +1 -0
- package/dist/components/brand-icons/nvidia.js +22 -0
- package/dist/components/brand-icons/openrouter.d.ts +18 -0
- package/dist/components/brand-icons/openrouter.d.ts.map +1 -0
- package/dist/components/brand-icons/openrouter.js +22 -0
- package/dist/components/brand-icons/perceptron.d.ts +18 -0
- package/dist/components/brand-icons/perceptron.d.ts.map +1 -0
- package/dist/components/brand-icons/perceptron.js +22 -0
- package/dist/components/brand-icons/perplexity.d.ts +18 -0
- package/dist/components/brand-icons/perplexity.d.ts.map +1 -0
- package/dist/components/brand-icons/perplexity.js +22 -0
- package/dist/components/brand-icons/poolside.d.ts +18 -0
- package/dist/components/brand-icons/poolside.d.ts.map +1 -0
- package/dist/components/brand-icons/poolside.js +25 -0
- package/dist/components/brand-icons/reka.d.ts +18 -0
- package/dist/components/brand-icons/reka.d.ts.map +1 -0
- package/dist/components/brand-icons/reka.js +22 -0
- package/dist/components/brand-icons/relace.d.ts +18 -0
- package/dist/components/brand-icons/relace.d.ts.map +1 -0
- package/dist/components/brand-icons/relace.js +22 -0
- package/dist/components/brand-icons/sakana.d.ts +18 -0
- package/dist/components/brand-icons/sakana.d.ts.map +1 -0
- package/dist/components/brand-icons/sakana.js +22 -0
- package/dist/components/brand-icons/stepfun.d.ts +18 -0
- package/dist/components/brand-icons/stepfun.d.ts.map +1 -0
- package/dist/components/brand-icons/stepfun.js +25 -0
- package/dist/components/brand-icons/tencent.d.ts +18 -0
- package/dist/components/brand-icons/tencent.d.ts.map +1 -0
- package/dist/components/brand-icons/tencent.js +22 -0
- package/dist/components/brand-icons/the-drummer.d.ts +13 -0
- package/dist/components/brand-icons/the-drummer.d.ts.map +1 -0
- package/dist/components/brand-icons/the-drummer.js +18 -0
- package/dist/components/brand-icons/thinkingmachines.d.ts +13 -0
- package/dist/components/brand-icons/thinkingmachines.d.ts.map +1 -0
- package/dist/components/brand-icons/thinkingmachines.js +18 -0
- package/dist/components/brand-icons/unbiased.d.ts +13 -0
- package/dist/components/brand-icons/unbiased.d.ts.map +1 -0
- package/dist/components/brand-icons/unbiased.js +18 -0
- package/dist/components/brand-icons/upstage.d.ts +18 -0
- package/dist/components/brand-icons/upstage.d.ts.map +1 -0
- package/dist/components/brand-icons/upstage.js +25 -0
- package/dist/components/brand-icons/writer.d.ts +13 -0
- package/dist/components/brand-icons/writer.d.ts.map +1 -0
- package/dist/components/brand-icons/writer.js +18 -0
- package/dist/components/brand-icons/xiaomimimo.d.ts +18 -0
- package/dist/components/brand-icons/xiaomimimo.d.ts.map +1 -0
- package/dist/components/brand-icons/xiaomimimo.js +22 -0
- package/dist/components/brand-icons/zai.d.ts +18 -0
- package/dist/components/brand-icons/zai.d.ts.map +1 -0
- package/dist/components/brand-icons/zai.js +22 -0
- package/dist/components/brand-icons.d.ts +38 -0
- package/dist/components/brand-icons.d.ts.map +1 -1
- package/dist/components/brand-icons.js +38 -0
- package/dist/components/chart-bar-horizontal.d.ts +14 -0
- package/dist/components/chart-bar-horizontal.d.ts.map +1 -0
- package/dist/components/chart-bar-horizontal.js +67 -0
- package/dist/components/model-mark.d.ts.map +1 -1
- package/dist/components/model-mark.js +76 -36
- package/dist/index.d.ts +1 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +1 -0
- package/docs/contract.md +19 -13
- package/package.json +3 -3
package/docs/contract.md
CHANGED
|
@@ -145,7 +145,7 @@ states to the orb.
|
|
|
145
145
|
- **Package surface is source-backed.** Public components stay flat under `src/components/`. Reviewed registry source under `src/internal/` is implementation, not a package namespace. Do not add top-level exports for recipes, blocks, agent, terminal, or vendor groupings unless a later package API decision adds concrete public source, built files, docs, and tests in the same change.
|
|
146
146
|
- **Agents is the client-only conversation interface.** `@nadicodeai/ui/agents` re-exports the complete `@assistant-ui/react` runtime and primitive API plus the reviewed, branded registry composition held under `src/internal/assistant-ui/`. Its built entry retains `"use client"`. Consumers receive Thread, attachments, Markdown, reasoning, tools, suggestions, providers, runtimes, hooks, and types from that one domain namespace. Agent identity components use their direct component subpaths so server compositions do not import the conversation runtime. The vendor name is not a public NadicodeAI subpath, and the package does not rename, wrap, or rebuild assistant-ui behavior.
|
|
147
147
|
- **Base UI is the active primitive base.** `components.json` must resolve through a Base style, currently `base-nova`, and `npx shadcn@latest info --json` must report `base: "base"`. Do not reintroduce `radix-ui`, `@radix-ui/*`, or `vaul` to package source, dependencies, or app optimizer configuration. Registry-owned shadcn primitives stay aligned with current `shadcn@latest` Base UI output; use Base UI `render` composition instead of Radix `asChild`. `cmdk` is allowed only for the stock shadcn Command component while the current `base-nova` registry declares that dependency; do not use it elsewhere or replace it without a shadcn/compatibility decision and tests.
|
|
148
|
-
- **Charts are stock shadcn charts.** Every chart and KPI here is a registry item, changed as little as possible: `chart.tsx` is shadcn's `chart` over Recharts; `chart-bar-stacked`, `chart-area-stacked`, and `chart-bar-
|
|
148
|
+
- **Charts are stock shadcn charts.** Every chart and KPI here is a registry item, changed as little as possible: `chart.tsx` is shadcn's `chart` over Recharts; `chart-bar-stacked`, `chart-area-stacked`, `chart-bar-multiple`, and `chart-bar-horizontal` are the blocks of those names; `chart-sparkline` is `chart-line-linear` stripped of its card, axes, grid and tooltip; `kpi-card` is the `dashboard-01` block's section card; `chart-card` is their shared Card frame. Each pulled file names its registry item on line one. `base-nova` does not publish the chart gallery and the CLI search does not list it, so a chart the kit lacks is pulled from `https://ui.shadcn.com/r/styles/new-york-v4/<name>.json` (`files[0].content`) and added here. What deviates from stock, and why, is listed once in [`DESIGN.md`, "Chart source"](../../design-system/DESIGN.md#chart-source); a change to a pulled chart that is not on that list is drift. There is no hidden table twin, no mark inside a legend, and no second axis. Every chart component renders the whole card — `Card > CardHeader(CardTitle, CardDescription, CardAction) > CardContent(ChartContainer) > CardFooter?` — at a fixed plot height (`h-64`, `h-80` at `size="lg"`), legend below the plot, left-aligned and wrapping. An app composes these, never builds a chart card frame by hand, and never imports `recharts`, which this package alone declares. Which chart a reading question deserves is owned by [`skills/design/product-design/references/charts.md`](../../../skills/design/product-design/references/charts.md).
|
|
149
149
|
|
|
150
150
|
- **Named shadcn blocks stay named.** When a user, plan, or issue selects a shadcn block/example such as `login-02`, `signup-02`, `dashboard-01`, or `sidebar-*`, use that registry item as the source of truth through shadcn CLI/MCP. Do not replace it with a package-authored abstraction unless the plan explicitly records the substitution, the reason, and the true consumer route that proves it.
|
|
151
151
|
- **A change to what the package ships bumps the version.** Any change to exported components, `src/index.ts`, package `exports`, `globals.css`, `components.css`, theme behavior, package docs, or design-system token, CSS, or theme output this package consumes bumps both package versions in lockstep before handoff, and `npm pack --dry-run -w @nadicodeai/ui` shows exactly what consumers receive (procedure: `../../../docs/agents/publish.md`).
|
|
@@ -201,18 +201,21 @@ product-domain `agent` object prop in the shared package.
|
|
|
201
201
|
- **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.
|
|
202
202
|
- **Brand renderers live here for React consumers.** Logo geometry, asset generation, and usage semantics are owned by [`packages/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.
|
|
203
203
|
- **Third-party brand marks are generated, never hand-drawn and never hand-edited.** Other companies' marks live in `packages/ui/src/components/brand-icons/`, emitted from an explicit allow-list by `packages/ui/scripts/build-brand-icons.mjs` and exported through the `@nadicodeai/ui/components/brand-icons` subpath. They are identity images, not UI icons: a brand mark is exempt from the currentColor stroke system and from the raw-literal rule, it never stands in for a UI icon, and a UI icon never stands in for a brand. Marks drawn as one silhouette are stripped to `currentColor` by the generator; every other mark keeps its official colors verbatim. To add a brand, edit the generator's allow-list and run `npm run generate:brand-icons -w @nadicodeai/ui`; hand edits to the generated directory are lost and `packages/ui/tests/guards/brand-icons-codegen.test.ts` fails on them. Use is nominative only — naming a platform, an integration, or a provider — never adjacent to endorsement or partnership wording; that nominative posture is the licensing and trademark position, so a mark never appears where the copy implies endorsement.
|
|
204
|
-
The one script reads
|
|
204
|
+
The one script reads platform marks from the Iconify `logos` set (CC0-1.0), model identities from the LobeHub icon set (MIT, `@lobehub/icons-static-svg`), and a small reviewed supplemental set from the official or OpenRouter-published source recorded beside each input. Raster supplements are embedded into generated SVG components, so a consumer never fetches a logo at runtime. The emitted components carry no icon-data runtime dependency. The artwork itself does ship, so every upstream travels with its applicable licence or provenance notice in `LICENSES/` and `NOTICE`, and `tests/guards/brand-icons-codegen.test.ts` holds the allow-list to that: a new source cannot ship unattributed.
|
|
205
205
|
- **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.
|
|
206
206
|
|
|
207
207
|
### Model identity
|
|
208
208
|
|
|
209
|
-
`ModelMark` is a model's identity: its maker
|
|
210
|
-
author when a caller supplies them. It takes `author` — the
|
|
211
|
-
reports — and resolves it against the
|
|
212
|
-
`model-shown-with-logo`).
|
|
213
|
-
|
|
214
|
-
|
|
215
|
-
|
|
209
|
+
`ModelMark` is a model's identity: its maker or model-family mark, plus the
|
|
210
|
+
model's name and author when a caller supplies them. It takes `author` — the
|
|
211
|
+
slug a usage read reports — and resolves it against the reviewed catalog
|
|
212
|
+
mapping (rule `model-shown-with-logo`). OpenRouter aliases prefixed with `~`
|
|
213
|
+
resolve to their canonical author's mark. For community author pages where
|
|
214
|
+
OpenRouter publishes the generic Hugging Face image, `ModelMark` uses that same
|
|
215
|
+
fallback and still prints the actual author. A future author outside the mapping
|
|
216
|
+
gets a text monogram, not an invented logo or an empty tile. The tile owns the
|
|
217
|
+
box and scales the artwork inside it; `size` states that box, and the author
|
|
218
|
+
slug prints as reported.
|
|
216
219
|
|
|
217
220
|
One component has two readings: with `name`, the row a table cell or ranked
|
|
218
221
|
list reads; without one, the bare mark beside text that already names the model.
|
|
@@ -222,9 +225,10 @@ model's row in a table or a ranked list is where `ModelMark` belongs. A mark is
|
|
|
222
225
|
decoration beside the label that already names it; one standing alone takes
|
|
223
226
|
`label` (`role="img"` with an accessible name) or stays hidden.
|
|
224
227
|
|
|
225
|
-
|
|
226
|
-
|
|
227
|
-
|
|
228
|
+
The package owns the reviewed author-to-mark mapping and its generated artwork;
|
|
229
|
+
the live catalog remains the source of which authors exist. The consuming app
|
|
230
|
+
supplies the reported author slug, the model name, and the colors it pairs with
|
|
231
|
+
them.
|
|
228
232
|
|
|
229
233
|
## Accessibility Invariant
|
|
230
234
|
|
|
@@ -311,7 +315,9 @@ The cell renderer supplies the value, leaving the label to the detail row.
|
|
|
311
315
|
Pass the actual scalar or rendered value and a required localized `missingLabel`.
|
|
312
316
|
Null, undefined and empty strings render a muted, visually fixed `—` plus
|
|
313
317
|
screen-reader text; zero and present values pass through unchanged. No custom
|
|
314
|
-
visible fallback is exposed. Do not prefill `value` with absence copy.
|
|
318
|
+
visible fallback is exposed. Do not prefill `value` with absence copy. Bounded
|
|
319
|
+
object facts use the same owner and retain their labels and slots when sparse;
|
|
320
|
+
the component's name does not restrict it to a table element.
|
|
315
321
|
Loading, failure, permission and actionable states remain outside this component.
|
|
316
322
|
|
|
317
323
|
## Consumer Boundary
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@nadicodeai/ui",
|
|
3
|
-
"version": "8.
|
|
3
|
+
"version": "8.4.0",
|
|
4
4
|
"type": "module",
|
|
5
5
|
"publishConfig": {
|
|
6
6
|
"access": "public"
|
|
@@ -70,7 +70,7 @@
|
|
|
70
70
|
"@assistant-ui/react": "0.15.20",
|
|
71
71
|
"@assistant-ui/react-markdown": "0.14.15",
|
|
72
72
|
"@base-ui/react": "^1.8.0",
|
|
73
|
-
"@nadicodeai/design-system": "8.
|
|
73
|
+
"@nadicodeai/design-system": "8.4.0",
|
|
74
74
|
"@paper-design/shaders": "0.0.81",
|
|
75
75
|
"class-variance-authority": "^0.7.1",
|
|
76
76
|
"clsx": "^2.1.1",
|
|
@@ -102,7 +102,7 @@
|
|
|
102
102
|
"devDependencies": {
|
|
103
103
|
"@iconify-json/logos": "^1.2.14",
|
|
104
104
|
"@iconify/utils": "^3.1.7",
|
|
105
|
-
"@lobehub/icons-static-svg": "^1.95.
|
|
105
|
+
"@lobehub/icons-static-svg": "^1.95.1",
|
|
106
106
|
"@nadicodeai/eslint-plugin": "*",
|
|
107
107
|
"@stryker-mutator/core": "10.0.0",
|
|
108
108
|
"@stryker-mutator/vitest-runner": "10.0.0",
|