@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
package/dist/components/hero.js
DELETED
|
@@ -1,45 +0,0 @@
|
|
|
1
|
-
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
2
|
-
import { cn } from "../lib/utils.js";
|
|
3
|
-
/**
|
|
4
|
-
* hero — the full-viewport, always-dark page-opening hero (V5 · B02).
|
|
5
|
-
*
|
|
6
|
-
* A left-pinned copy column (kicker with an accent bar, poster headline, lead, and a
|
|
7
|
-
* two-CTA row) over a right-anchored visual slot. The hero is ALWAYS dark, so the
|
|
8
|
-
* root carries its own `dark` ancestor class and resolves every colour from the
|
|
9
|
-
* semantic roles that state each element's purpose (`bg-background`,
|
|
10
|
-
* `text-foreground`, `text-muted-foreground`, `bg-primary`, `border-border`).
|
|
11
|
-
*
|
|
12
|
-
* STUBBED VISUAL: `HeroVisual` is a clean static slot the consumer fills with an
|
|
13
|
-
* image or inline SVG (the founder-approved WebGL Duomo particle field is out of
|
|
14
|
-
* scope for this pass). Absent content, it renders only the dark surface behind the
|
|
15
|
-
* copy — no canvas, no WebGL, no motion.
|
|
16
|
-
*
|
|
17
|
-
* The copy parts are typed presentational wrappers; the consumer supplies the words
|
|
18
|
-
* and drops `Button`s into `HeroActions`. Token-only; the root sets its own `dark`
|
|
19
|
-
* class (an accepted ancestor-class remap), never `dark:` utilities.
|
|
20
|
-
*/
|
|
21
|
-
function Hero({ className, ...props }) {
|
|
22
|
-
return (_jsx("section", { "data-slot": "hero", className: cn("dark relative isolate min-h-[max(640px,100svh)] overflow-hidden bg-background text-foreground", className), ...props }));
|
|
23
|
-
}
|
|
24
|
-
function HeroVisual({ className, ...props }) {
|
|
25
|
-
return (_jsx("div", { "data-slot": "hero-visual", "aria-hidden": "true", className: cn(
|
|
26
|
-
// Right-anchored static plate. Flush mount: consumer media fills it; empty,
|
|
27
|
-
// it is just the dark surface. This is the stub slot for the WebGL field.
|
|
28
|
-
"pointer-events-none absolute inset-y-0 right-0 z-0 hidden w-[62%] overflow-hidden border-l border-border/60 sm:block", "[&_img]:size-full [&_img]:object-cover [&_svg]:size-full", className), ...props }));
|
|
29
|
-
}
|
|
30
|
-
function HeroBody({ className, ...props }) {
|
|
31
|
-
return (_jsx("div", { "data-slot": "hero-body", className: cn("relative z-10 mx-auto flex min-h-[inherit] w-full max-w-[1200px] flex-col items-start justify-center gap-6 px-[clamp(24px,5vw,64px)] py-[clamp(96px,12vw,120px)]", className), ...props }));
|
|
32
|
-
}
|
|
33
|
-
function HeroKicker({ className, children, ...props }) {
|
|
34
|
-
return (_jsxs("p", { "data-slot": "hero-kicker", className: cn("nc-type-caption-mono flex items-center gap-3 uppercase text-muted-foreground", className), ...props, children: [_jsx("span", { "data-slot": "hero-kicker-bar", "aria-hidden": "true", className: "h-0.5 w-8 bg-primary" }), children] }));
|
|
35
|
-
}
|
|
36
|
-
function HeroTitle({ className, ...props }) {
|
|
37
|
-
return (_jsx("h1", { "data-slot": "hero-title", className: cn("nc-type-display-lg max-w-[16ch] text-balance text-foreground", className), ...props }));
|
|
38
|
-
}
|
|
39
|
-
function HeroLead({ className, ...props }) {
|
|
40
|
-
return (_jsx("p", { "data-slot": "hero-lead", className: cn("nc-type-body-lg max-w-[40ch] text-muted-foreground", className), ...props }));
|
|
41
|
-
}
|
|
42
|
-
function HeroActions({ className, ...props }) {
|
|
43
|
-
return (_jsx("div", { "data-slot": "hero-actions", className: cn("mt-2 flex flex-wrap items-center gap-3", className), ...props }));
|
|
44
|
-
}
|
|
45
|
-
export { Hero, HeroVisual, HeroBody, HeroKicker, HeroTitle, HeroLead, HeroActions };
|
|
@@ -1,36 +0,0 @@
|
|
|
1
|
-
import * as React from "react";
|
|
2
|
-
/**
|
|
3
|
-
* integration-flow — the "how it runs" flow diagram (V5 B10).
|
|
4
|
-
*
|
|
5
|
-
* A four-node flow: three main-row nodes (source → agent → output) plus one
|
|
6
|
-
* branch node (a named person) below the centre. Wide layouts use one inline
|
|
7
|
-
* SVG connector layer. Compact layouts reflow to source → agent → a two-column
|
|
8
|
-
* output/person fork and use CSS borders in the real gaps, so connectors never
|
|
9
|
-
* disappear behind stacked cards. This pass is STATIC: no `animateMotion`, no
|
|
10
|
-
* draw-on stroke animation.
|
|
11
|
-
*
|
|
12
|
-
* All SVG colours resolve through `var(--nc-*)` / semantic role tokens, never a
|
|
13
|
-
* raw literal. `IntegrationFlowLegend` / `IntegrationFlowLegendPill` render the
|
|
14
|
-
* tint key. Copy is props-driven: only the nodes you pass are rendered.
|
|
15
|
-
*
|
|
16
|
-
* Light-surface composition; inherits the page theme and sets no dark root.
|
|
17
|
-
* Token-only; no `dark:` styling.
|
|
18
|
-
*/
|
|
19
|
-
type FlowTone = "neutral" | "primary" | "warning";
|
|
20
|
-
type FlowNode = {
|
|
21
|
-
label: string;
|
|
22
|
-
sublabel?: string;
|
|
23
|
-
tone?: FlowTone;
|
|
24
|
-
icon?: React.ReactNode;
|
|
25
|
-
};
|
|
26
|
-
declare function IntegrationFlow({ nodes, className, ...props }: React.ComponentProps<"div"> & {
|
|
27
|
-
nodes?: FlowNode[];
|
|
28
|
-
}): React.JSX.Element;
|
|
29
|
-
type LegendTone = "primary" | "warning" | "info";
|
|
30
|
-
declare function IntegrationFlowLegend({ className, ...props }: React.ComponentProps<"div">): React.JSX.Element;
|
|
31
|
-
declare function IntegrationFlowLegendPill({ tone, className, ...props }: React.ComponentProps<"span"> & {
|
|
32
|
-
tone?: LegendTone;
|
|
33
|
-
}): React.JSX.Element;
|
|
34
|
-
export { IntegrationFlow, IntegrationFlowLegend, IntegrationFlowLegendPill };
|
|
35
|
-
export type { FlowNode, FlowTone, LegendTone };
|
|
36
|
-
//# sourceMappingURL=integration-flow.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"integration-flow.d.ts","sourceRoot":"","sources":["../../src/components/integration-flow.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAI/B;;;;;;;;;;;;;;;;GAgBG;AAEH,KAAK,QAAQ,GAAG,SAAS,GAAG,SAAS,GAAG,SAAS,CAAC;AAElD,KAAK,QAAQ,GAAG;IACd,KAAK,EAAE,MAAM,CAAC;IACd,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,IAAI,CAAC,EAAE,QAAQ,CAAC;IAChB,IAAI,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;CACxB,CAAC;AAyDF,iBAAS,eAAe,CAAC,EACvB,KAAU,EACV,SAAS,EACT,GAAG,KAAK,EACT,EAAE,KAAK,CAAC,cAAc,CAAC,KAAK,CAAC,GAAG;IAC/B,KAAK,CAAC,EAAE,QAAQ,EAAE,CAAC;CACpB,qBA2HA;AAED,KAAK,UAAU,GAAG,SAAS,GAAG,SAAS,GAAG,MAAM,CAAC;AAQjD,iBAAS,qBAAqB,CAAC,EAAE,SAAS,EAAE,GAAG,KAAK,EAAE,EAAE,KAAK,CAAC,cAAc,CAAC,KAAK,CAAC,qBAQlF;AAED,iBAAS,yBAAyB,CAAC,EACjC,IAAgB,EAChB,SAAS,EACT,GAAG,KAAK,EACT,EAAE,KAAK,CAAC,cAAc,CAAC,MAAM,CAAC,GAAG;IAAE,IAAI,CAAC,EAAE,UAAU,CAAA;CAAE,qBAatD;AAED,OAAO,EAAE,eAAe,EAAE,qBAAqB,EAAE,yBAAyB,EAAE,CAAC;AAC7E,YAAY,EAAE,QAAQ,EAAE,QAAQ,EAAE,UAAU,EAAE,CAAC"}
|
|
@@ -1,36 +0,0 @@
|
|
|
1
|
-
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
2
|
-
import { cn } from "../lib/utils.js";
|
|
3
|
-
const NODE_BORDER_CLASS = {
|
|
4
|
-
neutral: "border-border",
|
|
5
|
-
primary: "border-primary",
|
|
6
|
-
warning: "border-warning",
|
|
7
|
-
};
|
|
8
|
-
const NODE_CHIP_CLASS = {
|
|
9
|
-
neutral: "bg-muted",
|
|
10
|
-
primary: "bg-[var(--nc-link-bg-soft)]",
|
|
11
|
-
warning: "bg-[var(--nc-warning-soft)]",
|
|
12
|
-
};
|
|
13
|
-
// Default role tones for the canonical four-node arrangement.
|
|
14
|
-
const DEFAULT_TONES = ["neutral", "primary", "neutral", "warning"];
|
|
15
|
-
function FlowNodeBox({ node, tone }) {
|
|
16
|
-
return (_jsxs("div", { "data-slot": "integration-flow-node", "data-tone": tone, className: cn("relative z-10 flex flex-col gap-2 border bg-card p-4", NODE_BORDER_CLASS[tone]), children: [node.icon ? (_jsx("span", { "data-slot": "integration-flow-node-icon", "aria-hidden": "true", className: cn("grid size-8 place-items-center text-foreground [&_svg]:size-4", NODE_CHIP_CLASS[tone]), children: node.icon })) : null, _jsx("span", { "data-slot": "integration-flow-node-label", className: "font-mono text-[11px] tracking-[0.08em] text-foreground uppercase", children: node.label }), node.sublabel ? (_jsx("span", { "data-slot": "integration-flow-node-sublabel", className: "font-mono text-[10px] text-muted-foreground", children: node.sublabel })) : null] }));
|
|
17
|
-
}
|
|
18
|
-
function IntegrationFlow({ nodes = [], className, ...props }) {
|
|
19
|
-
const main = nodes.slice(0, 3);
|
|
20
|
-
const branch = nodes[3];
|
|
21
|
-
const toneOf = (node, i) => node.tone ?? DEFAULT_TONES[i] ?? "neutral";
|
|
22
|
-
return (_jsxs("div", { "data-slot": "integration-flow", className: cn("nc-dotted-field relative grid gap-y-8 bg-card p-6 sm:p-10", className), ...props, children: [_jsxs("svg", { "data-slot": "integration-flow-connectors", className: "pointer-events-none absolute inset-0 hidden size-full sm:block", viewBox: "0 0 300 200", preserveAspectRatio: "none", "aria-hidden": "true", focusable: "false", children: [main.length > 1 ? (_jsx("line", { "data-slot": "integration-flow-link", x1: "60", y1: "46", x2: "140", y2: "46", stroke: "var(--primary)", strokeWidth: "1.5", vectorEffect: "non-scaling-stroke" })) : null, main.length > 2 ? (_jsx("line", { "data-slot": "integration-flow-link", x1: "160", y1: "46", x2: "240", y2: "46", stroke: "var(--primary)", strokeWidth: "1.5", vectorEffect: "non-scaling-stroke" })) : null, branch ? (_jsx("line", { "data-slot": "integration-flow-branch-link", x1: "150", y1: "62", x2: "150", y2: "150", stroke: "var(--border)", strokeWidth: "1.5", strokeDasharray: "4 4", vectorEffect: "non-scaling-stroke" })) : null] }), _jsxs("div", { "data-slot": "integration-flow-main", className: "grid grid-cols-1 gap-y-6 sm:grid-cols-3 sm:gap-x-6 sm:gap-y-8", children: [main[0] ? _jsx(FlowNodeBox, { node: main[0], tone: toneOf(main[0], 0) }) : null, main[1] ? (_jsxs("div", { className: "relative", children: [_jsx("span", { "data-slot": "integration-flow-mobile-link", className: "pointer-events-none absolute -top-6 left-1/2 h-6 border-l border-primary sm:hidden", "aria-hidden": "true" }), _jsx(FlowNodeBox, { node: main[1], tone: toneOf(main[1], 1) })] })) : null, main[2] ? (_jsxs("div", { className: cn("relative grid pt-6 sm:contents", branch ? "grid-cols-2 gap-4" : "grid-cols-1"), children: [_jsx("span", { "data-slot": "integration-flow-mobile-fork-entry", className: "pointer-events-none absolute -top-6 left-1/2 h-6 border-l border-primary sm:hidden", "aria-hidden": "true" }), _jsxs("span", { "data-slot": "integration-flow-mobile-fork", className: cn("pointer-events-none absolute inset-x-0 top-0 h-6 sm:hidden", branch &&
|
|
23
|
-
"before:absolute before:top-3 before:right-1/4 before:left-1/4 before:border-t before:border-primary after:absolute after:top-0 after:left-1/2 after:h-3 after:border-l after:border-primary"), "aria-hidden": "true", children: [_jsx("span", { className: cn("absolute bottom-0 h-3 border-l border-primary", branch ? "left-1/4" : "left-1/2") }), branch ? (_jsx("span", { className: "absolute right-1/4 bottom-0 h-3 border-l border-dashed border-border" })) : null] }), _jsx("div", { className: "sm:col-start-3 sm:row-start-1", children: _jsx(FlowNodeBox, { node: main[2], tone: toneOf(main[2], 2) }) }), branch ? (_jsx("div", { "data-slot": "integration-flow-branch", className: "sm:col-start-2 sm:row-start-2", children: _jsx(FlowNodeBox, { node: branch, tone: toneOf(branch, 3) }) })) : null] })) : null] })] }));
|
|
24
|
-
}
|
|
25
|
-
const LEGEND_TINT_CLASS = {
|
|
26
|
-
primary: "bg-[var(--nc-link-bg-soft)] text-[var(--nc-link-deep)]",
|
|
27
|
-
warning: "bg-[var(--nc-warning-soft)] text-[var(--nc-warning-deep)]",
|
|
28
|
-
info: "bg-[var(--nc-info-soft)] text-[var(--nc-info-deep)]",
|
|
29
|
-
};
|
|
30
|
-
function IntegrationFlowLegend({ className, ...props }) {
|
|
31
|
-
return (_jsx("div", { "data-slot": "integration-flow-legend", className: cn("flex flex-wrap gap-2", className), ...props }));
|
|
32
|
-
}
|
|
33
|
-
function IntegrationFlowLegendPill({ tone = "primary", className, ...props }) {
|
|
34
|
-
return (_jsx("span", { "data-slot": "integration-flow-legend-pill", "data-tone": tone, className: cn("inline-flex items-center gap-1.5 px-2.5 py-1 font-mono text-[10px] tracking-[0.1em] uppercase", LEGEND_TINT_CLASS[tone], className), ...props }));
|
|
35
|
-
}
|
|
36
|
-
export { IntegrationFlow, IntegrationFlowLegend, IntegrationFlowLegendPill };
|
|
@@ -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-caption-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
|
-
* nav-bar — the fixed, always-dark glass navigation bar.
|
|
4
|
-
*
|
|
5
|
-
* A three-track grid (`1fr auto 1fr`): logo lockup leading, route links centered,
|
|
6
|
-
* CTA cluster trailing. It is a PERMANENT dark glass bar regardless of the page
|
|
7
|
-
* section it floats over, so the root carries its own `dark` ancestor class and
|
|
8
|
-
* resolves every surface from semantic roles. `GlassControl` owns the complete
|
|
9
|
-
* glass material; this component contributes only navigation layout.
|
|
10
|
-
*
|
|
11
|
-
* `position: fixed` pins it to the viewport top; the consuming page owns the top
|
|
12
|
-
* padding that clears it. Below ~960px the centered links slot hides and the grid
|
|
13
|
-
* collapses to logo + CTA.
|
|
14
|
-
*
|
|
15
|
-
* A11y: links/triggers expose a `--ring` focus outline; the consumer wraps this in
|
|
16
|
-
* a `<nav aria-label>`. Token-only; the root sets its own `dark` class (an accepted
|
|
17
|
-
* ancestor-class remap), never `dark:` utilities.
|
|
18
|
-
*/
|
|
19
|
-
declare function NavBar({ className, ...props }: React.ComponentProps<"div">): React.JSX.Element;
|
|
20
|
-
declare function NavBarLogo({ className, ...props }: React.ComponentProps<"a">): React.JSX.Element;
|
|
21
|
-
declare function NavBarLinks({ className, ...props }: React.ComponentProps<"div">): React.JSX.Element;
|
|
22
|
-
declare function NavBarCta({ className, ...props }: React.ComponentProps<"div">): React.JSX.Element;
|
|
23
|
-
export { NavBar, NavBarLogo, NavBarLinks, NavBarCta };
|
|
24
|
-
//# sourceMappingURL=nav-bar.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"nav-bar.d.ts","sourceRoot":"","sources":["../../src/components/nav-bar.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAK/B;;;;;;;;;;;;;;;;GAgBG;AAEH,iBAAS,MAAM,CAAC,EAAE,SAAS,EAAE,GAAG,KAAK,EAAE,EAAE,KAAK,CAAC,cAAc,CAAC,KAAK,CAAC,qBAYnE;AAED,iBAAS,UAAU,CAAC,EAAE,SAAS,EAAE,GAAG,KAAK,EAAE,EAAE,KAAK,CAAC,cAAc,CAAC,GAAG,CAAC,qBAWrE;AAED,iBAAS,WAAW,CAAC,EAAE,SAAS,EAAE,GAAG,KAAK,EAAE,EAAE,KAAK,CAAC,cAAc,CAAC,KAAK,CAAC,qBAexE;AAED,iBAAS,SAAS,CAAC,EAAE,SAAS,EAAE,GAAG,KAAK,EAAE,EAAE,KAAK,CAAC,cAAc,CAAC,KAAK,CAAC,qBAQtE;AAED,OAAO,EAAE,MAAM,EAAE,UAAU,EAAE,WAAW,EAAE,SAAS,EAAE,CAAC"}
|
|
@@ -1,35 +0,0 @@
|
|
|
1
|
-
import { jsx as _jsx } from "react/jsx-runtime";
|
|
2
|
-
import { GlassControl } from "./glass-control.js";
|
|
3
|
-
import { cn } from "../lib/utils.js";
|
|
4
|
-
/**
|
|
5
|
-
* nav-bar — the fixed, always-dark glass navigation bar.
|
|
6
|
-
*
|
|
7
|
-
* A three-track grid (`1fr auto 1fr`): logo lockup leading, route links centered,
|
|
8
|
-
* CTA cluster trailing. It is a PERMANENT dark glass bar regardless of the page
|
|
9
|
-
* section it floats over, so the root carries its own `dark` ancestor class and
|
|
10
|
-
* resolves every surface from semantic roles. `GlassControl` owns the complete
|
|
11
|
-
* glass material; this component contributes only navigation layout.
|
|
12
|
-
*
|
|
13
|
-
* `position: fixed` pins it to the viewport top; the consuming page owns the top
|
|
14
|
-
* padding that clears it. Below ~960px the centered links slot hides and the grid
|
|
15
|
-
* collapses to logo + CTA.
|
|
16
|
-
*
|
|
17
|
-
* A11y: links/triggers expose a `--ring` focus outline; the consumer wraps this in
|
|
18
|
-
* a `<nav aria-label>`. Token-only; the root sets its own `dark` class (an accepted
|
|
19
|
-
* ancestor-class remap), never `dark:` utilities.
|
|
20
|
-
*/
|
|
21
|
-
function NavBar({ className, ...props }) {
|
|
22
|
-
return (_jsx(GlassControl, { "data-slot": "nav-bar", shape: "bar", className: cn("dark fixed inset-x-0 top-0 z-30 grid min-h-16 grid-cols-[1fr_auto] items-center gap-4 px-4 py-3 text-foreground sm:px-8 lg:grid-cols-[minmax(0,1fr)_auto_minmax(0,1fr)]", className), ...props }));
|
|
23
|
-
}
|
|
24
|
-
function NavBarLogo({ className, ...props }) {
|
|
25
|
-
return (_jsx("a", { "data-slot": "nav-bar-logo", className: cn("inline-flex w-fit items-center gap-2.5 text-sm font-semibold text-foreground no-underline [&_img]:block [&_img]:h-7 [&_img]:w-auto [&_svg]:block [&_svg]:h-7 [&_svg]:w-auto", className), ...props }));
|
|
26
|
-
}
|
|
27
|
-
function NavBarLinks({ className, ...props }) {
|
|
28
|
-
return (_jsx("div", { "data-slot": "nav-bar-links", className: cn("hidden items-center justify-center gap-1 text-sm text-muted-foreground lg:inline-flex",
|
|
29
|
-
// each link reads as a flat pill with hover/focus affordance against the glass.
|
|
30
|
-
"[&_a]:rounded-sm [&_a]:px-3 [&_a]:py-2 [&_a]:text-inherit [&_a]:no-underline [&_a]:transition-colors", "[&_a:hover]:bg-accent [&_a:hover]:text-foreground", "[&_a[data-active]]:text-foreground", className), ...props }));
|
|
31
|
-
}
|
|
32
|
-
function NavBarCta({ className, ...props }) {
|
|
33
|
-
return (_jsx("div", { "data-slot": "nav-bar-cta", className: cn("inline-flex items-center gap-3 justify-self-end", className), ...props }));
|
|
34
|
-
}
|
|
35
|
-
export { NavBar, NavBarLogo, NavBarLinks, NavBarCta };
|
|
@@ -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
|
-
* page-frame — React shell for the kept design-system page geometry.
|
|
4
|
-
*
|
|
5
|
-
* The design-system owns the frame, row, lane, side-fill, rail, and marker CSS.
|
|
6
|
-
* This component gives website pages a small React vocabulary so they do not
|
|
7
|
-
* hand-author the same structure for every section. It intentionally does not
|
|
8
|
-
* replace the geometry layer; it only composes the approved classes.
|
|
9
|
-
*/
|
|
10
|
-
declare function PageSystem({ className, ...props }: React.ComponentProps<"div">): React.JSX.Element;
|
|
11
|
-
declare function PageFrame({ className, ...props }: React.ComponentProps<"div">): React.JSX.Element;
|
|
12
|
-
type PageMarkerPosition = "top-left" | "top-right" | "bottom-left" | "bottom-right";
|
|
13
|
-
type PageRowProps = React.ComponentProps<"section"> & {
|
|
14
|
-
lane?: "active" | "full";
|
|
15
|
-
laneClassName?: string;
|
|
16
|
-
sideFills?: boolean;
|
|
17
|
-
marker?: PageMarkerPosition;
|
|
18
|
-
};
|
|
19
|
-
declare function PageRow({ lane, laneClassName, sideFills, marker, className, children, ...props }: PageRowProps): React.JSX.Element;
|
|
20
|
-
declare function PageLane({ lane, className, ...props }: React.ComponentProps<"div"> & {
|
|
21
|
-
lane?: "active" | "full";
|
|
22
|
-
}): React.JSX.Element;
|
|
23
|
-
declare function PageSideFill({ side, className, ...props }: React.ComponentProps<"div"> & {
|
|
24
|
-
side: "start" | "end";
|
|
25
|
-
}): React.JSX.Element;
|
|
26
|
-
declare function PageMarker({ position, className, ...props }: React.ComponentProps<"span"> & {
|
|
27
|
-
position: PageMarkerPosition;
|
|
28
|
-
}): React.JSX.Element;
|
|
29
|
-
export { PageSystem, PageFrame, PageRow, PageLane, PageSideFill, PageMarker };
|
|
30
|
-
//# sourceMappingURL=page-frame.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"page-frame.d.ts","sourceRoot":"","sources":["../../src/components/page-frame.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAI/B;;;;;;;GAOG;AAEH,iBAAS,UAAU,CAAC,EAAE,SAAS,EAAE,GAAG,KAAK,EAAE,EAAE,KAAK,CAAC,cAAc,CAAC,KAAK,CAAC,qBAEvE;AAED,iBAAS,SAAS,CAAC,EAAE,SAAS,EAAE,GAAG,KAAK,EAAE,EAAE,KAAK,CAAC,cAAc,CAAC,KAAK,CAAC,qBAItE;AAED,KAAK,kBAAkB,GAAG,UAAU,GAAG,WAAW,GAAG,aAAa,GAAG,cAAc,CAAC;AAEpF,KAAK,YAAY,GAAG,KAAK,CAAC,cAAc,CAAC,SAAS,CAAC,GAAG;IACpD,IAAI,CAAC,EAAE,QAAQ,GAAG,MAAM,CAAC;IACzB,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,MAAM,CAAC,EAAE,kBAAkB,CAAC;CAC7B,CAAC;AAEF,iBAAS,OAAO,CAAC,EACf,IAAe,EACf,aAAa,EACb,SAAS,EACT,MAAM,EACN,SAAS,EACT,QAAQ,EACR,GAAG,KAAK,EACT,EAAE,YAAY,qBAad;AAED,iBAAS,QAAQ,CAAC,EAChB,IAAe,EACf,SAAS,EACT,GAAG,KAAK,EACT,EAAE,KAAK,CAAC,cAAc,CAAC,KAAK,CAAC,GAAG;IAAE,IAAI,CAAC,EAAE,QAAQ,GAAG,MAAM,CAAA;CAAE,qBAS5D;AAED,iBAAS,YAAY,CAAC,EACpB,IAAI,EACJ,SAAS,EACT,GAAG,KAAK,EACT,EAAE,KAAK,CAAC,cAAc,CAAC,KAAK,CAAC,GAAG;IAAE,IAAI,EAAE,OAAO,GAAG,KAAK,CAAA;CAAE,qBAIzD;AAED,iBAAS,UAAU,CAAC,EAClB,QAAQ,EACR,SAAS,EACT,GAAG,KAAK,EACT,EAAE,KAAK,CAAC,cAAc,CAAC,MAAM,CAAC,GAAG;IAAE,QAAQ,EAAE,kBAAkB,CAAA;CAAE,qBASjE;AAED,OAAO,EAAE,UAAU,EAAE,SAAS,EAAE,OAAO,EAAE,QAAQ,EAAE,YAAY,EAAE,UAAU,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
|
-
* page-frame — React shell for the kept design-system page geometry.
|
|
5
|
-
*
|
|
6
|
-
* The design-system owns the frame, row, lane, side-fill, rail, and marker CSS.
|
|
7
|
-
* This component gives website pages a small React vocabulary so they do not
|
|
8
|
-
* hand-author the same structure for every section. It intentionally does not
|
|
9
|
-
* replace the geometry layer; it only composes the approved classes.
|
|
10
|
-
*/
|
|
11
|
-
function PageSystem({ className, ...props }) {
|
|
12
|
-
return _jsx("div", { className: cn("nc-page-system", className), ...props });
|
|
13
|
-
}
|
|
14
|
-
function PageFrame({ className, ...props }) {
|
|
15
|
-
return (_jsx("div", { "data-nc-component": "page-frame", className: cn("nc-page-frame", className), ...props }));
|
|
16
|
-
}
|
|
17
|
-
function PageRow({ lane = "active", laneClassName, sideFills, marker, className, children, ...props }) {
|
|
18
|
-
const showSideFills = sideFills ?? lane === "active";
|
|
19
|
-
return (_jsxs("section", { "data-nc-component": "page-row", className: cn("nc-page-row", className), ...props, children: [marker ? _jsx(PageMarker, { position: marker }) : null, showSideFills ? _jsx(PageSideFill, { side: "start" }) : null, _jsx(PageLane, { lane: lane, className: laneClassName, children: children }), showSideFills ? _jsx(PageSideFill, { side: "end" }) : null] }));
|
|
20
|
-
}
|
|
21
|
-
function PageLane({ lane = "active", className, ...props }) {
|
|
22
|
-
return (_jsx("div", { "data-lane": lane, "data-nc-component": lane === "active" ? "active-lane" : undefined, className: cn("nc-row-lane", className), ...props }));
|
|
23
|
-
}
|
|
24
|
-
function PageSideFill({ side, className, ...props }) {
|
|
25
|
-
return (_jsx("div", { "data-side": side, className: cn("nc-side-fill", className), "aria-hidden": "true", ...props }));
|
|
26
|
-
}
|
|
27
|
-
function PageMarker({ position, className, ...props }) {
|
|
28
|
-
return (_jsx("span", { "data-position": position, className: cn("nc-marker", className), "aria-hidden": "true", ...props }));
|
|
29
|
-
}
|
|
30
|
-
export { PageSystem, PageFrame, PageRow, PageLane, PageSideFill, PageMarker };
|
|
@@ -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"}
|