@nadicodeai/design-system 12.1.85 → 12.1.87

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.
Files changed (2) hide show
  1. package/DESIGN.md +7 -4
  2. package/package.json +1 -1
package/DESIGN.md CHANGED
@@ -571,7 +571,7 @@ Content stays solid: cards, KPIs, tables, chat, forms, and dialog, sheet and dra
571
571
 
572
572
  Related membership collections share one tabbed workspace: Members, Invitations and, where supported, Teams. One collection is visible at a time and its selection is retained in the URL.
573
573
 
574
- **Product views on the website** are the product itself, built from the real components with example data that is labelled as such; never a screenshot, a device mockup or an invented interface. A product window takes the raised height on its ground; a card that overlaps it floats; in a black section it renders in dark mode.
574
+ **Product views on the website** preserve the real interface. Nadia uses captures of the running application, with demonstration content labelled and the unchanged full-size image linked, following the founder's 12 October correction of invented UI. Portal and Alveare may use inert scenes built from real components with labelled example data. Never invent interface controls or frame a view in a device mockup. A product window takes the raised height on its ground; a card that overlaps it floats. Live components use dark mode in a black section; captures preserve the application's captured theme.
575
575
 
576
576
  Absence follows its container. The Portal uses plain operational empty states throughout: no collection illustrations, a solid boundary for a page or region, and the same spacing and typography for first use, no data, and no results. Other products may use the illustrated register with a dashed boundary. In every product, an empty state inside a card is unframed, because the card already owns the edge. `EmptyState` (`@nadicodeai/ui/components/empty-state`) is the only owner of an absence: nothing else draws one, and its `scope` (`page`, `region` or `card`) sets that frame. A collection's `DataTable` takes the same props as `empty`. Its kind determines the message and recovery; presentation determines whether first-use artwork is present:
577
577
 
@@ -594,6 +594,8 @@ UI text stays static: no shimmer, typing, scrambling, pulsing or animated dots.
594
594
 
595
595
  Only Agents move on their own. The interface answers a person's action, briefly, and stops: motion follows the action, grows from the element that was pressed, and settles, within 300 ms; sheets and drawers that follow the pointer take their own durations. Keyboard actions and anything used a hundred times a day are instant. While a person waits for something they asked for, one waiting line moves and nothing else ("System activity"). On the website three things move: Agents, the product at work, and the shader objects. A product scene runs the real components through their states in beats while it is half in view, rests on the finished work, loops, stops off-screen, and holds the finished work under reduced motion; a part of a scene arrives with `.nc-arrive`: it holds its place from the start and comes into focus there on the message-arrival timing, so a playing scene never shifts the page. The threads, the hive and the card's foil move at their own slow pace; each stops off-screen and holds one frame under reduced motion. Words never move, and there is no parallax, scroll reveal of text, marquee or shimmer. Ruled by the founder on 26 September 2026: a Stripe-grade product site, with shaders adjusted to the art direction and the products shown working.
596
596
 
597
+ The homepage figures have one owner-requested exception: a slight lean in response to a fine pointer, with no autonomous loop and no movement under reduced motion. Architecture and words stay still. Other illustrative pictures remain still.
598
+
597
599
  The default transition in every product is `confirm`, 180 ms, `out-strong`. Under reduced motion, movement stops and paint continues: transforms and keyframed movement go to their end state, and opacity and colour transitions stay, because a fade or a colour change is the state change itself. A component never answers reduced motion by turning every transition off.
598
600
 
599
601
  | Token | Use |
@@ -734,6 +736,7 @@ These shared components also follow the same foundations, although Geist does no
734
736
  | `AspectRatio` | Stable layout for real media while it loads. Supply a meaningful ratio and correct media alternative; the wrapper creates neither playback controls nor a device-frame component. |
735
737
  | `Form`, Field parts and form adapters | Connect actual validation to controls, help and errors. Use the field owner that matches the existing form engine; preserve values through recoverable failure. Do not change the form engine during visual styling. |
736
738
  | `DirectionProvider` | Direction context when the product supports right-to-left content. Keep reading and focus order meaningful; direction does not translate strings or change locale by itself. |
739
+ | `PairingCode` | A short code two screens show at once so a person can tell they are talking to each other, such as the four digits Nadia and Alveare Server both show while a Nadia asks to join. Each digit stands in its own cell at `{typography.heading-lg}` with tabular figures, large enough to compare from across a desk, and assistive technology reads the label, then the digits one by one. It only shows a code: a code a person types is `InputOTP`. |
737
740
  | `QrCode` | A real scannable value with a readable fallback and an alternative action when scanning is unavailable. Keep secrets out of accessible labels and show expiry or invalidity from actual state. |
738
741
  | `FileDiff` | Existing code-change comparison, with file identity and additions/removals explained. A diff is not a general code editor or JSON viewer. Preserve exact source and the established conversation/tool owner. |
739
742
  | Chart kit and `KpiCard` | Choose the reading through [Data Visualization](#data-visualization), then use its shared chart owner with units, period, legend and accessible data. Geometry never decides business thresholds. |
@@ -865,7 +868,7 @@ A recognised app, platform or model maker is drawn with its genuine mark beside
865
868
 
866
869
  ### Product views
867
870
 
868
- A product view on the website is a live, inert fragment of the product built from its real components, captioned, with example data marked as example ("Elevation & Depth"). It takes its product's register: the Nadia window shows her Agents on the left and the selected conversation on the right; the Portal shows its sidebar and the page. A view is cropped to what it shows, never scaled below legibility, and never framed in a device.
871
+ Website product views follow "Product views on the website" in [Elevation & Depth](#elevation--depth): authentic captures or real-component scenes, with demonstration content identified. Preserve the product's register and interface. Crop to the detail being explained; retain an original-image link for captures and never frame a view in a device.
869
872
 
870
873
  ### CSS components
871
874
 
@@ -918,11 +921,11 @@ The clear space is one stroke width of the rendered logo on every side. The mini
918
921
 
919
922
  ## Do's and Don'ts
920
923
 
921
- - Do keep the brand still: only Agents, the product at work and the website's shader objects move. Don't animate sections, pictures or scrolling.
924
+ - Do keep the brand still: only Agents, the product at work and the website's shader objects move. Don't animate sections, pictures or scrolling, apart from the bounded homepage figure response in Motion.
922
925
  - Do use the identity hues at full strength in the places "Colour as stage" lists, with the text pole that clears AA. Don't tint them, grade them, or paint a control, chrome or a status with them.
923
926
  - Do choose a surface's height by its physical role, and let its edge and faint shadow show it in both modes. Don't add a border, ring or second shadow to an elevated surface.
924
927
  - Do put glass on floating chrome over content that scrolls or moves under it. Don't make content glass, or put glass over a plain ground.
925
- - Do show the product with its real components. Don't use screenshots, device frames or invented interfaces.
928
+ - Do show authentic captures or real-component scenes as "Product views on the website" specifies, with demonstration content identified. Don't use device frames or invented interfaces.
926
929
  - Do give each thing the corner its role takes on the scale ("Shapes"). Don't give a higher surface a bigger corner.
927
930
  - Do give every line one owner, and draw focus only with the focus outline.
928
931
  - Do say a status with a Badge tone, a mark and a word. Don't use colour alone or a bare dot.
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@nadicodeai/design-system",
3
- "version": "12.1.85",
3
+ "version": "12.1.87",
4
4
  "type": "module",
5
5
  "publishConfig": {
6
6
  "access": "public"