From ea38463d72b45c7fe914530b0d61f475db5e36a8 Mon Sep 17 00:00:00 2001 From: Daniel A Martinez Julio Date: Sun, 12 Jul 2026 01:40:01 -0700 Subject: [PATCH] fix(docs): render Cards title before description, with even padding and rows MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Nextra 3's Cards.Card renders `children` BEFORE the title span — its children slot is designed to hold a preview image, not text. Our docs pass a description as children, so every "Read next" grid rendered description-above-title, with the description flush to the card edge (only Nextra's title span carries p-4) and a 3-up auto-fill grid that stranded a lone card on a second row. Replace Nextra's Cards with components/Cards.tsx: title first, then a padded body, one padding box on the card, and a 2-col stretch grid so rows stay flush and equal-height. Visual style is unchanged (mirrors FeatureCards). Only import lines changed in the MDX; no prose was touched. --- components/Cards.tsx | 36 ++++++++++++ pages/cli-and-chat/bring-your-own-models.mdx | 3 +- pages/cli-and-chat/cli.mdx | 3 +- pages/cli-and-chat/commands.mdx | 3 +- pages/cli-and-chat/deep-research.mdx | 3 +- pages/cli-and-chat/models.mdx | 3 +- pages/cli-and-chat/overview.mdx | 3 +- pages/configuration/commands.mdx | 3 +- .../configuration/configuration-reference.mdx | 3 +- .../deterministic-checks-config.mdx | 2 +- pages/configuration/models-and-usage.mdx | 3 +- pages/configuration/opt-outs.mdx | 2 +- .../path-filters-and-profile.mdx | 3 +- pages/configuration/rate-limits.mdx | 3 +- pages/configuration/rules-and-guidance.mdx | 3 +- .../dependency-vulnerabilities.mdx | 2 +- .../review-provenance.mdx | 3 +- .../sarif-evidence.mdx | 2 +- .../secret-scanning.mdx | 2 +- pages/getting-started/first-review.mdx | 3 +- pages/getting-started/quickstart.mdx | 3 +- pages/how-it-works/believability-pipeline.mdx | 3 +- pages/how-it-works/code-graph.mdx | 3 +- pages/how-it-works/confidence-scoring.mdx | 3 +- pages/how-it-works/deterministic-checks.mdx | 2 +- pages/how-it-works/earned-context.mdx | 3 +- pages/how-it-works/review-lifecycle.mdx | 2 +- pages/how-it-works/sdk-guidance.mdx | 3 +- pages/how-it-works/specialists.mdx | 2 +- pages/how-it-works/synthesizer.mdx | 2 +- pages/how-it-works/the-dispatcher.mdx | 3 +- pages/how-it-works/the-ensemble.mdx | 2 +- pages/how-it-works/verification.mdx | 3 +- pages/index.mdx | 3 +- pages/integrations/github.mdx | 2 +- pages/integrations/gitlab.mdx | 3 +- pages/memory/compounding-advantage.mdx | 3 +- pages/memory/conversational-learnings.mdx | 3 +- pages/memory/dynamic-memory.mdx | 3 +- pages/memory/org-and-seat-layering.mdx | 3 +- pages/memory/overview.mdx | 3 +- pages/memory/review-memory.mdx | 3 +- .../durable-objects.mdx | 2 +- .../operations-and-releases/known-issues.mdx | 2 +- pages/slack-assistant/capabilities.mdx | 3 +- pages/slack-assistant/commands.mdx | 3 +- pages/slack-assistant/how-it-answers.mdx | 3 +- pages/slack-assistant/overview.mdx | 3 +- .../permissions-and-security.mdx | 3 +- pages/triage/ci-failure-triage.mdx | 3 +- pages/triage/how-triage-works.mdx | 3 +- pages/triage/issue-triage.mdx | 3 +- pages/triage/overview.mdx | 3 +- pages/troubleshooting/billing.mdx | 3 +- styles/globals.css | 55 +++++++++++++------ 55 files changed, 166 insertions(+), 71 deletions(-) create mode 100644 components/Cards.tsx diff --git a/components/Cards.tsx b/components/Cards.tsx new file mode 100644 index 0000000..b63c00f --- /dev/null +++ b/components/Cards.tsx @@ -0,0 +1,36 @@ +import NextLink from "next/link"; +import type { ComponentPropsWithoutRef, ReactNode } from "react"; + +/** + * Navigational card grid. + * + * Replaces Nextra's because Nextra 3's Cards.Card renders `children` + * *before* the title span — its `children` slot is designed to hold a preview + * image, not a description. Our docs use `children` as descriptive text, so the + * upstream order puts the description above the title and leaves the + * description unpadded (only the title span carries Nextra's padding). + * + * This renders title first, then the description body, with a single padding + * box on the card itself. Visual style intentionally mirrors . + */ +export function Cards({ children }: { children: ReactNode }) { + return
{children}
; +} + +type CardProps = { + title: string; + href: string; + children?: ReactNode; +} & Omit, "href" | "title">; + +function Card({ title, href, children, ...props }: CardProps) { + return ( + + {title} + {children ?
{children}
: null} +
+ ); +} + +Cards.displayName = "Cards"; +Cards.Card = Card; diff --git a/pages/cli-and-chat/bring-your-own-models.mdx b/pages/cli-and-chat/bring-your-own-models.mdx index 76cc2b8..99f46e3 100644 --- a/pages/cli-and-chat/bring-your-own-models.mdx +++ b/pages/cli-and-chat/bring-your-own-models.mdx @@ -3,7 +3,8 @@ title: "Bring Your Own Key" description: "On paid tiers, run the Sigilix CLI on your own model-provider key — Anthropic Claude, OpenAI GPT, or another provider you already use. You pay the provider directly. Read the grounding trade-off first: BYOK swaps model choice for the strongest grounding guarantee." --- -import { Callout, Cards, Steps } from 'nextra/components' +import { Callout, Steps } from 'nextra/components' +import { Cards } from '@/components/Cards' import { FeatureCards, FeatureCard } from '@/components/FeatureCards' # Bring Your Own Key diff --git a/pages/cli-and-chat/cli.mdx b/pages/cli-and-chat/cli.mdx index 5a1d02d..791bffd 100644 --- a/pages/cli-and-chat/cli.mdx +++ b/pages/cli-and-chat/cli.mdx @@ -3,7 +3,8 @@ title: "Sigilix CLI" description: "Review parity in the terminal. The Sigilix CLI runs the same four-specialist ensemble and believability gates as the hosted GitHub App against your local changes — before you ever open a PR — reaching for the earned context every hosted review built." --- -import { Callout, Cards, Steps } from 'nextra/components' +import { Callout, Steps } from 'nextra/components' +import { Cards } from '@/components/Cards' import { FeatureCards, FeatureCard } from '@/components/FeatureCards' # Sigilix CLI diff --git a/pages/cli-and-chat/commands.mdx b/pages/cli-and-chat/commands.mdx index 5b67134..a3738d7 100644 --- a/pages/cli-and-chat/commands.mdx +++ b/pages/cli-and-chat/commands.mdx @@ -3,7 +3,8 @@ title: "CLI Command Reference" description: "The Sigilix CLI commands — review, run, login/whoami/logout, providers, and models. Representative usage for reviewing changes and driving the grounded agent from the terminal." --- -import { Callout, Cards } from 'nextra/components' +import { Callout } from 'nextra/components' +import { Cards } from '@/components/Cards' # CLI Command Reference diff --git a/pages/cli-and-chat/deep-research.mdx b/pages/cli-and-chat/deep-research.mdx index a07df3e..f5e0f88 100644 --- a/pages/cli-and-chat/deep-research.mdx +++ b/pages/cli-and-chat/deep-research.mdx @@ -3,7 +3,8 @@ title: "Deep-Research Chat" description: "A chat grounded in your repo and its review history. Ask why a finding fired, what a change affects, or how a subsystem fits together — answers are anchored in the index, code graph, and past reviews and their proof-tier receipts, not guessed." --- -import { Callout, Cards, Steps } from 'nextra/components' +import { Callout, Steps } from 'nextra/components' +import { Cards } from '@/components/Cards' import { FeatureCards, FeatureCard } from '@/components/FeatureCards' # Deep-Research Chat diff --git a/pages/cli-and-chat/models.mdx b/pages/cli-and-chat/models.mdx index 5af6bdd..d5f4769 100644 --- a/pages/cli-and-chat/models.mdx +++ b/pages/cli-and-chat/models.mdx @@ -3,7 +3,8 @@ title: "The Sigilix Models" description: "Boreas, Pyroeis, Astraeus — and Phanes, coming soon. Sigilix's model lineup for the CLI and agent surfaces: one agent contract, tiered capability, served through Sigilix's managed gateway." --- -import { Callout, Cards } from 'nextra/components' +import { Callout } from 'nextra/components' +import { Cards } from '@/components/Cards' import { FeatureCards, FeatureCard } from '@/components/FeatureCards' # The Sigilix Models diff --git a/pages/cli-and-chat/overview.mdx b/pages/cli-and-chat/overview.mdx index dba524e..f137d47 100644 --- a/pages/cli-and-chat/overview.mdx +++ b/pages/cli-and-chat/overview.mdx @@ -3,7 +3,8 @@ title: "CLI & Chat" description: "Sigilix in the terminal — review parity from the command line, plus a Deep-Research Chat grounded in your repo and its review history. Run it on Sigilix's own hosted models, or bring your own provider key (Anthropic, OpenAI) on paid tiers." --- -import { Callout, Cards, Steps } from 'nextra/components' +import { Callout, Steps } from 'nextra/components' +import { Cards } from '@/components/Cards' import { FeatureCards, FeatureCard } from '@/components/FeatureCards' # CLI & Chat diff --git a/pages/configuration/commands.mdx b/pages/configuration/commands.mdx index 126cfd1..36774fd 100644 --- a/pages/configuration/commands.mdx +++ b/pages/configuration/commands.mdx @@ -3,7 +3,8 @@ title: "Slash Commands" description: "/sigilix review, improve, describe, and help — what each command does, when to use it, and how to override prompts and models per-repo via sigilix.json." --- -import { Callout, Cards } from 'nextra/components' +import { Callout } from 'nextra/components' +import { Cards } from '@/components/Cards' # Slash Commands diff --git a/pages/configuration/configuration-reference.mdx b/pages/configuration/configuration-reference.mdx index 3d3927e..a46d232 100644 --- a/pages/configuration/configuration-reference.mdx +++ b/pages/configuration/configuration-reference.mdx @@ -3,7 +3,8 @@ title: "Configuration file" description: "Per-repo configuration reference. Drop a sigilix.json or sigilix.yaml at the repo root to inject guidance, scope reviews, encode deterministic rules, and toggle subsystems." --- -import { Callout, Cards, Tabs } from 'nextra/components' +import { Callout, Tabs } from 'nextra/components' +import { Cards } from '@/components/Cards' # Configuration file diff --git a/pages/configuration/deterministic-checks-config.mdx b/pages/configuration/deterministic-checks-config.mdx index abd098f..0849002 100644 --- a/pages/configuration/deterministic-checks-config.mdx +++ b/pages/configuration/deterministic-checks-config.mdx @@ -3,7 +3,7 @@ title: "Writing Deterministic Checks" description: "Practical guide to the `deterministicChecks` field in sigilix.json: regex syntax, severity mapping, examples, and the gotchas that bite people." --- -import { Cards } from 'nextra/components' +import { Cards } from '@/components/Cards' # Writing Deterministic Checks diff --git a/pages/configuration/models-and-usage.mdx b/pages/configuration/models-and-usage.mdx index b5b19af..82e2520 100644 --- a/pages/configuration/models-and-usage.mdx +++ b/pages/configuration/models-and-usage.mdx @@ -3,7 +3,8 @@ title: "Models & Usage" description: "Why Sigilix usage windows are far larger than a comparable OpenAI or Claude plan — the models we run, how to pick one, and the 5-day reset cadence." --- -import { Callout, Cards, Steps } from 'nextra/components' +import { Callout, Steps } from 'nextra/components' +import { Cards } from '@/components/Cards' import { FeatureCards, FeatureCard } from '@/components/FeatureCards' # Models & Usage diff --git a/pages/configuration/opt-outs.mdx b/pages/configuration/opt-outs.mdx index 51a8a40..8710b57 100644 --- a/pages/configuration/opt-outs.mdx +++ b/pages/configuration/opt-outs.mdx @@ -3,7 +3,7 @@ title: "Opt-outs" description: "Consolidated reference for disabling Sigilix subsystems per-repo. Every subsystem ships enabled by default; each has its own `{ enabled: false }` switch in sigilix.json." --- -import { Cards } from 'nextra/components' +import { Cards } from '@/components/Cards' # Opt-outs diff --git a/pages/configuration/path-filters-and-profile.mdx b/pages/configuration/path-filters-and-profile.mdx index ac0f409..3ed1c8d 100644 --- a/pages/configuration/path-filters-and-profile.mdx +++ b/pages/configuration/path-filters-and-profile.mdx @@ -3,7 +3,8 @@ title: "Path Filters & Profile" description: "Scope reviews to the files that matter with `pathFilters`, and tune flag-worthiness with `profile`. Both shipped in sigilix.json v2 (ARC-176)." --- -import { Cards, Tabs } from 'nextra/components' +import { Tabs } from 'nextra/components' +import { Cards } from '@/components/Cards' # Path Filters & Profile diff --git a/pages/configuration/rate-limits.mdx b/pages/configuration/rate-limits.mdx index bd11f95..518df75 100644 --- a/pages/configuration/rate-limits.mdx +++ b/pages/configuration/rate-limits.mdx @@ -3,7 +3,8 @@ title: "Rate Limits" description: "How the rolling window works, burst behavior, monitoring usage, and what happens when you hit the cap." --- -import { Callout, Cards } from 'nextra/components' +import { Callout } from 'nextra/components' +import { Cards } from '@/components/Cards' # Rate Limits diff --git a/pages/configuration/rules-and-guidance.mdx b/pages/configuration/rules-and-guidance.mdx index 601c6ea..19cc09c 100644 --- a/pages/configuration/rules-and-guidance.mdx +++ b/pages/configuration/rules-and-guidance.mdx @@ -3,7 +3,8 @@ title: "Rules & Guidance" description: "How to write the `guidance` and `rules.` strings that shape every specialist's prompt for your repo." --- -import { Cards, Tabs } from 'nextra/components' +import { Tabs } from 'nextra/components' +import { Cards } from '@/components/Cards' # Rules & Guidance diff --git a/pages/evidence-and-provenance/dependency-vulnerabilities.mdx b/pages/evidence-and-provenance/dependency-vulnerabilities.mdx index bbef7f8..702405d 100644 --- a/pages/evidence-and-provenance/dependency-vulnerabilities.mdx +++ b/pages/evidence-and-provenance/dependency-vulnerabilities.mdx @@ -3,7 +3,7 @@ title: "Dependency Vulnerabilities" description: "Sigilix scans npm dependencies against a bundled vulnerability database on every review. Range-aware, transitive-aware, runs without external API calls (ARC-186)." --- -import { Cards } from 'nextra/components' +import { Cards } from '@/components/Cards' # Dependency Vulnerabilities diff --git a/pages/evidence-and-provenance/review-provenance.mdx b/pages/evidence-and-provenance/review-provenance.mdx index fcb60c6..8bd9a4f 100644 --- a/pages/evidence-and-provenance/review-provenance.mdx +++ b/pages/evidence-and-provenance/review-provenance.mdx @@ -3,7 +3,8 @@ title: "Review Provenance & Stale Markers" description: "Every Sigilix review carries a manifest of which specialists, models, and evidence channels produced it. Reviews on stale SHAs are marked, never silently re-used (ARC-184)." --- -import { Callout, Cards } from 'nextra/components' +import { Callout } from 'nextra/components' +import { Cards } from '@/components/Cards' # Review Provenance & Stale Markers diff --git a/pages/evidence-and-provenance/sarif-evidence.mdx b/pages/evidence-and-provenance/sarif-evidence.mdx index cd8001d..ec10d39 100644 --- a/pages/evidence-and-provenance/sarif-evidence.mdx +++ b/pages/evidence-and-provenance/sarif-evidence.mdx @@ -3,7 +3,7 @@ title: "SARIF Evidence" description: "Upload SARIF reports as PR artifacts and Sigilix injects their high-severity findings into the synthesizer as authoritative evidence. Trivy + generic SARIF v2.1.0 (ARC-188)." --- -import { Cards } from 'nextra/components' +import { Cards } from '@/components/Cards' # SARIF Evidence diff --git a/pages/evidence-and-provenance/secret-scanning.mdx b/pages/evidence-and-provenance/secret-scanning.mdx index 160a691..c080aab 100644 --- a/pages/evidence-and-provenance/secret-scanning.mdx +++ b/pages/evidence-and-provenance/secret-scanning.mdx @@ -3,7 +3,7 @@ title: "Secret Scanning" description: "Sigilix's built-in regex sweep for hardcoded provider credentials, run before the LLM specialists fire (ARC-187)." --- -import { Cards } from 'nextra/components' +import { Cards } from '@/components/Cards' # Secret Scanning diff --git a/pages/getting-started/first-review.mdx b/pages/getting-started/first-review.mdx index bc448bd..22fdff0 100644 --- a/pages/getting-started/first-review.mdx +++ b/pages/getting-started/first-review.mdx @@ -3,7 +3,8 @@ title: "Anatomy of a Review" description: "What every Sigilix review contains — synthesizer summary, inline findings, severity badges, proof-tier pills, suggested patches — and how to read it." --- -import { Callout, Cards } from 'nextra/components' +import { Callout } from 'nextra/components' +import { Cards } from '@/components/Cards' # Anatomy of a Review diff --git a/pages/getting-started/quickstart.mdx b/pages/getting-started/quickstart.mdx index fcff7b5..6c27ebd 100644 --- a/pages/getting-started/quickstart.mdx +++ b/pages/getting-started/quickstart.mdx @@ -3,7 +3,8 @@ title: "Quickstart" description: "Install the Sigilix GitHub App and get your first review in minutes." --- -import { Callout, Cards, Steps } from 'nextra/components' +import { Callout, Steps } from 'nextra/components' +import { Cards } from '@/components/Cards' # Quickstart diff --git a/pages/how-it-works/believability-pipeline.mdx b/pages/how-it-works/believability-pipeline.mdx index 7a2da86..4469e97 100644 --- a/pages/how-it-works/believability-pipeline.mdx +++ b/pages/how-it-works/believability-pipeline.mdx @@ -3,7 +3,8 @@ title: "The Believability Pipeline" description: "Five gates between a model's hunch and a comment on your PR: evidence, provenance contracts, refute/execute, proof-tier receipts, and memory. A finding cannot post unless it earns it." --- -import { Callout, Cards, Steps } from 'nextra/components' +import { Callout, Steps } from 'nextra/components' +import { Cards } from '@/components/Cards' import { FeatureCards, FeatureCard } from '@/components/FeatureCards' # The Believability Pipeline diff --git a/pages/how-it-works/code-graph.mdx b/pages/how-it-works/code-graph.mdx index b8d1113..42e9c69 100644 --- a/pages/how-it-works/code-graph.mdx +++ b/pages/how-it-works/code-graph.mdx @@ -3,7 +3,8 @@ title: "The Code Graph & Blast Radius" description: "How Sigilix knows what a change actually affects — a per-repo symbol graph with import and call edges, a semantic code index, and blast-radius analysis that expands every diff into its real consequences." --- -import { Callout, Cards, Steps } from 'nextra/components' +import { Callout, Steps } from 'nextra/components' +import { Cards } from '@/components/Cards' import { FeatureCards, FeatureCard } from '@/components/FeatureCards' # The Code Graph & Blast Radius diff --git a/pages/how-it-works/confidence-scoring.mdx b/pages/how-it-works/confidence-scoring.mdx index 3600137..ca9b181 100644 --- a/pages/how-it-works/confidence-scoring.mdx +++ b/pages/how-it-works/confidence-scoring.mdx @@ -3,7 +3,8 @@ title: "Confidence & Proof Tiers" description: "How Sigilix decides whether a finding has earned the right to post — proof-tier receipts (VERIFIED / REPRODUCED / GROUNDED / MODEL) and the grounding gate, not a numeric score." --- -import { Callout, Cards } from 'nextra/components' +import { Callout } from 'nextra/components' +import { Cards } from '@/components/Cards' # Confidence & Proof Tiers diff --git a/pages/how-it-works/deterministic-checks.mdx b/pages/how-it-works/deterministic-checks.mdx index d9bfea1..1d75e33 100644 --- a/pages/how-it-works/deterministic-checks.mdx +++ b/pages/how-it-works/deterministic-checks.mdx @@ -3,7 +3,7 @@ title: "Deterministic Checks" description: "The pre-LLM signal layer — regex rules, AST scanners, and secret detection run on the diff before any specialist fires. Why Sigilix grounds its specialists on deterministic signal first." --- -import { Cards } from 'nextra/components' +import { Cards } from '@/components/Cards' # Deterministic Checks diff --git a/pages/how-it-works/earned-context.mdx b/pages/how-it-works/earned-context.mdx index 8419867..317f11d 100644 --- a/pages/how-it-works/earned-context.mdx +++ b/pages/how-it-works/earned-context.mdx @@ -3,7 +3,8 @@ title: "Earned Context" description: "Every review deposits a reusable, verified understanding of your repo — index, code graph, trust ledger, review memory, evidence manifests. The CLI, Deep-Research Chat, and Triage all draw on it." --- -import { Callout, Cards } from 'nextra/components' +import { Callout } from 'nextra/components' +import { Cards } from '@/components/Cards' import { FeatureCards, FeatureCard } from '@/components/FeatureCards' # Earned Context diff --git a/pages/how-it-works/review-lifecycle.mdx b/pages/how-it-works/review-lifecycle.mdx index 0c46be6..e8fae5e 100644 --- a/pages/how-it-works/review-lifecycle.mdx +++ b/pages/how-it-works/review-lifecycle.mdx @@ -3,7 +3,7 @@ title: "Review Lifecycle" description: "From webhook delivery to posted review — the stages a Sigilix review goes through and the guarantees at each stage." --- -import { Cards } from 'nextra/components' +import { Cards } from '@/components/Cards' # Review Lifecycle diff --git a/pages/how-it-works/sdk-guidance.mdx b/pages/how-it-works/sdk-guidance.mdx index 938841e..0a0c40a 100644 --- a/pages/how-it-works/sdk-guidance.mdx +++ b/pages/how-it-works/sdk-guidance.mdx @@ -3,7 +3,8 @@ title: "SDK Guidance" description: "When a PR touches a supported vendor SDK, Sigilix layers in that SDK's correct-usage rules — self-authored from the vendor's public docs — so the review catches SDK-specific footguns a generic reviewer misses. Findings link back to the exact docs page." --- -import { Callout, Cards, Steps } from 'nextra/components' +import { Callout, Steps } from 'nextra/components' +import { Cards } from '@/components/Cards' import { FeatureCards, FeatureCard } from '@/components/FeatureCards' # SDK Guidance diff --git a/pages/how-it-works/specialists.mdx b/pages/how-it-works/specialists.mdx index b2d6b81..a74e2b2 100644 --- a/pages/how-it-works/specialists.mdx +++ b/pages/how-it-works/specialists.mdx @@ -3,7 +3,7 @@ title: "Specialists" description: "logic, security, performance, tests — what each domain specialist catches, sample findings, and how models are selected." --- -import { Cards } from 'nextra/components' +import { Cards } from '@/components/Cards' # Specialists diff --git a/pages/how-it-works/synthesizer.mdx b/pages/how-it-works/synthesizer.mdx index 3eaafd1..a809f45 100644 --- a/pages/how-it-works/synthesizer.mdx +++ b/pages/how-it-works/synthesizer.mdx @@ -3,7 +3,7 @@ title: "Synthesizer" description: "The synthesizer's four-stage pipeline: collect → cross-reference → calibrate → render. How four specialist streams become one coherent, believable review." --- -import { Cards } from 'nextra/components' +import { Cards } from '@/components/Cards' # Synthesizer diff --git a/pages/how-it-works/the-dispatcher.mdx b/pages/how-it-works/the-dispatcher.mdx index 2a6e2d6..1ae47c1 100644 --- a/pages/how-it-works/the-dispatcher.mdx +++ b/pages/how-it-works/the-dispatcher.mdx @@ -3,7 +3,8 @@ title: "The Dispatcher" description: "One webhook, many pipelines. A single GitHub or Linear event is routed to the pipeline it deserves — so a cheap PR overview never waits behind the full four-specialist ensemble." --- -import { Callout, Cards, Steps } from 'nextra/components' +import { Callout, Steps } from 'nextra/components' +import { Cards } from '@/components/Cards' import { FeatureCards, FeatureCard } from '@/components/FeatureCards' # The Dispatcher diff --git a/pages/how-it-works/the-ensemble.mdx b/pages/how-it-works/the-ensemble.mdx index 009c461..1cbf515 100644 --- a/pages/how-it-works/the-ensemble.mdx +++ b/pages/how-it-works/the-ensemble.mdx @@ -3,7 +3,7 @@ title: "The Ensemble" description: "Why Sigilix runs four domain specialists unified by a synthesizer rather than a single-generalist design — the architectural argument with concrete examples." --- -import { Cards } from 'nextra/components' +import { Cards } from '@/components/Cards' # The Ensemble diff --git a/pages/how-it-works/verification.mdx b/pages/how-it-works/verification.mdx index 611b388..70d6031 100644 --- a/pages/how-it-works/verification.mdx +++ b/pages/how-it-works/verification.mdx @@ -3,7 +3,8 @@ title: "Verification & the Trust Ledger" description: "How findings are proven rather than asserted — evidence re-checking, a sealed execution sandbox that reproduces bugs, receipt-joining with your own CI, and the trust ledger that records how every finding earned its tier." --- -import { Callout, Cards, Steps } from 'nextra/components' +import { Callout, Steps } from 'nextra/components' +import { Cards } from '@/components/Cards' import { FeatureCards, FeatureCard } from '@/components/FeatureCards' # Verification & the Trust Ledger diff --git a/pages/index.mdx b/pages/index.mdx index 43dc631..370dfaa 100644 --- a/pages/index.mdx +++ b/pages/index.mdx @@ -3,7 +3,8 @@ title: "Introduction" description: "Sigilix is a hosted GitHub App that runs a four-specialist ensemble on every PR, behind a believability pipeline that lets a finding post only once it earns it. Here's what it catches, how it's built, and why it's not just another AI reviewer." --- -import { Callout, Cards, Steps } from 'nextra/components' +import { Callout, Steps } from 'nextra/components' +import { Cards } from '@/components/Cards' import { FeatureCards, FeatureCard } from '@/components/FeatureCards'
diff --git a/pages/integrations/github.mdx b/pages/integrations/github.mdx index 4cac49c..6335f35 100644 --- a/pages/integrations/github.mdx +++ b/pages/integrations/github.mdx @@ -3,7 +3,7 @@ title: "GitHub" description: "Sigilix's primary integration. Permissions, branch protection, required checks, and multi-repo install." --- -import { Cards } from 'nextra/components' +import { Cards } from '@/components/Cards' # GitHub diff --git a/pages/integrations/gitlab.mdx b/pages/integrations/gitlab.mdx index 50d8d54..c57c74d 100644 --- a/pages/integrations/gitlab.mdx +++ b/pages/integrations/gitlab.mdx @@ -3,7 +3,8 @@ title: "GitLab" description: "Connect a GitLab project in one click — Sigilix sets up the merge-request webhook and review token automatically, and the same review ensemble runs on every MR." --- -import { Callout, Cards, Steps } from 'nextra/components' +import { Callout, Steps } from 'nextra/components' +import { Cards } from '@/components/Cards' # GitLab diff --git a/pages/memory/compounding-advantage.mdx b/pages/memory/compounding-advantage.mdx index 5048dd2..62cdcab 100644 --- a/pages/memory/compounding-advantage.mdx +++ b/pages/memory/compounding-advantage.mdx @@ -3,7 +3,8 @@ title: "The Compounding Advantage" description: "Sigilix tunes its own models — and your organization's accumulated context is the fuel they compound on. As learnings, earned context, semantic recall, and review memory build up per org, every subsequent review by the same tuned models is better-informed and more tailored to your codebase." --- -import { Callout, Cards, Steps } from 'nextra/components' +import { Callout, Steps } from 'nextra/components' +import { Cards } from '@/components/Cards' import { FeatureCards, FeatureCard } from '@/components/FeatureCards' # The Compounding Advantage diff --git a/pages/memory/conversational-learnings.mdx b/pages/memory/conversational-learnings.mdx index 63ec0aa..67d4b5e 100644 --- a/pages/memory/conversational-learnings.mdx +++ b/pages/memory/conversational-learnings.mdx @@ -3,7 +3,8 @@ title: "Conversational Learnings" description: "Teach Sigilix a rule in plain language — reply to a finding with 'we use integer cents here' — and it records the rule, applies it judiciously in later reviews, and attributes it inline when it does." --- -import { Callout, Cards, Steps } from 'nextra/components' +import { Callout, Steps } from 'nextra/components' +import { Cards } from '@/components/Cards' import { FeatureCards, FeatureCard } from '@/components/FeatureCards' # Conversational Learnings diff --git a/pages/memory/dynamic-memory.mdx b/pages/memory/dynamic-memory.mdx index 4fb1377..d3e8f0a 100644 --- a/pages/memory/dynamic-memory.mdx +++ b/pages/memory/dynamic-memory.mdx @@ -3,7 +3,8 @@ title: "Dynamic Memory & Decay" description: "Not every memory should last forever. Sigilix classifies each memory into a four-tier taxonomy at write time, keeps durable conventions indefinitely, and lets a background gardener age out stale project state — archiving, never deleting." --- -import { Callout, Cards } from 'nextra/components' +import { Callout } from 'nextra/components' +import { Cards } from '@/components/Cards' import { FeatureCards, FeatureCard } from '@/components/FeatureCards' # Dynamic Memory & Decay diff --git a/pages/memory/org-and-seat-layering.mdx b/pages/memory/org-and-seat-layering.mdx index 35e3fc7..9f8c157 100644 --- a/pages/memory/org-and-seat-layering.mdx +++ b/pages/memory/org-and-seat-layering.mdx @@ -3,7 +3,8 @@ title: "Org & Seat Layering" description: "Memory is scoped by organization and by individual developer seat. Hosted PR reviews read org memory; a developer's CLI session reads their own seat memory unioned with the org's — and the flow is deliberately one-directional so a private session never shapes the team's reviews." --- -import { Callout, Cards } from 'nextra/components' +import { Callout } from 'nextra/components' +import { Cards } from '@/components/Cards' import { FeatureCards, FeatureCard } from '@/components/FeatureCards' # Org & Seat Layering diff --git a/pages/memory/overview.mdx b/pages/memory/overview.mdx index e599eb8..1b0c865 100644 --- a/pages/memory/overview.mdx +++ b/pages/memory/overview.mdx @@ -3,7 +3,8 @@ title: "Memory" description: "Memory is Sigilix's durable moat: every correction, convention, and dismissal your team gives compounds into a reviewer that fits your codebase. Learnings, the accept/dismiss corpus, dynamic aging, and org+seat layering — all injected as context into every review." --- -import { Callout, Cards } from 'nextra/components' +import { Callout } from 'nextra/components' +import { Cards } from '@/components/Cards' import { FeatureCards, FeatureCard } from '@/components/FeatureCards' # Memory diff --git a/pages/memory/review-memory.mdx b/pages/memory/review-memory.mdx index f5c3ae5..8a2548c 100644 --- a/pages/memory/review-memory.mdx +++ b/pages/memory/review-memory.mdx @@ -3,7 +3,8 @@ title: "Review Memory" description: "How Sigilix remembers your team's guidance — Conversational Learnings you teach in plain language, plus a secondary statistical accept/dismiss corpus." --- -import { Callout, Cards } from 'nextra/components' +import { Callout } from 'nextra/components' +import { Cards } from '@/components/Cards' # Review Memory diff --git a/pages/operations-and-releases/durable-objects.mdx b/pages/operations-and-releases/durable-objects.mdx index 30d3ba1..e3e8ee1 100644 --- a/pages/operations-and-releases/durable-objects.mdx +++ b/pages/operations-and-releases/durable-objects.mdx @@ -3,7 +3,7 @@ title: "Durable Objects in Sigilix" description: "How Sigilix uses Cloudflare Durable Objects for per-PR serialization. Operator-facing context — useful when reading Sigilix's logs, not needed to use Sigilix." --- -import { Cards } from 'nextra/components' +import { Cards } from '@/components/Cards' # Durable Objects in Sigilix diff --git a/pages/operations-and-releases/known-issues.mdx b/pages/operations-and-releases/known-issues.mdx index 2d208d3..3e806fb 100644 --- a/pages/operations-and-releases/known-issues.mdx +++ b/pages/operations-and-releases/known-issues.mdx @@ -3,7 +3,7 @@ title: "Known Issues" description: "Open operational issues, the workarounds Sigilix applies, and what to do if you hit them anyway." --- -import { Cards } from 'nextra/components' +import { Cards } from '@/components/Cards' # Known Issues diff --git a/pages/slack-assistant/capabilities.mdx b/pages/slack-assistant/capabilities.mdx index c486814..4b4a8ed 100644 --- a/pages/slack-assistant/capabilities.mdx +++ b/pages/slack-assistant/capabilities.mdx @@ -3,7 +3,8 @@ title: "Capabilities" description: "What @Sigilix can do from a Slack thread — answer grounded codebase questions, open a PR, file a triaged issue, explain a failing CI run, summarize a review, and run the full ensemble on demand. Each capability draws on the same earned context that powers PR reviews." --- -import { Callout, Cards } from 'nextra/components' +import { Callout } from 'nextra/components' +import { Cards } from '@/components/Cards' import { FeatureCards, FeatureCard } from '@/components/FeatureCards' # Capabilities diff --git a/pages/slack-assistant/commands.mdx b/pages/slack-assistant/commands.mdx index 896fad1..3f91ed4 100644 --- a/pages/slack-assistant/commands.mdx +++ b/pages/slack-assistant/commands.mdx @@ -3,7 +3,8 @@ title: "Commands" description: "The verbs you can @mention in Slack — a grounded question, review, summarize, file issue, and open a PR. Each one routes to the same engine that reviews your pull requests, scoped to your workspace and grounded in earned context." --- -import { Callout, Cards } from 'nextra/components' +import { Callout } from 'nextra/components' +import { Cards } from '@/components/Cards' # Commands diff --git a/pages/slack-assistant/how-it-answers.mdx b/pages/slack-assistant/how-it-answers.mdx index 1173735..9e014b3 100644 --- a/pages/slack-assistant/how-it-answers.mdx +++ b/pages/slack-assistant/how-it-answers.mdx @@ -3,7 +3,8 @@ title: "How It Answers" description: "The retrieval and grounding flow under the hood: Slack event → resolve workspace and permissions → retrieve from earned context → answer grounded with citations → optionally take an action. The same grounding-before-judgment discipline that powers PR reviews, applied to a thread." --- -import { Callout, Cards, Steps } from 'nextra/components' +import { Callout, Steps } from 'nextra/components' +import { Cards } from '@/components/Cards' import { FeatureCards, FeatureCard } from '@/components/FeatureCards' # How It Answers diff --git a/pages/slack-assistant/overview.mdx b/pages/slack-assistant/overview.mdx index 842a153..5e10659 100644 --- a/pages/slack-assistant/overview.mdx +++ b/pages/slack-assistant/overview.mdx @@ -3,7 +3,8 @@ title: "Slack Assistant" description: "The same brain that reviews your pull requests, living in Slack. @mention @Sigilix in a thread and get a grounded answer from your actual codebase — cited to file:line, the PRs that set a pattern, and the ADRs behind it — then turn the decision into a PR, an issue, or a review without leaving the channel." --- -import { Callout, Cards, Steps } from 'nextra/components' +import { Callout, Steps } from 'nextra/components' +import { Cards } from '@/components/Cards' # Slack Assistant diff --git a/pages/slack-assistant/permissions-and-security.mdx b/pages/slack-assistant/permissions-and-security.mdx index 37c84c1..e1a25bd 100644 --- a/pages/slack-assistant/permissions-and-security.mdx +++ b/pages/slack-assistant/permissions-and-security.mdx @@ -3,7 +3,8 @@ title: "Permissions & Security" description: "@Sigilix in Slack only sees what your GitHub App scopes allow, is isolated per workspace as its own tenant, handles code ephemerally for the request, and runs under zero-retention agreements with model providers. The Slack app is installed per workspace." --- -import { Callout, Cards, Steps } from 'nextra/components' +import { Callout, Steps } from 'nextra/components' +import { Cards } from '@/components/Cards' import { FeatureCards, FeatureCard } from '@/components/FeatureCards' # Permissions & Security diff --git a/pages/triage/ci-failure-triage.mdx b/pages/triage/ci-failure-triage.mdx index 0b0239d..b904b89 100644 --- a/pages/triage/ci-failure-triage.mdx +++ b/pages/triage/ci-failure-triage.mdx @@ -3,7 +3,8 @@ title: "CI-Failure Triage" description: "When a build goes red, Sigilix reads the job logs against the diff and posts a grounded, inline root-cause comment in file:line terms — instead of a raw log dump. This path enforces grounding: it must cite the failure evidence, never a confidently-wrong guess." --- -import { Callout, Cards, Steps } from 'nextra/components' +import { Callout, Steps } from 'nextra/components' +import { Cards } from '@/components/Cards' # CI-Failure Triage diff --git a/pages/triage/how-triage-works.mdx b/pages/triage/how-triage-works.mdx index 13f4f52..3cb5b73 100644 --- a/pages/triage/how-triage-works.mdx +++ b/pages/triage/how-triage-works.mdx @@ -3,7 +3,8 @@ title: "How Triage Works" description: "The architecture behind triage: event → dispatcher → retrieve code via the code graph + symbol-aware expansion + review memory → reason about root cause, priority, and owner grounded in that context → emit a structured result → post as a single comment. Triage reads the code, not just the words in the ticket." --- -import { Cards, Steps } from 'nextra/components' +import { Steps } from 'nextra/components' +import { Cards } from '@/components/Cards' import { FeatureCards, FeatureCard } from '@/components/FeatureCards' # How Triage Works diff --git a/pages/triage/issue-triage.mdx b/pages/triage/issue-triage.mdx index 30259e6..b4dcf0a 100644 --- a/pages/triage/issue-triage.mdx +++ b/pages/triage/issue-triage.mdx @@ -3,7 +3,8 @@ title: "Issue Triage" description: "Linear and Jira issue triage — natively in both. Sigilix reads the issue and the code, then rewrites the title, sets priority and severity by blast radius, estimates effort, suggests an owner, root-causes in file:line terms, links related work, catches duplicates, and flags what's missing — posted as one grounded comment." --- -import { Callout, Cards } from 'nextra/components' +import { Callout } from 'nextra/components' +import { Cards } from '@/components/Cards' import { FeatureCards, FeatureCard } from '@/components/FeatureCards' # Issue Triage diff --git a/pages/triage/overview.mdx b/pages/triage/overview.mdx index 9a574f5..e067a8a 100644 --- a/pages/triage/overview.mdx +++ b/pages/triage/overview.mdx @@ -3,7 +3,8 @@ title: "Triage" description: "Triage is one of the pipelines the dispatcher routes to — turning a raw issue or a red build into a precise, grounded result that cites the actual code. Two kinds: issue triage (Linear & Jira) and CI-failure triage." --- -import { Callout, Cards } from 'nextra/components' +import { Callout } from 'nextra/components' +import { Cards } from '@/components/Cards' import { FeatureCards, FeatureCard } from '@/components/FeatureCards' # Triage diff --git a/pages/troubleshooting/billing.mdx b/pages/troubleshooting/billing.mdx index 235b465..c689849 100644 --- a/pages/troubleshooting/billing.mdx +++ b/pages/troubleshooting/billing.mdx @@ -3,7 +3,8 @@ title: "Billing" description: "How Sigilix billing works — the Free, Pro, Teams, Max, and Ultra plans, the 14-day Pro trial, usage, and bring-your-own-key." --- -import { Callout, Cards } from 'nextra/components' +import { Callout } from 'nextra/components' +import { Cards } from '@/components/Cards' # Billing diff --git a/styles/globals.css b/styles/globals.css index 8b9db6b..523ff88 100644 --- a/styles/globals.css +++ b/styles/globals.css @@ -255,14 +255,14 @@ body { color: var(--sig-text); } -.sig-docs-main a:not(.nextra-card):not(.sig-docs-hero-cta):not(.sig-docs-nav-cta) { +.sig-docs-main a:not(.sig-card):not(.sig-docs-hero-cta):not(.sig-docs-nav-cta) { color: var(--sig-text); text-decoration-color: rgba(255, 255, 255, 0.35); text-decoration-thickness: 1px; text-underline-offset: 3px; } -.sig-docs-main a:not(.nextra-card):not(.sig-docs-hero-cta):not(.sig-docs-nav-cta):hover { +.sig-docs-main a:not(.sig-card):not(.sig-docs-hero-cta):not(.sig-docs-nav-cta):hover { color: #fff; text-decoration-color: rgba(255, 255, 255, 0.8); } @@ -321,37 +321,38 @@ pre code { border-color: var(--sig-border-soft) !important; } -.nextra-cards { - gap: 14px !important; -} - -.nextra-card, +.sig-card, .sig-feature-card { - border: 1px solid var(--sig-border-soft) !important; - border-radius: var(--sig-radius) !important; - background: linear-gradient(180deg, rgba(255, 255, 255, 0.045), rgba(255, 255, 255, 0.018)) !important; - box-shadow: none !important; - color: var(--sig-text-soft) !important; + border: 1px solid var(--sig-border-soft); + border-radius: var(--sig-radius); + background: linear-gradient(180deg, rgba(255, 255, 255, 0.045), rgba(255, 255, 255, 0.018)); + box-shadow: none; + color: var(--sig-text-soft); } -.nextra-card:hover, +.sig-card:hover, .sig-feature-card:hover { - border-color: var(--sig-border-strong) !important; - background: rgba(255, 255, 255, 0.06) !important; + border-color: var(--sig-border-strong); + background: rgba(255, 255, 255, 0.06); } -.nextra-card span, +.sig-card-title, .sig-feature-card-title { - color: var(--sig-text) !important; + color: var(--sig-text); } +.sig-cards, .sig-feature-cards { display: grid; gap: 14px; margin-top: 1.25rem; + /* Two columns keeps even rows for the 2/4/6-card grids the docs use, instead + of Nextra's auto-fill 3-up which stranded a lone card on a second row. */ grid-template-columns: repeat(2, minmax(0, 1fr)); + align-items: stretch; } +.sig-card, .sig-feature-card { padding: 1rem; transition: @@ -359,11 +360,22 @@ pre code { background 160ms ease; } +/* Stretch to the tallest card in the row so rows stay flush. */ +.sig-card { + display: flex; + flex-direction: column; + height: 100%; + text-decoration: none; +} + +.sig-card-title, .sig-feature-card-title { + display: block; margin: 0; font-weight: 650; } +.sig-card-body, .sig-feature-card-body { margin-top: 0.55rem; color: var(--sig-text-muted); @@ -371,7 +383,13 @@ pre code { line-height: 1.6; } -.sig-feature-card-body :last-child { +.sig-card-body > :first-child, +.sig-feature-card-body > :first-child { + margin-top: 0; +} + +.sig-card-body > :last-child, +.sig-feature-card-body > :last-child { margin-bottom: 0; } @@ -679,6 +697,7 @@ footer { } @media (max-width: 640px) { + .sig-cards, .sig-feature-cards { grid-template-columns: 1fr; }