From 01d5f034b9c1fb20d01f713bb04317811b22bcf7 Mon Sep 17 00:00:00 2001 From: Albert Asaftei Date: Fri, 20 Feb 2026 09:58:43 +0100 Subject: [PATCH 01/11] chore: modified pixelact-ui description --- apps/v4/public/r/registries.json | 2 +- apps/v4/registry/directory.json | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/apps/v4/public/r/registries.json b/apps/v4/public/r/registries.json index a9502c3063..e67a174794 100644 --- a/apps/v4/public/r/registries.json +++ b/apps/v4/public/r/registries.json @@ -783,6 +783,6 @@ "name": "@pixelact-ui", "homepage": "https://pixelactui.com", "url": "https://pixelactui.com/r/{name}.json", - "description": "Playful pixel-art style components library built on top of shadcn" + "description": "Playful pixel art style components library built on top of shadcn. Perfect for retro style projects and games." } ] \ No newline at end of file diff --git a/apps/v4/registry/directory.json b/apps/v4/registry/directory.json index 6e0301329d..e2540e6685 100644 --- a/apps/v4/registry/directory.json +++ b/apps/v4/registry/directory.json @@ -913,7 +913,7 @@ "name": "@pixelact-ui", "homepage": "https://pixelactui.com", "url": "https://pixelactui.com/r/{name}.json", - "description": "Playful pixel-art style components library built on top of shadcn", + "description": "Playful pixel art style components library built on top of shadcn. Perfect for retro style projects and games.", "logo": "" } ] From 40aca13fb0261e042aeb4a42921145a35b74812e Mon Sep 17 00:00:00 2001 From: shadcn Date: Sat, 21 Feb 2026 21:41:01 +0400 Subject: [PATCH 02/11] fix: handling of apply directive inside utility --- .../shadcn/src/utils/updaters/update-css.ts | 54 ++++++++- .../test/utils/updaters/update-css.test.ts | 108 ++++++++++++++++++ 2 files changed, 160 insertions(+), 2 deletions(-) diff --git a/packages/shadcn/src/utils/updaters/update-css.ts b/packages/shadcn/src/utils/updaters/update-css.ts index 37243225f5..b474891cfc 100644 --- a/packages/shadcn/src/utils/updaters/update-css.ts +++ b/packages/shadcn/src/utils/updaters/update-css.ts @@ -317,7 +317,7 @@ function updateCssPlugin(css: z.infer) { postcss.comment({ text: "---break---" }) ) - // Add declarations with their values preserved + // Add declarations with their values preserved. if (typeof properties === "object") { for (const [prop, value] of Object.entries(properties)) { if (typeof value === "string") { @@ -327,13 +327,38 @@ function updateCssPlugin(css: z.infer) { raws: { semicolon: true, before: "\n " }, }) atRule.append(decl) + } else if ( + prop.startsWith("@") && + typeof value === "object" && + value !== null && + Object.keys(value as Record).length === 0 + ) { + // Handle at-rules with no body (e.g., @apply). + const atRuleMatch = prop.match(/@([a-zA-Z-]+)\s*(.*)/) + if (atRuleMatch) { + const [, atRuleName, atRuleParams] = atRuleMatch + const existingAtRule = atRule.nodes?.find( + (node): node is AtRule => + node.type === "atrule" && + node.name === atRuleName && + node.params === atRuleParams + ) + if (!existingAtRule) { + const newAtRule = postcss.atRule({ + name: atRuleName, + params: atRuleParams, + raws: { semicolon: true, before: "\n " }, + }) + atRule.append(newAtRule) + } + } } else if (typeof value === "object") { processRule(atRule, prop, value) } } } } else { - // Update existing utility class + // Update existing utility class. if (typeof properties === "object") { for (const [prop, value] of Object.entries(properties)) { if (typeof value === "string") { @@ -351,6 +376,31 @@ function updateCssPlugin(css: z.infer) { existingDecl ? existingDecl.replaceWith(decl) : utilityAtRule.append(decl) + } else if ( + prop.startsWith("@") && + typeof value === "object" && + value !== null && + Object.keys(value as Record).length === 0 + ) { + // Handle at-rules with no body (e.g., @apply). + const atRuleMatch = prop.match(/@([a-zA-Z-]+)\s*(.*)/) + if (atRuleMatch) { + const [, atRuleName, atRuleParams] = atRuleMatch + const existingAtRule = utilityAtRule.nodes?.find( + (node): node is AtRule => + node.type === "atrule" && + node.name === atRuleName && + node.params === atRuleParams + ) + if (!existingAtRule) { + const newAtRule = postcss.atRule({ + name: atRuleName, + params: atRuleParams, + raws: { semicolon: true, before: "\n " }, + }) + utilityAtRule.append(newAtRule) + } + } } else if (typeof value === "object") { processRule(utilityAtRule, prop, value) } diff --git a/packages/shadcn/test/utils/updaters/update-css.test.ts b/packages/shadcn/test/utils/updaters/update-css.test.ts index 3470409922..e168f0dfeb 100644 --- a/packages/shadcn/test/utils/updaters/update-css.test.ts +++ b/packages/shadcn/test/utils/updaters/update-css.test.ts @@ -929,6 +929,114 @@ describe("transformCss", () => { `) }) + test("should handle @apply inside @utility", async () => { + const input = `@import "tailwindcss";` + + const result = await transformCss(input, { + "@utility custom-btn": { + "@apply px-4 py-2 rounded-md": {}, + }, + }) + + expect(result).toMatchInlineSnapshot(` + "@import "tailwindcss"; + + @utility custom-btn { + @apply px-4 py-2 rounded-md; + }" + `) + }) + + test("should handle @apply mixed with declarations inside @utility", async () => { + const input = `@import "tailwindcss";` + + const result = await transformCss(input, { + "@utility custom-card": { + "@apply bg-white shadow-md": {}, + "border-radius": "0.5rem", + }, + }) + + expect(result).toMatchInlineSnapshot(` + "@import "tailwindcss"; + + @utility custom-card { + @apply bg-white shadow-md; + border-radius: 0.5rem; + }" + `) + }) + + test("should handle multiple @apply inside @utility", async () => { + const input = `@import "tailwindcss";` + + const result = await transformCss(input, { + "@utility custom-input": { + "@apply border border-gray-300 rounded-md": {}, + "@apply focus:ring-2 focus:ring-blue-500": {}, + padding: "0.5rem", + }, + }) + + expect(result).toMatchInlineSnapshot(` + "@import "tailwindcss"; + + @utility custom-input { + @apply border border-gray-300 rounded-md; + @apply focus:ring-2 focus:ring-blue-500; + padding: 0.5rem; + }" + `) + }) + + test("should add @apply to existing @utility", async () => { + const input = `@import "tailwindcss"; + +@utility custom-alert { + font-size: 1rem; +}` + + const result = await transformCss(input, { + "@utility custom-alert": { + "@apply font-bold text-red-500": {}, + }, + }) + + expect(result).toMatchInlineSnapshot(` + "@import "tailwindcss"; + + @utility custom-alert { + font-size: 1rem; + @apply font-bold text-red-500; + }" + `) + }) + + test("should not duplicate @apply inside existing @utility", async () => { + const input = `@import "tailwindcss"; + +@utility custom-badge { + @apply inline-flex items-center; + font-size: 0.75rem; +}` + + const result = await transformCss(input, { + "@utility custom-badge": { + "@apply inline-flex items-center": {}, + "font-size": "0.875rem", + }, + }) + + expect(result).toMatchInlineSnapshot(` + "@import "tailwindcss"; + + @utility custom-badge { + @apply inline-flex items-center; + font-size: 0.875rem; + }" + `) + }) + test("should replace existing keyframes instead of duplicating", async () => { const input = `@import "tailwindcss"; From 82f03d0f1dd12efb5395a0b8689533588d778d0c Mon Sep 17 00:00:00 2001 From: shadcn Date: Sat, 21 Feb 2026 21:41:37 +0400 Subject: [PATCH 03/11] chore: changeset --- .changeset/ten-gifts-check.md | 5 +++++ 1 file changed, 5 insertions(+) create mode 100644 .changeset/ten-gifts-check.md diff --git a/.changeset/ten-gifts-check.md b/.changeset/ten-gifts-check.md new file mode 100644 index 0000000000..c0cb133c59 --- /dev/null +++ b/.changeset/ten-gifts-check.md @@ -0,0 +1,5 @@ +--- +"shadcn": patch +--- + +handling of apply directive inside utility From a6ab998e5c15cc6975a87187378f1af7fb6ae553 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Nguy=E1=BB=85n=20Ch=C3=A1nh=20=C4=90=E1=BA=A1i?= Date: Sun, 22 Feb 2026 06:40:48 +0700 Subject: [PATCH 04/11] docs: add devDependencies section to registry-item-json.mdx --- .../content/docs/registry/registry-item-json.mdx | 16 ++++++++++++++++ 1 file changed, 16 insertions(+) diff --git a/apps/v4/content/docs/registry/registry-item-json.mdx b/apps/v4/content/docs/registry/registry-item-json.mdx index 8266b5d334..a9d82ae392 100644 --- a/apps/v4/content/docs/registry/registry-item-json.mdx +++ b/apps/v4/content/docs/registry/registry-item-json.mdx @@ -18,6 +18,7 @@ The `registry-item.json` schema is used to define your custom registry items. "https://example.com/r/foo" ], "dependencies": ["is-even@3.0.0", "motion"], + "devDependencies": ["tw-animate-css"], "files": [ { "path": "registry/new-york/hello-world/hello-world.tsx", @@ -144,6 +145,21 @@ Use `@version` to specify the version of your registry item. } ``` +### devDependencies + +The `devDependencies` property is used to specify the dev dependencies of your registry item. These are `npm` packages that are only needed during development. + +Use `@version` to specify the version of the package. + +```json title="registry-item.json" showLineNumbers +{ + "devDependencies": [ + "tw-animate-css", + "husky@^9.1.7" + ] +} +``` + ### registryDependencies Used for registry dependencies. Can be names, namespaced or URLs. From 805f73582f8ecbca91a2ea988b5723d61e2673cd Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Nguy=E1=BB=85n=20Ch=C3=A1nh=20=C4=90=E1=BA=A1i?= Date: Sun, 22 Feb 2026 06:44:42 +0700 Subject: [PATCH 05/11] fix: update husky dependency to name@1.2.0 in registry-item-json.mdx --- apps/v4/content/docs/registry/registry-item-json.mdx | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/apps/v4/content/docs/registry/registry-item-json.mdx b/apps/v4/content/docs/registry/registry-item-json.mdx index a9d82ae392..888bfaa258 100644 --- a/apps/v4/content/docs/registry/registry-item-json.mdx +++ b/apps/v4/content/docs/registry/registry-item-json.mdx @@ -155,7 +155,7 @@ Use `@version` to specify the version of the package. { "devDependencies": [ "tw-animate-css", - "husky@^9.1.7" + "name@1.2.0" ] } ``` From 474d461b1c269c662d0a3c2a364c0f5b0d13db95 Mon Sep 17 00:00:00 2001 From: harish-sundar_akto Date: Mon, 23 Feb 2026 13:30:54 +0530 Subject: [PATCH 06/11] feat(registry): add auth0 to registry directory --- apps/v4/public/r/registries.json | 6 ++++++ apps/v4/registry/directory.json | 7 +++++++ 2 files changed, 13 insertions(+) diff --git a/apps/v4/public/r/registries.json b/apps/v4/public/r/registries.json index a9502c3063..f46af9c20b 100644 --- a/apps/v4/public/r/registries.json +++ b/apps/v4/public/r/registries.json @@ -11,6 +11,12 @@ "url": "https://ui.8starlabs.com/r/{name}.json", "description": "A set of beautifully designed components designed for developers who want niche, high-utility UI elements that you won't find in standard libraries." }, + { + "name": "@auth0", + "homepage": "https://auth0.com", + "url": "https://ui.auth0.com/r/{name}.json", + "description": "Official Auth0 Universal Components for Web. Accelerate development with pre-built, embeddable UI for enterprise SSO, MFA, and organization management" + }, { "name": "@abui", "homepage": "https://abui.io", diff --git a/apps/v4/registry/directory.json b/apps/v4/registry/directory.json index 6e0301329d..44c7a0deb9 100644 --- a/apps/v4/registry/directory.json +++ b/apps/v4/registry/directory.json @@ -13,6 +13,13 @@ "description": "A set of beautifully designed components designed for developers who want niche, high-utility UI elements that you won't find in standard libraries.", "logo": " " }, + { + "name": "@auth0", + "homepage": "https://auth0.com", + "url": "https://ui.auth0.com/r/{name}.json", + "description": "Official Auth0 Universal Components for Web. Accelerate development with pre-built, embeddable UI for enterprise SSO, MFA, and organization management", + "logo": "" + }, { "name": "@abui", "homepage": "https://abui.io", From 6d2c00376e936a04cadda7002f18f7e77a04497b Mon Sep 17 00:00:00 2001 From: Murad Date: Thu, 26 Feb 2026 11:54:42 +0300 Subject: [PATCH 07/11] fix(notion-prompt-form): replace w-48 with min-w-48 on model dropdown to prevent hover clipping --- .../v4/app/(app)/(root)/components/notion-prompt-form.tsx | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/apps/v4/app/(app)/(root)/components/notion-prompt-form.tsx b/apps/v4/app/(app)/(root)/components/notion-prompt-form.tsx index 815ef0b57f..f020702524 100644 --- a/apps/v4/app/(app)/(root)/components/notion-prompt-form.tsx +++ b/apps/v4/app/(app)/(root)/components/notion-prompt-form.tsx @@ -302,8 +302,12 @@ export function NotionPromptForm() { Select AI model - - + + Select Agent Mode From dc89adf190e9c1aeee4b3510979b5799bfcdab07 Mon Sep 17 00:00:00 2001 From: Murad Date: Thu, 26 Feb 2026 15:06:18 +0300 Subject: [PATCH 08/11] chore: run prettier format:write --- apps/v4/content/docs/registry/registry-item-json.mdx | 5 +---- packages/shadcn/src/registry/fetcher.test.ts | 4 +++- 2 files changed, 4 insertions(+), 5 deletions(-) diff --git a/apps/v4/content/docs/registry/registry-item-json.mdx b/apps/v4/content/docs/registry/registry-item-json.mdx index 888bfaa258..49cc117077 100644 --- a/apps/v4/content/docs/registry/registry-item-json.mdx +++ b/apps/v4/content/docs/registry/registry-item-json.mdx @@ -153,10 +153,7 @@ Use `@version` to specify the version of the package. ```json title="registry-item.json" showLineNumbers { - "devDependencies": [ - "tw-animate-css", - "name@1.2.0" - ] + "devDependencies": ["tw-animate-css", "name@1.2.0"] } ``` diff --git a/packages/shadcn/src/registry/fetcher.test.ts b/packages/shadcn/src/registry/fetcher.test.ts index 0348db6c0b..0523bc8ee6 100644 --- a/packages/shadcn/src/registry/fetcher.test.ts +++ b/packages/shadcn/src/registry/fetcher.test.ts @@ -128,7 +128,9 @@ describe("fetchRegistry", () => { }) it("should handle 410 errors", async () => { - await expect(fetchRegistry(["gone.json"])).rejects.toThrow(RegistryGoneError) + await expect(fetchRegistry(["gone.json"])).rejects.toThrow( + RegistryGoneError + ) }) it("should handle network errors", async () => { From 006dc8f9d00295ea7131521d91d889a0f44c3892 Mon Sep 17 00:00:00 2001 From: shadcn Date: Thu, 26 Feb 2026 23:42:59 +0400 Subject: [PATCH 09/11] feat: add shadcnuikit to registry --- apps/v4/public/r/registries.json | 6 ++++++ apps/v4/registry/directory.json | 7 +++++++ 2 files changed, 13 insertions(+) diff --git a/apps/v4/public/r/registries.json b/apps/v4/public/r/registries.json index f68245ae70..a2f2eae219 100644 --- a/apps/v4/public/r/registries.json +++ b/apps/v4/public/r/registries.json @@ -533,6 +533,12 @@ "url": "https://shadcnui-blocks.com/r/{name}.json", "description": "A collection of premium, production-ready shadcn/ui blocks, components and templates." }, + { + "name": "@shadcnuikit", + "homepage": "https://shadcnuikit.com", + "url": "https://shadcnuikit.com/r/{name}.json", + "description": "Launch your projects faster with admin dashboards, website templates, components, blocks, and pre-built real-world examples." + }, { "name": "@shadcraft", "homepage": "https://free.shadcraft.com", diff --git a/apps/v4/registry/directory.json b/apps/v4/registry/directory.json index 9b4aa05ec3..f186ff7e2e 100644 --- a/apps/v4/registry/directory.json +++ b/apps/v4/registry/directory.json @@ -622,6 +622,13 @@ "description": "A collection of premium, production-ready shadcn/ui blocks, components and templates.", "logo": "" }, + { + "name": "@shadcnuikit", + "homepage": "https://shadcnuikit.com", + "url": "https://shadcnuikit.com/r/{name}.json", + "description": "Launch your projects faster with admin dashboards, website templates, components, blocks, and pre-built real-world examples.", + "logo": " " + }, { "name": "@shadcraft", "homepage": "https://free.shadcraft.com", From 0008c487e920a2c4effc3d6c1941458ee152b730 Mon Sep 17 00:00:00 2001 From: shadcn Date: Fri, 27 Feb 2026 09:18:23 +0400 Subject: [PATCH 10/11] feat: ensure bases are formatted before build --- .../docs/registry/registry-item-json.mdx | 5 +- apps/v4/public/r/config.json | 2 +- apps/v4/public/r/registries.json | 2 +- .../public/r/styles/base-lyra/accordion.json | 2 +- .../r/styles/base-lyra/alert-dialog.json | 2 +- apps/v4/public/r/styles/base-lyra/alert.json | 2 +- apps/v4/public/r/styles/base-lyra/avatar.json | 2 +- apps/v4/public/r/styles/base-lyra/badge.json | 2 +- .../public/r/styles/base-lyra/breadcrumb.json | 2 +- apps/v4/public/r/styles/base-lyra/button.json | 2 +- .../public/r/styles/base-lyra/calendar.json | 2 +- apps/v4/public/r/styles/base-lyra/card.json | 2 +- apps/v4/public/r/styles/base-lyra/chart.json | 2 +- .../public/r/styles/base-lyra/checkbox.json | 2 +- .../public/r/styles/base-lyra/combobox.json | 2 +- .../v4/public/r/styles/base-lyra/command.json | 2 +- .../r/styles/base-lyra/context-menu.json | 2 +- apps/v4/public/r/styles/base-lyra/dialog.json | 2 +- apps/v4/public/r/styles/base-lyra/drawer.json | 2 +- .../r/styles/base-lyra/dropdown-menu.json | 2 +- apps/v4/public/r/styles/base-lyra/empty.json | 2 +- .../r/styles/base-lyra/field-example.json | 2 +- apps/v4/public/r/styles/base-lyra/field.json | 2 +- .../public/r/styles/base-lyra/hover-card.json | 2 +- .../r/styles/base-lyra/input-group.json | 2 +- .../public/r/styles/base-lyra/input-otp.json | 2 +- apps/v4/public/r/styles/base-lyra/input.json | 2 +- apps/v4/public/r/styles/base-lyra/item.json | 2 +- apps/v4/public/r/styles/base-lyra/kbd.json | 2 +- apps/v4/public/r/styles/base-lyra/label.json | 2 +- .../v4/public/r/styles/base-lyra/menubar.json | 2 +- .../r/styles/base-lyra/native-select.json | 2 +- .../r/styles/base-lyra/navigation-menu.json | 2 +- .../public/r/styles/base-lyra/pagination.json | 2 +- .../v4/public/r/styles/base-lyra/popover.json | 2 +- .../v4/public/r/styles/base-lyra/preview.json | 2 +- .../public/r/styles/base-lyra/progress.json | 2 +- .../styles/base-lyra/radio-group-example.json | 2 +- .../r/styles/base-lyra/radio-group.json | 2 +- .../public/r/styles/base-lyra/registry.json | 601 +---- .../public/r/styles/base-lyra/resizable.json | 2 +- .../r/styles/base-lyra/scroll-area.json | 2 +- apps/v4/public/r/styles/base-lyra/select.json | 2 +- apps/v4/public/r/styles/base-lyra/sheet.json | 2 +- .../v4/public/r/styles/base-lyra/sidebar.json | 2 +- .../public/r/styles/base-lyra/skeleton.json | 2 +- apps/v4/public/r/styles/base-lyra/slider.json | 2 +- apps/v4/public/r/styles/base-lyra/switch.json | 2 +- apps/v4/public/r/styles/base-lyra/table.json | 2 +- apps/v4/public/r/styles/base-lyra/tabs.json | 2 +- .../public/r/styles/base-lyra/textarea.json | 2 +- .../r/styles/base-lyra/toggle-group.json | 2 +- .../v4/public/r/styles/base-lyra/tooltip.json | 2 +- .../public/r/styles/base-maia/accordion.json | 2 +- .../r/styles/base-maia/alert-dialog.json | 2 +- apps/v4/public/r/styles/base-maia/alert.json | 2 +- apps/v4/public/r/styles/base-maia/avatar.json | 2 +- apps/v4/public/r/styles/base-maia/badge.json | 2 +- .../public/r/styles/base-maia/breadcrumb.json | 2 +- apps/v4/public/r/styles/base-maia/button.json | 2 +- .../public/r/styles/base-maia/calendar.json | 2 +- apps/v4/public/r/styles/base-maia/card.json | 2 +- .../public/r/styles/base-maia/carousel.json | 2 +- apps/v4/public/r/styles/base-maia/chart.json | 2 +- .../public/r/styles/base-maia/checkbox.json | 2 +- .../public/r/styles/base-maia/combobox.json | 2 +- .../v4/public/r/styles/base-maia/command.json | 2 +- .../r/styles/base-maia/context-menu.json | 2 +- apps/v4/public/r/styles/base-maia/dialog.json | 2 +- apps/v4/public/r/styles/base-maia/drawer.json | 2 +- .../r/styles/base-maia/dropdown-menu.json | 2 +- apps/v4/public/r/styles/base-maia/empty.json | 2 +- .../r/styles/base-maia/field-example.json | 2 +- apps/v4/public/r/styles/base-maia/field.json | 2 +- .../public/r/styles/base-maia/hover-card.json | 2 +- .../r/styles/base-maia/input-group.json | 2 +- .../public/r/styles/base-maia/input-otp.json | 2 +- apps/v4/public/r/styles/base-maia/input.json | 2 +- apps/v4/public/r/styles/base-maia/item.json | 2 +- apps/v4/public/r/styles/base-maia/kbd.json | 2 +- apps/v4/public/r/styles/base-maia/label.json | 2 +- .../v4/public/r/styles/base-maia/menubar.json | 2 +- .../r/styles/base-maia/native-select.json | 2 +- .../r/styles/base-maia/navigation-menu.json | 2 +- .../public/r/styles/base-maia/pagination.json | 2 +- .../v4/public/r/styles/base-maia/popover.json | 2 +- .../v4/public/r/styles/base-maia/preview.json | 2 +- .../public/r/styles/base-maia/progress.json | 2 +- .../styles/base-maia/radio-group-example.json | 2 +- .../r/styles/base-maia/radio-group.json | 2 +- .../public/r/styles/base-maia/registry.json | 601 +---- .../public/r/styles/base-maia/resizable.json | 2 +- .../r/styles/base-maia/scroll-area.json | 2 +- apps/v4/public/r/styles/base-maia/select.json | 2 +- apps/v4/public/r/styles/base-maia/sheet.json | 2 +- .../v4/public/r/styles/base-maia/sidebar.json | 2 +- .../public/r/styles/base-maia/skeleton.json | 2 +- apps/v4/public/r/styles/base-maia/slider.json | 2 +- apps/v4/public/r/styles/base-maia/switch.json | 2 +- apps/v4/public/r/styles/base-maia/table.json | 2 +- apps/v4/public/r/styles/base-maia/tabs.json | 2 +- .../public/r/styles/base-maia/textarea.json | 2 +- .../r/styles/base-maia/toggle-group.json | 2 +- .../v4/public/r/styles/base-maia/tooltip.json | 2 +- .../public/r/styles/base-mira/accordion.json | 2 +- .../r/styles/base-mira/alert-dialog.json | 2 +- apps/v4/public/r/styles/base-mira/alert.json | 2 +- apps/v4/public/r/styles/base-mira/avatar.json | 2 +- apps/v4/public/r/styles/base-mira/badge.json | 2 +- .../public/r/styles/base-mira/breadcrumb.json | 2 +- apps/v4/public/r/styles/base-mira/button.json | 2 +- .../public/r/styles/base-mira/calendar.json | 2 +- apps/v4/public/r/styles/base-mira/card.json | 2 +- .../public/r/styles/base-mira/carousel.json | 2 +- apps/v4/public/r/styles/base-mira/chart.json | 2 +- .../public/r/styles/base-mira/checkbox.json | 2 +- .../public/r/styles/base-mira/combobox.json | 2 +- .../v4/public/r/styles/base-mira/command.json | 2 +- .../r/styles/base-mira/context-menu.json | 2 +- apps/v4/public/r/styles/base-mira/dialog.json | 2 +- apps/v4/public/r/styles/base-mira/drawer.json | 2 +- .../r/styles/base-mira/dropdown-menu.json | 2 +- apps/v4/public/r/styles/base-mira/empty.json | 2 +- .../r/styles/base-mira/field-example.json | 2 +- apps/v4/public/r/styles/base-mira/field.json | 2 +- .../public/r/styles/base-mira/hover-card.json | 2 +- .../r/styles/base-mira/input-group.json | 2 +- .../public/r/styles/base-mira/input-otp.json | 2 +- apps/v4/public/r/styles/base-mira/input.json | 2 +- apps/v4/public/r/styles/base-mira/item.json | 2 +- apps/v4/public/r/styles/base-mira/kbd.json | 2 +- apps/v4/public/r/styles/base-mira/label.json | 2 +- .../v4/public/r/styles/base-mira/menubar.json | 2 +- .../r/styles/base-mira/native-select.json | 2 +- .../r/styles/base-mira/navigation-menu.json | 2 +- .../public/r/styles/base-mira/pagination.json | 2 +- .../v4/public/r/styles/base-mira/popover.json | 2 +- .../v4/public/r/styles/base-mira/preview.json | 2 +- .../public/r/styles/base-mira/progress.json | 2 +- .../styles/base-mira/radio-group-example.json | 2 +- .../r/styles/base-mira/radio-group.json | 2 +- .../public/r/styles/base-mira/registry.json | 601 +---- .../public/r/styles/base-mira/resizable.json | 2 +- .../r/styles/base-mira/scroll-area.json | 2 +- apps/v4/public/r/styles/base-mira/select.json | 2 +- apps/v4/public/r/styles/base-mira/sheet.json | 2 +- .../v4/public/r/styles/base-mira/sidebar.json | 2 +- .../public/r/styles/base-mira/skeleton.json | 2 +- apps/v4/public/r/styles/base-mira/slider.json | 2 +- apps/v4/public/r/styles/base-mira/switch.json | 2 +- apps/v4/public/r/styles/base-mira/table.json | 2 +- apps/v4/public/r/styles/base-mira/tabs.json | 2 +- .../public/r/styles/base-mira/textarea.json | 2 +- .../r/styles/base-mira/toggle-group.json | 2 +- .../v4/public/r/styles/base-mira/tooltip.json | 2 +- .../public/r/styles/base-nova/accordion.json | 2 +- .../r/styles/base-nova/alert-dialog.json | 2 +- apps/v4/public/r/styles/base-nova/alert.json | 2 +- apps/v4/public/r/styles/base-nova/avatar.json | 2 +- apps/v4/public/r/styles/base-nova/badge.json | 2 +- .../public/r/styles/base-nova/breadcrumb.json | 2 +- apps/v4/public/r/styles/base-nova/button.json | 2 +- .../public/r/styles/base-nova/calendar.json | 2 +- apps/v4/public/r/styles/base-nova/card.json | 2 +- .../public/r/styles/base-nova/carousel.json | 2 +- apps/v4/public/r/styles/base-nova/chart.json | 2 +- .../public/r/styles/base-nova/checkbox.json | 2 +- .../public/r/styles/base-nova/combobox.json | 2 +- .../v4/public/r/styles/base-nova/command.json | 2 +- .../r/styles/base-nova/context-menu.json | 2 +- apps/v4/public/r/styles/base-nova/dialog.json | 2 +- apps/v4/public/r/styles/base-nova/drawer.json | 2 +- .../r/styles/base-nova/dropdown-menu.json | 2 +- apps/v4/public/r/styles/base-nova/empty.json | 2 +- .../r/styles/base-nova/field-example.json | 2 +- apps/v4/public/r/styles/base-nova/field.json | 2 +- .../public/r/styles/base-nova/hover-card.json | 2 +- .../r/styles/base-nova/input-group.json | 2 +- .../public/r/styles/base-nova/input-otp.json | 2 +- apps/v4/public/r/styles/base-nova/input.json | 2 +- apps/v4/public/r/styles/base-nova/item.json | 2 +- apps/v4/public/r/styles/base-nova/kbd.json | 2 +- apps/v4/public/r/styles/base-nova/label.json | 2 +- .../v4/public/r/styles/base-nova/menubar.json | 2 +- .../r/styles/base-nova/native-select.json | 2 +- .../r/styles/base-nova/navigation-menu.json | 2 +- .../public/r/styles/base-nova/pagination.json | 2 +- .../v4/public/r/styles/base-nova/popover.json | 2 +- .../v4/public/r/styles/base-nova/preview.json | 2 +- .../public/r/styles/base-nova/progress.json | 2 +- .../styles/base-nova/radio-group-example.json | 2 +- .../r/styles/base-nova/radio-group.json | 2 +- .../public/r/styles/base-nova/registry.json | 601 +---- .../public/r/styles/base-nova/resizable.json | 2 +- .../r/styles/base-nova/scroll-area.json | 2 +- apps/v4/public/r/styles/base-nova/select.json | 2 +- apps/v4/public/r/styles/base-nova/sheet.json | 2 +- .../v4/public/r/styles/base-nova/sidebar.json | 2 +- .../public/r/styles/base-nova/skeleton.json | 2 +- apps/v4/public/r/styles/base-nova/slider.json | 2 +- apps/v4/public/r/styles/base-nova/switch.json | 2 +- apps/v4/public/r/styles/base-nova/table.json | 2 +- apps/v4/public/r/styles/base-nova/tabs.json | 2 +- .../public/r/styles/base-nova/textarea.json | 2 +- .../r/styles/base-nova/toggle-group.json | 2 +- .../v4/public/r/styles/base-nova/tooltip.json | 2 +- .../public/r/styles/base-vega/accordion.json | 2 +- .../r/styles/base-vega/alert-dialog.json | 2 +- apps/v4/public/r/styles/base-vega/alert.json | 2 +- apps/v4/public/r/styles/base-vega/avatar.json | 2 +- apps/v4/public/r/styles/base-vega/badge.json | 2 +- .../public/r/styles/base-vega/breadcrumb.json | 2 +- apps/v4/public/r/styles/base-vega/button.json | 2 +- .../public/r/styles/base-vega/calendar.json | 2 +- apps/v4/public/r/styles/base-vega/card.json | 2 +- .../public/r/styles/base-vega/carousel.json | 2 +- apps/v4/public/r/styles/base-vega/chart.json | 2 +- .../public/r/styles/base-vega/checkbox.json | 2 +- .../public/r/styles/base-vega/combobox.json | 2 +- .../v4/public/r/styles/base-vega/command.json | 2 +- .../r/styles/base-vega/context-menu.json | 2 +- apps/v4/public/r/styles/base-vega/dialog.json | 2 +- apps/v4/public/r/styles/base-vega/drawer.json | 2 +- .../r/styles/base-vega/dropdown-menu.json | 2 +- apps/v4/public/r/styles/base-vega/empty.json | 2 +- .../r/styles/base-vega/field-example.json | 2 +- apps/v4/public/r/styles/base-vega/field.json | 2 +- .../public/r/styles/base-vega/hover-card.json | 2 +- .../r/styles/base-vega/input-group.json | 2 +- .../public/r/styles/base-vega/input-otp.json | 2 +- apps/v4/public/r/styles/base-vega/input.json | 2 +- apps/v4/public/r/styles/base-vega/item.json | 2 +- apps/v4/public/r/styles/base-vega/kbd.json | 2 +- apps/v4/public/r/styles/base-vega/label.json | 2 +- .../v4/public/r/styles/base-vega/menubar.json | 2 +- .../r/styles/base-vega/native-select.json | 2 +- .../r/styles/base-vega/navigation-menu.json | 2 +- .../public/r/styles/base-vega/pagination.json | 2 +- .../v4/public/r/styles/base-vega/popover.json | 2 +- .../v4/public/r/styles/base-vega/preview.json | 2 +- .../public/r/styles/base-vega/progress.json | 2 +- .../styles/base-vega/radio-group-example.json | 2 +- .../r/styles/base-vega/radio-group.json | 2 +- .../public/r/styles/base-vega/registry.json | 601 +---- .../public/r/styles/base-vega/resizable.json | 2 +- .../r/styles/base-vega/scroll-area.json | 2 +- apps/v4/public/r/styles/base-vega/select.json | 2 +- apps/v4/public/r/styles/base-vega/sheet.json | 2 +- .../v4/public/r/styles/base-vega/sidebar.json | 2 +- .../public/r/styles/base-vega/skeleton.json | 2 +- apps/v4/public/r/styles/base-vega/slider.json | 2 +- apps/v4/public/r/styles/base-vega/switch.json | 2 +- apps/v4/public/r/styles/base-vega/table.json | 2 +- apps/v4/public/r/styles/base-vega/tabs.json | 2 +- .../public/r/styles/base-vega/textarea.json | 2 +- .../r/styles/base-vega/toggle-group.json | 2 +- .../v4/public/r/styles/base-vega/tooltip.json | 2 +- .../public/r/styles/new-york-v4/registry.json | 2204 ++++------------- .../public/r/styles/radix-lyra/accordion.json | 2 +- .../r/styles/radix-lyra/alert-dialog.json | 2 +- apps/v4/public/r/styles/radix-lyra/alert.json | 2 +- .../v4/public/r/styles/radix-lyra/avatar.json | 2 +- apps/v4/public/r/styles/radix-lyra/badge.json | 2 +- .../r/styles/radix-lyra/breadcrumb.json | 2 +- .../r/styles/radix-lyra/button-group.json | 2 +- .../v4/public/r/styles/radix-lyra/button.json | 2 +- .../public/r/styles/radix-lyra/calendar.json | 2 +- apps/v4/public/r/styles/radix-lyra/card.json | 2 +- apps/v4/public/r/styles/radix-lyra/chart.json | 2 +- .../public/r/styles/radix-lyra/checkbox.json | 2 +- .../public/r/styles/radix-lyra/combobox.json | 2 +- .../public/r/styles/radix-lyra/command.json | 2 +- .../r/styles/radix-lyra/context-menu.json | 2 +- .../r/styles/radix-lyra/dashboard-01.json | 2 +- .../v4/public/r/styles/radix-lyra/dialog.json | 2 +- .../v4/public/r/styles/radix-lyra/drawer.json | 2 +- .../r/styles/radix-lyra/dropdown-menu.json | 2 +- apps/v4/public/r/styles/radix-lyra/empty.json | 2 +- apps/v4/public/r/styles/radix-lyra/field.json | 2 +- .../r/styles/radix-lyra/hover-card.json | 2 +- .../r/styles/radix-lyra/input-group.json | 2 +- .../public/r/styles/radix-lyra/input-otp.json | 2 +- apps/v4/public/r/styles/radix-lyra/input.json | 2 +- apps/v4/public/r/styles/radix-lyra/item.json | 2 +- apps/v4/public/r/styles/radix-lyra/kbd.json | 2 +- apps/v4/public/r/styles/radix-lyra/label.json | 2 +- .../public/r/styles/radix-lyra/menubar.json | 2 +- .../r/styles/radix-lyra/native-select.json | 2 +- .../r/styles/radix-lyra/navigation-menu.json | 2 +- .../r/styles/radix-lyra/pagination.json | 2 +- .../public/r/styles/radix-lyra/popover.json | 2 +- .../public/r/styles/radix-lyra/progress.json | 2 +- .../r/styles/radix-lyra/radio-group.json | 2 +- .../public/r/styles/radix-lyra/registry.json | 590 +---- .../public/r/styles/radix-lyra/resizable.json | 2 +- .../r/styles/radix-lyra/scroll-area.json | 2 +- .../v4/public/r/styles/radix-lyra/select.json | 2 +- apps/v4/public/r/styles/radix-lyra/sheet.json | 2 +- .../r/styles/radix-lyra/sidebar-16.json | 2 +- .../public/r/styles/radix-lyra/sidebar.json | 2 +- .../public/r/styles/radix-lyra/skeleton.json | 2 +- .../v4/public/r/styles/radix-lyra/slider.json | 2 +- .../v4/public/r/styles/radix-lyra/switch.json | 2 +- apps/v4/public/r/styles/radix-lyra/table.json | 2 +- apps/v4/public/r/styles/radix-lyra/tabs.json | 2 +- .../public/r/styles/radix-lyra/textarea.json | 2 +- .../r/styles/radix-lyra/toggle-group.json | 2 +- .../public/r/styles/radix-lyra/tooltip.json | 2 +- .../public/r/styles/radix-maia/accordion.json | 2 +- .../r/styles/radix-maia/alert-dialog.json | 2 +- apps/v4/public/r/styles/radix-maia/alert.json | 2 +- .../v4/public/r/styles/radix-maia/avatar.json | 2 +- apps/v4/public/r/styles/radix-maia/badge.json | 2 +- .../r/styles/radix-maia/breadcrumb.json | 2 +- .../r/styles/radix-maia/button-group.json | 2 +- .../v4/public/r/styles/radix-maia/button.json | 2 +- .../public/r/styles/radix-maia/calendar.json | 2 +- apps/v4/public/r/styles/radix-maia/card.json | 2 +- .../public/r/styles/radix-maia/carousel.json | 2 +- apps/v4/public/r/styles/radix-maia/chart.json | 2 +- .../public/r/styles/radix-maia/checkbox.json | 2 +- .../public/r/styles/radix-maia/combobox.json | 2 +- .../public/r/styles/radix-maia/command.json | 2 +- .../r/styles/radix-maia/context-menu.json | 2 +- .../r/styles/radix-maia/dashboard-01.json | 2 +- .../v4/public/r/styles/radix-maia/dialog.json | 2 +- .../v4/public/r/styles/radix-maia/drawer.json | 2 +- .../r/styles/radix-maia/dropdown-menu.json | 2 +- apps/v4/public/r/styles/radix-maia/empty.json | 2 +- apps/v4/public/r/styles/radix-maia/field.json | 2 +- .../r/styles/radix-maia/hover-card.json | 2 +- .../r/styles/radix-maia/input-group.json | 2 +- .../public/r/styles/radix-maia/input-otp.json | 2 +- apps/v4/public/r/styles/radix-maia/input.json | 2 +- apps/v4/public/r/styles/radix-maia/item.json | 2 +- apps/v4/public/r/styles/radix-maia/kbd.json | 2 +- apps/v4/public/r/styles/radix-maia/label.json | 2 +- .../public/r/styles/radix-maia/menubar.json | 2 +- .../r/styles/radix-maia/native-select.json | 2 +- .../r/styles/radix-maia/navigation-menu.json | 2 +- .../r/styles/radix-maia/pagination.json | 2 +- .../public/r/styles/radix-maia/popover.json | 2 +- .../public/r/styles/radix-maia/progress.json | 2 +- .../r/styles/radix-maia/radio-group.json | 2 +- .../public/r/styles/radix-maia/registry.json | 590 +---- .../public/r/styles/radix-maia/resizable.json | 2 +- .../r/styles/radix-maia/scroll-area.json | 2 +- .../v4/public/r/styles/radix-maia/select.json | 2 +- apps/v4/public/r/styles/radix-maia/sheet.json | 2 +- .../r/styles/radix-maia/sidebar-16.json | 2 +- .../public/r/styles/radix-maia/sidebar.json | 2 +- .../public/r/styles/radix-maia/skeleton.json | 2 +- .../v4/public/r/styles/radix-maia/slider.json | 2 +- .../v4/public/r/styles/radix-maia/switch.json | 2 +- apps/v4/public/r/styles/radix-maia/table.json | 2 +- apps/v4/public/r/styles/radix-maia/tabs.json | 2 +- .../public/r/styles/radix-maia/textarea.json | 2 +- .../r/styles/radix-maia/toggle-group.json | 2 +- .../public/r/styles/radix-maia/tooltip.json | 2 +- .../public/r/styles/radix-mira/accordion.json | 2 +- .../r/styles/radix-mira/alert-dialog.json | 2 +- apps/v4/public/r/styles/radix-mira/alert.json | 2 +- .../v4/public/r/styles/radix-mira/avatar.json | 2 +- apps/v4/public/r/styles/radix-mira/badge.json | 2 +- .../r/styles/radix-mira/breadcrumb.json | 2 +- .../r/styles/radix-mira/button-group.json | 2 +- .../v4/public/r/styles/radix-mira/button.json | 2 +- .../public/r/styles/radix-mira/calendar.json | 2 +- apps/v4/public/r/styles/radix-mira/card.json | 2 +- .../public/r/styles/radix-mira/carousel.json | 2 +- apps/v4/public/r/styles/radix-mira/chart.json | 2 +- .../public/r/styles/radix-mira/checkbox.json | 2 +- .../public/r/styles/radix-mira/combobox.json | 2 +- .../public/r/styles/radix-mira/command.json | 2 +- .../r/styles/radix-mira/context-menu.json | 2 +- .../r/styles/radix-mira/dashboard-01.json | 2 +- .../v4/public/r/styles/radix-mira/dialog.json | 2 +- .../v4/public/r/styles/radix-mira/drawer.json | 2 +- .../r/styles/radix-mira/dropdown-menu.json | 2 +- apps/v4/public/r/styles/radix-mira/empty.json | 2 +- apps/v4/public/r/styles/radix-mira/field.json | 2 +- .../r/styles/radix-mira/hover-card.json | 2 +- .../r/styles/radix-mira/input-group.json | 2 +- .../public/r/styles/radix-mira/input-otp.json | 2 +- apps/v4/public/r/styles/radix-mira/input.json | 2 +- apps/v4/public/r/styles/radix-mira/item.json | 2 +- apps/v4/public/r/styles/radix-mira/kbd.json | 2 +- apps/v4/public/r/styles/radix-mira/label.json | 2 +- .../public/r/styles/radix-mira/menubar.json | 2 +- .../r/styles/radix-mira/native-select.json | 2 +- .../r/styles/radix-mira/navigation-menu.json | 2 +- .../r/styles/radix-mira/pagination.json | 2 +- .../public/r/styles/radix-mira/popover.json | 2 +- .../public/r/styles/radix-mira/progress.json | 2 +- .../r/styles/radix-mira/radio-group.json | 2 +- .../public/r/styles/radix-mira/registry.json | 590 +---- .../public/r/styles/radix-mira/resizable.json | 2 +- .../r/styles/radix-mira/scroll-area.json | 2 +- .../v4/public/r/styles/radix-mira/select.json | 2 +- apps/v4/public/r/styles/radix-mira/sheet.json | 2 +- .../r/styles/radix-mira/sidebar-16.json | 2 +- .../public/r/styles/radix-mira/sidebar.json | 2 +- .../public/r/styles/radix-mira/skeleton.json | 2 +- .../v4/public/r/styles/radix-mira/slider.json | 2 +- .../v4/public/r/styles/radix-mira/switch.json | 2 +- apps/v4/public/r/styles/radix-mira/table.json | 2 +- apps/v4/public/r/styles/radix-mira/tabs.json | 2 +- .../public/r/styles/radix-mira/textarea.json | 2 +- .../r/styles/radix-mira/toggle-group.json | 2 +- .../public/r/styles/radix-mira/tooltip.json | 2 +- .../public/r/styles/radix-nova/accordion.json | 2 +- .../r/styles/radix-nova/alert-dialog.json | 2 +- apps/v4/public/r/styles/radix-nova/alert.json | 2 +- .../v4/public/r/styles/radix-nova/avatar.json | 2 +- apps/v4/public/r/styles/radix-nova/badge.json | 2 +- .../r/styles/radix-nova/breadcrumb.json | 2 +- .../r/styles/radix-nova/button-group.json | 2 +- .../v4/public/r/styles/radix-nova/button.json | 2 +- .../public/r/styles/radix-nova/calendar.json | 2 +- apps/v4/public/r/styles/radix-nova/card.json | 2 +- .../public/r/styles/radix-nova/carousel.json | 2 +- apps/v4/public/r/styles/radix-nova/chart.json | 2 +- .../public/r/styles/radix-nova/checkbox.json | 2 +- .../public/r/styles/radix-nova/combobox.json | 2 +- .../public/r/styles/radix-nova/command.json | 2 +- .../r/styles/radix-nova/context-menu.json | 2 +- .../r/styles/radix-nova/dashboard-01.json | 2 +- .../v4/public/r/styles/radix-nova/dialog.json | 2 +- .../v4/public/r/styles/radix-nova/drawer.json | 2 +- .../r/styles/radix-nova/dropdown-menu.json | 2 +- apps/v4/public/r/styles/radix-nova/empty.json | 2 +- apps/v4/public/r/styles/radix-nova/field.json | 2 +- .../r/styles/radix-nova/hover-card.json | 2 +- .../r/styles/radix-nova/input-group.json | 2 +- .../public/r/styles/radix-nova/input-otp.json | 2 +- apps/v4/public/r/styles/radix-nova/input.json | 2 +- apps/v4/public/r/styles/radix-nova/item.json | 2 +- apps/v4/public/r/styles/radix-nova/kbd.json | 2 +- apps/v4/public/r/styles/radix-nova/label.json | 2 +- .../public/r/styles/radix-nova/menubar.json | 2 +- .../r/styles/radix-nova/native-select.json | 2 +- .../r/styles/radix-nova/navigation-menu.json | 2 +- .../r/styles/radix-nova/pagination.json | 2 +- .../public/r/styles/radix-nova/popover.json | 2 +- .../public/r/styles/radix-nova/progress.json | 2 +- .../r/styles/radix-nova/radio-group.json | 2 +- .../public/r/styles/radix-nova/registry.json | 590 +---- .../public/r/styles/radix-nova/resizable.json | 2 +- .../r/styles/radix-nova/scroll-area.json | 2 +- .../v4/public/r/styles/radix-nova/select.json | 2 +- apps/v4/public/r/styles/radix-nova/sheet.json | 2 +- .../r/styles/radix-nova/sidebar-16.json | 2 +- .../public/r/styles/radix-nova/sidebar.json | 2 +- .../public/r/styles/radix-nova/skeleton.json | 2 +- .../v4/public/r/styles/radix-nova/slider.json | 2 +- .../v4/public/r/styles/radix-nova/switch.json | 2 +- apps/v4/public/r/styles/radix-nova/table.json | 2 +- apps/v4/public/r/styles/radix-nova/tabs.json | 2 +- .../public/r/styles/radix-nova/textarea.json | 2 +- .../r/styles/radix-nova/toggle-group.json | 2 +- .../public/r/styles/radix-nova/tooltip.json | 2 +- .../public/r/styles/radix-vega/accordion.json | 2 +- .../r/styles/radix-vega/alert-dialog.json | 2 +- apps/v4/public/r/styles/radix-vega/alert.json | 2 +- .../v4/public/r/styles/radix-vega/avatar.json | 2 +- apps/v4/public/r/styles/radix-vega/badge.json | 2 +- .../r/styles/radix-vega/breadcrumb.json | 2 +- .../r/styles/radix-vega/button-group.json | 2 +- .../v4/public/r/styles/radix-vega/button.json | 2 +- .../public/r/styles/radix-vega/calendar.json | 2 +- apps/v4/public/r/styles/radix-vega/card.json | 2 +- .../public/r/styles/radix-vega/carousel.json | 2 +- apps/v4/public/r/styles/radix-vega/chart.json | 2 +- .../public/r/styles/radix-vega/checkbox.json | 2 +- .../public/r/styles/radix-vega/combobox.json | 2 +- .../public/r/styles/radix-vega/command.json | 2 +- .../r/styles/radix-vega/context-menu.json | 2 +- .../r/styles/radix-vega/dashboard-01.json | 2 +- .../v4/public/r/styles/radix-vega/dialog.json | 2 +- .../v4/public/r/styles/radix-vega/drawer.json | 2 +- .../r/styles/radix-vega/dropdown-menu.json | 2 +- apps/v4/public/r/styles/radix-vega/empty.json | 2 +- apps/v4/public/r/styles/radix-vega/field.json | 2 +- .../r/styles/radix-vega/hover-card.json | 2 +- .../r/styles/radix-vega/input-group.json | 2 +- .../public/r/styles/radix-vega/input-otp.json | 2 +- apps/v4/public/r/styles/radix-vega/input.json | 2 +- apps/v4/public/r/styles/radix-vega/item.json | 2 +- apps/v4/public/r/styles/radix-vega/kbd.json | 2 +- apps/v4/public/r/styles/radix-vega/label.json | 2 +- .../public/r/styles/radix-vega/menubar.json | 2 +- .../r/styles/radix-vega/native-select.json | 2 +- .../r/styles/radix-vega/navigation-menu.json | 2 +- .../r/styles/radix-vega/pagination.json | 2 +- .../public/r/styles/radix-vega/popover.json | 2 +- .../public/r/styles/radix-vega/progress.json | 2 +- .../r/styles/radix-vega/radio-group.json | 2 +- .../public/r/styles/radix-vega/registry.json | 590 +---- .../public/r/styles/radix-vega/resizable.json | 2 +- .../r/styles/radix-vega/scroll-area.json | 2 +- .../v4/public/r/styles/radix-vega/select.json | 2 +- apps/v4/public/r/styles/radix-vega/sheet.json | 2 +- .../r/styles/radix-vega/sidebar-16.json | 2 +- .../public/r/styles/radix-vega/sidebar.json | 2 +- .../public/r/styles/radix-vega/skeleton.json | 2 +- .../v4/public/r/styles/radix-vega/slider.json | 2 +- .../v4/public/r/styles/radix-vega/switch.json | 2 +- apps/v4/public/r/styles/radix-vega/table.json | 2 +- apps/v4/public/r/styles/radix-vega/tabs.json | 2 +- .../public/r/styles/radix-vega/textarea.json | 2 +- .../r/styles/radix-vega/toggle-group.json | 2 +- .../public/r/styles/radix-vega/tooltip.json | 2 +- apps/v4/scripts/build-registry.mts | 14 +- 513 files changed, 2092 insertions(+), 7086 deletions(-) diff --git a/apps/v4/content/docs/registry/registry-item-json.mdx b/apps/v4/content/docs/registry/registry-item-json.mdx index 888bfaa258..49cc117077 100644 --- a/apps/v4/content/docs/registry/registry-item-json.mdx +++ b/apps/v4/content/docs/registry/registry-item-json.mdx @@ -153,10 +153,7 @@ Use `@version` to specify the version of the package. ```json title="registry-item.json" showLineNumbers { - "devDependencies": [ - "tw-animate-css", - "name@1.2.0" - ] + "devDependencies": ["tw-animate-css", "name@1.2.0"] } ``` diff --git a/apps/v4/public/r/config.json b/apps/v4/public/r/config.json index 5c60b0c421..d419a6b207 100644 --- a/apps/v4/public/r/config.json +++ b/apps/v4/public/r/config.json @@ -161,4 +161,4 @@ "radius": "default" } ] -} \ No newline at end of file +} diff --git a/apps/v4/public/r/registries.json b/apps/v4/public/r/registries.json index a2f2eae219..688e12d797 100644 --- a/apps/v4/public/r/registries.json +++ b/apps/v4/public/r/registries.json @@ -797,4 +797,4 @@ "url": "https://pixelactui.com/r/{name}.json", "description": "Playful pixel art style components library built on top of shadcn. Perfect for retro style projects and games." } -] \ No newline at end of file +] diff --git a/apps/v4/public/r/styles/base-lyra/accordion.json b/apps/v4/public/r/styles/base-lyra/accordion.json index f0137d621a..d50b5d8776 100644 --- a/apps/v4/public/r/styles/base-lyra/accordion.json +++ b/apps/v4/public/r/styles/base-lyra/accordion.json @@ -4,7 +4,7 @@ "files": [ { "path": "registry/base-lyra/ui/accordion.tsx", - "content": "\"use client\"\n\nimport { Accordion as AccordionPrimitive } from \"@base-ui/react/accordion\"\n\nimport { cn } from \"@/registry/base-lyra/lib/utils\"\nimport { IconPlaceholder } from \"@/app/(create)/components/icon-placeholder\"\n\nfunction Accordion({ className, ...props }: AccordionPrimitive.Root.Props) {\n return (\n \n )\n}\n\nfunction AccordionItem({ className, ...props }: AccordionPrimitive.Item.Props) {\n return (\n \n )\n}\n\nfunction AccordionTrigger({\n className,\n children,\n ...props\n}: AccordionPrimitive.Trigger.Props) {\n return (\n \n \n {children}\n \n \n )\n}\n\nfunction AccordionContent({\n className,\n children,\n ...props\n}: AccordionPrimitive.Panel.Props) {\n return (\n \n \n {children}\n \n \n )\n}\n\nexport { Accordion, AccordionItem, AccordionTrigger, AccordionContent }\n", + "content": "\"use client\"\n\nimport { Accordion as AccordionPrimitive } from \"@base-ui/react/accordion\"\n\nimport { cn } from \"@/registry/base-lyra/lib/utils\"\nimport { IconPlaceholder } from \"@/app/(create)/components/icon-placeholder\"\n\nfunction Accordion({ className, ...props }: AccordionPrimitive.Root.Props) {\n return (\n \n )\n}\n\nfunction AccordionItem({ className, ...props }: AccordionPrimitive.Item.Props) {\n return (\n \n )\n}\n\nfunction AccordionTrigger({\n className,\n children,\n ...props\n}: AccordionPrimitive.Trigger.Props) {\n return (\n \n \n {children}\n \n \n )\n}\n\nfunction AccordionContent({\n className,\n children,\n ...props\n}: AccordionPrimitive.Panel.Props) {\n return (\n \n \n {children}\n \n \n )\n}\n\nexport { Accordion, AccordionItem, AccordionTrigger, AccordionContent }\n", "type": "registry:ui" } ], diff --git a/apps/v4/public/r/styles/base-lyra/alert-dialog.json b/apps/v4/public/r/styles/base-lyra/alert-dialog.json index 3a5f5706ac..6676d8c4a9 100644 --- a/apps/v4/public/r/styles/base-lyra/alert-dialog.json +++ b/apps/v4/public/r/styles/base-lyra/alert-dialog.json @@ -7,7 +7,7 @@ "files": [ { "path": "registry/base-lyra/ui/alert-dialog.tsx", - "content": "\"use client\"\n\nimport * as React from \"react\"\nimport { AlertDialog as AlertDialogPrimitive } from \"@base-ui/react/alert-dialog\"\n\nimport { cn } from \"@/registry/base-lyra/lib/utils\"\nimport { Button } from \"@/registry/base-lyra/ui/button\"\n\nfunction AlertDialog({ ...props }: AlertDialogPrimitive.Root.Props) {\n return \n}\n\nfunction AlertDialogTrigger({ ...props }: AlertDialogPrimitive.Trigger.Props) {\n return (\n \n )\n}\n\nfunction AlertDialogPortal({ ...props }: AlertDialogPrimitive.Portal.Props) {\n return (\n \n )\n}\n\nfunction AlertDialogOverlay({\n className,\n ...props\n}: AlertDialogPrimitive.Backdrop.Props) {\n return (\n \n )\n}\n\nfunction AlertDialogContent({\n className,\n size = \"default\",\n ...props\n}: AlertDialogPrimitive.Popup.Props & {\n size?: \"default\" | \"sm\"\n}) {\n return (\n \n \n \n \n )\n}\n\nfunction AlertDialogHeader({\n className,\n ...props\n}: React.ComponentProps<\"div\">) {\n return (\n \n )\n}\n\nfunction AlertDialogFooter({\n className,\n ...props\n}: React.ComponentProps<\"div\">) {\n return (\n \n )\n}\n\nfunction AlertDialogMedia({\n className,\n ...props\n}: React.ComponentProps<\"div\">) {\n return (\n \n )\n}\n\nfunction AlertDialogTitle({\n className,\n ...props\n}: React.ComponentProps) {\n return (\n \n )\n}\n\nfunction AlertDialogDescription({\n className,\n ...props\n}: React.ComponentProps) {\n return (\n \n )\n}\n\nfunction AlertDialogAction({\n className,\n ...props\n}: React.ComponentProps) {\n return (\n \n )\n}\n\nfunction AlertDialogCancel({\n className,\n variant = \"outline\",\n size = \"default\",\n ...props\n}: AlertDialogPrimitive.Close.Props &\n Pick, \"variant\" | \"size\">) {\n return (\n }\n {...props}\n />\n )\n}\n\nexport {\n AlertDialog,\n AlertDialogAction,\n AlertDialogCancel,\n AlertDialogContent,\n AlertDialogDescription,\n AlertDialogFooter,\n AlertDialogHeader,\n AlertDialogMedia,\n AlertDialogOverlay,\n AlertDialogPortal,\n AlertDialogTitle,\n AlertDialogTrigger,\n}\n", + "content": "\"use client\"\n\nimport * as React from \"react\"\nimport { AlertDialog as AlertDialogPrimitive } from \"@base-ui/react/alert-dialog\"\n\nimport { cn } from \"@/registry/base-lyra/lib/utils\"\nimport { Button } from \"@/registry/base-lyra/ui/button\"\n\nfunction AlertDialog({ ...props }: AlertDialogPrimitive.Root.Props) {\n return \n}\n\nfunction AlertDialogTrigger({ ...props }: AlertDialogPrimitive.Trigger.Props) {\n return (\n \n )\n}\n\nfunction AlertDialogPortal({ ...props }: AlertDialogPrimitive.Portal.Props) {\n return (\n \n )\n}\n\nfunction AlertDialogOverlay({\n className,\n ...props\n}: AlertDialogPrimitive.Backdrop.Props) {\n return (\n \n )\n}\n\nfunction AlertDialogContent({\n className,\n size = \"default\",\n ...props\n}: AlertDialogPrimitive.Popup.Props & {\n size?: \"default\" | \"sm\"\n}) {\n return (\n \n \n \n \n )\n}\n\nfunction AlertDialogHeader({\n className,\n ...props\n}: React.ComponentProps<\"div\">) {\n return (\n \n )\n}\n\nfunction AlertDialogFooter({\n className,\n ...props\n}: React.ComponentProps<\"div\">) {\n return (\n \n )\n}\n\nfunction AlertDialogMedia({\n className,\n ...props\n}: React.ComponentProps<\"div\">) {\n return (\n \n )\n}\n\nfunction AlertDialogTitle({\n className,\n ...props\n}: React.ComponentProps) {\n return (\n \n )\n}\n\nfunction AlertDialogDescription({\n className,\n ...props\n}: React.ComponentProps) {\n return (\n \n )\n}\n\nfunction AlertDialogAction({\n className,\n ...props\n}: React.ComponentProps) {\n return (\n \n )\n}\n\nfunction AlertDialogCancel({\n className,\n variant = \"outline\",\n size = \"default\",\n ...props\n}: AlertDialogPrimitive.Close.Props &\n Pick, \"variant\" | \"size\">) {\n return (\n }\n {...props}\n />\n )\n}\n\nexport {\n AlertDialog,\n AlertDialogAction,\n AlertDialogCancel,\n AlertDialogContent,\n AlertDialogDescription,\n AlertDialogFooter,\n AlertDialogHeader,\n AlertDialogMedia,\n AlertDialogOverlay,\n AlertDialogPortal,\n AlertDialogTitle,\n AlertDialogTrigger,\n}\n", "type": "registry:ui" } ], diff --git a/apps/v4/public/r/styles/base-lyra/alert.json b/apps/v4/public/r/styles/base-lyra/alert.json index 756c2bd501..42db6e7f4e 100644 --- a/apps/v4/public/r/styles/base-lyra/alert.json +++ b/apps/v4/public/r/styles/base-lyra/alert.json @@ -4,7 +4,7 @@ "files": [ { "path": "registry/base-lyra/ui/alert.tsx", - "content": "import * as React from \"react\"\nimport { cva, type VariantProps } from \"class-variance-authority\"\n\nimport { cn } from \"@/registry/base-lyra/lib/utils\"\n\nconst alertVariants = cva(\"grid gap-0.5 rounded-none border px-2.5 py-2 text-left text-xs has-data-[slot=alert-action]:relative has-data-[slot=alert-action]:pr-18 has-[>svg]:grid-cols-[auto_1fr] has-[>svg]:gap-x-2 *:[svg]:row-span-2 *:[svg]:translate-y-0 *:[svg]:text-current *:[svg:not([class*='size-'])]:size-4 w-full relative group/alert\", {\n variants: {\n variant: {\n default: \"bg-card text-card-foreground\",\n destructive: \"text-destructive bg-card *:data-[slot=alert-description]:text-destructive/90 *:[svg]:text-current\",\n },\n },\n defaultVariants: {\n variant: \"default\",\n },\n})\n\nfunction Alert({\n className,\n variant,\n ...props\n}: React.ComponentProps<\"div\"> & VariantProps) {\n return (\n \n )\n}\n\nfunction AlertTitle({ className, ...props }: React.ComponentProps<\"div\">) {\n return (\n svg]/alert:col-start-2 [&_a]:hover:text-foreground [&_a]:underline [&_a]:underline-offset-3\",\n className\n )}\n {...props}\n />\n )\n}\n\nfunction AlertDescription({\n className,\n ...props\n}: React.ComponentProps<\"div\">) {\n return (\n \n )\n}\n\nfunction AlertAction({ className, ...props }: React.ComponentProps<\"div\">) {\n return (\n \n )\n}\n\nexport { Alert, AlertTitle, AlertDescription, AlertAction }\n", + "content": "import * as React from \"react\"\nimport { cva, type VariantProps } from \"class-variance-authority\"\n\nimport { cn } from \"@/registry/base-lyra/lib/utils\"\n\nconst alertVariants = cva(\n \"grid gap-0.5 rounded-none border px-2.5 py-2 text-left text-xs has-data-[slot=alert-action]:relative has-data-[slot=alert-action]:pr-18 has-[>svg]:grid-cols-[auto_1fr] has-[>svg]:gap-x-2 *:[svg]:row-span-2 *:[svg]:translate-y-0 *:[svg]:text-current *:[svg:not([class*='size-'])]:size-4 w-full relative group/alert\",\n {\n variants: {\n variant: {\n default: \"bg-card text-card-foreground\",\n destructive:\n \"text-destructive bg-card *:data-[slot=alert-description]:text-destructive/90 *:[svg]:text-current\",\n },\n },\n defaultVariants: {\n variant: \"default\",\n },\n }\n)\n\nfunction Alert({\n className,\n variant,\n ...props\n}: React.ComponentProps<\"div\"> & VariantProps) {\n return (\n \n )\n}\n\nfunction AlertTitle({ className, ...props }: React.ComponentProps<\"div\">) {\n return (\n svg]/alert:col-start-2 [&_a]:underline [&_a]:underline-offset-3\",\n className\n )}\n {...props}\n />\n )\n}\n\nfunction AlertDescription({\n className,\n ...props\n}: React.ComponentProps<\"div\">) {\n return (\n \n )\n}\n\nfunction AlertAction({ className, ...props }: React.ComponentProps<\"div\">) {\n return (\n \n )\n}\n\nexport { Alert, AlertTitle, AlertDescription, AlertAction }\n", "type": "registry:ui" } ], diff --git a/apps/v4/public/r/styles/base-lyra/avatar.json b/apps/v4/public/r/styles/base-lyra/avatar.json index 871f9ea6ba..6826990c85 100644 --- a/apps/v4/public/r/styles/base-lyra/avatar.json +++ b/apps/v4/public/r/styles/base-lyra/avatar.json @@ -4,7 +4,7 @@ "files": [ { "path": "registry/base-lyra/ui/avatar.tsx", - "content": "\"use client\"\n\nimport * as React from \"react\"\nimport { Avatar as AvatarPrimitive } from \"@base-ui/react/avatar\"\n\nimport { cn } from \"@/registry/base-lyra/lib/utils\"\n\nfunction Avatar({\n className,\n size = \"default\",\n ...props\n}: AvatarPrimitive.Root.Props & {\n size?: \"default\" | \"sm\" | \"lg\"\n}) {\n return (\n \n )\n}\n\nfunction AvatarImage({ className, ...props }: AvatarPrimitive.Image.Props) {\n return (\n \n )\n}\n\nfunction AvatarFallback({\n className,\n ...props\n}: AvatarPrimitive.Fallback.Props) {\n return (\n \n )\n}\n\nfunction AvatarBadge({ className, ...props }: React.ComponentProps<\"span\">) {\n return (\n svg]:hidden\",\n \"group-data-[size=default]/avatar:size-2.5 group-data-[size=default]/avatar:[&>svg]:size-2\",\n \"group-data-[size=lg]/avatar:size-3 group-data-[size=lg]/avatar:[&>svg]:size-2\",\n className\n )}\n {...props}\n />\n )\n}\n\nfunction AvatarGroup({ className, ...props }: React.ComponentProps<\"div\">) {\n return (\n \n )\n}\n\nfunction AvatarGroupCount({\n className,\n ...props\n}: React.ComponentProps<\"div\">) {\n return (\n svg]:size-4 group-has-data-[size=lg]/avatar-group:[&>svg]:size-5 group-has-data-[size=sm]/avatar-group:[&>svg]:size-3 ring-background relative flex shrink-0 items-center justify-center ring-2\", className)}\n {...props}\n />\n )\n}\n\nexport {\n Avatar,\n AvatarImage,\n AvatarFallback,\n AvatarGroup,\n AvatarGroupCount,\n AvatarBadge,\n}\n", + "content": "\"use client\"\n\nimport * as React from \"react\"\nimport { Avatar as AvatarPrimitive } from \"@base-ui/react/avatar\"\n\nimport { cn } from \"@/registry/base-lyra/lib/utils\"\n\nfunction Avatar({\n className,\n size = \"default\",\n ...props\n}: AvatarPrimitive.Root.Props & {\n size?: \"default\" | \"sm\" | \"lg\"\n}) {\n return (\n \n )\n}\n\nfunction AvatarImage({ className, ...props }: AvatarPrimitive.Image.Props) {\n return (\n \n )\n}\n\nfunction AvatarFallback({\n className,\n ...props\n}: AvatarPrimitive.Fallback.Props) {\n return (\n \n )\n}\n\nfunction AvatarBadge({ className, ...props }: React.ComponentProps<\"span\">) {\n return (\n svg]:hidden\",\n \"group-data-[size=default]/avatar:size-2.5 group-data-[size=default]/avatar:[&>svg]:size-2\",\n \"group-data-[size=lg]/avatar:size-3 group-data-[size=lg]/avatar:[&>svg]:size-2\",\n className\n )}\n {...props}\n />\n )\n}\n\nfunction AvatarGroup({ className, ...props }: React.ComponentProps<\"div\">) {\n return (\n \n )\n}\n\nfunction AvatarGroupCount({\n className,\n ...props\n}: React.ComponentProps<\"div\">) {\n return (\n svg]:size-4 group-has-data-[size=lg]/avatar-group:[&>svg]:size-5 group-has-data-[size=sm]/avatar-group:[&>svg]:size-3\",\n className\n )}\n {...props}\n />\n )\n}\n\nexport {\n Avatar,\n AvatarImage,\n AvatarFallback,\n AvatarGroup,\n AvatarGroupCount,\n AvatarBadge,\n}\n", "type": "registry:ui" } ], diff --git a/apps/v4/public/r/styles/base-lyra/badge.json b/apps/v4/public/r/styles/base-lyra/badge.json index 3eab4c6a00..caa40e6e2b 100644 --- a/apps/v4/public/r/styles/base-lyra/badge.json +++ b/apps/v4/public/r/styles/base-lyra/badge.json @@ -4,7 +4,7 @@ "files": [ { "path": "registry/base-lyra/ui/badge.tsx", - "content": "import { mergeProps } from \"@base-ui/react/merge-props\"\nimport { useRender } from \"@base-ui/react/use-render\"\nimport { cva, type VariantProps } from \"class-variance-authority\"\n\nimport { cn } from \"@/registry/base-lyra/lib/utils\"\n\nconst badgeVariants = cva(\n \"h-5 gap-1 rounded-none border border-transparent px-2 py-0.5 text-xs font-medium transition-all has-data-[icon=inline-end]:pr-1.5 has-data-[icon=inline-start]:pl-1.5 [&>svg]:size-3! inline-flex items-center justify-center w-fit whitespace-nowrap shrink-0 [&>svg]:pointer-events-none focus-visible:border-ring focus-visible:ring-ring/50 focus-visible:ring-[3px] aria-invalid:ring-destructive/20 dark:aria-invalid:ring-destructive/40 aria-invalid:border-destructive overflow-hidden group/badge\",\n {\n variants: {\n variant: {\n default: \"bg-primary text-primary-foreground [a]:hover:bg-primary/80\",\n secondary: \"bg-secondary text-secondary-foreground [a]:hover:bg-secondary/80\",\n destructive: \"bg-destructive/10 [a]:hover:bg-destructive/20 focus-visible:ring-destructive/20 dark:focus-visible:ring-destructive/40 text-destructive dark:bg-destructive/20\",\n outline: \"border-border text-foreground [a]:hover:bg-muted [a]:hover:text-muted-foreground\",\n ghost: \"hover:bg-muted hover:text-muted-foreground dark:hover:bg-muted/50\",\n link: \"text-primary underline-offset-4 hover:underline\",\n },\n },\n defaultVariants: {\n variant: \"default\",\n },\n }\n)\n\nfunction Badge({\n className,\n variant = \"default\",\n render,\n ...props\n}: useRender.ComponentProps<\"span\"> & VariantProps) {\n return useRender({\n defaultTagName: \"span\",\n props: mergeProps<\"span\">(\n {\n className: cn(badgeVariants({ variant }), className),\n },\n props\n ),\n render,\n state: {\n slot: \"badge\",\n variant,\n },\n })\n}\n\nexport { Badge, badgeVariants }\n", + "content": "import { mergeProps } from \"@base-ui/react/merge-props\"\nimport { useRender } from \"@base-ui/react/use-render\"\nimport { cva, type VariantProps } from \"class-variance-authority\"\n\nimport { cn } from \"@/registry/base-lyra/lib/utils\"\n\nconst badgeVariants = cva(\n \"h-5 gap-1 rounded-none border border-transparent px-2 py-0.5 text-xs font-medium transition-all has-data-[icon=inline-end]:pr-1.5 has-data-[icon=inline-start]:pl-1.5 [&>svg]:size-3! inline-flex items-center justify-center w-fit whitespace-nowrap shrink-0 [&>svg]:pointer-events-none focus-visible:border-ring focus-visible:ring-ring/50 focus-visible:ring-[3px] aria-invalid:ring-destructive/20 dark:aria-invalid:ring-destructive/40 aria-invalid:border-destructive overflow-hidden group/badge\",\n {\n variants: {\n variant: {\n default: \"bg-primary text-primary-foreground [a]:hover:bg-primary/80\",\n secondary:\n \"bg-secondary text-secondary-foreground [a]:hover:bg-secondary/80\",\n destructive:\n \"bg-destructive/10 [a]:hover:bg-destructive/20 focus-visible:ring-destructive/20 dark:focus-visible:ring-destructive/40 text-destructive dark:bg-destructive/20\",\n outline:\n \"border-border text-foreground [a]:hover:bg-muted [a]:hover:text-muted-foreground\",\n ghost:\n \"hover:bg-muted hover:text-muted-foreground dark:hover:bg-muted/50\",\n link: \"text-primary underline-offset-4 hover:underline\",\n },\n },\n defaultVariants: {\n variant: \"default\",\n },\n }\n)\n\nfunction Badge({\n className,\n variant = \"default\",\n render,\n ...props\n}: useRender.ComponentProps<\"span\"> & VariantProps) {\n return useRender({\n defaultTagName: \"span\",\n props: mergeProps<\"span\">(\n {\n className: cn(badgeVariants({ variant }), className),\n },\n props\n ),\n render,\n state: {\n slot: \"badge\",\n variant,\n },\n })\n}\n\nexport { Badge, badgeVariants }\n", "type": "registry:ui" } ], diff --git a/apps/v4/public/r/styles/base-lyra/breadcrumb.json b/apps/v4/public/r/styles/base-lyra/breadcrumb.json index d50b0c2dd0..c2e640f915 100644 --- a/apps/v4/public/r/styles/base-lyra/breadcrumb.json +++ b/apps/v4/public/r/styles/base-lyra/breadcrumb.json @@ -4,7 +4,7 @@ "files": [ { "path": "registry/base-lyra/ui/breadcrumb.tsx", - "content": "import * as React from \"react\"\nimport { mergeProps } from \"@base-ui/react/merge-props\"\nimport { useRender } from \"@base-ui/react/use-render\"\n\nimport { cn } from \"@/registry/base-lyra/lib/utils\"\nimport { IconPlaceholder } from \"@/app/(create)/components/icon-placeholder\"\n\nfunction Breadcrumb({ className, ...props }: React.ComponentProps<\"nav\">) {\n return (\n \n )\n}\n\nfunction BreadcrumbList({ className, ...props }: React.ComponentProps<\"ol\">) {\n return (\n \n )\n}\n\nfunction BreadcrumbItem({ className, ...props }: React.ComponentProps<\"li\">) {\n return (\n \n )\n}\n\nfunction BreadcrumbLink({\n className,\n render,\n ...props\n}: useRender.ComponentProps<\"a\">) {\n return useRender({\n defaultTagName: \"a\",\n props: mergeProps<\"a\">(\n {\n className: cn(\"hover:text-foreground transition-colors\", className),\n },\n props\n ),\n render,\n state: {\n slot: \"breadcrumb-link\",\n },\n })\n}\n\nfunction BreadcrumbPage({ className, ...props }: React.ComponentProps<\"span\">) {\n return (\n \n )\n}\n\nfunction BreadcrumbSeparator({\n children,\n className,\n ...props\n}: React.ComponentProps<\"li\">) {\n return (\n svg]:size-3.5\", className)}\n {...props}\n >\n {children ?? (\n \n )}\n \n )\n}\n\nfunction BreadcrumbEllipsis({\n className,\n ...props\n}: React.ComponentProps<\"span\">) {\n return (\n svg]:size-4 flex items-center justify-center\",\n className\n )}\n {...props}\n >\n \n More\n \n )\n}\n\nexport {\n Breadcrumb,\n BreadcrumbList,\n BreadcrumbItem,\n BreadcrumbLink,\n BreadcrumbPage,\n BreadcrumbSeparator,\n BreadcrumbEllipsis,\n}\n", + "content": "import * as React from \"react\"\nimport { mergeProps } from \"@base-ui/react/merge-props\"\nimport { useRender } from \"@base-ui/react/use-render\"\n\nimport { cn } from \"@/registry/base-lyra/lib/utils\"\nimport { IconPlaceholder } from \"@/app/(create)/components/icon-placeholder\"\n\nfunction Breadcrumb({ className, ...props }: React.ComponentProps<\"nav\">) {\n return (\n \n )\n}\n\nfunction BreadcrumbList({ className, ...props }: React.ComponentProps<\"ol\">) {\n return (\n \n )\n}\n\nfunction BreadcrumbItem({ className, ...props }: React.ComponentProps<\"li\">) {\n return (\n \n )\n}\n\nfunction BreadcrumbLink({\n className,\n render,\n ...props\n}: useRender.ComponentProps<\"a\">) {\n return useRender({\n defaultTagName: \"a\",\n props: mergeProps<\"a\">(\n {\n className: cn(\"hover:text-foreground transition-colors\", className),\n },\n props\n ),\n render,\n state: {\n slot: \"breadcrumb-link\",\n },\n })\n}\n\nfunction BreadcrumbPage({ className, ...props }: React.ComponentProps<\"span\">) {\n return (\n \n )\n}\n\nfunction BreadcrumbSeparator({\n children,\n className,\n ...props\n}: React.ComponentProps<\"li\">) {\n return (\n svg]:size-3.5\", className)}\n {...props}\n >\n {children ?? (\n \n )}\n \n )\n}\n\nfunction BreadcrumbEllipsis({\n className,\n ...props\n}: React.ComponentProps<\"span\">) {\n return (\n svg]:size-4\",\n className\n )}\n {...props}\n >\n \n More\n \n )\n}\n\nexport {\n Breadcrumb,\n BreadcrumbList,\n BreadcrumbItem,\n BreadcrumbLink,\n BreadcrumbPage,\n BreadcrumbSeparator,\n BreadcrumbEllipsis,\n}\n", "type": "registry:ui" } ], diff --git a/apps/v4/public/r/styles/base-lyra/button.json b/apps/v4/public/r/styles/base-lyra/button.json index 400acc6784..c33439126b 100644 --- a/apps/v4/public/r/styles/base-lyra/button.json +++ b/apps/v4/public/r/styles/base-lyra/button.json @@ -4,7 +4,7 @@ "files": [ { "path": "registry/base-lyra/ui/button.tsx", - "content": "\"use client\"\n\nimport { Button as ButtonPrimitive } from \"@base-ui/react/button\"\nimport { cva, type VariantProps } from \"class-variance-authority\"\n\nimport { cn } from \"@/registry/base-lyra/lib/utils\"\n\nconst buttonVariants = cva(\n \"focus-visible:border-ring focus-visible:ring-ring/50 aria-invalid:ring-destructive/20 dark:aria-invalid:ring-destructive/40 aria-invalid:border-destructive dark:aria-invalid:border-destructive/50 rounded-none border border-transparent bg-clip-padding text-xs font-medium focus-visible:ring-1 aria-invalid:ring-1 [&_svg:not([class*='size-'])]:size-4 inline-flex items-center justify-center whitespace-nowrap transition-all disabled:pointer-events-none disabled:opacity-50 [&_svg]:pointer-events-none shrink-0 [&_svg]:shrink-0 outline-none group/button select-none\",\n {\n variants: {\n variant: {\n default: \"bg-primary text-primary-foreground [a]:hover:bg-primary/80\",\n outline: \"border-border bg-background hover:bg-muted hover:text-foreground dark:bg-input/30 dark:border-input dark:hover:bg-input/50 aria-expanded:bg-muted aria-expanded:text-foreground\",\n secondary: \"bg-secondary text-secondary-foreground hover:bg-secondary/80 aria-expanded:bg-secondary aria-expanded:text-secondary-foreground\",\n ghost: \"hover:bg-muted hover:text-foreground dark:hover:bg-muted/50 aria-expanded:bg-muted aria-expanded:text-foreground\",\n destructive: \"bg-destructive/10 hover:bg-destructive/20 focus-visible:ring-destructive/20 dark:focus-visible:ring-destructive/40 dark:bg-destructive/20 text-destructive focus-visible:border-destructive/40 dark:hover:bg-destructive/30\",\n link: \"text-primary underline-offset-4 hover:underline\",\n },\n size: {\n default: \"h-8 gap-1.5 px-2.5 has-data-[icon=inline-end]:pr-2 has-data-[icon=inline-start]:pl-2\",\n xs: \"h-6 gap-1 rounded-none px-2 text-xs has-data-[icon=inline-end]:pr-1.5 has-data-[icon=inline-start]:pl-1.5 [&_svg:not([class*='size-'])]:size-3\",\n sm: \"h-7 gap-1 rounded-none px-2.5 has-data-[icon=inline-end]:pr-1.5 has-data-[icon=inline-start]:pl-1.5 [&_svg:not([class*='size-'])]:size-3.5\",\n lg: \"h-9 gap-1.5 px-2.5 has-data-[icon=inline-end]:pr-3 has-data-[icon=inline-start]:pl-3\",\n icon: \"size-8\",\n \"icon-xs\": \"size-6 rounded-none [&_svg:not([class*='size-'])]:size-3\",\n \"icon-sm\": \"size-7 rounded-none\",\n \"icon-lg\": \"size-9\",\n },\n },\n defaultVariants: {\n variant: \"default\",\n size: \"default\",\n },\n }\n)\n\nfunction Button({\n className,\n variant = \"default\",\n size = \"default\",\n ...props\n}: ButtonPrimitive.Props & VariantProps) {\n return (\n \n )\n}\n\nexport { Button, buttonVariants }\n", + "content": "\"use client\"\n\nimport { Button as ButtonPrimitive } from \"@base-ui/react/button\"\nimport { cva, type VariantProps } from \"class-variance-authority\"\n\nimport { cn } from \"@/registry/base-lyra/lib/utils\"\n\nconst buttonVariants = cva(\n \"focus-visible:border-ring focus-visible:ring-ring/50 aria-invalid:ring-destructive/20 dark:aria-invalid:ring-destructive/40 aria-invalid:border-destructive dark:aria-invalid:border-destructive/50 rounded-none border border-transparent bg-clip-padding text-xs font-medium focus-visible:ring-1 aria-invalid:ring-1 [&_svg:not([class*='size-'])]:size-4 inline-flex items-center justify-center whitespace-nowrap transition-all disabled:pointer-events-none disabled:opacity-50 [&_svg]:pointer-events-none shrink-0 [&_svg]:shrink-0 outline-none group/button select-none\",\n {\n variants: {\n variant: {\n default: \"bg-primary text-primary-foreground [a]:hover:bg-primary/80\",\n outline:\n \"border-border bg-background hover:bg-muted hover:text-foreground dark:bg-input/30 dark:border-input dark:hover:bg-input/50 aria-expanded:bg-muted aria-expanded:text-foreground\",\n secondary:\n \"bg-secondary text-secondary-foreground hover:bg-secondary/80 aria-expanded:bg-secondary aria-expanded:text-secondary-foreground\",\n ghost:\n \"hover:bg-muted hover:text-foreground dark:hover:bg-muted/50 aria-expanded:bg-muted aria-expanded:text-foreground\",\n destructive:\n \"bg-destructive/10 hover:bg-destructive/20 focus-visible:ring-destructive/20 dark:focus-visible:ring-destructive/40 dark:bg-destructive/20 text-destructive focus-visible:border-destructive/40 dark:hover:bg-destructive/30\",\n link: \"text-primary underline-offset-4 hover:underline\",\n },\n size: {\n default:\n \"h-8 gap-1.5 px-2.5 has-data-[icon=inline-end]:pr-2 has-data-[icon=inline-start]:pl-2\",\n xs: \"h-6 gap-1 rounded-none px-2 text-xs has-data-[icon=inline-end]:pr-1.5 has-data-[icon=inline-start]:pl-1.5 [&_svg:not([class*='size-'])]:size-3\",\n sm: \"h-7 gap-1 rounded-none px-2.5 has-data-[icon=inline-end]:pr-1.5 has-data-[icon=inline-start]:pl-1.5 [&_svg:not([class*='size-'])]:size-3.5\",\n lg: \"h-9 gap-1.5 px-2.5 has-data-[icon=inline-end]:pr-3 has-data-[icon=inline-start]:pl-3\",\n icon: \"size-8\",\n \"icon-xs\": \"size-6 rounded-none [&_svg:not([class*='size-'])]:size-3\",\n \"icon-sm\": \"size-7 rounded-none\",\n \"icon-lg\": \"size-9\",\n },\n },\n defaultVariants: {\n variant: \"default\",\n size: \"default\",\n },\n }\n)\n\nfunction Button({\n className,\n variant = \"default\",\n size = \"default\",\n ...props\n}: ButtonPrimitive.Props & VariantProps) {\n return (\n \n )\n}\n\nexport { Button, buttonVariants }\n", "type": "registry:ui" } ], diff --git a/apps/v4/public/r/styles/base-lyra/calendar.json b/apps/v4/public/r/styles/base-lyra/calendar.json index 0768422a5b..0088f75290 100644 --- a/apps/v4/public/r/styles/base-lyra/calendar.json +++ b/apps/v4/public/r/styles/base-lyra/calendar.json @@ -11,7 +11,7 @@ "files": [ { "path": "registry/base-lyra/ui/calendar.tsx", - "content": "\"use client\"\n\nimport * as React from \"react\"\nimport {\n DayPicker,\n getDefaultClassNames,\n type DayButton,\n type Locale,\n} from \"react-day-picker\"\n\nimport { cn } from \"@/registry/base-lyra/lib/utils\"\nimport { Button, buttonVariants } from \"@/registry/base-lyra/ui/button\"\nimport { IconPlaceholder } from \"@/app/(create)/components/icon-placeholder\"\n\nfunction Calendar({\n className,\n classNames,\n showOutsideDays = true,\n captionLayout = \"label\",\n buttonVariant = \"ghost\",\n locale,\n formatters,\n components,\n ...props\n}: React.ComponentProps & {\n buttonVariant?: React.ComponentProps[\"variant\"]\n}) {\n const defaultClassNames = getDefaultClassNames()\n\n return (\n svg]:rotate-180`,\n String.raw`rtl:**:[.rdp-button\\_previous>svg]:rotate-180`,\n className\n )}\n captionLayout={captionLayout}\n locale={locale}\n formatters={{\n formatMonthDropdown: (date) =>\n date.toLocaleString(locale?.code, { month: \"short\" }),\n ...formatters,\n }}\n classNames={{\n root: cn(\"w-fit\", defaultClassNames.root),\n months: cn(\n \"flex gap-4 flex-col md:flex-row relative\",\n defaultClassNames.months\n ),\n month: cn(\"flex flex-col w-full gap-4\", defaultClassNames.month),\n nav: cn(\n \"flex items-center gap-1 w-full absolute top-0 inset-x-0 justify-between\",\n defaultClassNames.nav\n ),\n button_previous: cn(\n buttonVariants({ variant: buttonVariant }),\n \"size-(--cell-size) aria-disabled:opacity-50 p-0 select-none\",\n defaultClassNames.button_previous\n ),\n button_next: cn(\n buttonVariants({ variant: buttonVariant }),\n \"size-(--cell-size) aria-disabled:opacity-50 p-0 select-none\",\n defaultClassNames.button_next\n ),\n month_caption: cn(\n \"flex items-center justify-center h-(--cell-size) w-full px-(--cell-size)\",\n defaultClassNames.month_caption\n ),\n dropdowns: cn(\n \"w-full flex items-center text-sm font-medium justify-center h-(--cell-size) gap-1.5\",\n defaultClassNames.dropdowns\n ),\n dropdown_root: cn(\n \"relative cn-calendar-dropdown-root rounded-(--cell-radius)\",\n defaultClassNames.dropdown_root\n ),\n dropdown: cn(\n \"absolute bg-popover inset-0 opacity-0\",\n defaultClassNames.dropdown\n ),\n caption_label: cn(\n \"select-none font-medium\",\n captionLayout === \"label\"\n ? \"text-sm\"\n : \"cn-calendar-caption-label rounded-(--cell-radius) flex items-center gap-1 text-sm [&>svg]:text-muted-foreground [&>svg]:size-3.5\",\n defaultClassNames.caption_label\n ),\n table: \"w-full border-collapse\",\n weekdays: cn(\"flex\", defaultClassNames.weekdays),\n weekday: cn(\n \"text-muted-foreground rounded-(--cell-radius) flex-1 font-normal text-[0.8rem] select-none\",\n defaultClassNames.weekday\n ),\n week: cn(\"flex w-full mt-2\", defaultClassNames.week),\n week_number_header: cn(\n \"select-none w-(--cell-size)\",\n defaultClassNames.week_number_header\n ),\n week_number: cn(\n \"text-[0.8rem] select-none text-muted-foreground\",\n defaultClassNames.week_number\n ),\n day: cn(\n \"relative w-full rounded-(--cell-radius) h-full p-0 text-center [&:last-child[data-selected=true]_button]:rounded-r-(--cell-radius) group/day aspect-square select-none\",\n props.showWeekNumber\n ? \"[&:nth-child(2)[data-selected=true]_button]:rounded-l-(--cell-radius)\"\n : \"[&:first-child[data-selected=true]_button]:rounded-l-(--cell-radius)\",\n defaultClassNames.day\n ),\n range_start: cn(\n \"rounded-l-(--cell-radius) bg-muted relative after:bg-muted after:absolute after:inset-y-0 after:w-4 after:right-0 z-0 isolate\",\n defaultClassNames.range_start\n ),\n range_middle: cn(\"rounded-none\", defaultClassNames.range_middle),\n range_end: cn(\n \"rounded-r-(--cell-radius) bg-muted relative after:bg-muted after:absolute after:inset-y-0 after:w-4 after:left-0 z-0 isolate\",\n defaultClassNames.range_end\n ),\n today: cn(\n \"bg-muted text-foreground rounded-(--cell-radius) data-[selected=true]:rounded-none\",\n defaultClassNames.today\n ),\n outside: cn(\n \"text-muted-foreground aria-selected:text-muted-foreground\",\n defaultClassNames.outside\n ),\n disabled: cn(\n \"text-muted-foreground opacity-50\",\n defaultClassNames.disabled\n ),\n hidden: cn(\"invisible\", defaultClassNames.hidden),\n ...classNames,\n }}\n components={{\n Root: ({ className, rootRef, ...props }) => {\n return (\n \n )\n },\n Chevron: ({ className, orientation, ...props }) => {\n if (orientation === \"left\") {\n return (\n \n )\n }\n\n if (orientation === \"right\") {\n return (\n \n )\n }\n\n return (\n \n )\n },\n DayButton: ({ ...props }) => (\n \n ),\n WeekNumber: ({ children, ...props }) => {\n return (\n \n
\n {children}\n
\n \n )\n },\n ...components,\n }}\n {...props}\n />\n )\n}\n\nfunction CalendarDayButton({\n className,\n day,\n modifiers,\n locale,\n ...props\n}: React.ComponentProps & { locale?: Partial }) {\n const defaultClassNames = getDefaultClassNames()\n\n const ref = React.useRef(null)\n React.useEffect(() => {\n if (modifiers.focused) ref.current?.focus()\n }, [modifiers.focused])\n\n return (\n span]:text-xs [&>span]:opacity-70\",\n defaultClassNames.day,\n className\n )}\n {...props}\n />\n )\n}\n\nexport { Calendar, CalendarDayButton }\n", + "content": "\"use client\"\n\nimport * as React from \"react\"\nimport {\n DayPicker,\n getDefaultClassNames,\n type DayButton,\n type Locale,\n} from \"react-day-picker\"\n\nimport { cn } from \"@/registry/base-lyra/lib/utils\"\nimport { Button, buttonVariants } from \"@/registry/base-lyra/ui/button\"\nimport { IconPlaceholder } from \"@/app/(create)/components/icon-placeholder\"\n\nfunction Calendar({\n className,\n classNames,\n showOutsideDays = true,\n captionLayout = \"label\",\n buttonVariant = \"ghost\",\n locale,\n formatters,\n components,\n ...props\n}: React.ComponentProps & {\n buttonVariant?: React.ComponentProps[\"variant\"]\n}) {\n const defaultClassNames = getDefaultClassNames()\n\n return (\n svg]:rotate-180`,\n String.raw`rtl:**:[.rdp-button\\_previous>svg]:rotate-180`,\n className\n )}\n captionLayout={captionLayout}\n locale={locale}\n formatters={{\n formatMonthDropdown: (date) =>\n date.toLocaleString(locale?.code, { month: \"short\" }),\n ...formatters,\n }}\n classNames={{\n root: cn(\"w-fit\", defaultClassNames.root),\n months: cn(\n \"flex gap-4 flex-col md:flex-row relative\",\n defaultClassNames.months\n ),\n month: cn(\"flex flex-col w-full gap-4\", defaultClassNames.month),\n nav: cn(\n \"flex items-center gap-1 w-full absolute top-0 inset-x-0 justify-between\",\n defaultClassNames.nav\n ),\n button_previous: cn(\n buttonVariants({ variant: buttonVariant }),\n \"size-(--cell-size) aria-disabled:opacity-50 p-0 select-none\",\n defaultClassNames.button_previous\n ),\n button_next: cn(\n buttonVariants({ variant: buttonVariant }),\n \"size-(--cell-size) aria-disabled:opacity-50 p-0 select-none\",\n defaultClassNames.button_next\n ),\n month_caption: cn(\n \"flex items-center justify-center h-(--cell-size) w-full px-(--cell-size)\",\n defaultClassNames.month_caption\n ),\n dropdowns: cn(\n \"w-full flex items-center text-sm font-medium justify-center h-(--cell-size) gap-1.5\",\n defaultClassNames.dropdowns\n ),\n dropdown_root: cn(\n \"relative cn-calendar-dropdown-root rounded-(--cell-radius)\",\n defaultClassNames.dropdown_root\n ),\n dropdown: cn(\n \"absolute bg-popover inset-0 opacity-0\",\n defaultClassNames.dropdown\n ),\n caption_label: cn(\n \"select-none font-medium\",\n captionLayout === \"label\"\n ? \"text-sm\"\n : \"cn-calendar-caption-label rounded-(--cell-radius) flex items-center gap-1 text-sm [&>svg]:text-muted-foreground [&>svg]:size-3.5\",\n defaultClassNames.caption_label\n ),\n table: \"w-full border-collapse\",\n weekdays: cn(\"flex\", defaultClassNames.weekdays),\n weekday: cn(\n \"text-muted-foreground rounded-(--cell-radius) flex-1 font-normal text-[0.8rem] select-none\",\n defaultClassNames.weekday\n ),\n week: cn(\"flex w-full mt-2\", defaultClassNames.week),\n week_number_header: cn(\n \"select-none w-(--cell-size)\",\n defaultClassNames.week_number_header\n ),\n week_number: cn(\n \"text-[0.8rem] select-none text-muted-foreground\",\n defaultClassNames.week_number\n ),\n day: cn(\n \"relative w-full rounded-(--cell-radius) h-full p-0 text-center [&:last-child[data-selected=true]_button]:rounded-r-(--cell-radius) group/day aspect-square select-none\",\n props.showWeekNumber\n ? \"[&:nth-child(2)[data-selected=true]_button]:rounded-l-(--cell-radius)\"\n : \"[&:first-child[data-selected=true]_button]:rounded-l-(--cell-radius)\",\n defaultClassNames.day\n ),\n range_start: cn(\n \"rounded-l-(--cell-radius) bg-muted relative after:bg-muted after:absolute after:inset-y-0 after:w-4 after:right-0 z-0 isolate\",\n defaultClassNames.range_start\n ),\n range_middle: cn(\"rounded-none\", defaultClassNames.range_middle),\n range_end: cn(\n \"rounded-r-(--cell-radius) bg-muted relative after:bg-muted after:absolute after:inset-y-0 after:w-4 after:left-0 z-0 isolate\",\n defaultClassNames.range_end\n ),\n today: cn(\n \"bg-muted text-foreground rounded-(--cell-radius) data-[selected=true]:rounded-none\",\n defaultClassNames.today\n ),\n outside: cn(\n \"text-muted-foreground aria-selected:text-muted-foreground\",\n defaultClassNames.outside\n ),\n disabled: cn(\n \"text-muted-foreground opacity-50\",\n defaultClassNames.disabled\n ),\n hidden: cn(\"invisible\", defaultClassNames.hidden),\n ...classNames,\n }}\n components={{\n Root: ({ className, rootRef, ...props }) => {\n return (\n \n )\n },\n Chevron: ({ className, orientation, ...props }) => {\n if (orientation === \"left\") {\n return (\n \n )\n }\n\n if (orientation === \"right\") {\n return (\n \n )\n }\n\n return (\n \n )\n },\n DayButton: ({ ...props }) => (\n \n ),\n WeekNumber: ({ children, ...props }) => {\n return (\n \n
\n {children}\n
\n \n )\n },\n ...components,\n }}\n {...props}\n />\n )\n}\n\nfunction CalendarDayButton({\n className,\n day,\n modifiers,\n locale,\n ...props\n}: React.ComponentProps & { locale?: Partial }) {\n const defaultClassNames = getDefaultClassNames()\n\n const ref = React.useRef(null)\n React.useEffect(() => {\n if (modifiers.focused) ref.current?.focus()\n }, [modifiers.focused])\n\n return (\n span]:text-xs [&>span]:opacity-70\",\n defaultClassNames.day,\n className\n )}\n {...props}\n />\n )\n}\n\nexport { Calendar, CalendarDayButton }\n", "type": "registry:ui" } ], diff --git a/apps/v4/public/r/styles/base-lyra/card.json b/apps/v4/public/r/styles/base-lyra/card.json index 75bc7325c5..186a5f446e 100644 --- a/apps/v4/public/r/styles/base-lyra/card.json +++ b/apps/v4/public/r/styles/base-lyra/card.json @@ -4,7 +4,7 @@ "files": [ { "path": "registry/base-lyra/ui/card.tsx", - "content": "import * as React from \"react\"\n\nimport { cn } from \"@/registry/base-lyra/lib/utils\"\n\nfunction Card({\n className,\n size = \"default\",\n ...props\n}: React.ComponentProps<\"div\"> & { size?: \"default\" | \"sm\" }) {\n return (\n img:first-child]:pt-0 data-[size=sm]:gap-2 data-[size=sm]:py-3 data-[size=sm]:has-data-[slot=card-footer]:pb-0 *:[img:first-child]:rounded-none *:[img:last-child]:rounded-none group/card flex flex-col\", className)}\n {...props}\n />\n )\n}\n\nfunction CardHeader({ className, ...props }: React.ComponentProps<\"div\">) {\n return (\n \n )\n}\n\nfunction CardTitle({ className, ...props }: React.ComponentProps<\"div\">) {\n return (\n \n )\n}\n\nfunction CardDescription({ className, ...props }: React.ComponentProps<\"div\">) {\n return (\n \n )\n}\n\nfunction CardAction({ className, ...props }: React.ComponentProps<\"div\">) {\n return (\n \n )\n}\n\nfunction CardContent({ className, ...props }: React.ComponentProps<\"div\">) {\n return (\n \n )\n}\n\nfunction CardFooter({ className, ...props }: React.ComponentProps<\"div\">) {\n return (\n \n )\n}\n\nexport {\n Card,\n CardHeader,\n CardFooter,\n CardTitle,\n CardAction,\n CardDescription,\n CardContent,\n}\n", + "content": "import * as React from \"react\"\n\nimport { cn } from \"@/registry/base-lyra/lib/utils\"\n\nfunction Card({\n className,\n size = \"default\",\n ...props\n}: React.ComponentProps<\"div\"> & { size?: \"default\" | \"sm\" }) {\n return (\n img:first-child]:pt-0 data-[size=sm]:gap-2 data-[size=sm]:py-3 data-[size=sm]:has-data-[slot=card-footer]:pb-0 *:[img:first-child]:rounded-none *:[img:last-child]:rounded-none\",\n className\n )}\n {...props}\n />\n )\n}\n\nfunction CardHeader({ className, ...props }: React.ComponentProps<\"div\">) {\n return (\n \n )\n}\n\nfunction CardTitle({ className, ...props }: React.ComponentProps<\"div\">) {\n return (\n \n )\n}\n\nfunction CardDescription({ className, ...props }: React.ComponentProps<\"div\">) {\n return (\n \n )\n}\n\nfunction CardAction({ className, ...props }: React.ComponentProps<\"div\">) {\n return (\n \n )\n}\n\nfunction CardContent({ className, ...props }: React.ComponentProps<\"div\">) {\n return (\n \n )\n}\n\nfunction CardFooter({ className, ...props }: React.ComponentProps<\"div\">) {\n return (\n \n )\n}\n\nexport {\n Card,\n CardHeader,\n CardFooter,\n CardTitle,\n CardAction,\n CardDescription,\n CardContent,\n}\n", "type": "registry:ui" } ], diff --git a/apps/v4/public/r/styles/base-lyra/chart.json b/apps/v4/public/r/styles/base-lyra/chart.json index 6286d728c2..d963cc7265 100644 --- a/apps/v4/public/r/styles/base-lyra/chart.json +++ b/apps/v4/public/r/styles/base-lyra/chart.json @@ -10,7 +10,7 @@ "files": [ { "path": "registry/base-lyra/ui/chart.tsx", - "content": "\"use client\"\n\nimport * as React from \"react\"\nimport * as RechartsPrimitive from \"recharts\"\n\nimport { cn } from \"@/registry/base-lyra/lib/utils\"\n\n// Format: { THEME_NAME: CSS_SELECTOR }\nconst THEMES = { light: \"\", dark: \".dark\" } as const\n\nexport type ChartConfig = {\n [k in string]: {\n label?: React.ReactNode\n icon?: React.ComponentType\n } & (\n | { color?: string; theme?: never }\n | { color?: never; theme: Record }\n )\n}\n\ntype ChartContextProps = {\n config: ChartConfig\n}\n\nconst ChartContext = React.createContext(null)\n\nfunction useChart() {\n const context = React.useContext(ChartContext)\n\n if (!context) {\n throw new Error(\"useChart must be used within a \")\n }\n\n return context\n}\n\nfunction ChartContainer({\n id,\n className,\n children,\n config,\n ...props\n}: React.ComponentProps<\"div\"> & {\n config: ChartConfig\n children: React.ComponentProps<\n typeof RechartsPrimitive.ResponsiveContainer\n >[\"children\"]\n}) {\n const uniqueId = React.useId()\n const chartId = `chart-${id || uniqueId.replace(/:/g, \"\")}`\n\n return (\n \n \n \n \n {children}\n \n \n \n )\n}\n\nconst ChartStyle = ({ id, config }: { id: string; config: ChartConfig }) => {\n const colorConfig = Object.entries(config).filter(\n ([, config]) => config.theme || config.color\n )\n\n if (!colorConfig.length) {\n return null\n }\n\n return (\n `\n${prefix} [data-chart=${id}] {\n${colorConfig\n .map(([key, itemConfig]) => {\n const color =\n itemConfig.theme?.[theme as keyof typeof itemConfig.theme] ||\n itemConfig.color\n return color ? ` --color-${key}: ${color};` : null\n })\n .join(\"\\n\")}\n}\n`\n )\n .join(\"\\n\"),\n }}\n />\n )\n}\n\nconst ChartTooltip = RechartsPrimitive.Tooltip\n\nfunction ChartTooltipContent({\n active,\n payload,\n className,\n indicator = \"dot\",\n hideLabel = false,\n hideIndicator = false,\n label,\n labelFormatter,\n labelClassName,\n formatter,\n color,\n nameKey,\n labelKey,\n}: React.ComponentProps &\n React.ComponentProps<\"div\"> & {\n hideLabel?: boolean\n hideIndicator?: boolean\n indicator?: \"line\" | \"dot\" | \"dashed\"\n nameKey?: string\n labelKey?: string\n }) {\n const { config } = useChart()\n\n const tooltipLabel = React.useMemo(() => {\n if (hideLabel || !payload?.length) {\n return null\n }\n\n const [item] = payload\n const key = `${labelKey || item?.dataKey || item?.name || \"value\"}`\n const itemConfig = getPayloadConfigFromPayload(config, item, key)\n const value =\n !labelKey && typeof label === \"string\"\n ? config[label as keyof typeof config]?.label || label\n : itemConfig?.label\n\n if (labelFormatter) {\n return (\n
\n {labelFormatter(value, payload)}\n
\n )\n }\n\n if (!value) {\n return null\n }\n\n return
{value}
\n }, [\n label,\n labelFormatter,\n payload,\n hideLabel,\n labelClassName,\n config,\n labelKey,\n ])\n\n if (!active || !payload?.length) {\n return null\n }\n\n const nestLabel = payload.length === 1 && indicator !== \"dot\"\n\n return (\n \n {!nestLabel ? tooltipLabel : null}\n
\n {payload\n .filter((item) => item.type !== \"none\")\n .map((item, index) => {\n const key = `${nameKey || item.name || item.dataKey || \"value\"}`\n const itemConfig = getPayloadConfigFromPayload(config, item, key)\n const indicatorColor = color || item.payload.fill || item.color\n\n return (\n svg]:text-muted-foreground flex w-full flex-wrap items-stretch gap-2 [&>svg]:h-2.5 [&>svg]:w-2.5\",\n indicator === \"dot\" && \"items-center\"\n )}\n >\n {formatter && item?.value !== undefined && item.name ? (\n formatter(item.value, item.name, item, index, item.payload)\n ) : (\n <>\n {itemConfig?.icon ? (\n \n ) : (\n !hideIndicator && (\n \n )\n )}\n \n
\n {nestLabel ? tooltipLabel : null}\n \n {itemConfig?.label || item.name}\n \n
\n {item.value && (\n \n {item.value.toLocaleString()}\n \n )}\n
\n \n )}\n \n )\n })}\n \n \n )\n}\n\nconst ChartLegend = RechartsPrimitive.Legend\n\nfunction ChartLegendContent({\n className,\n hideIcon = false,\n payload,\n verticalAlign = \"bottom\",\n nameKey,\n}: React.ComponentProps<\"div\"> &\n Pick & {\n hideIcon?: boolean\n nameKey?: string\n }) {\n const { config } = useChart()\n\n if (!payload?.length) {\n return null\n }\n\n return (\n \n {payload\n .filter((item) => item.type !== \"none\")\n .map((item) => {\n const key = `${nameKey || item.dataKey || \"value\"}`\n const itemConfig = getPayloadConfigFromPayload(config, item, key)\n\n return (\n svg]:text-muted-foreground flex items-center gap-1.5 [&>svg]:h-3 [&>svg]:w-3\"\n )}\n >\n {itemConfig?.icon && !hideIcon ? (\n \n ) : (\n \n )}\n {itemConfig?.label}\n \n )\n })}\n \n )\n}\n\nfunction getPayloadConfigFromPayload(\n config: ChartConfig,\n payload: unknown,\n key: string\n) {\n if (typeof payload !== \"object\" || payload === null) {\n return undefined\n }\n\n const payloadPayload =\n \"payload\" in payload &&\n typeof payload.payload === \"object\" &&\n payload.payload !== null\n ? payload.payload\n : undefined\n\n let configLabelKey: string = key\n\n if (\n key in payload &&\n typeof payload[key as keyof typeof payload] === \"string\"\n ) {\n configLabelKey = payload[key as keyof typeof payload] as string\n } else if (\n payloadPayload &&\n key in payloadPayload &&\n typeof payloadPayload[key as keyof typeof payloadPayload] === \"string\"\n ) {\n configLabelKey = payloadPayload[\n key as keyof typeof payloadPayload\n ] as string\n }\n\n return configLabelKey in config\n ? config[configLabelKey]\n : config[key as keyof typeof config]\n}\n\nexport {\n ChartContainer,\n ChartTooltip,\n ChartTooltipContent,\n ChartLegend,\n ChartLegendContent,\n ChartStyle,\n}\n", + "content": "\"use client\"\n\nimport * as React from \"react\"\nimport * as RechartsPrimitive from \"recharts\"\n\nimport { cn } from \"@/registry/base-lyra/lib/utils\"\n\n// Format: { THEME_NAME: CSS_SELECTOR }\nconst THEMES = { light: \"\", dark: \".dark\" } as const\n\nexport type ChartConfig = {\n [k in string]: {\n label?: React.ReactNode\n icon?: React.ComponentType\n } & (\n | { color?: string; theme?: never }\n | { color?: never; theme: Record }\n )\n}\n\ntype ChartContextProps = {\n config: ChartConfig\n}\n\nconst ChartContext = React.createContext(null)\n\nfunction useChart() {\n const context = React.useContext(ChartContext)\n\n if (!context) {\n throw new Error(\"useChart must be used within a \")\n }\n\n return context\n}\n\nfunction ChartContainer({\n id,\n className,\n children,\n config,\n ...props\n}: React.ComponentProps<\"div\"> & {\n config: ChartConfig\n children: React.ComponentProps<\n typeof RechartsPrimitive.ResponsiveContainer\n >[\"children\"]\n}) {\n const uniqueId = React.useId()\n const chartId = `chart-${id || uniqueId.replace(/:/g, \"\")}`\n\n return (\n \n \n \n \n {children}\n \n \n \n )\n}\n\nconst ChartStyle = ({ id, config }: { id: string; config: ChartConfig }) => {\n const colorConfig = Object.entries(config).filter(\n ([, config]) => config.theme || config.color\n )\n\n if (!colorConfig.length) {\n return null\n }\n\n return (\n `\n${prefix} [data-chart=${id}] {\n${colorConfig\n .map(([key, itemConfig]) => {\n const color =\n itemConfig.theme?.[theme as keyof typeof itemConfig.theme] ||\n itemConfig.color\n return color ? ` --color-${key}: ${color};` : null\n })\n .join(\"\\n\")}\n}\n`\n )\n .join(\"\\n\"),\n }}\n />\n )\n}\n\nconst ChartTooltip = RechartsPrimitive.Tooltip\n\nfunction ChartTooltipContent({\n active,\n payload,\n className,\n indicator = \"dot\",\n hideLabel = false,\n hideIndicator = false,\n label,\n labelFormatter,\n labelClassName,\n formatter,\n color,\n nameKey,\n labelKey,\n}: React.ComponentProps &\n React.ComponentProps<\"div\"> & {\n hideLabel?: boolean\n hideIndicator?: boolean\n indicator?: \"line\" | \"dot\" | \"dashed\"\n nameKey?: string\n labelKey?: string\n }) {\n const { config } = useChart()\n\n const tooltipLabel = React.useMemo(() => {\n if (hideLabel || !payload?.length) {\n return null\n }\n\n const [item] = payload\n const key = `${labelKey || item?.dataKey || item?.name || \"value\"}`\n const itemConfig = getPayloadConfigFromPayload(config, item, key)\n const value =\n !labelKey && typeof label === \"string\"\n ? config[label as keyof typeof config]?.label || label\n : itemConfig?.label\n\n if (labelFormatter) {\n return (\n
\n {labelFormatter(value, payload)}\n
\n )\n }\n\n if (!value) {\n return null\n }\n\n return
{value}
\n }, [\n label,\n labelFormatter,\n payload,\n hideLabel,\n labelClassName,\n config,\n labelKey,\n ])\n\n if (!active || !payload?.length) {\n return null\n }\n\n const nestLabel = payload.length === 1 && indicator !== \"dot\"\n\n return (\n \n {!nestLabel ? tooltipLabel : null}\n
\n {payload\n .filter((item) => item.type !== \"none\")\n .map((item, index) => {\n const key = `${nameKey || item.name || item.dataKey || \"value\"}`\n const itemConfig = getPayloadConfigFromPayload(config, item, key)\n const indicatorColor = color || item.payload.fill || item.color\n\n return (\n svg]:text-muted-foreground flex w-full flex-wrap items-stretch gap-2 [&>svg]:h-2.5 [&>svg]:w-2.5\",\n indicator === \"dot\" && \"items-center\"\n )}\n >\n {formatter && item?.value !== undefined && item.name ? (\n formatter(item.value, item.name, item, index, item.payload)\n ) : (\n <>\n {itemConfig?.icon ? (\n \n ) : (\n !hideIndicator && (\n \n )\n )}\n \n
\n {nestLabel ? tooltipLabel : null}\n \n {itemConfig?.label || item.name}\n \n
\n {item.value && (\n \n {item.value.toLocaleString()}\n \n )}\n
\n \n )}\n \n )\n })}\n \n \n )\n}\n\nconst ChartLegend = RechartsPrimitive.Legend\n\nfunction ChartLegendContent({\n className,\n hideIcon = false,\n payload,\n verticalAlign = \"bottom\",\n nameKey,\n}: React.ComponentProps<\"div\"> &\n Pick & {\n hideIcon?: boolean\n nameKey?: string\n }) {\n const { config } = useChart()\n\n if (!payload?.length) {\n return null\n }\n\n return (\n \n {payload\n .filter((item) => item.type !== \"none\")\n .map((item) => {\n const key = `${nameKey || item.dataKey || \"value\"}`\n const itemConfig = getPayloadConfigFromPayload(config, item, key)\n\n return (\n svg]:text-muted-foreground flex items-center gap-1.5 [&>svg]:h-3 [&>svg]:w-3\"\n )}\n >\n {itemConfig?.icon && !hideIcon ? (\n \n ) : (\n \n )}\n {itemConfig?.label}\n \n )\n })}\n \n )\n}\n\nfunction getPayloadConfigFromPayload(\n config: ChartConfig,\n payload: unknown,\n key: string\n) {\n if (typeof payload !== \"object\" || payload === null) {\n return undefined\n }\n\n const payloadPayload =\n \"payload\" in payload &&\n typeof payload.payload === \"object\" &&\n payload.payload !== null\n ? payload.payload\n : undefined\n\n let configLabelKey: string = key\n\n if (\n key in payload &&\n typeof payload[key as keyof typeof payload] === \"string\"\n ) {\n configLabelKey = payload[key as keyof typeof payload] as string\n } else if (\n payloadPayload &&\n key in payloadPayload &&\n typeof payloadPayload[key as keyof typeof payloadPayload] === \"string\"\n ) {\n configLabelKey = payloadPayload[\n key as keyof typeof payloadPayload\n ] as string\n }\n\n return configLabelKey in config\n ? config[configLabelKey]\n : config[key as keyof typeof config]\n}\n\nexport {\n ChartContainer,\n ChartTooltip,\n ChartTooltipContent,\n ChartLegend,\n ChartLegendContent,\n ChartStyle,\n}\n", "type": "registry:ui" } ], diff --git a/apps/v4/public/r/styles/base-lyra/checkbox.json b/apps/v4/public/r/styles/base-lyra/checkbox.json index 4a5aa222c0..e23830869d 100644 --- a/apps/v4/public/r/styles/base-lyra/checkbox.json +++ b/apps/v4/public/r/styles/base-lyra/checkbox.json @@ -4,7 +4,7 @@ "files": [ { "path": "registry/base-lyra/ui/checkbox.tsx", - "content": "\"use client\"\n\nimport { Checkbox as CheckboxPrimitive } from \"@base-ui/react/checkbox\"\n\nimport { cn } from \"@/registry/base-lyra/lib/utils\"\nimport { IconPlaceholder } from \"@/app/(create)/components/icon-placeholder\"\n\nfunction Checkbox({ className, ...props }: CheckboxPrimitive.Root.Props) {\n return (\n \n svg]:size-3.5 grid place-content-center text-current transition-none\"\n >\n \n \n \n )\n}\n\nexport { Checkbox }\n", + "content": "\"use client\"\n\nimport { Checkbox as CheckboxPrimitive } from \"@base-ui/react/checkbox\"\n\nimport { cn } from \"@/registry/base-lyra/lib/utils\"\nimport { IconPlaceholder } from \"@/app/(create)/components/icon-placeholder\"\n\nfunction Checkbox({ className, ...props }: CheckboxPrimitive.Root.Props) {\n return (\n \n svg]:size-3.5\"\n >\n \n \n \n )\n}\n\nexport { Checkbox }\n", "type": "registry:ui" } ], diff --git a/apps/v4/public/r/styles/base-lyra/combobox.json b/apps/v4/public/r/styles/base-lyra/combobox.json index be99a45c6d..511cb6c3d0 100644 --- a/apps/v4/public/r/styles/base-lyra/combobox.json +++ b/apps/v4/public/r/styles/base-lyra/combobox.json @@ -11,7 +11,7 @@ "files": [ { "path": "registry/base-lyra/ui/combobox.tsx", - "content": "\"use client\"\n\nimport * as React from \"react\"\nimport { Combobox as ComboboxPrimitive } from \"@base-ui/react\"\n\nimport { cn } from \"@/registry/base-lyra/lib/utils\"\nimport { Button } from \"@/registry/base-lyra/ui/button\"\nimport {\n InputGroup,\n InputGroupAddon,\n InputGroupButton,\n InputGroupInput,\n} from \"@/registry/base-lyra/ui/input-group\"\nimport { IconPlaceholder } from \"@/app/(create)/components/icon-placeholder\"\n\nconst Combobox = ComboboxPrimitive.Root\n\nfunction ComboboxValue({ ...props }: ComboboxPrimitive.Value.Props) {\n return \n}\n\nfunction ComboboxTrigger({\n className,\n children,\n ...props\n}: ComboboxPrimitive.Trigger.Props) {\n return (\n \n {children}\n \n \n )\n}\n\nfunction ComboboxClear({ className, ...props }: ComboboxPrimitive.Clear.Props) {\n return (\n }\n className={cn(className)}\n {...props}\n >\n \n \n )\n}\n\nfunction ComboboxInput({\n className,\n children,\n disabled = false,\n showTrigger = true,\n showClear = false,\n ...props\n}: ComboboxPrimitive.Input.Props & {\n showTrigger?: boolean\n showClear?: boolean\n}) {\n return (\n \n }\n {...props}\n />\n \n {showTrigger && (\n }\n data-slot=\"input-group-button\"\n className=\"group-has-data-[slot=combobox-clear]/input-group:hidden data-pressed:bg-transparent\"\n disabled={disabled}\n />\n )}\n {showClear && }\n \n {children}\n \n )\n}\n\nfunction ComboboxContent({\n className,\n side = \"bottom\",\n sideOffset = 6,\n align = \"start\",\n alignOffset = 0,\n anchor,\n ...props\n}: ComboboxPrimitive.Popup.Props &\n Pick<\n ComboboxPrimitive.Positioner.Props,\n \"side\" | \"align\" | \"sideOffset\" | \"alignOffset\" | \"anchor\"\n >) {\n return (\n \n \n \n \n \n )\n}\n\nfunction ComboboxList({ className, ...props }: ComboboxPrimitive.List.Props) {\n return (\n \n )\n}\n\nfunction ComboboxItem({\n className,\n children,\n ...props\n}: ComboboxPrimitive.Item.Props) {\n return (\n \n {children}\n }\n >\n \n \n \n )\n}\n\nfunction ComboboxGroup({ className, ...props }: ComboboxPrimitive.Group.Props) {\n return (\n \n )\n}\n\nfunction ComboboxLabel({\n className,\n ...props\n}: ComboboxPrimitive.GroupLabel.Props) {\n return (\n \n )\n}\n\nfunction ComboboxCollection({ ...props }: ComboboxPrimitive.Collection.Props) {\n return (\n \n )\n}\n\nfunction ComboboxEmpty({ className, ...props }: ComboboxPrimitive.Empty.Props) {\n return (\n