Commit Graph

2287 Commits

Author SHA1 Message Date
shadcn 175c724c87 chore: add .claude/launch and ignore plans 2026-07-16 12:58:39 +04:00
Parth Sharma 8c0e5edb71 fix: update Wensity registry logo (#11138) 2026-07-16 12:12:11 +04:00
shadcn dd679a6e25 chore(v4): stop tracking generated styles (#11190)
* chore(v4): stop tracking generated styles

Phase 2 of generated-output untracking (follows #11189). The compiled
style sources under apps/v4/styles (base-*/radix-*, ~1,080 files) are
produced by registry:build (copyUIToStyles + RTL) on every deploy, so
the committed copies were redundant. Only styles/README.md stays
tracked.

Unlike public/r/styles, these are imported modules, so:

- code-check.yml: the typecheck job now runs
  `registry:build --style all` (the fast targeted build) after
  installing Bun, since v4 typecheck imports @/styles/*.
- next.config.mjs: fail fast in dev with the regeneration command when
  the styles are missing, instead of a module-not-found cascade.
- .prettierignore: skip styles/ — targeted builds intentionally skip
  prettier on generated output.
- turbo.json: declare public/r/styles/** and styles/** as build
  outputs so a turbo cache replay of v4#build restores them (also
  fixes a latent phase-1 gap where a cache hit could deploy without
  registry JSON).

Fresh clones: run `pnpm --filter=v4 registry:build --style all` once
(~50s) before next dev; see styles/README.md.

* docs: document untracked generated styles in CONTRIBUTING

* fix(v4): register gitignored styles as tailwind sources

Tailwind v4's source detection skips gitignored files, so untracking
styles/ dropped every utility class that only appears in the generated
output — progress bars collapsed (h-1), radio indicators and bubble
radii lost their styles.

An explicit @source glob only overrides .gitignore when the path
through the ignored level is literal: ../styles/**/*.tsx gets pruned
at the ignored directory, while ../styles/base-nova/**/*.tsx is
scanned. Register each generated style explicitly. When adding a new
style, add a line here.

Verified byte-identical CSS output against an unrestricted scan.
2026-07-16 12:02:36 +04:00
shadcn 3a124632a6 chore(v4): stop tracking generated registry styles (#11189)
public/r/styles output for new-york-v4 and the base-*/radix-* style
combinations is regenerated by registry:build on every deploy, so the
committed copies were redundant. Ignore them and drop them from the
index (~4,000 files).

Still tracked, since the build does not produce them:
- public/r/styles/index.json: static contract fetched by older CLIs
- public/r/styles/default, public/r/styles/new-york: frozen v3 styles
  maintained by editing the JSON directly

calendar.test.ts now scans only those frozen styles for published JSON;
generated styles are covered by the source checks.
2026-07-16 10:50:26 +04:00
Abhishek 6a5e6da78c add: grainly icons to the registry (#11156) 2026-07-16 07:19:50 +04:00
github-actions[bot] bc0705384b chore(release): version packages (#11170)
Co-authored-by: shadcn <m@shadcn.com>
2026-07-14 20:25:11 +04:00
shadcn 3b7391c60f ci(release): use Node 24 for npm publishing (#11169) 2026-07-14 20:20:28 +04:00
shadcn 0ec4a7ffbf feat: @shadcn/helpers (#11168)
* feat(helpers): add scripted chat adapters

* build(helpers): add release plumbing

* docs(helpers): refine ai-sdk and tanstack-ai guides

* refactor(helpers): rename script types to chat

* docs: update ai-sdk intro

* docs: add changeset
2026-07-14 20:08:51 +04:00
shadcn 84dcd35d07 fix(docs): restore sidebar scroll before hydration (#11166) 2026-07-14 19:08:13 +04:00
shadcn 8d0293fe7a fix(docs): preserve duplicate sidebar link position (#11163) 2026-07-14 17:03:42 +04:00
shadcn 91d79c6656 docs: polish component documentation (#11162)
* fix(docs): preserve sidebar scroll position

* style(docs): increase surface radii

* docs(components): promote example sections

* fix(docs): redirect typography pages to typeset
2026-07-14 16:26:00 +04:00
Anish bb8ba0dace feat(registry): add aniui to registry directory (#11113) 2026-07-13 15:11:54 +04:00
Dylan Merigaud e25f651351 feat(directory): add @approvals-ui registry (#11118) 2026-07-13 11:18:49 +04:00
bntvllnt 8d7c48ab3a Add @vllnt-ui to registry directory (#11132) 2026-07-13 11:18:15 +04:00
Dominik K. d74d5b60fa fix: update dominik-ui homepage url (#11139)
Co-authored-by: Cursor <cursoragent@cursor.com>
2026-07-13 11:14:52 +04:00
shadcn 3cdaa6eb2f feat: typeset (#11133)
* feat(typeset): add typography stylesheet and invariants

* feat(typeset): add builder and preview

* feat(v4): integrate typeset with docs

* docs(typeset): add documentation and changelog

* fix: codeblocks
2026-07-10 19:10:41 +04:00
LN 21e4ceb944 feat(registry): add @threecn to registry directory (#11114)
* feat(registry): add @threecn to registry directory

* feat(registry): shorten @threecn description
2026-07-09 06:06:31 +04:00
shadcn 093a538453 feat(registry): build fonts for new-york-v4 (#11116)
* feat: build fonts for new-york-v4

* chore: clean up orphan fonts
2026-07-08 16:59:56 +04:00
github-actions[bot] 5e800ca2bd chore(release): version packages (#11099)
Co-authored-by: shadcn <m@shadcn.com>
@shadcn/react@0.2.1
2026-07-08 12:10:47 +04:00
shadcn f6a2647854 fix(react): follow the live edge after an anchored reply fills the viewport (#11106)
* fix(react): follow the live edge after an anchored reply fills the viewport

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

* fix(react): keep the scroll button quiet while follow-output is engaged

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

* fix(v4): wire base commands example menu items with onClick

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

* style: format

---------

Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
2026-07-08 12:07:23 +04:00
shadcn 68e1f171aa refactor(create): consolidate create code into a single route group (#11102)
* refactor(create): consolidate create code into a single route group

Move all create code from app/(app)/create and app/(create) into the
nested route group app/(app)/(create), and the preview iframe pages
into app/(view). URLs are unchanged: /create keeps the (app) chrome
(and the header now persists across / <-> /create), /init keeps its
root-level path for the CLI contract, and /preview stays chrome-less
for the customizer iframe.

Registry sources and published payloads are untouched: two temporary
tsconfig path aliases map @/app/(create)/* and the legacy
@/app/(app)/create/* onto the new location. App code imports the real
path.

Also inline parse-config and build-instructions into the create lib so
the init routes are thin HTTP handlers, and remove the icon-placeholder
and lib re-export shims.

* fix
2026-07-07 15:59:14 +04:00
shadcn dd6ce77cf1 fix(react): hold newly appended scroll anchors while autoScroll is enabled (#11100)
The tail spacer makes a freshly anchored turn read as "at the end", so
reconcileFollowMode re-armed following-bottom one frame after the anchor
placement and the first streamed chunk yanked the reader off the anchor.
Exclude the anchored-to-message hold from arming, matching the existing
settling-jump exclusion.


Claude-Session: https://claude.ai/code/session_0186fcQpHo1aLQC4wRpwKFFu

Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
2026-07-07 10:04:10 +04:00
Erick 628e427231 fix(message-scroller): avoid ResizeObserver loop error by coalescing resize handling into rAF (#11085)
Co-authored-by: shadcn <m@shadcn.com>
2026-07-07 09:37:08 +04:00
shadcn d8ace420ba feat(create): show a loading placeholder for the customizer and preview (#11093)
* feat(create): show a loading placeholder for the customizer and preview

* fix(create): render the placeholder as the suspense fallback so it prerenders
2026-07-06 13:13:00 +04:00
shadcn 4163c1dbea feat(create): pick shuffle presets from a curated list (#11092)
* feat(create): pick shuffle presets from a curated list

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>

* chore: format

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>

---------

Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
2026-07-06 12:32:29 +04:00
Pulkit 468674b1f0 docs(registry): update @pulkitxm homepage to pulkit.page (#11016)
* docs(registry): update @pulkitxm homepage to pulkit.page

* Update directory.json
2026-07-06 11:51:43 +04:00
Yuta Nakano b13050763e feat(registry): add @pulld to directory (#10997) 2026-07-06 11:50:27 +04:00
sezabut c4b22943fe feat(registry): add @mozaika to the registry directory (#11090)
Co-authored-by: Sam C <sam@mozaika.design>
2026-07-06 11:49:51 +04:00
Eric Tsai 34f0dabe48 feat(registry): add @ericts registry (#11087) 2026-07-06 11:49:35 +04:00
heykirman 5b5db1f8ea feat(registry): add @nusaiba registry (#11076)
Add Nusaiba motion-first shadcn marketing blocks to the public registry index.

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-07-06 11:49:20 +04:00
shadcn d0fae52822 fix shadcn@4.13.0 2026-07-03 16:27:55 +04:00
github-actions[bot] 2ef6388ca1 chore(release): version packages (#11083)
* chore(release): version packages

* fix

---------

Co-authored-by: shadcn <m@shadcn.com>
2026-07-03 16:20:38 +04:00
shadcn f3e7de1175 feat: base (#11082)
* feat(create): default design system config to base ui

* feat(www): default docs and init to base ui

* feat(www): default preview styles to base-nova

* feat(shadcn): default init and prompts to base ui

* docs: default to base ui in guides and examples

* docs: add changelog

* chore: changeset

* fix: address base ui default review findings

* fix: init handling

* feat: add migrate-radix-to-base skills

* fix: typo
2026-07-03 16:14:53 +04:00
jasleenkaur-qed42 a409271270 fix(create): prevent customizer reset when template query param is set (#11074)
* fix(create): prevent customizer reset when template query param is set

Use shallow nuqs updates and remove racing picker effects so selections
persist on /create?template=start. Sync preset to URL once across hook
instances and add regression tests for preset URL encoding.

Fixes #11060

* fix(create): apply undo/redo via shallow preset update

Undo/redo went through router.replace, which triggers a full server
navigation that resets the preset on prod (#11060). Route it through the
shared shallow search-params update instead, and keep the useSearchParams
reader so the transient values nuqs emits mid-update are not recorded as
phantom history entries.

* fix(create): satisfy typecheck and prettier in search-params test

Add the required `template` field to the first buildPresetUrlUpdate
fixture so it matches DesignSystemSearchParams, and apply prettier
formatting to search-params.ts and its test (both were failing
format:check).

---------

Co-authored-by: shadcn <m@shadcn.com>
2026-07-02 19:43:25 +04:00
Utkarsh Singhal 70afde8358 feat(registry): add @vue-bits and @svelte-bits to the registry directory (#11066) 2026-07-02 15:58:38 +04:00
shadcn 574e85e22d Merge branch 'main' of github.com:shadcn-ui/ui 2026-07-02 14:50:44 +04:00
shadcn 3310c45dfb chore: back to neutral 2026-07-02 14:46:25 +04:00
coi 34223a842d refactor(base-drawer): migrate base drawer to @base-ui/react/drawer (#10430)
* refactor(base-drawer): rewrite base drawer wrapper for @base-ui/react/drawer

Replace vaul with @base-ui/react/drawer as the primitive behind the
base drawer wrapper.

Keep the public API aligned with the radix drawer shape while
rewriting DrawerContent to compose Backdrop, Viewport, Popup, and
Content internally.

Keep the registry dependency change in the same commit so the wrapper
rewrite lands as one source-level migration step.

* refactor(drawer): move shared drawer direction rules from stylesheets to primitives

Shared drawer styles previously owned direction-specific layout in CSS.
With base and radix now exposing different direction attributes,
keeping that logic in shared tokens would duplicate primitive-specific
branching in the stylesheets.

Move direction-specific layout into the base/radix drawer wrappers and
leave shared CSS responsible only for visual surface styling.

Also move handle visibility and header alignment into TSX, and unify
the shared drawer token names to cn-drawer-*.

* fix(base-drawer): migrate examples, blocks, and app consumers to render and swipeDirection

Update in-repo base drawer consumers to the new wrapper API.

Replace asChild usage with render, switch direction to swipeDirection,
and align examples, blocks, app consumers, and docs with the new
base drawer usage pattern.

* chore: update registries

* fix(drawer): update base marker example usage

* fix(drawer): clean up base style selectors

* docs: add migration docs

* wip

* fix: nested

* feat: drawer

* fix

* fix

* fix

* fix: pointer events

* fix: clean up radix drawers

* fix: position

---------

Co-authored-by: shadcn <m@shadcn.com>
2026-07-02 14:16:37 +04:00
shadcn dbf9c5ebc4 chore(deps): bump base-ui to 1.6.0 (#11059) @shadcn/react@0.2.0 2026-06-30 10:33:51 +04:00
shadcn 897e9add14 feat(command-menu): add styles group linking to shadcn/create (#11052)
Co-authored-by: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-29 21:30:46 +04:00
shadcn 8d6553a7f5 fix: orientation props on attachment (#11053) 2026-06-29 21:29:49 +04:00
shadcn 683073f102 feat(registry): add ai-elements components to new-york-v4 (#11051)
* feat(registry): add ai-elements components to new-york-v4

Adds attachment, bubble, marker, message, and message-scroller (registry:ui) to the new-york-v4 style, ported from radix-vega (also Radix-based, so non-breaking). Regenerates the runtime indexes (__index__.tsx, __components__.tsx) and the built catalog so they stay in sync.

* fix(registry): use resolved orientation for attachment variants

data-orientation used the normalized resolvedOrientation while the variant classes used the raw orientation prop, desyncing them when orientation is null. Use resolvedOrientation for both. Addresses Copilot review on #11051.
2026-06-29 20:56:50 +04:00
shadcn 02e398ab73 feat(skill): add chat component guidance to shadcn skill (#11048)
Add MessageScroller, Message, Bubble, Attachment, and Marker guidance,
driven by a baseline gap analysis: fresh agents hand-rolled all five
primitives, so this adds a rules/chat.md, discovery hooks in SKILL.md,
two evals, and supporting composition/styling rules.

Co-authored-by: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-29 20:18:46 +04:00
shadcn af79276f7e fix(v4): build @shadcn/react before registry build (#11049)
The v4 app imports @shadcn/react/message-scroller, which resolves via the
package's built dist. CI is a fresh clone and registry:build only built
shadcn, so the import was unresolved and the dev server never compiled,
timing out the test job. Build @shadcn/react first.

Co-authored-by: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-29 19:54:41 +04:00
Arik Chakma 5a3ad36a5e fix(message-scroller): keep scrollbar gutter stable during autoscroll (#11032) 2026-06-29 16:32:21 +04:00
shrivi-maker a63e8359ec feat(registry): add @channel3 to the registry directory (#11026)
Co-authored-by: Shrivathsan Sakthisundaram <285776207+shrivi-maker@users.noreply.github.com>
Co-authored-by: WOZCODE <contact@withwoz.com>
2026-06-29 15:24:17 +04:00
Tommaso a72491cb9b Add evex to registry directory (#11023) 2026-06-27 13:14:17 +04:00
rds_agi 67aec7dcc5 fix(base): wrap dropdown label/items in group in message-scroller commands example (#11025)
DropdownMenuLabel renders Base UI's Menu.GroupLabel, which throws
"MenuGroupContext is missing" (Base UI error #31) unless rendered inside
a Menu.Group. Wrap the label and items in DropdownMenuGroup so the
"Jump to..." menu opens without crashing.

Co-authored-by: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-27 13:13:58 +04:00
shadcn 40c7064532 docs: changelog 2026-06-26 22:18:01 +04:00
shadcn 5b3369f6ee fix: sidebar link 2026-06-26 21:49:48 +04:00