Skip to content

Overhaul UI Customization docs: new structure, reference tree, and AI plugin integration - #306

Open
rakesh-snippyly wants to merge 37 commits into
mainfrom
claude/ui-customization-docs-review-m7hwcn
Open

Overhaul UI Customization docs: new structure, reference tree, and AI plugin integration#306
rakesh-snippyly wants to merge 37 commits into
mainfrom
claude/ui-customization-docs-review-m7hwcn

Conversation

@rakesh-snippyly

Copy link
Copy Markdown
Contributor

Summary

Full overhaul of the UI Customization tab, aimed at making a junior frontend engineer productive quickly and steering users toward the UI Customization Plugin. This PR contains the codex/ui-customization-guide-refresh restructure plus a branch-vs-main review pass that restored lost content from the old wireframes docs, removed internal agent-guide artifacts, and fixed navigation/link/build regressions.

New structure (UI Customization tab)

  • Concepts — Overview (landing page) → How it works (mental model) → Choosing an approach (decision tree) → Setup → UI Customization Plugin
  • Approaches — CSS → Wireframes (setup, layout customization, variables, tokens, context, action components) → Primitives → Headless → Combining approaches
  • Recipes & Troubleshooting (new) — patterns & tips, debugging, edge cases & limitations, cross-cutting concerns (a11y/i18n/RTL)
  • Feature Guides (new) — overview/index first, then per-feature guides that link into the per-component pages
  • Components: Async / Realtime — the existing per-component wireframe/variable/primitive pages, unchanged
  • Reference (new) — component catalog/glossary, wireframe slot trees (790 slots), props/APIs/hooks/events/data models/feature flags, CSS variables/classes, behavior reference, and an AI Agent Workflow group for the agent-facing pages

Review pass on top of the restructure

Restored from the old wireframes docs

  • Disable Global Styles (globalStyles: false) and the className/style-does-nothing warning on the CSS page
  • React + Other Frameworks tab parity across styling, wireframes overview, dark mode, shadow DOM, and injectCustomCss examples
  • The worked setUiState markup example, the "empty wireframes keep default styling" warning, and Theme Playground promotion
  • All 58 legacy URL redirects that had been deleted (their old URLs 404'd); localisation restored to the nav

Junior-readability cleanup

  • Stripped internal rule IDs (R0/R9b/…), "Decision tree QN" shorthand, lab-notebook voice, and agent-spec boilerplate from all human-facing pages; agent-facing pages are grouped and labeled under Reference → AI Agent Workflow
  • Replaced leaked SCSS #{rem(...)} values with real values + px comments in the CSS variables reference
  • De-duplicated the two "Overview" pages and explained the Feature Guides / Components / Reference split in the reading order

Correctness fixes

  • Reverted backend-sdks/node.mdx (edits inside its MDX comment block broke the Mintlify build)
  • useUnreadCommentAnnotationCountOnCurrentDocumentuseUnreadCommentCountOnCurrentDocument (5 files); bubbleOnPinHover default aligned to true; 17 broken anchor links fixed
  • Reference API/props/hooks/events/data-models pages now point to the canonical api-reference pages as source of truth

AI plugin integration

  • Consistent "Have this design in Figma?" nudge on the overview, decision tree, setup, every approach page, and the comments/notifications feature guides — always stating current scope (comments + notifications)
  • Plugin page: defined the Figma "Loop" concept, added a no-Figma fallback path, explained the Judge, linked --mode values to the approach pages

Validation

  • mint broken-links passes (it failed before the node.mdx revert)
  • Repo-wide link, anchor (github-slugger), orphan-page, and jargon sweeps are clean; docs.json validated

Related

🤖 Generated with Claude Code

https://claude.ai/code/session_019wS4bsnet283ve432kWrXK


Generated by Claude Code

yoen-velt and others added 22 commits June 29, 2026 19:34
…n-guide-refresh

Co-authored-by: Cursor <cursoragent@cursor.com>

# Conflicts:
#	async-collaboration/comments-sidebar/v2/customize-behavior.mdx
#	async-collaboration/comments-sidebar/v2/setup.mdx
#	docs.json
#	ui-customization/features/async/comments/comment-sidebar/comment-sidebar-v2-primitives.mdx
…omization guide

Restores the per-feature wireframe/primitive pages (React + Other Frameworks
tabs, screenshots, Storybook links) as Components sections alongside the new
guide, removes their away-redirects, cross-links them from the reference
lists, and documents unstyled mode (setUnstyledMode) in CSS/Headless pages.

Co-authored-by: Cursor <cursoragent@cursor.com>
Co-authored-by: Cursor <cursoragent@cursor.com>
Co-authored-by: Cursor <cursoragent@cursor.com>
… audience callouts

Co-authored-by: Cursor <cursoragent@cursor.com>
Co-authored-by: Cursor <cursoragent@cursor.com>
Co-authored-by: Cursor <cursoragent@cursor.com>
…alog

Co-authored-by: Cursor <cursoragent@cursor.com>
Co-authored-by: Cursor <cursoragent@cursor.com>
…ops from main

Co-authored-by: Cursor <cursoragent@cursor.com>
Co-authored-by: Cursor <cursoragent@cursor.com>
… examples

Co-authored-by: Cursor <cursoragent@cursor.com>
Co-authored-by: Cursor <cursoragent@cursor.com>
…aches

Co-authored-by: Cursor <cursoragent@cursor.com>
…subpages

Co-authored-by: Cursor <cursoragent@cursor.com>
Co-authored-by: Cursor <cursoragent@cursor.com>
Co-authored-by: Cursor <cursoragent@cursor.com>
…ent, nudge AI plugin

Review of this branch against main found strong new content (behavior
reference, decision tree, per-layer approach guides) mixed with internal
agent-guide artifacts and regressions vs the old wireframes docs. This
commit restructures the UI Customization tab and fixes what the review
found:

Navigation
- New 'Recipes & Troubleshooting' group rescues the orphaned human pages
  (patterns-and-tips, debugging, edge-cases-and-limitations, localisation
  — the last was in main's nav and had been dropped).
- Agent-workflow pages (rules, build-methodology, extraction,
  build-gotchas, verifying-a-customization, sdk-gaps-and-blockers,
  manifest, source-of-truth-invariant) grouped under Reference >
  'AI Agent Workflow' with plugin pointers instead of dangling orphaned.
- Feature Guides now open with an overview/index page (retitled
  other-features) that also covers Huddle, Live Selection, Single Editor
  Mode, View Analytics, and Rewriter.
- Context moved into the Wireframes subgroup (it depends on token syntax).
- UI Customization Plugin page added to the tab's Concepts group.
- Restored all 58 deleted redirects (their old URLs 404'd), dropped 4
  redirect sources that leaked internal naming, removed a duplicate
  Comment Pin nav group.

Restored from main's wireframes docs
- styling.mdx: Disable Global Styles (globalStyles: false), the
  className/style-does-nothing warning, and React + Other Frameworks
  tabs for shadow DOM, injectCustomCss, and dark mode.
- layout.mdx: Other Frameworks tabs for the quick example, token
  directives, and the interactivity do/don't example.
- setup-wireframes.mdx: the 'empty wireframes keep default styling'
  warning; template-variables.mdx: the worked setUiState markup example.

Junior-readability cleanup
- Stripped internal rule IDs (R0/R1/R4/R9b/R13/…), 'Decision tree QN'
  shorthand, 'verified in-browser' lab voice, 'buildable spec' agent
  framing, and source-of-truth boilerplate from all human-facing pages;
  replaced with plain language and links.
- css-variables.mdx: replaced leaked SCSS #{rem(...)} interpolations with
  real values + px comments.
- De-duplicated the two 'Overview' pages, deleted overview's Docs-map
  table, humanized its checklist.
- Deleted internal QA 'Coverage' sections from behavior detail pages;
  retitled 'The two you asked about'; reference API/props/hooks/events/
  data-models pages now link the canonical api-reference as source.

Fixes
- 17 broken anchor links (github-slugger single/double-hyphen mismatches)
  plus retargeted release-note and customize-behavior anchors.
- useUnreadCommentAnnotationCountOnCurrentDocument (doesn't exist) →
  useUnreadCommentCountOnCurrentDocument in 5 files.
- bubbleOnPinHover default aligned to true across reference pages.
- Reverted backend-sdks/node.mdx to main: branch edits inside its MDX
  comment block broke the whole Mintlify build (acorn parse error).
- agentic-overview.mdx skill/rule counts aligned with
  installation-plugin.mdx.

AI plugin nudges
- One consistent 'Have this design in Figma?' Tip on overview,
  how-it-works, decision-tree, setup, styling, wireframes, primitives,
  headless, combining-approaches, context, comment-surfaces,
  notifications, and the feature-guides overview.
- Plugin page: defined the Figma 'Loop' concept, added a no-Figma
  fallback path, explained the Judge, linked --mode values to the
  approach pages.

Validated with mint broken-links (passes) and a full jargon/link/anchor
sweep.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_019wS4bsnet283ve432kWrXK
@mintlify

mintlify Bot commented Jul 30, 2026

Copy link
Copy Markdown
Contributor

Preview deployment for your docs. Learn more about Mintlify Previews.

Project Status Preview Updated (UTC)
velt 🟢 Ready View Preview Jul 30, 2026, 12:11 AM

@mintlify

mintlify Bot commented Jul 30, 2026

Copy link
Copy Markdown
Contributor

Preview deployment for your docs. Learn more about Mintlify Previews.

Project Status Preview Updated (UTC)
velt 🟡 Building Jul 30, 2026, 12:08 AM

Conflict resolutions:
- realtime-collaboration/crdt/overview.mdx: took main's side (17 CRDT
  integrations vs the branch's 4; strictly newer content).
- release-notes/version-5/sdk-changelog.mdx: kept main's more specific
  per-component doc links (all four anchors verified to exist) with the
  branch's cleaner phrasing for the beta.15 notifications entry.
- api-reference/sdk/models/data-models.mdx: combined both sides — main's
  per-component notifications-primitives links plus the branch's pointer
  to the primitives catalog.

Follow-ups required by the merge:
- Main now codifies the no-em-dash house rule in CLAUDE.md; rewrote the
  63 em-dashes this branch had introduced (commas/colons/semicolons/
  connectives), keeping the 15 in link text that mirror em-dash headings
  whose slugs other links depend on.
- backend-sdks/node.mdx now carries main's version (main independently
  repaired the parse error this branch had reverted).

Validated: no conflict markers remain; mint broken-links passes;
docs.json valid; nav orphan check clean.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_019wS4bsnet283ve432kWrXK
…riables page names

The restructure had renamed these to 'Wireframe tokens' and 'Wireframe
variables', which broke familiarity with the long-standing page names.
Restore the original titles and align all 17 files' link text; page
URLs, headings, and anchors are unchanged. The Conditional Templates
description now names VeltIf, VeltData, and velt-class directly.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_019wS4bsnet283ve432kWrXK
…eadless approach pages

Both pages were React-only. Every code example now has the standard
React / Next.js + Other Frameworks tab pair, matching the rest of the
docs: custom-element forms with kebab-case attributes for primitives
(velt-comments, velt-comment-dialog, the status dropdown family) and
Velt.getCommentElement() API methods for the headless data/actions
(getAllCommentAnnotations subscribe/unsubscribe, addComment,
resolveCommentAnnotation). All names verified against the canonical
customize-behavior and comment-dialog primitives pages.

Also on the Feature Guides overview: surface the standard comment
components directly in the guides table (Comment Dialog, Sidebar,
Pin/Bubble/Tool rows) and lead the row for the Text/Inline/Multi-thread
guide with 'Comment surfaces' so it matches the sidebar name.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_019wS4bsnet283ve432kWrXK
Remove the standalone 'Feature Guides' nav group: it ran parallel to the
Components section and read as redundant. Each guide now opens its
feature's Components group as that group's first page:

- Comments -> Comment surfaces guide (first page of the group)
- Autocomplete -> Mentions & autocomplete guide
- In-app Notifications / Reactions / Recorder / Activity Logs -> their
  guides, sidebar-titled 'Overview'
- Tags/Arrows/Areas guide placed before the Arrows group
- Presence & cursors guide opens Components: Realtime Collaboration
- The index page is retitled 'Customize by Feature' and opens
  Components: Async Collaboration

Page URLs are unchanged, so no redirects are needed. Updated the
overview reading order and the eight agent-page Info boxes that pointed
at the old group.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_019wS4bsnet283ve432kWrXK
…docs' scannability

The Concepts pages read as dense essays next to the old docs' short,
code-first pages. Restore that structure and simplicity without losing
content:

- overview: reading order cut to six short steps; the agent-flavored
  'Implementation checklist' removed (its content lives in the decision
  tree and Setup).
- how-it-works: numbered spec-style headings replaced with plain ones;
  the densest paragraphs (wireframes-vs-primitives blockquote, cloned-
  markup bullet, primitives layout note) split or tightened.
- decision-tree: golden principles cut from five to three; the S1-S8
  sub-decision wall collapsed into an AccordionGroup with question-style
  titles; Q2/Q3 shortened and their broken nested bolding fixed.
- setup: title shortened to 'Setup'; intro Note cut to two sentences;
  the cross-cutting section compressed to one-line bullets plus the
  deep-dive link; the closing 'How to think' essay removed (duplicated
  in Patterns & tips).

Inbound anchors preserved (setup sections 2/3/4/6 keep their headings);
mint broken-links passes.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_019wS4bsnet283ve432kWrXK
Two conflicts, both the same shape as the previous merge: main repointed
suggestion-related links to the specific comment-dialog primitives
anchors (veltcommentdialogsuggestion / veltcommentdialogsuggestionbanner,
both verified to exist) where this branch had generic reference-page
links. Took main's side in data-models.mdx and the version-5 changelog;
its '## [Usage Examples]' form matches the file's established pattern.

Main's new comment-dialog overview page auto-merged into the nav
cleanly. mint broken-links passes; docs.json valid; no orphans.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_019wS4bsnet283ve432kWrXK
…mplates on main's structure

Per review feedback, the Wireframes subgroup pages should read as main's
docs first, expanded with this branch's exhaustive material:

- template-variables.mdx: restored main's full page as the base
  (Using Built-in Velt Data with Basic Usage + Available Data Objects
  tables + context resolution + the custom user card example; Injecting
  Your Own Data with Setting/Using subsections), then appended the
  branch's per-component variable catalog as section 3. Main's one
  error stays fixed: injected values read via the uiState. path, with
  a note about the older bare-name form.
- conditional-templates.mdx: restored main's page as the base
  (Velt If component / Velt If attribute / Syntax / Strict CSP /
  Examples), enriched Syntax with the branch's nested-path forms and
  full operator whitelist, and kept the branch's extras after
  (velt-data/velt-class directives, mapped vs flat-config, nested-access
  roots, frequently used variables, debugging). Fixed main's wrong
  element name in the Velt If attribute example
  (velt-comment-dialog-wireframe-header -> velt-comment-dialog-header-wireframe).
- layout-customization.mdx: restored main's intro ('what you can do'
  bullets + the changes-apply-globally Note, now linking the scoping
  exception).

Inbound anchors preserved (mapped-vs-flat-config unchanged; the
setUiState link in how-it-works repointed to main's restored
2-injecting-your-own-data anchor, which an existing inbound link
already expected). mint broken-links passes.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_019wS4bsnet283ve432kWrXK
… 3 in Template Variables

Demote the per-component catalog headings (Comment Dialog … Tags, Notes)
from H2 to H3 so the page TOC shows them indented under '3. Complete
Variable Catalog (Per Component)' instead of as siblings. Anchor slugs
are text-based, so no links change.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_019wS4bsnet283ve432kWrXK
- Replace the detailed SDK setup walkthrough (auth provider code,
  setDocuments) with a short 'Install Velt' step linking to the
  Quickstart and Installation Plugin.
- Remove the 'complete minimal example' section.
- Convert the page to <Steps titleSize="h2"> with imperative titles
  (Install Velt / Choose your shadow DOM strategy / Set up the folder
  structure / Follow the structural rules), matching the docs'
  setup-page convention; shadow DOM options now have React + Other
  Frameworks tabs.
- Cross-cutting concerns stays as a closing section.
- Repointed the five inbound anchors (styling, css-variables,
  combining-approaches x2, localisation) to the new step headings.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_019wS4bsnet283ve432kWrXK
…ded Setup step

Remove the 'UI Customization Plugin' entry from the Concepts sidebar
group. Instead, Setup gains a second step, 'Recommended: use the UI
Customization Plugin', after Install Velt: use the plugin if the design
is in Figma, otherwise continue with the manual steps below. The
now-redundant plugin Tip at the top of the page is removed.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_019wS4bsnet283ve432kWrXK
Setup is now only actions:
- Removed the 'Follow the structural rules' step: rules are reference,
  not a one-time action, and one of its two rules restated the shadow
  DOM step. The one-VeltWireframe rule became a Note inside the
  folder-structure step, which already houses the registry file.
- The cross-cutting section (guidance for while you build, not setup)
  shrank to a one-line pointer Note; localisation.mdx dropped its
  circular backlink and combining-approaches its anchor into the
  removed step.
- Steps are now: Install Velt / Recommended: use the plugin / Choose
  your shadow DOM strategy / Set up the folder structure.

Overview stops re-teaching what How-it-works owns: the default-
preference and mixing paragraphs after the layer table collapsed to one
routing line.

Decision tree leads with the tool: the numbered 'How to use this' list
and both pre-Q1 blockquotes (which duplicated accordion checks 1-2 and
the matrix's reference links) compressed to a two-sentence lead-in.

mint broken-links passes.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_019wS4bsnet283ve432kWrXK
…up step

The closing line pointing at the approach pages was trailing prose after
the Steps block; it is the next action, so it becomes step 5. The
cross-cutting Note moves inside it, since that guidance applies while
you build.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_019wS4bsnet283ve432kWrXK
The four-layer comparison existed in three tables and shadow DOM in
three places. Each page now owns one thing:

- overview (orient + route): its layer table drops the Design control
  and Effort columns, which the decision tree's comparison matrix owns.
- how-it-works (mental model only): 'Mix layers per feature' loses its
  five worked examples and the one-registry rule (Combining approaches
  and Setup own those); the primitives-vs-wireframes section keeps the
  mechanism but hands the 'so which do I pick' decision to the decision
  tree's UI-component-library table, where it was already documented;
  Shadow DOM shrinks to the concept plus links to Setup (the action)
  and CSS (the detail). Section retitled 'Wireframes are copies;
  primitives are components' to name the mechanism it teaches.
- decision-tree (the tool): dropped leftover 'Record layer = mixed'
  spec voice.

Also replaced four inbound links that targeted <Step title> anchors on
Setup with links to the page: Setup no longer has markdown headings, and
the repo's only precedent for step-title anchors is itself broken.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_019wS4bsnet283ve432kWrXK
284 -> 209 lines, same coverage, less explaining:

- Intro cut from five stacked blocks to a one-line definition plus the
  playground/plugin Info and the className warning; the separate 'The
  model' section folded into the theming section (one line about legacy
  tokens).
- Headings are now plain and scannable (Make your CSS reach Velt /
  Theme with variables / Dark mode / Fonts / Override classes /
  Unstyled mode) instead of 'Steps' with six numbered 'Step N: long
  sentence' titles, which implied a required sequence.
- The four-bullet 'Shadow DOM & wireframes (root vs nested)' subsection
  plus its Tip compressed into one Note.
- Dropped restatement lines that repeated the code above them (the dark
  mode recap, the injectCustomCss recap, the unstyled-mode trailer),
  and trimmed the class-override workflow to three steps.
- Repointed 13 inbound links across 13 files to the new anchors.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_019wS4bsnet283ve432kWrXK
…section

The playground was only linked from the page-level Info callout. Add it
as a Tip in 'Theme with variables', where you are actually writing the
tokens it generates, and reword the top Info so the two mentions serve
different purposes (page-level shortcuts vs point-of-use).

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_019wS4bsnet283ve432kWrXK
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants