Compare commits

...

82 Commits

Author SHA1 Message Date
shadcn
69a88f9579 Merge branch 'main' into shadcn/code-format 2026-03-15 12:48:37 +04:00
shadcn
4e8263d7a3 ci: add code-format action 2026-03-15 12:47:01 +04:00
Frank
e000e17856 fix(registry): register next form examples (#10021) 2026-03-15 11:50:47 +04:00
shadcn
1be8f98c46 feat: add namespace validation for registries (#10033) 2026-03-15 11:07:13 +04:00
Copilot
6e476e4756 Rename @hooks registry to @shadcnhooks (#10036)
* Initial plan

* Rename @hooks registry to @shadcnhooks

Co-authored-by: shadcn <124599+shadcn@users.noreply.github.com>

---------

Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: shadcn <124599+shadcn@users.noreply.github.com>
2026-03-15 11:06:56 +04:00
github-actions[bot]
e2d36a3a7d chore(release): version packages (#10046)
Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
2026-03-15 10:07:48 +04:00
shadcn
a97ebe54f1 fix: bundle @antfu/ni to resolve tinyexec missing module error (#10041)
* fix: bundle @antfu/ni to resolve tinyexec missing module error

Fixes #10028.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>

* chore: changeset

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>

---------

Co-authored-by: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-15 10:01:15 +04:00
Ahmed Zougari
b2cc0dfe59 fix(docs): update tanstack commands (#10045) 2026-03-15 10:00:58 +04:00
github-actions[bot]
af99d4ebd3 chore(release): version packages (#10037) 2026-03-14 18:50:45 +04:00
shadcn
a0a072dcdd Merge pull request #9929 from kapishdima/fix/registry-font
Add fontsource and support override for registry:font install
2026-03-14 18:30:41 +04:00
KapishDima
447c7aac06 Merge branch 'main' into fix/registry-font 2026-03-14 16:29:44 +02:00
shadcn
752615f231 Merge pull request #10032 from shadcn-ui/codex/rename-blocks-so-registry
chore: rename @blocks registry to @blocks-so
2026-03-14 18:21:18 +04:00
shadcn
f9b365bc7f chore: changeset 2026-03-14 16:13:05 +04:00
shadcn
17a1a9093a Merge branch 'fix/registry-font' of github.com:kapishdima/ui into fix/registry-font 2026-03-14 16:12:34 +04:00
shadcn
8159e98075 feat: update schema 2026-03-14 16:12:27 +04:00
shadcn
6a527b3e75 chore: rebuild registry 2026-03-14 16:12:18 +04:00
shadcn
ebe689e85c docs: update font examples 2026-03-14 16:12:07 +04:00
shadcn
8b683b44e6 Merge branch 'main' into fix/registry-font 2026-03-14 15:56:54 +04:00
shadcn
725ca574f6 Rename test to clarify non-variable font coverage.
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-14 15:37:06 +04:00
shadcn
1dc39e2484 Add dependency field to font schema for explicit fontsource package control.
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-14 15:34:33 +04:00
shadcn
090556691c Revert "fix: added fountsource, @support ovveride when registry:font install, monorepo init"
This reverts commit ad99fc9a73.
2026-03-14 15:33:15 +04:00
shadcn
8e9f781cdb Merge pull request #9911 from lior-pesoa/main
Add @paletteui entry to directory.json
2026-03-14 14:13:34 +04:00
shadcn
9d7c205442 Merge branch 'main' into pr-9911 and resolve conflicts
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-14 13:56:31 +04:00
shadcn
902379fa3e Merge pull request #9932 from felipemenezes098/feat/registry-add-flx
feat(registry): add @flx
2026-03-14 13:53:57 +04:00
shadcn
94dcf37add Rename @blocks registry to @blocks‑s 2026-03-14 12:39:37 +04:00
felipemenezes098
843a5e2334 feat(registry): add @flx 2026-03-13 16:57:36 -03:00
shadcn
cdaad392ae Merge pull request #10025 from Ziane-Badreddine/main
fix: swap homepage and url fields for @waves-cn registry
2026-03-13 20:53:35 +04:00
shadcn
49abe0d594 Merge branch 'main' into main 2026-03-13 20:52:16 +04:00
shadcn
eeb33ae9c9 fix: homepage and url order in registries.json 2026-03-13 20:47:35 +04:00
Ziane-Badreddine
55fa1bb7cc fix: correct homepage url in waves-cn registry entry 2026-03-13 12:45:26 +00:00
KapishDima
90bbbb7993 Merge branch 'main' into fix/registry-font 2026-03-13 09:19:02 +02:00
shadcn
fc9705665c Merge pull request #9976 from withden/patch-4
Add @pacekit-gsap registry information
2026-03-13 09:49:34 +04:00
Denish Navadiya
52c477e118 Merge branch 'main' into patch-4 2026-03-13 10:59:00 +05:30
withden
41a4573002 Add @pacekit-gsap to registry directory 2026-03-13 10:58:23 +05:30
shadcn
f813fb5884 Merge pull request #10024 from shadcn-ui/chore/remove-deprecated
chore: remove deprecated/ directory and related workflow
2026-03-13 09:24:37 +04:00
shadcn
429c001412 chore: remove deprecated/ directory and related workflow
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-13 09:19:17 +04:00
shadcn
cd7743cbc1 Merge pull request #9923 from tsubasakong/lucas/fix-shadcn-ui-9914-preserve-base-on-preset-switch
docs: preserve current base when switching preset codes
2026-03-13 09:00:27 +04:00
shadcn
cadc3f96de chore: small nit in phrasing 2026-03-13 08:59:07 +04:00
shadcn
a74515d6e1 Merge pull request #9973 from jal-co/add-jalco-registry
feat(registry): add @jalco registry
2026-03-13 08:56:28 +04:00
shadcn
0df9af0d75 Merge pull request #9935 from Ziane-Badreddine/main
feat: add @waves-cn registry
2026-03-13 08:56:04 +04:00
shadcn
e653c1a833 Merge pull request #10023 from shadcn-ui/changeset-release/main
chore(release): version packages
2026-03-13 08:40:36 +04:00
github-actions[bot]
8b819e1db4 chore(release): version packages 2026-03-13 04:35:24 +00:00
shadcn
5236bfdf07 Merge pull request #10022 from shadcn-ui/chore/monorepo-pm-changeset
chore: add changeset for monorepo package manager fix
2026-03-13 08:34:26 +04:00
shadcn
7e93eb81ea chore: changeset 2026-03-13 08:33:28 +04:00
shadcn
abf1555a65 Merge pull request #9962 from devinscodebase/fix/monorepo-package-manager-detection
fix: monorepo templates ignore the user's package manager
2026-03-13 08:25:53 +04:00
shadcn
584db77fee Merge branch 'main' into fix/monorepo-package-manager-detection 2026-03-13 08:17:12 +04:00
shadcn
3faa91d670 tests: add more tests coverage 2026-03-13 08:15:56 +04:00
Justin Levine
2bf8ef86b9 fix: revert unintended changes and run registry:build 2026-03-12 21:12:44 -07:00
shadcn
624a4fe320 Merge branch 'main' into patch-4 2026-03-13 08:03:23 +04:00
shadcn
5508b5e4ec Merge branch 'main' into add-jalco-registry 2026-03-13 08:01:39 +04:00
shadcn
3af2ba80e8 Merge pull request #9967 from thomasyuill-livekit/update-agents-ui-registry-domain-to-dot-com
update agents-ui registry from livekit.io to livekit.com
2026-03-13 08:01:27 +04:00
Justin Levine
40a00278ab Merge branch 'main' into add-jalco-registry 2026-03-12 14:08:03 -07:00
Denish Navadiya
5ab89f3ae3 Add @pacekit-gsap registry information 2026-03-12 17:10:30 +05:30
KapishDima
40dc195fad Merge branch 'main' into fix/registry-font 2026-03-12 09:19:14 +02:00
Devin Alexander
ca374ad0a0 Merge branch 'main' into fix/monorepo-package-manager-detection 2026-03-12 08:49:11 +02:00
shadcn
bc9f556c38 docs: fix headings in changelog 2026-03-12 08:00:37 +04:00
Justin Levine
d06e54d2bb feat(registry): add @jalco registry 2026-03-11 18:53:23 -07:00
Ziane-Badreddine
65ddce2886 chore: rebase on main 2026-03-11 19:45:55 +00:00
Thomas Yuill
f413598ba3 update agents-ui registry from livekit.io to livekit.com 2026-03-11 14:17:06 -04:00
Devin Alexander
34c04d5f01 style: fix prettier formatting in create-template.ts 2026-03-11 16:27:30 +02:00
Devin Alexander
0029b3b6f7 fix: respect detected package manager for monorepo templates
All monorepo templates hardcoded `packageManager: "pnpm"` which
meant running `bunx --bun shadcn@latest init --monorepo` would
still shell out to `pnpm install`, triggering Corepack and crashing
under Bun because `process.mainModule` is readonly there.

This removes the hardcoded pnpm override from every monorepo template
config so `getPackageManager()` can actually detect what the user is
running. The scaffold step now adapts the cloned template on the fly:

- strips the `packageManager` field from package.json (avoids Corepack)
- converts pnpm-workspace.yaml to a `"workspaces"` array in package.json
- removes pnpm-lock.yaml
- rewrites `workspace:*` refs to `"*"` when the detected PM is npm
  (npm doesn't support the workspace: protocol)
- picks the right install flags per PM (`--no-frozen-lockfile` for pnpm,
  nothing extra for bun/npm/yarn)

pnpm behavior is completely unchanged — `adaptWorkspaceConfig` early-
returns when the detected PM is pnpm.
2026-03-11 14:52:39 +02:00
KapishDima
75cc35272a Merge branch 'main' into fix/registry-font 2026-03-11 10:32:27 +02:00
shadcn
821ac7ee4d Merge pull request #9961 from shadcn-ui/changeset-release/main
chore(release): version packages
2026-03-11 12:15:13 +04:00
github-actions[bot]
8df46c4ded chore(release): version packages 2026-03-11 08:14:30 +00:00
shadcn
2303ce2372 Merge pull request #9960 from shadcn-ui/shadcn/update-track
feat: update handling of init urls
2026-03-11 12:13:34 +04:00
shadcn
cf672a9575 fix 2026-03-11 12:10:25 +04:00
shadcn
5ee4567353 feat: update handling of init urls 2026-03-11 12:07:18 +04:00
shadcn
6f72dba9c4 Merge pull request #9449 from mazyar-kawa02/main
feat: add @gammaui registry with homepage, URL, description, and logo
2026-03-11 11:56:45 +04:00
shadcn
cd717896fa Merge branch 'main' into main 2026-03-11 11:56:34 +04:00
shadcn
d47562cc08 Merge pull request #9910 from LGLabGreg/feat/@shadcnmaps
feat(registry): add @shadcnmaps
2026-03-11 11:56:01 +04:00
mazyar-kawa02
aff5d7f0c1 feat: add @gammaui registry with homepage, URL, description, and logo 2026-03-11 09:58:32 +03:00
LGLabGreg
4c0be13dcc feat(registry): add @shadcnmaps 2026-03-11 06:56:21 +00:00
KapishDima
aa786280a3 Merge branch 'main' into fix/registry-font 2026-03-11 08:29:16 +02:00
KapishDima
6ad0590d87 Merge branch 'main' into fix/registry-font 2026-03-11 08:26:52 +02:00
KapishDima
dac13c90f2 Merge branch 'main' into fix/registry-font 2026-03-10 20:39:50 +02:00
tsubasakong
7bc47bb858 Merge remote-tracking branch 'upstream/main' into sync/pr-9923 2026-03-10 00:29:48 -07:00
KapishDima
e149aac756 Merge branch 'main' into fix/registry-font 2026-03-10 08:54:20 +02:00
KapishDima
729708ad2e Merge branch 'main' into fix/registry-font 2026-03-10 08:26:03 +02:00
kapishdima
ad99fc9a73 fix: added fountsource, @support ovveride when registry:font install, monorepo init 2026-03-09 12:39:36 +02:00
Lior Pesoa
da05ee321c fix: run registry:build and fix directory.json syntax
- Fix missing comma between entries in directory.json
- Fix multiline SVG logo string
- Regenerate registries.json with @paletteui entry

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-09 10:56:16 +02:00
Frank
d13d42d434 docs: preserve base when switching preset codes 2026-03-08 21:54:17 -07:00
lior-pesoa
554a1a69a7 Add @paletteui entry to directory.json 2026-03-08 18:50:13 +02:00
3503 changed files with 1512 additions and 236792 deletions

125
.github/workflows/code-format.yml vendored Normal file
View File

@@ -0,0 +1,125 @@
name: Code format
on:
workflow_run:
workflows: ["Code check"]
types:
- completed
permissions:
actions: read
contents: write
pull-requests: read
jobs:
format:
if: |
github.event.workflow_run.conclusion == 'failure' &&
github.event.workflow_run.event == 'pull_request'
runs-on: ubuntu-latest
name: Run pnpm format:write
steps:
- name: Inspect failed workflow run
id: meta
uses: actions/github-script@v7
with:
script: |
const pr = context.payload.workflow_run.pull_requests[0]
if (!pr) {
core.notice("Skipping because the failed run is not attached to a pull request.")
core.setOutput("should_run", "false")
return
}
const { data: pullRequest } = await github.rest.pulls.get({
owner: context.repo.owner,
repo: context.repo.repo,
pull_number: pr.number,
})
const { data: jobs } = await github.rest.actions.listJobsForWorkflowRun({
owner: context.repo.owner,
repo: context.repo.repo,
run_id: context.payload.workflow_run.id,
per_page: 100,
})
const formatJob = jobs.jobs.find((job) => job.name === "pnpm format:check")
const sameRepo =
pullRequest.head.repo.full_name === `${context.repo.owner}/${context.repo.repo}`
const shouldRun = formatJob?.conclusion === "failure" && sameRepo
if (!formatJob) {
core.notice("Skipping because the format job could not be found in the failed run.")
} else if (formatJob.conclusion !== "failure") {
core.notice(
`Skipping because the format job concluded with "${formatJob.conclusion}".`
)
}
if (!sameRepo) {
core.notice(
`Skipping PR #${pullRequest.number} because its head branch lives in ${pullRequest.head.repo.full_name}.`
)
}
core.setOutput("head_ref", pullRequest.head.ref)
core.setOutput("should_run", shouldRun ? "true" : "false")
- name: Checkout pull request branch
if: steps.meta.outputs.should_run == 'true'
uses: actions/checkout@v4
with:
fetch-depth: 0
ref: ${{ steps.meta.outputs.head_ref }}
- name: Install Node.js
if: steps.meta.outputs.should_run == 'true'
uses: actions/setup-node@v4
with:
node-version: 20
- name: Install pnpm
if: steps.meta.outputs.should_run == 'true'
uses: pnpm/action-setup@v4
with:
version: 9.0.6
run_install: false
- name: Get pnpm store directory
if: steps.meta.outputs.should_run == 'true'
id: pnpm-cache
run: |
echo "pnpm_cache_dir=$(pnpm store path)" >> $GITHUB_OUTPUT
- name: Setup pnpm cache
if: steps.meta.outputs.should_run == 'true'
uses: actions/cache@v4
with:
path: ${{ steps.pnpm-cache.outputs.pnpm_cache_dir }}
key: ${{ runner.os }}-pnpm-store-${{ hashFiles('**/pnpm-lock.yaml') }}
restore-keys: |
${{ runner.os }}-pnpm-store-
- name: Install dependencies
if: steps.meta.outputs.should_run == 'true'
run: pnpm install
- name: Apply formatting
if: steps.meta.outputs.should_run == 'true'
run: pnpm format:write
- name: Commit formatting changes
if: steps.meta.outputs.should_run == 'true'
run: |
if git diff --quiet; then
echo "No formatting changes to commit."
exit 0
fi
git config user.name "github-actions[bot]"
git config user.email "41898282+github-actions[bot]@users.noreply.github.com"
git add -A
git commit -m "style: apply automated formatting"
git push origin HEAD:${{ steps.meta.outputs.head_ref }}

View File

@@ -1,78 +0,0 @@
name: Deprecated
on:
pull_request_target:
types: [opened, synchronize]
permissions:
issues: write
contents: read
pull-requests: write
jobs:
deprecated:
runs-on: ubuntu-latest
steps:
- name: Checkout PR
uses: actions/checkout@v4
with:
ref: ${{ github.event.pull_request.head.sha }}
fetch-depth: 0
- name: Get changed files
id: changed-files
uses: tj-actions/changed-files@v46
with:
files: |
apps/www/**
files_ignore: |
apps/www/public/r/**
base_sha: ${{ github.event.pull_request.base.sha }}
sha: ${{ github.event.pull_request.head.sha }}
- name: Comment on PR if www files changed
if: steps.changed-files.outputs.any_changed == 'true'
uses: actions/github-script@v7
with:
github-token: ${{ secrets.GITHUB_TOKEN }}
script: |
const changedFiles = `${{ steps.changed-files.outputs.all_changed_files }}`.split(' ');
const wwwFiles = changedFiles.filter(file =>
file.startsWith('apps/www/') &&
!file.startsWith('apps/www/public/r/') &&
file !== 'apps/www/package.json'
);
if (wwwFiles.length > 0) {
const comment = `Looks like this PR modifies files in \`apps/www\`, which is deprecated.
Consider applying the change to \`apps/v4\` if relevant.`;
await github.rest.issues.createComment({
owner: context.repo.owner,
repo: context.repo.repo,
issue_number: context.issue.number,
body: comment
});
// Add deprecated label
await github.rest.issues.addLabels({
owner: context.repo.owner,
repo: context.repo.repo,
issue_number: context.issue.number,
labels: ['deprecated']
});
} else {
// Remove deprecated label if no www files are changed
try {
await github.rest.issues.removeLabel({
owner: context.repo.owner,
repo: context.repo.repo,
issue_number: context.issue.number,
name: 'deprecated'
});
} catch (error) {
// Label doesn't exist, which is fine
console.log('Deprecated label not found, skipping removal');
}
}

View File

@@ -16,7 +16,7 @@ jobs:
check-registry-sync:
if: github.event_name == 'pull_request'
runs-on: ubuntu-latest
name: Check registry sync
name: check-registry-sync
permissions:
contents: read
pull-requests: write
@@ -66,6 +66,44 @@ jobs:
with:
node-version: 20
- name: Block reserved registry namespaces
env:
RESERVED_NAMESPACES: "@shadcn,@ui,@blocks,@components,@block,@component,@util,@utils,@registry,@lib,@hook,@hooks,@theme,@themes,@chart,@charts"
run: |
node <<'EOF'
const fs = require("node:fs")
const files = [
"apps/v4/public/r/registries.json",
"apps/v4/registry/directory.json",
]
const reservedNamespaces = new Set(
process.env.RESERVED_NAMESPACES.split(",").filter(Boolean)
)
function readNames(filePath) {
return JSON.parse(fs.readFileSync(filePath, "utf8")).map(
(entry) => entry.name
)
}
const violations = files.flatMap((filePath) => {
return readNames(filePath)
.filter((name) => reservedNamespaces.has(name))
.map((name) => `${filePath}: ${name}`)
})
if (violations.length > 0) {
console.error("Reserved registry namespaces are not allowed:")
for (const violation of violations) {
console.error(`- ${violation}`)
}
process.exit(1)
}
EOF
- uses: pnpm/action-setup@v4
name: Install pnpm
id: pnpm-install

View File

@@ -44,10 +44,12 @@ export async function GET(request: NextRequest) {
)
}
track("create_app", {
...result.data,
preset: presetCode,
})
if (searchParams.get("track") === "1") {
track("create_app", {
...result.data,
preset: presetCode,
})
}
return NextResponse.json(parseResult.data)
} catch (error) {

View File

@@ -6,7 +6,7 @@ date: 2026-03-06
We're releasing version 4 of shadcn/cli. More capable, easier to use. Built for you and your coding agents. Here's everything new.
### shadcn/skills
## shadcn/skills
shadcn/skills gives coding agents the context they need to work with your components and registry correctly. It covers both Radix and Base UI primitives, updated APIs, component patterns and registry workflows. The skill also knows how to use the shadcn CLI, when to invoke it and which flags to pass. Agents make fewer mistakes and produce code that actually matches your design system.
@@ -20,7 +20,7 @@ You can ask your agent things like:
npx skills add shadcn/ui
```
### Introducing --preset
## Introducing --preset
A preset packs your entire design system config into a short code. Colors, theme, icon library, fonts, radius. One string, everything included.
@@ -32,7 +32,7 @@ npx shadcn@latest init --preset a1Dg5eFl
Use it to scaffold projects from custom config, share with your team or publish in your registry. Drop it in prompts so your agent knows where to start. Use it across Claude, Codex, v0, Replit. Take your preset with you.
### Switching presets
## Switching presets
When you're working on a new app, it can take a few tries to find something you like so we've made switching presets really easy. Run init --preset in your app, and the cli will take care of reconfiguring everything including your components.
@@ -40,18 +40,18 @@ When you're working on a new app, it can take a few tries to find something you
npx shadcn@latest init --preset ad3qkJ7
```
### Skills + Presets
## Skills + Presets
Your agent knows how to use presets. Scaffold a project, switch design systems, try something new.
- "create a new next app using --preset adtk27v"
- "let's try --preset adtk27v"
### New shadcn/create
## New shadcn/create
To help you build custom presets, we rebuilt [shadcn/create](/create). It now includes a library of UI components you can use to preview your presets. See how your colors, fonts and radius apply to real components before you start building.
### New --dry-run, --diff, and --view flags
## New --dry-run, --diff, and --view flags
Inspect what a registry will add to your project before anything gets written. Review the payload yourself or pipe it to your coding agent for a second look.
@@ -61,7 +61,7 @@ npx shadcn@latest add button --diff
npx shadcn@latest add button --view
```
### Updating primitives
## Updating primitives
You can use the `--diff` flag to check for registry updates. Or ask your agent: "check for updates from @shadcn and merge with my local changes".
@@ -69,7 +69,7 @@ You can use the `--diff` flag to check for registry updates. Or ask your agent:
npx shadcn@latest add button --diff
```
### shadcn init --template
## shadcn init --template
`shadcn init` now scaffolds full project templates for Next.js, Vite, Laravel, React Router, Astro and TanStack Start. Dark mode included for Next.js and Vite.
@@ -91,7 +91,7 @@ Use `--monorepo` to set up a monorepo.
npx shadcn@latest init -t next --monorepo
```
### shadcn init --base
## shadcn init --base
Pick your primitives. Use `--base` to start a project with Radix or Base UI.
@@ -99,7 +99,7 @@ Pick your primitives. Use `--base` to start a project with Radix or Base UI.
npx shadcn@latest init --base radix
```
### shadcn info
## shadcn info
The `info` command now shows the full picture: framework, version, CSS vars, which components are installed, and where to find docs and examples for every component. Great for giving coding agents the context they need to work with your project.
@@ -107,7 +107,7 @@ The `info` command now shows the full picture: framework, version, CSS vars, whi
npx shadcn@latest info
```
### shadcn docs
## shadcn docs
Get docs, code and examples for any UI component right from the CLI. Gives your coding agent the context to use your primitives correctly.
@@ -120,7 +120,7 @@ combobox
- api https://base-ui.com/react/components/combobox
```
### registry:base and registry:font
## registry:base and registry:font
Registries can now distribute an entire design system as a single payload using `registry:base`. Components, dependencies, CSS vars, fonts, config. One install, everything set up.

View File

@@ -16,13 +16,13 @@ description: Install and configure shadcn/ui for TanStack Start.
Run the following command to create a new TanStack Start project with shadcn/ui:
```bash
npx shadcn@latest init -t tanstack
npx shadcn@latest init -t start
```
**For a monorepo project, use `--monorepo` flag:**
```bash
npx shadcn@latest init -t tanstack --monorepo
npx shadcn@latest init -t start --monorepo
```
### Add Components

View File

@@ -325,7 +325,8 @@ A `registry:font` item installs a Google Font. The `font` field is required and
"provider": "google",
"import": "Inter",
"variable": "--font-sans",
"subsets": ["latin"]
"subsets": ["latin"],
"dependency": "@fontsource-variable/inter"
}
}
```
@@ -343,7 +344,8 @@ A `registry:font` item installs a Google Font. The `font` field is required and
"import": "JetBrains_Mono",
"variable": "--font-mono",
"weight": ["400", "500", "600", "700"],
"subsets": ["latin"]
"subsets": ["latin"],
"dependency": "@fontsource-variable/jetbrains-mono"
}
}
```
@@ -360,7 +362,8 @@ A `registry:font` item installs a Google Font. The `font` field is required and
"provider": "google",
"import": "Lora",
"variable": "--font-serif",
"subsets": ["latin"]
"subsets": ["latin"],
"dependency": "@fontsource-variable/lora"
}
}
```
@@ -380,7 +383,8 @@ Use the `selector` field to apply a font to specific CSS selectors instead of gl
"import": "Playfair_Display",
"variable": "--font-heading",
"subsets": ["latin"],
"selector": "h1, h2, h3, h4, h5, h6"
"selector": "h1, h2, h3, h4, h5, h6",
"dependency": "@fontsource-variable/playfair-display"
}
}
```

View File

@@ -339,6 +339,34 @@ Environment variables are added to the `.env.local` or `.env` file. Existing var
</Callout>
### font
The `font` property is required for `registry:font` items. It configures the font family, provider, import name, CSS variable, and the npm package to install for non-Next.js projects.
```json title="registry-item.json" showLineNumbers
{
"font": {
"family": "'Inter Variable', sans-serif",
"provider": "google",
"import": "Inter",
"variable": "--font-sans",
"subsets": ["latin"],
"dependency": "@fontsource-variable/inter"
}
}
```
| Property | Type | Required | Description |
| ------------ | ---------- | -------- | ----------------------------------------------------------------------------------------- |
| `family` | `string` | Yes | The CSS font-family value. |
| `provider` | `string` | Yes | The font provider. Currently only `google` is supported. |
| `import` | `string` | Yes | The import name for the font from `next/font/google`. |
| `variable` | `string` | Yes | The CSS variable name for the font (e.g., `--font-sans`, `--font-mono`). |
| `weight` | `string[]` | No | Array of font weights to include. |
| `subsets` | `string[]` | No | Array of font subsets to include. |
| `selector` | `string` | No | CSS selector to apply the font to. Defaults to `html`. |
| `dependency` | `string` | No | The npm package to install for non-Next.js projects (e.g., `@fontsource-variable/inter`). |
### docs
Use `docs` to show custom documentation or message when installing your registry item via the CLI.

View File

@@ -76,7 +76,7 @@
"rehype-pretty-code": "^0.14.1",
"rimraf": "^6.0.1",
"server-only": "^0.0.1",
"shadcn": "4.0.4",
"shadcn": "4.0.8",
"shiki": "^1.10.1",
"sonner": "^2.0.0",
"swr": "^2.3.6",

View File

@@ -18,7 +18,7 @@
"@basecn": "https://basecn.dev/r/{name}.json",
"@better-upload": "https://better-upload.com/r/{name}.json",
"@billingsdk": "https://billingsdk.com/r/{name}.json",
"@blocks": "https://blocks.so/r/{name}.json",
"@blocks-so": "https://blocks.so/r/{name}.json",
"@bucharitesh": "https://bucharitesh.in/r/{name}.json",
"@bundui": "https://bundui.io/r/{name}.json",
"@cardcn": "https://cardcn.dev/r/{name}.json",
@@ -41,7 +41,7 @@
"@gaia": "https://ui.heygaia.io/r/{name}.json",
"@glass-ui": "https://glass-ui.crenspire.com/r/{name}.json",
"@heseui": "https://www.heseui.com/r/{name}.json",
"@hooks": "https://shadcn-hooks.com/r/{name}.json",
"@shadcnhooks": "https://shadcn-hooks.com/r/{name}.json",
"@intentui": "https://intentui.com/r/{name}",
"@kibo-ui": "https://www.kibo-ui.com/r/{name}.json",
"@kanpeki": "https://kanpeki.vercel.app/r/{name}.json",

View File

@@ -43,8 +43,8 @@
},
{
"name": "@agents-ui",
"homepage": "https://livekit.io/ui",
"url": "https://livekit.io/ui/r/{name}.json",
"homepage": "https://livekit.com/ui",
"url": "https://livekit.com/ui/r/{name}.json",
"description": "This is a shadcn/ui component registry that distributes copy-paste React components for building LiveKit AI Agent interfaces."
},
{
@@ -114,7 +114,7 @@
"description": "BillingSDK is an open-source React and Next.js component library for SaaS billing and payments. It offers ready-to-use, customizable components for subscriptions, invoices, usage-based pricing and billing - fully compatible with Dodo Payments and Stripe."
},
{
"name": "@blocks",
"name": "@blocks-so",
"homepage": "https://blocks.so",
"url": "https://blocks.so/r/{name}.json",
"description": "A set of clean, modern application building blocks for you in your applications. Free and Open Source"
@@ -252,7 +252,7 @@
"description": "Ready-to-use foundation components/blocks built on top of shadcn/ui."
},
{
"name": "@hooks",
"name": "@shadcnhooks",
"homepage": "https://shadcn-hooks.com",
"url": "https://shadcn-hooks.com/r/{name}.json",
"description": "A comprehensive React Hooks Collection built with Shadcn."
@@ -269,6 +269,12 @@
"url": "https://intentui.com/r/{name}",
"description": "Accessible React component library to copy, customize, and own your UI."
},
{
"name": "@jalco",
"homepage": "https://ui.justinlevine.me",
"url": "https://ui.justinlevine.me/r/{name}.json",
"description": "A curated collection of GitHub-integrated, documentation, and developer-facing components. Self-contained, zero-dependency, and production-ready."
},
{
"name": "@kibo-ui",
"homepage": "https://www.kibo-ui.com/",
@@ -419,6 +425,12 @@
"url": "https://ui.pacekit.dev/r/{name}.json",
"description": "Carefully built UI blocks for real apps and dashboards, designed to integrate smoothly from early ideas to production releases."
},
{
"name": "@pacekit-gsap",
"homepage": "https://gsap.pacekit.dev",
"url": "https://gsap.pacekit.dev/r/{name}.json",
"description": "Animated GSAP components crafted for smooth interaction and rich detail."
},
{
"name": "@pastecn",
"homepage": "https://pastecn.com",
@@ -539,6 +551,12 @@
"url": "https://shadcndesign-free.vercel.app/r/{name}.json",
"description": "A growing collection of high-quality blocks and themes for shadcn/ui."
},
{
"name": "@shadcnmaps",
"homepage": "https://shadcnmaps.com",
"url": "https://shadcnmaps.com/r/{name}.json",
"description": "Beautiful map components powered by pure SVG."
},
{
"name": "@shadcnstore",
"homepage": "https://www.shadcnstore.com",
@@ -557,6 +575,12 @@
"url": "https://shadcnstudio.com/r/{name}.json",
"description": "An open-source set of shadcn/ui components, blocks, and templates with a powerful theme generator."
},
{
"name": "@waves-cn",
"homepage": "https://waves-cn.vercel.app",
"url": "https://waves-cn.vercel.app/r/{name}.json",
"description": "A collection of wave players and waveform components built with wavesurfer.js and shadcn/ui."
},
{
"name": "@shadcn-editor",
"homepage": "https://shadcn-editor.vercel.app",
@@ -863,10 +887,28 @@
"url": "https://componentry.fun/r/{name}.json",
"description": "Beautiful, interactive React + Tailwind components for modern product UIs."
},
{
"name": "@paletteui",
"homepage": "https://paletteui.xyz",
"url": "https://paletteui.xyz/r/{name}.json",
"description": "Curated OKLCH color themes for shadcn/ui + visual theme editor with CSS, Tailwind v4, and Figma export."
},
{
"name": "@fluid",
"homepage": "https://www.fluidfunctionalism.com",
"url": "https://www.fluidfunctionalism.com/r/{name}.json",
"description": "Fluid components used exclusively in service of functional clarity. Proximity hover, spring animations, font-weight transitions, and animated focus rings."
},
{
"name": "@gammaui",
"homepage": "https://www.gammaui.com",
"url": "https://www.gammaui.com/r/{name}.json",
"description": "Beautifully designed landing page components built with React & Tailwind CSS & Motion."
},
{
"name": "@flx",
"homepage": "https://ui.flexnative.com",
"url": "https://ui.flexnative.com/r/{name}.json",
"description": "A collection of customizable UI blocks with interactive live previews"
}
]

View File

@@ -10,6 +10,7 @@
"variable": "--font-sans",
"subsets": [
"latin"
]
],
"dependency": "@fontsource-variable/dm-sans"
}
}

View File

@@ -10,6 +10,7 @@
"variable": "--font-sans",
"subsets": [
"latin"
]
],
"dependency": "@fontsource-variable/figtree"
}
}

View File

@@ -10,6 +10,7 @@
"variable": "--font-mono",
"subsets": [
"latin"
]
],
"dependency": "@fontsource-variable/geist-mono"
}
}

View File

@@ -10,6 +10,7 @@
"variable": "--font-sans",
"subsets": [
"latin"
]
],
"dependency": "@fontsource-variable/geist"
}
}

View File

@@ -10,6 +10,7 @@
"variable": "--font-sans",
"subsets": [
"latin"
]
],
"dependency": "@fontsource-variable/inter"
}
}

View File

@@ -10,6 +10,7 @@
"variable": "--font-mono",
"subsets": [
"latin"
]
],
"dependency": "@fontsource-variable/jetbrains-mono"
}
}

View File

@@ -10,6 +10,7 @@
"variable": "--font-serif",
"subsets": [
"latin"
]
],
"dependency": "@fontsource-variable/lora"
}
}

View File

@@ -10,6 +10,7 @@
"variable": "--font-serif",
"subsets": [
"latin"
]
],
"dependency": "@fontsource-variable/merriweather"
}
}

View File

@@ -7,6 +7,7 @@
"family": "'Noto Sans Variable', sans-serif",
"provider": "google",
"import": "Noto_Sans",
"variable": "--font-sans"
"variable": "--font-sans",
"dependency": "@fontsource-variable/noto-sans"
}
}

View File

@@ -10,6 +10,7 @@
"variable": "--font-serif",
"subsets": [
"latin"
]
],
"dependency": "@fontsource-variable/noto-serif"
}
}

View File

@@ -7,6 +7,7 @@
"family": "'Nunito Sans Variable', sans-serif",
"provider": "google",
"import": "Nunito_Sans",
"variable": "--font-sans"
"variable": "--font-sans",
"dependency": "@fontsource-variable/nunito-sans"
}
}

View File

@@ -10,6 +10,7 @@
"variable": "--font-sans",
"subsets": [
"latin"
]
],
"dependency": "@fontsource-variable/outfit"
}
}

View File

@@ -10,6 +10,7 @@
"variable": "--font-serif",
"subsets": [
"latin"
]
],
"dependency": "@fontsource-variable/playfair-display"
}
}

View File

@@ -10,6 +10,7 @@
"variable": "--font-sans",
"subsets": [
"latin"
]
],
"dependency": "@fontsource-variable/public-sans"
}
}

View File

@@ -10,6 +10,7 @@
"variable": "--font-sans",
"subsets": [
"latin"
]
],
"dependency": "@fontsource-variable/raleway"
}
}

View File

@@ -10,6 +10,7 @@
"variable": "--font-serif",
"subsets": [
"latin"
]
],
"dependency": "@fontsource-variable/roboto-slab"
}
}

View File

@@ -10,6 +10,7 @@
"variable": "--font-sans",
"subsets": [
"latin"
]
],
"dependency": "@fontsource-variable/roboto"
}
}

View File

@@ -2838,7 +2838,8 @@
"provider": "google",
"import": "Geist",
"variable": "--font-sans",
"subsets": ["latin"]
"subsets": ["latin"],
"dependency": "@fontsource-variable/geist"
}
},
{
@@ -2850,7 +2851,8 @@
"provider": "google",
"import": "Inter",
"variable": "--font-sans",
"subsets": ["latin"]
"subsets": ["latin"],
"dependency": "@fontsource-variable/inter"
}
},
{
@@ -2861,7 +2863,8 @@
"family": "'Noto Sans Variable', sans-serif",
"provider": "google",
"import": "Noto_Sans",
"variable": "--font-sans"
"variable": "--font-sans",
"dependency": "@fontsource-variable/noto-sans"
}
},
{
@@ -2872,7 +2875,8 @@
"family": "'Nunito Sans Variable', sans-serif",
"provider": "google",
"import": "Nunito_Sans",
"variable": "--font-sans"
"variable": "--font-sans",
"dependency": "@fontsource-variable/nunito-sans"
}
},
{
@@ -2884,7 +2888,8 @@
"provider": "google",
"import": "Figtree",
"variable": "--font-sans",
"subsets": ["latin"]
"subsets": ["latin"],
"dependency": "@fontsource-variable/figtree"
}
},
{
@@ -2896,7 +2901,8 @@
"provider": "google",
"import": "Roboto",
"variable": "--font-sans",
"subsets": ["latin"]
"subsets": ["latin"],
"dependency": "@fontsource-variable/roboto"
}
},
{
@@ -2908,7 +2914,8 @@
"provider": "google",
"import": "Raleway",
"variable": "--font-sans",
"subsets": ["latin"]
"subsets": ["latin"],
"dependency": "@fontsource-variable/raleway"
}
},
{
@@ -2920,7 +2927,8 @@
"provider": "google",
"import": "DM_Sans",
"variable": "--font-sans",
"subsets": ["latin"]
"subsets": ["latin"],
"dependency": "@fontsource-variable/dm-sans"
}
},
{
@@ -2932,7 +2940,8 @@
"provider": "google",
"import": "Public_Sans",
"variable": "--font-sans",
"subsets": ["latin"]
"subsets": ["latin"],
"dependency": "@fontsource-variable/public-sans"
}
},
{
@@ -2944,7 +2953,8 @@
"provider": "google",
"import": "Outfit",
"variable": "--font-sans",
"subsets": ["latin"]
"subsets": ["latin"],
"dependency": "@fontsource-variable/outfit"
}
},
{
@@ -2956,7 +2966,8 @@
"provider": "google",
"import": "JetBrains_Mono",
"variable": "--font-mono",
"subsets": ["latin"]
"subsets": ["latin"],
"dependency": "@fontsource-variable/jetbrains-mono"
}
},
{
@@ -2968,7 +2979,8 @@
"provider": "google",
"import": "Geist_Mono",
"variable": "--font-mono",
"subsets": ["latin"]
"subsets": ["latin"],
"dependency": "@fontsource-variable/geist-mono"
}
},
{
@@ -2980,7 +2992,8 @@
"provider": "google",
"import": "Noto_Serif",
"variable": "--font-serif",
"subsets": ["latin"]
"subsets": ["latin"],
"dependency": "@fontsource-variable/noto-serif"
}
},
{
@@ -2992,7 +3005,8 @@
"provider": "google",
"import": "Roboto_Slab",
"variable": "--font-serif",
"subsets": ["latin"]
"subsets": ["latin"],
"dependency": "@fontsource-variable/roboto-slab"
}
},
{
@@ -3004,7 +3018,8 @@
"provider": "google",
"import": "Merriweather",
"variable": "--font-serif",
"subsets": ["latin"]
"subsets": ["latin"],
"dependency": "@fontsource-variable/merriweather"
}
},
{
@@ -3016,7 +3031,8 @@
"provider": "google",
"import": "Lora",
"variable": "--font-serif",
"subsets": ["latin"]
"subsets": ["latin"],
"dependency": "@fontsource-variable/lora"
}
},
{
@@ -3028,7 +3044,8 @@
"provider": "google",
"import": "Playfair_Display",
"variable": "--font-serif",
"subsets": ["latin"]
"subsets": ["latin"],
"dependency": "@fontsource-variable/playfair-display"
}
}
]

View File

@@ -10,6 +10,7 @@
"variable": "--font-sans",
"subsets": [
"latin"
]
],
"dependency": "@fontsource-variable/dm-sans"
}
}

View File

@@ -10,6 +10,7 @@
"variable": "--font-sans",
"subsets": [
"latin"
]
],
"dependency": "@fontsource-variable/figtree"
}
}

View File

@@ -10,6 +10,7 @@
"variable": "--font-mono",
"subsets": [
"latin"
]
],
"dependency": "@fontsource-variable/geist-mono"
}
}

View File

@@ -10,6 +10,7 @@
"variable": "--font-sans",
"subsets": [
"latin"
]
],
"dependency": "@fontsource-variable/geist"
}
}

View File

@@ -10,6 +10,7 @@
"variable": "--font-sans",
"subsets": [
"latin"
]
],
"dependency": "@fontsource-variable/inter"
}
}

View File

@@ -10,6 +10,7 @@
"variable": "--font-mono",
"subsets": [
"latin"
]
],
"dependency": "@fontsource-variable/jetbrains-mono"
}
}

View File

@@ -10,6 +10,7 @@
"variable": "--font-serif",
"subsets": [
"latin"
]
],
"dependency": "@fontsource-variable/lora"
}
}

View File

@@ -10,6 +10,7 @@
"variable": "--font-serif",
"subsets": [
"latin"
]
],
"dependency": "@fontsource-variable/merriweather"
}
}

View File

@@ -7,6 +7,7 @@
"family": "'Noto Sans Variable', sans-serif",
"provider": "google",
"import": "Noto_Sans",
"variable": "--font-sans"
"variable": "--font-sans",
"dependency": "@fontsource-variable/noto-sans"
}
}

View File

@@ -10,6 +10,7 @@
"variable": "--font-serif",
"subsets": [
"latin"
]
],
"dependency": "@fontsource-variable/noto-serif"
}
}

View File

@@ -7,6 +7,7 @@
"family": "'Nunito Sans Variable', sans-serif",
"provider": "google",
"import": "Nunito_Sans",
"variable": "--font-sans"
"variable": "--font-sans",
"dependency": "@fontsource-variable/nunito-sans"
}
}

View File

@@ -10,6 +10,7 @@
"variable": "--font-sans",
"subsets": [
"latin"
]
],
"dependency": "@fontsource-variable/outfit"
}
}

View File

@@ -10,6 +10,7 @@
"variable": "--font-serif",
"subsets": [
"latin"
]
],
"dependency": "@fontsource-variable/playfair-display"
}
}

View File

@@ -10,6 +10,7 @@
"variable": "--font-sans",
"subsets": [
"latin"
]
],
"dependency": "@fontsource-variable/public-sans"
}
}

View File

@@ -10,6 +10,7 @@
"variable": "--font-sans",
"subsets": [
"latin"
]
],
"dependency": "@fontsource-variable/raleway"
}
}

View File

@@ -10,6 +10,7 @@
"variable": "--font-serif",
"subsets": [
"latin"
]
],
"dependency": "@fontsource-variable/roboto-slab"
}
}

View File

@@ -10,6 +10,7 @@
"variable": "--font-sans",
"subsets": [
"latin"
]
],
"dependency": "@fontsource-variable/roboto"
}
}

View File

@@ -2838,7 +2838,8 @@
"provider": "google",
"import": "Geist",
"variable": "--font-sans",
"subsets": ["latin"]
"subsets": ["latin"],
"dependency": "@fontsource-variable/geist"
}
},
{
@@ -2850,7 +2851,8 @@
"provider": "google",
"import": "Inter",
"variable": "--font-sans",
"subsets": ["latin"]
"subsets": ["latin"],
"dependency": "@fontsource-variable/inter"
}
},
{
@@ -2861,7 +2863,8 @@
"family": "'Noto Sans Variable', sans-serif",
"provider": "google",
"import": "Noto_Sans",
"variable": "--font-sans"
"variable": "--font-sans",
"dependency": "@fontsource-variable/noto-sans"
}
},
{
@@ -2872,7 +2875,8 @@
"family": "'Nunito Sans Variable', sans-serif",
"provider": "google",
"import": "Nunito_Sans",
"variable": "--font-sans"
"variable": "--font-sans",
"dependency": "@fontsource-variable/nunito-sans"
}
},
{
@@ -2884,7 +2888,8 @@
"provider": "google",
"import": "Figtree",
"variable": "--font-sans",
"subsets": ["latin"]
"subsets": ["latin"],
"dependency": "@fontsource-variable/figtree"
}
},
{
@@ -2896,7 +2901,8 @@
"provider": "google",
"import": "Roboto",
"variable": "--font-sans",
"subsets": ["latin"]
"subsets": ["latin"],
"dependency": "@fontsource-variable/roboto"
}
},
{
@@ -2908,7 +2914,8 @@
"provider": "google",
"import": "Raleway",
"variable": "--font-sans",
"subsets": ["latin"]
"subsets": ["latin"],
"dependency": "@fontsource-variable/raleway"
}
},
{
@@ -2920,7 +2927,8 @@
"provider": "google",
"import": "DM_Sans",
"variable": "--font-sans",
"subsets": ["latin"]
"subsets": ["latin"],
"dependency": "@fontsource-variable/dm-sans"
}
},
{
@@ -2932,7 +2940,8 @@
"provider": "google",
"import": "Public_Sans",
"variable": "--font-sans",
"subsets": ["latin"]
"subsets": ["latin"],
"dependency": "@fontsource-variable/public-sans"
}
},
{
@@ -2944,7 +2953,8 @@
"provider": "google",
"import": "Outfit",
"variable": "--font-sans",
"subsets": ["latin"]
"subsets": ["latin"],
"dependency": "@fontsource-variable/outfit"
}
},
{
@@ -2956,7 +2966,8 @@
"provider": "google",
"import": "JetBrains_Mono",
"variable": "--font-mono",
"subsets": ["latin"]
"subsets": ["latin"],
"dependency": "@fontsource-variable/jetbrains-mono"
}
},
{
@@ -2968,7 +2979,8 @@
"provider": "google",
"import": "Geist_Mono",
"variable": "--font-mono",
"subsets": ["latin"]
"subsets": ["latin"],
"dependency": "@fontsource-variable/geist-mono"
}
},
{
@@ -2980,7 +2992,8 @@
"provider": "google",
"import": "Noto_Serif",
"variable": "--font-serif",
"subsets": ["latin"]
"subsets": ["latin"],
"dependency": "@fontsource-variable/noto-serif"
}
},
{
@@ -2992,7 +3005,8 @@
"provider": "google",
"import": "Roboto_Slab",
"variable": "--font-serif",
"subsets": ["latin"]
"subsets": ["latin"],
"dependency": "@fontsource-variable/roboto-slab"
}
},
{
@@ -3004,7 +3018,8 @@
"provider": "google",
"import": "Merriweather",
"variable": "--font-serif",
"subsets": ["latin"]
"subsets": ["latin"],
"dependency": "@fontsource-variable/merriweather"
}
},
{
@@ -3016,7 +3031,8 @@
"provider": "google",
"import": "Lora",
"variable": "--font-serif",
"subsets": ["latin"]
"subsets": ["latin"],
"dependency": "@fontsource-variable/lora"
}
},
{
@@ -3028,7 +3044,8 @@
"provider": "google",
"import": "Playfair_Display",
"variable": "--font-serif",
"subsets": ["latin"]
"subsets": ["latin"],
"dependency": "@fontsource-variable/playfair-display"
}
}
]

View File

@@ -10,6 +10,7 @@
"variable": "--font-sans",
"subsets": [
"latin"
]
],
"dependency": "@fontsource-variable/dm-sans"
}
}

View File

@@ -10,6 +10,7 @@
"variable": "--font-sans",
"subsets": [
"latin"
]
],
"dependency": "@fontsource-variable/figtree"
}
}

View File

@@ -10,6 +10,7 @@
"variable": "--font-mono",
"subsets": [
"latin"
]
],
"dependency": "@fontsource-variable/geist-mono"
}
}

View File

@@ -10,6 +10,7 @@
"variable": "--font-sans",
"subsets": [
"latin"
]
],
"dependency": "@fontsource-variable/geist"
}
}

View File

@@ -10,6 +10,7 @@
"variable": "--font-sans",
"subsets": [
"latin"
]
],
"dependency": "@fontsource-variable/inter"
}
}

View File

@@ -10,6 +10,7 @@
"variable": "--font-mono",
"subsets": [
"latin"
]
],
"dependency": "@fontsource-variable/jetbrains-mono"
}
}

View File

@@ -10,6 +10,7 @@
"variable": "--font-serif",
"subsets": [
"latin"
]
],
"dependency": "@fontsource-variable/lora"
}
}

View File

@@ -10,6 +10,7 @@
"variable": "--font-serif",
"subsets": [
"latin"
]
],
"dependency": "@fontsource-variable/merriweather"
}
}

View File

@@ -7,6 +7,7 @@
"family": "'Noto Sans Variable', sans-serif",
"provider": "google",
"import": "Noto_Sans",
"variable": "--font-sans"
"variable": "--font-sans",
"dependency": "@fontsource-variable/noto-sans"
}
}

View File

@@ -10,6 +10,7 @@
"variable": "--font-serif",
"subsets": [
"latin"
]
],
"dependency": "@fontsource-variable/noto-serif"
}
}

View File

@@ -7,6 +7,7 @@
"family": "'Nunito Sans Variable', sans-serif",
"provider": "google",
"import": "Nunito_Sans",
"variable": "--font-sans"
"variable": "--font-sans",
"dependency": "@fontsource-variable/nunito-sans"
}
}

View File

@@ -10,6 +10,7 @@
"variable": "--font-sans",
"subsets": [
"latin"
]
],
"dependency": "@fontsource-variable/outfit"
}
}

View File

@@ -10,6 +10,7 @@
"variable": "--font-serif",
"subsets": [
"latin"
]
],
"dependency": "@fontsource-variable/playfair-display"
}
}

View File

@@ -10,6 +10,7 @@
"variable": "--font-sans",
"subsets": [
"latin"
]
],
"dependency": "@fontsource-variable/public-sans"
}
}

View File

@@ -10,6 +10,7 @@
"variable": "--font-sans",
"subsets": [
"latin"
]
],
"dependency": "@fontsource-variable/raleway"
}
}

View File

@@ -10,6 +10,7 @@
"variable": "--font-serif",
"subsets": [
"latin"
]
],
"dependency": "@fontsource-variable/roboto-slab"
}
}

View File

@@ -10,6 +10,7 @@
"variable": "--font-sans",
"subsets": [
"latin"
]
],
"dependency": "@fontsource-variable/roboto"
}
}

View File

@@ -2838,7 +2838,8 @@
"provider": "google",
"import": "Geist",
"variable": "--font-sans",
"subsets": ["latin"]
"subsets": ["latin"],
"dependency": "@fontsource-variable/geist"
}
},
{
@@ -2850,7 +2851,8 @@
"provider": "google",
"import": "Inter",
"variable": "--font-sans",
"subsets": ["latin"]
"subsets": ["latin"],
"dependency": "@fontsource-variable/inter"
}
},
{
@@ -2861,7 +2863,8 @@
"family": "'Noto Sans Variable', sans-serif",
"provider": "google",
"import": "Noto_Sans",
"variable": "--font-sans"
"variable": "--font-sans",
"dependency": "@fontsource-variable/noto-sans"
}
},
{
@@ -2872,7 +2875,8 @@
"family": "'Nunito Sans Variable', sans-serif",
"provider": "google",
"import": "Nunito_Sans",
"variable": "--font-sans"
"variable": "--font-sans",
"dependency": "@fontsource-variable/nunito-sans"
}
},
{
@@ -2884,7 +2888,8 @@
"provider": "google",
"import": "Figtree",
"variable": "--font-sans",
"subsets": ["latin"]
"subsets": ["latin"],
"dependency": "@fontsource-variable/figtree"
}
},
{
@@ -2896,7 +2901,8 @@
"provider": "google",
"import": "Roboto",
"variable": "--font-sans",
"subsets": ["latin"]
"subsets": ["latin"],
"dependency": "@fontsource-variable/roboto"
}
},
{
@@ -2908,7 +2914,8 @@
"provider": "google",
"import": "Raleway",
"variable": "--font-sans",
"subsets": ["latin"]
"subsets": ["latin"],
"dependency": "@fontsource-variable/raleway"
}
},
{
@@ -2920,7 +2927,8 @@
"provider": "google",
"import": "DM_Sans",
"variable": "--font-sans",
"subsets": ["latin"]
"subsets": ["latin"],
"dependency": "@fontsource-variable/dm-sans"
}
},
{
@@ -2932,7 +2940,8 @@
"provider": "google",
"import": "Public_Sans",
"variable": "--font-sans",
"subsets": ["latin"]
"subsets": ["latin"],
"dependency": "@fontsource-variable/public-sans"
}
},
{
@@ -2944,7 +2953,8 @@
"provider": "google",
"import": "Outfit",
"variable": "--font-sans",
"subsets": ["latin"]
"subsets": ["latin"],
"dependency": "@fontsource-variable/outfit"
}
},
{
@@ -2956,7 +2966,8 @@
"provider": "google",
"import": "JetBrains_Mono",
"variable": "--font-mono",
"subsets": ["latin"]
"subsets": ["latin"],
"dependency": "@fontsource-variable/jetbrains-mono"
}
},
{
@@ -2968,7 +2979,8 @@
"provider": "google",
"import": "Geist_Mono",
"variable": "--font-mono",
"subsets": ["latin"]
"subsets": ["latin"],
"dependency": "@fontsource-variable/geist-mono"
}
},
{
@@ -2980,7 +2992,8 @@
"provider": "google",
"import": "Noto_Serif",
"variable": "--font-serif",
"subsets": ["latin"]
"subsets": ["latin"],
"dependency": "@fontsource-variable/noto-serif"
}
},
{
@@ -2992,7 +3005,8 @@
"provider": "google",
"import": "Roboto_Slab",
"variable": "--font-serif",
"subsets": ["latin"]
"subsets": ["latin"],
"dependency": "@fontsource-variable/roboto-slab"
}
},
{
@@ -3004,7 +3018,8 @@
"provider": "google",
"import": "Merriweather",
"variable": "--font-serif",
"subsets": ["latin"]
"subsets": ["latin"],
"dependency": "@fontsource-variable/merriweather"
}
},
{
@@ -3016,7 +3031,8 @@
"provider": "google",
"import": "Lora",
"variable": "--font-serif",
"subsets": ["latin"]
"subsets": ["latin"],
"dependency": "@fontsource-variable/lora"
}
},
{
@@ -3028,7 +3044,8 @@
"provider": "google",
"import": "Playfair_Display",
"variable": "--font-serif",
"subsets": ["latin"]
"subsets": ["latin"],
"dependency": "@fontsource-variable/playfair-display"
}
}
]

View File

@@ -10,6 +10,7 @@
"variable": "--font-sans",
"subsets": [
"latin"
]
],
"dependency": "@fontsource-variable/dm-sans"
}
}

View File

@@ -10,6 +10,7 @@
"variable": "--font-sans",
"subsets": [
"latin"
]
],
"dependency": "@fontsource-variable/figtree"
}
}

View File

@@ -10,6 +10,7 @@
"variable": "--font-mono",
"subsets": [
"latin"
]
],
"dependency": "@fontsource-variable/geist-mono"
}
}

View File

@@ -10,6 +10,7 @@
"variable": "--font-sans",
"subsets": [
"latin"
]
],
"dependency": "@fontsource-variable/geist"
}
}

View File

@@ -10,6 +10,7 @@
"variable": "--font-sans",
"subsets": [
"latin"
]
],
"dependency": "@fontsource-variable/inter"
}
}

View File

@@ -10,6 +10,7 @@
"variable": "--font-mono",
"subsets": [
"latin"
]
],
"dependency": "@fontsource-variable/jetbrains-mono"
}
}

View File

@@ -10,6 +10,7 @@
"variable": "--font-serif",
"subsets": [
"latin"
]
],
"dependency": "@fontsource-variable/lora"
}
}

View File

@@ -10,6 +10,7 @@
"variable": "--font-serif",
"subsets": [
"latin"
]
],
"dependency": "@fontsource-variable/merriweather"
}
}

View File

@@ -7,6 +7,7 @@
"family": "'Noto Sans Variable', sans-serif",
"provider": "google",
"import": "Noto_Sans",
"variable": "--font-sans"
"variable": "--font-sans",
"dependency": "@fontsource-variable/noto-sans"
}
}

View File

@@ -10,6 +10,7 @@
"variable": "--font-serif",
"subsets": [
"latin"
]
],
"dependency": "@fontsource-variable/noto-serif"
}
}

View File

@@ -7,6 +7,7 @@
"family": "'Nunito Sans Variable', sans-serif",
"provider": "google",
"import": "Nunito_Sans",
"variable": "--font-sans"
"variable": "--font-sans",
"dependency": "@fontsource-variable/nunito-sans"
}
}

View File

@@ -10,6 +10,7 @@
"variable": "--font-sans",
"subsets": [
"latin"
]
],
"dependency": "@fontsource-variable/outfit"
}
}

View File

@@ -10,6 +10,7 @@
"variable": "--font-serif",
"subsets": [
"latin"
]
],
"dependency": "@fontsource-variable/playfair-display"
}
}

View File

@@ -10,6 +10,7 @@
"variable": "--font-sans",
"subsets": [
"latin"
]
],
"dependency": "@fontsource-variable/public-sans"
}
}

View File

@@ -10,6 +10,7 @@
"variable": "--font-sans",
"subsets": [
"latin"
]
],
"dependency": "@fontsource-variable/raleway"
}
}

View File

@@ -10,6 +10,7 @@
"variable": "--font-serif",
"subsets": [
"latin"
]
],
"dependency": "@fontsource-variable/roboto-slab"
}
}

View File

@@ -10,6 +10,7 @@
"variable": "--font-sans",
"subsets": [
"latin"
]
],
"dependency": "@fontsource-variable/roboto"
}
}

View File

@@ -2838,7 +2838,8 @@
"provider": "google",
"import": "Geist",
"variable": "--font-sans",
"subsets": ["latin"]
"subsets": ["latin"],
"dependency": "@fontsource-variable/geist"
}
},
{
@@ -2850,7 +2851,8 @@
"provider": "google",
"import": "Inter",
"variable": "--font-sans",
"subsets": ["latin"]
"subsets": ["latin"],
"dependency": "@fontsource-variable/inter"
}
},
{
@@ -2861,7 +2863,8 @@
"family": "'Noto Sans Variable', sans-serif",
"provider": "google",
"import": "Noto_Sans",
"variable": "--font-sans"
"variable": "--font-sans",
"dependency": "@fontsource-variable/noto-sans"
}
},
{
@@ -2872,7 +2875,8 @@
"family": "'Nunito Sans Variable', sans-serif",
"provider": "google",
"import": "Nunito_Sans",
"variable": "--font-sans"
"variable": "--font-sans",
"dependency": "@fontsource-variable/nunito-sans"
}
},
{
@@ -2884,7 +2888,8 @@
"provider": "google",
"import": "Figtree",
"variable": "--font-sans",
"subsets": ["latin"]
"subsets": ["latin"],
"dependency": "@fontsource-variable/figtree"
}
},
{
@@ -2896,7 +2901,8 @@
"provider": "google",
"import": "Roboto",
"variable": "--font-sans",
"subsets": ["latin"]
"subsets": ["latin"],
"dependency": "@fontsource-variable/roboto"
}
},
{
@@ -2908,7 +2914,8 @@
"provider": "google",
"import": "Raleway",
"variable": "--font-sans",
"subsets": ["latin"]
"subsets": ["latin"],
"dependency": "@fontsource-variable/raleway"
}
},
{
@@ -2920,7 +2927,8 @@
"provider": "google",
"import": "DM_Sans",
"variable": "--font-sans",
"subsets": ["latin"]
"subsets": ["latin"],
"dependency": "@fontsource-variable/dm-sans"
}
},
{
@@ -2932,7 +2940,8 @@
"provider": "google",
"import": "Public_Sans",
"variable": "--font-sans",
"subsets": ["latin"]
"subsets": ["latin"],
"dependency": "@fontsource-variable/public-sans"
}
},
{
@@ -2944,7 +2953,8 @@
"provider": "google",
"import": "Outfit",
"variable": "--font-sans",
"subsets": ["latin"]
"subsets": ["latin"],
"dependency": "@fontsource-variable/outfit"
}
},
{
@@ -2956,7 +2966,8 @@
"provider": "google",
"import": "JetBrains_Mono",
"variable": "--font-mono",
"subsets": ["latin"]
"subsets": ["latin"],
"dependency": "@fontsource-variable/jetbrains-mono"
}
},
{
@@ -2968,7 +2979,8 @@
"provider": "google",
"import": "Geist_Mono",
"variable": "--font-mono",
"subsets": ["latin"]
"subsets": ["latin"],
"dependency": "@fontsource-variable/geist-mono"
}
},
{
@@ -2980,7 +2992,8 @@
"provider": "google",
"import": "Noto_Serif",
"variable": "--font-serif",
"subsets": ["latin"]
"subsets": ["latin"],
"dependency": "@fontsource-variable/noto-serif"
}
},
{
@@ -2992,7 +3005,8 @@
"provider": "google",
"import": "Roboto_Slab",
"variable": "--font-serif",
"subsets": ["latin"]
"subsets": ["latin"],
"dependency": "@fontsource-variable/roboto-slab"
}
},
{
@@ -3004,7 +3018,8 @@
"provider": "google",
"import": "Merriweather",
"variable": "--font-serif",
"subsets": ["latin"]
"subsets": ["latin"],
"dependency": "@fontsource-variable/merriweather"
}
},
{
@@ -3016,7 +3031,8 @@
"provider": "google",
"import": "Lora",
"variable": "--font-serif",
"subsets": ["latin"]
"subsets": ["latin"],
"dependency": "@fontsource-variable/lora"
}
},
{
@@ -3028,7 +3044,8 @@
"provider": "google",
"import": "Playfair_Display",
"variable": "--font-serif",
"subsets": ["latin"]
"subsets": ["latin"],
"dependency": "@fontsource-variable/playfair-display"
}
}
]

View File

@@ -10,6 +10,7 @@
"variable": "--font-sans",
"subsets": [
"latin"
]
],
"dependency": "@fontsource-variable/dm-sans"
}
}

View File

@@ -10,6 +10,7 @@
"variable": "--font-sans",
"subsets": [
"latin"
]
],
"dependency": "@fontsource-variable/figtree"
}
}

View File

@@ -10,6 +10,7 @@
"variable": "--font-mono",
"subsets": [
"latin"
]
],
"dependency": "@fontsource-variable/geist-mono"
}
}

View File

@@ -10,6 +10,7 @@
"variable": "--font-sans",
"subsets": [
"latin"
]
],
"dependency": "@fontsource-variable/geist"
}
}

View File

@@ -10,6 +10,7 @@
"variable": "--font-sans",
"subsets": [
"latin"
]
],
"dependency": "@fontsource-variable/inter"
}
}

View File

@@ -10,6 +10,7 @@
"variable": "--font-mono",
"subsets": [
"latin"
]
],
"dependency": "@fontsource-variable/jetbrains-mono"
}
}

View File

@@ -10,6 +10,7 @@
"variable": "--font-serif",
"subsets": [
"latin"
]
],
"dependency": "@fontsource-variable/lora"
}
}

View File

@@ -10,6 +10,7 @@
"variable": "--font-serif",
"subsets": [
"latin"
]
],
"dependency": "@fontsource-variable/merriweather"
}
}

View File

@@ -7,6 +7,7 @@
"family": "'Noto Sans Variable', sans-serif",
"provider": "google",
"import": "Noto_Sans",
"variable": "--font-sans"
"variable": "--font-sans",
"dependency": "@fontsource-variable/noto-sans"
}
}

View File

@@ -10,6 +10,7 @@
"variable": "--font-serif",
"subsets": [
"latin"
]
],
"dependency": "@fontsource-variable/noto-serif"
}
}

View File

@@ -7,6 +7,7 @@
"family": "'Nunito Sans Variable', sans-serif",
"provider": "google",
"import": "Nunito_Sans",
"variable": "--font-sans"
"variable": "--font-sans",
"dependency": "@fontsource-variable/nunito-sans"
}
}

View File

@@ -10,6 +10,7 @@
"variable": "--font-sans",
"subsets": [
"latin"
]
],
"dependency": "@fontsource-variable/outfit"
}
}

View File

@@ -10,6 +10,7 @@
"variable": "--font-serif",
"subsets": [
"latin"
]
],
"dependency": "@fontsource-variable/playfair-display"
}
}

View File

@@ -10,6 +10,7 @@
"variable": "--font-sans",
"subsets": [
"latin"
]
],
"dependency": "@fontsource-variable/public-sans"
}
}

View File

@@ -10,6 +10,7 @@
"variable": "--font-sans",
"subsets": [
"latin"
]
],
"dependency": "@fontsource-variable/raleway"
}
}

View File

@@ -10,6 +10,7 @@
"variable": "--font-serif",
"subsets": [
"latin"
]
],
"dependency": "@fontsource-variable/roboto-slab"
}
}

View File

@@ -10,6 +10,7 @@
"variable": "--font-sans",
"subsets": [
"latin"
]
],
"dependency": "@fontsource-variable/roboto"
}
}

Some files were not shown because too many files have changed in this diff Show More