@nadicodeai/ui 10.0.0 → 10.0.2

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 (100) hide show
  1. package/README.md +0 -25
  2. package/dist/components/model-mark.js +1 -1
  3. package/dist/components/table.js +1 -1
  4. package/dist/index.d.ts +1 -30
  5. package/dist/index.d.ts.map +1 -1
  6. package/dist/index.js +1 -30
  7. package/docs/component-classification.md +2 -2
  8. package/docs/contract.md +4 -1
  9. package/docs/product-compositions.md +16 -0
  10. package/package.json +2 -2
  11. package/dist/components/action-band.d.ts +0 -12
  12. package/dist/components/action-band.d.ts.map +0 -1
  13. package/dist/components/action-band.js +0 -48
  14. package/dist/components/card-marketing.d.ts +0 -30
  15. package/dist/components/card-marketing.d.ts.map +0 -1
  16. package/dist/components/card-marketing.js +0 -48
  17. package/dist/components/code-editor-mockup.d.ts +0 -25
  18. package/dist/components/code-editor-mockup.d.ts.map +0 -1
  19. package/dist/components/code-editor-mockup.js +0 -47
  20. package/dist/components/contact.d.ts +0 -32
  21. package/dist/components/contact.d.ts.map +0 -1
  22. package/dist/components/contact.js +0 -46
  23. package/dist/components/faq-item.d.ts +0 -25
  24. package/dist/components/faq-item.d.ts.map +0 -1
  25. package/dist/components/faq-item.js +0 -25
  26. package/dist/components/faq.d.ts +0 -20
  27. package/dist/components/faq.d.ts.map +0 -1
  28. package/dist/components/faq.js +0 -23
  29. package/dist/components/feature-grid.d.ts +0 -23
  30. package/dist/components/feature-grid.d.ts.map +0 -1
  31. package/dist/components/feature-grid.js +0 -33
  32. package/dist/components/feature-rows.d.ts +0 -23
  33. package/dist/components/feature-rows.d.ts.map +0 -1
  34. package/dist/components/feature-rows.js +0 -27
  35. package/dist/components/hero-split.d.ts +0 -23
  36. package/dist/components/hero-split.d.ts.map +0 -1
  37. package/dist/components/hero-split.js +0 -35
  38. package/dist/components/hero.d.ts +0 -28
  39. package/dist/components/hero.d.ts.map +0 -1
  40. package/dist/components/hero.js +0 -45
  41. package/dist/components/integration-flow.d.ts +0 -36
  42. package/dist/components/integration-flow.d.ts.map +0 -1
  43. package/dist/components/integration-flow.js +0 -36
  44. package/dist/components/live-demo.d.ts +0 -31
  45. package/dist/components/live-demo.d.ts.map +0 -1
  46. package/dist/components/live-demo.js +0 -30
  47. package/dist/components/logo-band.d.ts +0 -33
  48. package/dist/components/logo-band.d.ts.map +0 -1
  49. package/dist/components/logo-band.js +0 -49
  50. package/dist/components/logo-tile.d.ts +0 -21
  51. package/dist/components/logo-tile.d.ts.map +0 -1
  52. package/dist/components/logo-tile.js +0 -28
  53. package/dist/components/media-mount.d.ts +0 -13
  54. package/dist/components/media-mount.d.ts.map +0 -1
  55. package/dist/components/media-mount.js +0 -15
  56. package/dist/components/newsletter.d.ts +0 -24
  57. package/dist/components/newsletter.d.ts.map +0 -1
  58. package/dist/components/newsletter.js +0 -31
  59. package/dist/components/pricing-card.d.ts +0 -30
  60. package/dist/components/pricing-card.d.ts.map +0 -1
  61. package/dist/components/pricing-card.js +0 -44
  62. package/dist/components/pricing.d.ts +0 -25
  63. package/dist/components/pricing.d.ts.map +0 -1
  64. package/dist/components/pricing.js +0 -11
  65. package/dist/components/proof-slot.d.ts +0 -8
  66. package/dist/components/proof-slot.d.ts.map +0 -1
  67. package/dist/components/proof-slot.js +0 -8
  68. package/dist/components/quote-card.d.ts +0 -31
  69. package/dist/components/quote-card.d.ts.map +0 -1
  70. package/dist/components/quote-card.js +0 -48
  71. package/dist/components/seam-grid.d.ts +0 -30
  72. package/dist/components/seam-grid.d.ts.map +0 -1
  73. package/dist/components/seam-grid.js +0 -30
  74. package/dist/components/section-intro.d.ts +0 -18
  75. package/dist/components/section-intro.d.ts.map +0 -1
  76. package/dist/components/section-intro.js +0 -22
  77. package/dist/components/security-grid.d.ts +0 -25
  78. package/dist/components/security-grid.d.ts.map +0 -1
  79. package/dist/components/security-grid.js +0 -28
  80. package/dist/components/shift-band.d.ts +0 -14
  81. package/dist/components/shift-band.d.ts.map +0 -1
  82. package/dist/components/shift-band.js +0 -11
  83. package/dist/components/statement.d.ts +0 -32
  84. package/dist/components/statement.d.ts.map +0 -1
  85. package/dist/components/statement.js +0 -40
  86. package/dist/components/steps.d.ts +0 -34
  87. package/dist/components/steps.d.ts.map +0 -1
  88. package/dist/components/steps.js +0 -40
  89. package/dist/components/team-grid.d.ts +0 -27
  90. package/dist/components/team-grid.d.ts.map +0 -1
  91. package/dist/components/team-grid.js +0 -30
  92. package/dist/components/testimonials.d.ts +0 -48
  93. package/dist/components/testimonials.d.ts.map +0 -1
  94. package/dist/components/testimonials.js +0 -58
  95. package/dist/components/texture-strip.d.ts +0 -22
  96. package/dist/components/texture-strip.d.ts.map +0 -1
  97. package/dist/components/texture-strip.js +0 -32
  98. package/dist/lib/seam.d.ts +0 -29
  99. package/dist/lib/seam.d.ts.map +0 -1
  100. package/dist/lib/seam.js +0 -30
@@ -1,31 +0,0 @@
1
- import * as React from "react";
2
- /**
3
- * live-demo — the faux application window standing in for the agent-at-work
4
- * recording (V5 B11).
5
- *
6
- * `LiveDemoWindow` is a bordered card with a mono title bar, three NEUTRAL chrome
7
- * dots (muted brand-token fills — deliberately not the literal macOS traffic
8
- * colours), an optional "live" chip whose dot pulses (a CSS keyframe gated by
9
- * `motion-reduce:animate-none` so it holds still under reduced-motion), and a
10
- * stack of status rows. `LiveDemoRow` renders one status line with a soft tint
11
- * pill: `done` (success tint) or `waiting` (warning tint).
12
- *
13
- * Replay interactivity is out of scope this pass — the rows are static. Copy is
14
- * props-driven: an absent title, chip, or tag renders nothing.
15
- *
16
- * Light-surface composition; inherits the page theme and sets no dark root.
17
- * Token-only; no `dark:` styling.
18
- */
19
- declare function LiveDemoWindow({ title, live, children, className, ...props }: React.ComponentProps<"div"> & {
20
- title?: React.ReactNode;
21
- live?: React.ReactNode;
22
- }): React.JSX.Element;
23
- type LiveDemoStatus = "done" | "waiting";
24
- declare function LiveDemoRow({ status, label, tag, className, children, ...props }: React.ComponentProps<"div"> & {
25
- status?: LiveDemoStatus;
26
- label?: React.ReactNode;
27
- tag?: React.ReactNode;
28
- }): React.JSX.Element;
29
- export { LiveDemoWindow, LiveDemoRow };
30
- export type { LiveDemoStatus };
31
- //# sourceMappingURL=live-demo.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"live-demo.d.ts","sourceRoot":"","sources":["../../src/components/live-demo.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAI/B;;;;;;;;;;;;;;;;GAgBG;AAEH,iBAAS,cAAc,CAAC,EACtB,KAAK,EACL,IAAI,EACJ,QAAQ,EACR,SAAS,EACT,GAAG,KAAK,EACT,EAAE,KAAK,CAAC,cAAc,CAAC,KAAK,CAAC,GAAG;IAC/B,KAAK,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;IACxB,IAAI,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;CACxB,qBA+CA;AAED,KAAK,cAAc,GAAG,MAAM,GAAG,SAAS,CAAC;AAOzC,iBAAS,WAAW,CAAC,EACnB,MAAe,EACf,KAAK,EACL,GAAG,EACH,SAAS,EACT,QAAQ,EACR,GAAG,KAAK,EACT,EAAE,KAAK,CAAC,cAAc,CAAC,KAAK,CAAC,GAAG;IAC/B,MAAM,CAAC,EAAE,cAAc,CAAC;IACxB,KAAK,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;IACxB,GAAG,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;CACvB,qBA8BA;AAED,OAAO,EAAE,cAAc,EAAE,WAAW,EAAE,CAAC;AACvC,YAAY,EAAE,cAAc,EAAE,CAAC"}
@@ -1,30 +0,0 @@
1
- import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
- import { cn } from "../lib/utils.js";
3
- /**
4
- * live-demo — the faux application window standing in for the agent-at-work
5
- * recording (V5 B11).
6
- *
7
- * `LiveDemoWindow` is a bordered card with a mono title bar, three NEUTRAL chrome
8
- * dots (muted brand-token fills — deliberately not the literal macOS traffic
9
- * colours), an optional "live" chip whose dot pulses (a CSS keyframe gated by
10
- * `motion-reduce:animate-none` so it holds still under reduced-motion), and a
11
- * stack of status rows. `LiveDemoRow` renders one status line with a soft tint
12
- * pill: `done` (success tint) or `waiting` (warning tint).
13
- *
14
- * Replay interactivity is out of scope this pass — the rows are static. Copy is
15
- * props-driven: an absent title, chip, or tag renders nothing.
16
- *
17
- * Light-surface composition; inherits the page theme and sets no dark root.
18
- * Token-only; no `dark:` styling.
19
- */
20
- function LiveDemoWindow({ title, live, children, className, ...props }) {
21
- return (_jsxs("div", { "data-slot": "live-demo-window", className: cn("flex flex-col overflow-hidden rounded-md border border-border bg-card", className), ...props, children: [_jsxs("div", { "data-slot": "live-demo-bar", className: "flex items-center gap-3 border-b border-border px-4 py-2.5", children: [_jsx("span", { "data-slot": "live-demo-chrome", "aria-hidden": "true", className: "flex gap-1.5", children: [0, 1, 2].map((i) => (_jsx("span", { className: "size-2.5 rounded-full bg-muted-foreground/40" }, i))) }), title ? (_jsx("span", { "data-slot": "live-demo-title", className: "font-mono text-[10px] tracking-[0.08em] text-muted-foreground uppercase", children: title })) : null] }), live ? (_jsxs("div", { "data-slot": "live-demo-chip", className: "flex items-center gap-2 border-b border-border px-4 py-2.5 font-mono text-[9.5px] tracking-[0.08em] text-[var(--nc-link-deep)] uppercase", children: [_jsx("span", { "aria-hidden": "true", className: "size-1.5 rounded-full bg-primary motion-safe:animate-pulse" }), live] })) : null, _jsx("div", { "data-slot": "live-demo-rows", className: "flex flex-col", children: children })] }));
22
- }
23
- const ROW_TINT_CLASS = {
24
- done: "bg-[var(--nc-link-bg-soft)] text-[var(--nc-link-deep)]",
25
- waiting: "bg-[var(--nc-warning-soft)] text-[var(--nc-warning-deep)]",
26
- };
27
- function LiveDemoRow({ status = "done", label, tag, className, children, ...props }) {
28
- return (_jsxs("div", { "data-slot": "live-demo-row", "data-status": status, className: cn("flex items-center justify-between gap-3 border-t border-border px-4 py-3 first:border-t-0", className), ...props, children: [label ? (_jsx("span", { "data-slot": "live-demo-row-label", className: "font-mono text-[11px] text-foreground", children: label })) : null, tag ? (_jsx("span", { "data-slot": "live-demo-row-tag", className: cn("shrink-0 px-2 py-0.5 font-mono text-[10px] tracking-[0.06em] uppercase", ROW_TINT_CLASS[status]), children: tag })) : null, children] }));
29
- }
30
- export { LiveDemoWindow, LiveDemoRow };
@@ -1,33 +0,0 @@
1
- import * as React from "react";
2
- /**
3
- * logo-band / integrations-grid — wall of monochrome marks (replaces the retired
4
- * `sections/logo-band.css` + `sections/integrations-grid.css` + their coupled
5
- * `logo-tile` cells).
6
- *
7
- * Identical kernel geometry in both intents (a `LogoTile` wall in the gap-as-seam
8
- * grid); they differ only in label/density of intent, so one composition backs
9
- * both and the two names below keep the section vocabulary distinct (matching the
10
- * retired CSS, which kept two section files over identical primitives).
11
- *
12
- * V5 logo-cloud usage: a caller stacks a mono `LogoBandLabel` caption above each
13
- * auto-fit tile row (`columns="auto"`), e.g. "the tools you already use" over one
14
- * row and "many models, no lock-in" over the next — the two-row composition is the
15
- * caller's, this component only owns one labelled tile wall.
16
- *
17
- * SINGLE-OWNER SEAM: the grid owns every divider once (`gap-px bg-border`). Each
18
- * `LogoTile` is borderless and square-cornered. `surface="ink"` flips only the
19
- * seam colour, never its weight. Token-only; no `dark:` styling.
20
- */
21
- declare function LogoGrid({ className, columns, surface, ...props }: React.ComponentProps<"div"> & {
22
- columns?: 2 | 3 | 4 | 5 | 6 | "auto";
23
- surface?: "canvas" | "ink";
24
- }): React.JSX.Element;
25
- declare function LogoBand({ ...props }: React.ComponentProps<typeof LogoGrid>): React.JSX.Element;
26
- declare function IntegrationsGrid({ ...props }: React.ComponentProps<typeof LogoGrid>): React.JSX.Element;
27
- /**
28
- * LogoBandLabel — the mono caption row that sits above a tile wall (V5 `.lab`).
29
- * Small uppercase mono in the muted role; the caller supplies the words.
30
- */
31
- declare function LogoBandLabel({ className, ...props }: React.ComponentProps<"p">): React.JSX.Element;
32
- export { LogoBand, IntegrationsGrid, LogoBandLabel };
33
- //# sourceMappingURL=logo-band.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"logo-band.d.ts","sourceRoot":"","sources":["../../src/components/logo-band.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAgB/B;;;;;;;;;;;;;;;;;;GAkBG;AAEH,iBAAS,QAAQ,CAAC,EAChB,SAAS,EACT,OAAW,EACX,OAAkB,EAClB,GAAG,KAAK,EACT,EAAE,KAAK,CAAC,cAAc,CAAC,KAAK,CAAC,GAAG;IAC/B,OAAO,CAAC,EAAE,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,MAAM,CAAC;IACrC,OAAO,CAAC,EAAE,QAAQ,GAAG,KAAK,CAAC;CAC5B,qBAYA;AAED,iBAAS,QAAQ,CAAC,EAAE,GAAG,KAAK,EAAE,EAAE,KAAK,CAAC,cAAc,CAAC,OAAO,QAAQ,CAAC,qBAEpE;AAED,iBAAS,gBAAgB,CAAC,EAAE,GAAG,KAAK,EAAE,EAAE,KAAK,CAAC,cAAc,CAAC,OAAO,QAAQ,CAAC,qBAE5E;AAED;;;GAGG;AACH,iBAAS,aAAa,CAAC,EAAE,SAAS,EAAE,GAAG,KAAK,EAAE,EAAE,KAAK,CAAC,cAAc,CAAC,GAAG,CAAC,qBAQxE;AAED,OAAO,EAAE,QAAQ,EAAE,gBAAgB,EAAE,aAAa,EAAE,CAAC"}
@@ -1,49 +0,0 @@
1
- import { jsx as _jsx } from "react/jsx-runtime";
2
- import { cn } from "../lib/utils.js";
3
- import { seamSurfaceClass } from "../lib/seam.js";
4
- const LOGO_GRID_COLUMNS = {
5
- 2: "grid-cols-2",
6
- 3: "grid-cols-2 sm:grid-cols-3",
7
- 4: "grid-cols-2 sm:grid-cols-4",
8
- 5: "grid-cols-2 sm:grid-cols-3 lg:grid-cols-5",
9
- 6: "grid-cols-2 sm:grid-cols-3 lg:grid-cols-6",
10
- // V5 auto-fit tile row: cells flow at a minimum comfortable width and share the
11
- // free space, so a 7-mark row and a 6-mark row both stay optically even.
12
- auto: "grid-cols-[repeat(auto-fit,minmax(130px,1fr))]",
13
- };
14
- /**
15
- * logo-band / integrations-grid — wall of monochrome marks (replaces the retired
16
- * `sections/logo-band.css` + `sections/integrations-grid.css` + their coupled
17
- * `logo-tile` cells).
18
- *
19
- * Identical kernel geometry in both intents (a `LogoTile` wall in the gap-as-seam
20
- * grid); they differ only in label/density of intent, so one composition backs
21
- * both and the two names below keep the section vocabulary distinct (matching the
22
- * retired CSS, which kept two section files over identical primitives).
23
- *
24
- * V5 logo-cloud usage: a caller stacks a mono `LogoBandLabel` caption above each
25
- * auto-fit tile row (`columns="auto"`), e.g. "the tools you already use" over one
26
- * row and "many models, no lock-in" over the next — the two-row composition is the
27
- * caller's, this component only owns one labelled tile wall.
28
- *
29
- * SINGLE-OWNER SEAM: the grid owns every divider once (`gap-px bg-border`). Each
30
- * `LogoTile` is borderless and square-cornered. `surface="ink"` flips only the
31
- * seam colour, never its weight. Token-only; no `dark:` styling.
32
- */
33
- function LogoGrid({ className, columns = 4, surface = "canvas", ...props }) {
34
- return (_jsx("div", { className: cn("grid h-full gap-px", LOGO_GRID_COLUMNS[columns], seamSurfaceClass(surface), className), ...props }));
35
- }
36
- function LogoBand({ ...props }) {
37
- return _jsx(LogoGrid, { "data-slot": "logo-band", ...props });
38
- }
39
- function IntegrationsGrid({ ...props }) {
40
- return _jsx(LogoGrid, { "data-slot": "integrations-grid", ...props });
41
- }
42
- /**
43
- * LogoBandLabel — the mono caption row that sits above a tile wall (V5 `.lab`).
44
- * Small uppercase mono in the muted role; the caller supplies the words.
45
- */
46
- function LogoBandLabel({ className, ...props }) {
47
- return (_jsx("p", { "data-slot": "logo-band-label", className: cn("nc-type-label-mono uppercase text-muted-foreground", className), ...props }));
48
- }
49
- export { LogoBand, IntegrationsGrid, LogoBandLabel };
@@ -1,21 +0,0 @@
1
- import * as React from "react";
2
- /**
3
- * logo-tile — single logo cell (replaces the retired `.nc-logo-tile`).
4
- *
5
- * An equal-height fill holding one monochrome logo, with an optional mono metric
6
- * or integration name below it. Seam-free canvas fill: the holding `LogoBand` /
7
- * `IntegrationsGrid` grid owns the dividers (gap-as-seam), so it draws NO border
8
- * and is square-cornered. The logo mark is fixed-height so a row of mixed-aspect
9
- * logos stays optically level. `surface="ink"` inverts onto the ink role.
10
- * Token-only; no `dark:` styling.
11
- */
12
- declare function LogoTile({ className, surface, ...props }: React.ComponentProps<"div"> & {
13
- surface?: "canvas" | "ink";
14
- }): React.JSX.Element;
15
- declare function LogoTileMark({ className, surface, ...props }: React.ComponentProps<"span"> & {
16
- surface?: "canvas" | "ink";
17
- }): React.JSX.Element;
18
- declare function LogoTileMetric({ className, ...props }: React.ComponentProps<"span">): React.JSX.Element;
19
- declare function LogoTileName({ className, ...props }: React.ComponentProps<"span">): React.JSX.Element;
20
- export { LogoTile, LogoTileMark, LogoTileMetric, LogoTileName };
21
- //# sourceMappingURL=logo-tile.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"logo-tile.d.ts","sourceRoot":"","sources":["../../src/components/logo-tile.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAI/B;;;;;;;;;GASG;AAEH,iBAAS,QAAQ,CAAC,EAChB,SAAS,EACT,OAAkB,EAClB,GAAG,KAAK,EACT,EAAE,KAAK,CAAC,cAAc,CAAC,KAAK,CAAC,GAAG;IAAE,OAAO,CAAC,EAAE,QAAQ,GAAG,KAAK,CAAA;CAAE,qBAa9D;AAED,iBAAS,YAAY,CAAC,EACpB,SAAS,EACT,OAAkB,EAClB,GAAG,KAAK,EACT,EAAE,KAAK,CAAC,cAAc,CAAC,MAAM,CAAC,GAAG;IAAE,OAAO,CAAC,EAAE,QAAQ,GAAG,KAAK,CAAA;CAAE,qBAc/D;AAED,iBAAS,cAAc,CAAC,EAAE,SAAS,EAAE,GAAG,KAAK,EAAE,EAAE,KAAK,CAAC,cAAc,CAAC,MAAM,CAAC,qBAQ5E;AAED,iBAAS,YAAY,CAAC,EAAE,SAAS,EAAE,GAAG,KAAK,EAAE,EAAE,KAAK,CAAC,cAAc,CAAC,MAAM,CAAC,qBAQ1E;AAED,OAAO,EAAE,QAAQ,EAAE,YAAY,EAAE,cAAc,EAAE,YAAY,EAAE,CAAC"}
@@ -1,28 +0,0 @@
1
- import { jsx as _jsx } from "react/jsx-runtime";
2
- import { cn } from "../lib/utils.js";
3
- /**
4
- * logo-tile — single logo cell (replaces the retired `.nc-logo-tile`).
5
- *
6
- * An equal-height fill holding one monochrome logo, with an optional mono metric
7
- * or integration name below it. Seam-free canvas fill: the holding `LogoBand` /
8
- * `IntegrationsGrid` grid owns the dividers (gap-as-seam), so it draws NO border
9
- * and is square-cornered. The logo mark is fixed-height so a row of mixed-aspect
10
- * logos stays optically level. `surface="ink"` inverts onto the ink role.
11
- * Token-only; no `dark:` styling.
12
- */
13
- function LogoTile({ className, surface = "canvas", ...props }) {
14
- return (_jsx("div", { "data-slot": "logo-tile", "data-surface": surface, className: cn("grid min-h-24 place-content-center justify-items-center gap-2 p-6", surface === "ink" ? "bg-primary" : "bg-card", className), ...props }));
15
- }
16
- function LogoTileMark({ className, surface = "canvas", ...props }) {
17
- return (_jsx("span", { "data-slot": "logo-tile-mark", className: cn("block h-7 w-auto [&_svg]:h-full [&_svg]:w-auto [&_img]:h-full [&_img]:w-auto",
18
- // Semantic roles keep the mark's purpose explicit: on ink (verde) it
19
- // reads as on-primary; on canvas it reads as muted body.
20
- surface === "ink" ? "text-primary-foreground" : "text-muted-foreground", className), ...props }));
21
- }
22
- function LogoTileMetric({ className, ...props }) {
23
- return (_jsx("span", { "data-slot": "logo-tile-metric", className: cn("font-mono text-xs uppercase text-muted-foreground", className), ...props }));
24
- }
25
- function LogoTileName({ className, ...props }) {
26
- return (_jsx("span", { "data-slot": "logo-tile-name", className: cn("text-[13px] leading-4 text-muted-foreground", className), ...props }));
27
- }
28
- export { LogoTile, LogoTileMark, LogoTileMetric, LogoTileName };
@@ -1,13 +0,0 @@
1
- import * as React from "react";
2
- /**
3
- * media-mount — standard square-cornered brand image/video/artifact mount.
4
- *
5
- * The kept design-system `.nc-image` atom owns the image register. This wrapper
6
- * standardizes fill behavior so website pages do not recreate image mounts.
7
- */
8
- declare function MediaMount({ className, ratio, children, style, ...props }: React.ComponentProps<"figure"> & {
9
- ratio?: string | "auto";
10
- }): React.JSX.Element;
11
- declare function MediaMountCaption({ className, ...props }: React.ComponentProps<"figcaption">): React.JSX.Element;
12
- export { MediaMount, MediaMountCaption };
13
- //# sourceMappingURL=media-mount.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"media-mount.d.ts","sourceRoot":"","sources":["../../src/components/media-mount.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAI/B;;;;;GAKG;AAEH,iBAAS,UAAU,CAAC,EAClB,SAAS,EACT,KAAe,EACf,QAAQ,EACR,KAAK,EACL,GAAG,KAAK,EACT,EAAE,KAAK,CAAC,cAAc,CAAC,QAAQ,CAAC,GAAG;IAAE,KAAK,CAAC,EAAE,MAAM,GAAG,MAAM,CAAA;CAAE,qBAc9D;AAED,iBAAS,iBAAiB,CAAC,EAAE,SAAS,EAAE,GAAG,KAAK,EAAE,EAAE,KAAK,CAAC,cAAc,CAAC,YAAY,CAAC,qBAQrF;AAED,OAAO,EAAE,UAAU,EAAE,iBAAiB,EAAE,CAAC"}
@@ -1,15 +0,0 @@
1
- import { jsx as _jsx } from "react/jsx-runtime";
2
- import { cn } from "../lib/utils.js";
3
- /**
4
- * media-mount — standard square-cornered brand image/video/artifact mount.
5
- *
6
- * The kept design-system `.nc-image` atom owns the image register. This wrapper
7
- * standardizes fill behavior so website pages do not recreate image mounts.
8
- */
9
- function MediaMount({ className, ratio = "4 / 3", children, style, ...props }) {
10
- return (_jsx("figure", { "data-slot": "media-mount", className: cn("nc-image relative min-h-0 w-full overflow-hidden bg-[var(--nc-canvas-soft)]", className), style: ratio === "auto" ? style : { aspectRatio: ratio, ...style }, ...props, children: children }));
11
- }
12
- function MediaMountCaption({ className, ...props }) {
13
- return (_jsx("figcaption", { "data-slot": "media-mount-caption", className: cn("nc-image-caption nc-type-caption", className), ...props }));
14
- }
15
- export { MediaMount, MediaMountCaption };
@@ -1,24 +0,0 @@
1
- import * as React from "react";
2
- /**
3
- * newsletter — email-capture section (replaces the retired `sections/newsletter.css`
4
- * + its coupled form control).
5
- *
6
- * Composition pattern: a centered intro over an inline email + submit row. It owns
7
- * NO structural seam — the only visible borders are the caller's input control and
8
- * the submit button's own edge. The frame/lane/row perimeter is owned by the kept
9
- * geometry layer this composes inside. `surface="ink"` inverts the band onto the
10
- * ink role; the note tint follows via a `data-slot` descendant selector (the
11
- * retired CSS-cascade model), so the section stays server-renderable.
12
- *
13
- * Slots: `<NewsletterForm>` holds the input + button (the input grows, the button
14
- * stays content-width on desktop, stacking under 640px); `<NewsletterNote>` is the
15
- * consent line. The caller supplies the `Input` and `Button`. Token-only;
16
- * no `dark:` styling.
17
- */
18
- declare function Newsletter({ className, surface, ...props }: React.ComponentProps<"div"> & {
19
- surface?: "canvas" | "ink";
20
- }): React.JSX.Element;
21
- declare function NewsletterForm({ className, ...props }: React.ComponentProps<"form">): React.JSX.Element;
22
- declare function NewsletterNote({ className, ...props }: React.ComponentProps<"p">): React.JSX.Element;
23
- export { Newsletter, NewsletterForm, NewsletterNote };
24
- //# sourceMappingURL=newsletter.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"newsletter.d.ts","sourceRoot":"","sources":["../../src/components/newsletter.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAI/B;;;;;;;;;;;;;;;GAeG;AAEH,iBAAS,UAAU,CAAC,EAClB,SAAS,EACT,OAAkB,EAClB,GAAG,KAAK,EACT,EAAE,KAAK,CAAC,cAAc,CAAC,KAAK,CAAC,GAAG;IAAE,OAAO,CAAC,EAAE,QAAQ,GAAG,KAAK,CAAA;CAAE,qBAiB9D;AAED,iBAAS,cAAc,CAAC,EAAE,SAAS,EAAE,GAAG,KAAK,EAAE,EAAE,KAAK,CAAC,cAAc,CAAC,MAAM,CAAC,qBAY5E;AAED,iBAAS,cAAc,CAAC,EAAE,SAAS,EAAE,GAAG,KAAK,EAAE,EAAE,KAAK,CAAC,cAAc,CAAC,GAAG,CAAC,qBAQzE;AAED,OAAO,EAAE,UAAU,EAAE,cAAc,EAAE,cAAc,EAAE,CAAC"}
@@ -1,31 +0,0 @@
1
- import { jsx as _jsx } from "react/jsx-runtime";
2
- import { cn } from "../lib/utils.js";
3
- /**
4
- * newsletter — email-capture section (replaces the retired `sections/newsletter.css`
5
- * + its coupled form control).
6
- *
7
- * Composition pattern: a centered intro over an inline email + submit row. It owns
8
- * NO structural seam — the only visible borders are the caller's input control and
9
- * the submit button's own edge. The frame/lane/row perimeter is owned by the kept
10
- * geometry layer this composes inside. `surface="ink"` inverts the band onto the
11
- * ink role; the note tint follows via a `data-slot` descendant selector (the
12
- * retired CSS-cascade model), so the section stays server-renderable.
13
- *
14
- * Slots: `<NewsletterForm>` holds the input + button (the input grows, the button
15
- * stays content-width on desktop, stacking under 640px); `<NewsletterNote>` is the
16
- * consent line. The caller supplies the `Input` and `Button`. Token-only;
17
- * no `dark:` styling.
18
- */
19
- function Newsletter({ className, surface = "canvas", ...props }) {
20
- return (_jsx("div", { "data-slot": "newsletter", "data-surface": surface, className: cn("grid min-h-full min-w-0 content-center justify-items-center py-[clamp(40px,6vw,96px)] text-center", surface === "canvas" && "bg-card", surface === "ink" && [
21
- "bg-primary text-primary-foreground",
22
- "[&_[data-slot=newsletter-note]]:text-[color-mix(in_srgb,var(--nc-canvas)_56%,var(--nc-ink))]",
23
- ], className), ...props }));
24
- }
25
- function NewsletterForm({ className, ...props }) {
26
- return (_jsx("form", { "data-slot": "newsletter-form", className: cn("mt-3 grid w-full max-w-[560px] grid-cols-1 gap-2 sm:grid-cols-[minmax(0,1fr)_auto] sm:items-center", "[&>button]:w-full sm:[&>button]:w-auto", className), ...props }));
27
- }
28
- function NewsletterNote({ className, ...props }) {
29
- return (_jsx("p", { "data-slot": "newsletter-note", className: cn("mt-2 font-mono text-xs text-muted-foreground", className), ...props }));
30
- }
31
- export { Newsletter, NewsletterForm, NewsletterNote };
@@ -1,30 +0,0 @@
1
- import * as React from "react";
2
- /**
3
- * pricing-card — the brand pricing/package tier molecule (V5 rework).
4
- *
5
- * A seam-free fill: it drops into the holding `Pricing` grid, which owns every
6
- * hairline divider through its gap-as-seam (`gap-px bg-border`). The card draws NO
7
- * border and has square corners so the grid line never shows through a rounded
8
- * edge. It is a full-height flex column so `PricingCardCta` (`mt-auto`) pins to the
9
- * bottom and aligns across tiers.
10
- *
11
- * `variant="featured"` (V5) reads as featured through a SOFT canvas surface — a
12
- * quiet fill change, not an ink/primary polarity flip and not an inset rail. The
13
- * body/eyebrow/feature tones are identical to the default card; only the surface
14
- * differs. Server-renderable; token-only; no `dark:` styling.
15
- */
16
- declare function PricingCard({ className, variant, ...props }: React.ComponentProps<"div"> & {
17
- variant?: "default" | "featured";
18
- }): React.JSX.Element;
19
- declare function PricingCardEyebrow({ className, ...props }: React.ComponentProps<"p">): React.JSX.Element;
20
- declare function PricingCardName({ className, ...props }: React.ComponentProps<"div">): React.JSX.Element;
21
- declare function PricingCardPrice({ className, children, amount, period, ...props }: React.ComponentProps<"div"> & {
22
- amount: React.ReactNode;
23
- period?: React.ReactNode;
24
- }): React.JSX.Element;
25
- declare function PricingCardNote({ className, ...props }: React.ComponentProps<"p">): React.JSX.Element;
26
- declare function PricingCardFeatures({ className, ...props }: React.ComponentProps<"ul">): React.JSX.Element;
27
- declare function PricingCardFeature({ className, children, ...props }: React.ComponentProps<"li">): React.JSX.Element;
28
- declare function PricingCardCta({ className, ...props }: React.ComponentProps<"div">): React.JSX.Element;
29
- export { PricingCard, PricingCardEyebrow, PricingCardName, PricingCardPrice, PricingCardNote, PricingCardFeatures, PricingCardFeature, PricingCardCta, };
30
- //# sourceMappingURL=pricing-card.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"pricing-card.d.ts","sourceRoot":"","sources":["../../src/components/pricing-card.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAI/B;;;;;;;;;;;;;GAaG;AAEH,iBAAS,WAAW,CAAC,EACnB,SAAS,EACT,OAAmB,EACnB,GAAG,KAAK,EACT,EAAE,KAAK,CAAC,cAAc,CAAC,KAAK,CAAC,GAAG;IAAE,OAAO,CAAC,EAAE,SAAS,GAAG,UAAU,CAAA;CAAE,qBAgBpE;AAED,iBAAS,kBAAkB,CAAC,EAAE,SAAS,EAAE,GAAG,KAAK,EAAE,EAAE,KAAK,CAAC,cAAc,CAAC,GAAG,CAAC,qBAQ7E;AAED,iBAAS,eAAe,CAAC,EAAE,SAAS,EAAE,GAAG,KAAK,EAAE,EAAE,KAAK,CAAC,cAAc,CAAC,KAAK,CAAC,qBAQ5E;AAED,iBAAS,gBAAgB,CAAC,EACxB,SAAS,EACT,QAAQ,EACR,MAAM,EACN,MAAM,EACN,GAAG,KAAK,EACT,EAAE,KAAK,CAAC,cAAc,CAAC,KAAK,CAAC,GAAG;IAAE,MAAM,EAAE,KAAK,CAAC,SAAS,CAAC;IAAC,MAAM,CAAC,EAAE,KAAK,CAAC,SAAS,CAAA;CAAE,qBAmBrF;AAED,iBAAS,eAAe,CAAC,EAAE,SAAS,EAAE,GAAG,KAAK,EAAE,EAAE,KAAK,CAAC,cAAc,CAAC,GAAG,CAAC,qBAQ1E;AAED,iBAAS,mBAAmB,CAAC,EAAE,SAAS,EAAE,GAAG,KAAK,EAAE,EAAE,KAAK,CAAC,cAAc,CAAC,IAAI,CAAC,qBAQ/E;AAED,iBAAS,kBAAkB,CAAC,EAAE,SAAS,EAAE,QAAQ,EAAE,GAAG,KAAK,EAAE,EAAE,KAAK,CAAC,cAAc,CAAC,IAAI,CAAC,qBAkBxF;AAED,iBAAS,cAAc,CAAC,EAAE,SAAS,EAAE,GAAG,KAAK,EAAE,EAAE,KAAK,CAAC,cAAc,CAAC,KAAK,CAAC,qBAQ3E;AAED,OAAO,EACL,WAAW,EACX,kBAAkB,EAClB,eAAe,EACf,gBAAgB,EAChB,eAAe,EACf,mBAAmB,EACnB,kBAAkB,EAClB,cAAc,GACf,CAAC"}
@@ -1,44 +0,0 @@
1
- import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
- import { cn } from "../lib/utils.js";
3
- /**
4
- * pricing-card — the brand pricing/package tier molecule (V5 rework).
5
- *
6
- * A seam-free fill: it drops into the holding `Pricing` grid, which owns every
7
- * hairline divider through its gap-as-seam (`gap-px bg-border`). The card draws NO
8
- * border and has square corners so the grid line never shows through a rounded
9
- * edge. It is a full-height flex column so `PricingCardCta` (`mt-auto`) pins to the
10
- * bottom and aligns across tiers.
11
- *
12
- * `variant="featured"` (V5) reads as featured through a SOFT canvas surface — a
13
- * quiet fill change, not an ink/primary polarity flip and not an inset rail. The
14
- * body/eyebrow/feature tones are identical to the default card; only the surface
15
- * differs. Server-renderable; token-only; no `dark:` styling.
16
- */
17
- function PricingCard({ className, variant = "default", ...props }) {
18
- return (_jsx("div", { "data-slot": "pricing-card", "data-variant": variant, className: cn("flex h-full flex-col gap-4 p-8 text-card-foreground", variant === "default" && "bg-card",
19
- // featured (V5): soft canvas surface — a quiet fill change only. The
20
- // `muted` role (== canvas-soft) flips with any `.dark` ancestor.
21
- variant === "featured" && "bg-muted", className), ...props }));
22
- }
23
- function PricingCardEyebrow({ className, ...props }) {
24
- return (_jsx("p", { "data-slot": "pricing-card-eyebrow", className: cn("font-mono text-xs font-medium uppercase text-muted-foreground", className), ...props }));
25
- }
26
- function PricingCardName({ className, ...props }) {
27
- return (_jsx("div", { "data-slot": "pricing-card-name", className: cn("text-2xl font-semibold", className), ...props }));
28
- }
29
- function PricingCardPrice({ className, children, amount, period, ...props }) {
30
- return (_jsxs("div", { "data-slot": "pricing-card-price", className: cn("flex items-baseline gap-1.5", className), ...props, children: [_jsx("span", { className: "text-[40px] leading-none font-semibold tabular-nums", children: amount }), period ? (_jsx("span", { "data-slot": "pricing-card-period", className: "font-mono text-xs uppercase text-muted-foreground", children: period })) : null, children] }));
31
- }
32
- function PricingCardNote({ className, ...props }) {
33
- return (_jsx("p", { "data-slot": "pricing-card-note", className: cn("m-0 text-sm text-muted-foreground", className), ...props }));
34
- }
35
- function PricingCardFeatures({ className, ...props }) {
36
- return (_jsx("ul", { "data-slot": "pricing-card-features", className: cn("m-0 grid list-none gap-2.5 p-0", className), ...props }));
37
- }
38
- function PricingCardFeature({ className, children, ...props }) {
39
- return (_jsxs("li", { "data-slot": "pricing-card-feature", className: cn("grid grid-cols-[auto_minmax(0,1fr)] items-start gap-2.5 text-sm text-muted-foreground", className), ...props, children: [_jsx("span", { "data-slot": "pricing-card-feature-mark", "aria-hidden": "true", className: "mt-1 size-2.5 rounded-[1px] border border-primary bg-[var(--nc-link-bg-soft)]" }), _jsx("span", { children: children })] }));
40
- }
41
- function PricingCardCta({ className, ...props }) {
42
- return (_jsx("div", { "data-slot": "pricing-card-cta", className: cn("mt-auto pt-1.5 [&>*]:w-full", className), ...props }));
43
- }
44
- export { PricingCard, PricingCardEyebrow, PricingCardName, PricingCardPrice, PricingCardNote, PricingCardFeatures, PricingCardFeature, PricingCardCta, };
@@ -1,25 +0,0 @@
1
- import * as React from "react";
2
- /**
3
- * pricing — package/tier comparison row (V5 rework).
4
- *
5
- * SINGLE-OWNER SEAM: the DIVIDERS between tiers are owned once by the grid —
6
- * `SeamGrid` (no surface) paints the brand `line` behind the cards and leaves a
7
- * 1px guide gap (`gap-px bg-border`). Each `PricingCard` is borderless and
8
- * square-cornered, so it never repeats that coordinate.
9
- *
10
- * FEATURED TIER (V5): the featured (middle) column reads as featured through a
11
- * SOFT canvas surface, owned by `PricingCard variant="featured"` — there is no
12
- * inset rail or polarity flip in this rework. `emphasis` is kept for API
13
- * compatibility and surfaces as `data-emphasis`; it draws nothing here.
14
- *
15
- * The frame/lane/row geometry (perimeter + top/bottom seams) is owned by the kept
16
- * structural-geometry layer the page composes this inside; `Pricing` owns no frame
17
- * math, no marker, and no perimeter line. Token-only; no `dark:` styling.
18
- */
19
- type PricingEmphasis = "none" | "featured";
20
- declare function Pricing({ className, columns, emphasis, ...props }: React.ComponentProps<"div"> & {
21
- columns?: 2 | 3;
22
- emphasis?: PricingEmphasis;
23
- }): React.JSX.Element;
24
- export { Pricing };
25
- //# sourceMappingURL=pricing.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"pricing.d.ts","sourceRoot":"","sources":["../../src/components/pricing.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAK/B;;;;;;;;;;;;;;;;GAgBG;AAEH,KAAK,eAAe,GAAG,MAAM,GAAG,UAAU,CAAC;AAE3C,iBAAS,OAAO,CAAC,EACf,SAAS,EACT,OAAW,EACX,QAAiB,EACjB,GAAG,KAAK,EACT,EAAE,KAAK,CAAC,cAAc,CAAC,KAAK,CAAC,GAAG;IAC/B,OAAO,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC;IAChB,QAAQ,CAAC,EAAE,eAAe,CAAC;CAC5B,qBAgBA;AAED,OAAO,EAAE,OAAO,EAAE,CAAC"}
@@ -1,11 +0,0 @@
1
- import { jsx as _jsx } from "react/jsx-runtime";
2
- import { cn } from "../lib/utils.js";
3
- import { SeamGrid } from "./seam-grid.js";
4
- function Pricing({ className, columns = 3, emphasis = "none", ...props }) {
5
- return (_jsx(SeamGrid, { "data-slot": "pricing", "data-emphasis": emphasis, className: cn(
6
- // gap-as-seam: SeamGrid (no surface) is the single owner of every divider
7
- // between tiers (`gap-px bg-border`). Cards stretch to equal height so the
8
- // bottom-pinned CTA aligns across columns.
9
- "h-full items-stretch", columns === 2 ? "grid-cols-1 sm:grid-cols-2" : "grid-cols-1 sm:grid-cols-2 lg:grid-cols-3", className), ...props }));
10
- }
11
- export { Pricing };
@@ -1,8 +0,0 @@
1
- import * as React from "react";
2
- type ProofSlotProps = React.ComponentProps<"figure"> & {
3
- quote?: string;
4
- attribution?: string;
5
- };
6
- declare function ProofSlot({ quote, attribution, className, ...props }: ProofSlotProps): React.JSX.Element | null;
7
- export { ProofSlot };
8
- //# sourceMappingURL=proof-slot.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"proof-slot.d.ts","sourceRoot":"","sources":["../../src/components/proof-slot.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAI/B,KAAK,cAAc,GAAG,KAAK,CAAC,cAAc,CAAC,QAAQ,CAAC,GAAG;IACrD,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,WAAW,CAAC,EAAE,MAAM,CAAC;CACtB,CAAC;AAEF,iBAAS,SAAS,CAAC,EAAE,KAAK,EAAE,WAAW,EAAE,SAAS,EAAE,GAAG,KAAK,EAAE,EAAE,cAAc,4BAiB7E;AAED,OAAO,EAAE,SAAS,EAAE,CAAC"}
@@ -1,8 +0,0 @@
1
- import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
- import { cn } from "../lib/utils.js";
3
- function ProofSlot({ quote, attribution, className, ...props }) {
4
- if (!quote)
5
- return null;
6
- return (_jsxs("figure", { "data-slot": "proof-slot", className: cn("nc-panel-cell place-items-center text-center", className), ...props, children: [_jsx("blockquote", { className: "nc-type-heading-lg max-w-[26ch] text-foreground", children: quote }), attribution ? (_jsx("figcaption", { className: "nc-type-label-mono text-muted-foreground uppercase", children: attribution })) : null] }));
7
- }
8
- export { ProofSlot };
@@ -1,31 +0,0 @@
1
- import * as React from "react";
2
- /**
3
- * quote-card — testimonial fill (replaces the retired `.nc-quote-card`).
4
- *
5
- * A quote body over an attribution row (name + role, optional avatar slot).
6
- * Seam-free canvas fill: single it sits in a framed lane, in a grid the
7
- * `Testimonials` grid owns the dividers. It draws NO border and is square-cornered.
8
- * `surface="ink"` inverts onto the ink role for a dark lane.
9
- *
10
- * Server-renderable: the ink inversion is applied by the parent card to its
11
- * descendants via `data-slot` descendant selectors (the retired CSS-cascade model),
12
- * so sub-components stay style-light and need no client context. Token-only; no
13
- * `dark:` styling.
14
- */
15
- declare function QuoteCard({ className, surface, ...props }: React.ComponentProps<"figure"> & {
16
- surface?: "canvas" | "ink";
17
- }): React.JSX.Element;
18
- declare function QuoteCardBody({ className, size, ...props }: React.ComponentProps<"blockquote"> & {
19
- size?: "md" | "lg";
20
- }): React.JSX.Element;
21
- /**
22
- * QuoteCardAvatar — the tint circle (an initial) that opens the attribution row.
23
- * A verde-tint chip: soft `success` field, `--nc-link` (verde) glyph. Decorative
24
- * (`aria-hidden`), so the attribution name/role carry the accessible identity.
25
- */
26
- declare function QuoteCardAvatar({ className, ...props }: React.ComponentProps<"span">): React.JSX.Element;
27
- declare function QuoteCardAttribution({ className, ...props }: React.ComponentProps<"figcaption">): React.JSX.Element;
28
- declare function QuoteCardName({ className, ...props }: React.ComponentProps<"div">): React.JSX.Element;
29
- declare function QuoteCardRole({ className, ...props }: React.ComponentProps<"div">): React.JSX.Element;
30
- export { QuoteCard, QuoteCardBody, QuoteCardAvatar, QuoteCardAttribution, QuoteCardName, QuoteCardRole, };
31
- //# sourceMappingURL=quote-card.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"quote-card.d.ts","sourceRoot":"","sources":["../../src/components/quote-card.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAI/B;;;;;;;;;;;;GAYG;AAEH,iBAAS,SAAS,CAAC,EACjB,SAAS,EACT,OAAkB,EAClB,GAAG,KAAK,EACT,EAAE,KAAK,CAAC,cAAc,CAAC,QAAQ,CAAC,GAAG;IAAE,OAAO,CAAC,EAAE,QAAQ,GAAG,KAAK,CAAA;CAAE,qBAmBjE;AAED,iBAAS,aAAa,CAAC,EACrB,SAAS,EACT,IAAW,EACX,GAAG,KAAK,EACT,EAAE,KAAK,CAAC,cAAc,CAAC,YAAY,CAAC,GAAG;IAAE,IAAI,CAAC,EAAE,IAAI,GAAG,IAAI,CAAA;CAAE,qBAiB7D;AAED;;;;GAIG;AACH,iBAAS,eAAe,CAAC,EAAE,SAAS,EAAE,GAAG,KAAK,EAAE,EAAE,KAAK,CAAC,cAAc,CAAC,MAAM,CAAC,qBAY7E;AAED,iBAAS,oBAAoB,CAAC,EAAE,SAAS,EAAE,GAAG,KAAK,EAAE,EAAE,KAAK,CAAC,cAAc,CAAC,YAAY,CAAC,qBAQxF;AAED,iBAAS,aAAa,CAAC,EAAE,SAAS,EAAE,GAAG,KAAK,EAAE,EAAE,KAAK,CAAC,cAAc,CAAC,KAAK,CAAC,qBAQ1E;AAED,iBAAS,aAAa,CAAC,EAAE,SAAS,EAAE,GAAG,KAAK,EAAE,EAAE,KAAK,CAAC,cAAc,CAAC,KAAK,CAAC,qBAQ1E;AAED,OAAO,EACL,SAAS,EACT,aAAa,EACb,eAAe,EACf,oBAAoB,EACpB,aAAa,EACb,aAAa,GACd,CAAC"}
@@ -1,48 +0,0 @@
1
- import { jsx as _jsx } from "react/jsx-runtime";
2
- import { cn } from "../lib/utils.js";
3
- /**
4
- * quote-card — testimonial fill (replaces the retired `.nc-quote-card`).
5
- *
6
- * A quote body over an attribution row (name + role, optional avatar slot).
7
- * Seam-free canvas fill: single it sits in a framed lane, in a grid the
8
- * `Testimonials` grid owns the dividers. It draws NO border and is square-cornered.
9
- * `surface="ink"` inverts onto the ink role for a dark lane.
10
- *
11
- * Server-renderable: the ink inversion is applied by the parent card to its
12
- * descendants via `data-slot` descendant selectors (the retired CSS-cascade model),
13
- * so sub-components stay style-light and need no client context. Token-only; no
14
- * `dark:` styling.
15
- */
16
- function QuoteCard({ className, surface = "canvas", ...props }) {
17
- return (_jsx("figure", { "data-slot": "quote-card", "data-surface": surface, className: cn("m-0 grid content-start gap-4 p-6", surface === "canvas" && "bg-card", surface === "ink" && [
18
- "bg-primary",
19
- "[&_[data-slot=quote-card-body]]:text-primary-foreground",
20
- "[&_[data-slot=quote-card-name]]:text-primary-foreground",
21
- "[&_[data-slot=quote-card-role]]:text-[color-mix(in_srgb,var(--nc-canvas)_60%,var(--nc-muted))]",
22
- ], className), ...props }));
23
- }
24
- function QuoteCardBody({ className, size = "md", ...props }) {
25
- return (_jsx("blockquote", { "data-slot": "quote-card-body", "data-size": size, className: cn("m-0 font-normal text-foreground",
26
- // md: the default measure. lg: the featured "big quote" (V5 B13) — a tighter
27
- // measure and a display-scale clamp for the single testimonial slot.
28
- size === "md" && "text-lg leading-[1.5]", size === "lg" &&
29
- "max-w-[26ch] text-[clamp(24px,2.4vw,34px)] leading-[1.2] font-semibold tracking-[-0.02em]", className), ...props }));
30
- }
31
- /**
32
- * QuoteCardAvatar — the tint circle (an initial) that opens the attribution row.
33
- * A verde-tint chip: soft `success` field, `--nc-link` (verde) glyph. Decorative
34
- * (`aria-hidden`), so the attribution name/role carry the accessible identity.
35
- */
36
- function QuoteCardAvatar({ className, ...props }) {
37
- return (_jsx("span", { "data-slot": "quote-card-avatar", "aria-hidden": "true", className: cn("flex size-11 shrink-0 items-center justify-center rounded-full bg-success/15 text-base font-semibold text-[var(--nc-link)]", className), ...props }));
38
- }
39
- function QuoteCardAttribution({ className, ...props }) {
40
- return (_jsx("figcaption", { "data-slot": "quote-card-attribution", className: cn("flex items-center gap-3", className), ...props }));
41
- }
42
- function QuoteCardName({ className, ...props }) {
43
- return (_jsx("div", { "data-slot": "quote-card-name", className: cn("text-sm font-medium text-foreground", className), ...props }));
44
- }
45
- function QuoteCardRole({ className, ...props }) {
46
- return (_jsx("div", { "data-slot": "quote-card-role", className: cn("font-mono text-xs uppercase text-muted-foreground", className), ...props }));
47
- }
48
- export { QuoteCard, QuoteCardBody, QuoteCardAvatar, QuoteCardAttribution, QuoteCardName, QuoteCardRole, };
@@ -1,30 +0,0 @@
1
- import * as React from "react";
2
- import { type SeamSurface } from "../lib/seam.js";
3
- /**
4
- * SeamGrid is the single owner of the "gap-as-seam" grid mechanics shared by the
5
- * bordered section grids (stats-band, testimonials, logo-band, and their siblings).
6
- *
7
- * SINGLE-OWNER SEAM: a `grid` with `gap-px` lets the panel paint one hairline at
8
- * every cell boundary while borderless, square-cornered cells fill on top, so no
9
- * coordinate ever carries two lines. The seam COLOUR is the only thing that flips
10
- * with `surface`, and that colour comes from `seamSurfaceClass` in the internal
11
- * `lib/seam` module, the one place the ink `color-mix(...)` string lives.
12
- *
13
- * `surface` is OPTIONAL. Pass `"canvas"` or `"ink"` (as the bordered proof bands
14
- * do) to mark the grid with `data-surface` and pick the seam colour. Omit it for
15
- * the plain canvas seam (`bg-border`) with NO `data-surface` marker, exactly the
16
- * single-owner `gap-px bg-border` grid the canvas-only section grids render
17
- * (faq, pricing, hero-split, bento, shift-band, action-band content, watch-it-work).
18
- * Token-only; no `dark:` styling. Callers keep their own column maps, heights,
19
- * `data-slot`, and extra classes by passing `className` and spreading props.
20
- *
21
- * This is a supported low-level layout primitive. The seam class helper stays
22
- * module-private (`lib/seam`, no public subpath export); consumers reach for
23
- * `SeamGrid` and its `surface` prop rather than the raw arbitrary Tailwind class
24
- * string.
25
- */
26
- declare function SeamGrid({ surface, className, ...props }: React.ComponentProps<"div"> & {
27
- surface?: SeamSurface;
28
- }): React.JSX.Element;
29
- export { SeamGrid };
30
- //# sourceMappingURL=seam-grid.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"seam-grid.d.ts","sourceRoot":"","sources":["../../src/components/seam-grid.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAG/B,OAAO,EAAoB,KAAK,WAAW,EAAE,MAAM,YAAY,CAAC;AAEhE;;;;;;;;;;;;;;;;;;;;;;GAsBG;AAEH,iBAAS,QAAQ,CAAC,EAChB,OAAO,EACP,SAAS,EACT,GAAG,KAAK,EACT,EAAE,KAAK,CAAC,cAAc,CAAC,KAAK,CAAC,GAAG;IAAE,OAAO,CAAC,EAAE,WAAW,CAAA;CAAE,qBAUzD;AAED,OAAO,EAAE,QAAQ,EAAE,CAAC"}
@@ -1,30 +0,0 @@
1
- import { jsx as _jsx } from "react/jsx-runtime";
2
- import { cn } from "../lib/utils.js";
3
- import { seamSurfaceClass } from "../lib/seam.js";
4
- /**
5
- * SeamGrid is the single owner of the "gap-as-seam" grid mechanics shared by the
6
- * bordered section grids (stats-band, testimonials, logo-band, and their siblings).
7
- *
8
- * SINGLE-OWNER SEAM: a `grid` with `gap-px` lets the panel paint one hairline at
9
- * every cell boundary while borderless, square-cornered cells fill on top, so no
10
- * coordinate ever carries two lines. The seam COLOUR is the only thing that flips
11
- * with `surface`, and that colour comes from `seamSurfaceClass` in the internal
12
- * `lib/seam` module, the one place the ink `color-mix(...)` string lives.
13
- *
14
- * `surface` is OPTIONAL. Pass `"canvas"` or `"ink"` (as the bordered proof bands
15
- * do) to mark the grid with `data-surface` and pick the seam colour. Omit it for
16
- * the plain canvas seam (`bg-border`) with NO `data-surface` marker, exactly the
17
- * single-owner `gap-px bg-border` grid the canvas-only section grids render
18
- * (faq, pricing, hero-split, bento, shift-band, action-band content, watch-it-work).
19
- * Token-only; no `dark:` styling. Callers keep their own column maps, heights,
20
- * `data-slot`, and extra classes by passing `className` and spreading props.
21
- *
22
- * This is a supported low-level layout primitive. The seam class helper stays
23
- * module-private (`lib/seam`, no public subpath export); consumers reach for
24
- * `SeamGrid` and its `surface` prop rather than the raw arbitrary Tailwind class
25
- * string.
26
- */
27
- function SeamGrid({ surface, className, ...props }) {
28
- return (_jsx("div", { "data-surface": surface, className: cn("grid gap-px", seamSurfaceClass(surface ?? "canvas"), className), ...props }));
29
- }
30
- export { SeamGrid };