@nadicodeai/ui 9.2.1 → 10.0.1
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 +1 -0
- package/README.md +4 -29
- package/dist/agent-orb.d.ts +3 -0
- package/dist/agent-orb.d.ts.map +1 -0
- package/dist/agent-orb.js +2 -0
- package/dist/assets/brand/aionlabs.svg +2 -0
- package/dist/assets/brand/airtable.svg +2 -0
- package/dist/assets/brand/apple.svg +2 -0
- package/dist/assets/brand/arcee.svg +2 -0
- package/dist/assets/brand/asana.svg +2 -0
- package/dist/assets/brand/atlassian.svg +2 -0
- package/dist/assets/brand/baidu.svg +2 -0
- package/dist/assets/brand/bytedance.svg +2 -0
- package/dist/assets/brand/claude.svg +2 -0
- package/dist/assets/brand/cohere.svg +2 -0
- package/dist/assets/brand/datadog.svg +2 -0
- package/dist/assets/brand/deepseek.svg +2 -0
- package/dist/assets/brand/discord.svg +2 -0
- package/dist/assets/brand/dolphin.svg +2 -0
- package/dist/assets/brand/dotsstudio.svg +2 -0
- package/dist/assets/brand/figma.svg +2 -0
- package/dist/assets/brand/gemini.svg +2 -0
- package/dist/assets/brand/github.svg +2 -0
- package/dist/assets/brand/gitlab.svg +2 -0
- package/dist/assets/brand/gmail.svg +2 -0
- package/dist/assets/brand/google-calendar.svg +2 -0
- package/dist/assets/brand/google-drive.svg +2 -0
- package/dist/assets/brand/grok.svg +2 -0
- package/dist/assets/brand/huggingface.svg +2 -0
- package/dist/assets/brand/ibm.svg +2 -0
- package/dist/assets/brand/inception.svg +2 -0
- package/dist/assets/brand/inclusionai.svg +2 -0
- package/dist/assets/brand/index.json +778 -0
- package/dist/assets/brand/inference.svg +2 -0
- package/dist/assets/brand/intercom.svg +2 -0
- package/dist/assets/brand/jira.svg +2 -0
- package/dist/assets/brand/kwaipilot.svg +2 -0
- package/dist/assets/brand/linear.svg +2 -0
- package/dist/assets/brand/linux.svg +2 -0
- package/dist/assets/brand/liquid.svg +2 -0
- package/dist/assets/brand/longcat.svg +2 -0
- package/dist/assets/brand/mattermost.svg +2 -0
- package/dist/assets/brand/meta.svg +2 -0
- package/dist/assets/brand/microsoft.svg +2 -0
- package/dist/assets/brand/minimax.svg +2 -0
- package/dist/assets/brand/mistral.svg +2 -0
- package/dist/assets/brand/moonshot.svg +2 -0
- package/dist/assets/brand/morph.svg +2 -0
- package/dist/assets/brand/n8n.svg +2 -0
- package/dist/assets/brand/netlify.svg +2 -0
- package/dist/assets/brand/nexagi.svg +2 -0
- package/dist/assets/brand/notion.svg +2 -0
- package/dist/assets/brand/nousresearch.svg +2 -0
- package/dist/assets/brand/nova.svg +2 -0
- package/dist/assets/brand/nvidia.svg +2 -0
- package/dist/assets/brand/openai.svg +2 -0
- package/dist/assets/brand/openrouter.svg +2 -0
- package/dist/assets/brand/paypal.svg +2 -0
- package/dist/assets/brand/perceptron.svg +2 -0
- package/dist/assets/brand/perplexity.svg +2 -0
- package/dist/assets/brand/poolside.svg +2 -0
- package/dist/assets/brand/postgresql.svg +2 -0
- package/dist/assets/brand/qwen.svg +2 -0
- package/dist/assets/brand/reka.svg +2 -0
- package/dist/assets/brand/relace.svg +2 -0
- package/dist/assets/brand/sakana.svg +2 -0
- package/dist/assets/brand/sentry.svg +2 -0
- package/dist/assets/brand/signal.svg +2 -0
- package/dist/assets/brand/slack.svg +2 -0
- package/dist/assets/brand/spotify.svg +2 -0
- package/dist/assets/brand/square.svg +2 -0
- package/dist/assets/brand/stepfun.svg +2 -0
- package/dist/assets/brand/stripe.svg +2 -0
- package/dist/assets/brand/supabase.svg +2 -0
- package/dist/assets/brand/telegram.svg +2 -0
- package/dist/assets/brand/tencent.svg +2 -0
- package/dist/assets/brand/the-drummer.svg +2 -0
- package/dist/assets/brand/thinkingmachines.svg +2 -0
- package/dist/assets/brand/todoist.svg +2 -0
- package/dist/assets/brand/unbiased.svg +2 -0
- package/dist/assets/brand/unreal-engine.svg +2 -0
- package/dist/assets/brand/upstage.svg +2 -0
- package/dist/assets/brand/vercel.svg +2 -0
- package/dist/assets/brand/webflow.svg +2 -0
- package/dist/assets/brand/whatsapp.svg +2 -0
- package/dist/assets/brand/windows.svg +2 -0
- package/dist/assets/brand/writer.svg +2 -0
- package/dist/assets/brand/xiaomimimo.svg +2 -0
- package/dist/assets/brand/youtube.svg +2 -0
- package/dist/assets/brand/yuanbao.svg +2 -0
- package/dist/assets/brand/zai.svg +2 -0
- package/dist/assets/brand/zapier.svg +2 -0
- package/dist/components/action-status.d.ts +5 -0
- package/dist/components/action-status.d.ts.map +1 -1
- package/dist/components/action-status.js +6 -2
- package/dist/components/agent-orb-appearance.d.ts +16 -2
- package/dist/components/agent-orb-appearance.d.ts.map +1 -1
- package/dist/components/agent-orb-appearance.js +28 -5
- package/dist/components/agent-orb.d.ts +6 -3
- package/dist/components/agent-orb.d.ts.map +1 -1
- package/dist/components/agent-orb.js +20 -7
- package/dist/components/app-mark-aliases.d.ts +16 -0
- package/dist/components/app-mark-aliases.d.ts.map +1 -0
- package/dist/components/app-mark-aliases.js +84 -0
- package/dist/components/app-mark.d.ts +4 -0
- package/dist/components/app-mark.d.ts.map +1 -1
- package/dist/components/app-mark.js +14 -31
- package/dist/components/automation-section.d.ts.map +1 -1
- package/dist/components/automation-section.js +2 -2
- package/dist/components/badge.js +1 -1
- package/dist/components/brand.d.ts +3 -2
- package/dist/components/brand.d.ts.map +1 -1
- package/dist/components/brand.js +18 -28
- package/dist/components/button.js +1 -1
- package/dist/components/collection-filters.js +2 -2
- package/dist/components/confirm-dialog.d.ts +3 -1
- package/dist/components/confirm-dialog.d.ts.map +1 -1
- package/dist/components/confirm-dialog.js +3 -3
- package/dist/components/drawer.js +5 -5
- package/dist/components/feedback-state.d.ts.map +1 -1
- package/dist/components/feedback-state.js +6 -9
- package/dist/components/footer.js +2 -2
- package/dist/components/house-icons.d.ts.map +1 -1
- package/dist/components/house-icons.js +9 -1
- package/dist/components/input-otp.js +1 -1
- package/dist/components/installer-shell.d.ts.map +1 -1
- package/dist/components/installer-shell.js +5 -6
- package/dist/components/navigation-menu.js +2 -2
- package/dist/components/pending-label.d.ts +15 -0
- package/dist/components/pending-label.d.ts.map +1 -0
- package/dist/components/pending-label.js +14 -0
- package/dist/components/sheet.js +1 -1
- package/dist/components/skeleton.d.ts +4 -0
- package/dist/components/skeleton.d.ts.map +1 -1
- package/dist/components/skeleton.js +5 -1
- package/dist/components/sonner.d.ts.map +1 -1
- package/dist/components/sonner.js +5 -2
- package/dist/components/table.js +1 -1
- package/dist/components/tabs.js +1 -1
- package/dist/components/toggle.js +1 -1
- package/dist/components/waiting-line.d.ts +30 -0
- package/dist/components/waiting-line.d.ts.map +1 -0
- package/dist/components/waiting-line.js +33 -0
- package/dist/eslint/rules/no-invalid-token-utility.js +1 -1
- package/dist/index.d.ts +3 -38
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +3 -38
- package/dist/internal/agent-orb-motion.d.ts +9 -1
- package/dist/internal/agent-orb-motion.d.ts.map +1 -1
- package/dist/internal/agent-orb-motion.js +23 -11
- package/dist/internal/agent-orb.d.ts +14 -1
- package/dist/internal/agent-orb.d.ts.map +1 -1
- package/dist/internal/agent-orb.js +78 -22
- package/dist/internal/assistant-ui/attachment.d.ts.map +1 -1
- package/dist/internal/assistant-ui/attachment.js +3 -2
- package/dist/internal/assistant-ui/reasoning.d.ts.map +1 -1
- package/dist/internal/assistant-ui/reasoning.js +4 -4
- package/dist/internal/assistant-ui/tool-fallback.d.ts.map +1 -1
- package/dist/internal/assistant-ui/tool-fallback.js +5 -4
- package/dist/internal/assistant-ui/tool-group.d.ts.map +1 -1
- package/dist/internal/assistant-ui/tool-group.js +4 -3
- package/dist/lib/motion.d.ts +18 -4
- package/dist/lib/motion.d.ts.map +1 -1
- package/dist/lib/motion.js +18 -4
- package/dist/styles/globals.css +0 -1
- package/docs/activity.md +99 -119
- package/docs/agent-orb.md +71 -20
- package/docs/component-classification.md +4 -4
- package/docs/consuming-cross-repo.md +8 -10
- package/docs/contract.md +10 -9
- package/docs/icon-assets.md +106 -0
- package/docs/migration/10.0.0.md +144 -0
- package/package.json +8 -7
- package/dist/activity.d.ts +0 -2
- package/dist/activity.d.ts.map +0 -1
- package/dist/activity.js +0 -2
- package/dist/components/action-band.d.ts +0 -12
- package/dist/components/action-band.d.ts.map +0 -1
- package/dist/components/action-band.js +0 -48
- package/dist/components/activity-orb.d.ts +0 -21
- package/dist/components/activity-orb.d.ts.map +0 -1
- package/dist/components/activity-orb.js +0 -26
- package/dist/components/benefits-bento.d.ts +0 -15
- package/dist/components/benefits-bento.d.ts.map +0 -1
- package/dist/components/benefits-bento.js +0 -6
- package/dist/components/bento.d.ts +0 -39
- package/dist/components/bento.d.ts.map +0 -1
- package/dist/components/bento.js +0 -70
- package/dist/components/card-marketing.d.ts +0 -30
- package/dist/components/card-marketing.d.ts.map +0 -1
- package/dist/components/card-marketing.js +0 -48
- package/dist/components/code-editor-mockup.d.ts +0 -25
- package/dist/components/code-editor-mockup.d.ts.map +0 -1
- package/dist/components/code-editor-mockup.js +0 -47
- package/dist/components/contact.d.ts +0 -32
- package/dist/components/contact.d.ts.map +0 -1
- package/dist/components/contact.js +0 -46
- package/dist/components/faq-item.d.ts +0 -25
- package/dist/components/faq-item.d.ts.map +0 -1
- package/dist/components/faq-item.js +0 -25
- package/dist/components/faq.d.ts +0 -20
- package/dist/components/faq.d.ts.map +0 -1
- package/dist/components/faq.js +0 -23
- package/dist/components/feature-grid.d.ts +0 -23
- package/dist/components/feature-grid.d.ts.map +0 -1
- package/dist/components/feature-grid.js +0 -33
- package/dist/components/feature-rows.d.ts +0 -23
- package/dist/components/feature-rows.d.ts.map +0 -1
- package/dist/components/feature-rows.js +0 -27
- package/dist/components/glyph-spinner.d.ts +0 -10
- package/dist/components/glyph-spinner.d.ts.map +0 -1
- package/dist/components/glyph-spinner.js +0 -101
- package/dist/components/hero-split.d.ts +0 -23
- package/dist/components/hero-split.d.ts.map +0 -1
- package/dist/components/hero-split.js +0 -35
- package/dist/components/hero.d.ts +0 -28
- package/dist/components/hero.d.ts.map +0 -1
- package/dist/components/hero.js +0 -45
- package/dist/components/integration-flow.d.ts +0 -36
- package/dist/components/integration-flow.d.ts.map +0 -1
- package/dist/components/integration-flow.js +0 -36
- package/dist/components/live-demo.d.ts +0 -31
- package/dist/components/live-demo.d.ts.map +0 -1
- package/dist/components/live-demo.js +0 -30
- package/dist/components/logo-band.d.ts +0 -33
- package/dist/components/logo-band.d.ts.map +0 -1
- package/dist/components/logo-band.js +0 -49
- package/dist/components/logo-tile.d.ts +0 -21
- package/dist/components/logo-tile.d.ts.map +0 -1
- package/dist/components/logo-tile.js +0 -28
- package/dist/components/media-mount.d.ts +0 -13
- package/dist/components/media-mount.d.ts.map +0 -1
- package/dist/components/media-mount.js +0 -15
- package/dist/components/nav-bar.d.ts +0 -24
- package/dist/components/nav-bar.d.ts.map +0 -1
- package/dist/components/nav-bar.js +0 -35
- package/dist/components/newsletter.d.ts +0 -24
- package/dist/components/newsletter.d.ts.map +0 -1
- package/dist/components/newsletter.js +0 -31
- package/dist/components/page-frame.d.ts +0 -30
- package/dist/components/page-frame.d.ts.map +0 -1
- package/dist/components/page-frame.js +0 -30
- package/dist/components/pricing-card.d.ts +0 -30
- package/dist/components/pricing-card.d.ts.map +0 -1
- package/dist/components/pricing-card.js +0 -44
- package/dist/components/pricing.d.ts +0 -25
- package/dist/components/pricing.d.ts.map +0 -1
- package/dist/components/pricing.js +0 -11
- package/dist/components/proof-slot.d.ts +0 -8
- package/dist/components/proof-slot.d.ts.map +0 -1
- package/dist/components/proof-slot.js +0 -8
- package/dist/components/quote-card.d.ts +0 -31
- package/dist/components/quote-card.d.ts.map +0 -1
- package/dist/components/quote-card.js +0 -48
- package/dist/components/seam-grid.d.ts +0 -30
- package/dist/components/seam-grid.d.ts.map +0 -1
- package/dist/components/seam-grid.js +0 -30
- package/dist/components/section-intro.d.ts +0 -18
- package/dist/components/section-intro.d.ts.map +0 -1
- package/dist/components/section-intro.js +0 -22
- package/dist/components/security-grid.d.ts +0 -25
- package/dist/components/security-grid.d.ts.map +0 -1
- package/dist/components/security-grid.js +0 -28
- package/dist/components/shift-band.d.ts +0 -14
- package/dist/components/shift-band.d.ts.map +0 -1
- package/dist/components/shift-band.js +0 -11
- package/dist/components/spinner.d.ts +0 -3
- package/dist/components/spinner.d.ts.map +0 -1
- package/dist/components/spinner.js +0 -7
- package/dist/components/statement.d.ts +0 -32
- package/dist/components/statement.d.ts.map +0 -1
- package/dist/components/statement.js +0 -40
- package/dist/components/steps.d.ts +0 -34
- package/dist/components/steps.d.ts.map +0 -1
- package/dist/components/steps.js +0 -40
- package/dist/components/team-grid.d.ts +0 -27
- package/dist/components/team-grid.d.ts.map +0 -1
- package/dist/components/team-grid.js +0 -30
- package/dist/components/testimonials.d.ts +0 -48
- package/dist/components/testimonials.d.ts.map +0 -1
- package/dist/components/testimonials.js +0 -58
- package/dist/components/texture-strip.d.ts +0 -22
- package/dist/components/texture-strip.d.ts.map +0 -1
- package/dist/components/texture-strip.js +0 -32
- package/dist/components/use-case-bento.d.ts +0 -13
- package/dist/components/use-case-bento.d.ts.map +0 -1
- package/dist/components/use-case-bento.js +0 -8
- package/dist/internal/activity-orb.d.ts +0 -27
- package/dist/internal/activity-orb.d.ts.map +0 -1
- package/dist/internal/activity-orb.js +0 -150
- package/dist/lib/seam.d.ts +0 -29
- package/dist/lib/seam.d.ts.map +0 -1
- package/dist/lib/seam.js +0 -30
|
@@ -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-title-md max-w-[26ch] text-foreground", children: quote }), attribution ? (_jsx("figcaption", { className: "nc-type-caption-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 };
|
|
@@ -1,18 +0,0 @@
|
|
|
1
|
-
import * as React from "react";
|
|
2
|
-
/**
|
|
3
|
-
* section-intro — standard homepage section header.
|
|
4
|
-
*
|
|
5
|
-
* Replaces repeated page-local intro cells. It is intentionally small: the page
|
|
6
|
-
* supplies the words, the component owns measure, alignment, and the panel cell
|
|
7
|
-
* shell that sits inside a page row.
|
|
8
|
-
*/
|
|
9
|
-
declare function SectionIntro({ className, align, ...props }: React.ComponentProps<"div"> & {
|
|
10
|
-
align?: "center" | "start";
|
|
11
|
-
}): React.JSX.Element;
|
|
12
|
-
declare function SectionIntroKicker({ className, ...props }: React.ComponentProps<"p">): React.JSX.Element;
|
|
13
|
-
declare function SectionIntroTitle({ className, size, ...props }: React.ComponentProps<"h2"> & {
|
|
14
|
-
size?: "md" | "lg";
|
|
15
|
-
}): React.JSX.Element;
|
|
16
|
-
declare function SectionIntroLead({ className, ...props }: React.ComponentProps<"p">): React.JSX.Element;
|
|
17
|
-
export { SectionIntro, SectionIntroKicker, SectionIntroTitle, SectionIntroLead };
|
|
18
|
-
//# sourceMappingURL=section-intro.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"section-intro.d.ts","sourceRoot":"","sources":["../../src/components/section-intro.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAI/B;;;;;;GAMG;AAEH,iBAAS,YAAY,CAAC,EACpB,SAAS,EACT,KAAgB,EAChB,GAAG,KAAK,EACT,EAAE,KAAK,CAAC,cAAc,CAAC,KAAK,CAAC,GAAG;IAAE,KAAK,CAAC,EAAE,QAAQ,GAAG,OAAO,CAAA;CAAE,qBAc9D;AAED,iBAAS,kBAAkB,CAAC,EAAE,SAAS,EAAE,GAAG,KAAK,EAAE,EAAE,KAAK,CAAC,cAAc,CAAC,GAAG,CAAC,qBAQ7E;AAED,iBAAS,iBAAiB,CAAC,EACzB,SAAS,EACT,IAAW,EACX,GAAG,KAAK,EACT,EAAE,KAAK,CAAC,cAAc,CAAC,IAAI,CAAC,GAAG;IAAE,IAAI,CAAC,EAAE,IAAI,GAAG,IAAI,CAAA;CAAE,qBAYrD;AAED,iBAAS,gBAAgB,CAAC,EAAE,SAAS,EAAE,GAAG,KAAK,EAAE,EAAE,KAAK,CAAC,cAAc,CAAC,GAAG,CAAC,qBAQ3E;AAED,OAAO,EAAE,YAAY,EAAE,kBAAkB,EAAE,iBAAiB,EAAE,gBAAgB,EAAE,CAAC"}
|
|
@@ -1,22 +0,0 @@
|
|
|
1
|
-
import { jsx as _jsx } from "react/jsx-runtime";
|
|
2
|
-
import { cn } from "../lib/utils.js";
|
|
3
|
-
/**
|
|
4
|
-
* section-intro — standard homepage section header.
|
|
5
|
-
*
|
|
6
|
-
* Replaces repeated page-local intro cells. It is intentionally small: the page
|
|
7
|
-
* supplies the words, the component owns measure, alignment, and the panel cell
|
|
8
|
-
* shell that sits inside a page row.
|
|
9
|
-
*/
|
|
10
|
-
function SectionIntro({ className, align = "center", ...props }) {
|
|
11
|
-
return (_jsx("div", { "data-slot": "section-intro", "data-align": align, className: cn("nc-panel-cell", align === "center" && "place-items-center text-center", align === "start" && "place-items-start text-left", className), ...props }));
|
|
12
|
-
}
|
|
13
|
-
function SectionIntroKicker({ className, ...props }) {
|
|
14
|
-
return (_jsx("p", { "data-slot": "section-intro-kicker", className: cn("nc-type-caption-mono text-muted-foreground uppercase", className), ...props }));
|
|
15
|
-
}
|
|
16
|
-
function SectionIntroTitle({ className, size = "lg", ...props }) {
|
|
17
|
-
return (_jsx("h2", { "data-slot": "section-intro-title", className: cn(size === "lg" ? "nc-type-title-lg" : "nc-type-title-md", "mx-auto text-foreground", className), ...props }));
|
|
18
|
-
}
|
|
19
|
-
function SectionIntroLead({ className, ...props }) {
|
|
20
|
-
return (_jsx("p", { "data-slot": "section-intro-lead", className: cn("nc-type-body-md mx-auto max-w-[64ch] text-[var(--nc-body)]", className), ...props }));
|
|
21
|
-
}
|
|
22
|
-
export { SectionIntro, SectionIntroKicker, SectionIntroTitle, SectionIntroLead };
|
|
@@ -1,25 +0,0 @@
|
|
|
1
|
-
import * as React from "react";
|
|
2
|
-
/**
|
|
3
|
-
* security-grid — the always-dark control/data grid (V5 B14).
|
|
4
|
-
*
|
|
5
|
-
* A bordered 4-cell grid on the night surface: each cell carries a bordered
|
|
6
|
-
* glyph box (icon slot), a title, and a body line. The dividers are owned once
|
|
7
|
-
* by `SeamGrid` (gap-as-seam, `bg-border`); cells are borderless fills.
|
|
8
|
-
*
|
|
9
|
-
* ALWAYS-DARK: this section renders dark regardless of the page theme. Rather
|
|
10
|
-
* than a `dark:` utility (forbidden) it sets the `dark` ancestor class on its
|
|
11
|
-
* own root, so every semantic role it composes (`bg-border` seam, `bg-card`
|
|
12
|
-
* fill, `text-foreground`, `text-muted-foreground`, `text-primary`) resolves to
|
|
13
|
-
* its dark value. Only the standard shadcn role vars are used. Token-only.
|
|
14
|
-
*/
|
|
15
|
-
declare const columnClasses: Record<number, string>;
|
|
16
|
-
declare function SecurityGrid({ className, columns, ...props }: React.ComponentProps<"div"> & {
|
|
17
|
-
columns?: keyof typeof columnClasses;
|
|
18
|
-
}): React.JSX.Element;
|
|
19
|
-
declare function SecurityCell({ className, icon, title, body, ...props }: React.ComponentProps<"div"> & {
|
|
20
|
-
icon?: React.ReactNode;
|
|
21
|
-
title: string;
|
|
22
|
-
body: string;
|
|
23
|
-
}): React.JSX.Element;
|
|
24
|
-
export { SecurityGrid, SecurityCell };
|
|
25
|
-
//# sourceMappingURL=security-grid.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"security-grid.d.ts","sourceRoot":"","sources":["../../src/components/security-grid.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAK/B;;;;;;;;;;;;GAYG;AAEH,QAAA,MAAM,aAAa,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAIzC,CAAC;AAEF,iBAAS,YAAY,CAAC,EACpB,SAAS,EACT,OAAW,EACX,GAAG,KAAK,EACT,EAAE,KAAK,CAAC,cAAc,CAAC,KAAK,CAAC,GAAG;IAAE,OAAO,CAAC,EAAE,MAAM,OAAO,aAAa,CAAA;CAAE,qBAUxE;AAED,iBAAS,YAAY,CAAC,EACpB,SAAS,EACT,IAAI,EACJ,KAAK,EACL,IAAI,EACJ,GAAG,KAAK,EACT,EAAE,KAAK,CAAC,cAAc,CAAC,KAAK,CAAC,GAAG;IAC/B,IAAI,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;IACvB,KAAK,EAAE,MAAM,CAAC;IACd,IAAI,EAAE,MAAM,CAAC;CACd,qBAsBA;AAED,OAAO,EAAE,YAAY,EAAE,YAAY,EAAE,CAAC"}
|
|
@@ -1,28 +0,0 @@
|
|
|
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
|
-
* security-grid — the always-dark control/data grid (V5 B14).
|
|
6
|
-
*
|
|
7
|
-
* A bordered 4-cell grid on the night surface: each cell carries a bordered
|
|
8
|
-
* glyph box (icon slot), a title, and a body line. The dividers are owned once
|
|
9
|
-
* by `SeamGrid` (gap-as-seam, `bg-border`); cells are borderless fills.
|
|
10
|
-
*
|
|
11
|
-
* ALWAYS-DARK: this section renders dark regardless of the page theme. Rather
|
|
12
|
-
* than a `dark:` utility (forbidden) it sets the `dark` ancestor class on its
|
|
13
|
-
* own root, so every semantic role it composes (`bg-border` seam, `bg-card`
|
|
14
|
-
* fill, `text-foreground`, `text-muted-foreground`, `text-primary`) resolves to
|
|
15
|
-
* its dark value. Only the standard shadcn role vars are used. Token-only.
|
|
16
|
-
*/
|
|
17
|
-
const columnClasses = {
|
|
18
|
-
2: "grid-cols-1 sm:grid-cols-2",
|
|
19
|
-
3: "grid-cols-1 sm:grid-cols-3",
|
|
20
|
-
4: "grid-cols-2 lg:grid-cols-4",
|
|
21
|
-
};
|
|
22
|
-
function SecurityGrid({ className, columns = 4, ...props }) {
|
|
23
|
-
return (_jsx(SeamGrid, { "data-slot": "security-grid", className: cn("dark", columnClasses[columns], className), ...props }));
|
|
24
|
-
}
|
|
25
|
-
function SecurityCell({ className, icon, title, body, ...props }) {
|
|
26
|
-
return (_jsxs("div", { "data-slot": "security-cell", className: cn("nc-panel-cell content-start bg-card", className), ...props, children: [_jsx("span", { "data-slot": "security-cell-glyph", className: "grid size-[34px] place-items-center border border-border text-primary", "aria-hidden": icon ? undefined : true, children: icon }), _jsx("h3", { "data-slot": "security-cell-title", className: "nc-type-body-md-strong text-foreground", children: title }), _jsx("p", { "data-slot": "security-cell-body", className: "nc-type-body-sm text-muted-foreground", children: body })] }));
|
|
27
|
-
}
|
|
28
|
-
export { SecurityGrid, SecurityCell };
|
|
@@ -1,14 +0,0 @@
|
|
|
1
|
-
import * as React from "react";
|
|
2
|
-
type ShiftBandProof = {
|
|
3
|
-
title: string;
|
|
4
|
-
body: string;
|
|
5
|
-
};
|
|
6
|
-
declare function ShiftBand({ kicker, title, children, proofs, className, ...props }: React.ComponentProps<"div"> & {
|
|
7
|
-
kicker: string;
|
|
8
|
-
title: string;
|
|
9
|
-
proofs: ShiftBandProof[];
|
|
10
|
-
}): React.JSX.Element;
|
|
11
|
-
declare function ShiftBandLead({ className, ...props }: React.ComponentProps<"p">): React.JSX.Element;
|
|
12
|
-
export { ShiftBand, ShiftBandLead };
|
|
13
|
-
export type { ShiftBandProof };
|
|
14
|
-
//# sourceMappingURL=shift-band.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"shift-band.d.ts","sourceRoot":"","sources":["../../src/components/shift-band.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAY/B,KAAK,cAAc,GAAG;IACpB,KAAK,EAAE,MAAM,CAAC;IACd,IAAI,EAAE,MAAM,CAAC;CACd,CAAC;AAEF,iBAAS,SAAS,CAAC,EACjB,MAAM,EACN,KAAK,EACL,QAAQ,EACR,MAAM,EACN,SAAS,EACT,GAAG,KAAK,EACT,EAAE,KAAK,CAAC,cAAc,CAAC,KAAK,CAAC,GAAG;IAC/B,MAAM,EAAE,MAAM,CAAC;IACf,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,cAAc,EAAE,CAAC;CAC1B,qBAoBA;AAED,iBAAS,aAAa,CAAC,EAAE,SAAS,EAAE,GAAG,KAAK,EAAE,EAAE,KAAK,CAAC,cAAc,CAAC,GAAG,CAAC,qBAExE;AAED,OAAO,EAAE,SAAS,EAAE,aAAa,EAAE,CAAC;AACpC,YAAY,EAAE,cAAc,EAAE,CAAC"}
|
|
@@ -1,11 +0,0 @@
|
|
|
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
|
-
import { SectionIntro, SectionIntroKicker, SectionIntroLead, SectionIntroTitle, } from "./section-intro.js";
|
|
5
|
-
function ShiftBand({ kicker, title, children, proofs, className, ...props }) {
|
|
6
|
-
return (_jsxs(SeamGrid, { "data-slot": "shift-band", className: className, ...props, children: [_jsxs(SectionIntro, { className: "justify-items-center text-center", children: [_jsx(SectionIntroKicker, { children: kicker }), _jsx(SectionIntroTitle, { className: "max-w-[18ch] text-balance text-center", children: title }), children] }), _jsx(SeamGrid, { className: "md:grid-cols-4", children: proofs.map((proof) => (_jsxs("div", { className: "nc-panel-cell bg-card", children: [_jsx("h3", { className: "nc-type-body-md-strong text-foreground", children: proof.title }), _jsx("p", { className: "nc-type-body-sm text-[var(--nc-body)]", children: proof.body })] }, proof.title))) })] }));
|
|
7
|
-
}
|
|
8
|
-
function ShiftBandLead({ className, ...props }) {
|
|
9
|
-
return _jsx(SectionIntroLead, { className: cn("text-balance text-center", className), ...props });
|
|
10
|
-
}
|
|
11
|
-
export { ShiftBand, ShiftBandLead };
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"spinner.d.ts","sourceRoot":"","sources":["../../src/components/spinner.tsx"],"names":[],"mappings":"AAGA,iBAAS,OAAO,CAAC,EAAE,SAAS,EAAE,GAAG,KAAK,EAAE,EAAE,KAAK,CAAC,cAAc,CAAC,KAAK,CAAC,+BAQpE;AAED,OAAO,EAAE,OAAO,EAAE,CAAC"}
|
|
@@ -1,7 +0,0 @@
|
|
|
1
|
-
import { jsx as _jsx } from "react/jsx-runtime";
|
|
2
|
-
import { cn } from "../lib/utils.js";
|
|
3
|
-
import { Loader2Icon } from "lucide-react";
|
|
4
|
-
function Spinner({ className, ...props }) {
|
|
5
|
-
return (_jsx(Loader2Icon, { "data-slot": "spinner", className: cn("size-4 motion-safe:animate-spin motion-reduce:animate-pulse", className), ...props }));
|
|
6
|
-
}
|
|
7
|
-
export { Spinner };
|
|
@@ -1,32 +0,0 @@
|
|
|
1
|
-
import * as React from "react";
|
|
2
|
-
/**
|
|
3
|
-
* statement — a single left-aligned editorial statement block (V5 B04).
|
|
4
|
-
*
|
|
5
|
-
* An indexed mono eyebrow, one large two-tone headline (a lead clause in the
|
|
6
|
-
* foreground role and a continuation clause dropped to the muted role through the
|
|
7
|
-
* `StatementTail` sub-slot), and a body paragraph. No word-split reveal in this
|
|
8
|
-
* pass — the headline is static structure.
|
|
9
|
-
*
|
|
10
|
-
* Compound, slot-driven: the caller supplies every string, this owns measure,
|
|
11
|
-
* alignment, and the two-tone role split. Token-only; no `dark:` styling.
|
|
12
|
-
*/
|
|
13
|
-
declare function Statement({ className, ...props }: React.ComponentProps<"div">): React.JSX.Element;
|
|
14
|
-
/**
|
|
15
|
-
* StatementEyebrow — mono eyebrow with an optional `[NN]` index chip in the
|
|
16
|
-
* canonical link-deep role (deep verde on light / bright verde on dark). The chip
|
|
17
|
-
* renders only when `index` is set.
|
|
18
|
-
*/
|
|
19
|
-
declare function StatementEyebrow({ index, children, className, ...props }: React.ComponentProps<"p"> & {
|
|
20
|
-
index?: React.ReactNode;
|
|
21
|
-
}): React.JSX.Element;
|
|
22
|
-
/**
|
|
23
|
-
* StatementTitle — the large headline. Its lead clause reads in the foreground
|
|
24
|
-
* role; wrap the continuation clause in `StatementTail` to drop it to muted.
|
|
25
|
-
*/
|
|
26
|
-
declare function StatementTitle({ className, ...props }: React.ComponentProps<"h2">): React.JSX.Element;
|
|
27
|
-
/** StatementTail — the muted continuation clause inside `StatementTitle` (V5 `.t2`). */
|
|
28
|
-
declare function StatementTail({ className, ...props }: React.ComponentProps<"span">): React.JSX.Element;
|
|
29
|
-
/** StatementBody — the supporting paragraph under the headline. */
|
|
30
|
-
declare function StatementBody({ className, ...props }: React.ComponentProps<"p">): React.JSX.Element;
|
|
31
|
-
export { Statement, StatementEyebrow, StatementTitle, StatementTail, StatementBody };
|
|
32
|
-
//# sourceMappingURL=statement.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"statement.d.ts","sourceRoot":"","sources":["../../src/components/statement.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAI/B;;;;;;;;;;GAUG;AAEH,iBAAS,SAAS,CAAC,EAAE,SAAS,EAAE,GAAG,KAAK,EAAE,EAAE,KAAK,CAAC,cAAc,CAAC,KAAK,CAAC,qBAQtE;AAED;;;;GAIG;AACH,iBAAS,gBAAgB,CAAC,EACxB,KAAK,EACL,QAAQ,EACR,SAAS,EACT,GAAG,KAAK,EACT,EAAE,KAAK,CAAC,cAAc,CAAC,GAAG,CAAC,GAAG;IAAE,KAAK,CAAC,EAAE,KAAK,CAAC,SAAS,CAAA;CAAE,qBAkBzD;AAED;;;GAGG;AACH,iBAAS,cAAc,CAAC,EAAE,SAAS,EAAE,GAAG,KAAK,EAAE,EAAE,KAAK,CAAC,cAAc,CAAC,IAAI,CAAC,qBAQ1E;AAED,wFAAwF;AACxF,iBAAS,aAAa,CAAC,EAAE,SAAS,EAAE,GAAG,KAAK,EAAE,EAAE,KAAK,CAAC,cAAc,CAAC,MAAM,CAAC,qBAQ3E;AAED,mEAAmE;AACnE,iBAAS,aAAa,CAAC,EAAE,SAAS,EAAE,GAAG,KAAK,EAAE,EAAE,KAAK,CAAC,cAAc,CAAC,GAAG,CAAC,qBAQxE;AAED,OAAO,EAAE,SAAS,EAAE,gBAAgB,EAAE,cAAc,EAAE,aAAa,EAAE,aAAa,EAAE,CAAC"}
|
|
@@ -1,40 +0,0 @@
|
|
|
1
|
-
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
2
|
-
import { cn } from "../lib/utils.js";
|
|
3
|
-
/**
|
|
4
|
-
* statement — a single left-aligned editorial statement block (V5 B04).
|
|
5
|
-
*
|
|
6
|
-
* An indexed mono eyebrow, one large two-tone headline (a lead clause in the
|
|
7
|
-
* foreground role and a continuation clause dropped to the muted role through the
|
|
8
|
-
* `StatementTail` sub-slot), and a body paragraph. No word-split reveal in this
|
|
9
|
-
* pass — the headline is static structure.
|
|
10
|
-
*
|
|
11
|
-
* Compound, slot-driven: the caller supplies every string, this owns measure,
|
|
12
|
-
* alignment, and the two-tone role split. Token-only; no `dark:` styling.
|
|
13
|
-
*/
|
|
14
|
-
function Statement({ className, ...props }) {
|
|
15
|
-
return (_jsx("div", { "data-slot": "statement", className: cn("grid justify-items-start gap-6 text-left", className), ...props }));
|
|
16
|
-
}
|
|
17
|
-
/**
|
|
18
|
-
* StatementEyebrow — mono eyebrow with an optional `[NN]` index chip in the
|
|
19
|
-
* canonical link-deep role (deep verde on light / bright verde on dark). The chip
|
|
20
|
-
* renders only when `index` is set.
|
|
21
|
-
*/
|
|
22
|
-
function StatementEyebrow({ index, children, className, ...props }) {
|
|
23
|
-
return (_jsxs("p", { "data-slot": "statement-eyebrow", className: cn("nc-type-caption-mono flex items-center gap-2 uppercase text-muted-foreground", className), ...props, children: [index != null ? (_jsxs("span", { "data-slot": "statement-eyebrow-index", className: "text-[var(--nc-link-deep)]", children: ["[", index, "]"] })) : null, children] }));
|
|
24
|
-
}
|
|
25
|
-
/**
|
|
26
|
-
* StatementTitle — the large headline. Its lead clause reads in the foreground
|
|
27
|
-
* role; wrap the continuation clause in `StatementTail` to drop it to muted.
|
|
28
|
-
*/
|
|
29
|
-
function StatementTitle({ className, ...props }) {
|
|
30
|
-
return (_jsx("h2", { "data-slot": "statement-title", className: cn("nc-type-title-lg max-w-[24ch] text-foreground", className), ...props }));
|
|
31
|
-
}
|
|
32
|
-
/** StatementTail — the muted continuation clause inside `StatementTitle` (V5 `.t2`). */
|
|
33
|
-
function StatementTail({ className, ...props }) {
|
|
34
|
-
return (_jsx("span", { "data-slot": "statement-tail", className: cn("text-muted-foreground", className), ...props }));
|
|
35
|
-
}
|
|
36
|
-
/** StatementBody — the supporting paragraph under the headline. */
|
|
37
|
-
function StatementBody({ className, ...props }) {
|
|
38
|
-
return (_jsx("p", { "data-slot": "statement-body", className: cn("nc-type-body-md max-w-[52ch] text-muted-foreground", className), ...props }));
|
|
39
|
-
}
|
|
40
|
-
export { Statement, StatementEyebrow, StatementTitle, StatementTail, StatementBody };
|
|
@@ -1,34 +0,0 @@
|
|
|
1
|
-
import * as React from "react";
|
|
2
|
-
/**
|
|
3
|
-
* steps — the "how it works" station rail (V5 B09).
|
|
4
|
-
*
|
|
5
|
-
* An eyebrow + statement head sits above a STATIC horizontal rail (a single
|
|
6
|
-
* filled foreground rule — the walking-dot progress animation is intentionally
|
|
7
|
-
* out of scope this pass) and a row of numbered stations. Each `Step` carries a
|
|
8
|
-
* square brand marker, a mono index, a title, an optional mono price line, and a
|
|
9
|
-
* body. `StepsBranch` is a dashed-left callout rendered below the station row.
|
|
10
|
-
*
|
|
11
|
-
* This is one of only two surfaces where prices may appear (the pricing section
|
|
12
|
-
* is the other), so the `price` line is a first-class, opt-in slot rather than a
|
|
13
|
-
* generic field. Copy is props-driven: absent parts render nothing.
|
|
14
|
-
*
|
|
15
|
-
* Light-surface composition; it inherits the page theme and sets no dark root.
|
|
16
|
-
* Token-only; no `dark:` styling.
|
|
17
|
-
*/
|
|
18
|
-
declare function Steps({ kicker, title, children, className, ...props }: React.ComponentProps<"section"> & {
|
|
19
|
-
kicker?: string;
|
|
20
|
-
title?: string;
|
|
21
|
-
}): React.JSX.Element;
|
|
22
|
-
declare function Step({ index, title, price, body, className, children, ...props }: React.ComponentProps<"div"> & {
|
|
23
|
-
index?: string;
|
|
24
|
-
title?: string;
|
|
25
|
-
price?: string;
|
|
26
|
-
body?: React.ReactNode;
|
|
27
|
-
}): React.JSX.Element;
|
|
28
|
-
declare function StepsBranch({ label, title, body, className, children, ...props }: React.ComponentProps<"aside"> & {
|
|
29
|
-
label?: string;
|
|
30
|
-
title?: string;
|
|
31
|
-
body?: React.ReactNode;
|
|
32
|
-
}): React.JSX.Element;
|
|
33
|
-
export { Steps, Step, StepsBranch };
|
|
34
|
-
//# sourceMappingURL=steps.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"steps.d.ts","sourceRoot":"","sources":["../../src/components/steps.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAK/B;;;;;;;;;;;;;;;GAeG;AAEH,iBAAS,KAAK,CAAC,EACb,MAAM,EACN,KAAK,EACL,QAAQ,EACR,SAAS,EACT,GAAG,KAAK,EACT,EAAE,KAAK,CAAC,cAAc,CAAC,SAAS,CAAC,GAAG;IACnC,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB,qBAsCA;AAED,iBAAS,IAAI,CAAC,EACZ,KAAK,EACL,KAAK,EACL,KAAK,EACL,IAAI,EACJ,SAAS,EACT,QAAQ,EACR,GAAG,KAAK,EACT,EAAE,KAAK,CAAC,cAAc,CAAC,KAAK,CAAC,GAAG;IAC/B,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,IAAI,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;CACxB,qBAqCA;AAED,iBAAS,WAAW,CAAC,EACnB,KAAK,EACL,KAAK,EACL,IAAI,EACJ,SAAS,EACT,QAAQ,EACR,GAAG,KAAK,EACT,EAAE,KAAK,CAAC,cAAc,CAAC,OAAO,CAAC,GAAG;IACjC,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,IAAI,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;CACxB,qBA+BA;AAED,OAAO,EAAE,KAAK,EAAE,IAAI,EAAE,WAAW,EAAE,CAAC"}
|
package/dist/components/steps.js
DELETED
|
@@ -1,40 +0,0 @@
|
|
|
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 };
|
|
@@ -1,27 +0,0 @@
|
|
|
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
|