@nadicodeai/ui 0.10.2 → 0.12.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/AGENTS.md +23 -135
- package/README.md +39 -110
- package/dist/components/action-band.d.ts +5 -3
- package/dist/components/action-band.d.ts.map +1 -1
- package/dist/components/action-band.js +35 -21
- package/dist/components/agent-chat.d.ts.map +1 -1
- package/dist/components/agent-chat.js +1 -1
- package/dist/components/agent-composer.d.ts.map +1 -1
- package/dist/components/agent-composer.js +1 -1
- package/dist/components/ai-elements/terminal.d.ts.map +1 -1
- package/dist/components/ai-elements/terminal.js +8 -8
- package/dist/components/artifact-panel.d.ts.map +1 -1
- package/dist/components/artifact-panel.js +5 -5
- package/dist/components/bento.d.ts +14 -3
- package/dist/components/bento.d.ts.map +1 -1
- package/dist/components/bento.js +26 -5
- package/dist/components/brand.d.ts.map +1 -1
- package/dist/components/brand.js +29 -3
- package/dist/components/contact.d.ts +22 -10
- package/dist/components/contact.d.ts.map +1 -1
- package/dist/components/contact.js +34 -12
- package/dist/components/diff-count.js +1 -1
- package/dist/components/faq-item.js +2 -2
- package/dist/components/faq.d.ts +4 -1
- package/dist/components/faq.d.ts.map +1 -1
- package/dist/components/faq.js +5 -2
- package/dist/components/feature-grid.d.ts +23 -0
- package/dist/components/feature-grid.d.ts.map +1 -0
- package/dist/components/feature-grid.js +33 -0
- package/dist/components/feature-rows.d.ts +23 -0
- package/dist/components/feature-rows.d.ts.map +1 -0
- package/dist/components/feature-rows.js +27 -0
- package/dist/components/footer.d.ts +18 -12
- package/dist/components/footer.d.ts.map +1 -1
- package/dist/components/footer.js +32 -20
- package/dist/components/hero.d.ts +28 -0
- package/dist/components/hero.d.ts.map +1 -0
- package/dist/components/hero.js +45 -0
- package/dist/components/integration-flow.d.ts +36 -0
- package/dist/components/integration-flow.d.ts.map +1 -0
- package/dist/components/integration-flow.js +36 -0
- package/dist/components/live-demo.d.ts +31 -0
- package/dist/components/live-demo.d.ts.map +1 -0
- package/dist/components/live-demo.js +30 -0
- package/dist/components/logo-band.d.ts +12 -2
- package/dist/components/logo-band.d.ts.map +1 -1
- package/dist/components/logo-band.js +16 -1
- package/dist/components/logo-tile.d.ts.map +1 -1
- package/dist/components/logo-tile.js +5 -2
- package/dist/components/nav-bar.d.ts +14 -8
- package/dist/components/nav-bar.d.ts.map +1 -1
- package/dist/components/nav-bar.js +19 -13
- package/dist/components/pricing-card.d.ts +10 -15
- package/dist/components/pricing-card.d.ts.map +1 -1
- package/dist/components/pricing-card.js +18 -29
- package/dist/components/pricing.d.ts +11 -14
- package/dist/components/pricing.d.ts.map +1 -1
- package/dist/components/pricing.js +5 -15
- package/dist/components/quote-card.d.ts +10 -2
- package/dist/components/quote-card.d.ts.map +1 -1
- package/dist/components/quote-card.js +15 -3
- package/dist/components/security-grid.d.ts +25 -0
- package/dist/components/security-grid.d.ts.map +1 -0
- package/dist/components/security-grid.js +31 -0
- package/dist/components/sidebar.js +5 -5
- package/dist/components/stat-block.d.ts +9 -5
- package/dist/components/stat-block.d.ts.map +1 -1
- package/dist/components/stat-block.js +12 -6
- package/dist/components/statement.d.ts +32 -0
- package/dist/components/statement.d.ts.map +1 -0
- package/dist/components/statement.js +40 -0
- package/dist/components/stats-band.d.ts +6 -2
- package/dist/components/stats-band.d.ts.map +1 -1
- package/dist/components/stats-band.js +10 -3
- package/dist/components/status-dot.js +4 -4
- package/dist/components/steps.d.ts +34 -0
- package/dist/components/steps.d.ts.map +1 -0
- package/dist/components/steps.js +40 -0
- package/dist/components/team-grid.d.ts +27 -0
- package/dist/components/team-grid.d.ts.map +1 -0
- package/dist/components/team-grid.js +30 -0
- package/dist/components/testimonials.d.ts +39 -12
- package/dist/components/testimonials.d.ts.map +1 -1
- package/dist/components/testimonials.js +46 -13
- package/dist/components/texture-strip.d.ts +22 -0
- package/dist/components/texture-strip.d.ts.map +1 -0
- package/dist/components/texture-strip.js +29 -0
- package/dist/index.d.ts +10 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +10 -0
- package/dist/styles/globals.css +185 -300
- package/docs/agent-work-surfaces.md +6 -5
- package/docs/agents/nadicodeai-ui.md +42 -273
- package/docs/consuming-cross-repo.md +26 -33
- package/docs/contract.md +43 -0
- package/docs/migration/nadia-consumer-readiness.md +5 -10
- package/docs/terminal-tui-semantics.md +142 -181
- package/llms.txt +49 -84
- package/package.json +3 -4
- package/skills/nadicodeai-ui/SKILL.md +6 -34
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
2
|
+
import * as React from "react";
|
|
3
|
+
import { cn } from "../lib/utils.js";
|
|
4
|
+
import { SectionIntro, SectionIntroKicker, SectionIntroTitle } from "./section-intro.js";
|
|
5
|
+
/**
|
|
6
|
+
* steps — the "how it works" station rail (V5 B09).
|
|
7
|
+
*
|
|
8
|
+
* An eyebrow + statement head sits above a STATIC horizontal rail (a single
|
|
9
|
+
* filled foreground rule — the walking-dot progress animation is intentionally
|
|
10
|
+
* out of scope this pass) and a row of numbered stations. Each `Step` carries a
|
|
11
|
+
* square brand marker, a mono index, a title, an optional mono price line, and a
|
|
12
|
+
* body. `StepsBranch` is a dashed-left callout rendered below the station row.
|
|
13
|
+
*
|
|
14
|
+
* This is one of only two surfaces where prices may appear (the pricing section
|
|
15
|
+
* is the other), so the `price` line is a first-class, opt-in slot rather than a
|
|
16
|
+
* generic field. Copy is props-driven: absent parts render nothing.
|
|
17
|
+
*
|
|
18
|
+
* Light-surface composition; it inherits the page theme and sets no dark root.
|
|
19
|
+
* Token-only; no `dark:` styling.
|
|
20
|
+
*/
|
|
21
|
+
function Steps({ kicker, title, children, className, ...props }) {
|
|
22
|
+
const stations = [];
|
|
23
|
+
const branches = [];
|
|
24
|
+
React.Children.forEach(children, (child) => {
|
|
25
|
+
if (React.isValidElement(child) && child.type === StepsBranch) {
|
|
26
|
+
branches.push(child);
|
|
27
|
+
}
|
|
28
|
+
else {
|
|
29
|
+
stations.push(child);
|
|
30
|
+
}
|
|
31
|
+
});
|
|
32
|
+
return (_jsxs("section", { "data-slot": "steps", className: cn("grid gap-8", className), ...props, children: [kicker || title ? (_jsxs(SectionIntro, { align: "start", className: "min-h-0 bg-transparent p-0", children: [kicker ? _jsx(SectionIntroKicker, { children: kicker }) : null, title ? (_jsx(SectionIntroTitle, { className: "mx-0 max-w-[28ch] text-balance text-left", children: title })) : null] })) : null, _jsx("div", { "data-slot": "steps-rail", "aria-hidden": "true", className: "h-px w-full bg-foreground" }), _jsx("div", { "data-slot": "steps-stations", className: "grid grid-cols-1 gap-10 sm:grid-cols-2 md:grid-cols-4", children: stations }), branches.length > 0 ? branches : null] }));
|
|
33
|
+
}
|
|
34
|
+
function Step({ index, title, price, body, className, children, ...props }) {
|
|
35
|
+
return (_jsxs("div", { "data-slot": "step", className: cn("flex flex-col gap-3", className), ...props, children: [_jsx("span", { "data-slot": "step-marker", "aria-hidden": "true", className: "size-2 rounded-[1px] bg-primary" }), index ? (_jsx("span", { "data-slot": "step-index", className: "font-mono text-[10px] tracking-[0.14em] text-muted-foreground uppercase", children: index })) : null, title ? (_jsx("h3", { "data-slot": "step-title", className: "nc-type-body-md-strong text-foreground", children: title })) : null, price ? (_jsx("span", { "data-slot": "step-price", className: "font-mono text-xs font-semibold tracking-[0.04em] text-[var(--nc-link-deep)] uppercase", children: price })) : null, body ? (_jsx("p", { "data-slot": "step-body", className: "nc-type-body-sm max-w-[30ch] text-muted-foreground", children: body })) : null, children] }));
|
|
36
|
+
}
|
|
37
|
+
function StepsBranch({ label, title, body, className, children, ...props }) {
|
|
38
|
+
return (_jsxs("aside", { "data-slot": "steps-branch", className: cn("flex flex-col gap-3 border-l border-dashed border-border pl-6", className), ...props, children: [label ? (_jsx("span", { "data-slot": "steps-branch-label", className: "font-mono text-[10px] tracking-[0.14em] text-[var(--nc-link-deep)] uppercase", children: label })) : null, title ? (_jsx("h3", { "data-slot": "steps-branch-title", className: "nc-type-body-md-strong text-foreground", children: title })) : null, body ? (_jsx("p", { "data-slot": "steps-branch-body", className: "nc-type-body-sm max-w-[52ch] text-muted-foreground", children: body })) : null, children] }));
|
|
39
|
+
}
|
|
40
|
+
export { Steps, Step, StepsBranch };
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
import * as React from "react";
|
|
2
|
+
/**
|
|
3
|
+
* team-grid — the "the people" roster (V5 B17).
|
|
4
|
+
*
|
|
5
|
+
* A three-column wall of `TeamMember` cells over the gap-as-seam grid (`SeamGrid`
|
|
6
|
+
* owns every divider once; the cells are borderless fills). Each member reads
|
|
7
|
+
* avatar → role → name → line, top-aligned.
|
|
8
|
+
*
|
|
9
|
+
* SINGLE-OWNER SEAM: the holding `SeamGrid` paints the brand line behind the cells
|
|
10
|
+
* and leaves a 1px guide gap, so no cell draws a competing border.
|
|
11
|
+
*
|
|
12
|
+
* INVERTED CELL: the non-human team member renders as a dark surface cell inside an
|
|
13
|
+
* otherwise light section. This is expressed with an ancestor `.dark` class ON THE
|
|
14
|
+
* CELL ROOT (`variant="inverted"`) — an accepted ancestor-class remap, NOT a `dark:`
|
|
15
|
+
* utility. Every colour must flip from that cell-local `.dark`: the cell composes
|
|
16
|
+
* semantic roles (`bg-card`, `text-foreground`, `text-muted-foreground`) and the
|
|
17
|
+
* canonical `--nc-link-deep` pair for the verde accent. Token-only.
|
|
18
|
+
*/
|
|
19
|
+
declare function TeamGrid({ className, ...props }: React.ComponentProps<"div">): React.JSX.Element;
|
|
20
|
+
declare function TeamMember({ className, variant, avatar, role, name, children, ...props }: React.ComponentProps<"div"> & {
|
|
21
|
+
variant?: "default" | "inverted";
|
|
22
|
+
avatar?: React.ReactNode;
|
|
23
|
+
role?: React.ReactNode;
|
|
24
|
+
name?: React.ReactNode;
|
|
25
|
+
}): React.JSX.Element;
|
|
26
|
+
export { TeamGrid, TeamMember };
|
|
27
|
+
//# sourceMappingURL=team-grid.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"team-grid.d.ts","sourceRoot":"","sources":["../../src/components/team-grid.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAK/B;;;;;;;;;;;;;;;;GAgBG;AAEH,iBAAS,QAAQ,CAAC,EAAE,SAAS,EAAE,GAAG,KAAK,EAAE,EAAE,KAAK,CAAC,cAAc,CAAC,KAAK,CAAC,qBAQrE;AAED,iBAAS,UAAU,CAAC,EAClB,SAAS,EACT,OAAmB,EACnB,MAAM,EACN,IAAI,EACJ,IAAI,EACJ,QAAQ,EACR,GAAG,KAAK,EACT,EAAE,KAAK,CAAC,cAAc,CAAC,KAAK,CAAC,GAAG;IAC/B,OAAO,CAAC,EAAE,SAAS,GAAG,UAAU,CAAC;IACjC,MAAM,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;IACzB,IAAI,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;IACvB,IAAI,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;CACxB,qBA2CA;AAED,OAAO,EAAE,QAAQ,EAAE,UAAU,EAAE,CAAC"}
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
2
|
+
import { cn } from "../lib/utils.js";
|
|
3
|
+
import { SeamGrid } from "./seam-grid.js";
|
|
4
|
+
/**
|
|
5
|
+
* team-grid — the "the people" roster (V5 B17).
|
|
6
|
+
*
|
|
7
|
+
* A three-column wall of `TeamMember` cells over the gap-as-seam grid (`SeamGrid`
|
|
8
|
+
* owns every divider once; the cells are borderless fills). Each member reads
|
|
9
|
+
* avatar → role → name → line, top-aligned.
|
|
10
|
+
*
|
|
11
|
+
* SINGLE-OWNER SEAM: the holding `SeamGrid` paints the brand line behind the cells
|
|
12
|
+
* and leaves a 1px guide gap, so no cell draws a competing border.
|
|
13
|
+
*
|
|
14
|
+
* INVERTED CELL: the non-human team member renders as a dark surface cell inside an
|
|
15
|
+
* otherwise light section. This is expressed with an ancestor `.dark` class ON THE
|
|
16
|
+
* CELL ROOT (`variant="inverted"`) — an accepted ancestor-class remap, NOT a `dark:`
|
|
17
|
+
* utility. Every colour must flip from that cell-local `.dark`: the cell composes
|
|
18
|
+
* semantic roles (`bg-card`, `text-foreground`, `text-muted-foreground`) and the
|
|
19
|
+
* canonical `--nc-link-deep` pair for the verde accent. Token-only.
|
|
20
|
+
*/
|
|
21
|
+
function TeamGrid({ className, ...props }) {
|
|
22
|
+
return (_jsx(SeamGrid, { "data-slot": "team-grid", className: cn("h-full grid-cols-1 sm:grid-cols-2 lg:grid-cols-3", className), ...props }));
|
|
23
|
+
}
|
|
24
|
+
function TeamMember({ className, variant = "default", avatar, role, name, children, ...props }) {
|
|
25
|
+
return (_jsxs("div", { "data-slot": "team-member", "data-variant": variant, className: cn("grid min-h-[250px] min-w-0 content-start gap-3 p-[clamp(24px,3vw,40px)] bg-card text-foreground",
|
|
26
|
+
// inverted: a dark cell inside a light section via a local `.dark` boundary
|
|
27
|
+
// (ancestor-class remap, not a `dark:` utility). Same roles, dark values.
|
|
28
|
+
variant === "inverted" && "dark", className), ...props, children: [avatar ? (_jsx("span", { "data-slot": "team-member-avatar", "aria-hidden": "true", className: "flex size-13 items-center justify-center rounded-full bg-success/15 text-lg font-semibold text-[var(--nc-link-deep)]", children: avatar })) : null, role ? (_jsx("span", { "data-slot": "team-member-role", className: "font-mono text-[10px] uppercase tracking-[0.13em] text-[var(--nc-link-deep)]", children: role })) : null, name ? (_jsx("h3", { "data-slot": "team-member-name", className: "text-[17px] font-semibold text-foreground", children: name })) : null, children ? (_jsx("p", { "data-slot": "team-member-line", className: "text-sm text-muted-foreground", children: children })) : null] }));
|
|
29
|
+
}
|
|
30
|
+
export { TeamGrid, TeamMember };
|
|
@@ -1,21 +1,48 @@
|
|
|
1
1
|
import * as React from "react";
|
|
2
2
|
/**
|
|
3
|
-
* testimonials — credibility
|
|
4
|
-
* `sections/testimonials.css` + its coupled `quote-card` cells).
|
|
3
|
+
* testimonials — credibility surface for customer quotes.
|
|
5
4
|
*
|
|
6
|
-
*
|
|
7
|
-
* - single (no `columns`): one full-width `QuoteCard` centered with a
|
|
8
|
-
* measure; the card is borderless so it adds NO seam.
|
|
9
|
-
* - grid (`columns=2|3`): a wall of `QuoteCard`s in the gap-as-seam grid — the
|
|
10
|
-
*
|
|
11
|
-
*
|
|
5
|
+
* Three modes, all seam-single-owner:
|
|
6
|
+
* - single (no `columns`, no `aside`): one full-width `QuoteCard` centered with a
|
|
7
|
+
* comfortable measure; the card is borderless so it adds NO seam.
|
|
8
|
+
* - grid (`columns=2|3`): a wall of `QuoteCard`s in the gap-as-seam grid — the grid
|
|
9
|
+
* owns every divider once (`gap-px bg-border`). `surface="ink"` flips only the
|
|
10
|
+
* seam colour, never its weight.
|
|
11
|
+
* - record (`aside`): the featured 7fr / 5fr split (V5 B13) — a big quote beside a
|
|
12
|
+
* side record card (`TestimonialRecord`). This split uses a whitespace gap, not a
|
|
13
|
+
* hairline, so it introduces NO structural seam; the frame/lane/row perimeter is
|
|
14
|
+
* still owned by the kept geometry layer.
|
|
12
15
|
*
|
|
13
|
-
* The
|
|
14
|
-
*
|
|
16
|
+
* The `TestimonialRecord` slot reuses the status-row idiom (a mono line with a tint
|
|
17
|
+
* state pill) through `TestimonialRecordRow` children, so consumers do not import any
|
|
18
|
+
* live-demo internals. No fake proof: absent rows/status render nothing.
|
|
19
|
+
*
|
|
20
|
+
* Token-only; no `dark:` styling.
|
|
15
21
|
*/
|
|
16
|
-
declare function Testimonials({ className, columns, surface, children, ...props }: React.ComponentProps<"div"> & {
|
|
22
|
+
declare function Testimonials({ className, columns, surface, aside, children, ...props }: React.ComponentProps<"div"> & {
|
|
17
23
|
columns?: 2 | 3;
|
|
18
24
|
surface?: "canvas" | "ink";
|
|
25
|
+
/** the side record card; presence switches to the featured 7fr / 5fr split */
|
|
26
|
+
aside?: React.ReactNode;
|
|
27
|
+
}): React.JSX.Element;
|
|
28
|
+
/**
|
|
29
|
+
* TestimonialRecord — the side record card in the featured split. A soft, bordered
|
|
30
|
+
* card (its own perimeter, not a structural seam) with an optional mono `tag` over a
|
|
31
|
+
* stack of `TestimonialRecordRow` children.
|
|
32
|
+
*/
|
|
33
|
+
declare function TestimonialRecord({ className, tag, children, ...props }: React.ComponentProps<"div"> & {
|
|
34
|
+
tag?: React.ReactNode;
|
|
35
|
+
}): React.JSX.Element;
|
|
36
|
+
/**
|
|
37
|
+
* TestimonialRecordRow — one status line in the record card: a mono label with an
|
|
38
|
+
* optional trailing state pill (done = green soft/deep, waiting = amber soft/deep —
|
|
39
|
+
* the AA-clearing status-tag idiom, a deep-ink label on a soft same-hue ground). The
|
|
40
|
+
* inter-row hairline is owned here (`border-t`, dropped on the first row). No fake
|
|
41
|
+
* proof: an absent `status` renders no pill.
|
|
42
|
+
*/
|
|
43
|
+
declare function TestimonialRecordRow({ className, state, status, children, ...props }: React.ComponentProps<"div"> & {
|
|
44
|
+
state?: "done" | "waiting";
|
|
45
|
+
status?: React.ReactNode;
|
|
19
46
|
}): React.JSX.Element;
|
|
20
|
-
export { Testimonials };
|
|
47
|
+
export { Testimonials, TestimonialRecord, TestimonialRecordRow };
|
|
21
48
|
//# sourceMappingURL=testimonials.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"testimonials.d.ts","sourceRoot":"","sources":["../../src/components/testimonials.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAK/B
|
|
1
|
+
{"version":3,"file":"testimonials.d.ts","sourceRoot":"","sources":["../../src/components/testimonials.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAK/B;;;;;;;;;;;;;;;;;;;GAmBG;AAEH,iBAAS,YAAY,CAAC,EACpB,SAAS,EACT,OAAO,EACP,OAAkB,EAClB,KAAK,EACL,QAAQ,EACR,GAAG,KAAK,EACT,EAAE,KAAK,CAAC,cAAc,CAAC,KAAK,CAAC,GAAG;IAC/B,OAAO,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC;IAChB,OAAO,CAAC,EAAE,QAAQ,GAAG,KAAK,CAAC;IAC3B,8EAA8E;IAC9E,KAAK,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;CACzB,qBAiDA;AAED;;;;GAIG;AACH,iBAAS,iBAAiB,CAAC,EACzB,SAAS,EACT,GAAG,EACH,QAAQ,EACR,GAAG,KAAK,EACT,EAAE,KAAK,CAAC,cAAc,CAAC,KAAK,CAAC,GAAG;IAAE,GAAG,CAAC,EAAE,KAAK,CAAC,SAAS,CAAA;CAAE,qBAkBzD;AAED;;;;;;GAMG;AACH,iBAAS,oBAAoB,CAAC,EAC5B,SAAS,EACT,KAAc,EACd,MAAM,EACN,QAAQ,EACR,GAAG,KAAK,EACT,EAAE,KAAK,CAAC,cAAc,CAAC,KAAK,CAAC,GAAG;IAAE,KAAK,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IAAC,MAAM,CAAC,EAAE,KAAK,CAAC,SAAS,CAAA;CAAE,qBA4BxF;AAED,OAAO,EAAE,YAAY,EAAE,iBAAiB,EAAE,oBAAoB,EAAE,CAAC"}
|
|
@@ -1,25 +1,58 @@
|
|
|
1
|
-
import { jsx as _jsx } from "react/jsx-runtime";
|
|
1
|
+
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
2
2
|
import { cn } from "../lib/utils.js";
|
|
3
3
|
import { SeamGrid } from "./seam-grid.js";
|
|
4
4
|
/**
|
|
5
|
-
* testimonials — credibility
|
|
6
|
-
* `sections/testimonials.css` + its coupled `quote-card` cells).
|
|
5
|
+
* testimonials — credibility surface for customer quotes.
|
|
7
6
|
*
|
|
8
|
-
*
|
|
9
|
-
* - single (no `columns`): one full-width `QuoteCard` centered with a
|
|
10
|
-
* measure; the card is borderless so it adds NO seam.
|
|
11
|
-
* - grid (`columns=2|3`): a wall of `QuoteCard`s in the gap-as-seam grid — the
|
|
12
|
-
*
|
|
13
|
-
*
|
|
7
|
+
* Three modes, all seam-single-owner:
|
|
8
|
+
* - single (no `columns`, no `aside`): one full-width `QuoteCard` centered with a
|
|
9
|
+
* comfortable measure; the card is borderless so it adds NO seam.
|
|
10
|
+
* - grid (`columns=2|3`): a wall of `QuoteCard`s in the gap-as-seam grid — the grid
|
|
11
|
+
* owns every divider once (`gap-px bg-border`). `surface="ink"` flips only the
|
|
12
|
+
* seam colour, never its weight.
|
|
13
|
+
* - record (`aside`): the featured 7fr / 5fr split (V5 B13) — a big quote beside a
|
|
14
|
+
* side record card (`TestimonialRecord`). This split uses a whitespace gap, not a
|
|
15
|
+
* hairline, so it introduces NO structural seam; the frame/lane/row perimeter is
|
|
16
|
+
* still owned by the kept geometry layer.
|
|
14
17
|
*
|
|
15
|
-
* The
|
|
16
|
-
*
|
|
18
|
+
* The `TestimonialRecord` slot reuses the status-row idiom (a mono line with a tint
|
|
19
|
+
* state pill) through `TestimonialRecordRow` children, so consumers do not import any
|
|
20
|
+
* live-demo internals. No fake proof: absent rows/status render nothing.
|
|
21
|
+
*
|
|
22
|
+
* Token-only; no `dark:` styling.
|
|
17
23
|
*/
|
|
18
|
-
function Testimonials({ className, columns, surface = "canvas", children, ...props }) {
|
|
24
|
+
function Testimonials({ className, columns, surface = "canvas", aside, children, ...props }) {
|
|
25
|
+
if (aside) {
|
|
26
|
+
// featured record mode — big quote (7fr) beside the record card (5fr). The gap
|
|
27
|
+
// is whitespace, never a hairline, so this owns no structural seam.
|
|
28
|
+
return (_jsxs("div", { "data-slot": "testimonials", "data-layout": "record", "data-surface": surface, className: cn("grid grid-cols-1 items-center gap-x-[clamp(32px,5vw,72px)] gap-y-10 lg:grid-cols-[7fr_5fr]", className), ...props, children: [_jsx("div", { className: "min-w-0", children: children }), _jsx("div", { className: "min-w-0", children: aside })] }));
|
|
29
|
+
}
|
|
19
30
|
if (!columns) {
|
|
20
31
|
// single featured mode — the lone card is centered; no grid, no seam.
|
|
21
32
|
return (_jsx("div", { "data-slot": "testimonials", "data-surface": surface, className: cn("flex h-full items-center justify-center", className), ...props, children: _jsx("div", { className: "w-full max-w-[760px]", children: children }) }));
|
|
22
33
|
}
|
|
23
34
|
return (_jsx(SeamGrid, { "data-slot": "testimonials", surface: surface, className: cn("h-full", columns === 2 ? "grid-cols-1 sm:grid-cols-2" : "grid-cols-1 sm:grid-cols-2 lg:grid-cols-3", className), ...props, children: children }));
|
|
24
35
|
}
|
|
25
|
-
|
|
36
|
+
/**
|
|
37
|
+
* TestimonialRecord — the side record card in the featured split. A soft, bordered
|
|
38
|
+
* card (its own perimeter, not a structural seam) with an optional mono `tag` over a
|
|
39
|
+
* stack of `TestimonialRecordRow` children.
|
|
40
|
+
*/
|
|
41
|
+
function TestimonialRecord({ className, tag, children, ...props }) {
|
|
42
|
+
return (_jsxs("div", { "data-slot": "testimonial-record", className: cn("grid content-start rounded-md border border-border bg-muted p-5", className), ...props, children: [tag ? (_jsx("span", { "data-slot": "testimonial-record-tag", className: "mb-2 font-mono text-[11px] uppercase tracking-[0.12em] text-muted-foreground", children: tag })) : null, children] }));
|
|
43
|
+
}
|
|
44
|
+
/**
|
|
45
|
+
* TestimonialRecordRow — one status line in the record card: a mono label with an
|
|
46
|
+
* optional trailing state pill (done = green soft/deep, waiting = amber soft/deep —
|
|
47
|
+
* the AA-clearing status-tag idiom, a deep-ink label on a soft same-hue ground). The
|
|
48
|
+
* inter-row hairline is owned here (`border-t`, dropped on the first row). No fake
|
|
49
|
+
* proof: an absent `status` renders no pill.
|
|
50
|
+
*/
|
|
51
|
+
function TestimonialRecordRow({ className, state = "done", status, children, ...props }) {
|
|
52
|
+
return (_jsxs("div", { "data-slot": "testimonial-record-row", "data-state": state, className: cn("flex items-center justify-between gap-3 border-t border-border py-2.5 font-mono text-[11.5px] first:border-t-0", className), ...props, children: [_jsx("span", { className: "min-w-0 text-muted-foreground", children: children }), status ? (_jsx("span", { className: cn("shrink-0 rounded-sm px-1.5 py-0.5 text-[10px] font-medium uppercase tracking-[0.04em]",
|
|
53
|
+
// Soft-ground + deep-ink feedback pairs (the status-tag / live-demo idiom):
|
|
54
|
+
// a solid hue on a same-hue 15% tint fails AA (≈2.5:1 / 1.4:1). success uses
|
|
55
|
+
// the link family (there is no success-deep token), warning its own soft/deep.
|
|
56
|
+
state === "done" && "bg-[var(--nc-link-bg-soft)] text-[var(--nc-link-deep)]", state === "waiting" && "bg-[var(--nc-warning-soft)] text-[var(--nc-warning-deep)]"), children: status })) : null] }));
|
|
57
|
+
}
|
|
58
|
+
export { Testimonials, TestimonialRecord, TestimonialRecordRow };
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
import * as React from "react";
|
|
2
|
+
/**
|
|
3
|
+
* texture-strip — a 40px full-bleed separator band (V5 B05).
|
|
4
|
+
*
|
|
5
|
+
* A thin horizontal divider that carries a dotted radial texture and a hairline
|
|
6
|
+
* on its top and bottom edges. The dots and their spacing are owned once by the
|
|
7
|
+
* design-system `nc-dotted-field` primitive (`radial-gradient(var(--nc-line)…)`
|
|
8
|
+
* over `var(--nc-canvas)`), so no raw gradient or colour lives in this component
|
|
9
|
+
* — only the band geometry (height, flex centring) is inline. Token-only; no
|
|
10
|
+
* `dark:` styling.
|
|
11
|
+
*
|
|
12
|
+
* Children remain an open composition slot. `TextureStripChip` remains as a
|
|
13
|
+
* deprecated compatibility export for consumers of the 0.10 package surface.
|
|
14
|
+
*/
|
|
15
|
+
declare function TextureStrip({ className, ...props }: React.ComponentProps<"div">): React.JSX.Element;
|
|
16
|
+
/**
|
|
17
|
+
* @deprecated Pass any child to `TextureStrip` and style it for the owning
|
|
18
|
+
* surface. This wrapper remains exported to preserve the public 0.10 API.
|
|
19
|
+
*/
|
|
20
|
+
declare function TextureStripChip({ className, ...props }: React.ComponentProps<"span">): React.JSX.Element;
|
|
21
|
+
export { TextureStrip, TextureStripChip };
|
|
22
|
+
//# sourceMappingURL=texture-strip.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"texture-strip.d.ts","sourceRoot":"","sources":["../../src/components/texture-strip.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAI/B;;;;;;;;;;;;GAYG;AAEH,iBAAS,YAAY,CAAC,EAAE,SAAS,EAAE,GAAG,KAAK,EAAE,EAAE,KAAK,CAAC,cAAc,CAAC,KAAK,CAAC,qBAazE;AAED;;;GAGG;AACH,iBAAS,gBAAgB,CAAC,EAAE,SAAS,EAAE,GAAG,KAAK,EAAE,EAAE,KAAK,CAAC,cAAc,CAAC,MAAM,CAAC,qBAW9E;AAED,OAAO,EAAE,YAAY,EAAE,gBAAgB,EAAE,CAAC"}
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
import { jsx as _jsx } from "react/jsx-runtime";
|
|
2
|
+
import { cn } from "../lib/utils.js";
|
|
3
|
+
/**
|
|
4
|
+
* texture-strip — a 40px full-bleed separator band (V5 B05).
|
|
5
|
+
*
|
|
6
|
+
* A thin horizontal divider that carries a dotted radial texture and a hairline
|
|
7
|
+
* on its top and bottom edges. The dots and their spacing are owned once by the
|
|
8
|
+
* design-system `nc-dotted-field` primitive (`radial-gradient(var(--nc-line)…)`
|
|
9
|
+
* over `var(--nc-canvas)`), so no raw gradient or colour lives in this component
|
|
10
|
+
* — only the band geometry (height, flex centring) is inline. Token-only; no
|
|
11
|
+
* `dark:` styling.
|
|
12
|
+
*
|
|
13
|
+
* Children remain an open composition slot. `TextureStripChip` remains as a
|
|
14
|
+
* deprecated compatibility export for consumers of the 0.10 package surface.
|
|
15
|
+
*/
|
|
16
|
+
function TextureStrip({ className, ...props }) {
|
|
17
|
+
return (_jsx("div", { "data-slot": "texture-strip", className: cn(
|
|
18
|
+
// Both the semantic background and the raw `--nc-*` tokens used by
|
|
19
|
+
// `nc-dotted-field` remap under any `.dark` ancestor.
|
|
20
|
+
"nc-dotted-field flex h-10 items-center justify-center border-y border-border bg-background", className), ...props }));
|
|
21
|
+
}
|
|
22
|
+
/**
|
|
23
|
+
* @deprecated Pass any child to `TextureStrip` and style it for the owning
|
|
24
|
+
* surface. This wrapper remains exported to preserve the public 0.10 API.
|
|
25
|
+
*/
|
|
26
|
+
function TextureStripChip({ className, ...props }) {
|
|
27
|
+
return (_jsx("span", { "data-slot": "texture-strip-chip", className: cn("nc-type-caption-mono rounded-full border border-border bg-background px-3 py-1 text-muted-foreground uppercase", className), ...props }));
|
|
28
|
+
}
|
|
29
|
+
export { TextureStrip, TextureStripChip };
|
package/dist/index.d.ts
CHANGED
|
@@ -58,6 +58,8 @@ export * from "./components/expandable-block";
|
|
|
58
58
|
export * from "./components/fact-cell";
|
|
59
59
|
export * from "./components/faq";
|
|
60
60
|
export * from "./components/faq-item";
|
|
61
|
+
export * from "./components/feature-grid";
|
|
62
|
+
export * from "./components/feature-rows";
|
|
61
63
|
export * from "./components/feedback-state";
|
|
62
64
|
export * from "./components/field";
|
|
63
65
|
export * from "./components/file-type-icon";
|
|
@@ -66,16 +68,19 @@ export * from "./components/footer";
|
|
|
66
68
|
export * from "./components/form";
|
|
67
69
|
export * from "./components/glyph-spinner";
|
|
68
70
|
export * from "./components/handoff-banner";
|
|
71
|
+
export * from "./components/hero";
|
|
69
72
|
export * from "./components/hero-split";
|
|
70
73
|
export * from "./components/hover-card";
|
|
71
74
|
export * from "./components/input";
|
|
72
75
|
export * from "./components/input-group";
|
|
73
76
|
export * from "./components/input-otp";
|
|
74
77
|
export * from "./components/installer-shell";
|
|
78
|
+
export * from "./components/integration-flow";
|
|
75
79
|
export * from "./components/item";
|
|
76
80
|
export * from "./components/kbd";
|
|
77
81
|
export * from "./components/label";
|
|
78
82
|
export * from "./components/label-system";
|
|
83
|
+
export * from "./components/live-demo";
|
|
79
84
|
export * from "./components/logo-band";
|
|
80
85
|
export * from "./components/logo-tile";
|
|
81
86
|
export * from "./components/marker";
|
|
@@ -103,6 +108,7 @@ export * from "./components/run-timeline";
|
|
|
103
108
|
export * from "./components/scroll-area";
|
|
104
109
|
export * from "./components/seam-grid";
|
|
105
110
|
export * from "./components/section-intro";
|
|
111
|
+
export * from "./components/security-grid";
|
|
106
112
|
export * from "./components/select";
|
|
107
113
|
export * from "./components/separator";
|
|
108
114
|
export * from "./components/settings-section";
|
|
@@ -115,14 +121,18 @@ export * from "./components/sonner";
|
|
|
115
121
|
export * from "./components/spinner";
|
|
116
122
|
export * from "./components/stat-block";
|
|
117
123
|
export * from "./components/state-notice";
|
|
124
|
+
export * from "./components/statement";
|
|
118
125
|
export * from "./components/stats-band";
|
|
119
126
|
export * from "./components/status-dot";
|
|
120
127
|
export * from "./components/status-row";
|
|
128
|
+
export * from "./components/steps";
|
|
121
129
|
export * from "./components/switch";
|
|
122
130
|
export * from "./components/table";
|
|
123
131
|
export * from "./components/tabs";
|
|
132
|
+
export * from "./components/team-grid";
|
|
124
133
|
export * from "./components/testimonials";
|
|
125
134
|
export * from "./components/textarea";
|
|
135
|
+
export * from "./components/texture-strip";
|
|
126
136
|
export * from "./components/theme-mode-switcher";
|
|
127
137
|
export * from "./components/toggle";
|
|
128
138
|
export * from "./components/toggle-group";
|
package/dist/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
|
package/dist/index.js
CHANGED
|
@@ -58,6 +58,8 @@ export * from "./components/expandable-block.js";
|
|
|
58
58
|
export * from "./components/fact-cell.js";
|
|
59
59
|
export * from "./components/faq.js";
|
|
60
60
|
export * from "./components/faq-item.js";
|
|
61
|
+
export * from "./components/feature-grid.js";
|
|
62
|
+
export * from "./components/feature-rows.js";
|
|
61
63
|
export * from "./components/feedback-state.js";
|
|
62
64
|
export * from "./components/field.js";
|
|
63
65
|
export * from "./components/file-type-icon.js";
|
|
@@ -66,16 +68,19 @@ export * from "./components/footer.js";
|
|
|
66
68
|
export * from "./components/form.js";
|
|
67
69
|
export * from "./components/glyph-spinner.js";
|
|
68
70
|
export * from "./components/handoff-banner.js";
|
|
71
|
+
export * from "./components/hero.js";
|
|
69
72
|
export * from "./components/hero-split.js";
|
|
70
73
|
export * from "./components/hover-card.js";
|
|
71
74
|
export * from "./components/input.js";
|
|
72
75
|
export * from "./components/input-group.js";
|
|
73
76
|
export * from "./components/input-otp.js";
|
|
74
77
|
export * from "./components/installer-shell.js";
|
|
78
|
+
export * from "./components/integration-flow.js";
|
|
75
79
|
export * from "./components/item.js";
|
|
76
80
|
export * from "./components/kbd.js";
|
|
77
81
|
export * from "./components/label.js";
|
|
78
82
|
export * from "./components/label-system.js";
|
|
83
|
+
export * from "./components/live-demo.js";
|
|
79
84
|
export * from "./components/logo-band.js";
|
|
80
85
|
export * from "./components/logo-tile.js";
|
|
81
86
|
export * from "./components/marker.js";
|
|
@@ -103,6 +108,7 @@ export * from "./components/run-timeline.js";
|
|
|
103
108
|
export * from "./components/scroll-area.js";
|
|
104
109
|
export * from "./components/seam-grid.js";
|
|
105
110
|
export * from "./components/section-intro.js";
|
|
111
|
+
export * from "./components/security-grid.js";
|
|
106
112
|
export * from "./components/select.js";
|
|
107
113
|
export * from "./components/separator.js";
|
|
108
114
|
export * from "./components/settings-section.js";
|
|
@@ -115,14 +121,18 @@ export * from "./components/sonner.js";
|
|
|
115
121
|
export * from "./components/spinner.js";
|
|
116
122
|
export * from "./components/stat-block.js";
|
|
117
123
|
export * from "./components/state-notice.js";
|
|
124
|
+
export * from "./components/statement.js";
|
|
118
125
|
export * from "./components/stats-band.js";
|
|
119
126
|
export * from "./components/status-dot.js";
|
|
120
127
|
export * from "./components/status-row.js";
|
|
128
|
+
export * from "./components/steps.js";
|
|
121
129
|
export * from "./components/switch.js";
|
|
122
130
|
export * from "./components/table.js";
|
|
123
131
|
export * from "./components/tabs.js";
|
|
132
|
+
export * from "./components/team-grid.js";
|
|
124
133
|
export * from "./components/testimonials.js";
|
|
125
134
|
export * from "./components/textarea.js";
|
|
135
|
+
export * from "./components/texture-strip.js";
|
|
126
136
|
export * from "./components/theme-mode-switcher.js";
|
|
127
137
|
export * from "./components/toggle.js";
|
|
128
138
|
export * from "./components/toggle-group.js";
|